Advertisement
dchrissandy

Untitled

Feb 1st, 2021
1,291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION cb_submit_direct_cost_payment(
  2.     bigint,
  3.     character varying,
  4.     character varying)
  5.   RETURNS void AS
  6. $BODY$
  7. DECLARE
  8.     pTenantId           ALIAS FOR $1;
  9.     pSessionId          ALIAS FOR $2;
  10.     pProcessNo          ALIAS FOR $3;
  11.  
  12.     vProcessId          bigint;
  13.     vInOutCbId          bigint;
  14.     vUserId             bigint;
  15.     vDatetime           character varying(14);
  16.    vFlagNo              character varying(1);
  17.    vEmptyValue          character varying(1);
  18.    vStatusDraft         character varying(1);
  19.    vEmptyId             bigint;
  20.    vStatusRelease       character varying(1);
  21.    vTypeRateCom         character varying(50);
  22.    vJournalDescDCP      character varying(50);
  23.    vJournalDescCB      character varying(50);
  24.    result               RECORD;
  25.    vJournalTrxId        bigint;
  26. --   vJournalTypeCB       character varying(50);
  27. --   vOuBuId              bigint;
  28. --   vOuBranchId          bigint;
  29. --   vOuSubBuId           bigint;
  30.  
  31.    vDirectCPDocTypeId       bigint;
  32.    vDocTypeCashBankOut      bigint;
  33.    vRefDocTypeId            bigint;
  34.    vRefAmount               numeric;
  35.    vPaymentId               bigint;
  36.    vRefId                   bigint;
  37.    vOuStructure             OU_BU_STRUCTURE%ROWTYPE;
  38.    vDocJournal              DOC_JOURNAL%ROWTYPE;
  39.    vCbOutNo                 character varying(30);
  40.    vCbOutDate               character varying(14);
  41.  
  42.    vSignDebit               character varying(1);
  43.    vSignCredit              character varying(1);
  44.    vTypeRate                character varying(3);
  45.    vActivityCOA             character varying(10);
  46.    vCashBankCOA             character varying(10);
  47.  
  48.  
  49. BEGIN
  50.     vFlagNo := 'N';
  51.    vEmptyValue  := '';
  52.    vEmptyId := -99;
  53.    vStatusRelease := 'R';
  54.    vJournalDescDCP := 'DIRECT_COST_PAYMENT';
  55.    vJournalDescCB := 'CASH_BANK';
  56.    vSignDebit := 'D';
  57.    vSignCredit := 'C';
  58.    vTypeRate := 'COM';
  59.    vActivityCOA := 'ACTIVITY';
  60.    vCashBankCOA := 'CASHBANK';
  61.    vStatusDraft := 'D';
  62.    vDocTypeCashBankOut := 611;
  63.  
  64.     SELECT A.process_message_id INTO vProcessId
  65.     FROM t_process_message A
  66.     WHERE A.tenant_id = pTenantId AND
  67.         A.process_name = 'cb_submit_direct_cost_payment' AND
  68.         A.process_no = pProcessNo;
  69.  
  70.     SELECT CAST(A.process_parameter_value AS bigint) INTO vInOutCbId
  71.     FROM t_process_parameter A
  72.     WHERE A.process_message_id = vProcessId AND
  73.         A.process_parameter_key = 'inOutCashbankId';
  74.  
  75.     SELECT CAST(A.process_parameter_value AS bigint) INTO vUserId
  76.     FROM t_process_parameter A
  77.     WHERE A.process_message_id = vProcessId AND
  78.         A.process_parameter_key = 'userId';
  79.  
  80.     SELECT CAST(A.process_parameter_value AS character varying(14)) INTO vDatetime
  81.     FROM t_process_parameter A
  82.     WHERE A.process_message_id = vProcessId AND
  83.         A.process_parameter_key = 'datetime';
  84.  
  85.    INSERT INTO cb_trx_cashbank_balance
  86.    (tenant_id, ou_id, doc_type_id, payment_id, payment_doc_no,
  87.   payment_doc_date, payment_remark, partner_id, partner_bank_id, curr_code,
  88.   amount, due_date, flg_payment, ref_doc_type_id, ref_id,
  89.   version, create_datetime, create_user_id, update_datetime, update_user_id)
  90.   SELECT A.tenant_id, A.ou_id, A.doc_type_id, A.in_out_cashbank_id, A.doc_no,
  91.       A.doc_date, A.remark, A.partner_id, vEmptyId, A.ref_curr_code,
  92.       SUM(B.cost_amount), A.due_date, vFlagNo, vEmptyId, vEmptyId,
  93.       0, vDatetime, vUserId, vDatetime, vUserId
  94.   FROM cb_in_out_cashbank A, cb_in_out_cashbank_cost B
  95.   WHERE A.in_out_cashbank_id = vInOutCbId
  96.     AND A.in_out_cashbank_id = b.in_out_cashbank_id
  97.   GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, A.in_out_cashbank_id, A.doc_no, A.doc_date, A.remark, A.partner_id, A.ref_curr_code, A.due_date;
  98.  
  99.   UPDATE cb_in_out_cashbank SET status_doc = vStatusRelease, update_datetime = vDatetime, update_user_id = vUserId
  100.   WHERE in_out_cashbank_id = vInOutCbId;
  101.  
  102.   SELECT A.doc_type_id, A.ref_doc_type_id, A.ref_id, A.ref_amount, B.payment_id AS payment_id, f_get_ou_bu_structure(A.ou_id) AS ou, f_get_document_journal(611) as doc,
  103.                 A.doc_no, A.doc_date
  104.     FROM cb_in_out_cashbank A, cb_trx_cashbank_balance B
  105.     WHERE A.in_out_cashbank_id = vInOutCbId
  106.         AND A.in_out_cashbank_id = B.payment_id INTO result;
  107.  
  108.     vDirectCPDocTypeId := result.doc_type_id;
  109.     vRefDocTypeId := result.ref_doc_type_id;
  110.     vRefAmount := result.ref_amount;
  111.     vPaymentId := result.payment_id;
  112.     vRefId := result.ref_id;
  113.     vOuStructure := result.ou;
  114.     vDocJournal := result.doc;
  115.     vCbOutNo := result.doc_no;
  116.     vCbOutDate := result.doc_date;
  117.  
  118.     -- update flag cb_trx_cashbank_balance
  119.     UPDATE cb_trx_cashbank_balance SET flg_payment = 'Y', ref_doc_type_id = vDirectCPDocTypeId, ref_id = vInOutCbId,
  120.                                         version = version + 1, update_datetime = vDatetime, update_user_id = vUserId
  121.     WHERE payment_id = vInOutCbId;
  122.  
  123.     PERFORM gl_manage_admin_journal_trx(A.tenant_id, (vOuStructure).ou_bu_id, A.ou_id, (vDocJournal).journal_type, (vDocJournal).ledger_code, f_get_year_month_date(A.doc_date), 'DAILY', vDatetime, vUserId)
  124.     FROM cb_in_out_cashbank A
  125.     WHERE A.in_out_cashbank_id = vInOutCbId;
  126.  
  127.     SELECT NEXTVAL('gl_journal_trx_seq') INTO vJournalTrxId;
  128.  
  129.     INSERT INTO gl_journal_trx
  130.     (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  131.     ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,
  132.     ref_doc_type_id, ref_id, ref_doc_no, ref_doc_date, due_date, curr_code, remark, status_doc, workflow_status,
  133.     version, create_datetime, create_user_id, update_datetime, update_user_id)
  134.     SELECT vJournalTrxId, A.tenant_id, (vDocJournal).journal_type, vDocTypeCashBankOut, A.in_out_cashbank_id, A.doc_no, A.doc_date,
  135.         (vOuStructure).ou_bu_id, (vOuStructure).ou_branch_id, (vOuStructure).ou_sub_bu_id,
  136.         A.partner_id, vEmptyId, vEmptyId, A.ext_doc_no, A.ext_doc_date,
  137.         A.doc_type_id, A.in_out_cashbank_id, vEmptyValue, vEmptyValue, A.doc_date, A.ref_curr_code, A.remark, vStatusDraft, 'DRAFT',
  138.         0, vDatetime, vUserId, vDatetime, vUserId
  139.     FROM cb_in_out_cashbank A
  140.     WHERE A.in_out_cashbank_id = vInOutCbId;
  141.  
  142.     INSERT INTO gl_journal_trx_item
  143.     (tenant_id, journal_trx_id, line_no,
  144.     ref_doc_type_id, ref_id,
  145.     partner_id, product_id, cashbank_id, ou_rc_id,
  146.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  147.     coa_id, curr_code, qty, uom_id,
  148.     amount, journal_date, type_rate,
  149.     numerator_rate, denominator_rate, journal_desc, remark,
  150.     version, create_datetime, create_user_id, update_datetime, update_user_id)
  151.     SELECT pTenantId, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id ),
  152.         vEmptyId, vEmptyId,
  153.         B.partner_id, vEmptyId, vEmptyId, C.ou_rc_id,
  154.         C.segment_id, vSignDebit, vActivityCOA, C.activity_gl_id,
  155.         D.coa_id, C.curr_code, 0, vEmptyId,
  156.         C.payment_amount, B.doc_date, vTypeRate,
  157.         1, 1, vJournalDescDCP, C.remark,
  158.         0, vDatetime, vUserId, vDatetime, vUserId
  159.     FROM gl_journal_trx A
  160.     INNER JOIN cb_in_out_cashbank B ON A.doc_id = B.in_out_cashbank_id AND A.ref_doc_type_id = B.doc_type_id
  161.     INNER JOIN cb_in_out_cashbank_cost C ON B.in_out_cashbank_id = C.in_out_cashbank_id
  162.     INNER JOIN m_activity_gl D ON C.activity_gl_id = D.activity_gl_id
  163.     WHERE A.journal_trx_id = vJournalTrxId
  164.     AND B.in_out_cashbank_id = vInOutCbId;
  165.  
  166.     INSERT INTO gl_journal_trx_mapping
  167.     (tenant_id, journal_trx_id, line_no,
  168.     ref_doc_type_id, ref_id,
  169.     partner_id, product_id, cashbank_id, ou_rc_id,
  170.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  171.     coa_id, curr_code, qty, uom_id,
  172.     amount, journal_date, type_rate,
  173.     numerator_rate, denominator_rate, journal_desc, remark,
  174.     version, create_datetime, create_user_id, update_datetime, update_user_id)
  175.     SELECT pTenantId, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id ),
  176.         B.ref_doc_type_id, B.in_out_cashbank_id,
  177.         B.partner_id, vEmptyId, D.cashbank_id, vEmptyId,
  178.         vEmptyId, vSignCredit, vCashBankCOA, vEmptyId,
  179.         E.coa_id, D.curr_code, 0, vEmptyId,
  180.         D.payment_amount, B.doc_date, vTypeRate,
  181.         1, 1, vJournalDescCB, B.remark,
  182.         0, vDatetime, vUserId, vDatetime, vUserId
  183.     FROM gl_journal_trx A
  184.     INNER JOIN cb_in_out_cashbank B ON A.doc_id = B.in_out_cashbank_id AND A.ref_doc_type_id = B.doc_type_id
  185.     INNER JOIN cb_in_out_cashbank_payment D ON B.in_out_cashbank_id = D.in_out_cashbank_id
  186.     INNER JOIN m_cashbank E ON D.cashbank_id = E.cashbank_id
  187.     WHERE A.journal_trx_id = vJournalTrxId
  188.     AND B.in_out_cashbank_id = vInOutCbId;
  189.  
  190.  
  191. END;
  192. $BODY$
  193.   LANGUAGE plpgsql VOLATILE
  194.   COST 100;
  195.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement