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.[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 (
                                        SELECT MIN(DATEFROM)
                                        FROM   pw001p03 pa
                                        WHERE  pa.PIN = p.PIN
                                               AND pa.datefrom < (
                                                       DATEADD(
                                                           MM,
                                                           1,
                                                           CAST(
                                                               CASE 
                                                                    WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) =
                                                                         '00' THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                         + '01'
                                                                    WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) 
                                                                         >
                                                                         12 THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                         + '12'
                                                                    ELSE CAST(company.PERIODE AS VARCHAR(6))
                                                               END + '01' AS DATETIME
                                                           )
                                                       ) -1
                                                   )
                                               AND ISNULL(pa.dateto, pa.TODATEESTIMATED) >= (
                                                       CAST(
                                                           CASE 
                                                                WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) = '00' THEN 
                                                                     LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                                     + '01'
                                                                WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) 
                                                                     > 12 THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                     + '12'
                                                                ELSE CAST(company.PERIODE AS VARCHAR(6))
                                                           END + '01' AS DATETIME
                                                       )
                                                   )
                                    ) 
                                    < (
                                        CAST(
                                            CASE 
                                                 WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                      + '01'
                                                 WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) > 12 THEN 
                                                      LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                      + '12'
                                                 ELSE CAST(company.PERIODE AS VARCHAR(6))
                                            END + '01' AS DATETIME
                                        )
                                    ) THEN CAST(
                                        CASE 
                                             WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                  + '01'
                                             WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) > 12 THEN 
                                                  LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                  + '12'
                                             ELSE CAST(company.PERIODE AS VARCHAR(6))
                                        END + '01' AS DATETIME
                                    )
                               ELSE (
                                        SELECT MIN(DATEFROM)
                                        FROM   pw001p03 pa
                                        WHERE  pa.PIN = p.PIN
                                               AND pa.datefrom < (
                                                       DATEADD(
                                                           MM,
                                                           1,
                                                           CAST(
                                                               CASE 
                                                                    WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) =
                                                                         '00' THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                         + '01'
                                                                    WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) 
                                                                         >
                                                                         12 THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                         + '12'
                                                                    ELSE CAST(company.PERIODE AS VARCHAR(6))
                                                               END + '01' AS DATETIME
                                                           )
                                                       ) -1
                                                   )
                                               AND ISNULL(pa.dateto, pa.TODATEESTIMATED) >= (
                                                       CAST(
                                                           CASE 
                                                                WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) = '00' THEN 
                                                                     LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                                     + '01'
                                                                WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) 
                                                                     > 12 THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                     + '12'
                                                                ELSE CAST(company.PERIODE AS VARCHAR(6))
                                                           END + '01' AS DATETIME
                                                       )
                                                   )
                                    )
                          END
                      ),
                      (
                          CASE 
                               WHEN (
                                        SELECT MAX(ISNULL(pa.DATETO, pa.TODATEESTIMATED))
                                        FROM   pw001p03 pa
                                        WHERE  pa.PIN = p.PIN
                                               AND pa.datefrom < (
                                                       DATEADD(
                                                           MM,
                                                           1,
                                                           CAST(
                                                               CASE 
                                                                    WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) =
                                                                         '00' THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                         + '01'
                                                                    WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) 
                                                                         >
                                                                         12 THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                         + '12'
                                                                    ELSE CAST(company.PERIODE AS VARCHAR(6))
                                                               END + '01' AS DATETIME
                                                           )
                                                       ) -1
                                                   )
                                               AND ISNULL(pa.dateto, pa.TODATEESTIMATED) >= (
                                                       CAST(
                                                           CASE 
                                                                WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) = '00' THEN 
                                                                     LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                                     + '01'
                                                                WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) 
                                                                     > 12 THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                     + '12'
                                                                ELSE CAST(company.PERIODE AS VARCHAR(6))
                                                           END + '01' AS DATETIME
                                                       )
                                                   )
                                    )
                                    > (
                                        DATEADD(
                                            MM,
                                            1,
                                            CAST(
                                                CASE 
                                                     WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                          + '01'
                                                     WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) > 12 THEN 
                                                          LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                          + '12'
                                                     ELSE CAST(company.PERIODE AS VARCHAR(6))
                                                END + '01' AS DATETIME
                                            )
                                        ) -1
                                    ) THEN (
                                        DATEADD(
                                            MM,
                                            1,
                                            CAST(
                                                CASE 
                                                     WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                          + '01'
                                                     WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) > 12 THEN 
                                                          LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                          + '12'
                                                     ELSE CAST(company.PERIODE AS VARCHAR(6))
                                                END + '01' AS DATETIME
                                            )
                                        ) -1
                                    )
                               ELSE (
                                        SELECT MAX(ISNULL(pa.DATETO, pa.TODATEESTIMATED))
                                        FROM   pw001p03 pa
                                        WHERE  pa.PIN = p.PIN
                                               AND pa.datefrom < (
                                                       DATEADD(
                                                           MM,
                                                           1,
                                                           CAST(
                                                               CASE 
                                                                    WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) =
                                                                         '00' THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                         + '01'
                                                                    WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) 
                                                                         >
                                                                         12 THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                         + '12'
                                                                    ELSE CAST(company.PERIODE AS VARCHAR(6))
                                                               END + '01' AS DATETIME
                                                           )
                                                       ) -1
                                                   )
                                               AND ISNULL(pa.dateto, pa.TODATEESTIMATED) >= (
                                                       CAST(
                                                           CASE 
                                                                WHEN RIGHT(CAST(company.PERIODE AS VARCHAR), 2) = '00' THEN 
                                                                     LEFT(CAST(company.PERIODE AS VARCHAR), 4)
                                                                     + '01'
                                                                WHEN CONVERT(INT, RIGHT(CAST(company.PERIODE AS VARCHAR), 2)) 
                                                                     > 12 THEN LEFT(CAST(company.PERIODE AS VARCHAR), 4) 
                                                                     + '12'
                                                                ELSE CAST(company.PERIODE AS VARCHAR(6))
                                                           END + '01' AS DATETIME
                                                       )
                                                   )
                                    )
                          END
                      )
                  ) + 1 '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',
                  --CASE 
        p0p.PAYSCALETABLE 'PD PAYSCALE TABLE',            WHEN p20.CONTRACTKIND = 0 THEN 'Main Contract'
--       p0p.PAYSCALECODE 'PD PAYSCALE',              WHEN p20.CONTRACTKIND = 1 THEN CASE'Sub Contract'
                       WHEN p20.CONTRACTKIND = 02 THEN 'Main ContractAmmendment'
                       WHEN p20.CONTRACTKIND = 1 THEN 'Sub Contract'ELSE ''
                  END          WHEN p20.CONTRACTKIND = 2 THEN 'Ammendment'
                       ELSE ''
                  END        AS 'Contract 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',
                  pay.CURRENCYFORPAYMENT '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                 AND NULLIF(A.PAYSCALE, '') IS NULL THEN 'Activity Payscale Code missing'
                       ELSE ''
                  END             Issue4,
                  CASE 
                       WHEN (
                                NULLIF(a.PAYSCALETABLE, '') IS NOT NULL
                                AND NULLIF(a.PAYSCALE, '') IS NOT NULL
                            )
                            AND (
                                (p20.PAYSCALECODE <> a.PAYSCALE)
                                OR (p20.PAYSCALETABLE <> a.PAYSCALETABLE)
                            ) THEN 'Payscale mismatch between Contract and Activity'
                       ELSE ''
                  END          AS Issue5,
                  CASE 
                       WHEN p20.DATESTART > periode.PEnd THEN 'Invalid Contract Start Date'
                ELSE ''      ELSE ''
                  END          AS Issue6,
                  CASE 
                       WHEN p20.CONTRACTKIND IS NULL THEN 'No valid contract for this period'
                       ELSE ''
                  END             Issue7,
                  CASE 
                       WHEN (a.CODE IN (SELECT CODE FROM PW001C12 WHERE OPTIONS LIKE '%S%')) AND (a.DATEFROM < (CASE WHEN p20.DATESTART>prevcon.DATESTART THEN prevcon.DATESTART ELSE p20.DATESTART END)) THEN 'No contract starting from ' + CONVERT(VARCHAR, a.DATEFROM, 1) + ' to ' +  CONVERT(VARCHAR, p20.DATESTART, 1) 
                       ELSE ''
                  END             Issue8,
                  CASE 
                       WHEN (a.CODE IN (SELECT CODE FROM PW001C12 WHERE OPTIONS LIKE '%S%')) AND (a.DATEFROM > p20.DATESTART) THEN 'Contract started on ' + CONVERT(VARCHAR, p20.DATESTART, 1) + ' instead of ' +  CONVERT(VARCHAR, a.DATEFROM, 1)
                       ELSE ''
                  END             Issue9
           FROM   pw001p01 p
                  JOIN (
                           SELECT NUMORGID,
                                  PERIODE,
                                  CAST(
                                      CASE 
                                           WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4) 
                                                +
                                                '01'
                                           WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
                                                + '12'
                                           ELSE CAST(PERIODE AS VARCHAR(6))
                                      END + '01' AS DATETIME
                                  )     AS 'PStart',
                                  DATEADD(
                                      MM,
                                      1,
                                      CAST(
                                          CASE 
                                               WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
                                                    + '01'
                                               WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
                                                    + '12'
                                               ELSE CAST(PERIODE AS VARCHAR(6))
                                          END + '01' AS DATETIME
                                      )
                                  ) -1 END AS Issue6,'PEnd'
               CASE            FROM   PWORGCMP
  WHEN p20.CONTRACTKIND IS NULL THEN 'No valid contract for this period'               WHERE  ELSEPAYROLLENABLED = 'Y'
           END  Issue7            FROM pw001p01 pUNION ALL
          JOIN (                SELECT NUMORGID,
                                  PERIODE,
                                  CAST(
                                      CASE 
                                           WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4) 
                                                +
                                                '01'
                                           WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)), 4)
                                                + '12'
          + '12'                                ELSE CAST(PERIODE AS VARCHAR(6))
                                      END + '01' AS DATETIME
                      )     AS 'PStart',      )     AS 'PStart',
          DATEADD(                        DATEADD(
  MM,                           1,         MM,
                 CAST(                     1,
         CASE                             CAST(
       WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)                        CASE 
               + '01'                                    WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) >= 12'00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
                                                    + '12'01'
                                               WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
                  ELSE CAST(PERIODE AS VARCHAR(6))                               END + '0112'
AS DATETIME                           )                   ELSE CAST(PERIODE AS VARCHAR(6))
)  -1  AS 'PEnd'                FROM   PWORGCMP                WHERE  PAYROLLENABLEDEND =+ 'Y01' AS DATETIME
             UNION ALL                SELECT NUMORGID,       )
               PERIODE,                   ) -1  AS CAST('PEnd'
                          CASE FROM   PWORGVES
                           WHERE WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) PAYROLLENABLED = '00Y'
