Monday, 18 March 2019

API To Update Contracts

DECLARE
   CURSOR c_contract
   IS
        SELECT DISTINCT pap.employee_number,
                        pap.person_id,
                        pcf.status,
                        pcf.duration,
                        pcf.duration_units,
                        pcf.CONTRACTUAL_JOB_TITLE,
                        pcf.TYPE,
                        CTR_INFORMATION1 old_emp_status,
                        pcf.CTR_INFORMATION_CATEGORY,
                        con.UPDATECONTRACTTYPE employment_status,
                        pcf.contract_id,
                        pcf.OBJECT_VERSION_NUMBER,
                        pcf.effective_start_date,
                        pcf.REFERENCE,
                        con.err_msg,
                        con.flag
          FROM XX_TICKET_TMP con, per_all_people_f pap, per_contracts_f pcf
         WHERE     pap.employee_number = con.empno
               AND TRUNC (SYSDATE) BETWEEN pap.effective_start_date
                                       AND pap.effective_end_date
               AND TRUNC (SYSDATE) BETWEEN pcf.effective_start_date
                                       AND pcf.Effective_end_date
               AND pcf.person_id = pap.person_id
               AND pcf.status = 'A-ACTIVE'
               AND con.UPDATECONTRACTTYPE NOT IN
                      (SELECT DECODE (CTR_INFORMATION1,
                                      'BACHELOR_STATUS', 'Bachelor Status',
                                      'FAMILY_STATUS', 'Family Status')
                         FROM per_contracts_f pc
                        WHERE     TRUNC (SYSDATE) BETWEEN pc.effective_start_date
                                                      AND pc.Effective_end_date
                              AND pc.person_id = pap.person_id
                              AND pc.status = 'A-ACTIVE')
               AND flag IS NULL
     
      ORDER BY 1;


   lc_c_contract             c_contract%ROWTYPE;
   l_effective_start_date    DATE;
   l_effective_end_date      DATE;
   l_object_version_number   NUMBER;
   error_desc                VARCHAR2 (240);
   lv_contract_flag          CHAR (1);
   --l_seq                     VARCHAR2 (20);
   --v_type                    VARCHAR2 (80);
   --  v_status                  VARCHAR2 (30);
   v_emp_status              VARCHAR2 (80);
BEGIN
   OPEN c_contract;

   LOOP
      FETCH c_contract INTO lc_c_contract;

      EXIT WHEN c_contract%NOTFOUND;

      BEGIN
         SELECT lookup_code
           INTO v_emp_status
           FROM fnd_lookup_values_vl
          WHERE     lookup_type = 'SA_EMPLOYMENT_STATUS'
                AND meaning = lc_c_contract.employment_status;
      EXCEPTION
         WHEN OTHERS
         THEN
            error_desc := 'Invalid Employment Status-' || SQLERRM;


            UPDATE XX_TICKET_TMP
               SET err_msg = error_desc, flag = 'N'
             WHERE TRIM (empno) = lc_c_contract.employee_number;
      END;



      /*============================API Starts===================================*/



      BEGIN
         hr_contract_api.update_contract (
            p_validate                   => FALSE,
            p_contract_id                => lc_c_contract.contract_id,
            p_effective_start_date       => l_effective_start_date,
            p_effective_end_date         => l_effective_end_date,
            p_object_version_number      => lc_c_contract.object_version_number,
            p_person_id                  => lc_c_contract.person_id,
            p_reference                  => lc_c_contract.REFERENCE, --  ,p_type                   =>
            p_type                       => lc_c_contract.TYPE,
            p_status                     => lc_c_contract.status,
            p_duration                   => lc_c_contract.duration,
            p_duration_units             => lc_c_contract.duration_units,
            p_contractual_job_title      => lc_c_contract.contractual_job_title,
            p_ctr_information_category   => lc_c_contract.CTR_INFORMATION_CATEGORY,
            p_ctr_information1           => v_emp_status,
            p_effective_date             => SYSDATE,
            p_datetrack_mode             => 'CORRECTION');



         IF lc_c_contract.contract_id IS NOT NULL
         THEN
            lv_contract_flag := 'Y';
            error_desc := 'NO ERROR';
         END IF;


         IF lv_contract_flag = 'Y'
         THEN
            UPDATE XX_TICKET_TMP
               SET err_msg = error_desc, flag = lv_contract_flag
             WHERE TRIM (empno) = lc_c_contract.employee_number;
         ELSE
            error_desc := error_desc || SQLERRM;

            UPDATE XX_TICKET_TMP
               SET err_msg = error_desc, flag = 'N'
             WHERE TRIM (empno) = lc_c_contract.employee_number;
         END IF;

         DBMS_OUTPUT.put_line ('Contracts Uploaded Successfully:! ');
         DBMS_OUTPUT.put_line (
            'CONTRACT ID    : ' || lc_c_contract.contract_id);
      EXCEPTION
         WHEN OTHERS
         THEN
            lv_contract_flag := 'N';
            error_desc := error_desc || SQLERRM;

            UPDATE XX_TICKET_TMP
               SET err_msg = error_desc, flag = lv_contract_flag
             WHERE TRIM (empno) = lc_c_contract.employee_number;

            DBMS_OUTPUT.put_line (SQLERRM);
      END;

      -- l_contract_id := '';

      l_object_version_number := '';
      l_effective_start_date := '';
      l_effective_end_date := '';
      error_desc := '';
      lv_contract_flag := '';
   --COMMIT;
   END LOOP;
   CLOSE c_contract;
--DBMS_OUTPUT.PUT_LINE('LOCATION ID        : '||L_LOCATION_ID);

EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line (SQLERRM);
END;

2 comments:

  1. Every business needs to have a customer loyalty program. If you are curious to know more about transparent pricing model, Check out this site.

    ReplyDelete
  2. I haven’t any word to appreciate this post.....Really i am impressed from this post....the person who create this post it was a great human..thanks for shared this with us. kündigen

    ReplyDelete