samuel025

Function Generate jurnal DO

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