Versions Compared

Key

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

...

Expand
Code Block
languagesql
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 VESSEL],
       t.[ACTIVITY DEPARTMENT],
       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 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],
                  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]
           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',
                             ROW_NUMBER() OVER(PARTITION
BY p20.PIN ORDER BY p20.PIN, p20.CONTRACTKIND DESC) AS ROW#,                         PARTITION BY p20.PIN ORDER BY CASEp20.PIN,
                                   WHEN p20.CONTRACTKIND =DESC
0 THEN 'Main Contract'                          )         WHEN p20.CONTRACTKIND = 1AS THENROW#,
'Sub Contract'                            CASE 
     WHEN p20.CONTRACTKIND = 2 THEN 'Ammendment'                        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    END         Issue3,
                                 CASE 
                                      WHEN NULLIF(A.PAYSCALETABLE, '') IS NOT NULL
                                       AND NULLIF(A.PAYSCALE, '') IS NULL THEN 'Activity Payscale Code missing'
                                      ELSE ''
                             END    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    END      AS Issue5,
                                 CASE 
                                      WHEN p20.DATESTART > periode.PEnd THEN 'Invalid Contract Start Date'
                                      ELSE ''
                             END    END      AS Issue6,
                                 CASE 
                                      WHEN p20.CONTRACTKIND IS NULL THEN 'No valid contract for this period'
                                      ELSE ''
                             END    END         Issue7,
                  CASE               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 ' +WHEN CONVERT(VARCHAR, a.DATEFROM, 1) + ' to ' +  CONVERT(VARCHAR, p20.DATESTART, 1)
                                    ELSE ''          a.CODE IN (SELECT CODE
     END             Issue8,                   CASE                     FROM   PW001C12
WHEN (a.PAYSCALETABLE IS NULL OR a.PAYSCALETABLE = '') AND (a.PAYSCALE IS NULL OR a.PAYSCALE = '') THEN 'Activity Payscale Code and Activity Payscale Table are missing.'                        WHEN a.PAYSCALETABLE IS NULL OR a.PAYSCALETABLE = '' THEN 'ActivityWHERE Payscale TableOPTIONS isLIKE missing'%S%')
                       WHEN  a.PAYSCALE IS NULL OR a.PAYSCALE = '' THEN 'Activity Payscale Code is missing'      )
                  ELSE ''                   END AND (
          Issue9                       FROM   pw001p01 p          a.DATEFROM < (
                 JOIN (                                 CASE 
    SELECT NUMORGID,                                              PERIODE,     WHEN p20.DATESTART > maincon.DATESTART THEN maincon.DATESTART
                                   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 ''
                       WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN  END         Issue8,
                                 CASE 
              LEFT(CAST(PERIODE AS VARCHAR), 4)                     WHEN (a.PAYSCALETABLE IS NULL OR a.PAYSCALETABLE = '')
                               + '12'       AND (a.PAYSCALE IS NULL OR a.PAYSCALE = '') THEN 
                                      ELSE CAST(PERIODE AS VARCHAR(6))  'Activity Payscale Code and Activity Payscale Table are missing.'
                                      WHEN ENDa.PAYSCALETABLE +IS '01'NULL
AS DATETIME                                      OR a.PAYSCALETABLE = '' THEN 'Activity Payscale Table ) AS 'PStart',is missing'
                                     WHEN a.PAYSCALE IS NULL
    DATEADD(                                   OR a.PAYSCALE = '' THEN 'Activity Payscale Code is missing'
     MM,                                ELSE ''
                1,                END          Issue9
                       CAST(  FROM   pw001p01 p
                                JOIN (
             CASE                            SELECT NUMORGID,
                              WHEN  RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)      PERIODE,
                                                CAST(
        + '01'                                           CASE 
              WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN                                   WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4) 
                 LEFT(CAST(PERIODE AS VARCHAR), 4)                                          +
                     + '12'                                        '01'
                  ELSE CAST(PERIODE AS VARCHAR(6))                                       WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN 
           END + '01' AS DATETIME                                               LEFT(CAST(PERIODE AS VARCHAR), 4)
                                             ) -1 AS 'PEnd'                 + '12'
                                        FROM   PWORGCMP              ELSE CAST(PERIODE AS VARCHAR(6))
                     WHERE  PAYROLLENABLED = 'Y'                           END + '01' AS DATETIME
       UNION   ALL                                      ) SELECTAS NUMORGID'PStart',
                                             PERIODE,   DATEADD(
                                            CAST(        MM,
                                         CASE           1,
                                            WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE
AS VARCHAR), 4)                                                      CASE 
     +                                                        WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '01'
  00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
                                                   WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN               + '01'
                                                             WHEN CONVERT(INT, LEFTRIGHT(CAST(PERIODE AS VARCHAR), 4)2)) > 12 THEN 
                                                          +  '12'      LEFT(CAST(PERIODE AS VARCHAR), 4)
                                             ELSE CAST(PERIODE AS VARCHAR(6))                  + '12'
                              END + '01' AS DATETIME                           ELSE CAST(PERIODE AS VARCHAR(6))
               ) AS 'PStart',                                       END + '01' AS DATETIME
  DATEADD(                                                  MM,)
                                                ) 1,-1 AS 'PEnd'
                                         FROM   PWORGCMP
       CAST(                                  WHERE  PAYROLLENABLED = 'Y'
               CASE                          UNION ALL
                                WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE ASSELECT VARCHAR)NUMORGID,
4)                                                PERIODE,
               + '01'                                CAST(
                          WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN                  CASE 
                                                         WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4) 
                                                              +
'12'                                                              '01'
ELSE CAST(PERIODE AS VARCHAR(6))                                                      END + '01'WHEN CONVERT(INT, RIGHT(CAST(PERIODE AS DATETIME
   VARCHAR), 2)) > 12 THEN 
                                            )                  LEFT(CAST(PERIODE AS VARCHAR), 4)
                        ) -1 AS 'PEnd'                                   + '12'
  FROM   PWORGVES                                       WHERE  PAYROLLENABLED = 'Y'         ELSE CAST(PERIODE AS VARCHAR(6))
                      ) periode                             END + '01' AS DATETIME
 ON  p.CLIENT = periode.NUMORGID                              JOIN PWORG ORGAN           ) AS 'PStart',
                     ON  p.CLIENT = ORGAN.NUMORGID                       DATEADD(
      JOIN PWORGCMP company                                   ON  p.CLIENT = company.NUMORGID     MM,
                        LEFT JOIN PW001P0P p0p                         1,
         ON  p0p.PIN = p.PIN                                   AND p0p.PNUMBER = 'A' CAST(
                                 AND p0p.PAYSCALECODE IS NOT NULL                   CASE 
              AND p0p.PAYSCALECODE <> ''                              LEFT JOIN PW001PAY pay           WHEN RIGHT(CAST(PERIODE AS VARCHAR), 2) = '00' THEN LEFT(CAST(PERIODE AS VARCHAR), 4)
            ON  pay.PIN = p.PIN                                   AND pay.CalculateTime IS NOT NULL           + '01'
                      AND pay.PERIODEUSED = company.PERIODE                                   AND NOTWHEN EXISTSCONVERT(INT, RIGHT(CAST(PERIODE AS VARCHAR), 2)) > 12 THEN 
                                  SELECT 1                               LEFT(CAST(PERIODE AS VARCHAR), 4)
        FROM   PW001PAY PAY2                                           WHERE  PAY.PIN = PAY2.PIN       + '12'
                                         AND PAY2.PERIODEUSED = company.PERIODE                 ELSE CAST(PERIODE AS VARCHAR(6))
                             AND (                          END + '01' AS DATETIME
                           PAY2.CALCULATETIME > PAY.CALCULATETIME                       )
                                  OR (             ) -1 AS 'PEnd'
                                         FROM   PWORGVES
   PAY2.CALCULATETIME = PAY.CALCULATETIME                                    WHERE  PAYROLLENABLED =  'Y'
                       --AND PAY2.UUID > PAY.UUID           ) periode
                                     ON  p.CLIENT = periode.NUMORGID
      )                          JOIN PWORG ORGAN
                         )            ON  p.CLIENT = ORGAN.NUMORGID
                        )        JOIN PWORGCMP company
                   LEFT JOIN PW001P1R p1r5               ON  p.CLIENT = company.NUMORGID
               ON  p1r5.PIN = p.PIN             LEFT JOIN PW001P0P p0p
                  AND p1r5.RATENO = 5                ON  p0p.PIN = p.PIN
         LEFT JOIN pw001c02 c02                         AND p0p.PNUMBER = 'A'
      ON  p.rank = c02.code                           AND p0p.PAYSCALECODE IS LEFTNOT JOINNULL
