Advertisement
samuel025

f_generate_jurnal_delivery_order

Jul 12th, 2021
1,052
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  CREATE OR REPLACE FUNCTION f_generate_jurnal_delivery_order(character varying,bigint,bigint,bigint,character varying)
  2.   RETURNS void AS
  3. $BODY$
  4. DECLARE
  5.     pSessionId          ALIAS FOR $1;
  6.     pTenantId           ALIAS FOR $2;
  7.     pInvoiceArId        ALIAS FOR $3;
  8.     pUserId             ALIAS FOR $4;
  9.     pDatetime           ALIAS FOR $5;
  10.  
  11.     -- For Journal
  12.     vEmptyId                bigint;
  13.     vSignDebt               character varying(1);
  14.     vSignCredit             character varying(1);
  15.     vTypeRate               character varying(5);
  16.     vActivityCOA            character varying(10);
  17.     vSystemCOA              character varying(10);
  18.     vTaxCOA                 character varying(10);
  19.     vEmptyValue             character varying(1);
  20.     vFlgNo                  character varying(1);
  21.     vEmptyString            character varying;
  22.     vStatusDraft            character varying(1);
  23.  
  24.     vCreditNoteDoc          bigint;
  25.     vDebtNoteDoc            bigint;
  26.     vDownPaymentDoc         bigint;
  27.     vFakturPajakKeluaran    bigint;
  28.     vNotaReturPajakKeluaran bigint;
  29.     vAdvanceInvArDoc        bigint;
  30.  
  31.     vDocTypeId              bigint;
  32.     vJournalTrxId           bigint;
  33.  
  34.     vDocJournal             DOC_JOURNAL%ROWTYPE;
  35.     vOuStructure            OU_BU_STRUCTURE%ROWTYPE;
  36.     result                  RECORD;
  37.  
  38. BEGIN
  39.  
  40.     vCreditNoteDoc := 251;
  41.     vDebtNoteDoc := 241;
  42.     vDownPaymentDoc := 242;
  43.     vAdvanceInvArDoc := 243;
  44.     vFakturPajakKeluaran := 281;
  45.     vNotaReturPajakKeluaran := 282;
  46.  
  47.     vEmptyId := -99;
  48.     vEmptyValue := ' ';
  49.     vEmptyString := '';
  50.     vStatusDraft := 'D';
  51.     vSignDebt := 'D';
  52.     vSignCredit := 'C';
  53.     vTypeRate := 'COM';
  54.     vActivityCOA := 'ACTIVITY';
  55.     vSystemCOA := 'SYSTEM';
  56.     vTaxCOA := 'TAX';
  57.     vFlgNo := 'N';
  58.  
  59.     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
  60.     FROM fi_invoice_ar A
  61.     WHERE A.invoice_ar_id = pInvoiceArId INTO result;
  62.  
  63.     vDocTypeId := result.doc_type_id;
  64.     vOuStructure := result.ou;
  65.     vDocJournal := result.doc;
  66.  
  67.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  68.  
  69.     /*
  70.      * membuat data transaksi jurnal :
  71.      * 1. buat admin
  72.      * 2. buat temlate jurnal
  73.      */
  74.     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', pDatetime, pUserId)
  75.     FROM fi_invoice_ar A
  76.     WHERE A.invoice_ar_id = pInvoiceArId;
  77.  
  78.     SELECT NEXTVAL('gl_journal_trx_seq') INTO vJournalTrxId;
  79.  
  80.     INSERT INTO gl_journal_trx
  81.     (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
  82.     ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,
  83.     ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
  84.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  85.     SELECT vJournalTrxId, A.tenant_id, (vDocJournal).journal_type, A.doc_type_id, A.invoice_ar_id, A.doc_no, A.doc_date,
  86.         (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,
  87.         A.ref_doc_type_id, A.ref_id, A.due_date, A.curr_code, A.remark, vStatusDraft, 'DRAFT',
  88.         0, pDatetime, pUserId, pDatetime, pUserId
  89.     FROM fi_invoice_ar A
  90.     WHERE A.invoice_ar_id = pInvoiceArId;
  91.  
  92.     IF vDocTypeId = vCreditNoteDoc THEN
  93.         -- a1. Nota Kredit AR
  94.         --      D   m_activity_gl                   ACTIVITY    AR_COST_DEBIT   (amount > 0)
  95.         --      D   PajakPertambahanNilai - m_tax   TAX         VAT_OUT         gov tax amount
  96.         --      K   m_activity_gl                   ACTIVITY    AR_COST_CREDIT  (amount < 0)
  97.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_CREDIT
  98.         --      K   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_DEBIT, VAT_OUT
  99.  
  100.         --      D   m_activity_gl                   ACTIVITY    AR_COST_DEBIT   (amount > 0)
  101.         INSERT INTO tt_journal_trx_item
  102.             (   session_id, tenant_id, journal_trx_id, line_no,
  103.                 ref_doc_type_id, ref_id,
  104.                 partner_id, product_id, cashbank_id, ou_rc_id,
  105.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  106.                 coa_id, curr_code, qty, uom_id,
  107.                 amount, journal_date, type_rate,
  108.                 numerator_rate, denominator_rate, journal_desc, remark)
  109.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  110.                 A.doc_type_id, B.invoice_ar_cost_id,
  111.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  112. -- NK, 30 Agustus 2014 - add segment_id
  113.                 B.segment_id, vSignDebt, vActivityCOA, B.activity_gl_id,
  114.                 D.coa_id, A.curr_code, 0, vEmptyId,
  115.                 B.add_amount, A.doc_date, vTypeRate,
  116.                 1, 1, 'AR_COST_DEBIT', B.remark
  117.         FROM    fi_invoice_ar A
  118.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  119.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  120.         WHERE   A.invoice_ar_id = pInvoiceArId AND
  121.                 B.add_amount > 0;
  122.  
  123.         --      K   m_activity_gl                   ACTIVITY    AR_COST_CREDIT  (amount < 0)
  124.         INSERT INTO tt_journal_trx_item
  125.             (   session_id, tenant_id, journal_trx_id, line_no,
  126.                 ref_doc_type_id, ref_id,
  127.                 partner_id, product_id, cashbank_id, ou_rc_id,
  128.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  129.                 coa_id, curr_code, qty, uom_id,
  130.                 amount, journal_date, type_rate,
  131.                 numerator_rate, denominator_rate, journal_desc, remark)
  132.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  133.                 A.doc_type_id, B.invoice_ar_cost_id,
  134.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  135. -- NK, 30 Agustus 2014 - add segment_id
  136.                 B.segment_id, vSignCredit, vActivityCOA, B.activity_gl_id,
  137.                 D.coa_id, A.curr_code, 0, vEmptyId,
  138.                 -1 * B.add_amount, A.doc_date, vTypeRate,
  139.                 1, 1, 'AR_COST_CREDIT', B.remark
  140.         FROM    fi_invoice_ar A
  141.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  142.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  143.         WHERE   A.invoice_ar_id = pInvoiceArId AND
  144.                 B.add_amount < 0;
  145.  
  146.         --      D   PajakPertambahanNilai - m_tax   TAX         VAT_OUT         gov tax amount
  147.         INSERT INTO tt_journal_trx_item
  148.             (   session_id, tenant_id, journal_trx_id, line_no,
  149.                 ref_doc_type_id, ref_id,
  150.                 partner_id, product_id, cashbank_id, ou_rc_id,
  151.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  152.                 coa_id, curr_code, qty, uom_id,
  153.                 amount, journal_date, type_rate,
  154.                 numerator_rate, denominator_rate, journal_desc, remark)
  155.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  156.                 A.doc_type_id, B.invoice_ar_tax_id,
  157.                 A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  158.                 vEmptyId, vSignDebt, vTaxCOA, vEmptyId,
  159.                 D.create_coa_id, D.tax_curr_code, 0, vEmptyId,
  160.                 B.gov_tax_amount, A.doc_date, vTypeRate,
  161.                 1, 1, 'VAT_OUT', B.remark
  162.         FROM    fi_invoice_ar A
  163.         INNER JOIN  fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
  164.         INNER JOIN m_tax D ON B.tax_id = D.tax_id
  165.         WHERE   A.invoice_ar_id = pInvoiceArId;
  166.  
  167.         --      K   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_DEBIT, VAT_IN
  168.         INSERT INTO tt_journal_trx_item
  169.             (   session_id, tenant_id, journal_trx_id, line_no,
  170.                 ref_doc_type_id, ref_id,
  171.                 partner_id, product_id, cashbank_id, ou_rc_id,
  172.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  173.                 coa_id, curr_code, qty, uom_id,
  174.                 amount, journal_date, type_rate,
  175.                 numerator_rate, denominator_rate, journal_desc, remark)
  176.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  177.             vEmptyId, vEmptyId,
  178.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  179.             vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  180.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  181.             SUM(A.amount), A.journal_date, vTypeRate,
  182.             1, 1, 'AR', vEmptyValue
  183.         FROM tt_journal_trx_item A
  184.         WHERE A.session_id = pSessionId AND
  185.             A.journal_desc IN ('AR_COST_DEBIT','VAT_OUT')
  186.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  187.             A.partner_id, A.curr_code, A.journal_date;
  188.  
  189.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_CREDIT
  190.         INSERT INTO tt_journal_trx_item
  191.             (   session_id, tenant_id, journal_trx_id, line_no,
  192.                 ref_doc_type_id, ref_id,
  193.                 partner_id, product_id, cashbank_id, ou_rc_id,
  194.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  195.                 coa_id, curr_code, qty, uom_id,
  196.                 amount, journal_date, type_rate,
  197.                 numerator_rate, denominator_rate, journal_desc, remark)
  198.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  199.             vEmptyId, vEmptyId,
  200.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  201.             vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
  202.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  203.             SUM(A.amount), A.journal_date, vTypeRate,
  204.             1, 1, 'AR', vEmptyValue
  205.         FROM tt_journal_trx_item A
  206.         WHERE A.session_id = pSessionId AND
  207.             A.journal_desc IN ('AR_COST_CREDIT')
  208.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  209.             A.partner_id, A.curr_code, A.journal_date;
  210.         -- END of insert tt_journal_trx_item for Nota Kredit
  211.  
  212.     ELSE IF vDocTypeId = vDownPaymentDoc THEN
  213.  
  214.         --      K   m_activity_gl                   SYSTEM  AR_ADVANCE
  215.         INSERT INTO tt_journal_trx_item
  216.             (   session_id, tenant_id, journal_trx_id, line_no,
  217.                 ref_doc_type_id, ref_id,
  218.                 partner_id, product_id, cashbank_id, ou_rc_id,
  219.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  220.                 coa_id, curr_code, qty, uom_id,
  221.                 amount, journal_date, type_rate,
  222.                 numerator_rate, denominator_rate, journal_desc, remark)
  223.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  224.                 A.doc_type_id, B.invoice_ar_cost_id,
  225.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  226. -- NK, 30 Agustus 2014 - add segment_id
  227.                 B.segment_id, vSignCredit, vSystemCOA, B.activity_gl_id,
  228.                 D.coa_id, A.curr_code, 0, vEmptyId,
  229.                 B.add_amount, A.doc_date, vTypeRate,
  230.                 1, 1, 'AR_ADVANCE', B.remark
  231.         FROM    fi_invoice_ar A
  232.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  233.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  234.         WHERE   A.invoice_ar_id = pInvoiceArId;
  235.  
  236.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_ADVANCE
  237.         INSERT INTO tt_journal_trx_item
  238.             (   session_id, tenant_id, journal_trx_id, line_no,
  239.                 ref_doc_type_id, ref_id,
  240.                 partner_id, product_id, cashbank_id, ou_rc_id,
  241.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  242.                 coa_id, curr_code, qty, uom_id,
  243.                 amount, journal_date, type_rate,
  244.                 numerator_rate, denominator_rate, journal_desc, remark)
  245.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  246.             vEmptyId, vEmptyId,
  247.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  248.             vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
  249.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  250.             SUM(A.amount), A.journal_date, vTypeRate,
  251.             1, 1, 'AR', vEmptyValue
  252.         FROM tt_journal_trx_item A
  253.         WHERE A.session_id = pSessionId AND
  254.             A.journal_desc IN ('AR_ADVANCE')
  255.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  256.             A.partner_id, A.curr_code, A.journal_date;
  257.  
  258.         -- END of insert tt_journal_trx_item for DownPayment
  259.  
  260.     ELSE IF vDocTypeId = vAdvanceInvArDoc THEN
  261.  
  262.         /*
  263.         INSERT INTO sl_so_balance_advance_invoice
  264.         (tenant_id, ou_id, partner_id, so_id, ref_doc_type_id, ref_id,
  265.         advance_curr_code, advance_amount, flg_invoice, flg_invoice_temp, invoice_id,
  266.         version, create_datetime, create_user_id, update_datetime, update_user_id,
  267.         ref_doc_no, ref_doc_date, tax_id, tax_percentage, tax_amount )
  268.         SELECT A.tenant_id, A.ou_id, A.partner_id, A.ref_id, A.doc_type_id, A.invoice_ar_id,
  269.         A.curr_code, B.base_amount, 'N', 'N', vEmptyId,
  270.         1, A.update_datetime, A.update_user_id, A.update_datetime, A.update_user_id,
  271.         A.doc_no, A.doc_date, B.tax_id, B.tax_percentage, B.tax_amount
  272.         FROM fi_invoice_ar A, fi_invoice_ar_tax B
  273.         WHERE A.invoice_ar_id = pInvoiceArId AND A.invoice_ar_id = B.invoice_ar_id;
  274.         */
  275.  
  276.         --      K   m_activity_gl                   SYSTEM  AR_ADVANCE
  277.         INSERT INTO tt_journal_trx_item
  278.             (   session_id, tenant_id, journal_trx_id, line_no,
  279.                 ref_doc_type_id, ref_id,
  280.                 partner_id, product_id, cashbank_id, ou_rc_id,
  281.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  282.                 coa_id, curr_code, qty, uom_id,
  283.                 amount, journal_date, type_rate,
  284.                 numerator_rate, denominator_rate, journal_desc, remark)
  285.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  286.                 A.doc_type_id, B.invoice_ar_cost_id,
  287.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  288.                 B.segment_id, vSignCredit, vSystemCOA, B.activity_gl_id,
  289.                 D.coa_id, A.curr_code, 0, vEmptyId,
  290.                 B.add_amount, A.doc_date, vTypeRate,
  291.                 1, 1, 'AR_ADVANCE', B.remark
  292.         FROM    fi_invoice_ar A
  293.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  294.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  295.         WHERE   A.invoice_ar_id = pInvoiceArId;
  296.  
  297.         --      K   PajakPertambahanNilai - m_tax   TAX         VAT_OUT         gov tax amount
  298.         INSERT INTO tt_journal_trx_item
  299.             (   session_id, tenant_id, journal_trx_id, line_no,
  300.                 ref_doc_type_id, ref_id,
  301.                 partner_id, product_id, cashbank_id, ou_rc_id,
  302.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  303.                 coa_id, curr_code, qty, uom_id,
  304.                 amount, journal_date, type_rate,
  305.                 numerator_rate, denominator_rate, journal_desc, remark)
  306.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  307.                 A.doc_type_id, B.invoice_ar_tax_id,
  308.                 A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  309.                 vEmptyId, vSignCredit, vTaxCOA, vEmptyId,
  310.                 D.create_coa_id, D.tax_curr_code, 0, vEmptyId,
  311.                 B.gov_tax_amount, A.doc_date, vTypeRate,
  312.                 1, 1, 'VAT_OUT', B.remark
  313.         FROM    fi_invoice_ar A
  314.         INNER JOIN  fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
  315.         INNER JOIN m_tax D ON B.tax_id = D.tax_id
  316.         WHERE   A.invoice_ar_id = pInvoiceArId;
  317.  
  318.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_ADVANCE
  319.         INSERT INTO tt_journal_trx_item
  320.             (   session_id, tenant_id, journal_trx_id, line_no,
  321.                 ref_doc_type_id, ref_id,
  322.                 partner_id, product_id, cashbank_id, ou_rc_id,
  323.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  324.                 coa_id, curr_code, qty, uom_id,
  325.                 amount, journal_date, type_rate,
  326.                 numerator_rate, denominator_rate, journal_desc, remark)
  327.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  328.             vEmptyId, vEmptyId,
  329.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  330.             vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
  331.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  332.             SUM(A.amount), A.journal_date, vTypeRate,
  333.             1, 1, 'AR', vEmptyValue
  334.         FROM tt_journal_trx_item A
  335.         WHERE A.session_id = pSessionId AND
  336.             A.journal_desc IN ('AR_ADVANCE', 'VAT_OUT')
  337.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  338.             A.partner_id, A.curr_code, A.journal_date;
  339.  
  340.         -- END of insert tt_journal_trx_item for DownPayment
  341.  
  342.     ELSE
  343.         -- b. Nota Debet
  344.         --      K   m_activity_gl                   ACTIVITY    AR_COST_CREDIT  (amount > 0)
  345.         --      K   PajakPertambahanNilai - m_tax   TAX         VAT_OUT         gov tax amount
  346.         --      D   m_activity_gl                   ACTIVITY    AR_COST_DEBIT   (amount < 0)
  347.         --      K   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_DEBIT
  348.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_CREDIT, VAT_OUT
  349.  
  350.         --      K   m_activity_gl                   ACTIVITY    AR_COST_CREDIT  (amount > 0)
  351.         INSERT INTO tt_journal_trx_item
  352.             (   session_id, tenant_id, journal_trx_id, line_no,
  353.                 ref_doc_type_id, ref_id,
  354.                 partner_id, product_id, cashbank_id, ou_rc_id,
  355.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  356.                 coa_id, curr_code, qty, uom_id,
  357.                 amount, journal_date, type_rate,
  358.                 numerator_rate, denominator_rate, journal_desc, remark)
  359.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  360.                 A.doc_type_id, B.invoice_ar_cost_id,
  361.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  362. -- NK, 30 Agustus 2014 - add segment_id
  363.                 B.segment_id, vSignCredit, vActivityCOA, B.activity_gl_id,
  364.                 D.coa_id, A.curr_code, 0, vEmptyId,
  365.                 B.add_amount, A.doc_date, vTypeRate,
  366.                 1, 1, 'AR_COST_CREDIT', B.remark
  367.         FROM    fi_invoice_ar A
  368.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  369.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  370.         WHERE   A.invoice_ar_id = pInvoiceArId AND
  371.                 B.add_amount > 0;
  372.  
  373.         --      D   m_activity_gl                   ACTIVITY    AR_COST_DEBIT   (amount < 0)
  374.         INSERT INTO tt_journal_trx_item
  375.             (   session_id, tenant_id, journal_trx_id, line_no,
  376.                 ref_doc_type_id, ref_id,
  377.                 partner_id, product_id, cashbank_id, ou_rc_id,
  378.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  379.                 coa_id, curr_code, qty, uom_id,
  380.                 amount, journal_date, type_rate,
  381.                 numerator_rate, denominator_rate, journal_desc, remark)
  382.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  383.                 A.doc_type_id, B.invoice_ar_cost_id,
  384.                 A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
  385. -- NK, 30 Agustus 2014 - add segment_id
  386.                 B.segment_id, vSignDebt, vActivityCOA, B.activity_gl_id,
  387.                 D.coa_id, A.curr_code, 0, vEmptyId,
  388.                 -1 * B.add_amount, A.doc_date, vTypeRate,
  389.                 1, 1, 'AR_COST_DEBIT', B.remark
  390.         FROM    fi_invoice_ar A
  391.         INNER JOIN  fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
  392.         INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
  393.         WHERE   A.invoice_ar_id = pInvoiceArId AND
  394.                 B.add_amount < 0;
  395.  
  396.         --      K   PajakPertambahanNilai - m_tax   TAX         VAT_OUT         gov tax amount
  397.         INSERT INTO tt_journal_trx_item
  398.             (   session_id, tenant_id, journal_trx_id, line_no,
  399.                 ref_doc_type_id, ref_id,
  400.                 partner_id, product_id, cashbank_id, ou_rc_id,
  401.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  402.                 coa_id, curr_code, qty, uom_id,
  403.                 amount, journal_date, type_rate,
  404.                 numerator_rate, denominator_rate, journal_desc, remark)
  405.         SELECT  pSessionId, A.tenant_id, vJournalTrxId, 1,
  406.                 A.doc_type_id, B.invoice_ar_tax_id,
  407.                 A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  408.                 vEmptyId, vSignCredit, vTaxCOA, vEmptyId,
  409.                 D.create_coa_id, D.tax_curr_code, 0, vEmptyId,
  410.                 B.gov_tax_amount, A.doc_date, vTypeRate,
  411.                 1, 1, 'VAT_OUT', B.remark
  412.         FROM    fi_invoice_ar A
  413.         INNER JOIN  fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
  414.         INNER JOIN m_tax D ON B.tax_id = D.tax_id
  415.         WHERE   A.invoice_ar_id = pInvoiceArId;
  416.  
  417.         --      D   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_CREDIT, VAT_OUT
  418.         INSERT INTO tt_journal_trx_item
  419.             (   session_id, tenant_id, journal_trx_id, line_no,
  420.                 ref_doc_type_id, ref_id,
  421.                 partner_id, product_id, cashbank_id, ou_rc_id,
  422.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  423.                 coa_id, curr_code, qty, uom_id,
  424.                 amount, journal_date, type_rate,
  425.                 numerator_rate, denominator_rate, journal_desc, remark)
  426.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  427.             vEmptyId, vEmptyId,
  428.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  429.             vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
  430.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  431.             SUM(A.amount), A.journal_date, vTypeRate,
  432.             1, 1, 'AR', vEmptyValue
  433.         FROM tt_journal_trx_item A
  434.         WHERE A.session_id = pSessionId AND
  435.             A.journal_desc IN ('AR_COST_CREDIT','VAT_OUT')
  436.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  437.             A.partner_id, A.curr_code, A.journal_date;
  438.  
  439.         --      K   PiutangDagang - m_type_partner  SYSTEM      AR              jumlah nilai dari AR_COST_DEBIT
  440.         INSERT INTO tt_journal_trx_item
  441.             (   session_id, tenant_id, journal_trx_id, line_no,
  442.                 ref_doc_type_id, ref_id,
  443.                 partner_id, product_id, cashbank_id, ou_rc_id,
  444.                 segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  445.                 coa_id, curr_code, qty, uom_id,
  446.                 amount, journal_date, type_rate,
  447.                 numerator_rate, denominator_rate, journal_desc, remark)
  448.         SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
  449.             vEmptyId, vEmptyId,
  450.             A.partner_id, vEmptyId, vEmptyId, vEmptyId,
  451.             vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
  452.             f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
  453.             SUM(A.amount), A.journal_date, vTypeRate,
  454.             1, 1, 'AR', vEmptyValue
  455.         FROM tt_journal_trx_item A
  456.         WHERE A.session_id = pSessionId AND
  457.             A.journal_desc IN ('AR_COST_DEBIT')
  458.         GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
  459.             A.partner_id, A.curr_code, A.journal_date;
  460.         -- END of insert tt_journal_trx_item for Nota Debet
  461.     END IF;
  462.     END IF;
  463.     END IF;
  464.  
  465.     -- d. Summary ke gl_journal_trx_item dan gl_journal_trx_mapping
  466.  
  467.     INSERT INTO gl_journal_trx_item
  468.     (tenant_id, journal_trx_id, line_no,
  469.     ref_doc_type_id, ref_id,
  470.     partner_id, product_id, cashbank_id, ou_rc_id,
  471.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  472.     coa_id, curr_code, qty, uom_id,
  473.     amount, journal_date, type_rate,
  474.     numerator_rate, denominator_rate, journal_desc, remark,
  475.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  476.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  477.         A.ref_doc_type_id, A.ref_id,
  478.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  479.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  480.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  481.         A.amount, A.journal_date, A.type_rate,
  482.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  483.         0, pDatetime, pUserId, pDatetime, pUserId
  484.     FROM tt_journal_trx_item A
  485.     WHERE A.session_id = pSessionId AND
  486.         journal_desc IN ('AR_COST_CREDIT','AR_COST_DEBIT', 'VAT_OUT', 'AR_ADVANCE');
  487.  
  488.     INSERT INTO gl_journal_trx_mapping
  489.     (tenant_id, journal_trx_id, line_no,
  490.     ref_doc_type_id, ref_id,
  491.     partner_id, product_id, cashbank_id, ou_rc_id,
  492.     segmen_id, sign_journal, flg_source_coa, activity_gl_id,
  493.     coa_id, curr_code, qty, uom_id,
  494.     amount, journal_date, type_rate,
  495.     numerator_rate, denominator_rate, journal_desc, remark,
  496.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  497.     SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
  498.         A.ref_doc_type_id, A.ref_id,
  499.         A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
  500.         A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
  501.         A.coa_id, A.curr_code, A.qty, A.uom_id,
  502.         A.amount, A.journal_date, A.type_rate,
  503.         A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
  504.         0, pDatetime, pUserId, pDatetime, pUserId
  505.     FROM tt_journal_trx_item A
  506.     WHERE A.session_id = pSessionId AND
  507.         journal_desc IN ('AR');
  508.  
  509.     DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
  510.  
  511. END;
  512. $BODY$
  513.   LANGUAGE plpgsql VOLATILE
  514.   COST 100;
  515.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement