1. Get rid of all advertisements and get unlimited access to documents by upgrading to Premium Membership. Upgrade to Premium Now and also get a Premium Badge!

Need logic to implement

Discussion in 'Oracle HRMS & Payroll' started by vamsioracle, Aug 24, 2009.

  1. vamsioracle

    vamsioracle Forum Expert

    Messages:
    98
    Likes Received:
    1
    Trophy Points:
    140
    Hi Folks

    I have written a code to send emails from oracle. Below is the code. I have registered this is Apps and scheduled the concurrent program to run every day. Now i want implement logic, such that even though the concurrent program runs, it should not send email on Saturdays and Sundays.

    The due date in the below code is always the next_day of the day I apply leave. It can be Saturday/Sunday. So my package is dependent on due date.


    Code (SQL):

    CREATE OR REPLACE PACKAGE BODY apps.cbtt_loa_rem_sup_pkg
    AS
       PROCEDURE loa_rem_sup_mail (errbuf OUT VARCHAR2, retcode OUT VARCHAR2)
       IS
          l_transaction_id               VARCHAR2 (2000);
          l_person_name                  VARCHAR2 (240);
          l_itemtype                     VARCHAR2 (5)        := 'HRSSA';
          l_itemkey                      VARCHAR2 (10);
          conn                           UTL_SMTP.connection;
          crlf                           VARCHAR2 (2)      := CHR (13)
                                                              || CHR (10);
          mesg                           VARCHAR2 (4000);
          usrname                        VARCHAR2 (30);
          l_usraddr                      VARCHAR2 (100);
          l_user_name                    VARCHAR2 (240);
          subj                           VARCHAR2 (100)
                                            := 'has applied for Leave of Absence';
          BODY                           VARCHAR2 (4000);
          l_state                        VARCHAR2 (10);
          addrlist                       addresslist_tab;
          addrcnt                        BINARY_INTEGER      := 0;
          l_current_forward_to_id        NUMBER              := 0;
          l_creator_person_id            NUMBER              := 0;
          l_position_name                VARCHAR2 (100);
          l_absence_attendance_type_id   NUMBER;
          l_absence_days                 NUMBER;
          l_date_end                     DATE;
          l_date_start                   DATE;
          l_absence_name                 VARCHAR2 (100);
          l_manager_id                   NUMBER;
          l_supervisor_name              VARCHAR2 (240);
          temp_var1                      VARCHAR2 (200);
          temp_superviosr_id             VARCHAR2 (200);
          temp_var3                      VARCHAR2 (100);

          CURSOR cur_pending_transactions
          IS
             SELECT hat.transaction_id, hat.item_key, wias.due_date,
                    hat.transaction_effective_date
               FROM hr_api_transactions hat, wf_item_activity_statuses wias
              WHERE hat.item_type = 'HRSSA'
                AND hat.item_type = wias.item_type
                AND hat.item_key = wias.item_key
                AND hat.process_name = 'HR_LOA_JSP_PRC'
                AND hat.STATUS = 'Y'                      ----Pending For Approval
                AND TO_DATE (wias.due_date) < SYSDATE
                AND TRUNC (transaction_effective_date) >= TRUNC (SYSDATE - 5);

          CURSOR cur_email_address (cp_person_id NUMBER)
          IS
             SELECT DISTINCT papf.full_name, fu.email_address
                        FROM fnd_user fu, per_all_people_f papf
                       WHERE papf.person_id = cp_person_id
                         AND papf.person_id = fu.employee_id
                         AND TRUNC (SYSDATE) BETWEEN effective_start_date
                                                 AND effective_end_date;

          CURSOR cur_full_name (cp_person_id NUMBER)
          IS
             SELECT DISTINCT full_name
                        FROM per_all_people_f
                       WHERE person_id = cp_person_id
                         AND business_group_id = 81
                         AND TRUNC (SYSDATE) BETWEEN effective_start_date
                                                 AND effective_end_date;

          CURSOR cur_absence_details (
             cp_transaction_id   NUMBER,
             cp_absence_par      VARCHAR2
          )
          IS
             SELECT DISTINCT NAME,
                             DECODE (datatype,
                                     'NUMBER', TO_CHAR (number_value),
                                     'DATE', TO_CHAR (date_value, 'DD-MON-YYYY'),
                                     NULL
                                    ) VALUE
                        FROM hr_api_transactions hat,
                             hr_api_transaction_steps hats,
                             hr_api_transaction_values hatv
                       WHERE hat.transaction_id = cp_transaction_id
                         AND hat.transaction_id = hats.transaction_id
                         AND hats.transaction_step_id = hatv.transaction_step_id
                         AND hatv.NAME = cp_absence_par;

          CURSOR cur_selected_person_id (cp_transaction_id NUMBER)
          IS
             SELECT creator_person_id
               FROM hr_api_transactions hat
              WHERE hat.transaction_id = cp_transaction_id;
                          --- changed to creator_person_id from selector_person_id

          CURSOR cur_hr_person_id
          IS
             SELECT DISTINCT person_id, NAME
                        FROM per_all_assignments_f paaf, hr_all_positions_f hapf
                       WHERE hapf.position_id = paaf.position_id
                         AND hapf.NAME = '87.Assistant Manager,HR.'
                         AND paaf.business_group_id = 81
                         AND TRUNC (SYSDATE) BETWEEN paaf.effective_start_date
                                                 AND paaf.effective_end_date
                         AND TRUNC (SYSDATE) BETWEEN hapf.effective_start_date
                                                 AND hapf.effective_end_date;

          CURSOR cur_absence_name (cp_attendance_type_id NUMBER)
          IS
             SELECT NAME
               FROM per_absence_attendance_types
              WHERE absence_attendance_type_id = cp_attendance_type_id
                AND business_group_id = 81;
       BEGIN
          FOR rec_pending IN cur_pending_transactions
          LOOP
             l_transaction_id := rec_pending.transaction_id;
             l_itemkey := rec_pending.item_key;
             l_current_forward_to_id :=
                NVL
                   (wf_engine.getitemattrnumber (itemtype      => l_itemtype,
                                                 itemkey       => l_itemkey,
                                                 aname         => 'FORWARD_TO_PERSON_ID'
                                                ),
                    wf_engine.getitemattrnumber (itemtype      => l_itemtype,
                                                 itemkey       => l_itemkey,
                                                 aname         => 'CREATOR_PERSON_ID'
                                                )
                   );

             FOR rec_person_id IN cur_selected_person_id (l_transaction_id)
             LOOP
                l_creator_person_id := rec_person_id.creator_person_id;
                     --changed to creator from selected on jan 5th,vamsidhar pala
             END LOOP;

             FOR rec_full_name IN cur_full_name (l_creator_person_id)
             LOOP
                l_person_name := rec_full_name.full_name;
             END LOOP;

             FOR rec_absence IN
                cur_absence_details (l_transaction_id,
                                     'P_ABSENCE_ATTENDANCE_TYPE_ID'
                                    )
             LOOP
                l_absence_attendance_type_id := rec_absence.VALUE;
             END LOOP;

             FOR rec_absence_name IN
                cur_absence_name (l_absence_attendance_type_id)
             LOOP
                l_absence_name := rec_absence_name.NAME;
             END LOOP;

             FOR rec_absence IN cur_absence_details (l_transaction_id,
                                                     'P_ABSENCE_DAYS'
                                                    )
             LOOP
                l_absence_days := rec_absence.VALUE;
             END LOOP;

             FOR rec_absence IN cur_absence_details (l_transaction_id,
                                                     'P_DATE_START'
                                                    )
             LOOP
                l_date_start := rec_absence.VALUE;
             END LOOP;

             FOR rec_absence IN cur_absence_details (l_transaction_id,
                                                     'P_DATE_END'
                                                    )
             LOOP
                l_date_end := rec_absence.VALUE;
             END LOOP;

    ---------------------------------------------------------------------------------------------------------------------------
             IF TRUNC (SYSDATE) = TRUNC (rec_pending.due_date)
             THEN
                FOR i IN 1 .. 2
                LOOP
                   IF (i = 1)
                   THEN
                      FOR rec_person IN
                         cur_email_address (l_current_forward_to_id)
                      LOOP
                         l_usraddr := rec_person.email_address;
                         l_user_name := rec_person.full_name;
                      END LOOP;

    ---changed by vamsi on 5th january 2009
                      SELECT DISTINCT supervisor_id
                                 INTO temp_superviosr_id
                                 FROM per_all_people_f a, per_all_assignments_f b
                                WHERE a.person_id = b.person_id
                                  AND a.person_id = l_creator_person_id
                                  AND TRUNC (b.effective_end_date) >
                                                                   TRUNC (SYSDATE);

                      SELECT DISTINCT email_address
                                 INTO temp_var3
                                 FROM fnd_user
                                WHERE employee_id = temp_superviosr_id;

                      l_usraddr := temp_var3;
                      BODY :=
                            crlf
                         || l_user_name
                         || crlf
                         || crlf
                         || 'Mr./Ms./Mrs '
                         || l_person_name
                         || ' submitted an application for '
                         || crlf
                         || crlf
                         || 'Leave Type   : '
                         || SUBSTR (l_absence_name, 6)
                         || crlf
                         || 'From Date    : '
                         || l_date_start
                         || crlf
                         || 'To Date      : '
                         || l_date_end
                         || crlf
                         || 'Duration     : '
                         || l_absence_days
                         || ' day(s)'
                         || crlf
                         || 'on '
                         || TO_CHAR (rec_pending.transaction_effective_date,
                                     'DD-MON-YYYY'
                                    )
                         || crlf
                         || crlf
                         || 'Please ensure that the application is processed within 24 hours of receipt of this reminder.';
                      conn := UTL_SMTP.open_connection ('CBMS1', 25);
                      UTL_SMTP.helo (conn, 'CBMS1');
                      UTL_SMTP.mail (conn, l_usraddr);
                      UTL_SMTP.rcpt (conn, l_usraddr);
                      addrcnt := addrcnt + 1;
                      addrlist (addrcnt) :=
                                         'To: ' || '<' || l_usraddr || '>' || crlf;
                      mesg :=
                            'Date: '
                         || TO_CHAR (SYSDATE, 'dd Mon yy hh24:mi:ss')
                         || crlf
                         || 'From: '
                         || 'CBTT Oracle Applications Alert'
                         || ' <applmgr@CBMS1>'
                         || crlf
                         || 'Subject: '
                         || 'REMINDER: Pending for Approval of Leave of Absence for '
                         || l_person_name
                         || crlf;

                      FOR i IN 1 .. addrcnt
                      LOOP
                         mesg := mesg || addrlist (i);
                      END LOOP;

                      mesg := mesg || '' || crlf || BODY;
                      UTL_SMTP.DATA (conn, mesg);
                      UTL_SMTP.quit (conn);
                      l_usraddr := '';
                      l_user_name := '';
                      addrcnt := 0;
                   ELSIF (i = 2)
                   THEN
                      l_manager_id :=
                         TO_NUMBER
                            (SUBSTR
                                 (cbtt_ame_pkg.cbtt_ame_manager (l_transaction_id),
                                  11
                                 )
                            );

                      FOR rec_person IN cur_email_address (l_manager_id)
                      LOOP
                         l_usraddr := rec_person.email_address;
                         l_user_name := rec_person.full_name;
                      END LOOP;

                      FOR rec_person IN cur_email_address (l_current_forward_to_id)
                      LOOP
                         l_supervisor_name := rec_person.full_name;
                      END LOOP;

                      BODY :=
                            crlf
                         || l_user_name
                         || crlf
                         || crlf
                         || 'Mr./Ms./Mrs '
                         || l_person_name
                         || ' submitted an application for '
                         || crlf
                         || crlf
                         || 'Leave Type   : '
                         || SUBSTR (l_absence_name, 6)
                         || crlf
                         || 'From Date    : '
                         || l_date_start
                         || crlf
                         || 'To Date      : '
                         || l_date_end
                         || crlf
                         || 'Duration     : '
                         || l_absence_days
                         || ' day(s)'
                         || crlf
                         || 'on '
                         || TO_CHAR (rec_pending.transaction_effective_date,
                                     'DD-MON-YYYY '
                                    )
                         || crlf
                         || crlf
                         || 'The Supervisor has not yet processed the application. Kindly ensure that the Supervisor processes this application within 24 hours of receipt of this reminder. ';
                      conn := UTL_SMTP.open_connection ('CBMS1', 25);
                      UTL_SMTP.helo (conn, 'CBMS1');
                      UTL_SMTP.mail (conn, l_usraddr);
                      UTL_SMTP.rcpt (conn, l_usraddr);
                      addrcnt := addrcnt + 1;
                      addrlist (addrcnt) :=
                                         'To: ' || '<' || l_usraddr || '>' || crlf;
                      mesg :=
                            'Date: '
                         || TO_CHAR (SYSDATE, 'dd Mon yy hh24:mi:ss')
                         || crlf
                         || 'From: '
                         || 'CBTT Oracle Applications Alert'
                         || ' <applmgr@CBMS1>'
                         || crlf
                         || 'Subject: '
                         || 'REMINDER: Pending for Approval of Leave of Absence for '
                         || l_person_name
                         || crlf;

                      FOR i IN 1 .. addrcnt
                      LOOP
                         mesg := mesg || addrlist (i);
                      END LOOP;

                      mesg := mesg || '' || crlf || BODY;
                      UTL_SMTP.DATA (conn, mesg);
                      UTL_SMTP.quit (conn);
                      l_usraddr := '';
                      l_user_name := '';
                      addrcnt := 0;
                   END IF;
                END LOOP;
    ---------------------------------------------------------------------------------------------------------------------------
             ELSIF TRUNC ((SYSDATE) - rec_pending.due_date) = 1
             THEN
    ---email to the supervisor
                FOR rec_count IN 1 .. 3
                LOOP
                   IF rec_count = 1
                   THEN
                      FOR rec_person IN
                         cur_email_address (l_current_forward_to_id)
                      LOOP
                         l_usraddr := rec_person.email_address;
                         l_user_name := rec_person.full_name;
                      END LOOP;

    ---changed by vamsi on 5th january 2009
                      SELECT DISTINCT supervisor_id
                                 INTO temp_superviosr_id
                                 FROM per_all_people_f a, per_all_assignments_f b
                                WHERE a.person_id = b.person_id
                                  AND a.person_id = l_creator_person_id
                                  AND b.effective_end_date = '31-DEC-4712';

                      SELECT DISTINCT email_address
                                 INTO temp_var3
                                 FROM fnd_user
                                WHERE employee_id = temp_superviosr_id;

                      l_usraddr := temp_var3;
                      BODY :=
                            crlf
                         || l_user_name
                         || crlf
                         || crlf
                         || 'Mr./Ms./Mrs '
                         || l_person_name
                         || ' submitted an application for '
                         || crlf
                         || crlf
                         || 'Leave Type   : '
                         || SUBSTR (l_absence_name, 6)
                         || crlf
                         || 'From Date    : '
                         || l_date_start
                         || crlf
                         || 'To Date      : '
                         || l_date_end
                         || crlf
                         || 'Duration     : '
                         || l_absence_days
                         || ' day(s)'
                         || crlf
                         || 'on '
                         || TO_CHAR (rec_pending.transaction_effective_date,
                                     'DD-MON-YYYY'
                                    )
                         || crlf
                         || crlf
                         || 'However, you failed to process the application within the stipulated 48 hour period and have affected the efficiency of the system.

    The Departmental Manager has been advised of this delay and will liaise with you in this regard.  To ensure the integrity of the system, you are required to process the application via the system.'
    ;
                      conn := UTL_SMTP.open_connection ('CBMS1', 25);
                      UTL_SMTP.helo (conn, 'CBMS1');
                      UTL_SMTP.mail (conn, l_usraddr);
                      UTL_SMTP.rcpt (conn, l_usraddr);
                      addrcnt := addrcnt + 1;
                      addrlist (addrcnt) :=
                                         'To: ' || '<' || l_usraddr || '>' || crlf;
                      mesg :=
                            'Date: '
                         || TO_CHAR (SYSDATE, 'dd Mon yy hh24:mi:ss')
                         || crlf
                         || 'From: '
                         || 'CBTT Oracle Applications Alert'
                         || ' <applmgr@CBMS1>'
                         || crlf
                         || 'Subject: '
                         || 'REMINDER: Pending for Approval of Leave of Absence for '
                         || l_person_name
                         || crlf;

                      FOR i IN 1 .. addrcnt
                      LOOP
                         mesg := mesg || addrlist (i);
                      END LOOP;

                      mesg := mesg || '' || crlf || BODY;
                      UTL_SMTP.DATA (conn, mesg);
                      UTL_SMTP.quit (conn);
                      l_usraddr := '';
                      l_user_name := '';
                      addrcnt := 0;
                   ELSIF rec_count = 2
                   THEN     ---email to employee who has submitted the application
                      FOR i IN 1 .. 2
                      LOOP
                         IF (i = 1)
                         THEN
                            FOR rec_person IN
                               cur_email_address (l_creator_person_id)
                            LOOP
                               l_usraddr := rec_person.email_address;
                               l_user_name := rec_person.full_name;
                            END LOOP;

                            BODY :=
                                  crlf
                               || l_user_name
                               || crlf
                               || crlf
                               || 'Your application for '
                               || crlf
                               || crlf
                               || 'Leave Type   : '
                               || SUBSTR (l_absence_name, 6)
                               || crlf
                               || 'From Date    : '
                               || l_date_start
                               || crlf
                               || 'To Date      : '
                               || l_date_end
                               || crlf
                               || 'Duration     : '
                               || l_absence_days
                               || ' day(s)'
                               || crlf
                               || crlf
                               || 'submitted on '
                               || TO_CHAR (rec_pending.transaction_effective_date,
                                           'DD-MON-YYYY'
                                          )
                               || crlf
                               || crlf
                               || 'was not processed by your Supervisor within the stipulated 48 hour period.'
                               || crlf
                               || crlf
                               || 'This has affected the efficiency of the system.'
                               || crlf
                               || crlf
                               || 'Please liaise with your Supervisor to ensure that your application is immediately processed.';
                            conn := UTL_SMTP.open_connection ('CBMS1', 25);
                            UTL_SMTP.helo (conn, 'CBMS1');
                            UTL_SMTP.mail (conn, l_usraddr);
                            UTL_SMTP.rcpt (conn, l_usraddr);
                            addrcnt := addrcnt + 1;
                            addrlist (addrcnt) :=
                                         'To: ' || '<' || l_usraddr || '>' || crlf;
                            mesg :=
                                  'Date: '
                               || TO_CHAR (SYSDATE, 'dd Mon yy hh24:mi:ss')
                               || crlf
                               || 'From: '
                               || 'CBTT Oracle Applications Alert'
                               || ' <applmgr@CBMS1>'
                               || crlf
                               || 'Subject: '
                               || 'REMINDER: Pending for Approval of Leave of Absence for '
                               || l_person_name
                               || crlf;

                            FOR i IN 1 .. addrcnt
                            LOOP
                               mesg := mesg || addrlist (i);
                            END LOOP;

                            mesg := mesg || '' || crlf || BODY;
                            UTL_SMTP.DATA (conn, mesg);
                            UTL_SMTP.quit (conn);
                            l_usraddr := '';
                            l_user_name := '';
                            addrcnt := 0;
                         ELSIF rec_count = 3
                         THEN
    ---email to Departmental manager of the employee who has submitted the application
                            l_manager_id :=
                               TO_NUMBER
                                  (SUBSTR
                                      (cbtt_ame_pkg.cbtt_ame_manager
                                                                 (l_transaction_id),
                                       11
                                      )
                                  );

                            FOR rec_person IN cur_email_address (l_manager_id)
                            LOOP
                               l_usraddr := rec_person.email_address;
                               l_user_name := rec_person.full_name;
                            END LOOP;

                            FOR rec_person IN
                               cur_email_address (l_current_forward_to_id)
                            LOOP
                               l_supervisor_name := rec_person.full_name;
                            END LOOP;

                            BODY :=
                                  crlf
                               || l_user_name
                               || crlf
                               || crlf
                               || 'Mr./Ms./Mrs '
                               || l_person_name
                               || ' submitted an application for '
                               || crlf
                               || crlf
                               || 'Leave Type   : '
                               || SUBSTR (l_absence_name, 6)
                               || crlf
                               || 'From Date    : '
                               || l_date_start
                               || crlf
                               || 'To Date      : '
                               || l_date_end
                               || crlf
                               || 'Duration     : '
                               || l_absence_days
                               || ' day(s)'
                               || crlf
                               || 'on '
                               || TO_CHAR (rec_pending.transaction_effective_date,
                                           'DD-MON-YYYY '
                                          )
                               || crlf
                               || crlf
                               || 'Mr./Ms./Mrs '
                               || l_supervisor_name
                               || ' has not processed the application within the stipulated 48 hour period and this has affected the efficiency of the system. You intervention is required. Kindly instruct the Supervisor to immediately process the application. If the Supervisor is unable to electronically process the application at this time, kindly email the employee advising whether you have approved or rejected the application and submit a copy of the email to the Assistant Manger, HR. The supervisor will be required to approve the application via Self Service at a later date.';
                            conn := UTL_SMTP.open_connection ('CBMS1', 25);
                            UTL_SMTP.helo (conn, 'CBMS1');
                            UTL_SMTP.mail (conn, l_usraddr);
                            UTL_SMTP.rcpt (conn, l_usraddr);
                            addrcnt := addrcnt + 1;
                            addrlist (addrcnt) :=
                                         'To: ' || '<' || l_usraddr || '>' || crlf;
                            mesg :=
                                  'Date: '
                               || TO_CHAR (SYSDATE, 'dd Mon yy hh24:mi:ss')
                               || crlf
                               || 'From: '
                               || 'CBTT Oracle Applications Alert'
                               || ' <applmgr@CBMS1>'
                               || crlf
                               || 'Subject: '
                               || 'REMINDER: Pending for Approval of Leave of Absence for '
                               || l_person_name
                               || crlf;

                            FOR i IN 1 .. addrcnt
                            LOOP
                               mesg := mesg || addrlist (i);
                            END LOOP;

                            mesg := mesg || '' || crlf || BODY;
                            UTL_SMTP.DATA (conn, mesg);
                            UTL_SMTP.quit (conn);
                            l_usraddr := '';
                            l_user_name := '';
                            addrcnt := 0;
    ----------added on 15th august 2009
                         ELSIF (1 = 2)
                         THEN
                            FOR rec_person IN
                               cur_email_address (l_creator_person_id)
                            LOOP
                               l_usraddr := rec_person.email_address;
                               l_user_name := rec_person.full_name;
                            END LOOP;

                            BODY :=
                                  crlf
                               || l_user_name
                               || crlf
                               || crlf
                               || 'Your application for '
                               || crlf
                               || crlf
                               || 'Leave Type   : '
                               || SUBSTR (l_absence_name, 6)
                               || crlf
                               || 'From Date    : '
                               || l_date_start
                               || crlf
                               || 'To Date      : '
                               || l_date_end
                               || crlf
                               || 'Duration     : '
                               || l_absence_days
                               || ' day(s)'
                               || crlf
                               || crlf
                               || 'submitted on '
                               || TO_CHAR (rec_pending.transaction_effective_date,
                                           'DD-MON-YYYY'
                                          )
                               || crlf
                               || crlf
                               || 'was not processed by your Supervisor within the stipulated 48 hour period.'
                               || crlf
                               || crlf
                               || 'This has affected the efficiency of the system.'
                               || crlf
                               || crlf
                               || 'Your Departmental Manager has been advised of this delay and will liaise with you, to advise whether your application has been approved or not';
                            conn := UTL_SMTP.open_connection ('CBMS1', 25);
                            UTL_SMTP.helo (conn, 'CBMS1');
                            UTL_SMTP.mail (conn, l_usraddr);
                            UTL_SMTP.rcpt (conn, l_usraddr);
                            addrcnt := addrcnt + 1;
                            addrlist (addrcnt) :=
                                         'To: ' || '<' || l_usraddr || '>' || crlf;
                            mesg :=
                                  'Date: '
                               || TO_CHAR (SYSDATE, 'dd Mon yy hh24:mi:ss')
                               || crlf
                               || 'From: '
                               || 'CBTT Oracle Applications Alert'
                               || ' <applmgr@CBMS1>'
                               || crlf
                               || 'Subject: '
                               || 'REMINDER: Pending for Approval of Leave of Absence for '
                               || l_person_name
                               || crlf;

                            FOR i IN 1 .. addrcnt
                            LOOP
                               mesg := mesg || addrlist (i);
                            END LOOP;

                            mesg := mesg || '' || crlf || BODY;
                            UTL_SMTP.DATA (conn, mesg);
                            UTL_SMTP.quit (conn);
                            l_usraddr := '';
                            l_user_name := '';
                            addrcnt := 0;
                         END IF;
                      END LOOP;
                   END IF;
                END LOOP;
             END LOOP;
          END LOA_REM_SUP_MAIL;
       END CBTT_LOA_REM_SUP_PKG;
    /
     

    thanks
    vamsi
     
  2. apps_expert

    apps_expert Forum Expert

    Messages:
    325
    Likes Received:
    28
    Trophy Points:
    330
    Location:
    Chennai, India
    hi haven't really gone through your code but can't you just check for the sysdate and identify the day before sending the mail in the code?
     
  3. srinivas_apps

    srinivas_apps Active Member

    Messages:
    4
    Likes Received:
    1
    Trophy Points:
    65
    vamsi that was a nice code!!!

    couple of questions
    #1 why are you sending the leave notifications using pkgs i.e. database pkgs?
    #2 dont you have Leave Workflow which automatically sends notifications?

    talking about reminder notification you create a notification in existing workflow and use the function to set attribute for waiting and to trigger a notification.
     
  4. vamsioracle

    vamsioracle Forum Expert

    Messages:
    98
    Likes Received:
    1
    Trophy Points:
    140
    Hi Srinivas,

    Good, that to asked me y didn't I use the workflow instead. My client is on 11.5.9, with the oldest family pack. We have encountered a bug in the workflow, that doesn't trigger emails/notifications sometimes. As a result we have to integrate our custom packages in the workflow.
     
    Sadik likes this.