PW001P0Y P0Y                                   ON AND p.PIN = P0Y.PINp0p.PAYSCALECODE <> ''
                                LEFT JOIN PW001P0TPW001PAY pay
  email                                   ON  emailpay.PIN = p.PIN
                                     AND emailpay.TELETYPECalculateTime =IS 6NOT NULL
                                 AND NOT EXISTS ( AND pay.PERIODEUSED = company.PERIODE
                                     AND SELECTNOT 1EXISTS(
                                          FROM   pw001p0tSELECT t1
                                          WHERE  t.PIN =FROM email.PIN  PW001PAY PAY2
                                             WHERE AND tPAY.TELETYPEPIN = emailPAY2.TELETYPEPIN
                                                 AND (  AND PAY2.PERIODEUSED = company.PERIODE
                                                    t.TELEPRIORITYAND <(
email.TELEPRIORITY                                                          OR ( PAY2.CALCULATETIME > PAY.CALCULATETIME
                                                            OR t.TELEPRIORITY(
= email.TELEPRIORITY                                                                 AND tPAY2.SEQUENCENOCALCULATETIME >= email.SEQUENCENOPAY.CALCULATETIME
                                                                    )
--AND PAY2.UUID > PAY.UUID
                                                    )           )
                           )                             )
         --Activity matching payroll period                             )
JOIN PW001P03 a                              LEFT JOIN PW001P1R p1r5
 ON  a.PIN = p.PIN                                ON  p1r5.PIN AND= a.CODE IN (SELECT CODEp.PIN
                                     AND p1r5.RATENO = 5
                  FROM   PW001C12           LEFT JOIN pw001c02 c02
                                   WHERE  ON  TRANSACTIONCODEp.rank <> '')= c02.code
                                LEFT JOIN AND a.datefrom <= periode.PEndPW001P0Y P0Y
                                     AND ISNULL(a.dateto, a.TODATEESTIMATED) >= periode.PStartON  p.PIN = P0Y.PIN
                                LEFT JOIN PW001P0T email
PW001P20  p20                                   ON  p20email.PIN = p.PIN
                                      --AND p20email.HISTORICALTELETYPE = 'F'6
                                     AND P20.DATESTART <= ISNULL(A.DATETO, A.TODATEESTIMATED)NOT EXISTS (
                                    AND COALESCE(        SELECT 1
                                 P20.DATEEND,            FROM   pw001p0t t
                          (                   WHERE  t.PIN = email.PIN
                        SELECT MIN(t.DATESTART) -1                          AND t.TELETYPE = email.TELETYPE
                 FROM   PW001P20 t                               AND (
              WHERE  t.pin = p20.pin                                          t.TELEPRIORITY < email.TELEPRIORITY
         AND t.DATESTART > p20.DATESTART                                           ),     OR (
                                    a.datefrom                               t.TELEPRIORITY = email.TELEPRIORITY
     ) >= A.DATEFROM                              LEFT JOIN PW001P20 prevcon                           AND t.SEQUENCENO > email.SEQUENCENO
    ON  prevcon.SEQUENCENO = p20.CONTRACTIDABOVE                              LEFT JOIN PW001C02 C02CONT                      )
            ON  p20.RANK = C02CONT.CODE                              LEFT JOIN PW001C32 C32CONT       )
                           ON  p20.CONTRACTTYPE = C32CONT.code          )
                   LEFT JOIN PWPSC000 PT                   --Activity matching payroll period
            ON  ISNULL(a.PAYSCALETABLE, p20.PAYSCALETABLE) = pt.REGULATIVECODE               JOIN PW001P03 a
                 AND (                   ON  a.PIN = p.PIN
                   PT.INCLUDEPLANNEDACTIVITY = 'Y'                AND a.CODE IN (SELECT CODE
                      OR (PT.INCLUDEPLANNEDACTIVITY <> 'Y' AND a.PLANNED <> 'Y')                          FROM   PW001C12
                         )                           WHERE  TRANSACTIONCODE LEFT<> JOIN'')
