samuel025

Functon Submit POAP

Mar 13th, 2022 (edited)
1,174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION fi_submit_payment_order_ap(bigint, character varying, character varying)
  2.   RETURNS void AS
  3. $BODY$
  4. DECLARE
  5.     pTenantId           ALIAS FOR $1;
  6.     pSessionId          ALIAS FOR $2;
  7.     pProcessNo          ALIAS FOR $3;
  8.  
  9.     vProcessId          bigint;
  10.     vPaymentOrderApId   bigint;
  11.     vUserId             bigint;
  12.     vDatetime           character varying(14);
  13.     vStatusRelease      character varying(1);
  14.     vEmptyId            bigint;
  15.     vEmptyValue         character varying(1);
  16.    
  17.     vCursorDebtAp       fi_payment_order_invoice%ROWTYPE;
  18.     vDebtAmount         numeric;
  19.     vCreditAmount       numeric;
  20.     vCountDebtAp        integer;
  21.     vCountCreditAp      integer;
  22.     vStartCount         integer;
  23.     vAllocAmount        numeric;
  24.     vOuId               bigint;
  25.     vDocDebtDate        character varying(8);
  26.     vParentOuId         bigint;    
  27.     vJournalType        character varying(20);
  28.     vJournalTrxId       bigint;
  29.     vDocJournal         DOC_JOURNAL%ROWTYPE;
  30.     vOuStructure        OU_BU_STRUCTURE%ROWTYPE;
  31.     result              RECORD;    
  32.    
  33.     vSldPrepaymentDoc   bigint;
  34.    
  35.     vStatusDraft        character varying(1);  
  36.     vSignDebit          character varying(1);
  37.     vSignCredit         character varying(1);
  38.     vTypeRate           character varying(3);
  39.     vSystemCOA          character varying(10);
  40.     vCountAllocAP       integer;
  41.     vValutaBuku         character varying(5);
  42.     vCountDocDNAP       bigint:=0;
  43.    
  44. BEGIN
  45.     vCountAllocAP := 0;
  46.     vSldPrepaymentDoc := 212;  
  47.  
  48.     vStatusRelease := 'R';
  49.     vEmptyId := -99;
  50.     vEmptyValue := ' ';
  51.     vDebtAmount := 0;
  52.     vCreditAmount := 0;
  53.     vCountDebtAp := 0;
  54.     vCountCreditAp := 0;
  55.     vAllocAmount := 0;
  56.     vStatusDraft := 'D';
  57.     vSignDebit := 'D';
  58.     vSignCredit := 'C';
  59.     vTypeRate := 'COM';
  60.     vSystemCOA := 'SYSTEM';
  61.    
  62.     SELECT A.process_message_id INTO vProcessId
  63.     FROM t_process_message A
  64.     WHERE A.tenant_id = pTenantId AND
  65.         A.process_name = 'fi_submit_payment_order_ap' AND
  66.         A.process_no = pProcessNo;
  67.        
  68.     SELECT CAST(A.process_parameter_value AS bigint) INTO vPaymentOrderApId
  69.     FROM t_process_parameter A
  70.     WHERE A.process_message_id = vProcessId AND
  71.         A.process_parameter_key = 'paymentOrderApId';
  72.    
  73.     SELECT CAST(A.process_parameter_value AS bigint) INTO vUserId
  74.     FROM t_process_parameter A
  75.     WHERE A.process_message_id = vProcessId AND
  76.         A.process_parameter_key = 'userId';
  77.  
  78.     SELECT CAST(A.process_parameter_value AS character varying(14)) INTO vDatetime
  79.     FROM t_process_parameter A
  80.     WHERE A.process_message_id = vProcessId AND
  81.         A.process_parameter_key = 'datetime';
  82.        
  83.     SELECT f_get_value_system_config_by_param_code(pTenantId, 'ValutaBuku') INTO vValutaBuku;  
  84.    
  85.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;     
  86.    
  87.     DELETE FROM tt_fi_payment_order_alloc_balance WHERE session_id = pSessionId;
  88.    
  89.     DELETE FROM tt_fi_payment_alloc_credit WHERE session_id = pSessionId;
  90.        
  91. /*
  92.  * 1.insert cb_trx_cashbank_balance, jika payment order AP amount > 0
  93.  * 2.update status fi_invoice_ap_balance, fi_invoice_tax_ap_balance
  94.  * 3.insert data fi_payment_order_alloc_balance
  95.  * 4.update workflow status payment order AP
  96.  */
  97.     SELECT A.ou_id, f_get_ou_bu_structure(A.ou_id) AS ou, f_get_document_journal(A.doc_type_id) as doc
  98.     FROM fi_payment_order A
  99.     WHERE A.payment_order_id = vPaymentOrderApId INTO result;
  100.    
  101.     vOuId := result.ou_id;
  102.     vOuStructure := result.ou;
  103.     vDocJournal := result.doc;
  104.            
  105.     INSERT INTO cb_trx_cashbank_balance
  106.     (tenant_id, ou_id, doc_type_id, payment_id,
  107.       payment_doc_no, payment_doc_date, payment_remark,
  108.       partner_id, partner_bank_id, curr_code, amount,
  109.       due_date, flg_payment, ref_doc_type_id, ref_id,
  110.       version, create_datetime, create_user_id, update_datetime, update_user_id)
  111.     SELECT A.tenant_id, A.ou_id, A.doc_type_id, A.payment_order_id,
  112.         A.doc_no, A.doc_date, A.remark,
  113.         A.partner_id, A.partner_bank_id, A.curr_code, A.payment_amount,
  114.         A.due_date, 'N', vEmptyId, vEmptyId,
  115.         0, vDatetime, vUserId, vDatetime, vUserId
  116.     FROM fi_payment_order A
  117.     WHERE A.payment_order_id = vPaymentOrderApId AND
  118.         A.payment_amount > 0;
  119.        
  120.     UPDATE fi_invoice_ap_balance SET payment_amount = fi_invoice_ap_balance.payment_amount + A.credit_amount - A.debit_amount,
  121.                                 flg_payment = CASE WHEN (fi_invoice_ap_balance.amount - (fi_invoice_ap_balance.payment_amount + A.credit_amount - A.debit_amount)) <> 0 THEN 'N' ELSE 'Y' END,
  122.                                 update_datetime = vDatetime, update_user_id = vUserId
  123.     FROM fi_payment_order_invoice A
  124.     WHERE A.payment_order_id = vPaymentOrderApId AND
  125.         fi_invoice_ap_balance.doc_type_id = A.ref_doc_type_id AND
  126.         invoice_ap_balance_id = A.ref_id;
  127.  
  128.     UPDATE fi_invoice_tax_ap_balance SET payment_amount = fi_invoice_tax_ap_balance.payment_amount + A.credit_amount - A.debit_amount,
  129.                                 flg_payment = CASE WHEN (fi_invoice_tax_ap_balance.gov_tax_amount - (fi_invoice_tax_ap_balance.payment_amount + A.credit_amount - A.debit_amount)) <> 0 THEN 'N' ELSE 'Y' END,
  130.                                 update_datetime = vDatetime, update_user_id = vUserId
  131.     FROM fi_payment_order_invoice A
  132.     WHERE A.payment_order_id = vPaymentOrderApId AND
  133.         fi_invoice_tax_ap_balance.doc_type_id = A.ref_doc_type_id AND
  134.         invoice_tax_ap_balance_id = A.ref_id;
  135.  
  136.     SELECT COUNT(*) INTO vCountDebtAp
  137.     FROM fi_payment_order_invoice A
  138.     WHERE A.payment_order_id = vPaymentOrderApId AND
  139.             A.debit_amount > 0 AND
  140.             A.credit_amount = 0;
  141.  
  142.     SELECT COUNT(*) INTO vCountCreditAp
  143.     FROM fi_payment_order_invoice A
  144.     WHERE A.payment_order_id = vPaymentOrderApId AND
  145.             A.debit_amount = 0 AND
  146.             A.credit_amount > 0;
  147.            
  148.     IF vCountDebtAp > 0 THEN
  149.        
  150.         INSERT INTO tt_fi_payment_alloc_credit
  151.         (session_id, ranking,
  152.         ref_doc_type_id, ref_id, ref_doc_date, curr_code,
  153.         credit_amount, alloc_amount)
  154.         SELECT pSessionId, RANK() OVER (PARTITION BY A.payment_order_id ORDER BY credit_amount DESC, ref_id),
  155.             A.ref_doc_type_id, A.ref_id,
  156.             fi_get_rate_date_invoice_ap(A.ref_doc_type_id, A.ref_id), A.curr_code,
  157.             A.credit_amount, 0
  158.         FROM fi_payment_order_invoice A
  159.         WHERE A.payment_order_id = vPaymentOrderApId AND
  160.             A.credit_amount > 0 AND
  161.             A.debit_amount = 0;
  162.  
  163.         vStartCount := 1;          
  164.        
  165.         FOR vCursorDebtAp IN SELECT * FROM fi_payment_order_invoice
  166.                             WHERE payment_order_id = vPaymentOrderApId AND
  167.                                     debit_amount > 0 AND credit_amount = 0
  168.                                     ORDER BY debit_amount DESC
  169.         LOOP
  170.             vDebtAmount := vCursorDebtAp.debit_amount;     
  171.             vDocDebtDate := fi_get_rate_date_invoice_ap(vCursorDebtAp.ref_doc_type_id, vCursorDebtAp.ref_id);
  172.            
  173.             FOR i IN vStartCount..vCountCreditAp LOOP
  174.                
  175.                 SELECT credit_amount - alloc_amount INTO vAllocAmount
  176.                 FROM tt_fi_payment_alloc_credit A
  177.                 WHERE A.session_id = pSessionId AND
  178.                     A.ranking = i;
  179.                    
  180.                 IF vAllocAmount > vDebtAmount THEN
  181.                
  182.                     INSERT INTO tt_fi_payment_order_alloc_balance
  183.                     (session_id, payment_order_id, tenant_id, ou_id, flg_alloc,
  184.                     credit_doc_type_id, credit_doc_date, credit_id, credit_curr_code, credit_amount,
  185.                     debit_doc_type_id, debit_doc_date, debit_id, debit_curr_code, debit_amount)
  186.                     SELECT pSessionId, vPaymentOrderApId, pTenantId, vOuId, 'A',
  187.                         A.ref_doc_type_id, A.ref_doc_date, A.ref_id, A.curr_code, vDebtAmount,
  188.                         vCursorDebtAp.ref_doc_type_id, vDocDebtDate, vCursorDebtAp.ref_id, vCursorDebtAp.curr_code, vDebtAmount
  189.                     FROM tt_fi_payment_alloc_credit A
  190.                     WHERE A.session_id = pSessionId AND
  191.                         A.ranking = i;
  192.                    
  193.                     UPDATE tt_fi_payment_alloc_credit SET alloc_amount = alloc_amount + vDebtAmount
  194.                     WHERE session_id = pSessionId AND
  195.                         ranking = i;
  196.                        
  197.                     EXIT;  
  198.                 ELSE
  199.                     INSERT INTO tt_fi_payment_order_alloc_balance
  200.                     (session_id, payment_order_id, tenant_id, ou_id, flg_alloc,
  201.                     credit_doc_type_id, credit_doc_date, credit_id, credit_curr_code, credit_amount,
  202.                     debit_doc_type_id, debit_doc_date, debit_id, debit_curr_code, debit_amount)
  203.                     SELECT pSessionId, vPaymentOrderApId, pTenantId, vOuId, 'A',
  204.                         A.ref_doc_type_id, A.ref_doc_date, A.ref_id, A.curr_code, vAllocAmount,
  205.                         vCursorDebtAp.ref_doc_type_id, vDocDebtDate, vCursorDebtAp.ref_id, vCursorDebtAp.curr_code, vAllocAmount
  206.                     FROM tt_fi_payment_alloc_credit A
  207.                     WHERE A.session_id = pSessionId AND
  208.                         A.ranking = i;
  209.  
  210.                     UPDATE tt_fi_payment_alloc_credit SET alloc_amount = alloc_amount + vAllocAmount
  211.                     WHERE session_id = pSessionId AND
  212.                         ranking = i;
  213.                        
  214.                     vDebtAmount := vDebtAmount - vAllocAmount;
  215.                    
  216.                     vStartCount := i + 1;
  217.                 END IF;
  218.                                    
  219.             END LOOP;          
  220.                    
  221.             --RETURN NEXT vCursorDebtAp; -- return current row of SELECT
  222.         END LOOP;
  223.        
  224.         INSERT INTO tt_fi_payment_order_alloc_balance
  225.         (session_id, payment_order_id, tenant_id, ou_id, flg_alloc,
  226.         credit_doc_type_id, credit_doc_date, credit_id, credit_curr_code, credit_amount,
  227.         debit_doc_type_id, debit_doc_date, debit_id, debit_curr_code, debit_amount)
  228.         SELECT pSessionId, vPaymentOrderApId, pTenantId, vOuId, 'C',
  229.             A.ref_doc_type_id, A.ref_doc_date, A.ref_id, A.curr_code, A.credit_amount - A.alloc_amount,
  230.             vEmptyId, vEmptyValue, vEmptyId, vEmptyValue, 0
  231.         FROM tt_fi_payment_alloc_credit A
  232.         WHERE A.session_id = pSessionId AND
  233.             A.credit_amount - A.alloc_amount > 0;
  234.        
  235.     ELSE
  236.         INSERT INTO tt_fi_payment_order_alloc_balance
  237.         (session_id, payment_order_id, tenant_id, ou_id, flg_alloc,
  238.         credit_doc_type_id, credit_doc_date, credit_id, credit_curr_code, credit_amount,
  239.         debit_doc_type_id, debit_doc_date, debit_id, debit_curr_code, debit_amount)
  240.         SELECT pSessionId, vPaymentOrderApId, pTenantId, vOuId, 'C',
  241.             A.ref_doc_type_id, fi_get_rate_date_invoice_ap(A.ref_doc_type_id, A.ref_id), A.ref_id, A.curr_code, A.credit_amount,
  242.             vEmptyId, vEmptyValue, vEmptyId, vEmptyValue, 0
  243.         FROM fi_payment_order_invoice A
  244.         WHERE A.payment_order_id = vPaymentOrderApId;
  245.            
  246.     END IF;
  247.        
  248.     INSERT INTO fi_payment_order_alloc_balance
  249.     (payment_order_id, tenant_id, ou_id,
  250.     credit_doc_type_id, credit_doc_date, credit_id, credit_curr_code, credit_amount,
  251.     debit_doc_type_id, debit_doc_date, debit_id, debit_curr_code, debit_amount,
  252.     flg_alloc, ref_alloc_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  253.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  254.     SELECT payment_order_id, tenant_id, ou_id,
  255.         credit_doc_type_id, credit_doc_date, credit_id, credit_curr_code, credit_amount,
  256.         debit_doc_type_id, debit_doc_date, debit_id, debit_curr_code, debit_amount,
  257.         flg_alloc, vEmptyId, vEmptyId, vEmptyValue, vEmptyValue,
  258.         0, vDatetime, vUserId, vDatetime, vUserId
  259.     FROM tt_fi_payment_order_alloc_balance
  260.     WHERE session_id = pSessionId;
  261.    
  262.     UPDATE fi_payment_order SET status_doc = vStatusRelease, update_datetime = vDatetime, update_user_id = vUserId
  263.     WHERE payment_order_id = vPaymentOrderApId;
  264.    
  265.     /**
  266.      * Erl 28 oktober 2021,
  267.      * Tidak perlu buat journal dengan syarat
  268.      * 1. Ada debt invoice (Return Purchase Invoice, DN AP, Prepayment Balance) yang digunakan
  269.      * 2. Semua invoice yang digunakan, baik credit invoice (Purchase Invoice, CN AP) maupun debt invoice (Return Purchase Invoice, DN AP, Prepayment Balance), dalam valuta sesuai valuta buku.
  270.      *
  271.      * Note: Prepayment tidak disebutkan, karena di POAP dokumen Prepayment tidak boleh digabung dengan debt invoice, berarti secara tidak langsung tidak termasuk dalam kondisi 1 dan 2.
  272.      */
  273.    
  274.     /*
  275.      * hanya jika PB AP ada lakukan alokasi Credit AP dan Debit AP
  276.      * membuat data transaksi jurnal :
  277.      * 1. buat admin
  278.      * 2. buat temlate jurnal
  279.      */
  280.     SELECT COUNT(*) INTO vCountAllocAP
  281.     FROM tt_fi_payment_order_alloc_balance
  282.     WHERE session_id = pSessionId AND
  283.         flg_alloc = 'A';
  284.        
  285.     RAISE NOTICE 'vCountAllocAP = %',vCountAllocAP;
  286.                
  287.     IF vCountAllocAP > 0 THEN -- ini sudah termasuk syarat 1, kar ada dokumenena bila ada alokasi maka berarti ada dokumen Debt invoice dan credit invoice
  288.         IF EXISTS (
  289.             SELECT 1
  290.             FROM fi_payment_order A
  291.             JOIN fi_payment_order_invoice B ON A.payment_order_id = B.payment_order_id
  292.             WHERE A.payment_order_id = vPaymentOrderApId
  293.             AND A.curr_code <> vValutaBuku -- syarat 2
  294.         ) OR EXISTS (
  295.                 SELECT 1
  296.                 FROM fi_invoice_ap_balance A
  297.                 INNER JOIN fi_payment_order_invoice B ON A.invoice_ap_balance_id = B.ref_id AND B.ref_doc_type_id = vSldPrepaymentDoc
  298.                 WHERE B.payment_order_id  = vPaymentOrderApId
  299.         )
  300.         THEN
  301.    
  302.             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)
  303.             FROM fi_payment_order A
  304.             WHERE A.payment_order_id = vPaymentOrderApId;
  305.                
  306.             SELECT NEXTVAL('gl_journal_trx_seq') INTO vJournalTrxId;
  307.            
  308.             INSERT INTO gl_journal_trx
  309.             (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  310.             ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,  
  311.             ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  312.             "version", create_datetime, create_user_id, update_datetime, update_user_id)
  313.             SELECT vJournalTrxId, A.tenant_id, (vDocJournal).journal_type, A.doc_type_id, A.payment_order_id, A.doc_no, A.doc_date,
  314.                 (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,
  315.                 A.ref_doc_type_id, A.ref_id, A.due_date, A.curr_code, A.remark, vStatusDraft, 'DRAFT',
  316.                 0, vDatetime, vUserId, vDatetime, vUserId
  317.             FROM fi_payment_order A, fi_payment_order_alloc_balance B
  318.             WHERE A.payment_order_id = vPaymentOrderApId AND
  319.                 A.payment_order_id = B.payment_order_id AND
  320.                 B.flg_alloc = 'A'
  321.             GROUP BY A.tenant_id, A.doc_type_id, A.payment_order_id, A.doc_no, A.doc_date, A.partner_id, A.ext_doc_no, A.ext_doc_date, A.ref_doc_type_id, A.ref_id, A.due_date, A.curr_code, A.remark;
  322.            
  323.             /*
  324.              * journal detail debit invoice yang melunasi credit invoice
  325.              * tanggal rate menggunakan tanggal Debt Ap Dokumen
  326.              *
  327.              * jika debit doc type id <> saldo prepayment, maka Credit AP
  328.              * jika debit doc type id = saldo prepayment, maka Credit AP_ADVANCE
  329.              */
  330.             INSERT INTO tt_journal_trx_item
  331.             (session_id, tenant_id, journal_trx_id, line_no,
  332.             ref_doc_type_id, ref_id,
  333.             partner_id, product_id, cashbank_id, ou_rc_id,
  334.             segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  335.             coa_id, curr_code, qty, uom_id,
  336.             amount, journal_date, type_rate,
  337.             numerator_rate, denominator_rate, journal_desc, remark)
  338.             SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  339.                 B.debit_doc_type_id, B.debit_id,
  340.                 A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  341.                 vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  342.                 f_get_ap_coa_partner(A.tenant_id, A.partner_id), B.debit_curr_code, 0, vEmptyId,
  343.                 SUM(B.debit_amount), B.debit_doc_date, vTypeRate,
  344.                 1, 1, 'AP_DEBIT_INVOICE', A.remark
  345.             FROM fi_payment_order A, fi_payment_order_alloc_balance B
  346.             WHERE A.payment_order_id = vPaymentOrderApId AND
  347.                 A.payment_order_id = B.payment_order_id AND
  348.                 B.flg_alloc = 'A' AND
  349.                 B.debit_doc_type_id <> vSldPrepaymentDoc
  350.             GROUP BY A.tenant_id, B.debit_doc_type_id, B.debit_id, A.partner_id, B.debit_curr_code, B.debit_doc_date, A.remark;
  351.        
  352.             INSERT INTO tt_journal_trx_item
  353.             (session_id, tenant_id, journal_trx_id, line_no,
  354.             ref_doc_type_id, ref_id,
  355.             partner_id, product_id, cashbank_id, ou_rc_id,
  356.             segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  357.             coa_id, curr_code, qty, uom_id,
  358.             amount, journal_date, type_rate,
  359.             numerator_rate, denominator_rate, journal_desc, remark)
  360.             SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
  361.                 B.debit_doc_type_id, B.debit_id,
  362.                 A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  363.                 vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  364.                 f_get_coa_id_for_prepayment(A.tenant_id), B.debit_curr_code, 0, vEmptyId,
  365.                 SUM(B.debit_amount), B.debit_doc_date, vTypeRate,
  366.                 1, 1, 'AP_ADVANCE', A.remark
  367.             FROM fi_payment_order A, fi_payment_order_alloc_balance B
  368.             WHERE A.payment_order_id = vPaymentOrderApId AND
  369.                 A.payment_order_id = B.payment_order_id AND
  370.                 B.flg_alloc = 'A' AND
  371.                 B.debit_doc_type_id = vSldPrepaymentDoc
  372.             GROUP BY A.tenant_id, B.debit_doc_type_id, B.debit_id, A.partner_id, B.debit_curr_code, B.debit_doc_date, A.remark;
  373.            
  374.             /*
  375.              * journal detail credit invoice yang dilunasi oleh debit invoice
  376.              * tanggal rate menggunakan tanggal invoice
  377.              */
  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.                 B.credit_doc_type_id, B.credit_id,
  388.                 A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  389.                 vEmptyId, vSignDebit, vSystemCOA, vEmptyId,
  390.                 f_get_ap_coa_partner(A.tenant_id, A.partner_id), B.credit_curr_code, 0, vEmptyId,
  391.                 SUM(B.credit_amount), B.credit_doc_date, vTypeRate,
  392.                 1, 1, 'AP_CREDIT_INVOICE', A.remark
  393.             FROM fi_payment_order A, fi_payment_order_alloc_balance B
  394.             WHERE A.payment_order_id = vPaymentOrderApId AND
  395.                 A.payment_order_id = B.payment_order_id AND
  396.                 B.flg_alloc = 'A'
  397.             GROUP BY A.tenant_id, B.credit_doc_type_id, B.credit_id, A.partner_id, B.credit_curr_code, B.credit_doc_date, A.remark;
  398.        
  399.             INSERT INTO gl_journal_trx_item
  400.             (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.             "version", create_datetime, create_user_id, update_datetime, update_user_id)
  408.             SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  409.                 A.ref_doc_type_id, A.ref_id,
  410.                 A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  411.                 A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  412.                 A.coa_id, A.curr_code, A.qty, A.uom_id,
  413.                 A.amount, A.journal_date, A.type_rate,
  414.                 A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  415.                 0, vDatetime, vUserId, vDatetime, vUserId
  416.             FROM tt_journal_trx_item A
  417.             WHERE A.session_id = pSessionId AND
  418.                 journal_desc IN ('AP_CREDIT_INVOICE');
  419.        
  420.             INSERT INTO gl_journal_trx_mapping
  421.             (tenant_id, journal_trx_id, line_no,
  422.             ref_doc_type_id, ref_id,
  423.             partner_id, product_id, cashbank_id, ou_rc_id,
  424.             segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  425.             coa_id, curr_code, qty, uom_id,
  426.             amount, journal_date, type_rate,
  427.             numerator_rate, denominator_rate, journal_desc, remark,
  428.             "version", create_datetime, create_user_id, update_datetime, update_user_id)
  429.             SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  430.                 A.ref_doc_type_id, A.ref_id,
  431.                 A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  432.                 A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  433.                 A.coa_id, A.curr_code, A.qty, A.uom_id,
  434.                 A.amount, A.journal_date, A.type_rate,
  435.                 A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  436.                 0, vDatetime, vUserId, vDatetime, vUserId
  437.             FROM tt_journal_trx_item A
  438.             WHERE A.session_id = pSessionId AND
  439.                 journal_desc IN ('AP_DEBIT_INVOICE', 'AP_ADVANCE');
  440.                
  441.             DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  442.         END IF;
  443.     END IF;
  444.    
  445.     DELETE FROM tt_fi_payment_order_alloc_balance WHERE session_id = pSessionId;
  446.    
  447.     DELETE FROM tt_fi_payment_alloc_credit WHERE session_id = pSessionId;
  448.        
  449. END;
  450. $BODY$
  451.   LANGUAGE plpgsql VOLATILE
  452.   COST 100;
  453.   /
Add Comment
Please, Sign In to add comment