Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Expand
titleSQL statement
Code Block
languagesql
CREATE VIEW [dbo].[PW001SRV202]
AS

SELECT  main.PIN,
       main.EMPLOYMENTSTARTDATE,
       main.EMPLOYMENTENDDATE,
       main.NUMORGID,
       main.[PAYSLIP STATUS],
       main.[PAYMENT PERIOD],
       main.[PERIOD START],
       main.[PERIOD END],
       main.NAME,
       main.ORGANIZATION,
       main.[RANK],
       main.[RANK CODE],
       main.[NATIONALITY CODE],
       main.ACTIVITY,
       main.[ACTIVITY START],
       main.[ACTIVITY END],
       main.[ACTIVITY ESTIMATED END],
       main.[ACTIVITY DAYS],
       main.[ACTIVITY VESSEL],
       main.[ACTIVITY DEPARTMENT],
       main.[ACTIVITY POSITION],
       main.[ACTIVITY PAYSCALE TABLE],
       main.[ACTIVITY PAYSCALE CODE],
       --main.[Row#],
       main.[Contract Type],
       main.[Contract Name],
       main.[Contract Rank],
       main.[Contract Start],
       main.[Contract End],
       main.[CONTRACT PAYSCALE TABLE],
       main.[CONTRACT PAYSCALE],
       main.[CONTRACT PAYSCALE TABLE NAME],
       main.[CONTRACT PAYSCALE NAME],
       main.[CALCULATED BY],
       main.[CALCULATE TIME],
       main.[PAYMENT METHOD],
       main.[PAYMENT CURRENCY],
       --main.[DISTRIBURE PAYSLIP OPTION] as [DISTRIBUTE PAYSLIP OPTION],
       main.EMAIL,
       ISNULL(
           STUFF(
               ISNULL(NULLIF(', ' + main.issue1, ', '), '') +
               ISNULL(NULLIF(', ' + main.issue2, ', '), '') +
               ISNULL(NULLIF(', ' + main.issue3, ', '), '') +
               ISNULL(NULLIF(', ' + main.issue4, ', '), '') +
               ISNULL(NULLIF(', ' + main.issue5, ', '), '') +
               ISNULL(NULLIF(', ' + main.issue6, ', '), '') +
               ISNULL(NULLIF(', ' + main.issue7, ', '), '') +
               ISNULL(NULLIF(', ' + main.issue8, ', '), '') +
               ISNULL(NULLIF(', ' + main.issue9, ', '), ''),
               1,
               1,
               ''
           ),
           ''
       )  AS [ISSUES],
       main.[Department/Cost Place Code],
       main.[Department/Cost Place]
FROM   (
           SELECT p.PIN,
                  p.EMPLOYMENTSTARTDATE,
                  p.EMPLOYMENTENDDATE,
                  p.CLIENT        NUMORGID,
                  CASE 
                       WHEN PayslipStatus.PAYSLIPSTATUS = 'Y' THEN 'Distributed'
                       ELSE       'Not Distributed'
                  END 'PAYSLIP STATUS',
                  company.PERIODE 'PAYMENT PERIOD',
                  periode.PStart 'PERIOD START',
                  periode.PEnd 'PERIOD END',
                  p.NAME,
                  p.COSTPLACE  AS 'Department/Cost Place Code',
                  c43.NAME     AS 'Department/Cost Place',
                  ORGAN.NAME 'ORGANIZATION',
                  c02.NAME 'RANK',
                  dbo.ad_orgPosC02Code(
                      (
                          SELECT ORGCODE
                          FROM   pworg
                          WHERE  orgtype = 5
                                 AND numorgid = a.NUMORGID
                      )
                  )'RANK CODE',
                  p.NATIONALITY 'NATIONALITY CODE',
                  (
                      SELECT TEXT
                      FROM   pw001c12
                      WHERE  code = a.code
                  ) 'ACTIVITY',
                  a.DATEFROM 'ACTIVITY START',
                  a.DATETO 'ACTIVITY END',
                  a.TODATEESTIMATED 'ACTIVITY ESTIMATED END',
                  DATEDIFF(
                      DAY,
                      CASE 
                           WHEN a.DATEFROM > periode.PStart THEN a.DATEFROM
                           ELSE periode.PStart
                      END,
                      CASE 
                           WHEN ISNULL(a.DATETO, a.TODATEESTIMATED) < periode.PEnd THEN ISNULL(a.DATETO, a.TODATEESTIMATED)
                           ELSE periode.PEnd
                      END
                  ) + 1        AS 'ACTIVITY DAYS',
                  (
                      SELECT NAME
                      FROM   pworg
                      WHERE  NUMORGID = a.VESSEL
                  ) 'ACTIVITY VESSEL',
                  (
                      SELECT NAME
                      FROM   pworg
                      WHERE  orgtype = 4
                             AND numorgid = (
                                     SELECT NUMORGIDABOVE
                                     FROM   pworg
                                     WHERE  orgtype = 5
                                            AND numorgid = a.NUMORGID
                                 )
                  ) 'ACTIVITY DEPARTMENT',
                  (
                      SELECT NAME
                      FROM   pworg
                      WHERE  orgtype = 5
                             AND numorgid = a.NUMORGID
                  ) 'ACTIVITY POSITION',
                  a.PAYSCALETABLE 'ACTIVITY PAYSCALE TABLE',
                  a.PAYSCALE 'ACTIVITY PAYSCALE CODE',
                  --       p0p.PAYSCALETABLE 'PD PAYSCALE TABLE',
                  --       p0p.PAYSCALECODE 'PD PAYSCALE',
                  ROW_NUMBER() OVER(
                      PARTITION BY p20.PIN ORDER BY p20.PIN,
                      p20.CONTRACTKIND DESC
                  )            AS ROW#,
                  CASE 
                       WHEN p20.CONTRACTKIND = 0 THEN 'Main Contract'
                       WHEN p20.CONTRACTKIND = 1 THEN 'Sub Contract'
                       WHEN p20.CONTRACTKIND = 2 THEN 'Ammendment'
                       ELSE ''
                  END          AS 'Contract Type',
                  C32CONT.Text 'Contract Name',
                  C02CONT.NAME 'Contract Rank',
                  p20.DATESTART 'Contract Start',
                  p20.DATEEND 'Contract End',
                  p20.PAYSCALETABLE 'CONTRACT PAYSCALE TABLE',
                  p20.PAYSCALECODE 'CONTRACT PAYSCALE',
                  payscale.Table_Name 'CONTRACT PAYSCALE TABLE NAME',
                  payscale.Payscale_Name 'CONTRACT PAYSCALE NAME',
                  pay.CALCULATEDBY 'CALCULATED BY',
                  pay.CalculateTime 'CALCULATE TIME',
                  CASE 
                       WHEN P.Transferbalance = '0' THEN 'Carry Forward To Next Month'
                       WHEN P.Transferbalance = '1' THEN 'Transfer To Bank Account'
                       WHEN P.Transferbalance = '2' THEN 'Interpay'
                       WHEN P.Transferbalance = '3' THEN 'Alpha Credit Bank'
                       WHEN P.Transferbalance = '4' THEN 'Cash'
                       WHEN P.Transferbalance = '5' THEN 'Citibank Direct Deposit'
                       WHEN P.Transferbalance = '6' THEN 'Citibank'
                       WHEN P.Transferbalance = '7' THEN 'Chase Manhattan'
                       WHEN P.Transferbalance = '8' THEN 'Hellenic Bank'
                       WHEN P.Transferbalance = '9' THEN 'Isabel Domestic'
                       WHEN P.Transferbalance = 'A' THEN 'Isabel International'
                       WHEN P.Transferbalance = 'B' THEN 'Bank Transfer'
                       WHEN P.Transferbalance = 'C' THEN 'Swedish Domestic'
                       WHEN P.Transferbalance = 'D' THEN 'Swedish International'
                       WHEN P.Transferbalance = 'E' THEN 'Philippine Banking'
                       WHEN P.Transferbalance = 'F' THEN 'Manual Bank'
                       WHEN P.Transferbalance = 'G' THEN 'Zagrebancka'
                       WHEN P.Transferbalance = 'H' THEN 'ING Bank'
                       WHEN P.Transferbalance = 'I' THEN 'Direct Deposit E-Monee'
                       WHEN P.Transferbalance = 'J' THEN 'Deutsche Bank'
                       WHEN P.Transferbalance = 'K' THEN 'SACS'
                       WHEN P.Transferbalance = 'L' THEN 'Hellenic Cyprus'
                       WHEN P.Transferbalance = 'M' THEN 'MT 100'
                       WHEN P.Transferbalance = 'N' THEN 'Citibank (PL)'
                       WHEN P.Transferbalance = '0' THEN 'Agent .R'
                       WHEN P.Transferbalance = 'P' THEN 'German Bank'
                       WHEN P.Transferbalance = 'Q' THEN 'Trident Trust'
                       WHEN P.Transferbalance = 'R' THEN 'Citibank (Asia)'
                       WHEN P.Transferbalance = 'S' THEN 'PNC Bank'
                       WHEN P.Transferbalance = 'T' THEN 'Chase Insight'
                       WHEN P.Transferbalance = 'U' THEN 'Ocean Pay'
                       WHEN P.Transferbalance = 'V' THEN 'Banco de Oro'
                       WHEN P.Transferbalance = 'W' THEN 'Bank of Philippine Island'
                       WHEN P.Transferbalance = 'X' THEN 'CitiDirect (Onboard)'
                       WHEN P.Transferbalance = 'Y' THEN 'Metrobank Direct (PH)'
                       WHEN P.Transferbalance = 'Z' THEN 'Elektron'
                       WHEN P.Transferbalance = 'A1' THEN 'E-Banking (Maramut)'
                       WHEN P.Transferbalance = 'A2' THEN 'RBS Direct Access'
                       WHEN P.Transferbalance = 'A3' THEN 'Brazilian Banks'
                       WHEN P.Transferbalance = 'A4' THEN 'NETS'
                       WHEN P.Transferbalance = 'A5' THEN 'NONE'
                       WHEN P.Transferbalance = 'A6' THEN 'JDP Morgan'
                       WHEN P.Transferbalance = 'A7' THEN 'J. P. Morgan Access'
                       WHEN P.Transferbalance = 'A8' THEN 'Spar Nord Domestic'
                       WHEN P.Transferbalance = 'A9' THEN 'Spar Nord International'
                       WHEN P.Transferbalance = 'B1' THEN 'Rabobank'
                       WHEN P.Transferbalance = 'B2' THEN 'Deutsche Bank'
                       WHEN P.Transferbalance = 'B4' THEN 'ISO20022'
                       WHEN P.Transferbalance = 'B5' THEN 'Brightwell'
                  END          AS 'PAYMENT METHOD',
                  CASE 
                       WHEN ISNULL(
                                ISNULL(pay.CURRENCYFORPAYMENT, p.CURRENCYFORPAYMENT),
                                p.CURRENCY
                            ) = '' THEN company.CURRENCYCODE
                       ELSE ISNULL(
                                ISNULL(pay.CURRENCYFORPAYMENT, p.CURRENCYFORPAYMENT),
                                p.CURRENCY
                            )
                  END          AS 'PAYMENT CURRENCY',
                  CASE 
                       WHEN p.EMAILPAYSLIP = 'F' THEN 'Off'
                       WHEN p.EMAILPAYSLIP = 'T' THEN 'On'
                  END 'DISTRIBURE PAYSLIP OPTION',
                  email.TELENO 'EMAIL',
                  CASE 
                       WHEN P.EMPLOYMENTSTARTDATE IS NULL THEN 'Employment Start Date missing'
                       ELSE ''
                  END             Issue1,
                  CASE 
                       WHEN P.EMPLOYMENTSTARTDATE > a.DATEFROM THEN 
                            'Employment Start Date greater than Activity Start Date'
                       ELSE ''
                  END             Issue2,
                  CASE 
                       WHEN A.DATEFROM < CAST(GETDATE() AS DATE)
                            AND ISNULL(A.PLANNED, 'N') = 'Y'
                            OR A.TODATEESTIMATED < CAST(GETDATE() AS DATE)
                            AND A.DATETO IS NULL THEN 'Activity not confirmed'
                           ELSE ''
                      END         Issue3,
                      CASE 
                           WHEN NULLIF(A.PAYSCALETABLE, '') IS NOT NULL
                            AND NULLIF(A.PAYSCALE, '') IS NULL THEN 'Activity Payscale Code missing'
               ELSE  ''          ELSE ''
    END Issue4,            CASE     END         Issue4,
   WHEN (                  CASE 
      NULLIF(a.PAYSCALETABLE, '') IS NOT NULL                     WHEN (
        AND NULLIF(a.PAYSCALE, '') IS NOT NULL                      ) NULLIF(a.PAYSCALETABLE, '') IS NOT NULL
      AND (                    (p20.PAYSCALECODE <> a.PAYSCALE)       AND NULLIF(a.PAYSCALE, '') IS NOT NULL
       OR (p20.PAYSCALETABLE <> a.PAYSCALETABLE)                ) THEN 'Payscale mismatch between Contract and)
Activity'                ELSE ''           AND (
   END AS Issue5,            CASE                  WHEN (p20.DATESTARTPAYSCALECODE ><> periodea.PEndPAYSCALE)
 THEN 'Invalid Contract Start Date'                 ELSE ''            END AS Issue6,
 OR (p20.PAYSCALETABLE <> a.PAYSCALETABLE)
         CASE                  WHEN p20.CONTRACTKIND   IS NULL) THEN 'NoPayscale validmismatch contractbetween forContract thisand periodActivity'
                ELSE ''          ELSE ''
END Issue7,            CASE         END      AS Issue5,
 WHEN (                    CASE 
    a.CODE IN (SELECT CODE                    WHEN p20.DATESTART > periode.PEnd THEN 'Invalid Contract Start Date'
        FROM   PW001C12                ELSE ''
                   WHERE  OPTIONS LIKEEND '%S%')     AS Issue6,
               )       CASE 
   AND (                    a.DATEFROM < ( WHEN p20.CONTRACTKIND IS NULL THEN 'No valid contract for this period'
            CASE               ELSE ''
             WHEN p20.DATESTART > prevcon.DATESTART THEN prevcon.DATESTART    END         Issue7,
               ELSE p20.DATESTART      CASE 
                END           WHEN (
       )                ) THEN 'No contract starting from ' + CONVERT(VARCHAR, a.DATEFROM, 1) + ' toa.CODE 'IN + CONVERT(VARCHAR, p20.DATESTART, 1)SELECT CODE
                 ELSE ''                END Issue8,            CASEFROM   PW001C12
              WHEN (a.PAYSCALETABLE IS NULL OR a.PAYSCALETABLE = '')            AND (a.PAYSCALE IS NULL OR a.PAYSCALE = '') THEN      WHERE  OPTIONS LIKE '%S%')
      'Activity Payscale Code and Activity Payscale Table are missing.'                WHEN a.PAYSCALETABLE IS)
NULL            OR a.PAYSCALETABLE = '' THEN 'Activity Payscale Table is missing'       AND (
      WHEN a.PAYSCALE IS NULL            OR a.PAYSCALE = '' THEN 'Activity Payscale Code is missing'      a.DATEFROM < (
       ELSE    ''               END Issue9             CASE 
FROM pw001p01 p               JOIN (                   SELECT NUMORGID,       WHEN p20.DATESTART > maincon.DATESTART THEN maincon.DATESTART
             PERIODE,                          CAST(      ELSE p20.DATESTART
                      CASE                  END
                 WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)        )
                                +) THEN 'No contract starting from ' + CONVERT(VARCHAR, a.DATEFROM, 1) + ' to ' + CONVERT(VARCHAR, p20.DATESTART, 1)
                     '01'      ELSE ''
                      END     WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR)Issue8,
2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)                   CASE 
                         + '12' WHEN (a.PAYSCALETABLE IS NULL OR a.PAYSCALETABLE = '')
                          ELSE CAST(PERIODE ASAND VARCHAR(6))
      (a.PAYSCALE IS NULL OR a.PAYSCALE = '') THEN 
                     END + '01' AS DATETIME       'Activity Payscale Code and Activity Payscale Table are missing.'
          )     AS 'PStart',           WHEN a.PAYSCALETABLE IS NULL
           DATEADD(                 OR a.PAYSCALETABLE = '' THEN 'Activity Payscale Table is missing'
   MM,                       WHEN a.PAYSCALE IS NULL
   1,                         OR a.PAYSCALE = '' THEN CAST('Activity Payscale Code is missing'
                          ELSE ''
 CASE                    END          Issue9
              WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)FROM   pw001p01 p
                     JOIN (
                            + '01' SELECT NUMORGID,
                                    WHEN CONVERT(INTPERIODE,
RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)                           CAST(
                + '12'                        CASE 
             ELSE CAST(PERIODE AS VARCHAR(6))                              WHEN RIGHT(CAST(PERIODE AS VARCHAR), END2) += '0100' THEN LEFT(CAST(PERIODE AS DATETIME VARCHAR), 4) 
                            )                       +
  ) -1  AS 'PEnd'                   FROM   PWORGCMP                   WHERE  PAYROLLENABLED = 'Y01'
                   UNION ALL                   SELECT NUMORGID,      WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
       PERIODE,                          CAST(                  + '12'
          CASE                                    WHENELSE RIGHT(CAST(PERIODE AS VARCHAR(6), 2)
= '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)                                   END + '01' AS DATETIME
 +                                    )   AS '01PStart',
                                   WHEN CONVERT(INT, RIGHTDATEADD(CAST(PERIODE
AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)                                MM,
       + '12'                                 1,
 ELSE CAST(PERIODE AS VARCHAR(6))                              END + '01' AS DATETIME   CAST(
                      )     AS 'PStart',                 CASE 
       DATEADD(                              MM,             WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
     1,                              CAST(                    + '01'
            CASE                                      WHEN CONVERT(INT, WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2)) => '00'12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
                                           + '01'           + '12'
                          WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)            ELSE CAST(PERIODE AS VARCHAR(6))
                            + '12'                END + '01'            AS DATETIME
        ELSE CAST(PERIODE AS VARCHAR(6))                              )
   END + '01' AS DATETIME                              ) -1 AS 'PEnd'
                      ) -1  AS 'PEnd'     FROM   PWORGCMP
          FROM   PWORGVES                   WHERE  PAYROLLENABLED = 'Y'
              ) periode               ONUNION p.CLIENTALL
= periode.NUMORGID               JOIN PWORG ORGAN            SELECT NUMORGID,
 ON p.CLIENT = ORGAN.NUMORGID               JOIN PWORGCMP company               ON p.CLIENTPERIODE,
= company.NUMORGID               LEFT JOIN PW001P0P p0p               ON p0p.PIN = p.PINCAST(
           AND p0p.PNUMBER = 'A'            AND p0p.PAYSCALECODE IS NOT NULL           CASE AND
p0p.PAYSCALECODE <> ''                LEFT JOIN PW001PAY pay                ON pay.PIN = p.PIN      WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = AND pay.CalculateTime IS NOT NULL
'00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4) 
         AND pay.PERIODEUSED = company.PERIODE            AND NOT EXISTS(                    SELECT 1    +
               FROM   PW001PAY PAY2                    WHERE  PAY.PIN = PAY2.PIN        '01'
                  AND PAY2.PERIODEUSED = company.PERIODE                         WHEN  AND (
         CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
                        PAY2.CALCULATETIME > PAY.CALCULATETIME                         + '12'
        OR (                                     ELSE CAST(PERIODE AS VARCHAR(6))
 PAY2.CALCULATETIME = PAY.CALCULATETIME                                      END + '01' AS --AND PAY2.UUID > PAY.UUID
DATETIME
                                       ) AS 'PStart',
                            )         DATEADD(
      )                LEFT JOIN PW001P1R p1r5                ONMM,
p1r5.PIN = p.PIN            AND p1r5.RATENO = 5                LEFT JOIN pw001c02 c02     1,
          ON p.rank = c02.code                LEFT JOIN PW001P0Y P0Y         CAST(
      ON p.PIN = P0Y.PIN                LEFT JOIN PW001P0T email                ON email.PINCASE =
p.PIN            AND email.TELETYPE = 6            AND NOT EXISTS (                    SELECT 1
         WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
         FROM                pw001p0t t                    WHERE  t.PIN = email.PIN     + '01'
                    AND t.TELETYPE = email.TELETYPE                           ANDWHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
                                        t.TELEPRIORITY < email.TELEPRIORITY               + '12'
                                              OR (   ELSE CAST(PERIODE AS VARCHAR(6))
                                             END + '01' AS DATETIME
                                         )
                                     ) -1 AS 'PEnd'
                              FROM   PWORGVES
                              WHERE  PAYROLLENABLED = 'Y'
                          ) periode
                          ON  p.CLIENT = periode.NUMORGID
                     JOIN PWORG ORGAN
                          ON  p.CLIENT = ORGAN.NUMORGID
                     JOIN PWORGCMP company
                          ON  p.CLIENT = company.NUMORGID
                     LEFT JOIN PW001P0P p0p
                          ON  p0p.PIN = p.PIN
                          AND p0p.PNUMBER = 'A'
                          AND p0p.PAYSCALECODE IS NOT NULL
                          AND p0p.PAYSCALECODE <> ''
                     LEFT JOIN PW001PAY pay
                          ON  pay.PIN = p.PIN
                          AND pay.CalculateTime IS NOT NULL
                          AND pay.PERIODEUSED = company.PERIODE
                          AND NOT EXISTS(
                                  SELECT 1
                                  FROM   PW001PAY PAY2
                                  WHERE  PAY.PIN = PAY2.PIN
                                         AND PAY2.PERIODEUSED = company.PERIODE
                                         AND (
                                                 PAY2.CALCULATETIME > PAY.CALCULATETIME
                                                 OR (
                                                        PAY2.CALCULATETIME = PAY.CALCULATETIME
                                                        --AND PAY2.UUID > PAY.UUID
                                                    )
                                             )
                              )
                     LEFT JOIN PW001P1R p1r5
                          ON  p1r5.PIN = p.PIN
                          AND p1r5.RATENO = 5
                     LEFT JOIN pw001c02 c02
                          ON  p.rank = c02.code
                     LEFT JOIN PW001P0Y P0Y
                          ON  p.PIN = P0Y.PIN
                     LEFT JOIN PW001P0T email
                          ON  email.PIN = p.PIN
                          AND email.TELETYPE = 6
                          AND NOT EXISTS (
                                  SELECT 1
                                  FROM   pw001p0t t
                                  WHERE  t.PIN = email.PIN
                                         AND t.TELETYPE = email.TELETYPE
                                         AND (
                                                 t.TELEPRIORITY < email.TELEPRIORITY
                                                 OR (
                                                        t.TELEPRIORITY = email.TELEPRIORITY
                                                        AND t.SEQUENCENO > email.SEQUENCENO
                                                    )
                                             )
                              )
                              --Activity matching payroll period
                     JOIN PW001P03 a
                          ON  a.PIN = p.PIN
                          AND a.CODE IN (SELECT CODE
                                         FROM   PW001C12
                                         WHERE  TRANSACTIONCODE <> '')
                          AND a.datefrom <= periode.PEnd
                          AND ISNULL(a.dateto, a.TODATEESTIMATED) >= periode.PStart
                     LEFT JOIN PW001p20 p20sub
                          ON  p20sub.PIN = p.PIN
                              --AND p20.HISTORICAL = 'F'
                          AND p20sub.DATESTART <= ISNULL(A.DATETO, A.TODATEESTIMATED) 
                          AND p20sub.CONTRACTIDABOVE IS NOT NULL
                          AND p20sub.DATESTART = A.DATEFROM
                          AND COALESCE(
                                  p20sub.DATEEND,
                                  (
                                      SELECT MIN(t.DATESTART) -1
                                      FROM   PW001p20 t
                                      WHERE  t.pin = p20sub.pin
                                             AND t.DATESTART > p20sub.DATESTART
                                  ),
                                  a.datefrom
                              ) >= A.DATEFROM
                              --AND ISNULL(p20.DATEEND, ISNULL(A.DATETO, A.TODATEESTIMATED)) >= periode.PStart
                              --AND NOT EXISTS (
                              --	SELECT 1  FROM PW001p20. z
                              --	WHERE z.PIN = p20.PIN AND p20.DATESTART <= ISNULL(A.DATETO, A.TODATEESTIMATED)
                              --		AND COALESCE(p20.DATEEND,(SELECT MIN(t.DATESTART) -1 FROM PW001p20. t WHERE  t.pin = p20.pin AND t.DATESTART > p20.DATESTART), a.DATEFROM) >= A.DATEFROM
                              --		AND z.DATESTART > p20.DATESTART)
                              --AND (p20.dateend IS NULL OR ISNULL(p20.DATEEND,GETDATE()) >= periode.PStart)
                               t.TELEPRIORITY = email.TELEPRIORITY--AND ISNULL(p20.DATEEND,GETDATE()) >= periode.PStart
                              
          AND t.SEQUENCENO > email.SEQUENCENO        LEFT JOIN PW001p20 maincon
                          )ON  maincon.PIN = p.PIN
                          )AND maincon.CONTRACTKIND = 0
            )              AND  --Activity matching payroll periodmaincon.CONTRACTIDABOVE IS NULL
                 JOIN PW001P03 a       AND maincon.DATESTART <=       ON a.PIN = p.PINA.DATEFROM--ISNULL(a.DATETO, a.TODATEESTIMATED)
             AND a.CODE IN (SELECT CODE         AND (maincon.DATEEND IS NULL OR maincon.DATEEND >=    ISNULL(a.DATETO, a.TODATEESTIMATED))--IS NULL
       FROM   PW001C12           LEFT JOIN PW001p20 p20
            WHERE  TRANSACTIONCODE <> '')          ON  AND ap20.datefromSEQUENCENO <= periode.PEndISNULL(p20sub.SEQUENCENO, maincon.SEQUENCENO)
            AND ISNULL(a.dateto, a.TODATEESTIMATED) >= periode.PStart     LEFT JOIN PW001C02 C02CONT
       LEFT JOIN PW001P20 p20                ON  p20.PINRANK = p.PINC02CONT.CODE
                     LEFT  --AND p20.HISTORICAL = 'F'JOIN PW001C32 C32CONT
              AND P20.DATESTART <= ISNULL(A.DATETO, A.TODATEESTIMATED)        ON  p20.CONTRACTTYPE = ANDC32CONT.code
COALESCE(                    P20.DATEEND, LEFT JOIN PWPSC000 PT
               (           ON  ISNULL(a.PAYSCALETABLE, p20.PAYSCALETABLE) = pt.REGULATIVECODE
       SELECT MIN(t.DATESTART) -1                  AND (
    FROM   PW001P20 t                        WHERE  tPT.pinINCLUDEPLANNEDACTIVITY = p20.pin'Y'
                              AND t.DATESTART > p20.DATESTART OR (PT.INCLUDEPLANNEDACTIVITY <> 'Y' AND a.PLANNED <> 'Y')
           ),                   )
a.datefrom                ) >= A.DATEFROM   LEFT JOIN PWPSC001 PS
         LEFT JOIN PW001P20 prevcon              ON  ON prevcon.SEQUENCENOISNULL(a.PAYSCALE, p20.PAYSCALECODE) = p20PS.CONTRACTIDABOVEPAYSCALECODE
               LEFT JOIN PW001C02 C02CONT                ON p20.RANKAND PS.SEQNO = C02CONTpt.CODESEQNO
               LEFT JOIN PW001C32 C32CONT   LEFT JOIN PWORGVES v
         ON p20.CONTRACTTYPE = C32CONT.code              ON  LEFTa.VESSEL JOIN= PWPSC000v.NUMORGID
PT                ON ISNULL(a.PAYSCALETABLE, p20.PAYSCALETABLE) = pt.REGULATIVECODE LEFT JOIN PW001C43 c43
       AND (                  ON  PTc43.INCLUDEPLANNEDACTIVITYCODE = 'Y'P.COSTPLACE
                   OR (PT.INCLUDEPLANNEDACTIVITY <>LEFT 'Y'JOIN AND(
a.PLANNED <> 'Y')                )            SELECT C0.REGULATIVECODE AS 'Table_Code',
 LEFT JOIN PWPSC001 PS                ON ISNULL(a.PAYSCALE, p20.PAYSCALECODE) = PS.PAYSCALECODE            AND PSC0.SEQNOREGULATIVENAME = pt.SEQNOAS 'Table_Name',
               LEFT JOIN PWORGVES v                ON a.VESSEL = vC1.NUMORGIDPAYSCALECODE AS 'Payscale_Code',
             LEFT JOIN PW001C43 c43                ON c43.CODE = P.COSTPLACE  C1.PAYSCALENAME AS 'Payscale_Name'
           LEFT JOIN (                 FROM   SELECTPWPSC000 C0.REGULATIVECODE
AS 'Table_Code',
                          C0.REGULATIVENAME AS 'Table_Name',        LEFT JOIN PWPSC001 C1
               C1.PAYSCALECODE AS 'Payscale_Code',                         ON  C1.PAYSCALENAMESEQNO AS 'Payscale_Name'= C0.SEQNO
                   FROM   PWPSC000 C0   ) payscale
                      LEFT JOIN PWPSC001 C1 ON  payscale.Table_Code = p20.PAYSCALETABLE
                          ONAND  C1.SEQNOpayscale.Payscale_Code = C0.SEQNOp20.PAYSCALECODE
                     LEFT )JOIN payscale(
               ON payscale.Table_Code = p20.PAYSCALETABLE            ANDSELECT payscale.Payscale_Code = p20.PAYSCALECODEOLE.PIN,
                    LEFT JOIN (               DOCS.DOCTYPE,
    SELECT OLE.PIN,                           DOCS.DOCTYPE,     DOCS.[DESCRIPTION],
                     DOCS.[DESCRIPTION],                DOCS.SOURCEDOC,
          DOCS.SOURCEDOC,                           --RIGHT(CAST(DOCS.[DESCRIPTION] AS VARCHAR), 6) AS PAYPERIOD,
                                     CASE 
                                          WHEN ISNUMERIC(LEFT(RIGHT(CAST(DOCS.SOURCEDOC AS VARCHAR), 11), 6)) = 1 THEN 
                                               LEFT(RIGHT(CAST(DOCS.SOURCEDOC AS VARCHAR), 11), 6), 6)
                                          ELSE 0
         ELSE 0                           END  AS PAYPERIOD,
                                     --),
                          CASE           CASE 
                      WHEN DOCS.[DESCRIPTION] IS NOT NULL THEN 'Y'              WHEN DOCS.[DESCRIPTION] IS NOT NULL THEN 'Y'
           ELSE 'N'                           END  AS PAYSLIPSTATUSELSE 'N'
                  FROM   PW001P01OLE--left join PW001OLEDOCS PAYSL on PAYSL.pin= pin and DOCTYPE='payslip' and SOURCEDOC like '%periodeused%'    END  AS PAYSLIPSTATUS
                   OLE           FROM   PW001P01OLE--left join PW001OLEDOCS PAYSL on PAYSL.pin= pin and DOCTYPE='payslip' and SOURCEDOC like '%periodeused%'
LEFT JOIN PW001OLEDOCS DOCS                                ON  OLE.DOCNO = DOCS.DOCNO
                                     LEFT JOIN ANDPW001OLEDOCS DOCS.DOCTYPE
 = 'payslip'                                    --AND DOCS.DESCRIPTION LIKE '%PAYSLIP_202308%' ON  OLE.DOCNO = DOCS.DOCNO
          ) PayslipStatus                ON PayslipStatus.PIN = p.PIN            AND PayslipStatusDOCS.PAYPERIODDOCTYPE = company.PERIODE'payslip'
               WHERE (                    (          --AND DOCS.DESCRIPTION LIKE '%PAYSLIP_202308%'
          (                ) PayslipStatus
          CHARINDEX(a.CODE, pt.ACTIVITYCODES, 0) > 0            ON  PayslipStatus.PIN = p.PIN
           OR pt.ACTIVITYCODES IS NULL            AND PayslipStatus.PAYPERIOD = company.PERIODE
        )      WHERE  (
           )              (
     OR (                       (
   (                               CHARINDEX(a.CODE, PSpt.ACTIVITYCODES, 0) > 0
                                 OR pt.ACTIVITYCODES IS NULL
        OR ps.ACTIVITYCODES IS NULL                  )
        )                 )
     )                )    OR (
  )     Main WHERE  Main.NUMORGID NOT IN (10012602)        AND (          (
     CASE                      WHEN main.ROW# = 1 THEN 1    CHARINDEX(a.CODE, PS.ACTIVITYCODES, 0) > 0
            WHEN main.[Contract Start] = main.[ACTIVITY START]                AND main.[Contract End] =OR mainps.[ContractACTIVITYCODES End]IS THENNULL
1                    WHEN main.[Contract End] IS NULL        )
       AND main.[Contract Type] LIKE '%Main%'                AND main.ROW#)
< 3 THEN 1                  )
  ELSE 0 END   )     Main
--WHERE  Main.NUMORGID )NOT = 1
IN (10012602)

Columns Specification

Column

Description/ Location in APM

PIN

The PIN from the Personal Details.

numorgid

The emplyment organization ID from the Personal Details.

employmentstratdate

The emplyment start date from the Personal Details.

employmentenddate

The emplyment end date from the Personal Details.

Payslip Status

The column shows in the payslip for the current payroll period hs been distributed to the enclosed of this person or not.

The sql checks the stats based on the ecnlosed file name that should contain the current payroll period.

Payment Period

The current payroll period of the person based on the persons organization in Personal Details.

Period Start

The start date of the current payroll period of the person based on the persons organization in Personal Details.

Period End

The end date of the current payroll period of the person based on the persons organization in Personal Details.

Name

The Full Name from the Personal Details.

Organization

The Employment Organization from the Personal Details.

Rank

The Current Rank Name from the Personal Details.

Rank Code

The Current Rank Code from the Personal Details.

Nationality Code

The Nationality Code from the Personal Details.

Activity

The payable activity of the person that belongs to the current payroll period. The system checks activity code and payscale settings for autogeneration.

Activity Start

The start date of the selected activity.

Activity End

The end date of the selected activity.

Activity Estimated End

The estimated end date of the selected activity.

Activity Days

The number of days of the selected activity within the current payroll period.

Activity Vessel

The vessel of the selected activity.

Activity Department

The department of the selected activity.

Activity Position

The position of the selected activity.

Contract Type

From the contract of the person that covers selected activity dates.

Contract Name

From the contract of the person that covers selected activity dates.

Contract Rank

From the contract of the person that covers selected activity dates.

Contract Start

From the contract of the person that covers selected activity dates.

Contract End

From the contract of the person that covers selected activity dates.

Contract Payscale Table

From the contract of the person that covers selected activity dates.

Contract Payscale

From the contract of the person that covers selected activity dates.

Contract Payscale Table Name

From the contract of the person that covers selected activity dates.

Contract Payscale Name

From the contract of the person that covers selected activity dates.

Calculated By

The user name of the last person that calculated payroll of the selected crew member.

Calculate Time

The last time the selected crew member was calculated in payroll.

Payment Method

The Payment Action of the crew from the Payroll > Payment tab > New balance .

Payment Currency

The Payment Currency of the crew from the Payroll > Payment tab > New balance. If the currency is not declared for the person, it fetched from the employment company properties -calculation currency.

Distribute Payslip Option

The status of the E-mail Payslip Option from the Payroll > Payment tab > E-mail Payslip.

Email

The email from the Personal Details.

Issues

The column follows the following conditions:

  • If the person doesn’t have an Employment Start Date, then the column says “Employment Start Date missing“.

  • If the Employment Start Date of the person is greater than the Activity Start, then the column says “Employment Start Date greater than Activity Start Date“.

  • If the activity was not confirmed in time - the Activity Start or Activity EED is less than today - then the column says “Activity not confirmed“.

  • If the activity has a Payscale Table but doesn’t have a Payscale Code, then the column says “Activity Payscale Code missing“.

  • If the Contract Payscale Table or Code is different than the Activity Payscale Table or Code then the column says “Payscale mismatch between Contract and Activity.“ But if both Activity Payscale Table and Code are empty, then this condition is ignored.

  • If the Contract Start Date is greater than the end date of the current payroll period, then the column says “Invalid Contract Start Date“

  • “No valid contract for this period“ message is shown if contract is missing.

All the above rules are checked together and listed through a comma if several are applicable.

...