Tuesday, 11 February 2020

Hrms Technical API's - (API to Create the New Payroll)

***This API used to create the new payroll.

CREATE OR REPLACE PROCEDURE xxse_create_payroll (
   p_errbuf      OUT      VARCHAR2,
   p_retcode     OUT      VARCHAR2,
   p_emp_num     IN       VARCHAR2,
   p_from_date   IN       VARCHAR2,
   p_to_date     IN       VARCHAR2
)
-- =============================================================================
--
--  FILENAME
--   XXSE_CREATE_PAYROLL.prc
--
--  DESCRIPTION
--    SEERTREE: Create the Payroll
--
-- -----------------------------------------------------------------------------
--
-- CHANGE LIST
-- ===========
--
-- VERSION DATE        AUTHOR                COMMENT
-- -------+-----------+--------------------+------------------------------------
-- 1.1     30-Jan-2020  Subba Reddy        Created.
--
IS
   --Getting distinct Job codes from the Timesheet table for the employee
   CURSOR c1
   IS
      SELECT DISTINCT x.job_code, xc.timesheet_type, pc.consolidation_set_id
                 FROM sawaeed.xx_upload_final_timesheet x,
                      sawaeed.xx_customer_interface xc,
                      pay_consolidation_sets pc
                WHERE x.batch_id = xc.batch_id
                  AND xc.timesheet_type = pc.consolidation_set_name
                  AND x.employee_number = NVL (p_emp_num, x.employee_number)
                  AND x.gl_date BETWEEN TO_DATE (p_from_date,
                                                 'yyyy/mm/dd hh24:mi:ss'
                                                )
                                    AND TO_DATE (p_to_date,
                                                 'yyyy/mm/dd hh24:mi:ss'
                                                );

   --
   l_cnt                           NUMBER;
   --
   l_payroll_id                    NUMBER;
   l_org_pay_method_usage_id       NUMBER;
   l_comment_id                    NUMBER;
   l_prl_object_version_number     NUMBER;
   l_opm_object_version_number     NUMBER;
   l_prl_effective_start_date      DATE;
   l_prl_effective_end_date        DATE;
   l_opm_effective_start_date      DATE;
   l_opm_effective_end_date        DATE;
   l_cost_alloc_keyflex_id_out     NUMBER;
   l_susp_account_keyflex_id_out   NUMBER;
   l_soft_coding_keyflex_id_out    NUMBER;
   l_cost_concat_segments_out      NUMBER;
   l_susp_concat_segments_out      NUMBER;
   l_scl_concat_segments_out       NUMBER;
BEGIN
   FOR i IN c1
   LOOP
      --Checking Payroll exist or not
      BEGIN
         l_cnt := NULL;

         SELECT COUNT (*)
           INTO l_cnt
           FROM pay_payrolls_f
          WHERE 1 = 1 AND payroll_name = i.job_code;
      EXCEPTION
         WHEN OTHERS
         THEN
            l_cnt := 0;
      END;

      IF l_cnt > 0
      THEN
         fnd_file.put_line (fnd_file.LOG, 'Payroll Exist:' || i.job_code);
      ELSE
         BEGIN
            pay_payroll_api.create_payroll
               (p_validate                         => FALSE,
                p_effective_date                   => TO_DATE ('01-Jan-2000'),
                p_payroll_name                     => i.job_code,
                p_default_payment_method_id        => 61,
                p_consolidation_set_id             => i.consolidation_set_id,
                --PAY_CONSOLIDATION_SETS
                p_period_type                      => 'Calendar Month',
                p_first_period_end_date            => TO_DATE ('31-DEC-2018'),
                p_number_of_years                  => 7,
                p_payroll_type                     => NULL,
                p_pay_date_offset                  => 0,
                p_direct_deposit_date_offset       => 0,
                p_pay_advice_date_offset           => 0,
                p_cut_off_date_offset              => 0,
                p_midpoint_offset                  => 0,
                --Output variables
                p_payroll_id                       => l_payroll_id,
                p_org_pay_method_usage_id          => l_org_pay_method_usage_id,
                p_prl_object_version_number        => l_prl_object_version_number,
                p_opm_object_version_number        => l_opm_object_version_number,
                p_prl_effective_start_date         => l_prl_effective_start_date,
                p_prl_effective_end_date           => l_prl_effective_end_date,
                p_opm_effective_start_date         => l_opm_effective_start_date,
                p_opm_effective_end_date           => l_opm_effective_end_date,
                p_comment_id                       => l_comment_id,
                p_cost_alloc_keyflex_id_out        => l_cost_alloc_keyflex_id_out,
                p_susp_account_keyflex_id_out      => l_susp_account_keyflex_id_out,
                p_soft_coding_keyflex_id_out       => l_soft_coding_keyflex_id_out,
                p_cost_concat_segments_out         => l_cost_concat_segments_out,
                p_susp_concat_segments_out         => l_susp_concat_segments_out,
                p_scl_concat_segments_out          => l_scl_concat_segments_out
               );
            COMMIT;
         EXCEPTION
            WHEN OTHERS
            THEN
               fnd_file.put_line (fnd_file.LOG,
                                     'Error at Payroll Creation API :'
                                  || i.job_code
                                  || SQLERRM
                                 );
         END;
      END IF;
   END LOOP;
EXCEPTION
   WHEN OTHERS
   THEN
      fnd_file.put_line (fnd_file.LOG,
                         'Error at Payroll Creation:' || SQLERRM
                        );

END;

No comments:

Post a Comment

API to Delete Assignment Set

*** Before going to Delete Assignment Set first we have to delete the Assignment Amendments after that only we have to delete the Assignmen...