!!!Capture Approval Comments
This custom function can be called from a workflow to update a "Char" variable with the lastet "Comment" found on the approval detail record assosicated to the primary ID of the table in which theworkflow is being called.

Usercalc Example:  Send a notification to the employee stating the reason their leave request has been denied\\

The following UserCalc was written to capture the comments from the approval record if the LEAVE_APPROVAL is changed from "01-Awaiting Approval" to "99-Declined". The workflow product will determine the type of approval process the system will search for when triggered.

This is a 'Calculation' type UserCalc and will return the value of the wage rate plus premium rate to the appropriate benefit component. A workflow must be set up on [IMWA] for the email to be sent (example - EE_LV_DECLINE). A "Char" variable should be set up on the usercalc (example - DAPR_COMMENT). 

||LINE||CMD  ||TYPE 1 ||OPERAND 1        || OPER ||TYPE 2||OPERAND 2               || TYPE 3||OPERAND 3||IF GO TO||ELSE GO TO||NOTES        ||
| 100  | IF  |  CF    |UPDATING          |  EQ   |   B   | TRUE                    |        |          |200      |  99999    |              |
| 200  | IF  |  NV    |AAL.LEAVE_APPROVAL|  NE   |   OV  |  AAL.LEAVE_APPROVAL     |        |          |300      |  99999    |              |
| 300  | IF  |  NV    |AAL.LEAVE_APPROVAL|  EQ   |   A   |  99                     |        |          |400      |  99999    |              |
| 400  | LET |  V     |DAPR_COMMENT      |  EQ   |   CF  |  P2K_CF_GET_DAPR_COMMENT|        |          |1000     |           |              |
| 1000 | ACT |  AC    |EE_LV_DECLINE     |  LOG  |   $S  |  AS-OF-DATE             | RT     | Employee |99999    |           |See Sample IMWA Message Section      |
| 99999| EXIT|        |                  |       |       |                         |        |          |         |           |              |

!!Sample IMWA message
This is a sample of the message that should be added in the usercalc via the workflow action (ACT). This message should be found in the "NOTES" section in the usercalc

%%prettify
{{{
<<EID.FIRST_NAME>> <<EID.LAST_NAME>>, 

    Your leave request for Vacation starting <<AAL.START_DATE>> has been declined.

Reason: <<DAPR_COMMENT>>}}}%%

!!Function Logic
%%prettify
{{{
create or replace FUNCTION       "P2K_CF_GET_DAPR_COMMENT" RETURN VARCHAR2 AS

  CURSOR c_dapr1(pc_approval_type VARCHAR2, pc_reference_id NUMBER) IS
    SELECT dapr.comments
      FROM p2k_cm_approval_records dapr,
           p2k_cm_approval_processes dapp
     WHERE dapr.dapp_id = dapp.id
       AND (dapp.approval_type = pc_approval_type
          OR (pc_approval_type = 'BT' AND dapp.approval_type IN('02','03')))
       AND dapr.reference_id  = pc_reference_id
       AND dapr.approval_status NOT IN('01','20','80','95')  --don't pick up Approval Cancelled, Future Approval, Approval Historic, or Declined Historic
     ORDER BY dapr.change_date DESC
       ;

  v_approval_type VARCHAR2(2);
  v_reference_id  NUMBER;
  v_comments      VARCHAR2(4000);

BEGIN
  P2K_PMWRKFLW.SMERL('In P2K_CF_GET_DAPR_COMMENT - WF Table Alias: ' || p2k_pmwrkflw.ktable_alias);

  IF p2k_pmwrkflw.ktable_alias = 'PBT' THEN
    v_approval_type := 'BT';
    v_reference_id  := p2k_pmwrkflw.m_new_PBT.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'SRV' THEN
    v_approval_type := '04';
    v_reference_id  := p2k_pmwrkflw.m_new_SRV.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'SPA' THEN
    v_approval_type := '05';
    v_reference_id  := p2k_pmwrkflw.m_new_SPA.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'XXX' THEN
    v_approval_type := '06';
--    v_reference_id  := p2k_pmwrkflw.m_new_XXX.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'RPO' THEN
    v_approval_type := '07';
    v_reference_id  := p2k_pmwrkflw.m_new_RPO.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'RAP' THEN
    v_approval_type := '08';
    v_reference_id  := p2k_pmwrkflw.m_new_RAP.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'CDP' THEN
    v_approval_type := '09';
--    v_reference_id  := p2k_pmwrkflw.m_new_CDP.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'CDA' THEN
    v_approval_type := '10';
--    v_reference_id  := p2k_pmwrkflw.m_new_CDA.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'CRS' THEN
    v_approval_type := '11';
--    v_reference_id  := p2k_pmwrkflw.m_new_CRS.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'CRSC' THEN
    v_approval_type := '12';
--    v_reference_id  := p2k_pmwrkflw.m_new_CRSC.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'CTR' THEN
    v_approval_type := '13';
--    v_reference_id  := p2k_pmwrkflw.m_new_CTR.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'BEL' THEN
    v_approval_type := '14';
    v_reference_id  := p2k_pmwrkflw.m_new_BEL.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'RAS' THEN
    v_approval_type := '15';
--    v_reference_id  := p2k_pmwrkflw.m_new_RAS.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'CRSE' THEN
    v_approval_type := '16';
    v_reference_id  := p2k_pmwrkflw.m_new_CRSE.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'PTS' THEN
    v_approval_type := '17';
    v_reference_id  := p2k_pmwrkflw.m_new_PTS.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'YYY' THEN
    v_approval_type := '18';
--    v_reference_id  := p2k_pmwrkflw.m_new_YYY.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'AAL' THEN
    v_approval_type := '19';
    v_reference_id  := p2k_pmwrkflw.m_new_AAL.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'TCE' THEN
    v_approval_type := '20';
    v_reference_id  := p2k_pmwrkflw.m_new_TCE.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'RED' THEN
    v_approval_type := '21';
--    v_reference_id  := p2k_pmwrkflw.m_new_RED.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'REF' THEN
    v_approval_type := '22';
--    v_reference_id  := p2k_pmwrkflw.m_new_REF.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'RWH' THEN
    v_approval_type := '23';
--    v_reference_id  := p2k_pmwrkflw.m_new_RWH.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'BOEE' THEN
    v_approval_type := '24';
    v_reference_id  := p2k_pmwrkflw.m_new_BOEE.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'DPS' THEN
    v_approval_type := '25';
--    v_reference_id  := p2k_pmwrkflw.m_new_DPS.id;
  ELSIF p2k_pmwrkflw.ktable_alias = 'PTSE' THEN
    v_approval_type := '26';
--    v_reference_id  := p2k_pmwrkflw.m_new_PTSE.id;
  END IF;

  P2K_PMWRKFLW.SMERL('In P2K_CF_GET_DAPR_COMMENT - Approval Type: ' || v_approval_type ||
      ' / Reference Id: ' || v_reference_id);

  IF v_approval_type IS NOT NULL THEN
    OPEN c_dapr1(v_approval_type,v_reference_id);
    FETCH c_dapr1 INTO v_comments;
    CLOSE c_dapr1;
  END IF;

  RETURN v_comments;
END P2K_CF_GET_DAPR_COMMENT;
}}}
/%%


----
![Notes|Edit:Internal.P2K_CF_GET_DAPR_COMMENT] 	
[{InsertPage page='Internal.P2K_CF_GET_DAPR_COMMENT' default='Click to create a new notes page'}]