Skip to end of banner
Go to start of banner

Crew Data Issues

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Current »

Summary

A view that will display all activity and contracts details that matches the current payroll period dates.

Keywords

Data issue, Activity, Contracts

Category

Crew List View

Description

A view that will display all activity and contract details (from Contracts Datagroup) that match the current payroll period dates.

It indicates what possible user mistakes were made while creating/updating the profile.

Possible Issues:

  • Employment Start Date missing

  • Employment Start Date greater than Activity Start Date

  • Activity not confirmed

  • Activity Payscale Code missing

  • Payscale mismatch between Contract and Activity

  • Invalid Contract Start Date

  • No valid contract for this period

View Sample

image-20240308-040426.png

Main Data Selection

All crew who has sea-service activity that matches the current payroll period.

SQL statement

 Click here to expand...
CREATE VIEW [dbo].[PW001SRV203] AS
SELECT t.PIN,
       t.EMPLOYMENTSTARTDATE,
       t.EMPLOYMENTENDDATE,
       t.NUMORGID,
       t.NAME,
       t.ORGANIZATION,
       t.[RANK],
       t.[RANK CODE],
       t.ACTIVITY,
       t.[ACTIVITY START],
       t.[ACTIVITY END],
       t.[ACTIVITY ESTIMATED END],
       t.[ACTIVITY PAYSCALE TABLE],
       t.[ACTIVITY PAYSCALE CODE],
       t.[Contract Type],
       t.[Contract Name],
       t.[Contract Rank],
       t.[Contract Start],
       t.[Contract End],
       t.[CONTRACT PAYSCALE TABLE],
       t.[CONTRACT PAYSCALE],
       t.[CONTRACT PAYSCALE TABLE NAME],
       t.[CONTRACT PAYSCALE NAME],
       t.ISSUES
FROM   (
           SELECT main.PIN,
                  main.EMPLOYMENTSTARTDATE,
                  main.EMPLOYMENTENDDATE,
                  main.NUMORGID,
                  main.NAME,
                  main.ORGANIZATION,
                  main.[RANK],
                  main.[RANK CODE],
                  main.ACTIVITY,
                  main.[ACTIVITY START],
                  main.[ACTIVITY END],
                  main.[ACTIVITY ESTIMATED END],
                  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],
                  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, ', '), ''),
                          1,
                          1,
                          ''
                      ),
                      ''
                  )  AS [ISSUES]
           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',
                             --       p0p.PAYSCALETABLE 'PD PAYSCALE TABLE',
                             --       p0p.PAYSCALECODE 'PD PAYSCALE',
                             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',
                             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(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 ''
                      END AS Issue6,
                      CASE 
                           WHEN p20.CONTRACTKIND IS NULL THEN 'No valid contract for this period'
                           ELSE ''
                      END Issue7
                      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  AS 'PEnd'
                          FROM   PWORGCMP
                          WHERE  PAYROLLENABLED = 'Y'
                          UNION ALL
                          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  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 p20
                          ON p20.PIN = p.PIN
                      --AND p20.HISTORICAL = 'F'
                      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
                          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,
                                     --),
                                     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
                                     LEFT JOIN PW001OLEDOCS DOCS
                                          ON  OLE.DOCNO = DOCS.DOCNO
                                          AND DOCS.DOCTYPE = 'payslip'
                                              --AND DOCS.DESCRIPTION LIKE '%PAYSLIP_202308%'
                          ) PayslipStatus
                          ON PayslipStatus.PIN = p.PIN
                      AND PayslipStatus.PAYPERIOD = company.PERIODE
                          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
       ) T
WHERE  t.issues <> '' 

Columns Specification

Column

Description/ Location in APM

PIN

PIN

EMPLOYMENTSTARTDATE

Personal Details > Employment > Employment Start Date

EMPLOYMENTENDDATE

Personal Details > Employment > Employment End Date

NUMORGID

Personal Details > Client > NUMORGID

NAME

Full name of the person in Personal Details.

ORGANIZATION

Personal Details > Employment > Organization/Company

RANK

Personal Details > Employment > Current Rank

RANK CODE

Personal Details > Employment > Current Rank Code

ACTIVITY NAME

Activity name of matching current payroll period

ACTIVITY START

Activity start date of matching current payroll period

ACTIVITY END

Activity end date of matching current payroll period

ACTIVITY ESTIMATED END

Activity estimated end date of matching current payroll period

ACTIVITY PAYSCALE TABLE

Activity payscale table of matching current payroll period

ACTIVITY PAYSCALE CODE

Activity payscale code of matching current payroll period

CONTRACT TYPE

Contract Type that links to activity

CONTRACT NAME

Contract Name that links to activity

CONTRACT RANK

Contract Rank that links to activity

CONTRACT START

Contract Start date that links to activity

CONTRACT END

Contract End date that links to activity

CONTRACT PAYSCALE TABLE CODE

Contract Payscale table code that links to activity

CONTRACT PAYSCALE CODE

Contract Payscale code that links to activity

CONTRACT PAYSCALE TABLE NAME

Contract Payscale table name that links to activity

CONTRACT PAYSCALE NAME

Contract Payscale name that links to activity

ISSUES

Possible Issues:

  • Employment Start Date missing

  • Employment Start Date greater than Activity Start Date

  • Activity not confirmed

  • Activity Payscale Code missing

  • Payscale mismatch between Contract and Activity

  • Invalid Contract Start Date

  • No valid contract for this period

  • No labels