PWPSC001 PS                                   ON AND ISNULL(a.PAYSCALE, p20.PAYSCALECODE) = PS.PAYSCALECODEdatefrom <= periode.PEnd
                                     AND PS.SEQNO = pt.SEQNOISNULL(a.dateto, a.TODATEESTIMATED) >= periode.PStart
                                LEFT JOIN PWORGVESPW001p20 p20sub
  v                                   ON  ap20sub.VESSELPIN = v.NUMORGIDp.PIN
                                         LEFT JOIN PW001C43 c43--AND p20.HISTORICAL = 'F'
                                    ON AND c43p20sub.CODEDATESTART <= P.COSTPLACEISNULL(A.DATETO, A.TODATEESTIMATED)
                                    LEFT JOINAND COALESCE(
                                           SELECT  C0p20sub.REGULATIVECODEDATEEND,
 AS 'Table_Code',                                           (
  C0.REGULATIVENAME AS 'Table_Name',                                             SELECT C1.PAYSCALECODE AS 'Payscale_Code',MIN(t.DATESTART) -1
                                              C1.PAYSCALENAME AS 'Payscale_Name'   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)
                                         --AND ISNULL(p20.DATEEND,GETDATE()) >= periode.PStart
                                         
                                LEFT JOIN PW001p20 maincon
                                     ON  maincon.PIN = p.PIN
                                     AND maincon.CONTRACTKIND = 0
                                     AND maincon.CONTRACTIDABOVE IS NULL
                                LEFT JOIN PW001p20 p20
                                     ON  p20.SEQUENCENO = ISNULL(p20sub.SEQUENCENO, maincon.SEQUENCENO)
                                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',
                                      FROM   PWPSC000 C0      C0.REGULATIVENAME AS 'Table_Name',
                                     LEFT JOIN PWPSC001 C1        C1.PAYSCALECODE AS 'Payscale_Code',
                                        ON  C1.SEQNO = C0.SEQNO    C1.PAYSCALENAME AS 'Payscale_Name'
                            ) payscale            FROM   PWPSC000 C0
                  ON  payscale.Table_Code = p20.PAYSCALETABLE                          LEFT JOIN PWPSC001 C1
     AND payscale.Payscale_Code = p20.PAYSCALECODE                              LEFT JOIN (             ON  C1.SEQNO = C0.SEQNO
                     SELECT OLE.PIN,               ) payscale
                             DOCS.DOCTYPE,        ON  payscale.Table_Code = p20.PAYSCALETABLE
                                 DOCS.[DESCRIPTION],    AND payscale.Payscale_Code = p20.PAYSCALECODE
                                LEFT JOIN (
    DOCS.SOURCEDOC,                                     SELECT OLE.PIN,
       RIGHT(CAST(DOCS.[DESCRIPTION] AS VARCHAR), 6) AS PAYPERIOD,                                    DOCS.DOCTYPE,
         --),                                       DOCS.[DESCRIPTION],
      CASE                                          DOCS.SOURCEDOC,
         WHEN DOCS.[DESCRIPTION] IS NOT NULL THEN 'Y'                                 RIGHT(CAST(DOCS.[DESCRIPTION] AS VARCHAR), 6) AS PAYPERIOD,
            ELSE 'N'                                   --),
          END AS PAYSLIPSTATUS                                    CASE 
 FROM   PW001P01OLE--left join PW001OLEDOCS PAYSL on PAYSL.pin= pin and DOCTYPE='payslip' and SOURCEDOC like '%periodeused%'                                     WHEN DOCS.[DESCRIPTION] IS NOT NULL THEN 'Y'
  OLE                                              LEFT JOIN PW001OLEDOCS DOCS  ELSE 'N'
                                               ON END OLE.DOCNOAS =PAYSLIPSTATUS
DOCS.DOCNO                                         FROM   PW001P01OLE--left join PW001OLEDOCS PAYSL on PAYSL.pin= pin ANDand DOCS.DOCTYPE = 'payslip' and SOURCEDOC like '%periodeused%'
                                                OLE
 --AND DOCS.DESCRIPTION LIKE '%PAYSLIP_202308%'                                   ) PayslipStatus        LEFT JOIN PW001OLEDOCS DOCS
                       ON     PayslipStatus.PIN = p.PIN                       ON  OLE.DOCNO = DOCS.DOCNO
       AND PayslipStatus.PAYPERIOD = company.PERIODE                       WHERE  (                  AND DOCS.DOCTYPE = 'payslip'
            (                                      (       --AND DOCS.DESCRIPTION LIKE '%PAYSLIP_202308%'
                               CHARINDEX(a.CODE, pt.ACTIVITYCODES, 0) > 0  ) PayslipStatus
                                     ON OR ptPayslipStatus.ACTIVITYCODES ISPIN NULL= p.PIN
                                    ) AND PayslipStatus.PAYPERIOD = company.PERIODE
                         WHERE  (
 )                                  OR (
                                        (
                                            CHARINDEX(a.CODE, PSpt.ACTIVITYCODES, 0) > 0
                                            OR pspt.ACTIVITYCODES IS NULL
                                        )
                                    )
                                 )   OR (
                      )     Main            WHERE Main.ROW# = 1 (
                   AND (                     CASE      CHARINDEX(a.CODE, PS.ACTIVITYCODES, 0) > 0
                WHEN main.ROW# = 1 THEN 1                          WHENOR main.[Contract Start] = main.[ACTIVITY START] AND main.[Contract End] = main.[Contract End] THEN 1ps.ACTIVITYCODES IS NULL
                                           )
               WHEN main.[Contract End] IS NULL                    )
AND main.[Contract Type] LIKE '%Main%' THEN 1                          ELSE)
0 END                 ) =    1Main
       ) T
WHERE  t.issues <> ''
       --AND t.NUMORGID NOT IN (10012602)

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

ACTIVTY DEPARTMENT

Activity department of matching current payroll period

ACTIVITY VESSEL

Activity vessel 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