Advertisement
dchrissandy

Untitled

Apr 21st, 2020
895
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION f_migrate_data_trx_pos_to_debt_note_ar(
  2.     character varying,
  3.     bigint,
  4.     character varying,
  5.     bigint,
  6.     bigint,
  7.     character varying,
  8.     character varying,
  9.     numeric,
  10.     bigint)
  11.   RETURNS void AS
  12. $BODY$
  13. DECLARE
  14.     pSessionId          alias for $1;
  15.     pTenantId           alias for $2;
  16.     pProcessNo          alias for $3;
  17.     pOuId               alias for $4;
  18.     pUserId             alias for $5;
  19.     pDatetime           alias for $6;
  20.     pFlgPkp             alias for $7;
  21.     pCountBelumDiBayar  alias for $8;
  22.     pTrxPosId           alias for $9;
  23.  
  24.     vStatusDoc          character varying;
  25.     vDocTypeDebtNoteAr  bigint;
  26.     vEmptyValue         bigint;
  27.     vSpasiChar          character varying;
  28.     vYes                character varying;
  29.     vNo                 character varying;
  30.     vCurrency           character varying;
  31.     vNol                numeric;
  32.     vWorkFlowStatus     character varying;
  33.     vCoaId              bigint;
  34.     vProcessName        character varying;
  35.     vCountMinutes       integer;
  36.     vParamKey           character varying;
  37.     vStatusDocDraft     character varying;
  38.     vWorkFlowStatusDraft character varying;
  39.     vEmptyString        character varying;
  40.     vDocTypeDPBalance   bigint;
  41.     vFlowArDebtNoteId   bigint;
  42.     vSchemeDebtNoteAr   character varying;
  43.     vInvoiceArId        bigint;
  44.     vInvoiceArBalanceId bigint;
  45.     vNettAmountWithoutNonTax bigint;
  46.     vMaxLineNo          bigint;
  47. BEGIN
  48.     vStatusDoc := 'I';
  49.     vDocTypeDebtNoteAr := 241;
  50.     vDocTypeDPBalance := 252;
  51.     vEmptyValue := -99;
  52.     vSpasiChar := ' ';
  53.     vYes := 'Y';
  54.     vNo := 'N';
  55.     vCurrency := 'IDR';
  56.     vNol := 0;
  57.     vWorkFlowStatus := 'APPROVED';
  58.     vProcessName := 'fi_submit_invoice_ar';
  59.     vCountMinutes := 1;
  60.     vParamKey := 'invoiceArId';
  61.     vStatusDocDraft := 'D';
  62.     vWorkFlowStatusDraft := 'DRAFT';
  63.     vEmptyString := '';
  64.     vSchemeDebtNoteAr = 'DF01';
  65.    
  66.        
  67.     -- hanya dijalankan jika ada kurang bayar(BELUM LUNAS PEMBAYARANNYA ), kalau sudah lunas tidak tulis debtnoteAR
  68.     IF pCountBelumDiBayar > 0 THEN
  69.        
  70.         /* get coa id*/
  71.         vCoaId := (SELECT f_get_system_coa_by_group_coa(pTenantId, 'PendapatanPenjualan'));
  72.        
  73.         SELECT nextval('fi_invoice_ar_seq') INTO vInvoiceArId;
  74.         SELECT nextval('fi_invoice_ar_balance_seq') INTO vInvoiceArBalanceId;
  75.                
  76.         IF pFlgPkp = vYes THEN
  77.             /* PKP */
  78.             /*
  79.              * insert ke tabel finance invoice ar
  80.              * dengan status_doc = D dan workflow_status = DRAFT
  81.              *
  82.              * mod by Didit, 29 Nov 2016
  83.              * Debt Note AR langsung approved
  84.              * ubah perhitungan tax
  85.              */
  86.             INSERT INTO fi_invoice_ar(
  87.                 invoice_ar_id, tenant_id, doc_type_id, doc_no, doc_date, ou_id,
  88.                 partner_id, ext_doc_no, ext_doc_date, ref_doc_type_id, ref_id,
  89.                 due_date, curr_code, total_tax_base_amount, total_amount, tax_amount,
  90.                 remark, status_doc, workflow_status, version, create_datetime,
  91.                 create_user_id, update_datetime, update_user_id)
  92.             SELECT vInvoiceArId, A.tenant_id, vDocTypeDebtNoteAr, A.doc_no, A.doc_date, c.ou_parent_id,
  93.                 D.partner_id, A.doc_no, A.doc_date, A.doc_type_id, A.trx_pos_id,
  94.                 B.payment_due_date, vCurrency, vNol, vNol, vNol,
  95.                 A.remark, vStatusDoc, vWorkFlowStatus, vNol, pDatetime,
  96.                 pUserId, pDatetime, pUserId
  97.             FROM i_trx_pos A
  98.             INNER JOIN i_trx_pos_termin_payment B ON A.tenant_id = B.tenant_id AND A.process_no = B.process_no AND A.trx_pos_id = B.trx_pos_id
  99.             INNER JOIN t_ou C ON A.ou_id = C.ou_id AND A.tenant_id = C.tenant_id
  100.             INNER JOIN m_partner D ON A.partner_id = D.partner_id AND A.tenant_id = D.tenant_id
  101.             WHERE A.tenant_id = pTenantId
  102.                 AND A.process_no = pProcessNo
  103.                 AND A.ou_id = pOuId
  104.                 AND A.trx_pos_id = pTrxPosId
  105.                 AND B.under_payment_amount > 0
  106.             ORDER BY doc_date;
  107.            
  108.             SELECT COALESCE(A.nett_amount - SUM(CASE WHEN B.tax_id = -99 AND B.tax_amount = 0 THEN B.base_amount ELSE 0 END), A.nett_amount) INTO vNettAmountWithoutNonTax
  109.             FROM i_trx_pos A
  110.             INNER JOIN i_trx_pos_termin_payment E ON A.tenant_id = E.tenant_id AND A.process_no = E.process_no AND A.trx_pos_id = E.trx_pos_id
  111.             INNER JOIN i_trx_pos_tax B ON A.trx_pos_id = B.trx_pos_id AND A.process_no = B.process_no AND A.tenant_id = B.tenant_id
  112.             WHERE A.tenant_id = pTenantId
  113.                 AND A.process_no = pProcessNo
  114.                 AND A.ou_id = pOuId
  115.                 AND A.trx_pos_id = pTrxPosId
  116.             GROUP BY A.nett_amount;
  117.        
  118.             -- insert ke tabel fi_invoice_ar_tax jika ou_bu_id punya flg_pkp = Y
  119.             INSERT INTO fi_invoice_ar_tax(
  120.                 tenant_id, invoice_ar_id, tax_id, flg_amount,
  121.                 tax_percentage, base_amount,
  122.                 tax_amount, tax_no, tax_date, tax_curr_code,
  123.                 gov_tax_amount, remark, version, create_datetime, create_user_id,
  124.                 update_datetime, update_user_id)
  125.             SELECT A.tenant_id, C.invoice_ar_id, D.tax_id, D.flg_amount,
  126.                 -- D.percentage, E.under_payment_amount, B.tax_amount, vEmptyString, A.doc_date, vCurrency,
  127.                 -- rev by Ping An 17 Nov 2015, base_amount ambil dari nilai total amount di POS, bukan ambil nilai kurang bayarnya saja
  128.                 -- D.percentage, A.total_amount, B.tax_amount, vEmptyString, A.doc_date, vCurrency,
  129.                 -- set base amountnya ambil dari nett amount di pos(tanpa rounding) - tax
  130.                 D.percentage, SUM(vNettAmountWithoutNonTax - f_get_tax_amount(A.tenant_id, vNettAmountWithoutNonTax, B.flg_amount, B.tax_percentage)),
  131.                 SUM(f_get_tax_amount(A.tenant_id, vNettAmountWithoutNonTax, B.flg_amount, B.tax_percentage)), vEmptyString, A.doc_date, vCurrency,
  132.                 SUM(f_get_tax_amount(A.tenant_id, vNettAmountWithoutNonTax, B.flg_amount, B.tax_percentage)), A.remark, vNol, pDatetime, pUserId,
  133.                 pDatetime, pUserId
  134.             FROM i_trx_pos A
  135.             INNER JOIN i_trx_pos_termin_payment E ON A.tenant_id = E.tenant_id AND A.process_no = E.process_no AND A.trx_pos_id = E.trx_pos_id
  136.             INNER JOIN i_trx_pos_tax B ON A.trx_pos_id = B.trx_pos_id AND A.process_no = B.process_no AND A.tenant_id = B.tenant_id
  137.             INNER JOIN fi_invoice_ar C ON A.doc_no = C.doc_no AND A.doc_date = C.doc_date AND A.tenant_id = C.tenant_id AND C.doc_type_id = vDocTypeDebtNoteAr
  138.             INNER JOIN m_tax D ON D.tax_id = B.tax_id
  139.             WHERE A.tenant_id = pTenantId
  140.                 AND A.process_no = pProcessNo
  141.                 AND A.ou_id = pOuId
  142.                 AND A.trx_pos_id = pTrxPosId
  143.                 AND B.tax_id <> -99
  144.                 AND B.tax_amount <> 0
  145.             GROUP BY A.tenant_id, C.invoice_ar_id, D.tax_id, D.flg_amount, D.percentage, A.doc_date, A.remark;
  146.                
  147.                    
  148.             /* insert fi_invoice_ar_cost non tax */
  149.             INSERT INTO fi_invoice_ar_cost(
  150.                 tenant_id, invoice_ar_id, line_no, activity_gl_id,
  151.                 ou_rc_id, curr_code, add_amount, tax_id, tax_percentage, tax_amount,
  152.                 remark, version, create_datetime, create_user_id, update_datetime,
  153.                 update_user_id, segment_id)
  154.             SELECT A.tenant_id, C.invoice_ar_id, ROW_NUMBER() OVER (PARTITION BY C.invoice_ar_id), E.activity_gl_id,
  155.                 vEmptyValue, vCurrency, F.base_amount, -99, vNol, vNol,
  156.                 A.remark, vNol, pDatetime, pUserId, pDatetime,
  157.                 pUserId, vEmptyValue
  158.             FROM i_trx_pos A
  159.             INNER JOIN i_trx_pos_termin_payment B ON A.tenant_id = B.tenant_id AND A.process_no = B.process_no AND A.trx_pos_id = B.trx_pos_id
  160.             INNER JOIN i_trx_pos_tax F ON A.tenant_id = F.tenant_id AND A.process_no = F.process_no AND A.trx_pos_id = F.trx_pos_id
  161.             INNER JOIN fi_invoice_ar C ON A.doc_no = C.doc_no AND A.doc_date = C.doc_date AND A.tenant_id = C.tenant_id AND C.doc_type_id = vDocTypeDebtNoteAr
  162.             INNER JOIN m_activity_gl E ON E.coa_id = vCoaId AND A.tenant_id = E.tenant_id
  163.             WHERE A.tenant_id = pTenantId
  164.                 AND A.process_no = pProcessNo
  165.                 AND A.ou_id = pOuId
  166.                 AND A.trx_pos_id = pTrxPosId
  167.                 AND F.tax_id = -99
  168.                 AND F.tax_amount = 0;
  169.            
  170.             SELECT COALESCE(MAX(line_no), 0) INTO vMaxLineNo
  171.             FROM fi_invoice_ar_cost
  172.             WHERE invoice_ar_id = vInvoiceArId;
  173.                
  174.             /* insert fi_invoice_ar_cost with tax */
  175.             INSERT INTO fi_invoice_ar_cost(
  176.                 tenant_id, invoice_ar_id, line_no, activity_gl_id,
  177.                 ou_rc_id, curr_code, add_amount, tax_id, tax_percentage, tax_amount,
  178.                 remark, version, create_datetime, create_user_id, update_datetime,
  179.                 update_user_id, segment_id)
  180.             SELECT A.tenant_id, C.invoice_ar_id, vMaxLineNo + ROW_NUMBER() OVER (PARTITION BY C.invoice_ar_id), E.activity_gl_id,
  181.                 vEmptyValue, vCurrency, vNettAmountWithoutNonTax - COALESCE(f_get_tax_amount(A.tenant_id, vNettAmountWithoutNonTax, F.flg_amount, F.tax_percentage), vNol), COALESCE(F.tax_id, vEmptyValue), COALESCE(F.tax_percentage, vNol), COALESCE(f_get_tax_amount(A.tenant_id, vNettAmountWithoutNonTax, F.flg_amount, F.tax_percentage), vNol),
  182.                 A.remark, vNol, pDatetime, pUserId, pDatetime,
  183.                 pUserId, vEmptyValue
  184.             FROM i_trx_pos A
  185.             INNER JOIN i_trx_pos_termin_payment B ON A.tenant_id = B.tenant_id AND A.process_no = B.process_no AND A.trx_pos_id = B.trx_pos_id
  186.             INNER JOIN i_trx_pos_tax F ON A.tenant_id = F.tenant_id AND A.process_no = F.process_no AND A.trx_pos_id = F.trx_pos_id
  187.             INNER JOIN fi_invoice_ar C ON A.doc_no = C.doc_no AND A.doc_date = C.doc_date AND A.tenant_id = C.tenant_id AND C.doc_type_id = vDocTypeDebtNoteAr
  188.             LEFT JOIN m_tax D ON F.tax_id = D.tax_id
  189.             INNER JOIN m_activity_gl E ON E.coa_id = vCoaId AND A.tenant_id = E.tenant_id
  190.             WHERE A.tenant_id = pTenantId
  191.                 AND A.process_no = pProcessNo
  192.                 AND A.ou_id = pOuId
  193.                 AND A.trx_pos_id = pTrxPosId
  194.                 AND F.tax_id <> -99
  195.                 AND F.tax_amount <> 0;
  196.            
  197.             SELECT COALESCE(MAX(line_no), 0) INTO vMaxLineNo
  198.             FROM fi_invoice_ar_cost
  199.             WHERE invoice_ar_id = vInvoiceArId;
  200.                
  201.             /* untuk PKP ambil dan tulis juga nilai roundingnya jika ada */
  202.             /* insert rounding tanpa tax */
  203.             INSERT INTO fi_invoice_ar_cost(
  204.                 tenant_id, invoice_ar_id, line_no, activity_gl_id,
  205.                 ou_rc_id, curr_code, add_amount, tax_id, tax_percentage, tax_amount,
  206.                 remark, version, create_datetime, create_user_id, update_datetime,
  207.                 update_user_id, segment_id)
  208.             SELECT A.tenant_id, C.invoice_ar_id, vMaxLineNo + ROW_NUMBER() OVER (PARTITION BY C.invoice_ar_id), E.activity_gl_id,
  209.                 vEmptyValue, vCurrency, A.rounding_amount, vEmptyValue, vNol, vNol, -- tanpa tax
  210.                 A.remark, vNol, pDatetime, pUserId, pDatetime,
  211.                 pUserId, vEmptyValue
  212.             FROM i_trx_pos A
  213.             INNER JOIN i_trx_pos_termin_payment B ON A.tenant_id = B.tenant_id AND A.process_no = B.process_no AND A.trx_pos_id = B.trx_pos_id
  214.             INNER JOIN i_trx_pos_tax F ON A.tenant_id = F.tenant_id AND A.process_no = F.process_no AND A.trx_pos_id = F.trx_pos_id
  215.             INNER JOIN fi_invoice_ar C ON A.doc_no = C.doc_no AND A.doc_date = C.doc_date AND A.tenant_id = C.tenant_id AND C.doc_type_id = vDocTypeDebtNoteAr
  216.             LEFT JOIN m_tax D ON F.tax_id = D.tax_id
  217.             INNER JOIN m_activity_gl E ON E.coa_id = vCoaId AND A.tenant_id = E.tenant_id
  218.             WHERE A.tenant_id = pTenantId
  219.                 AND A.process_no = pProcessNo
  220.                 AND A.ou_id = pOuId
  221.                 AND A.trx_pos_id = pTrxPosId
  222.                 AND A.rounding_amount > 0;
  223.                
  224.             /*
  225.              * insert fi_invoice_ar_balance
  226.              * untuk saldo DP partner corporate yg bayar sebagian
  227.              * untuk yang PKP Saldo DP, flg_payment = N dan payment_amount = 0
  228.              */
  229.             INSERT INTO fi_invoice_ar_balance(
  230.                     invoice_ar_balance_id, tenant_id, ou_id, doc_type_id, invoice_ar_id,
  231.                     doc_no, doc_date, ext_doc_no, ext_doc_date, ref_doc_type_id,
  232.                     ref_id, partner_id, due_date, curr_code, amount, remark, payment_amount,
  233.                     flg_payment, version, create_datetime, create_user_id, update_datetime,
  234.                     update_user_id)
  235.             SELECT vInvoiceArBalanceId, A.tenant_id, c.ou_parent_id, vDocTypeDPBalance, F.invoice_ar_id,
  236.                 A.doc_no, A.doc_date, vSpasiChar, vSpasiChar, A.doc_type_id,
  237.                 A.trx_pos_id, A.partner_id,
  238.                 -- rev by Ping An 16 Nov 2015, due_date ambil dari docdatenya POS karena DP sudah kejadian dan sudah approved  B.payment_due_date,
  239.                 A.doc_date,
  240.                 A.curr_code, -1 * A.total_payment, vSpasiChar, vNol,
  241.                 vNo, vNol, pDatetime, pUserId, pDatetime,
  242.                 pUserId
  243.             FROM i_trx_pos A
  244.             INNER JOIN i_trx_pos_termin_payment B ON A.tenant_id = B.tenant_id AND A.process_no = B.process_no AND A.trx_pos_id = B.trx_pos_id
  245.             INNER JOIN t_ou C ON A.ou_id = C.ou_id AND A.tenant_id = C.tenant_id
  246.             INNER JOIN fi_invoice_ar F ON A.doc_no = F.doc_no AND A.doc_date = F.doc_date AND A.tenant_id = F.tenant_id AND F.doc_type_id = vDocTypeDebtNoteAr
  247.             WHERE A.tenant_id = pTenantId
  248.                 AND A.process_no = pProcessNo
  249.                 AND A.ou_id = pOuId
  250.                 AND A.trx_pos_id = pTrxPosId
  251.                 AND B.payment_amount > 0;
  252.                 -- B.payment_amount > 0 untuk cek apakah ada yang dibayar          
  253.                 -- F.invoice_ar_id : unique index -> fi_invoice_ar_balance adalah tenant_id, doc_type_id, dan invoice_ar_id.
  254.                 -- jadi tidak dipantek -99, krn pasti akan kena error unique constraint
  255.         ELSE
  256.             /* NON PKP */
  257.             /*
  258.              * insert ke tabel finance invoice ar
  259.              * dengan status_doc = I dan workflow_status = APPROVED
  260.              *
  261.              */
  262.             INSERT INTO fi_invoice_ar(
  263.                 invoice_ar_id, tenant_id, doc_type_id, doc_no, doc_date, ou_id,
  264.                 partner_id, ext_doc_no, ext_doc_date, ref_doc_type_id, ref_id,
  265.                 due_date, curr_code, total_tax_base_amount, total_amount, tax_amount,
  266.                 remark, status_doc, workflow_status, version, create_datetime,
  267.                 create_user_id, update_datetime, update_user_id)
  268.             SELECT vInvoiceArId, A.tenant_id, vDocTypeDebtNoteAr, A.doc_no, A.doc_date, C.ou_parent_id,
  269.                 D.partner_id, A.doc_no, A.doc_date, vEmptyValue, vEmptyValue,
  270.                 B.payment_due_date, vCurrency, vNol, vNol, vNol,
  271.                 A.remark, vStatusDoc, vWorkFlowStatus, vNol, pDatetime,
  272.                 pUserId, pDatetime, pUserId
  273.             FROM i_trx_pos A
  274.             INNER JOIN i_trx_pos_termin_payment B ON A.tenant_id = B.tenant_id AND A.process_no = B.process_no AND A.trx_pos_id = B.trx_pos_id
  275.             INNER JOIN t_ou C ON A.ou_id = C.ou_id AND A.tenant_id = C.tenant_id
  276.             INNER JOIN m_partner D ON A.partner_id = D.partner_id AND A.tenant_id = D.tenant_id
  277.             WHERE A.tenant_id = pTenantId
  278.                 AND A.process_no = pProcessNo
  279.                 AND A.ou_id = pOuId
  280.                 AND A.trx_pos_id = pTrxPosId
  281.                 AND B.under_payment_amount > 0
  282.             ORDER BY doc_date;
  283.        
  284.                
  285.             /* insert fi_invoice_ar_cost */
  286.             INSERT INTO fi_invoice_ar_cost(
  287.                 tenant_id, invoice_ar_id, line_no, activity_gl_id,
  288.                 ou_rc_id, curr_code, add_amount, tax_id, tax_percentage, tax_amount,
  289.                 remark, version, create_datetime, create_user_id, update_datetime,
  290.                 update_user_id, segment_id)
  291.             SELECT A.tenant_id, C.invoice_ar_id, ROW_NUMBER() OVER (PARTITION BY C.invoice_ar_id), E.activity_gl_id,
  292.                 vEmptyValue, vCurrency, B.under_payment_amount, vEmptyValue, vNol, vNol,
  293.                 A.remark, vNol, pDatetime, pUserId, pDatetime,
  294.                 pUserId, vEmptyValue
  295.             FROM i_trx_pos A
  296.             INNER JOIN i_trx_pos_termin_payment B ON A.tenant_id = B.tenant_id AND A.process_no = B.process_no AND A.trx_pos_id = B.trx_pos_id
  297.             INNER JOIN fi_invoice_ar C ON A.doc_no = C.doc_no AND A.doc_date = C.doc_date AND A.tenant_id = C.tenant_id AND C.doc_type_id = vDocTypeDebtNoteAr
  298.             --INNER JOIN m_tax D ON A.tenant_id = D.tenant_id
  299.             INNER JOIN m_activity_gl E ON E.coa_id = vCoaId AND A.tenant_id = E.tenant_id
  300.             WHERE A.tenant_id = pTenantId
  301.                 AND A.process_no = pProcessNo
  302.                 AND A.ou_id = pOuId
  303.                 AND A.trx_pos_id = pTrxPosId;
  304.            
  305.             /*
  306.              * insert fi_invoice_ar_balance
  307.              * untuk saldo DP partner corporate yg bayar sebagian
  308.              * untuk yang Non PKP Saldo DP, flg_payment = Y dan payment_amount = amount
  309.              */
  310.             INSERT INTO fi_invoice_ar_balance(
  311.                     invoice_ar_balance_id, tenant_id, ou_id, doc_type_id, invoice_ar_id,
  312.                     doc_no, doc_date, ext_doc_no, ext_doc_date, ref_doc_type_id,
  313.                     ref_id, partner_id, due_date, curr_code, amount, remark, payment_amount,
  314.                     flg_payment, version, create_datetime, create_user_id, update_datetime,
  315.                     update_user_id)
  316.             SELECT vInvoiceArBalanceId, A.tenant_id, c.ou_parent_id, vDocTypeDPBalance, F.invoice_ar_id,
  317.                 A.doc_no, A.doc_date, vSpasiChar, vSpasiChar, A.doc_type_id,
  318.                 A.trx_pos_id, A.partner_id,
  319.                 -- rev by Ping An 16 Nov 2015, due_date ambil dari docdatenya POS karena DP sudah kejadian dan sudah approved  B.payment_due_date,
  320.                 A.doc_date,
  321.                 A.curr_code, -1 * A.total_payment, vSpasiChar, -1 * A.total_payment,
  322.                 vYes, vNol, pDatetime, pUserId, pDatetime,
  323.                 pUserId
  324.             FROM i_trx_pos A
  325.             INNER JOIN i_trx_pos_termin_payment B ON A.tenant_id = B.tenant_id AND A.process_no = B.process_no AND A.trx_pos_id = B.trx_pos_id
  326.             INNER JOIN t_ou C ON A.ou_id = C.ou_id AND A.tenant_id = C.tenant_id
  327.             INNER JOIN fi_invoice_ar F ON A.doc_no = F.doc_no AND A.doc_date = F.doc_date AND A.tenant_id = F.tenant_id AND F.doc_type_id = vDocTypeDebtNoteAr
  328.             WHERE A.tenant_id = pTenantId
  329.                 AND A.process_no = pProcessNo
  330.                 AND A.ou_id = pOuId
  331.                 AND A.trx_pos_id = pTrxPosId
  332.                 AND B.payment_amount > 0;
  333.                 -- B.payment_amount > 0 untuk cek apakah ada yang dibayar          
  334.                 -- F.invoice_ar_id : unique index -> fi_invoice_ar_balance adalah tenant_id, doc_type_id, dan invoice_ar_id.
  335.                 -- jadi tidak dipantek -99, krn pasti akan kena error unique constraint
  336.        
  337.         END IF;
  338.        
  339.         /* generate_process_message_for_submit_doc */
  340.         /**
  341.          * mod by Didit, 29 Nov 2016
  342.          * Debt Note AR langsung approved, tidak pedulikan flag PKP
  343.          */
  344.         --IF pFlgPkp = vNo THEN
  345.        
  346.         PERFORM generate_process_message_for_submit_doc(pSessionId, pTenantId, vProcessName, B.invoice_ar_id ||'_'||B.doc_no,
  347.                 pDatetime, vParamKey, B.invoice_ar_id::character varying, pUserId)
  348.         FROM i_trx_pos A
  349.         INNER JOIN fi_invoice_ar B ON A.tenant_id = B.tenant_id AND A.doc_no = B.doc_no AND A.doc_date = B.doc_date AND B.doc_type_id = vDocTypeDebtNoteAr
  350.         WHERE A.tenant_id = pTenantId
  351.             AND A.process_no = pProcessNo
  352.             AND A.ou_id = pOuId
  353.             AND A.trx_pos_id = pTrxPosId;
  354.        
  355.         -- Mendapatkan default approval flow ID yang dipakai dari sysconfig
  356.         SELECT awe_flow_id INTO vFlowArDebtNoteId
  357.         FROM awe_flow
  358.         WHERE scheme = vSchemeDebtNoteAr AND
  359.             flg_validate = 'Y' AND
  360.             active = 'Y';
  361.        
  362.          -- Generate data awe_currdoc_status
  363.         INSERT INTO awe_currdoc_status(
  364.             req_id, tenant_id, scheme, doc_id, doc_no, doc_date, current_state,
  365.             remark, current_user_id, current_role_id, flg_user_role, label,
  366.             data, flow_id, create_datetime, create_user_id, create_role_id,
  367.             update_datetime, update_user_id, update_role_id, version)
  368.         SELECT A.invoice_ar_id||'_'||A.doc_no, A.tenant_id, vSchemeDebtNoteAr, A.invoice_ar_id, A.doc_no, A.doc_date, vWorkFlowStatus,
  369.             A.remark, A.create_user_id, vEmptyValue, 'R', 'AR DEBT NOTE'||A.doc_no,
  370.             '{}', vFlowArDebtNoteId, pDatetime, pUserId, vEmptyValue,
  371.             pDatetime, pUserId, vEmptyValue, 0
  372.         FROM fi_invoice_ar A
  373.         WHERE A.invoice_ar_id = vInvoiceArId
  374.             AND A.status_doc = 'R';
  375.        
  376.         --END IF;
  377.        
  378.         /**
  379.          * mod By Didit, 1 Des 2016
  380.          * untuk alokasi otomatis saldo DP ke debt note ar
  381.          */
  382.         IF EXISTS(SELECT 1 FROM fi_invoice_ar_balance WHERE invoice_ar_balance_id = vInvoiceArBalanceId) THEN
  383.             PERFORM f_automatic_credit_alloc_ar(pSessionId, pTenantId, vInvoiceArId, vInvoiceArBalanceId, pUserId, pDatetime);
  384.         END IF;
  385.        
  386.     END IF;
  387.    
  388. END
  389. $BODY$
  390.   LANGUAGE plpgsql VOLATILE
  391.   COST 100;
  392. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement