Advertisement
tercnem

Untitled

Apr 20th, 2020
996
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION fi_submit_invoice_ar(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.     vProcessName            character varying(100);
  10.     vInvoiceArId            bigint;
  11.     vInvoiceArBalanceId     bigint;
  12.     vUserId                 bigint;
  13.     vDatetime               character varying(14);
  14.     vStatusRelease          character varying(1);
  15.     vStatusDraft            character varying(1);  
  16.    
  17.     -- For Journal
  18.     vEmptyId                bigint;
  19.     vSignDebt               character varying(1);
  20.     vSignCredit             character varying(1);
  21.     vTypeRate               character varying(5);
  22.     vActivityCOA            character varying(10);
  23.     vSystemCOA              character varying(10);
  24.     vTaxCOA                 character varying(10);
  25.     vEmptyValue             character varying(1);
  26.     vFlgNo                  character varying(1);
  27.    
  28.     vCreditNoteDoc          bigint;
  29.     vDebtNoteDoc            bigint;
  30.     vDownPaymentDoc         bigint;
  31.     vFakturPajakKeluaran    bigint;
  32.     vNotaReturPajakKeluaran bigint;
  33.     vAdvanceInvArDoc        bigint;
  34.    
  35.     vDocTypeId              bigint;
  36.     vJournalTrxId           bigint;
  37.  
  38.     vPosDocTypeId           bigint;
  39.     vDocJournal             DOC_JOURNAL%ROWTYPE;
  40.     vOuStructure            OU_BU_STRUCTURE%ROWTYPE;
  41.     result                  RECORD;
  42.    
  43.     vTotalAmount            numeric;
  44.     vTotalTaxBaseAmount     numeric;
  45.     vTotalTaxAmount         numeric;
  46.    
  47.     vJointDppPpn            character varying(1);
  48.  
  49. BEGIN
  50.     vProcessName := 'fi_submit_invoice_ar';
  51.    
  52.     vCreditNoteDoc := 251;
  53.     vDebtNoteDoc := 241;
  54.     vDownPaymentDoc := 242;
  55.     vAdvanceInvArDoc := 243;   
  56.     vFakturPajakKeluaran := 281;
  57.     vNotaReturPajakKeluaran := 282;
  58.    
  59.     vPosDocTypeId := 401;
  60.    
  61.     vEmptyId := -99;
  62.     vEmptyValue := ' ';
  63.     vStatusRelease := 'R';
  64.     vStatusDraft := 'D';   
  65.     vSignDebt := 'D';
  66.     vSignCredit := 'C';
  67.     vTypeRate := 'COM';
  68.     vActivityCOA := 'ACTIVITY';
  69.     vSystemCOA := 'SYSTEM';
  70.     vTaxCOA := 'TAX';  
  71.     vFlgNo := 'N';
  72.     vJointDppPpn := f_get_value_system_config_by_param_code(pTenantId, 'joint.dpp.ppn.balance');
  73.    
  74.     vInvoiceArId := CAST(f_get_process_parameter_value(vProcessName, pProcessNo, pTenantId, 'invoiceArId') AS bigint);
  75.     vUserId := CAST(f_get_process_parameter_value(vProcessName, pProcessNo, pTenantId, 'userId') AS bigint);
  76.     vDatetime := CAST(f_get_process_parameter_value(vProcessName, pProcessNo, pTenantId, 'datetime') AS character varying(14));
  77.    
  78.     SELECT A.doc_type_id, f_get_ou_bu_structure(A.ou_id) AS ou, f_get_document_journal(A.doc_type_id) as doc, A.ref_doc_type_id as ref_doc_type_id
  79.     FROM fi_invoice_ar A
  80.     WHERE A.invoice_ar_id = vInvoiceArId INTO result;
  81.  
  82.     vDocTypeId := result.doc_type_id;
  83.     vOuStructure := result.ou;
  84.     vDocJournal := result.doc; 
  85.    
  86.     SELECT COALESCE(SUM(A.add_amount), 0) INTO vTotalAmount
  87.     FROM fi_invoice_ar_cost A
  88.     WHERE A.invoice_ar_id = vInvoiceArId;
  89.    
  90.     SELECT COALESCE(SUM(A.base_amount), 0), COALESCE(SUM(A.tax_amount), 0) INTO vTotalTaxBaseAmount, vTotalTaxAmount
  91.     FROM fi_invoice_ar_tax A
  92.     WHERE A.invoice_ar_id = vInvoiceArId;
  93.  
  94.     /*
  95.      * 1. Update Header Status document
  96.      * 2. Update header amount, tax base amount dan tax amount
  97.      * 3. insert data ke fi_invoice_ar_balance
  98.      *  a. amount numeric = total data add_amount dari invoice_ar_cost
  99.      *  b. payment_amount = 0
  100.      *  c. apabila amount_numeric = 0, maka flg_payment = Y, selain itu flg_payment = N
  101.      *  d. amount diberi nilai negatif untuk type document Credit Note AR
  102.      * 4. insert data summary tax ke fi_invoice_tax_ar_balance
  103.      *  a. Untuk transaksi Nota Debit AR (241), akan membuat doc_type_id menjadi Faktur Pajak Keluaran (281)
  104.      *  b. Untuk transaksi Nota Credit AR (251), akan membuat doc_type_id menjadi Nota Retur Pajak Keluaran (282)
  105.      *  c. tax_amount dan gov_tax_amount diberi nilai negatif untuk type document Credit Note AR
  106.      * 5. Create journal
  107.      */
  108.    
  109.     -- 1
  110.     UPDATE  fi_invoice_ar
  111.     SET     status_doc = vStatusRelease, version = version + 1, update_datetime = vDatetime, update_user_id = vUserId
  112.     WHERE   invoice_ar_id = vInvoiceArId;
  113.    
  114.     -- 2
  115.     UPDATE  fi_invoice_ar
  116.     SET     total_amount = vTotalAmount,
  117.             total_tax_base_amount = vTotalTaxBaseAmount,
  118.             tax_amount = vTotalTaxAmount
  119.     WHERE   invoice_ar_id = vInvoiceArId;
  120.    
  121.     -- Modified by Putra, 11 March 2015 add next val used for function fi_insert_invoice_ar_balance_due_date
  122.     SELECT nextval('fi_invoice_ar_balance_seq') INTO vInvoiceArBalanceId;
  123.    
  124.     IF vJointDppPpn = 'N' THEN
  125.         -- 3
  126.         INSERT INTO fi_invoice_ar_balance (
  127.                 invoice_ar_balance_id, tenant_id, ou_id, doc_type_id, invoice_ar_id,
  128.                 doc_no, doc_date, ext_doc_no, ext_doc_date,
  129.                 ref_doc_type_id, ref_id, partner_id, due_date,
  130.                 curr_code, amount, remark, payment_amount, flg_payment,
  131.                 "version", create_datetime, create_user_id, update_datetime, update_user_id)
  132.         SELECT  vInvoiceArBalanceId, A.tenant_id, A.ou_id, A.doc_type_id, A.invoice_ar_id,
  133.                 A.doc_no, A.doc_date, A.ext_doc_no, A.ext_doc_date,
  134.                 A.ref_doc_type_id, A.ref_id, A.partner_id, A.due_date,
  135.                 A.curr_code, CASE WHEN doc_type_id = vCreditNoteDoc THEN A.total_amount * - 1 ELSE A.total_amount END, A.remark, 0, 'N',
  136.                 0, vDatetime, vUserId, vDatetime, vUserId
  137.         FROM    fi_invoice_ar A
  138.         WHERE   A.invoice_ar_id = vInvoiceArId;
  139.        
  140.         -- 4
  141.         -- Modified by fredi, 2 Dec add insert gov_base_amount into fi_invoice_tax_ap_balance
  142.         -- get gov_base_tax_amount from fi_invoice_ar_tax.base_amount
  143.         INSERT INTO fi_invoice_tax_ar_balance (
  144.                 tenant_id, ou_id, doc_type_id, invoice_ar_balance_id, partner_id,
  145.                 tax_id, tax_no, tax_date, curr_code, tax_amount,
  146.                 tax_curr_code, gov_tax_amount, due_date, remark,
  147.                 payment_amount, flg_payment,
  148.                 "version", create_datetime, create_user_id, update_datetime, update_user_id,
  149.                 gov_base_amount )
  150.         SELECT  A.tenant_id, A.ou_id, CASE WHEN A.doc_type_id = vCreditNoteDoc THEN vNotaReturPajakKeluaran ELSE vFakturPajakKeluaran END, vInvoiceArBalanceId, A.partner_id,       -- ?? Kapan OU RC digunakan
  151.                 B.tax_id, B.tax_no, B.tax_date, A.curr_code, CASE WHEN A.doc_type_id = vCreditNoteDoc THEN B.tax_amount * -1 ELSE B.tax_amount END,
  152.                 B.tax_curr_code, CASE WHEN A.doc_type_id = vCreditNoteDoc THEN B.gov_tax_amount *  -1 ELSE B.gov_tax_amount END, A.due_date, B.remark,      -- ?? Apakah menggunakan due date yang sama dengan data header nya
  153.                 0, 'N',
  154.                 0, vDatetime, vUserId, vDatetime, vUserId,
  155.                 CASE WHEN A.doc_type_id = vCreditNoteDoc THEN f_get_amount_in_gov_tax_rate(A.tenant_id, B.base_amount, B.tax_date, A.curr_code) * -1 ELSE f_get_amount_in_gov_tax_rate(A.tenant_id, B.base_amount, B.tax_date, A.curr_code) END
  156.         FROM    fi_invoice_ar A
  157.         INNER JOIN fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
  158.         WHERE A.invoice_ar_id = vInvoiceArId;
  159.        
  160.         /*
  161.          * Putra, 11 March 2015
  162.          * Call function for insert due_date from fi_invoice_ar_balance into fi_invoice_ar_balance_due_date
  163.          * Call function for insert due_date from fi_invoice_tax_ar_balance into fi_invoice_tax_ar_balance_due_date
  164.          * @see http://jleaf.org:8181/browse/ERPDB-211
  165.          */
  166.         -- PERFORM fi_insert_invoice_ar_balance_due_date(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
  167.        
  168.         /**
  169.          * Fredi, 2 Dec 2014
  170.          * Call function for insert tax data into fi_vat_out_reporting for tax
  171.          * @see http://jleaf.org:8181/browse/ERPDB-211
  172.          */
  173.         -- PERFORM fi_insert_vat_out_for_reporting(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
  174.    
  175.         /**
  176.          * add by fredi, 1 Feb 2016
  177.          * - insert data for vat out efaktur
  178.          * @see http://jleaf.org:8112/issue/ERP-52
  179.          */
  180.         -- PERFORM fi_insert_vat_out_for_efaktur(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
  181.         -- PERFORM fi_insert_return_vat_out_for_efaktur(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
  182.     ELSE
  183.         INSERT INTO fi_invoice_ar_balance (
  184.             invoice_ar_balance_id, tenant_id, ou_id, doc_type_id, invoice_ar_id,
  185.             doc_no, doc_date, ext_doc_no, ext_doc_date,
  186.             ref_doc_type_id, ref_id, partner_id, due_date,
  187.             curr_code, amount, remark, payment_amount, flg_payment,
  188.             "version", create_datetime, create_user_id, update_datetime, update_user_id)
  189.         SELECT  vInvoiceArBalanceId, A.tenant_id, A.ou_id, A.doc_type_id, A.invoice_ar_id,
  190.             A.doc_no, A.doc_date, A.ext_doc_no, A.ext_doc_date,
  191.             A.ref_doc_type_id, A.ref_id, A.partner_id, A.due_date,
  192.             A.curr_code, CASE WHEN doc_type_id = vCreditNoteDoc THEN (A.total_amount + COALESCE(B.gov_tax_amount, 0)) * - 1 ELSE (A.total_amount + COALESCE(B.gov_tax_amount, 0)) END, A.remark, 0, 'N',
  193.             0, vDatetime, vUserId, vDatetime, vUserId
  194.         FROM    fi_invoice_ar A
  195.         LEFT OUTER JOIN fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
  196.         WHERE   A.invoice_ar_id = vInvoiceArId;
  197.    
  198.         /**
  199.          * mod by Didit, 29 Nov 2016
  200.          * untuk yang ref dari POS tidak perlu inser e-faktur
  201.          * karena pakai faktur pajak gabungan
  202.          */
  203.         IF result.ref_doc_type_id <> vPosDocTypeId THEN
  204.         /*
  205.             PERFORM fi_insert_invoice_ar_balance_due_date(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
  206.    
  207.             PERFORM fi_insert_vat_out_invoice_ar_for_reporting(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
  208.    
  209.             PERFORM fi_insert_vat_out_invoice_ar_for_efaktur(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
  210.             PERFORM fi_insert_return_vat_out_invoice_ar_for_efaktur(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
  211.             */
  212.         END IF;
  213.     END IF;
  214.    
  215.   -- untuk yang doctypeidnya = POS tidak di jurnal. by Ping An, 6 Nov 2015
  216.     IF result.ref_doc_type_id <> vPosDocTypeId THEN
  217.     -- 5
  218.     /*
  219.      * membuat data transaksi jurnal :
  220.      * 1. buat admin
  221.      * 2. buat temlate jurnal
  222.      */
  223.     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)
  224.     FROM fi_invoice_ar A
  225.     WHERE A.invoice_ar_id = vInvoiceArId;
  226.        
  227.     SELECT NEXTVAL('gl_journal_trx_seq') INTO vJournalTrxId;
  228.    
  229.     INSERT INTO gl_journal_trx
  230.     (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  231.     ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,  
  232.     ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  233.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  234.     SELECT vJournalTrxId, A.tenant_id, (vDocJournal).journal_type, A.doc_type_id, A.invoice_ar_id, A.doc_no, A.doc_date,
  235.         (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,
  236.         A.ref_doc_type_id, A.ref_id, A.due_date, A.curr_code, A.remark, vStatusDraft, 'DRAFT',
  237.         0, vDatetime, vUserId, vDatetime, vUserId
  238.     FROM fi_invoice_ar A
  239.     WHERE A.invoice_ar_id = vInvoiceArId;
  240.  
  241.     IF vDocTypeId = vCreditNoteDoc THEN
  242.         -- a1. Nota Kredit AR
  243.         --      D   m_activity_gl                   ACTIVITY    AR_COST_DEBIT   (amount > 0)
  244.         --      D   PajakPertambahanNilai - m_tax   TAX         VAT_OUT         gov tax amount
  245.         --      K   m_activity_gl                   ACTIVITY    AR_COST_CREDIT  (amount < 0)
  246.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_CREDIT
  247.         --      K   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_DEBIT, VAT_OUT
  248.        
  249.         --      D   m_activity_gl                   ACTIVITY    AR_COST_DEBIT   (amount > 0)
  250.         INSERT INTO tt_journal_trx_item
  251.             (   session_id, tenant_id, journal_trx_id, line_no,
  252.                 ref_doc_type_id, ref_id,
  253.                 partner_id, product_id, cashbank_id, ou_rc_id,
  254.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  255.                 coa_id, curr_code, qty, uom_id,
  256.                 amount, journal_date, type_rate,
  257.                 numerator_rate, denominator_rate, journal_desc, remark)
  258.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  259.                 A.doc_type_id, B.invoice_ar_cost_id,
  260.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  261. -- NK, 30 Agustus 2014 - add segment_id                
  262.                 B.segment_id, vSignDebt, vActivityCOA, B.activity_gl_id,
  263.                 D.coa_id, A.curr_code, 0, vEmptyId,
  264.                 B.add_amount, A.doc_date, vTypeRate,
  265.                 1, 1, 'AR_COST_DEBIT', B.remark
  266.         FROM    fi_invoice_ar A
  267.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  268.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  269.         WHERE   A.invoice_ar_id = vInvoiceArId AND
  270.                 B.add_amount > 0;
  271.    
  272.         --      K   m_activity_gl                   ACTIVITY    AR_COST_CREDIT  (amount < 0)
  273.         INSERT INTO tt_journal_trx_item
  274.             (   session_id, tenant_id, journal_trx_id, line_no,
  275.                 ref_doc_type_id, ref_id,
  276.                 partner_id, product_id, cashbank_id, ou_rc_id,
  277.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  278.                 coa_id, curr_code, qty, uom_id,
  279.                 amount, journal_date, type_rate,
  280.                 numerator_rate, denominator_rate, journal_desc, remark)
  281.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  282.                 A.doc_type_id, B.invoice_ar_cost_id,
  283.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  284. -- NK, 30 Agustus 2014 - add segment_id                
  285.                 B.segment_id, vSignCredit, vActivityCOA, B.activity_gl_id,
  286.                 D.coa_id, A.curr_code, 0, vEmptyId,
  287.                 -1 * B.add_amount, A.doc_date, vTypeRate,
  288.                 1, 1, 'AR_COST_CREDIT', B.remark
  289.         FROM    fi_invoice_ar A
  290.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  291.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  292.         WHERE   A.invoice_ar_id = vInvoiceArId AND
  293.                 B.add_amount < 0;
  294.    
  295.         --      D   PajakPertambahanNilai - m_tax   TAX         VAT_OUT         gov tax amount
  296.         INSERT INTO tt_journal_trx_item
  297.             (   session_id, tenant_id, journal_trx_id, line_no,
  298.                 ref_doc_type_id, ref_id,
  299.                 partner_id, product_id, cashbank_id, ou_rc_id,
  300.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  301.                 coa_id, curr_code, qty, uom_id,
  302.                 amount, journal_date, type_rate,
  303.                 numerator_rate, denominator_rate, journal_desc, remark)
  304.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  305.                 A.doc_type_id, B.invoice_ar_tax_id,
  306.                 A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  307.                 vEmptyId, vSignDebt, vTaxCOA, vEmptyId,
  308.                 D.create_coa_id, D.tax_curr_code, 0, vEmptyId,
  309.                 B.gov_tax_amount, A.doc_date, vTypeRate,
  310.                 1, 1, 'VAT_OUT', B.remark
  311.         FROM    fi_invoice_ar A
  312.         INNER JOIN  fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
  313.         INNER JOIN m_tax D ON B.tax_id = D.tax_id
  314.         WHERE   A.invoice_ar_id = vInvoiceArId;
  315.    
  316.         --      K   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_DEBIT, VAT_IN
  317.         INSERT INTO tt_journal_trx_item
  318.             (   session_id, tenant_id, journal_trx_id, line_no,
  319.                 ref_doc_type_id, ref_id,
  320.                 partner_id, product_id, cashbank_id, ou_rc_id,
  321.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  322.                 coa_id, curr_code, qty, uom_id,
  323.                 amount, journal_date, type_rate,
  324.                 numerator_rate, denominator_rate, journal_desc, remark)
  325.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  326.             vEmptyId, vEmptyId,
  327.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  328.             vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  329.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  330.             SUM(A.amount), A.journal_date, vTypeRate,
  331.             1, 1, 'AR', vEmptyValue
  332.         FROM tt_journal_trx_item A
  333.         WHERE A.session_id = pSessionId AND
  334.             A.journal_desc IN ('AR_COST_DEBIT','VAT_OUT')
  335.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  336.             A.partner_id, A.curr_code, A.journal_date;
  337.    
  338.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_CREDIT
  339.         INSERT INTO tt_journal_trx_item
  340.             (   session_id, tenant_id, journal_trx_id, line_no,
  341.                 ref_doc_type_id, ref_id,
  342.                 partner_id, product_id, cashbank_id, ou_rc_id,
  343.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  344.                 coa_id, curr_code, qty, uom_id,
  345.                 amount, journal_date, type_rate,
  346.                 numerator_rate, denominator_rate, journal_desc, remark)
  347.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  348.             vEmptyId, vEmptyId,
  349.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  350.             vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
  351.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  352.             SUM(A.amount), A.journal_date, vTypeRate,
  353.             1, 1, 'AR', vEmptyValue
  354.         FROM tt_journal_trx_item A
  355.         WHERE A.session_id = pSessionId AND
  356.             A.journal_desc IN ('AR_COST_CREDIT')
  357.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  358.             A.partner_id, A.curr_code, A.journal_date;
  359.         -- END of insert tt_journal_trx_item for Nota Kredit
  360.        
  361.     ELSE IF vDocTypeId = vDownPaymentDoc THEN  
  362.    
  363.         --      K   m_activity_gl                   SYSTEM  AR_ADVANCE
  364.         INSERT INTO tt_journal_trx_item
  365.             (   session_id, tenant_id, journal_trx_id, line_no,
  366.                 ref_doc_type_id, ref_id,
  367.                 partner_id, product_id, cashbank_id, ou_rc_id,
  368.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  369.                 coa_id, curr_code, qty, uom_id,
  370.                 amount, journal_date, type_rate,
  371.                 numerator_rate, denominator_rate, journal_desc, remark)
  372.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  373.                 A.doc_type_id, B.invoice_ar_cost_id,
  374.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  375. -- NK, 30 Agustus 2014 - add segment_id                
  376.                 B.segment_id, vSignCredit, vSystemCOA, B.activity_gl_id,
  377.                 D.coa_id, A.curr_code, 0, vEmptyId,
  378.                 B.add_amount, A.doc_date, vTypeRate,
  379.                 1, 1, 'AR_ADVANCE', B.remark
  380.         FROM    fi_invoice_ar A
  381.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  382.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  383.         WHERE   A.invoice_ar_id = vInvoiceArId;
  384.        
  385.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_ADVANCE
  386.         INSERT INTO tt_journal_trx_item
  387.             (   session_id, tenant_id, journal_trx_id, line_no,
  388.                 ref_doc_type_id, ref_id,
  389.                 partner_id, product_id, cashbank_id, ou_rc_id,
  390.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  391.                 coa_id, curr_code, qty, uom_id,
  392.                 amount, journal_date, type_rate,
  393.                 numerator_rate, denominator_rate, journal_desc, remark)
  394.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  395.             vEmptyId, vEmptyId,
  396.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  397.             vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
  398.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  399.             SUM(A.amount), A.journal_date, vTypeRate,
  400.             1, 1, 'AR', vEmptyValue
  401.         FROM tt_journal_trx_item A
  402.         WHERE A.session_id = pSessionId AND
  403.             A.journal_desc IN ('AR_ADVANCE')
  404.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  405.             A.partner_id, A.curr_code, A.journal_date;
  406.    
  407.         -- END of insert tt_journal_trx_item for DownPayment
  408.    
  409.     ELSE IF vDocTypeId = vAdvanceInvArDoc THEN 
  410.    
  411.         /*
  412.         INSERT INTO sl_so_balance_advance_invoice
  413.         (tenant_id, ou_id, partner_id, so_id, ref_doc_type_id, ref_id,
  414.         advance_curr_code, advance_amount, flg_invoice, flg_invoice_temp, invoice_id,
  415.         version, create_datetime, create_user_id, update_datetime, update_user_id,
  416.         ref_doc_no, ref_doc_date, tax_id, tax_percentage, tax_amount )
  417.         SELECT A.tenant_id, A.ou_id, A.partner_id, A.ref_id, A.doc_type_id, A.invoice_ar_id,
  418.         A.curr_code, B.base_amount, 'N', 'N', vEmptyId,
  419.         1, A.update_datetime, A.update_user_id, A.update_datetime, A.update_user_id,
  420.         A.doc_no, A.doc_date, B.tax_id, B.tax_percentage, B.tax_amount
  421.         FROM fi_invoice_ar A, fi_invoice_ar_tax B
  422.         WHERE A.invoice_ar_id = vInvoiceArId AND A.invoice_ar_id = B.invoice_ar_id;
  423.         */
  424.    
  425.         --      K   m_activity_gl                   SYSTEM  AR_ADVANCE
  426.         INSERT INTO tt_journal_trx_item
  427.             (   session_id, tenant_id, journal_trx_id, line_no,
  428.                 ref_doc_type_id, ref_id,
  429.                 partner_id, product_id, cashbank_id, ou_rc_id,
  430.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  431.                 coa_id, curr_code, qty, uom_id,
  432.                 amount, journal_date, type_rate,
  433.                 numerator_rate, denominator_rate, journal_desc, remark)
  434.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  435.                 A.doc_type_id, B.invoice_ar_cost_id,
  436.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  437.                 B.segment_id, vSignCredit, vSystemCOA, B.activity_gl_id,
  438.                 D.coa_id, A.curr_code, 0, vEmptyId,
  439.                 B.add_amount, A.doc_date, vTypeRate,
  440.                 1, 1, 'AR_ADVANCE', B.remark
  441.         FROM    fi_invoice_ar A
  442.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  443.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  444.         WHERE   A.invoice_ar_id = vInvoiceArId;
  445.        
  446.         --      K   PajakPertambahanNilai - m_tax   TAX         VAT_OUT         gov tax amount
  447.         INSERT INTO tt_journal_trx_item
  448.             (   session_id, tenant_id, journal_trx_id, line_no,
  449.                 ref_doc_type_id, ref_id,
  450.                 partner_id, product_id, cashbank_id, ou_rc_id,
  451.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  452.                 coa_id, curr_code, qty, uom_id,
  453.                 amount, journal_date, type_rate,
  454.                 numerator_rate, denominator_rate, journal_desc, remark)
  455.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  456.                 A.doc_type_id, B.invoice_ar_tax_id,
  457.                 A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  458.                 vEmptyId, vSignCredit, vTaxCOA, vEmptyId,
  459.                 D.create_coa_id, D.tax_curr_code, 0, vEmptyId,
  460.                 B.gov_tax_amount, A.doc_date, vTypeRate,
  461.                 1, 1, 'VAT_OUT', B.remark
  462.         FROM    fi_invoice_ar A
  463.         INNER JOIN  fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
  464.         INNER JOIN m_tax D ON B.tax_id = D.tax_id
  465.         WHERE   A.invoice_ar_id = vInvoiceArId;
  466.        
  467.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_ADVANCE
  468.         INSERT INTO tt_journal_trx_item
  469.             (   session_id, tenant_id, journal_trx_id, line_no,
  470.                 ref_doc_type_id, ref_id,
  471.                 partner_id, product_id, cashbank_id, ou_rc_id,
  472.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  473.                 coa_id, curr_code, qty, uom_id,
  474.                 amount, journal_date, type_rate,
  475.                 numerator_rate, denominator_rate, journal_desc, remark)
  476.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  477.             vEmptyId, vEmptyId,
  478.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  479.             vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
  480.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  481.             SUM(A.amount), A.journal_date, vTypeRate,
  482.             1, 1, 'AR', vEmptyValue
  483.         FROM tt_journal_trx_item A
  484.         WHERE A.session_id = pSessionId AND
  485.             A.journal_desc IN ('AR_ADVANCE', 'VAT_OUT')
  486.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  487.             A.partner_id, A.curr_code, A.journal_date;
  488.    
  489.         -- END of insert tt_journal_trx_item for DownPayment
  490.  
  491.     ELSE
  492.         -- b. Nota Debet
  493.         --      K   m_activity_gl                   ACTIVITY    AR_COST_CREDIT  (amount > 0)
  494.         --      K   PajakPertambahanNilai - m_tax   TAX         VAT_OUT         gov tax amount
  495.         --      D   m_activity_gl                   ACTIVITY    AR_COST_DEBIT   (amount < 0)
  496.         --      K   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_DEBIT
  497.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_CREDIT, VAT_OUT
  498.    
  499.         --      K   m_activity_gl                   ACTIVITY    AR_COST_CREDIT  (amount > 0)
  500.         INSERT INTO tt_journal_trx_item
  501.             (   session_id, tenant_id, journal_trx_id, line_no,
  502.                 ref_doc_type_id, ref_id,
  503.                 partner_id, product_id, cashbank_id, ou_rc_id,
  504.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  505.                 coa_id, curr_code, qty, uom_id,
  506.                 amount, journal_date, type_rate,
  507.                 numerator_rate, denominator_rate, journal_desc, remark)
  508.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  509.                 A.doc_type_id, B.invoice_ar_cost_id,
  510.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  511. -- NK, 30 Agustus 2014 - add segment_id                
  512.                 B.segment_id, vSignCredit, vActivityCOA, B.activity_gl_id,
  513.                 D.coa_id, A.curr_code, 0, vEmptyId,
  514.                 B.add_amount, A.doc_date, vTypeRate,
  515.                 1, 1, 'AR_COST_CREDIT', B.remark
  516.         FROM    fi_invoice_ar A
  517.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  518.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  519.         WHERE   A.invoice_ar_id = vInvoiceArId AND
  520.                 B.add_amount > 0;
  521.    
  522.         --      D   m_activity_gl                   ACTIVITY    AR_COST_DEBIT   (amount < 0)
  523.         INSERT INTO tt_journal_trx_item
  524.             (   session_id, tenant_id, journal_trx_id, line_no,
  525.                 ref_doc_type_id, ref_id,
  526.                 partner_id, product_id, cashbank_id, ou_rc_id,
  527.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  528.                 coa_id, curr_code, qty, uom_id,
  529.                 amount, journal_date, type_rate,
  530.                 numerator_rate, denominator_rate, journal_desc, remark)
  531.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  532.                 A.doc_type_id, B.invoice_ar_cost_id,
  533.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  534. -- NK, 30 Agustus 2014 - add segment_id                
  535.                 B.segment_id, vSignDebt, vActivityCOA, B.activity_gl_id,
  536.                 D.coa_id, A.curr_code, 0, vEmptyId,
  537.                 -1 * B.add_amount, A.doc_date, vTypeRate,
  538.                 1, 1, 'AR_COST_DEBIT', B.remark
  539.         FROM    fi_invoice_ar A
  540.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  541.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  542.         WHERE   A.invoice_ar_id = vInvoiceArId AND
  543.                 B.add_amount < 0;
  544.    
  545.         --      K   PajakPertambahanNilai - m_tax   TAX         VAT_OUT         gov tax amount
  546.         INSERT INTO tt_journal_trx_item
  547.             (   session_id, tenant_id, journal_trx_id, line_no,
  548.                 ref_doc_type_id, ref_id,
  549.                 partner_id, product_id, cashbank_id, ou_rc_id,
  550.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  551.                 coa_id, curr_code, qty, uom_id,
  552.                 amount, journal_date, type_rate,
  553.                 numerator_rate, denominator_rate, journal_desc, remark)
  554.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  555.                 A.doc_type_id, B.invoice_ar_tax_id,
  556.                 A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  557.                 vEmptyId, vSignCredit, vTaxCOA, vEmptyId,
  558.                 D.create_coa_id, D.tax_curr_code, 0, vEmptyId,
  559.                 B.gov_tax_amount, A.doc_date, vTypeRate,
  560.                 1, 1, 'VAT_OUT', B.remark
  561.         FROM    fi_invoice_ar A
  562.         INNER JOIN  fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
  563.         INNER JOIN m_tax D ON B.tax_id = D.tax_id
  564.         WHERE   A.invoice_ar_id = vInvoiceArId;
  565.    
  566.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_CREDIT, VAT_OUT
  567.         INSERT INTO tt_journal_trx_item
  568.             (   session_id, tenant_id, journal_trx_id, line_no,
  569.                 ref_doc_type_id, ref_id,
  570.                 partner_id, product_id, cashbank_id, ou_rc_id,
  571.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  572.                 coa_id, curr_code, qty, uom_id,
  573.                 amount, journal_date, type_rate,
  574.                 numerator_rate, denominator_rate, journal_desc, remark)
  575.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  576.             vEmptyId, vEmptyId,
  577.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  578.             vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
  579.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  580.             SUM(A.amount), A.journal_date, vTypeRate,
  581.             1, 1, 'AR', vEmptyValue
  582.         FROM tt_journal_trx_item A
  583.         WHERE A.session_id = pSessionId AND
  584.             A.journal_desc IN ('AR_COST_CREDIT','VAT_OUT')
  585.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  586.             A.partner_id, A.curr_code, A.journal_date;
  587.    
  588.         --      K   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_DEBIT
  589.         INSERT INTO tt_journal_trx_item
  590.             (   session_id, tenant_id, journal_trx_id, line_no,
  591.                 ref_doc_type_id, ref_id,
  592.                 partner_id, product_id, cashbank_id, ou_rc_id,
  593.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  594.                 coa_id, curr_code, qty, uom_id,
  595.                 amount, journal_date, type_rate,
  596.                 numerator_rate, denominator_rate, journal_desc, remark)
  597.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  598.             vEmptyId, vEmptyId,
  599.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  600.             vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  601.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  602.             SUM(A.amount), A.journal_date, vTypeRate,
  603.             1, 1, 'AR', vEmptyValue
  604.         FROM tt_journal_trx_item A
  605.         WHERE A.session_id = pSessionId AND
  606.             A.journal_desc IN ('AR_COST_DEBIT')
  607.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  608.             A.partner_id, A.curr_code, A.journal_date;
  609.         -- END of insert tt_journal_trx_item for Nota Debet
  610.     END IF;
  611.     END IF;
  612.     END IF;
  613.    
  614.     -- d. Summary ke gl_journal_trx_item dan gl_journal_trx_mapping
  615.  
  616.     INSERT INTO gl_journal_trx_item
  617.     (tenant_id, journal_trx_id, line_no,
  618.     ref_doc_type_id, ref_id,
  619.     partner_id, product_id, cashbank_id, ou_rc_id,
  620.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  621.     coa_id, curr_code, qty, uom_id,
  622.     amount, journal_date, type_rate,
  623.     numerator_rate, denominator_rate, journal_desc, remark,
  624.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  625.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  626.         A.ref_doc_type_id, A.ref_id,
  627.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  628.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  629.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  630.         A.amount, A.journal_date, A.type_rate,
  631.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  632.         0, vDatetime, vUserId, vDatetime, vUserId
  633.     FROM tt_journal_trx_item A
  634.     WHERE A.session_id = pSessionId AND
  635.         journal_desc IN ('AR_COST_CREDIT','AR_COST_DEBIT', 'VAT_OUT', 'AR_ADVANCE');
  636.  
  637.     INSERT INTO gl_journal_trx_mapping
  638.     (tenant_id, journal_trx_id, line_no,
  639.     ref_doc_type_id, ref_id,
  640.     partner_id, product_id, cashbank_id, ou_rc_id,
  641.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  642.     coa_id, curr_code, qty, uom_id,
  643.     amount, journal_date, type_rate,
  644.     numerator_rate, denominator_rate, journal_desc, remark,
  645.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  646.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  647.         A.ref_doc_type_id, A.ref_id,
  648.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  649.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  650.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  651.         A.amount, A.journal_date, A.type_rate,
  652.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  653.         0, vDatetime, vUserId, vDatetime, vUserId
  654.     FROM tt_journal_trx_item A
  655.     WHERE A.session_id = pSessionId AND
  656.         journal_desc IN ('AR');        
  657.    
  658.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  659.    
  660.  END IF; -- end if cek refdoctypeid by Ping An , 6 Nov 2015
  661.    
  662.    
  663. END;
  664. $BODY$
  665.   LANGUAGE plpgsql VOLATILE
  666.   COST 100;
  667.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement