Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION fi_submit_invoice_ar(bigint, character varying, character varying)
- RETURNS void AS
- $BODY$
- DECLARE
- pTenantId ALIAS FOR $1;
- pSessionId ALIAS FOR $2;
- pProcessNo ALIAS FOR $3;
- vProcessName character varying(100);
- vInvoiceArId bigint;
- vInvoiceArBalanceId bigint;
- vUserId bigint;
- vDatetime character varying(14);
- vStatusRelease character varying(1);
- vStatusDraft character varying(1);
- -- For Journal
- vEmptyId bigint;
- vSignDebt character varying(1);
- vSignCredit character varying(1);
- vTypeRate character varying(5);
- vActivityCOA character varying(10);
- vSystemCOA character varying(10);
- vTaxCOA character varying(10);
- vEmptyValue character varying(1);
- vFlgNo character varying(1);
- vCreditNoteDoc bigint;
- vDebtNoteDoc bigint;
- vDownPaymentDoc bigint;
- vFakturPajakKeluaran bigint;
- vNotaReturPajakKeluaran bigint;
- vAdvanceInvArDoc bigint;
- vDocTypeId bigint;
- vJournalTrxId bigint;
- vPosDocTypeId bigint;
- vDocJournal DOC_JOURNAL%ROWTYPE;
- vOuStructure OU_BU_STRUCTURE%ROWTYPE;
- result RECORD;
- vTotalAmount numeric;
- vTotalTaxBaseAmount numeric;
- vTotalTaxAmount numeric;
- vJointDppPpn character varying(1);
- BEGIN
- vProcessName := 'fi_submit_invoice_ar';
- vCreditNoteDoc := 251;
- vDebtNoteDoc := 241;
- vDownPaymentDoc := 242;
- vAdvanceInvArDoc := 243;
- vFakturPajakKeluaran := 281;
- vNotaReturPajakKeluaran := 282;
- vPosDocTypeId := 401;
- vEmptyId := -99;
- vEmptyValue := ' ';
- vStatusRelease := 'R';
- vStatusDraft := 'D';
- vSignDebt := 'D';
- vSignCredit := 'C';
- vTypeRate := 'COM';
- vActivityCOA := 'ACTIVITY';
- vSystemCOA := 'SYSTEM';
- vTaxCOA := 'TAX';
- vFlgNo := 'N';
- vJointDppPpn := f_get_value_system_config_by_param_code(pTenantId, 'joint.dpp.ppn.balance');
- vInvoiceArId := CAST(f_get_process_parameter_value(vProcessName, pProcessNo, pTenantId, 'invoiceArId') AS bigint);
- vUserId := CAST(f_get_process_parameter_value(vProcessName, pProcessNo, pTenantId, 'userId') AS bigint);
- vDatetime := CAST(f_get_process_parameter_value(vProcessName, pProcessNo, pTenantId, 'datetime') AS character varying(14));
- 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
- FROM fi_invoice_ar A
- WHERE A.invoice_ar_id = vInvoiceArId INTO result;
- vDocTypeId := result.doc_type_id;
- vOuStructure := result.ou;
- vDocJournal := result.doc;
- SELECT COALESCE(SUM(A.add_amount), 0) INTO vTotalAmount
- FROM fi_invoice_ar_cost A
- WHERE A.invoice_ar_id = vInvoiceArId;
- SELECT COALESCE(SUM(A.base_amount), 0), COALESCE(SUM(A.tax_amount), 0) INTO vTotalTaxBaseAmount, vTotalTaxAmount
- FROM fi_invoice_ar_tax A
- WHERE A.invoice_ar_id = vInvoiceArId;
- /*
- * 1. Update Header Status document
- * 2. Update header amount, tax base amount dan tax amount
- * 3. insert data ke fi_invoice_ar_balance
- * a. amount numeric = total data add_amount dari invoice_ar_cost
- * b. payment_amount = 0
- * c. apabila amount_numeric = 0, maka flg_payment = Y, selain itu flg_payment = N
- * d. amount diberi nilai negatif untuk type document Credit Note AR
- * 4. insert data summary tax ke fi_invoice_tax_ar_balance
- * a. Untuk transaksi Nota Debit AR (241), akan membuat doc_type_id menjadi Faktur Pajak Keluaran (281)
- * b. Untuk transaksi Nota Credit AR (251), akan membuat doc_type_id menjadi Nota Retur Pajak Keluaran (282)
- * c. tax_amount dan gov_tax_amount diberi nilai negatif untuk type document Credit Note AR
- * 5. Create journal
- */
- -- 1
- UPDATE fi_invoice_ar
- SET status_doc = vStatusRelease, version = version + 1, update_datetime = vDatetime, update_user_id = vUserId
- WHERE invoice_ar_id = vInvoiceArId;
- -- 2
- UPDATE fi_invoice_ar
- SET total_amount = vTotalAmount,
- total_tax_base_amount = vTotalTaxBaseAmount,
- tax_amount = vTotalTaxAmount
- WHERE invoice_ar_id = vInvoiceArId;
- -- Modified by Putra, 11 March 2015 add next val used for function fi_insert_invoice_ar_balance_due_date
- SELECT nextval('fi_invoice_ar_balance_seq') INTO vInvoiceArBalanceId;
- IF vJointDppPpn = 'N' THEN
- -- 3
- INSERT INTO fi_invoice_ar_balance (
- invoice_ar_balance_id, tenant_id, ou_id, doc_type_id, invoice_ar_id,
- doc_no, doc_date, ext_doc_no, ext_doc_date,
- ref_doc_type_id, ref_id, partner_id, due_date,
- curr_code, amount, remark, payment_amount, flg_payment,
- "version", create_datetime, create_user_id, update_datetime, update_user_id)
- SELECT vInvoiceArBalanceId, A.tenant_id, A.ou_id, A.doc_type_id, A.invoice_ar_id,
- A.doc_no, A.doc_date, A.ext_doc_no, A.ext_doc_date,
- A.ref_doc_type_id, A.ref_id, A.partner_id, A.due_date,
- A.curr_code, CASE WHEN doc_type_id = vCreditNoteDoc THEN A.total_amount * - 1 ELSE A.total_amount END, A.remark, 0, 'N',
- 0, vDatetime, vUserId, vDatetime, vUserId
- FROM fi_invoice_ar A
- WHERE A.invoice_ar_id = vInvoiceArId;
- -- 4
- -- Modified by fredi, 2 Dec add insert gov_base_amount into fi_invoice_tax_ap_balance
- -- get gov_base_tax_amount from fi_invoice_ar_tax.base_amount
- INSERT INTO fi_invoice_tax_ar_balance (
- tenant_id, ou_id, doc_type_id, invoice_ar_balance_id, partner_id,
- tax_id, tax_no, tax_date, curr_code, tax_amount,
- tax_curr_code, gov_tax_amount, due_date, remark,
- payment_amount, flg_payment,
- "version", create_datetime, create_user_id, update_datetime, update_user_id,
- gov_base_amount )
- 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
- 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,
- 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
- 0, 'N',
- 0, vDatetime, vUserId, vDatetime, vUserId,
- 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
- FROM fi_invoice_ar A
- INNER JOIN fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
- WHERE A.invoice_ar_id = vInvoiceArId;
- /*
- * Putra, 11 March 2015
- * Call function for insert due_date from fi_invoice_ar_balance into fi_invoice_ar_balance_due_date
- * Call function for insert due_date from fi_invoice_tax_ar_balance into fi_invoice_tax_ar_balance_due_date
- * @see http://jleaf.org:8181/browse/ERPDB-211
- */
- -- PERFORM fi_insert_invoice_ar_balance_due_date(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
- /**
- * Fredi, 2 Dec 2014
- * Call function for insert tax data into fi_vat_out_reporting for tax
- * @see http://jleaf.org:8181/browse/ERPDB-211
- */
- -- PERFORM fi_insert_vat_out_for_reporting(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
- /**
- * add by fredi, 1 Feb 2016
- * - insert data for vat out efaktur
- * @see http://jleaf.org:8112/issue/ERP-52
- */
- -- PERFORM fi_insert_vat_out_for_efaktur(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
- -- PERFORM fi_insert_return_vat_out_for_efaktur(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
- ELSE
- INSERT INTO fi_invoice_ar_balance (
- invoice_ar_balance_id, tenant_id, ou_id, doc_type_id, invoice_ar_id,
- doc_no, doc_date, ext_doc_no, ext_doc_date,
- ref_doc_type_id, ref_id, partner_id, due_date,
- curr_code, amount, remark, payment_amount, flg_payment,
- "version", create_datetime, create_user_id, update_datetime, update_user_id)
- SELECT vInvoiceArBalanceId, A.tenant_id, A.ou_id, A.doc_type_id, A.invoice_ar_id,
- A.doc_no, A.doc_date, A.ext_doc_no, A.ext_doc_date,
- A.ref_doc_type_id, A.ref_id, A.partner_id, A.due_date,
- 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',
- 0, vDatetime, vUserId, vDatetime, vUserId
- FROM fi_invoice_ar A
- LEFT OUTER JOIN fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
- WHERE A.invoice_ar_id = vInvoiceArId;
- /**
- * mod by Didit, 29 Nov 2016
- * untuk yang ref dari POS tidak perlu inser e-faktur
- * karena pakai faktur pajak gabungan
- */
- IF result.ref_doc_type_id <> vPosDocTypeId THEN
- /*
- PERFORM fi_insert_invoice_ar_balance_due_date(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
- PERFORM fi_insert_vat_out_invoice_ar_for_reporting(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
- PERFORM fi_insert_vat_out_invoice_ar_for_efaktur(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
- PERFORM fi_insert_return_vat_out_invoice_ar_for_efaktur(pTenantId, pSessionId, vInvoiceArBalanceId, vUserId, vDatetime);
- */
- END IF;
- END IF;
- -- untuk yang doctypeidnya = POS tidak di jurnal. by Ping An, 6 Nov 2015
- IF result.ref_doc_type_id <> vPosDocTypeId THEN
- -- 5
- /*
- * membuat data transaksi jurnal :
- * 1. buat admin
- * 2. buat temlate jurnal
- */
- 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)
- FROM fi_invoice_ar A
- WHERE A.invoice_ar_id = vInvoiceArId;
- SELECT NEXTVAL('gl_journal_trx_seq') INTO vJournalTrxId;
- INSERT INTO gl_journal_trx
- (journal_trx_id, tenant_id, journal_type, doc_type_id, doc_id, doc_no, doc_date,
- ou_bu_id, ou_branch_id, ou_sub_bu_id, partner_id, cashbank_id, warehouse_id, ext_doc_no, ext_doc_date,
- ref_doc_type_id, ref_id, due_date, curr_code, remark, status_doc, workflow_status,
- "version", create_datetime, create_user_id, update_datetime, update_user_id)
- SELECT vJournalTrxId, A.tenant_id, (vDocJournal).journal_type, A.doc_type_id, A.invoice_ar_id, A.doc_no, A.doc_date,
- (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,
- A.ref_doc_type_id, A.ref_id, A.due_date, A.curr_code, A.remark, vStatusDraft, 'DRAFT',
- 0, vDatetime, vUserId, vDatetime, vUserId
- FROM fi_invoice_ar A
- WHERE A.invoice_ar_id = vInvoiceArId;
- IF vDocTypeId = vCreditNoteDoc THEN
- -- a1. Nota Kredit AR
- -- D m_activity_gl ACTIVITY AR_COST_DEBIT (amount > 0)
- -- D PajakPertambahanNilai - m_tax TAX VAT_OUT gov tax amount
- -- K m_activity_gl ACTIVITY AR_COST_CREDIT (amount < 0)
- -- D PiutangDagang - m_type_partner SYSTEM AR jumlah nilai dari AR_COST_CREDIT
- -- K PiutangDagang - m_type_partner SYSTEM AR jumlah nilai dari AR_COST_DEBIT, VAT_OUT
- -- D m_activity_gl ACTIVITY AR_COST_DEBIT (amount > 0)
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
- A.doc_type_id, B.invoice_ar_cost_id,
- A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
- -- NK, 30 Agustus 2014 - add segment_id
- B.segment_id, vSignDebt, vActivityCOA, B.activity_gl_id,
- D.coa_id, A.curr_code, 0, vEmptyId,
- B.add_amount, A.doc_date, vTypeRate,
- 1, 1, 'AR_COST_DEBIT', B.remark
- FROM fi_invoice_ar A
- INNER JOIN fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
- INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
- WHERE A.invoice_ar_id = vInvoiceArId AND
- B.add_amount > 0;
- -- K m_activity_gl ACTIVITY AR_COST_CREDIT (amount < 0)
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
- A.doc_type_id, B.invoice_ar_cost_id,
- A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
- -- NK, 30 Agustus 2014 - add segment_id
- B.segment_id, vSignCredit, vActivityCOA, B.activity_gl_id,
- D.coa_id, A.curr_code, 0, vEmptyId,
- -1 * B.add_amount, A.doc_date, vTypeRate,
- 1, 1, 'AR_COST_CREDIT', B.remark
- FROM fi_invoice_ar A
- INNER JOIN fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
- INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
- WHERE A.invoice_ar_id = vInvoiceArId AND
- B.add_amount < 0;
- -- D PajakPertambahanNilai - m_tax TAX VAT_OUT gov tax amount
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
- A.doc_type_id, B.invoice_ar_tax_id,
- A.partner_id, vEmptyId, vEmptyId, vEmptyId,
- vEmptyId, vSignDebt, vTaxCOA, vEmptyId,
- D.create_coa_id, D.tax_curr_code, 0, vEmptyId,
- B.gov_tax_amount, A.doc_date, vTypeRate,
- 1, 1, 'VAT_OUT', B.remark
- FROM fi_invoice_ar A
- INNER JOIN fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
- INNER JOIN m_tax D ON B.tax_id = D.tax_id
- WHERE A.invoice_ar_id = vInvoiceArId;
- -- K PiutangDagang - m_type_partner SYSTEM AR jumlah nilai dari AR_COST_DEBIT, VAT_IN
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
- vEmptyId, vEmptyId,
- A.partner_id, vEmptyId, vEmptyId, vEmptyId,
- vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
- f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
- SUM(A.amount), A.journal_date, vTypeRate,
- 1, 1, 'AR', vEmptyValue
- FROM tt_journal_trx_item A
- WHERE A.session_id = pSessionId AND
- A.journal_desc IN ('AR_COST_DEBIT','VAT_OUT')
- GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
- A.partner_id, A.curr_code, A.journal_date;
- -- D PiutangDagang - m_type_partner SYSTEM AR jumlah nilai dari AR_COST_CREDIT
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
- vEmptyId, vEmptyId,
- A.partner_id, vEmptyId, vEmptyId, vEmptyId,
- vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
- f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
- SUM(A.amount), A.journal_date, vTypeRate,
- 1, 1, 'AR', vEmptyValue
- FROM tt_journal_trx_item A
- WHERE A.session_id = pSessionId AND
- A.journal_desc IN ('AR_COST_CREDIT')
- GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
- A.partner_id, A.curr_code, A.journal_date;
- -- END of insert tt_journal_trx_item for Nota Kredit
- ELSE IF vDocTypeId = vDownPaymentDoc THEN
- -- K m_activity_gl SYSTEM AR_ADVANCE
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
- A.doc_type_id, B.invoice_ar_cost_id,
- A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
- -- NK, 30 Agustus 2014 - add segment_id
- B.segment_id, vSignCredit, vSystemCOA, B.activity_gl_id,
- D.coa_id, A.curr_code, 0, vEmptyId,
- B.add_amount, A.doc_date, vTypeRate,
- 1, 1, 'AR_ADVANCE', B.remark
- FROM fi_invoice_ar A
- INNER JOIN fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
- INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
- WHERE A.invoice_ar_id = vInvoiceArId;
- -- D PiutangDagang - m_type_partner SYSTEM AR jumlah nilai dari AR_ADVANCE
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
- vEmptyId, vEmptyId,
- A.partner_id, vEmptyId, vEmptyId, vEmptyId,
- vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
- f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
- SUM(A.amount), A.journal_date, vTypeRate,
- 1, 1, 'AR', vEmptyValue
- FROM tt_journal_trx_item A
- WHERE A.session_id = pSessionId AND
- A.journal_desc IN ('AR_ADVANCE')
- GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
- A.partner_id, A.curr_code, A.journal_date;
- -- END of insert tt_journal_trx_item for DownPayment
- ELSE IF vDocTypeId = vAdvanceInvArDoc THEN
- /*
- INSERT INTO sl_so_balance_advance_invoice
- (tenant_id, ou_id, partner_id, so_id, ref_doc_type_id, ref_id,
- advance_curr_code, advance_amount, flg_invoice, flg_invoice_temp, invoice_id,
- version, create_datetime, create_user_id, update_datetime, update_user_id,
- ref_doc_no, ref_doc_date, tax_id, tax_percentage, tax_amount )
- SELECT A.tenant_id, A.ou_id, A.partner_id, A.ref_id, A.doc_type_id, A.invoice_ar_id,
- A.curr_code, B.base_amount, 'N', 'N', vEmptyId,
- 1, A.update_datetime, A.update_user_id, A.update_datetime, A.update_user_id,
- A.doc_no, A.doc_date, B.tax_id, B.tax_percentage, B.tax_amount
- FROM fi_invoice_ar A, fi_invoice_ar_tax B
- WHERE A.invoice_ar_id = vInvoiceArId AND A.invoice_ar_id = B.invoice_ar_id;
- */
- -- K m_activity_gl SYSTEM AR_ADVANCE
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
- A.doc_type_id, B.invoice_ar_cost_id,
- A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
- B.segment_id, vSignCredit, vSystemCOA, B.activity_gl_id,
- D.coa_id, A.curr_code, 0, vEmptyId,
- B.add_amount, A.doc_date, vTypeRate,
- 1, 1, 'AR_ADVANCE', B.remark
- FROM fi_invoice_ar A
- INNER JOIN fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
- INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
- WHERE A.invoice_ar_id = vInvoiceArId;
- -- K PajakPertambahanNilai - m_tax TAX VAT_OUT gov tax amount
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
- A.doc_type_id, B.invoice_ar_tax_id,
- A.partner_id, vEmptyId, vEmptyId, vEmptyId,
- vEmptyId, vSignCredit, vTaxCOA, vEmptyId,
- D.create_coa_id, D.tax_curr_code, 0, vEmptyId,
- B.gov_tax_amount, A.doc_date, vTypeRate,
- 1, 1, 'VAT_OUT', B.remark
- FROM fi_invoice_ar A
- INNER JOIN fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
- INNER JOIN m_tax D ON B.tax_id = D.tax_id
- WHERE A.invoice_ar_id = vInvoiceArId;
- -- D PiutangDagang - m_type_partner SYSTEM AR jumlah nilai dari AR_ADVANCE
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
- vEmptyId, vEmptyId,
- A.partner_id, vEmptyId, vEmptyId, vEmptyId,
- vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
- f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
- SUM(A.amount), A.journal_date, vTypeRate,
- 1, 1, 'AR', vEmptyValue
- FROM tt_journal_trx_item A
- WHERE A.session_id = pSessionId AND
- A.journal_desc IN ('AR_ADVANCE', 'VAT_OUT')
- GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
- A.partner_id, A.curr_code, A.journal_date;
- -- END of insert tt_journal_trx_item for DownPayment
- ELSE
- -- b. Nota Debet
- -- K m_activity_gl ACTIVITY AR_COST_CREDIT (amount > 0)
- -- K PajakPertambahanNilai - m_tax TAX VAT_OUT gov tax amount
- -- D m_activity_gl ACTIVITY AR_COST_DEBIT (amount < 0)
- -- K PiutangDagang - m_type_partner SYSTEM AR jumlah nilai dari AR_COST_DEBIT
- -- D PiutangDagang - m_type_partner SYSTEM AR jumlah nilai dari AR_COST_CREDIT, VAT_OUT
- -- K m_activity_gl ACTIVITY AR_COST_CREDIT (amount > 0)
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
- A.doc_type_id, B.invoice_ar_cost_id,
- A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
- -- NK, 30 Agustus 2014 - add segment_id
- B.segment_id, vSignCredit, vActivityCOA, B.activity_gl_id,
- D.coa_id, A.curr_code, 0, vEmptyId,
- B.add_amount, A.doc_date, vTypeRate,
- 1, 1, 'AR_COST_CREDIT', B.remark
- FROM fi_invoice_ar A
- INNER JOIN fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
- INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
- WHERE A.invoice_ar_id = vInvoiceArId AND
- B.add_amount > 0;
- -- D m_activity_gl ACTIVITY AR_COST_DEBIT (amount < 0)
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
- A.doc_type_id, B.invoice_ar_cost_id,
- A.partner_id, vEmptyId, vEmptyId, B.ou_rc_id,
- -- NK, 30 Agustus 2014 - add segment_id
- B.segment_id, vSignDebt, vActivityCOA, B.activity_gl_id,
- D.coa_id, A.curr_code, 0, vEmptyId,
- -1 * B.add_amount, A.doc_date, vTypeRate,
- 1, 1, 'AR_COST_DEBIT', B.remark
- FROM fi_invoice_ar A
- INNER JOIN fi_invoice_ar_cost B ON A.invoice_ar_id = B.invoice_ar_id
- INNER JOIN m_activity_gl D ON B.activity_gl_id = D.activity_gl_id
- WHERE A.invoice_ar_id = vInvoiceArId AND
- B.add_amount < 0;
- -- K PajakPertambahanNilai - m_tax TAX VAT_OUT gov tax amount
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT pSessionId, A.tenant_id, vJournalTrxId, 1,
- A.doc_type_id, B.invoice_ar_tax_id,
- A.partner_id, vEmptyId, vEmptyId, vEmptyId,
- vEmptyId, vSignCredit, vTaxCOA, vEmptyId,
- D.create_coa_id, D.tax_curr_code, 0, vEmptyId,
- B.gov_tax_amount, A.doc_date, vTypeRate,
- 1, 1, 'VAT_OUT', B.remark
- FROM fi_invoice_ar A
- INNER JOIN fi_invoice_ar_tax B ON A.invoice_ar_id = B.invoice_ar_id
- INNER JOIN m_tax D ON B.tax_id = D.tax_id
- WHERE A.invoice_ar_id = vInvoiceArId;
- -- D PiutangDagang - m_type_partner SYSTEM AR jumlah nilai dari AR_COST_CREDIT, VAT_OUT
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
- vEmptyId, vEmptyId,
- A.partner_id, vEmptyId, vEmptyId, vEmptyId,
- vEmptyId, vSignDebt, vSystemCOA, vEmptyId,
- f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
- SUM(A.amount), A.journal_date, vTypeRate,
- 1, 1, 'AR', vEmptyValue
- FROM tt_journal_trx_item A
- WHERE A.session_id = pSessionId AND
- A.journal_desc IN ('AR_COST_CREDIT','VAT_OUT')
- GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
- A.partner_id, A.curr_code, A.journal_date;
- -- K PiutangDagang - m_type_partner SYSTEM AR jumlah nilai dari AR_COST_DEBIT
- INSERT INTO tt_journal_trx_item
- ( session_id, tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark)
- SELECT A.session_id, A.tenant_id, A.journal_trx_id, 1,
- vEmptyId, vEmptyId,
- A.partner_id, vEmptyId, vEmptyId, vEmptyId,
- vEmptyId, vSignCredit, vSystemCOA, vEmptyId,
- f_get_ar_coa_partner(A.tenant_id, A.partner_id), A.curr_code, 0, vEmptyId,
- SUM(A.amount), A.journal_date, vTypeRate,
- 1, 1, 'AR', vEmptyValue
- FROM tt_journal_trx_item A
- WHERE A.session_id = pSessionId AND
- A.journal_desc IN ('AR_COST_DEBIT')
- GROUP BY A.session_id, A.tenant_id, A.journal_trx_id,
- A.partner_id, A.curr_code, A.journal_date;
- -- END of insert tt_journal_trx_item for Nota Debet
- END IF;
- END IF;
- END IF;
- -- d. Summary ke gl_journal_trx_item dan gl_journal_trx_mapping
- INSERT INTO gl_journal_trx_item
- (tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark,
- "version", create_datetime, create_user_id, update_datetime, update_user_id)
- SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
- A.ref_doc_type_id, A.ref_id,
- A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
- A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
- A.coa_id, A.curr_code, A.qty, A.uom_id,
- A.amount, A.journal_date, A.type_rate,
- A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
- 0, vDatetime, vUserId, vDatetime, vUserId
- FROM tt_journal_trx_item A
- WHERE A.session_id = pSessionId AND
- journal_desc IN ('AR_COST_CREDIT','AR_COST_DEBIT', 'VAT_OUT', 'AR_ADVANCE');
- INSERT INTO gl_journal_trx_mapping
- (tenant_id, journal_trx_id, line_no,
- ref_doc_type_id, ref_id,
- partner_id, product_id, cashbank_id, ou_rc_id,
- segmen_id, sign_journal, flg_source_coa, activity_gl_id,
- coa_id, curr_code, qty, uom_id,
- amount, journal_date, type_rate,
- numerator_rate, denominator_rate, journal_desc, remark,
- "version", create_datetime, create_user_id, update_datetime, update_user_id)
- SELECT A.tenant_id, A.journal_trx_id, ROW_NUMBER() OVER ( PARTITION BY A.journal_trx_id),
- A.ref_doc_type_id, A.ref_id,
- A.partner_id, A.product_id, A.cashbank_id, A.ou_rc_id,
- A.segmen_id, A.sign_journal, A.flg_source_coa, A.activity_gl_id,
- A.coa_id, A.curr_code, A.qty, A.uom_id,
- A.amount, A.journal_date, A.type_rate,
- A.numerator_rate, A.denominator_rate, A.journal_desc, A.remark,
- 0, vDatetime, vUserId, vDatetime, vUserId
- FROM tt_journal_trx_item A
- WHERE A.session_id = pSessionId AND
- journal_desc IN ('AR');
- DELETE FROM tt_journal_trx_item WHERE session_id = pSessionId;
- END IF; -- end if cek refdoctypeid by Ping An , 6 Nov 2015
- END;
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100;
- /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement