Advertisement
tercnem

Untitled

Apr 20th, 2020
1,246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION f_automatic_credit_alloc_ar(character varying, bigint, bigint, bigint, bigint, character varying)
  2.   RETURNS void AS
  3. $BODY$
  4. DECLARE
  5.     pSessionId              alias for $1;
  6.     pTenantId               alias for $2;
  7.     pInvoiceArId            alias for $3; -- invoice_ar_id dokumen debt note ar
  8.     pInvoiceArBalanceId     alias for $4; -- invoice_ar_balance_id saldo dp
  9.     pUserId                 alias for $5;
  10.     pDatetime               alias for $6;
  11.  
  12.     vAllocationArId         bigint;
  13.     vAmount                 numeric;
  14.     vDocTypeCreditAllocAr   bigint;
  15.     vDocTypeDebtNoteAr      bigint;
  16.     vEmptyId                bigint;
  17.     vEmptyValue             character varying;
  18.     vInProgress             character varying;
  19.     vStatusDocApproved      character varying;
  20.     vParamKey               character varying;
  21.     vFlowAllocCreditArId    bigint;
  22.     vSchemeAllocCreditAr    character varying;
  23. BEGIN
  24.    
  25.     vEmptyId := -99;
  26.     vEmptyValue := '';
  27.     vInProgress := 'I';
  28.     vStatusDocApproved := 'APPROVED';
  29.     vDocTypeDebtNoteAr := 241;
  30.     vDocTypeCreditAllocAr := 262;
  31.     vParamKey := 'allocCreditArId';
  32.     vSchemeAllocCreditAr := 'DH02';
  33.    
  34.     SELECT nextval('fi_allocation_ar_seq') INTO vAllocationArId;
  35.        
  36.     SELECT amount INTO vAmount
  37.     FROM fi_invoice_ar_balance
  38.     WHERE invoice_ar_balance_id = pInvoiceArBalanceId;
  39.    
  40.     INSERT INTO fi_allocation_ar(
  41.     allocation_ar_id, tenant_id, doc_type_id, doc_no, doc_date, ou_id,
  42.     partner_id, partner_bank_id, ext_doc_no, ext_doc_date, ref_doc_type_id,
  43.     ref_id, due_date, curr_code, debit_amount, credit_amount, payment_amount,
  44.     remark, status_doc, workflow_status, version, create_datetime,
  45.     create_user_id, update_datetime, update_user_id, ref_amount)
  46.     SELECT vAllocationArId, A.tenant_id, vDocTypeCreditAllocAr, A.doc_no, A.doc_date, A.ou_id,
  47.             A.partner_id, vEmptyId, vEmptyValue, vEmptyValue, A.doc_type_id,
  48.             A.invoice_ar_balance_id, A.doc_date, A.curr_code, -1 * A.amount, -1 * A.amount, 0,
  49.             vEmptyValue, vInProgress, vStatusDocApproved, 0, pDatetime,
  50.             pUserId, pDatetime, pUserId, -1 * A.amount
  51.     FROM fi_invoice_ar_balance A
  52.     WHERE A.invoice_ar_balance_id = pInvoiceArBalanceId;
  53.    
  54.     INSERT INTO fi_allocation_ar_invoice(
  55.     tenant_id, allocation_ar_id, ref_doc_type_id,
  56.     ref_id, curr_code, debit_amount, credit_amount, payment_amount,
  57.     version, create_datetime, create_user_id, update_datetime, update_user_id,
  58.     ref_remain_amount)
  59.     SELECT A.tenant_id, vAllocationArId, A.doc_type_id,
  60.             A.invoice_ar_balance_id, A.curr_code, -1 * vAmount, 0, -1 * vAmount,
  61.             0, pDatetime, pUserId, pDatetime, pUserId,
  62.             A.amount
  63.     FROM fi_invoice_ar_balance A
  64.     WHERE A.tenant_id = pTenantId
  65.         AND A.doc_type_id = vDocTypeDebtNoteAr
  66.         AND A.invoice_ar_id = pInvoiceArId;
  67.    
  68.     PERFORM generate_process_message_for_submit_doc(pSessionId, pTenantId, 'fi_submit_alloc_credit_ar', A.allocation_ar_id||'_'||A.doc_no,
  69.             pDatetime, vParamKey, A.allocation_ar_id::character varying, pUserId)
  70.     FROM fi_allocation_ar A
  71.     WHERE A.allocation_ar_id = vAllocationArId;
  72.    
  73.     -- Mendapatkan default approval flow ID
  74.     SELECT awe_flow_id INTO vFlowAllocCreditArId
  75.     FROM awe_flow
  76.     WHERE scheme = vSchemeAllocCreditAr AND
  77.         flg_validate = 'Y' AND
  78.         active = 'Y';
  79.    
  80.      -- Generate data awe_currdoc_status
  81.     INSERT INTO awe_currdoc_status(
  82.         req_id, tenant_id, scheme, doc_id, doc_no, doc_date, current_state,
  83.         remark, current_user_id, current_role_id, flg_user_role, label,
  84.         data, flow_id, create_datetime, create_user_id, create_role_id,
  85.         update_datetime, update_user_id, update_role_id, version)
  86.     SELECT A.allocation_ar_id||'_'||A.doc_no, A.tenant_id, vSchemeAllocCreditAr, A.allocation_ar_id, A.doc_no, A.doc_date, vStatusDocApproved,
  87.         A.remark, A.create_user_id, vEmptyId, 'R', 'AR_CREDIT_ALLOCATION'||A.doc_no,
  88.         '{}', vFlowAllocCreditArId, pDatetime, pUserId, vEmptyId,
  89.         pDatetime, pUserId, vEmptyId, 0
  90.     FROM fi_allocation_ar A
  91.     WHERE A.allocation_ar_id = vAllocationArId
  92.         AND A.status_doc = 'R';
  93.    
  94. END
  95. $BODY$
  96.   LANGUAGE plpgsql VOLATILE
  97.   COST 100;
  98.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement