aadddrr

cb_submit_cb_out

Sep 30th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Function: cb_submit_cb_out(bigint, character varying, character varying)
  2.  
  3. -- DROP FUNCTION cb_submit_cb_out(bigint, character varying, character varying);
  4.  
  5. CREATE OR REPLACE FUNCTION cb_submit_cb_out(bigint, character varying, character varying)
  6.   RETURNS void AS
  7. $BODY$
  8. DECLARE
  9.     pTenantId           ALIAS FOR $1;
  10.     pSessionId          ALIAS FOR $2;
  11.     pProcessNo          ALIAS FOR $3;
  12.  
  13.     vProcessId              bigint;
  14.     vCBOutId                bigint;
  15.     vUserId                 bigint;
  16.     vDatetime               character varying(14);
  17.     vEmptyId                bigint;
  18.     vStatusRelease          character varying(1);
  19.     vPaymentAmount          numeric;
  20.     vRefAmount              numeric;
  21.     vRoundingAmount         numeric;
  22.     vPaymentId              bigint;
  23.     vRefId                  bigint;
  24.     vCbOutDocTypeId         bigint;
  25.     vParentOuId             bigint;
  26.     vJournalType            character varying(20);
  27.     vStatusDraft            character varying(1);
  28.     vRefDocTypeId           bigint;
  29.     vPbCbDocTypeId          bigint;
  30.     vRqCAdvDocTypeId        bigint;
  31.     vPbApDocTypeId          bigint;
  32.     vCAdvSettleDocTypeId    bigint;
  33.     vPrepaymentDocTypeId    bigint;
  34.     vSldPrepaymentDocTypeId bigint;
  35.     vInvPrepaymentDocTypeId bigint;
  36.     vSignDebit              character varying(1);
  37.     vSignCredit             character varying(1);
  38.     vTypeRate               character varying(3);
  39.     vActivityCOA            character varying(10);
  40.     vSystemCOA              character varying(10);
  41.     vCashBankCOA            character varying(10);
  42.     vJournalTrxId           bigint;
  43.     vCbOutDate              character varying(14);
  44.     vCbOutNo                character varying(30)
  45.     vEmptyValue             character varying(1);
  46.     vFlagNo                 character varying(1);
  47.     vRqCAdvId               bigint;
  48.    
  49.     vDocJournal             DOC_JOURNAL%ROWTYPE;
  50.     vOuStructure            OU_BU_STRUCTURE%ROWTYPE;
  51.     result                  RECORD;    
  52.     vSldFakturPajakMasukan bigint;
  53.    
  54.     BEGIN
  55.     vEmptyId    := -99;
  56.     vStatusRelease := 'R';
  57.     vParentOuId     := -99;
  58.     vStatusDraft    := 'D';
  59.     vPbCbDocTypeId  := 601;
  60.     vRqCAdvDocTypeId := 602;
  61.     vCAdvSettleDocTypeId := 603;
  62.     vPbApDocTypeId := 231;
  63.     vPrepaymentDocTypeId := 202;
  64.     vSldPrepaymentDocTypeId := 212;
  65.     vInvPrepaymentDocTypeId := 203;
  66.     vSldFakturPajakMasukan := 223;
  67.     vSignDebit := 'D';
  68.     vSignCredit := 'C';
  69.     vTypeRate := 'COM';
  70.     vActivityCOA := 'ACTIVITY';
  71.     vSystemCOA := 'SYSTEM';
  72.     vCashBankCOA := 'CASHBANK';
  73.     vEmptyValue := ' ';
  74.     vFlagNo := 'N';
  75.    
  76.     SELECT A.process_message_id INTO vProcessId
  77.     FROM t_process_message A
  78.     WHERE A.tenant_id = pTenantId AND
  79.         A.process_name = 'cb_submit_cb_out' AND
  80.         A.process_no = pProcessNo;
  81.        
  82.     SELECT CAST(A.process_parameter_value AS bigint) INTO vCBOutId
  83.     FROM t_process_parameter A
  84.     WHERE A.process_message_id = vProcessId AND
  85.         A.process_parameter_key = 'cashbankOutId';
  86.    
  87.     SELECT CAST(A.process_parameter_value AS bigint) INTO vUserId
  88.     FROM t_process_parameter A
  89.     WHERE A.process_message_id = vProcessId AND
  90.         A.process_parameter_key = 'userId';
  91.  
  92.     SELECT CAST(A.process_parameter_value AS character varying(14)) INTO vDatetime
  93.     FROM t_process_parameter A
  94.     WHERE A.process_message_id = vProcessId AND
  95.         A.process_parameter_key = 'datetime';
  96.    
  97.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId; 
  98.    
  99. -- get variable pendukung
  100. -- vRefId adalah id cb_trx_cashbank_balance
  101. /* NK, 27 Jan 2014 diganti dengan cara pakai user defined type untuk data ou dan data doc journal
  102.     SELECT doc_type_id, ref_doc_type_id, ref_amount, ref_id, f_get_parent_ou_bu(A.tenant_id, A.ou_id), f_get_journal_type(A.doc_type_id),
  103.                 doc_no, doc_date INTO vCbOutDocTypeId, vRefDocTypeId, vRefAmount, vPaymentId, vParentOuId, vJournalType, vCbOutNo, vCbOutDate
  104.     FROM cb_in_out_cashbank A
  105.     WHERE in_out_cashbank_id = vCBOutId;
  106. */
  107.     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(A.doc_type_id) as doc,
  108.                 A.doc_no, A.doc_date
  109.     FROM cb_in_out_cashbank A, cb_trx_cashbank_balance B
  110.     WHERE A.in_out_cashbank_id = vCBOutId AND
  111.         A.ref_id = B.trx_cashbank_balance_id INTO result;
  112.  
  113.     vCbOutDocTypeId := result.doc_type_id;
  114.     vRefDocTypeId := result.ref_doc_type_id;
  115.     vRefAmount := result.ref_amount;
  116.     vPaymentId := result.payment_id;
  117.     vRefId := result.ref_id;
  118.     vOuStructure := result.ou;
  119.     vDocJournal := result.doc;
  120.     vCbOutNo := result.doc_no;
  121.     vCbOutDate := result.doc_date;
  122.    
  123. -- update flag cb_trx_cashbank_balance
  124.     UPDATE cb_trx_cashbank_balance SET flg_payment = 'Y', ref_doc_type_id = vCbOutDocTypeId, ref_id = vCBOutId,
  125.                                         version = version + 1, update_datetime = vDatetime, update_user_id = vUserId
  126.     WHERE trx_cashbank_balance_id = vRefId;
  127.  
  128. -- hitung total nilai cash / bank payment
  129.      SELECT COALESCE(SUM(payment_amount), 0) INTO vPaymentAmount
  130.      FROM cb_in_out_cashbank_payment
  131.      WHERE in_out_cashbank_id = vCBOutId;
  132.  
  133.      vRoundingAmount := vRefAmount - vPaymentAmount;
  134.      
  135. -- buat data  nilai rounding payment = ref_amount - vPaymentAmount
  136.      INSERT INTO cb_in_out_cashbank_cost(
  137.             tenant_id, in_out_cashbank_id, line_no,
  138.             activity_gl_id, ou_rc_id, segment_id, curr_code, cost_amount,
  139.             payment_amount, remark,
  140.             version, create_datetime, create_user_id, update_datetime, update_user_id)
  141.     SELECT tenant_id, in_out_cashbank_id, 1,
  142.             f_get_activity_gl_id_for_rounding(tenant_id), vEmptyId, vEmptyId, ref_curr_code, vRoundingAmount,
  143.             vRoundingAmount, remark,
  144.             0, vDatetime, vUserId, vDatetime, vUserId
  145.     FROM cb_in_out_cashbank
  146.     WHERE in_out_cashbank_id = vCBOutId;
  147.  
  148. -- update cb_in_out_cashbank : status doc to R
  149.     UPDATE cb_in_out_cashbank SET status_doc = vStatusRelease, version = version + 1, update_datetime = vDatetime, update_user_id = vUserId
  150.     WHERE in_out_cashbank_id = vCBOutId;
  151.  
  152.     /*
  153.      * update payment order alloc balance untuk flg_alloc = C
  154.      * buat data saldo prepayment, untuk cash bank out yang referensi dokumen PB AP
  155.      */
  156.     IF vRefDocTypeId = vPbApDocTypeId THEN
  157.        
  158.         UPDATE fi_payment_order_alloc_balance SET ref_alloc_id = vCBOutId, ref_doc_type_id = vCbOutDocTypeId, ref_doc_no = vCbOutNo, ref_doc_date = vCbOutDate,
  159.                                                 version = version + 1, update_datetime = vDatetime, update_user_id = vUserId
  160.         WHERE payment_order_id = vPaymentId AND
  161.             flg_alloc = 'C';
  162.            
  163.         INSERT INTO fi_invoice_ap_balance
  164.         (tenant_id, ou_id, doc_type_id, invoice_ap_id,
  165.         doc_no, doc_date, ext_doc_no, ext_doc_date,
  166.         ref_doc_type_id, ref_id, partner_id, due_date,  
  167.         curr_code, amount, remark, payment_amount, flg_payment,
  168.         "version", create_datetime, create_user_id, update_datetime, update_user_id)   
  169.         SELECT B.tenant_id, B.ou_id, vSldPrepaymentDocTypeId, B.invoice_ap_id,
  170.             B.doc_no, vCBOutDate, B.ext_doc_no, B.ext_doc_date,
  171.             B.doc_type_id, B.invoice_ap_balance_id, B.partner_id, vCbOutDate,
  172.             A.credit_curr_code, A.credit_amount * -1, vEmptyValue, 0, vFlagNo,
  173.             0, vDatetime, vUserId, vDatetime, vUserId
  174.         FROM fi_payment_order_alloc_balance A, fi_invoice_ap_balance B
  175.         WHERE A.payment_order_id = vPaymentId AND
  176.             A.flg_alloc = 'C' AND
  177.             A.credit_id = B.invoice_ap_balance_id AND
  178.             A.credit_doc_type_id = B.doc_type_id AND
  179.             B.doc_type_id = vPrepaymentDocTypeId;
  180.            
  181.         /*
  182.          * NK, 2 Nov 2014
  183.          * buat saldo invoice prepayment ap yang sudah dibayar cash bank out nya
  184.          */    
  185.         INSERT INTO fi_invoice_advance_ap_balance
  186.         (tenant_id, ou_id, doc_type_id, invoice_ap_id,
  187.         doc_no, doc_date, ext_doc_no, ext_doc_date,
  188.         ref_doc_type_id, ref_id, partner_id,
  189.         curr_code, amount, payment_id, payment_date,
  190.         purch_invoice_id, purch_invoice_date,
  191.         "version", create_datetime, create_user_id, update_datetime, update_user_id)
  192.         SELECT  B.tenant_id, B.ou_id, vInvPrepaymentDocTypeId, B.invoice_ap_id,
  193.                 B.doc_no, B.doc_date, B.ext_doc_no, B.ext_doc_date,
  194.                 B.doc_type_id, B.invoice_ap_id, B.partner_id,
  195.                 A.credit_curr_code, A.credit_amount * -1, vCBOutId, vCBOutDate,
  196.                 vEmptyId, vEmptyValue,
  197.                 0, vDatetime, vUserId, vDatetime, vUserId
  198.         FROM fi_payment_order_alloc_balance A, fi_invoice_ap_balance B
  199.         WHERE A.payment_order_id = vPaymentId AND
  200.             A.flg_alloc = 'C' AND
  201.             A.credit_id = B.invoice_ap_balance_id AND
  202.             A.credit_doc_type_id = B.doc_type_id AND
  203.             B.doc_type_id = vInvPrepaymentDocTypeId;
  204.    
  205.         /*
  206.          * NK, 18 Nov 2014
  207.          * membuat data invoice tax advance ap balance
  208.          */
  209.         INSERT INTO fi_invoice_tax_advance_ap_balance
  210.         (tenant_id, ou_id, doc_type_id, invoice_ap_id, partner_id,
  211.         tax_id, tax_no, tax_date, curr_code, tax_amount,
  212.         tax_curr_code, gov_tax_amount, ref_doc_type_id, ref_id,
  213.         payment_id, payment_date, purch_invoice_id, purch_invoice_date,
  214.         "version", create_datetime, create_user_id, update_datetime, update_user_id)
  215.         SELECT  B.tenant_id, B.ou_id, vSldFakturPajakMasukan, B.invoice_ap_id, B.partner_id,
  216.             C.tax_id, C.tax_no, C.tax_date, B.curr_code, C.tax_amount * -1,
  217.             C.tax_curr_code, C.gov_tax_amount * -1, B.doc_type_id, B.invoice_ap_balance_id,
  218.             vCBOutId, vCBOutDate, vEmptyId, vEmptyValue,
  219.             0, vDatetime, vUserId, vDatetime, vUserId
  220.         -- Mod by WTC, 160916, join nya langsung ke table fi_invoice_ap_tax, krn ada kemungkinan tidak
  221.         -- ada data fi_invoice_ap_tax_balance jika saldonya digabung
  222.         FROM fi_payment_order_alloc_balance A, fi_invoice_ap_balance B, fi_invoice_ap_tax C
  223.         WHERE A.payment_order_id = vPaymentId AND
  224.             A.flg_alloc = 'C' AND
  225.             A.credit_id = B.invoice_ap_balance_id AND
  226.             B.doc_type_id = vInvPrepaymentDocTypeId AND
  227.             A.credit_doc_type_id = B.doc_type_id AND
  228.             B.invoice_ap_id = C.invoice_ap_id;
  229.            
  230.         /*
  231.          * NK, 2 Nov 2014
  232.          * membuat data pu_po_balance_advance_invoice, untuk invoice prepayment ap yang digunakan untuk di alokasi terhadap purchasing invoice
  233.          */
  234.         INSERT INTO pu_po_balance_advance_invoice
  235.         (tenant_id, ou_id, partner_id,
  236.         po_id, ref_doc_type_id, ref_id,
  237.         tax_id, tax_percentage, tax_amount,
  238.         advance_curr_code, advance_amount, flg_invoice, invoice_id,
  239.         "version", create_datetime, create_user_id, update_datetime, update_user_id,
  240.         ref_doc_no, ref_doc_date)
  241.         SELECT A.tenant_id, A.ou_id, B.partner_id,
  242.             B.ref_id, B.doc_type_id, B.invoice_ap_balance_id,
  243.             COALESCE(C.tax_id, vEmptyId), COALESCE(D.percentage, vEmptyId), COALESCE(C.tax_amount, 0),
  244.             A.credit_curr_code, A.credit_amount, 'N', vEmptyId,
  245.             0, vDatetime, vUserId, vDatetime, vUserId,
  246.             B.doc_no, B.doc_date
  247.         FROM fi_payment_order_alloc_balance A, fi_invoice_ap_balance B
  248.         LEFT OUTER JOIN fi_invoice_tax_ap_balance C ON B.invoice_ap_balance_id = C.invoice_ap_balance_id
  249.         LEFT OUTER JOIN m_tax D ON C.tax_id = D.tax_id
  250.         WHERE A.payment_order_id = vPaymentId AND
  251.             A.flg_alloc = 'C' AND
  252.             A.credit_id = B.invoice_ap_balance_id AND
  253.             A.credit_doc_type_id = B.doc_type_id AND
  254.             B.doc_type_id = vInvPrepaymentDocTypeId;
  255.                    
  256.     END IF;
  257.    
  258.    
  259. -- cash bank out yang referensi ke payment order cb, debet diambil dari detail payment order
  260. -- cash bank out yang referensi ke req cash advance, debet diambil dari detail payment order
  261. -- cash bank out yang referensi ke payment order ap, debet diambil dari detail in out cashbank untuk ref amount
  262. -- Credit diambil dari cash / bank payment
  263.     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)
  264.     FROM cb_in_out_cashbank A
  265.     WHERE A.in_out_cashbank_id = vCBOutId;
  266.    
  267.     SELECT NEXTVAL('gl_journal_trx_seq') INTO vJournalTrxId;
  268.    
  269.     INSERT INTO gl_journal_trx
  270.     (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  271.     ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,  
  272.     ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  273.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  274.     SELECT vJournalTrxId, A.tenant_id, (vDocJournal).journal_type, A.doc_type_id, A.in_out_cashbank_id, A.doc_no, A.doc_date,
  275.         (vOuStructure).ou_bu_id, (vOuStructure).ou_branch_id, (vOuStructure).ou_sub_bu_id, A.partner_id, vEmptyId, vEmptyId, A.ext_doc_no, A.ext_doc_date,
  276.         A.ref_doc_type_id, A.ref_id, A.doc_date, A.ref_curr_code, A.remark, vStatusDraft, 'DRAFT',
  277.         0, vDatetime, vUserId, vDatetime, vUserId
  278.     FROM cb_in_out_cashbank A
  279.     WHERE A.in_out_cashbank_id = vCBOutId;
  280.  
  281.     IF vRefDocTypeId = vPbCbDocTypeId THEN
  282.         INSERT INTO tt_journal_trx_item
  283.         (session_id, tenant_id, journal_trx_id, line_no,
  284.         ref_doc_type_id, ref_id,
  285.         partner_id, product_id, cashbank_id, ou_rc_id,
  286.         segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  287.         coa_id, curr_code, qty, uom_id,
  288.         amount, journal_date, type_rate,
  289.         numerator_rate, denominator_rate, journal_desc, remark)
  290.         SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  291.             A.doc_type_id, B.payment_order_cost_id,
  292.             A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  293.             B.segment_id, vSignDebit, vActivityCOA, B.activity_gl_id,
  294.             E.coa_id, B.curr_code, 0, vEmptyId,
  295.             B.add_amount, A.doc_date, vTypeRate,
  296.             1, 1, 'PAYMENT_ORDER_CB', B.remark
  297.         FROM cb_payment_order A, cb_payment_order_cost B, m_activity_gl E
  298.         WHERE A.payment_order_id = vPaymentId AND
  299.             A.payment_order_id = B.payment_order_id AND
  300.             B.activity_gl_id = E.activity_gl_id;
  301.     END IF;
  302.  
  303.     IF vRefDocTypeId = vRqCAdvDocTypeId THEN
  304.         INSERT INTO tt_journal_trx_item
  305.         (session_id, tenant_id, journal_trx_id, line_no,
  306.         ref_doc_type_id, ref_id,
  307.         partner_id, product_id, cashbank_id, ou_rc_id,
  308.         segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  309.         coa_id, curr_code, qty, uom_id,
  310.         amount, journal_date, type_rate,
  311.         numerator_rate, denominator_rate, journal_desc, remark)
  312.         SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  313.             A.doc_type_id, B.payment_order_cost_id,
  314.             A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  315.             B.segment_id, vSignDebit, vActivityCOA, B.activity_gl_id,
  316.             E.coa_id, B.curr_code, 0, vEmptyId,
  317.             B.add_amount, A.doc_date, vTypeRate,
  318.             1, 1, 'CASH_ADVANCE', B.remark
  319.         FROM cb_payment_order A, cb_payment_order_cost B, m_activity_gl E
  320.         WHERE A.payment_order_id = vPaymentId AND
  321.             A.payment_order_id = B.payment_order_id AND
  322.             B.activity_gl_id = E.activity_gl_id;
  323.  
  324.         UPDATE cb_advance_balance
  325.         SET flg_payment = 'Y', payment_doc_type_id = vCbOutDocTypeId, cash_bank_payment_id = vCBOutId, cash_bank_payment_date = vCbOutDate, ref_amount = vRefAmount
  326.         WHERE advance_id = vPaymentId;
  327.     END IF;
  328.  
  329.     IF vRefDocTypeId = vCAdvSettleDocTypeId THEN
  330.    
  331.         INSERT INTO tt_journal_trx_item
  332.         (session_id, tenant_id, journal_trx_id, line_no,
  333.         ref_doc_type_id, ref_id,
  334.         partner_id, product_id, cashbank_id, ou_rc_id,
  335.         segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  336.         coa_id, curr_code, qty, uom_id,
  337.         amount, journal_date, type_rate,
  338.         numerator_rate, denominator_rate, journal_desc, remark)
  339.         SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  340.             A.doc_type_id, A.in_out_cashbank_id,
  341.             A.partner_id, vEmptyId, vEmptyId, C.ou_rc_id,
  342.             C.segment_id, vSignDebit, vActivityCOA, C.activity_gl_id,
  343.             E.coa_id, A.ref_curr_code, 0, vEmptyId,
  344.             A.ref_amount, B.cash_bank_payment_date, vTypeRate,
  345.             1, 1, 'CASH_ADVANCE', A.remark
  346.         FROM cb_in_out_cashbank A, cb_advance_balance B, cb_payment_order_cost C, m_activity_gl E
  347.         WHERE A.in_out_cashbank_id = vCBOutId AND
  348.             A.ref_id = B.ref_id AND
  349.             B.advance_id = C.payment_order_id AND
  350.             C.activity_gl_id = E.activity_gl_id;
  351.  
  352.     END IF;
  353.  
  354.     IF vRefDocTypeId = vPbApDocTypeId THEN
  355.         INSERT INTO tt_journal_trx_item
  356.         (session_id, tenant_id, journal_trx_id, line_no,
  357.         ref_doc_type_id, ref_id,
  358.         partner_id, product_id, cashbank_id, ou_rc_id,
  359.         segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  360.         coa_id, curr_code, qty, uom_id,
  361.         amount, journal_date, type_rate,
  362.         numerator_rate, denominator_rate, journal_desc, remark)
  363.         SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  364.             B.credit_doc_type_id, B.credit_id,
  365.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  366.             vEmptyId, vSignDebit, vSystemCOA, vEmptyId,
  367.             f_get_ap_coa_partner(A.tenant_id, A.partner_id), B.credit_curr_code, 0, vEmptyId,
  368.             B.credit_amount, B.credit_doc_date, vTypeRate,
  369.             1, 1, 'AP', A.remark
  370.         FROM cb_in_out_cashbank A, fi_payment_order_alloc_balance B, cb_trx_cashbank_balance C
  371.         WHERE A.in_out_cashbank_id = vCBOutId AND
  372.             A.ref_id = C.trx_cashbank_balance_id AND
  373.             C.payment_id = B.payment_order_id AND
  374.                 B.flg_alloc = 'C';
  375.     END IF;
  376.  
  377.     IF (vRoundingAmount < 0) THEN
  378.         INSERT INTO tt_journal_trx_item
  379.         (session_id, tenant_id, journal_trx_id, line_no,
  380.         ref_doc_type_id, ref_id,
  381.         partner_id, product_id, cashbank_id, ou_rc_id,
  382.         segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  383.         coa_id, curr_code, qty, uom_id,
  384.         amount, journal_date, type_rate,
  385.         numerator_rate, denominator_rate, journal_desc, remark)
  386.         SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  387.             A.doc_type_id, B.in_out_cashbank_cost_id,
  388.             A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  389.             B.segment_id, vSignDebit, vActivityCOA, B.activity_gl_id,
  390.             E.coa_id, B.curr_code, 0, vEmptyId,
  391.             B.cost_amount * -1, A.doc_date, vTypeRate,
  392.             1, 1, 'ROUNDING', B.remark
  393.         FROM cb_in_out_cashbank A, cb_in_out_cashbank_cost B, m_activity_gl E
  394.         WHERE A.in_out_cashbank_id = vCBOutId AND
  395.             A.in_out_cashbank_id = B.in_out_cashbank_id AND
  396.             B.activity_gl_id = E.activity_gl_id;
  397.     ELSE
  398.         IF (vRoundingAmount > 0) THEN
  399.             INSERT INTO tt_journal_trx_item
  400.             (session_id, tenant_id, journal_trx_id, line_no,
  401.             ref_doc_type_id, ref_id,
  402.             partner_id, product_id, cashbank_id, ou_rc_id,
  403.             segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  404.             coa_id, curr_code, qty, uom_id,
  405.             amount, journal_date, type_rate,
  406.             numerator_rate, denominator_rate, journal_desc, remark)
  407.             SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  408.                 A.doc_type_id, B.in_out_cashbank_cost_id,
  409.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  410.                 B.segment_id, vSignCredit, vActivityCOA, B.activity_gl_id,
  411.                 E.coa_id, B.curr_code, 0, vEmptyId,
  412.                 B.cost_amount, A.doc_date, vTypeRate,
  413.                 1, 1, 'ROUNDING', B.remark
  414.             FROM cb_in_out_cashbank A, cb_in_out_cashbank_cost B, m_activity_gl E
  415.             WHERE A.in_out_cashbank_id = vCBOutId AND
  416.                 A.in_out_cashbank_id = B.in_out_cashbank_id AND
  417.                 B.activity_gl_id = E.activity_gl_id;
  418.         END IF;
  419.     END IF;
  420.    
  421.     INSERT INTO tt_journal_trx_item
  422.     (session_id, tenant_id, journal_trx_id, line_no,
  423.     ref_doc_type_id, ref_id,
  424.     partner_id, product_id, cashbank_id, ou_rc_id,
  425.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  426.     coa_id, curr_code, qty, uom_id,
  427.     amount, journal_date, type_rate,
  428.     numerator_rate, denominator_rate, journal_desc, remark)
  429.     SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  430.         A.doc_type_id, A.in_out_cashbank_id,
  431.         A.partner_id, vEmptyId, B.cashbank_id, vEmptyId,
  432.         vEmptyId, vSignCredit, vCashBankCOA, vEmptyId,
  433.         C.coa_id, B.curr_code, 0, vEmptyId,
  434.         B.cashbank_amount, A.doc_date, vTypeRate,
  435.         1, 1, 'CASH_BANK', A.remark
  436.     FROM cb_in_out_cashbank A, cb_in_out_cashbank_payment B, m_cashbank C
  437.     WHERE A.in_out_cashbank_id = vCBOutId
  438.     AND   A.in_out_cashbank_id = B.in_out_cashbank_id
  439.     AND B.cashbank_id = C.cashbank_id;
  440.  
  441.     INSERT INTO gl_journal_trx_item
  442.     (tenant_id, journal_trx_id, line_no,
  443.     ref_doc_type_id, ref_id,
  444.     partner_id, product_id, cashbank_id, ou_rc_id,
  445.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  446.     coa_id, curr_code, qty, uom_id,
  447.     amount, journal_date, type_rate,
  448.     numerator_rate, denominator_rate, journal_desc, remark,
  449.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  450.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id ),
  451.         A.ref_doc_type_id, A.ref_id,
  452.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  453.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  454.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  455.         A.amount, A.journal_date, A.type_rate,
  456.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  457.         0, vDatetime, vUserId, vDatetime, vUserId
  458.     FROM tt_journal_trx_item A
  459.     WHERE A.session_id = pSessionId
  460.     AND A.journal_desc IN ('PAYMENT_ORDER_CB', 'CASH_ADVANCE', 'AP', 'ROUNDING');
  461.    
  462.     INSERT INTO gl_journal_trx_mapping
  463.     (tenant_id, journal_trx_id, line_no,
  464.     ref_doc_type_id, ref_id,
  465.     partner_id, product_id, cashbank_id, ou_rc_id,
  466.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  467.     coa_id, curr_code, qty, uom_id,
  468.     amount, journal_date, type_rate,
  469.     numerator_rate, denominator_rate, journal_desc, remark,
  470.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  471.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id ),
  472.         A.ref_doc_type_id, A.ref_id,
  473.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  474.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  475.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  476.         A.amount, A.journal_date, A.type_rate,
  477.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  478.         0, vDatetime, vUserId, vDatetime, vUserId
  479.     FROM tt_journal_trx_item A
  480.     WHERE A.session_id = pSessionId
  481.     AND A.journal_desc = 'CASH_BANK';
  482.  
  483.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId; 
  484.    
  485. END;   
  486. $BODY$
  487.   LANGUAGE plpgsql VOLATILE
  488.   COST 100;
  489. ALTER FUNCTION cb_submit_cb_out(bigint, character varying, character varying)
  490.   OWNER TO sts;
Add Comment
Please, Sign In to add comment