THEN LEFT(CAST(PERIODE AS VARCHAR), 4)                   ) periode
                 +      ON  p.CLIENT = periode.NUMORGID
                  JOIN PWORG ORGAN
     '01'                  ON  p.CLIENT =  ORGAN.NUMORGID
        WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE ASJOIN VARCHAR), 4)PWORGCMP company
                       ON  p.CLIENT = company.NUMORGID
        + '12'         LEFT JOIN PW001P0P p0p
                   ELSE CAST(PERIODE AS VARCHAR(6)) ON  p0p.PIN = p.PIN
                     END + '01' AS DATETIME
AND p0p.PNUMBER = 'A'
                     )  AND p0p.PAYSCALECODE IS AS 'PStart',NOT NULL
                      DATEADD( AND p0p.PAYSCALECODE <> ''
                  LEFT JOIN PW001PAY pay
MM,                       ON  pay.PIN = 1,p.PIN
                       AND pay.CalculateTime IS CAST(NOT NULL
                       AND pay.PERIODEUSED = company.PERIODE
  CASE                     AND NOT EXISTS(
             WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)       SELECT 1
                               FROM + '01' PW001PAY PAY2
                               WHERE  WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN LEFT(CAST(PERIODE AS VARCHAR), 4)PAY.PIN = PAY2.PIN
                                      AND PAY2.PERIODEUSED = company.PERIODE
        + '12'                             AND (
     ELSE CAST(PERIODE AS VARCHAR(6))                               END + '01' AS DATETIME   PAY2.CALCULATETIME > PAY.CALCULATETIME
                     )                       ) -1 OR AS(
'PEnd'                FROM   PWORGVES                WHERE  PAYROLLENABLED = 'Y'            ) periode PAY2.CALCULATETIME = PAY.CALCULATETIME
        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         LEFT JOIN PW001P1R ANDp1r5
p0p.PAYSCALECODE <> ''                LEFT JOIN PW001PAY pay  ON  p1r5.PIN = p.PIN
         ON pay.PIN = p.PIN            AND payp1r5.CalculateTimeRATENO IS= NOT5
NULL            AND pay.PERIODEUSED = company.PERIODE   LEFT JOIN pw001c02 c02
     AND NOT EXISTS(                ON  p.rank = SELECTc02.code
1                  LEFT JOIN FROMPW001P0Y P0Y
  PW001PAY PAY2                    WHEREON  PAYp.PIN = PAY2P0Y.PIN
                  LEFT JOIN PW001P0T email
       AND PAY2.PERIODEUSED = company.PERIODE             ON  email.PIN = p.PIN
         AND (             AND email.TELETYPE = 6
                  PAY2.CALCULATETIME > PAY.CALCULATETIME     AND NOT EXISTS (
                               SELECT 1
 OR (                             FROM   pw001p0t t
        PAY2.CALCULATETIME = PAY.CALCULATETIME                     WHERE  t.PIN = email.PIN
                --AND PAY2.UUID > PAY.UUID                   AND t.TELETYPE = email.TELETYPE
               )                       AND (
      )                )                LEFT JOIN PW001P1R p1r5     t.TELEPRIORITY < email.TELEPRIORITY
        ON p1r5.PIN  = p.PIN            AND p1r5.RATENO = 5                LEFT JOIN pw001c02 c02OR (
              ON p.rank = c02.code                LEFT JOIN PW001P0Y P0Y                ON pt.PINTELEPRIORITY = P0Y.PINemail.TELEPRIORITY
                   LEFT JOIN PW001P0T email                ON email.PIN = p.PIN            AND t.SEQUENCENO > email.TELETYPESEQUENCENO
 = 6            AND NOT EXISTS (                    SELECT 1           )
        FROM   pw001p0t t                    WHERE  t.PIN = email.PIN      )
                    AND  t.TELETYPE = email.TELETYPE   )
                       AND (   --Activity matching payroll period
                  JOIN PW001P03 a
       t.TELEPRIORITY < email.TELEPRIORITY              ON  a.PIN = p.PIN
                OR (      AND a.CODE IN (SELECT CODE
                               t.TELEPRIORITY = email.TELEPRIORITY     FROM   PW001C12
                                 AND t.SEQUENCENO > email.SEQUENCENO  WHERE  TRANSACTIONCODE <> '')
                       AND a.datefrom <= periode.PEnd
    )                   AND ISNULL(a.dateto, a.TODATEESTIMATED) >= periode.PStart
       )           LEFT JOIN PW001P20 p20
 )                --Activity matching payroll period   ON  p20.PIN = p.PIN
        JOIN PW001P03 a             AND   ON a.PIN = p.PIN
P20.DATESTART <= ISNULL(A.DATETO, A.TODATEESTIMATED)
          AND a.CODE IN (SELECT CODE         AND COALESCE(
                FROM   PW001C12            P20.DATEEND,
              WHERE  TRANSACTIONCODE <> '')            AND a.datefrom(
<= periode.PEnd            AND ISNULL(a.dateto, a.TODATEESTIMATED) >= periode.PStart                LEFT JOIN PW001P20 p20 SELECT MIN(t.DATESTART) -1
            ON p20.PIN = p.PIN            AND p20.HISTORICAL = 'F'     FROM   PW001P20 t
  AND P20.DATESTART <= ISNULL(A.DATETO, A.TODATEESTIMATED)            AND COALESCE(                WHERE  t.pin = P20p20.DATEEND,pin
                   (                        SELECTAND MIN(t.DATESTART) -1> p20.DATESTART
                      FROM   PW001P20 t     ),
                  WHERE  t.pin = p20.pin         a.datefrom
                     AND t.DATESTART > p20.DATESTART   ) >= A.DATEFROM
              ),    LEFT JOIN PW001P20 prevcon
            a.datefrom           ON  prevcon.SEQUENCENO = p20.CONTRACTIDABOVE
) >= A.DATEFROM                LEFT JOIN PW001C02 C02CONT
                       ON  p20.RANK = C02CONT.CODE
                  LEFT JOIN PW001C32 C32CONT
                       ON  p20.CONTRACTTYPE = C32CONT.code
                  LEFT JOIN PWPSC000 PT
                       ON  ISNULL(a.PAYSCALETABLE, p20.PAYSCALETABLE) = pt.REGULATIVECODE
                       AND (
                               PT.INCLUDEPLANNEDACTIVITY = 'Y'
                               OR (PT.INCLUDEPLANNEDACTIVITY <> 'Y' AND a.PLANNED <> 'Y')
                           )
                  LEFT JOIN PWPSC001 PS
                       ON  ISNULL(a.PAYSCALE, p20.PAYSCALECODE) = PS.PAYSCALECODE
                       AND PS.SEQNO = pt.SEQNO
                  LEFT JOIN PWORGVES v
                       ON  a.VESSEL = v.NUMORGID
                  LEFT JOIN PW001C43 c43
                       ON  c43.CODE = P.COSTPLACE
                  LEFT JOIN (
                           SELECT C0.REGULATIVECODE AS 'Table_Code',
                                  C0.REGULATIVENAME AS 'Table_Name',
                                  C1.PAYSCALECODE AS 'Payscale_Code',
                                  C1.PAYSCALENAME AS 'Payscale_Name'
                           FROM   PWPSC000 C0
                                  LEFT JOIN PWPSC001 C1
                                       ON  C1.SEQNO = C0.SEQNO
                       ) payscale
                       ON  payscale.Table_Code = p20.PAYSCALETABLE
                       AND payscale.Payscale_Code = p20.PAYSCALECODE
                  LEFT JOIN (
                           SELECT OLE.PIN,
                                  DOCS.DOCTYPE,
                                  DOCS.[DESCRIPTION],
                                  DOCS.SOURCEDOC,
                                  RIGHT(CAST(DOCS.[DESCRIPTION] AS VARCHAR), 6) AS PAYPERIOD,, 6) AS PAYPERIOD,
                                  --),
                                  CASE 
                                       WHEN DOCS.[DESCRIPTION] IS NOT NULL THEN 'Y'
                                       ELSE 'N'
                                  END AS PAYSLIPSTATUS
                           FROM   PW001P01OLE--left join PW001OLEDOCS PAYSL on PAYSL.pin= pin and DOCTYPE='payslip' and SOURCEDOC like '%periodeused%'
                                  OLE
       OLE                           LEFT JOIN PW001OLEDOCS DOCS
                                       ON  OLE.DOCNO = DOCS.DOCNO
                                       AND DOCS.DOCTYPE = 'payslip'
                       ) PayslipStatus
      --AND DOCS.DESCRIPTION LIKE '%PAYSLIP_202308%'               ON ) PayslipStatus.PIN = p.PIN
             ON PayslipStatus.PIN = p.PIN            AND PayslipStatus.PAYPERIOD = company.PERIODE
           WHERE  (
 WHERE (                    (
                          (
                              CHARINDEX(a.CODE, pt.ACTIVITYCODES, 0) > 0
                              OR pt.ACTIVITYCODES IS NULL
                          )
                      )
                      OR (
                             (
                                 CHARINDEX(a.CODE, PS.ACTIVITYCODES, 0) > 0
                                 OR ps.ACTIVITYCODES IS NULL
                             )
                         )
                  )
       )     Main

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.

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.

...