aadddrr

r_report_daily_cashbank_20170925

Sep 24th, 2017
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --edit, Putra 28 April 2015 -> tambah kolom ref_doc_type_id, ref_id, ref_doc_no, ref_doc_date, remark, partner_name pada tr_daily_cashbank
  2. --edit, Citrahadi 1 Okt 2015 -> tambah mutasi dari dokumen follow up cash advance settlement
  3. --edit, Thea 20 Mei 2016 -> perhitungan untuk beginning balance
  4. /**
  5.  * Modified by Adrian, Sep 19, 2017
  6.  * menambahkan filter status doc
  7.  * menambahkkan status doc pada remark
  8.  * menambahkan dokumen Cheque/Giro Realization beserta cost amount-nya
  9.  */
  10. CREATE OR REPLACE FUNCTION r_report_daily_cashbank(character varying, bigint, bigint, bigint, character varying, bigint, bigint, character varying, character varying, character varying)
  11.   RETURNS SETOF refcursor AS
  12. $BODY$
  13. DECLARE
  14.     pRefHeader          REFCURSOR := 'refHeader';
  15.     pRefDetail          REFCURSOR := 'refDetail';
  16.     pSessionId          ALIAS FOR $1;
  17.     pTenantId           ALIAS FOR $2;
  18.     pUserId             ALIAS FOR $3;
  19.     pRoleId             ALIAS FOR $4;
  20.     pDatetime           ALIAS FOR $5;
  21.     pOuId               ALIAS FOR $6;
  22.     pCashbankId         ALIAS FOR $7;
  23.     pDateStart          ALIAS FOR $8;
  24.     pDateEnd            ALIAS FOR $9;
  25.     pStatusDoc          ALIAS FOR $10;
  26.    
  27.     vEmptyId                bigint;
  28.     vEmpty                  character varying(1);
  29.     vCashBankInType         character varying(1);
  30.     vCashBankOutType        character varying(1);
  31.     vStatusReleased         character varying(1);
  32.     vStatusVoid             character varying(1);
  33.     vRecordTypeSaldoAwal    character varying(1);
  34.     vRecordTypeKredit       character varying(1);
  35.     vRecordTypeDebet        character varying(1);
  36.     vTglAwalCashbankBalance character varying(8);
  37.     vDocTypePosShop             bigint;
  38.     vDocTypeReturnPosShop       bigint;
  39.     vDocTypePosShopInshop       bigint;
  40.     vDocTypeReturnPosShopInShop bigint;
  41.     vDocTypeCashBankOut         bigint;
  42.     vDocTypeCashBankInOther     bigint;
  43.     vDocTypeCashBankInAr        bigint;
  44.     vDocTypeEdcSettlement       bigint;
  45.     vDocTypeFollowUpCashAdvanceSettlement       bigint;
  46.     vCount                      bigint;
  47.    
  48.     vStatusApprovedDoc                      character varying;
  49.     vStatusApprovedDocAndOsCbOut            character varying;
  50.     vStatusApprovedDocAndOsCbIn             character varying
  51.     vAllStatusDoc                           character varying;
  52.     vStatusInProgress                       character varying;
  53.     vStatusDraft                            character varying;
  54.     vInProgress                             character varying;
  55.     vApproved                               character varying;
  56.     vDraft                                  character varying;
  57.     vNewLine                                character varying;
  58.     vStatusDocLabel                         character varying;
  59.     vRemarkLabel                            character varying;
  60.     vDocTypeCGRealization                   bigint;
  61.     vStatusAccept                           character varying;
  62.    
  63. BEGIN
  64.    
  65.     vEmptyId := -99;
  66.     vEmpty   := ' ';
  67.     vCashBankInType := 'I';
  68.     vCashBankOutType := 'O';
  69.     vStatusReleased := 'R';
  70.     vStatusVoid := 'V';
  71.     vRecordTypeSaldoAwal := 'A';
  72.     vRecordTypeKredit := 'K';
  73.     vRecordTypeDebet := 'D';
  74.     vTglAwalCashbankBalance := ' ';
  75.     vDocTypePosShop := 401;
  76.     vDocTypeReturnPosShop := 402;
  77.     vDocTypePosShopInShop := 403;
  78.     vDocTypeReturnPosShopInShop := 404;
  79.     vDocTypeCashBankOut := 611;
  80.     vDocTypeCashBankInOther := 623;
  81.     vDocTypeCashBankInAr := 621;
  82.     vDocTypeEdcSettlement := 622;
  83.     vDocTypeFollowUpCashAdvanceSettlement := 641;
  84.    
  85.     vStatusApprovedDoc := 'approvedDoc';
  86.     vStatusApprovedDocAndOsCbOut := 'approvedDocAndOutstandingCBOutOnly';
  87.     vStatusApprovedDocAndOsCbIn := 'approvedDocAndOutstandingCBInOnly';
  88.     vAllStatusDoc := 'allStatusDoc';
  89.     vStatusInProgress := 'I';
  90.     vStatusDraft := 'D';
  91.     vInProgress := 'IN PROGRESS';
  92.     vDraft := 'DRAFT';
  93.     vApproved := 'APPROVED';
  94.     vNewLine := E'\n';
  95.     vStatusDocLabel := 'STATUS DOKUMEN: ';
  96.     vRemarkLabel := 'REMARK: ';
  97.     vDocTypeCGRealization := 625;
  98.     vStatusAccept := 'ACCEPT';
  99.    
  100.     DELETE FROM tr_daily_cashbank WHERE session_id = pSessionId;
  101.     DELETE FROM tr_kartu_kas_by_doc_type WHERE session_id = pSessionId;
  102.    
  103.     SELECT MAX(A.cash_bank_date) INTO vTglAwalCashbankBalance
  104.     FROM cb_cashbank_balance A
  105.     WHERE A.tenant_id = pTenantId
  106.     AND A.cashbank_id = pCashbankId
  107.     AND A.rec_type = vRecordTypeSaldoAwal
  108.     AND A.cash_bank_date <= pDateStart;
  109.  
  110.     IF vTglAwalCashbankBalance IS null OR vTglAwalCashbankBalance IN ('', ' ') THEN
  111.        
  112.         INSERT INTO tr_daily_cashbank
  113.         (session_id, tenant_id, cashbank_id, order_type_data,
  114.         doc_type_id, doc_type_desc, doc_no, doc_date,
  115.         mode_payment, bank_payment, no_payment, date_payment,
  116.         amount)
  117.         SELECT pSessionId, pTenantId, A.cashbank_id, 1, -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  118.         ' ', ' ', ' ', ' ',
  119.         SUM(CASE WHEN rec_type = vRecordTypeKredit THEN A.amount * -1 ELSE A.amount END) AS sum_amount
  120.         FROM cb_cashbank_balance A
  121.         WHERE A.tenant_id = pTenantId
  122.         AND A.cashbank_id = pCashbankId
  123.         AND A.cash_bank_date < pDateStart
  124.         GROUP BY A.cashbank_id;
  125.            
  126.     ELSE
  127.    
  128.         INSERT INTO tr_daily_cashbank
  129.         (session_id, tenant_id, cashbank_id, order_type_data,
  130.         doc_type_id, doc_type_desc, doc_no, doc_date,
  131.         mode_payment, bank_payment, no_payment, date_payment,
  132.         amount)
  133.         SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  134.         'Beginning Balance', 'Beginning Balance', pDateStart,
  135.         ' ', ' ', ' ', ' ',
  136.         SUM(A.amount) AS sum_amount
  137.         FROM cb_cashbank_balance A
  138.         WHERE A.tenant_id = pTenantId
  139.         AND A.cashbank_id = pCashbankId
  140.         AND A.cash_bank_date = vTglAwalCashbankBalance
  141.         AND A.rec_type = vRecordTypeSaldoAwal
  142.         GROUP BY A.cashbank_id;
  143.    
  144.         INSERT INTO tr_daily_cashbank
  145.         (session_id, tenant_id, cashbank_id, order_type_data,
  146.         doc_type_id, doc_type_desc, doc_no, doc_date,
  147.         mode_payment, bank_payment, no_payment, date_payment,
  148.         amount)
  149.         SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  150.         'Beginning Balance', 'Beginning Balance', pDateStart,
  151.         ' ', ' ', ' ', ' ',
  152.         SUM(CASE WHEN rec_type = vRecordTypeKredit THEN A.amount * -1 ELSE A.amount END) AS sum_amount
  153.         FROM cb_cashbank_balance A
  154.         WHERE A.tenant_id = pTenantId
  155.         AND A.cashbank_id = pCashbankId
  156.         AND A.cash_bank_date >= vTglAwalCashbankBalance
  157.         AND A.cash_bank_date < pDateStart
  158.         AND A.rec_type <> vRecordTypeSaldoAwal
  159.         GROUP BY A.cashbank_id;
  160.        
  161.         --ambil nilai untuk CB trf
  162.         INSERT INTO tr_daily_cashbank
  163.         (session_id, tenant_id, cashbank_id, order_type_data,
  164.         doc_type_id, doc_type_desc, doc_no, doc_date,
  165.         mode_payment, bank_payment, no_payment, date_payment,
  166.         amount)
  167.         SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  168.         'Beginning Balance', 'Beginning Balance', pDateStart,
  169.         ' ', ' ', ' ', ' ',
  170.         SUM(A.transfer_amount)
  171.         FROM cb_transfer_cashbank A
  172.         WHERE A.tenant_id = pTenantId
  173.         AND A.cashbank_id = pCashbankId
  174.         AND A.status_doc <> vStatusReleased
  175.         AND A.doc_date >= vTglAwalCashbankBalance
  176.         AND A.doc_date < pDateStart
  177.         GROUP BY A.cashbank_id;
  178.        
  179.         INSERT INTO tr_daily_cashbank
  180.         (session_id, tenant_id, cashbank_id, order_type_data,
  181.         doc_type_id, doc_type_desc, doc_no, doc_date,
  182.         mode_payment, bank_payment, no_payment, date_payment,
  183.         amount)
  184.         SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  185.         'Beginning Balance', 'Beginning Balance', pDateStart,
  186.         ' ', ' ', ' ', ' ',
  187.         SUM(B.payment_amount)
  188.         FROM cb_transfer_cashbank A
  189.         RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  190.         WHERE A.tenant_id = pTenantId
  191.         AND A.cashbank_id = pCashbankId
  192.         AND A.status_doc <> vStatusReleased
  193.         AND A.doc_date >= vTglAwalCashbankBalance
  194.         AND A.doc_date < pDateStart
  195.         GROUP BY A.cashbank_id;
  196.        
  197.         --ambil nilai untuk CB out
  198.         INSERT INTO tr_daily_cashbank
  199.         (session_id, tenant_id, cashbank_id, order_type_data,
  200.         doc_type_id, doc_type_desc, doc_no, doc_date,
  201.         mode_payment, bank_payment, no_payment, date_payment,
  202.         amount)
  203.         SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  204.         -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  205.         ' ', ' ', ' ', ' ',
  206.         SUM(B.cashbank_amount)
  207.         FROM cb_in_out_cashbank A
  208.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  209.         WHERE A.tenant_id = pTenantId
  210.         AND B.cashbank_id = pCashbankId
  211.         AND A.doc_date >= vTglAwalCashbankBalance
  212.         AND A.doc_date < pDateStart
  213.         AND A.status_doc <> vStatusReleased
  214.         AND A.doc_type_id = vDocTypeCashBankOut
  215.         GROUP BY B.cashbank_id;
  216.        
  217.         --ambil nilai untuk FU CAS
  218.         INSERT INTO tr_daily_cashbank
  219.         (session_id, tenant_id, cashbank_id, order_type_data,
  220.         doc_type_id, doc_type_desc, doc_no, doc_date,
  221.         mode_payment, bank_payment, no_payment, date_payment,
  222.         amount)
  223.         SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  224.         -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  225.         ' ', ' ', ' ', ' ',
  226.         SUM(B.cashbank_amount)
  227.         FROM cb_in_out_cashbank A
  228.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  229.         WHERE A.tenant_id = pTenantId
  230.         AND B.cashbank_id = pCashbankId
  231.         AND A.doc_date >= vTglAwalCashbankBalance
  232.         AND A.doc_date < pDateStart
  233.         AND A.status_doc <> vStatusReleased
  234.         AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  235.         AND A.ref_amount > 0
  236.         GROUP BY B.cashbank_id;
  237.        
  238.         --Adrian, Sep 19, 2017, ambil nilai untuk O/S CB out
  239.         IF (pStatusDoc = vStatusApprovedDocAndOsCbOut)
  240.             OR (pStatusDoc = vAllStatusDoc) THEN
  241.            
  242.             --ambil nilai untuk O/S CB trf
  243.             INSERT INTO tr_daily_cashbank
  244.             (session_id, tenant_id, cashbank_id, order_type_data,
  245.             doc_type_id, doc_type_desc, doc_no, doc_date,
  246.             mode_payment, bank_payment, no_payment, date_payment,
  247.             amount)
  248.             SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  249.             'Beginning Balance', 'Beginning Balance', pDateStart,
  250.             ' ', ' ', ' ', ' ',
  251.             SUM(-1 * A.transfer_amount)
  252.             FROM cb_transfer_cashbank A
  253.             WHERE A.tenant_id = pTenantId
  254.             AND A.cashbank_id = pCashbankId
  255.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  256.             AND A.doc_date >= vTglAwalCashbankBalance
  257.             AND A.doc_date < pDateStart
  258.             GROUP BY A.cashbank_id;
  259.            
  260.             INSERT INTO tr_daily_cashbank
  261.             (session_id, tenant_id, cashbank_id, order_type_data,
  262.             doc_type_id, doc_type_desc, doc_no, doc_date,
  263.             mode_payment, bank_payment, no_payment, date_payment,
  264.             amount)
  265.             SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  266.             'Beginning Balance', 'Beginning Balance', pDateStart,
  267.             ' ', ' ', ' ', ' ',
  268.             SUM(-1 * B.payment_amount)
  269.             FROM cb_transfer_cashbank A
  270.             RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  271.             WHERE A.tenant_id = pTenantId
  272.             AND A.cashbank_id = pCashbankId
  273.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  274.             AND A.doc_date >= vTglAwalCashbankBalance
  275.             AND A.doc_date < pDateStart
  276.             GROUP BY A.cashbank_id;
  277.            
  278.             --ambil nilai untuk O/S CB out
  279.             INSERT INTO tr_daily_cashbank
  280.             (session_id, tenant_id, cashbank_id, order_type_data,
  281.             doc_type_id, doc_type_desc, doc_no, doc_date,
  282.             mode_payment, bank_payment, no_payment, date_payment,
  283.             amount)
  284.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  285.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  286.             ' ', ' ', ' ', ' ',
  287.             SUM(-1 * B.cashbank_amount)
  288.             FROM cb_in_out_cashbank A
  289.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  290.             WHERE A.tenant_id = pTenantId
  291.             AND B.cashbank_id = pCashbankId
  292.             AND A.doc_date >= vTglAwalCashbankBalance
  293.             AND A.doc_date < pDateStart
  294.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  295.             AND A.doc_type_id = vDocTypeCashBankOut
  296.             GROUP BY B.cashbank_id;
  297.            
  298.             --ambil nilai untuk O/S FU CAS
  299.             INSERT INTO tr_daily_cashbank
  300.             (session_id, tenant_id, cashbank_id, order_type_data,
  301.             doc_type_id, doc_type_desc, doc_no, doc_date,
  302.             mode_payment, bank_payment, no_payment, date_payment,
  303.             amount)
  304.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  305.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  306.             ' ', ' ', ' ', ' ',
  307.             SUM(-1 * B.cashbank_amount)
  308.             FROM cb_in_out_cashbank A
  309.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  310.             WHERE A.tenant_id = pTenantId
  311.             AND B.cashbank_id = pCashbankId
  312.             AND A.doc_date >= vTglAwalCashbankBalance
  313.             AND A.doc_date < pDateStart
  314.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  315.             AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  316.             AND A.ref_amount > 0
  317.             GROUP BY B.cashbank_id;
  318.            
  319.         END IF;
  320.        
  321.         --Adrian, Sep 19, 2017, ambil nilai untuk O/S CB in
  322.         IF (pStatusDoc = vStatusApprovedDocAndOsCbIn)
  323.             OR (pStatusDoc = vAllStatusDoc) THEN
  324.    
  325.             --ambil nilai untuk O/S CB trf
  326.             INSERT INTO tr_daily_cashbank
  327.             (session_id, tenant_id, cashbank_id, order_type_data,
  328.             doc_type_id, doc_type_desc, doc_no, doc_date,
  329.             mode_payment, bank_payment, no_payment, date_payment,
  330.             amount)
  331.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  332.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  333.             ' ', ' ', ' ', ' ',
  334.             SUM(A.receive_amount)
  335.             FROM cb_transfer_cashbank_receive A
  336.             INNER JOIN cb_transfer_cashbank B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  337.             WHERE B.tenant_id = pTenantId
  338.             AND A.cashbank_to_id = pCashbankId
  339.             AND B.status_doc IN (vStatusDraft, vStatusInProgress)
  340.             AND B.doc_date >= vTglAwalCashbankBalance
  341.             AND B.doc_date < pDateStart
  342.             GROUP BY B.cashbank_id;
  343.            
  344.             --ambil nilai untuk O/S CB in AR
  345.             INSERT INTO tr_daily_cashbank
  346.             (session_id, tenant_id, cashbank_id, order_type_data,
  347.             doc_type_id, doc_type_desc, doc_no, doc_date,
  348.             mode_payment, bank_payment, no_payment, date_payment,
  349.             amount)
  350.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  351.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  352.             ' ', ' ', ' ', ' ',
  353.             SUM(B.cashbank_amount) - SUM(COALESCE(C.cost_amount, 0))
  354.             FROM cb_in_out_cashbank A
  355.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  356.             LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  357.             WHERE A.tenant_id = pTenantId
  358.             AND B.cashbank_id = pCashbankId
  359.             AND A.doc_date >= vTglAwalCashbankBalance
  360.             AND A.doc_date < pDateStart
  361.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  362.             AND A.doc_type_id = vDocTypeCashBankInAr
  363.             GROUP BY B.cashbank_id;
  364.            
  365.             --ambil nilai untuk O/S CB in other
  366.             INSERT INTO tr_daily_cashbank
  367.             (session_id, tenant_id, cashbank_id, order_type_data,
  368.             doc_type_id, doc_type_desc, doc_no, doc_date,
  369.             mode_payment, bank_payment, no_payment, date_payment,
  370.             amount)
  371.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  372.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  373.             ' ', ' ', ' ', ' ',
  374.             SUM(B.cashbank_amount) - SUM(COALESCE(C.cost_amount, 0))
  375.             FROM cb_in_out_cashbank A
  376.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  377.             LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  378.             WHERE A.tenant_id = pTenantId
  379.             AND B.cashbank_id = pCashbankId
  380.             AND A.doc_date >= vTglAwalCashbankBalance
  381.             AND A.doc_date < pDateStart
  382.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  383.             AND A.doc_type_id = vDocTypeCashBankInOther
  384.             GROUP BY B.cashbank_id;
  385.            
  386.             --ambil nilai untuk O/S EDC Settlement
  387.             INSERT INTO tr_daily_cashbank
  388.             (session_id, tenant_id, cashbank_id, order_type_data,
  389.             doc_type_id, doc_type_desc, doc_no, doc_date,
  390.             mode_payment, bank_payment, no_payment, date_payment,
  391.             amount)
  392.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  393.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  394.             ' ', ' ', ' ', ' ',
  395.             SUM(B.cashbank_amount)
  396.             FROM cb_in_out_cashbank A
  397.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  398.             LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  399.             LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  400.             WHERE A.tenant_id = pTenantId
  401.             AND B.cashbank_id = pCashbankId
  402.             AND A.doc_date >= vTglAwalCashbankBalance
  403.             AND A.doc_date < pDateStart
  404.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  405.             AND A.doc_type_id = vDocTypeEdcSettlement
  406.             GROUP BY B.cashbank_id;
  407.                    
  408.             --ambil nilai untuk O/S FU CAS
  409.             INSERT INTO tr_daily_cashbank
  410.             (session_id, tenant_id, cashbank_id, order_type_data,
  411.             doc_type_id, doc_type_desc, doc_no, doc_date,
  412.             mode_payment, bank_payment, no_payment, date_payment,
  413.             amount)
  414.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  415.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  416.             ' ', ' ', ' ', ' ',
  417.             SUM(B.cashbank_amount)
  418.             FROM cb_in_out_cashbank A
  419.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  420.             WHERE A.tenant_id = pTenantId
  421.             AND B.cashbank_id = pCashbankId
  422.             AND A.doc_date >= vTglAwalCashbankBalance
  423.             AND A.doc_date < pDateStart
  424.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  425.             AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  426.             AND A.ref_amount < 0
  427.             GROUP BY B.cashbank_id;
  428.            
  429.             --ambil nilai untuk O/S CG Realization
  430.             INSERT INTO tr_daily_cashbank
  431.             (session_id, tenant_id, cashbank_id, order_type_data,
  432.             doc_type_id, doc_type_desc, doc_no, doc_date,
  433.             mode_payment, bank_payment, no_payment, date_payment,
  434.             amount)
  435.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  436.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  437.             ' ', ' ', ' ', ' ',
  438.             SUM(B.cheque_giro_amount)
  439.             FROM cb_in_out_cashbank A
  440.             INNER JOIN cb_cheque_giro_realization B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  441.             WHERE A.tenant_id = pTenantId
  442.             AND B.cashbank_id = pCashbankId
  443.             AND A.doc_date >= vTglAwalCashbankBalance
  444.             AND A.doc_date < pDateStart
  445.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  446.             AND A.doc_type_id = vDocTypeCGRealization
  447.             AND B.realization_status = vStatusAccept
  448.             GROUP BY B.cashbank_id;
  449.            
  450.             --ambil nilai untuk Cost O/S CG Realization
  451.             WITH tt_in_out_cashbank AS(
  452.                 SELECT A.in_out_cashbank_id, B.cashbank_id
  453.                 FROM cb_in_out_cashbank A
  454.                 INNER JOIN cb_cheque_giro_realization B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  455.                 GROUP BY A.in_out_cashbank_id, B.cashbank_id
  456.             )
  457.             INSERT INTO tr_daily_cashbank
  458.             (session_id, tenant_id, cashbank_id, order_type_data,
  459.             doc_type_id, doc_type_desc, doc_no, doc_date,
  460.             mode_payment, bank_payment, no_payment, date_payment,
  461.             amount)
  462.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  463.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  464.             ' ', ' ', ' ', ' ',
  465.             SUM(-1 * COALESCE(C.cost_amount, 0))
  466.             FROM cb_in_out_cashbank A
  467.             INNER JOIN tt_in_out_cashbank B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  468.             INNER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  469.             WHERE A.tenant_id = pTenantId
  470.             AND B.cashbank_id = pCashbankId
  471.             AND A.doc_date >= vTglAwalCashbankBalance
  472.             AND A.doc_date < pDateStart
  473.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  474.             AND A.doc_type_id = vDocTypeCGRealization
  475.             --AND B.realization_status = vStatusAccept
  476.             GROUP BY B.cashbank_id;
  477.            
  478.         END IF;
  479.        
  480.         INSERT INTO tr_daily_cashbank
  481.         (session_id, tenant_id, cashbank_id, order_type_data,
  482.         doc_type_id, doc_type_desc, doc_no, doc_date,
  483.         mode_payment, bank_payment, no_payment, date_payment,
  484.         amount)
  485.         SELECT pSessionId, pTenantId, cashbank_id, 1,
  486.         doc_type_id, doc_type_desc, doc_no, doc_date,
  487.         mode_payment, bank_payment, no_payment, date_payment,
  488.         SUM(amount)
  489.         FROM tr_daily_cashbank
  490.         WHERE session_id = pSessionId
  491.         AND tenant_id = pTenantId
  492.         AND order_type_data = -1
  493.         GROUP BY cashbank_id, order_type_data, doc_type_id, doc_type_desc, doc_no, doc_date, mode_payment, bank_payment, no_payment, date_payment;
  494.        
  495.         DELETE FROM tr_daily_cashbank WHERE session_id = pSessionId AND order_type_data = -1;
  496.        
  497.     END IF;
  498.    
  499.     -- cb trf
  500.     INSERT INTO tr_daily_cashbank
  501.     (session_id, tenant_id, cashbank_id, order_type_data,
  502.     doc_type_id, doc_type_desc, doc_no, doc_date,
  503.     mode_payment, bank_payment, no_payment, date_payment,
  504.     amount, remark)
  505.     SELECT pSessionId, pTenantId, pCashbankId, 2,
  506.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  507.     A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  508.     -1 * A.transfer_amount, vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || A.remark
  509.     FROM cb_transfer_cashbank A
  510.     WHERE A.tenant_id = pTenantId
  511.     AND A.cashbank_id = pCashbankId
  512.     AND A.status_doc = vStatusReleased
  513.     AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  514.    
  515.     /*
  516.      * PS, 27 Maret 2015
  517.      * update amount pada tr_daily_cashbank, dikurangi dengan cost_amount dari cb_transfer_cashbank_cost
  518.      * memakai RIGHT JOIN karena transaksi di cb_transfer_cashbank_cost bisa kosong untuk sebuah transfer cashbank
  519.      */
  520. --  UPDATE tr_daily_cashbank C
  521. --  SET amount = C.amount - B.cost_amount
  522. --  FROM cb_transfer_cashbank A
  523. --  RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id=B.transfer_cashbank_id
  524. --  WHERE A.tenant_id = pTenantId
  525. --  AND A.cashbank_id = pCashbankId
  526. --  AND A.status_doc = vStatusReleased
  527. --  AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  528.  
  529.     UPDATE tr_daily_cashbank C
  530.     SET amount = C.amount - B.payment_amount
  531.     FROM cb_transfer_cashbank A
  532.     RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id=B.transfer_cashbank_id
  533.     WHERE A.tenant_id = pTenantId
  534.     AND A.cashbank_id = pCashbankId
  535.     AND A.doc_no = C.doc_no
  536.     AND A.doc_date = C.doc_date
  537.     AND A.doc_type_id = C.doc_type_id
  538.     AND A.status_doc = vStatusReleased
  539.     AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  540.    
  541.     INSERT INTO tr_daily_cashbank
  542.     (session_id, tenant_id, cashbank_id, order_type_data,
  543.     doc_type_id, doc_type_desc, doc_no, doc_date,
  544.     mode_payment, bank_payment, no_payment, date_payment,
  545.     amount, remark)
  546.     SELECT pSessionId, pTenantId, pCashbankId, 2,
  547.     B.doc_type_id, f_get_doc_desc(B.doc_type_id), B.doc_no, B.doc_date,
  548.     A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  549.     A.receive_amount, vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || A.remark
  550.     FROM cb_transfer_cashbank_receive A
  551.     INNER JOIN cb_transfer_cashbank B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  552.     WHERE B.tenant_id = pTenantId
  553.     AND A.cashbank_to_id = pCashbankId
  554.     AND B.status_doc = vStatusReleased
  555.     AND B.doc_date BETWEEN pDateStart AND pDateEnd;
  556.    
  557.     -- cash bank out
  558.     /* Note : WTC & TKP 24 Mei 2016
  559.      * tidak perlu join ke cb_in_out_cashbank_cost
  560.      * dan untuk join ke cb_trx_cashbank_balance langsung di inner join aja
  561.      */
  562.     INSERT INTO tr_daily_cashbank
  563.     (session_id, tenant_id, cashbank_id, order_type_data,
  564.     doc_type_id, doc_type_desc, doc_no, doc_date,
  565.     mode_payment, bank_payment, no_payment, date_payment,
  566.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  567.     partner_name)
  568.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  569.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  570.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  571.     (-1 * B.cashbank_amount), vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  572.     f_get_partner_name(A.partner_id) AS partner_name
  573.     FROM cb_in_out_cashbank A
  574.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  575.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  576.     LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  577.     WHERE A.tenant_id = pTenantId
  578.     AND B.cashbank_id = pCashbankId
  579.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  580.     AND A.status_doc = vStatusReleased
  581.     AND A.doc_type_id = vDocTypeCashBankOut
  582.     GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.mode_payment, B.bank_payment, B.no_payment, B.date_payment, A.type_in_out_cashbank, B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, A.partner_id;
  583.    
  584.     -- cash bank in AR
  585.     /* Note : WTC & TKP 24 Mei 2016
  586.      * tidak perlu join ke cb_trx_cashbank_balance
  587.      */
  588.     INSERT INTO tr_daily_cashbank
  589.     (session_id, tenant_id, cashbank_id, order_type_data,
  590.     doc_type_id, doc_type_desc, doc_no, doc_date,
  591.     mode_payment, bank_payment, no_payment, date_payment,
  592.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  593.     partner_name)
  594.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  595.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  596.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  597.     B.cashbank_amount - SUM(COALESCE(C.cost_amount, 0)),
  598.     vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, f_get_partner_name(A.partner_id)
  599.     FROM cb_in_out_cashbank A
  600.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  601.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  602.     LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  603.     WHERE A.tenant_id = pTenantId
  604.     AND B.cashbank_id = pCashbankId
  605.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  606.     AND A.status_doc = vStatusReleased
  607.     AND A.doc_type_id = vDocTypeCashBankInAr
  608.     GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.mode_payment, B.bank_payment, B.no_payment, B.date_payment, A.type_in_out_cashbank, B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, A.partner_id;
  609.    
  610.     -- cash bank in other
  611.     /* Note : WTC & TKP 24 Mei 2016
  612.      * tidak perlu join ke cb_trx_cashbank_balance
  613.      *
  614.      * Note : Didit 24 Agustus 2016
  615.      * Perhitungkan juga dokumen yang statusnya void karena hasil konversi
  616.      */
  617.     INSERT INTO tr_daily_cashbank
  618.     (session_id, tenant_id, cashbank_id, order_type_data,
  619.     doc_type_id, doc_type_desc, doc_no, doc_date,
  620.     mode_payment, bank_payment, no_payment, date_payment,
  621.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  622.     partner_name)
  623.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  624.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  625.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  626.     B.cashbank_amount, vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  627.     f_get_partner_name(A.partner_id)
  628.     FROM cb_in_out_cashbank A
  629.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  630.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  631.     LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  632.     WHERE A.tenant_id = pTenantId
  633.     AND B.cashbank_id = pCashbankId
  634.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  635.     AND A.status_doc IN (vStatusReleased, vStatusVoid)
  636.     AND A.doc_type_id = vDocTypeCashBankInOther
  637.     GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.mode_payment, B.bank_payment, B.no_payment, B.date_payment, A.type_in_out_cashbank, B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, A.partner_id;
  638.    
  639.     -- edc settlement
  640.     INSERT INTO tr_daily_cashbank
  641.     (session_id, tenant_id, cashbank_id, order_type_data,
  642.     doc_type_desc, doc_no, doc_date,
  643.     mode_payment, bank_payment, no_payment, date_payment,
  644.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  645.     partner_name)
  646.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  647.     f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  648.     B.mode_payment, B.bank_payment, A.doc_no, A.doc_date,
  649.     B.cashbank_amount, vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  650.     f_get_partner_name(A.partner_id)
  651.     FROM cb_in_out_cashbank A
  652.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  653.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  654.     LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  655.     WHERE A.tenant_id = pTenantId
  656.     AND B.cashbank_id = pCashbankId
  657.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  658.     AND A.status_doc = vStatusReleased
  659.     AND A.doc_type_id = vDocTypeEdcSettlement
  660.     GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.mode_payment, B.bank_payment, B.no_payment, B.date_payment, A.type_in_out_cashbank, B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, A.partner_id;
  661.    
  662.     -- Added by Citrahadi, 2015-10-01
  663.     -- follow up cash advance settlement
  664.     -- ref_amount minus artinya follow up dgn cashbank in
  665.     INSERT INTO tr_daily_cashbank
  666.     (session_id, tenant_id, cashbank_id, order_type_data,
  667.     doc_type_id, doc_type_desc, doc_no, doc_date,
  668.     mode_payment, bank_payment, no_payment, date_payment,
  669.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no,
  670.     ref_doc_date, partner_name)
  671.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  672.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  673.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  674.     CASE WHEN A.ref_amount < 0  THEN B.cashbank_amount ELSE (-1 * B.cashbank_amount) END, vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no,
  675.     D.payment_doc_date, f_get_partner_name(A.partner_id) AS partner_name
  676.     FROM cb_in_out_cashbank A
  677.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  678.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  679.     LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  680.     WHERE A.tenant_id = pTenantId
  681.     AND B.cashbank_id = pCashbankId
  682.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  683.     AND A.status_doc = vStatusReleased
  684.     AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  685.     GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.mode_payment, B.bank_payment, B.no_payment, B.date_payment, A.type_in_out_cashbank,
  686.         B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, A.partner_id, A.ref_amount;
  687.    
  688.     --Added by Adrian, Sep 22, 2017 cheque giro realization
  689.     INSERT INTO tr_daily_cashbank
  690.     (session_id, tenant_id, cashbank_id, order_type_data,
  691.     doc_type_id, doc_type_desc, doc_no, doc_date,
  692.     mode_payment, bank_payment, no_payment, date_payment,
  693.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  694.     partner_name)
  695.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  696.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), D.cheque_giro_no, D.cheque_giro_date,
  697.     D.mode_payment, B.bank_payment, B.cheque_giro_no, B.realization_date,
  698.     B.cheque_giro_amount, vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || D.remark, A.in_out_cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, 
  699.     f_get_partner_name(B.partner_id)
  700.     FROM cb_in_out_cashbank A
  701.     INNER JOIN cb_cheque_giro_realization B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  702.     INNER JOIN cb_cheque_giro_balance D ON B.ref_balance_id = D.cheque_giro_balance_id
  703.     WHERE A.tenant_id = pTenantId
  704.     AND B.cashbank_id = pCashbankId
  705.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  706.     AND A.status_doc = vStatusReleased
  707.     AND A.doc_type_id = vDocTypeCGRealization
  708.     AND B.realization_status = vStatusAccept
  709.     GROUP BY B.cashbank_id, A.doc_type_id, D.cheque_giro_no, D.cheque_giro_date, D.mode_payment, B.bank_payment, B.cheque_giro_no, B.realization_date, A.type_in_out_cashbank, B.cheque_giro_amount, D.remark, A.in_out_cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.partner_id;
  710.    
  711.     --Added by Adrian, Sep 22, 2017 cost cheque giro realization
  712.     WITH tt_in_out_cashbank AS(
  713.         SELECT A.in_out_cashbank_id, B.cashbank_id
  714.         FROM cb_in_out_cashbank A
  715.         INNER JOIN cb_cheque_giro_realization B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  716.         GROUP BY A.in_out_cashbank_id, B.cashbank_id
  717.     )
  718.     INSERT INTO tr_daily_cashbank
  719.     (session_id, tenant_id, cashbank_id, order_type_data,
  720.     doc_type_id, doc_type_desc, doc_no, doc_date,
  721.     mode_payment, bank_payment, no_payment, date_payment,
  722.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  723.     partner_name)
  724.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  725.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  726.     vEmpty, vEmpty, vEmpty, vEmpty,
  727.     SUM(-1 * COALESCE(C.cost_amount, 0)), vRemarkLabel || C.remark, vEmptyId, vEmptyId, vEmpty, vEmpty,
  728.     vEmpty
  729.     FROM cb_in_out_cashbank A
  730.     INNER JOIN tt_in_out_cashbank B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  731.     INNER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  732.     WHERE A.tenant_id = pTenantId
  733.     AND B.cashbank_id = pCashbankId
  734.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  735.     AND A.status_doc = vStatusReleased
  736.     AND A.doc_type_id = vDocTypeCGRealization
  737.     --AND B.realization_status = vStatusAccept
  738.     GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, A.type_in_out_cashbank, C.cost_amount, C.remark, A.in_out_cashbank_id;
  739.    
  740.     --Adrian, Sep 19, 2017, O/S cash bank out
  741.     IF (pStatusDoc = vStatusApprovedDocAndOsCbOut)
  742.         OR (pStatusDoc = vAllStatusDoc) THEN
  743.        
  744.         -- O/S cb trf
  745.         INSERT INTO tr_daily_cashbank
  746.         (session_id, tenant_id, cashbank_id, order_type_data,
  747.         doc_type_id, doc_type_desc, doc_no, doc_date,
  748.         mode_payment, bank_payment, no_payment, date_payment,
  749.         amount, remark)
  750.         SELECT pSessionId, pTenantId, pCashbankId, 2,
  751.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  752.         A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  753.         -1 * A.transfer_amount,
  754.         vStatusDocLabel ||
  755.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  756.             vDraft
  757.         ELSE
  758.             vInProgress
  759.         END
  760.         || vNewLine || vRemarkLabel || A.remark AS remark
  761.         FROM cb_transfer_cashbank A
  762.         WHERE A.tenant_id = pTenantId
  763.         AND A.cashbank_id = pCashbankId
  764.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  765.         AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  766.        
  767.         UPDATE tr_daily_cashbank C
  768.         SET amount = C.amount - B.payment_amount
  769.         FROM cb_transfer_cashbank A
  770.         RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id=B.transfer_cashbank_id
  771.         WHERE A.tenant_id = pTenantId
  772.         AND A.cashbank_id = pCashbankId
  773.         AND A.doc_no = C.doc_no
  774.         AND A.doc_date = C.doc_date
  775.         AND A.doc_type_id = C.doc_type_id
  776.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  777.         AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  778.        
  779.         --O/S cash bank out
  780.         INSERT INTO tr_daily_cashbank
  781.         (session_id, tenant_id, cashbank_id, order_type_data,
  782.         doc_type_id, doc_type_desc, doc_no, doc_date,
  783.         mode_payment, bank_payment, no_payment, date_payment,
  784.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  785.         partner_name)
  786.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  787.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  788.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  789.         (-1 * B.cashbank_amount),
  790.         vStatusDocLabel ||
  791.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  792.             vDraft
  793.         ELSE
  794.             vInProgress
  795.         END
  796.         || vNewLine || vRemarkLabel || A.remark AS remark,
  797.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  798.         f_get_partner_name(A.partner_id) AS partner_name
  799.         FROM cb_in_out_cashbank A
  800.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  801.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  802.         LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  803.         WHERE A.tenant_id = pTenantId
  804.         AND B.cashbank_id = pCashbankId
  805.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  806.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  807.         AND A.doc_type_id = vDocTypeCashBankOut
  808.         GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.mode_payment, B.bank_payment, B.no_payment, B.date_payment, A.type_in_out_cashbank, B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, A.partner_id, A.status_doc;
  809.        
  810.         --O/S follow up cash advance settlement
  811.         INSERT INTO tr_daily_cashbank
  812.         (session_id, tenant_id, cashbank_id, order_type_data,
  813.         doc_type_id, doc_type_desc, doc_no, doc_date,
  814.         mode_payment, bank_payment, no_payment, date_payment,
  815.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no,
  816.         ref_doc_date, partner_name)
  817.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  818.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  819.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  820.         (-1 * B.cashbank_amount),
  821.         vStatusDocLabel ||
  822.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  823.             vDraft
  824.         ELSE
  825.             vInProgress
  826.         END
  827.         || vNewLine || vRemarkLabel || A.remark AS remark,
  828.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no,
  829.         D.payment_doc_date, f_get_partner_name(A.partner_id) AS partner_name
  830.         FROM cb_in_out_cashbank A
  831.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  832.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  833.         LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  834.         WHERE A.tenant_id = pTenantId
  835.         AND B.cashbank_id = pCashbankId
  836.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  837.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  838.         AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  839.         AND A.ref_amount > 0
  840.         GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.mode_payment, B.bank_payment, B.no_payment, B.date_payment, A.type_in_out_cashbank,
  841.             B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, A.partner_id, A.ref_amount, A.status_doc;
  842.        
  843.     END IF;
  844.    
  845.     --Adrian, Sep 19, 2017, O/S cash bank in
  846.     IF (pStatusDoc = vStatusApprovedDocAndOsCbIn)
  847.         OR (pStatusDoc = vAllStatusDoc) THEN
  848.        
  849.         --O/S cb trf
  850.         INSERT INTO tr_daily_cashbank
  851.         (session_id, tenant_id, cashbank_id, order_type_data,
  852.         doc_type_id, doc_type_desc, doc_no, doc_date,
  853.         mode_payment, bank_payment, no_payment, date_payment,
  854.         amount, remark)
  855.         SELECT pSessionId, pTenantId, pCashbankId, 2,
  856.         B.doc_type_id, f_get_doc_desc(B.doc_type_id), B.doc_no, B.doc_date,
  857.         A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  858.         A.receive_amount,
  859.         vStatusDocLabel ||
  860.         CASE WHEN (B.status_doc = vStatusDraft) THEN
  861.             vDraft
  862.         ELSE
  863.             vInProgress
  864.         END
  865.         || vNewLine || vRemarkLabel || A.remark AS remark
  866.         FROM cb_transfer_cashbank_receive A
  867.         INNER JOIN cb_transfer_cashbank B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  868.         WHERE B.tenant_id = pTenantId
  869.         AND A.cashbank_to_id = pCashbankId
  870.         AND B.status_doc IN (vStatusDraft, vStatusInProgress)
  871.         AND B.doc_date BETWEEN pDateStart AND pDateEnd;
  872.        
  873.         --O/S cash bank in AR
  874.         INSERT INTO tr_daily_cashbank
  875.         (session_id, tenant_id, cashbank_id, order_type_data,
  876.         doc_type_id, doc_type_desc, doc_no, doc_date,
  877.         mode_payment, bank_payment, no_payment, date_payment,
  878.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  879.         partner_name)
  880.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  881.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  882.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  883.         B.cashbank_amount - SUM(COALESCE(C.cost_amount, 0)),
  884.         vStatusDocLabel ||
  885.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  886.             vDraft
  887.         ELSE
  888.             vInProgress
  889.         END
  890.         || vNewLine || vRemarkLabel || A.remark AS remark,
  891.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, f_get_partner_name(A.partner_id)
  892.         FROM cb_in_out_cashbank A
  893.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  894.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  895.         LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  896.         WHERE A.tenant_id = pTenantId
  897.         AND B.cashbank_id = pCashbankId
  898.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  899.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  900.         AND A.doc_type_id = vDocTypeCashBankInAr
  901.         GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.mode_payment, B.bank_payment, B.no_payment, B.date_payment, A.type_in_out_cashbank, B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, A.partner_id, A.status_doc;
  902.        
  903.         --O/S cash bank in other
  904.         INSERT INTO tr_daily_cashbank
  905.         (session_id, tenant_id, cashbank_id, order_type_data,
  906.         doc_type_id, doc_type_desc, doc_no, doc_date,
  907.         mode_payment, bank_payment, no_payment, date_payment,
  908.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  909.         partner_name)
  910.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  911.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  912.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  913.         B.cashbank_amount,
  914.         vStatusDocLabel ||
  915.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  916.             vDraft
  917.         ELSE
  918.             vInProgress
  919.         END
  920.         || vNewLine || vRemarkLabel || A.remark AS remark,
  921.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, 
  922.         f_get_partner_name(A.partner_id)
  923.         FROM cb_in_out_cashbank A
  924.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  925.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  926.         LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  927.         WHERE A.tenant_id = pTenantId
  928.         AND B.cashbank_id = pCashbankId
  929.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  930.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  931.         AND A.doc_type_id = vDocTypeCashBankInOther
  932.         GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.mode_payment, B.bank_payment, B.no_payment, B.date_payment, A.type_in_out_cashbank, B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, A.partner_id, A.status_doc;
  933.        
  934.         -- edc settlement
  935.         INSERT INTO tr_daily_cashbank
  936.         (session_id, tenant_id, cashbank_id, order_type_data,
  937.         doc_type_desc, doc_no, doc_date,
  938.         mode_payment, bank_payment, no_payment, date_payment,
  939.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  940.         partner_name)
  941.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  942.         f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  943.         B.mode_payment, B.bank_payment, A.doc_no, A.doc_date,
  944.         B.cashbank_amount,
  945.         vStatusDocLabel ||
  946.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  947.             vDraft
  948.         ELSE
  949.             vInProgress
  950.         END
  951.         || vNewLine || vRemarkLabel || A.remark AS remark,
  952.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, 
  953.         f_get_partner_name(A.partner_id)
  954.         FROM cb_in_out_cashbank A
  955.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  956.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  957.         LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  958.         WHERE A.tenant_id = pTenantId
  959.         AND B.cashbank_id = pCashbankId
  960.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  961.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  962.         AND A.doc_type_id = vDocTypeEdcSettlement
  963.         GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.mode_payment, B.bank_payment, B.no_payment, B.date_payment, A.type_in_out_cashbank, B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, A.partner_id, A.status_doc;
  964.        
  965.         --O/S follow up cash advance settlement
  966.         INSERT INTO tr_daily_cashbank
  967.         (session_id, tenant_id, cashbank_id, order_type_data,
  968.         doc_type_id, doc_type_desc, doc_no, doc_date,
  969.         mode_payment, bank_payment, no_payment, date_payment,
  970.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no,
  971.         ref_doc_date, partner_name)
  972.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  973.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  974.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  975.         B.cashbank_amount,
  976.         vStatusDocLabel ||
  977.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  978.             vDraft
  979.         ELSE
  980.             vInProgress
  981.         END
  982.         || vNewLine || vRemarkLabel || A.remark AS remark,
  983.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no,
  984.         D.payment_doc_date, f_get_partner_name(A.partner_id) AS partner_name
  985.         FROM cb_in_out_cashbank A
  986.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  987.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  988.         LEFT OUTER JOIN cb_trx_cashbank_balance D ON A.ref_doc_type_id = D.doc_type_id AND A.ref_id = D.trx_cashbank_balance_id
  989.         WHERE A.tenant_id = pTenantId
  990.         AND B.cashbank_id = pCashbankId
  991.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  992.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  993.         AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  994.         AND A.ref_amount < 0
  995.         GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.mode_payment, B.bank_payment, B.no_payment, B.date_payment, A.type_in_out_cashbank,
  996.             B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, A.partner_id, A.ref_amount, A.status_doc;
  997.            
  998.         --O/S cheque giro realization
  999.         INSERT INTO tr_daily_cashbank
  1000.         (session_id, tenant_id, cashbank_id, order_type_data,
  1001.         doc_type_id, doc_type_desc, doc_no, doc_date,
  1002.         mode_payment, bank_payment, no_payment, date_payment,
  1003.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  1004.         partner_name)
  1005.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  1006.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), D.cheque_giro_no, D.cheque_giro_date,
  1007.         D.mode_payment, B.bank_payment, B.cheque_giro_no, B.realization_date,
  1008.         B.cheque_giro_amount, vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || D.remark, A.in_out_cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, 
  1009.         f_get_partner_name(B.partner_id)
  1010.         FROM cb_in_out_cashbank A
  1011.         INNER JOIN cb_cheque_giro_realization B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  1012.         INNER JOIN cb_cheque_giro_balance D ON B.ref_balance_id = D.cheque_giro_balance_id
  1013.         WHERE A.tenant_id = pTenantId
  1014.         AND B.cashbank_id = pCashbankId
  1015.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  1016.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  1017.         AND A.doc_type_id = vDocTypeCGRealization
  1018.         AND B.realization_status = vStatusAccept
  1019.         GROUP BY B.cashbank_id, A.doc_type_id, D.cheque_giro_no, D.cheque_giro_date, D.mode_payment, B.bank_payment, B.cheque_giro_no, B.realization_date, A.type_in_out_cashbank, B.cheque_giro_amount, D.remark, A.in_out_cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, B.partner_id;
  1020.        
  1021.         --O/S cost cheque giro realization
  1022.         WITH tt_in_out_cashbank AS(
  1023.             SELECT A.in_out_cashbank_id, B.cashbank_id
  1024.             FROM cb_in_out_cashbank A
  1025.             INNER JOIN cb_cheque_giro_realization B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  1026.             GROUP BY A.in_out_cashbank_id, B.cashbank_id
  1027.         )
  1028.         INSERT INTO tr_daily_cashbank
  1029.         (session_id, tenant_id, cashbank_id, order_type_data,
  1030.         doc_type_id, doc_type_desc, doc_no, doc_date,
  1031.         mode_payment, bank_payment, no_payment, date_payment,
  1032.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  1033.         partner_name)
  1034.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  1035.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  1036.         vEmpty, vEmpty, vEmpty, vEmpty,
  1037.         SUM(-1 * COALESCE(C.cost_amount, 0)), vRemarkLabel || C.remark, vEmptyId, vEmptyId, vEmpty, vEmpty,
  1038.         vEmpty
  1039.         FROM cb_in_out_cashbank A
  1040.         INNER JOIN tt_in_out_cashbank B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  1041.         INNER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  1042.         WHERE A.tenant_id = pTenantId
  1043.         AND B.cashbank_id = pCashbankId
  1044.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  1045.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  1046.         AND A.doc_type_id = vDocTypeCGRealization
  1047.         --AND B.realization_status = vStatusAccept
  1048.         GROUP BY B.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date, A.type_in_out_cashbank, C.cost_amount, C.remark, A.in_out_cashbank_id;
  1049.        
  1050.     END IF;
  1051.        
  1052.     /*
  1053.      * ambil data transaksi penjualan pos dan return pos untuk cash payment
  1054.      */
  1055.     INSERT INTO tr_kartu_kas_by_doc_type
  1056.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  1057.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  1058.     amount_debit, amount_credit)
  1059.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  1060.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  1061.         SUM(B.conversion_amount), 0
  1062.     FROM i_trx_pos A, i_trx_pos_cash_payment B, m_document C, m_cashbank D, m_cashbank_ou E
  1063.     WHERE A.tenant_id = pTenantId AND
  1064.         --A.ou_id = pOuId AND
  1065.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  1066.         A.doc_type_id IN (vDocTypePosShop, vDocTypePosShopInShop) AND
  1067.         A.trx_pos_id = B.trx_pos_id AND
  1068.         A.tenant_id = B.tenant_id AND
  1069.         A.process_no = B.process_no AND
  1070.         B.curr_payment_code = D.curr_code AND
  1071.         D.flg_cash_bank = 'C' AND
  1072.         D.cashbank_id = E.cashbank_id AND
  1073.         A.ou_id = E.ou_id AND
  1074.         A.doc_type_id = C.doc_type_id AND
  1075.         D.cashbank_id = pCashbankId
  1076.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id, A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.curr_code;
  1077.  
  1078.     INSERT INTO tr_kartu_kas_by_doc_type
  1079.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  1080.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  1081.     amount_debit, amount_credit)
  1082.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  1083.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  1084.         SUM(B.conversion_amount), 0
  1085.     FROM i_trx_pos A, i_trx_pos_cash_payment B, m_document C, m_cashbank D, m_cashbank_ou E
  1086.     WHERE A.tenant_id = pTenantId AND
  1087.         --A.ou_id = pOuId AND
  1088.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  1089.         A.doc_type_id IN (vDocTypeReturnPosShop, vDocTypeReturnPosShopInShop) AND
  1090.         A.trx_pos_id = B.trx_pos_id AND
  1091.         A.tenant_id = B.tenant_id AND
  1092.         A.process_no = B.process_no AND
  1093.         B.curr_payment_code = D.curr_code AND
  1094.         D.flg_cash_bank = 'C' AND
  1095.         D.cashbank_id = E.cashbank_id AND
  1096.         A.ou_id = E.ou_id AND
  1097.         A.doc_type_id = C.doc_type_id AND
  1098.         D.cashbank_id = pCashbankId
  1099.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id, A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.curr_code;
  1100.  
  1101.     /*
  1102.      * ambil data transaksi penjualan pos dan return pos untuk pengembalian cash
  1103.      */
  1104.     INSERT INTO tr_kartu_kas_by_doc_type
  1105.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  1106.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  1107.     amount_debit, amount_credit)
  1108.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  1109.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  1110.         0, SUM(A.total_refund)
  1111.     FROM i_trx_pos A, m_document C, m_cashbank D, m_cashbank_ou E
  1112.     WHERE A.tenant_id = pTenantId AND
  1113.         --A.ou_id = pOuId AND
  1114.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  1115.         A.doc_type_id IN (vDocTypePosShop, vDocTypePosShopInShop) AND
  1116.         A.curr_code = D.curr_code AND
  1117.         D.flg_cash_bank = 'C' AND
  1118.         D.cashbank_id = E.cashbank_id AND
  1119.         A.ou_id = E.ou_id AND
  1120.         A.doc_type_id = C.doc_type_id AND
  1121.         D.cashbank_id = pCashbankId
  1122.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id, A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.curr_code;
  1123.  
  1124.     INSERT INTO tr_kartu_kas_by_doc_type
  1125.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  1126.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  1127.     amount_debit, amount_credit)
  1128.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  1129.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  1130.         0, SUM(A.total_refund)
  1131.     FROM i_trx_pos A, m_document C, m_cashbank D, m_cashbank_ou E
  1132.     WHERE A.tenant_id = pTenantId AND
  1133.         --A.ou_id = pOuId AND
  1134.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  1135.         A.doc_type_id IN (vDocTypeReturnPosShop, vDocTypeReturnPosShopInShop) AND
  1136.         A.curr_code = D.curr_code AND
  1137.         D.flg_cash_bank = 'C' AND
  1138.         D.cashbank_id = E.cashbank_id AND
  1139.         A.ou_id = E.ou_id AND
  1140.         A.doc_type_id = C.doc_type_id AND
  1141.         D.cashbank_id = pCashbankId
  1142.     GROUP BY A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id, A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.curr_code;
  1143.    
  1144.     INSERT INTO tr_daily_cashbank
  1145.         (session_id, tenant_id, cashbank_id, order_type_data,
  1146.         doc_type_id, doc_type_desc, doc_no, doc_date,
  1147.         mode_payment, bank_payment, no_payment, date_payment,
  1148.         amount)
  1149.     SELECT pSessionId, pTenantId, A.cashbank_id, 2,
  1150.            A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  1151.            'CASH', ' ', ' ', ' ',
  1152.            SUM(A.amount_debit) - SUM(A.amount_credit)
  1153.     FROM tr_kartu_kas_by_doc_type A
  1154.     WHERE A.session_id = pSessionId
  1155.     GROUP BY A.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date;
  1156.    
  1157.     INSERT INTO tr_daily_cashbank
  1158.         (session_id, tenant_id, cashbank_id, order_type_data,
  1159.         doc_type_id, doc_type_desc, doc_no, doc_date,
  1160.         mode_payment, bank_payment, no_payment, date_payment,
  1161.         amount)
  1162.     SELECT pSessionId, pTenantId, A.cashbank_id, 2,
  1163.            A.doc_type_id, f_get_doc_desc(A.doc_type_id), 'VOID ' || A.doc_no, A.doc_date,
  1164.            'CASH', ' ', ' ', ' ',
  1165.            -1 * (SUM(A.amount_debit) - SUM(A.amount_credit))
  1166.     FROM tr_kartu_kas_by_doc_type A
  1167.     WHERE A.session_id = pSessionId
  1168.     AND EXISTS (SELECT 1 FROM i_trx_log_voided_pos B
  1169.                     WHERE A.tenant_id = B.tenant_id AND
  1170.                     A.doc_no = B.doc_no AND
  1171.                     A.doc_date = B.doc_date AND
  1172.                     A.ou_id = B.ou_id)
  1173.     GROUP BY A.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date;
  1174.  
  1175.     SELECT COUNT(1) INTO vCount
  1176.     FROM tr_daily_cashbank
  1177.     WHERE session_id = pSessionId AND order_type_data = 1;
  1178.  
  1179.     IF vCount = 0 THEN
  1180.         INSERT INTO tr_daily_cashbank
  1181.         (session_id, tenant_id, cashbank_id, order_type_data,
  1182.         doc_type_desc, doc_no, doc_date,
  1183.         mode_payment, bank_payment, no_payment, date_payment,
  1184.         amount)
  1185.         SELECT pSessionId, pTenantId, pCashbankId, 1, 'Beginning Balance', 'Beginning Balance', pDateStart,
  1186.         ' ', ' ', ' ', ' ',
  1187.         0;
  1188.     END IF;
  1189.                    
  1190.     Open pRefHeader FOR
  1191.     SELECT pOuId AS ou_id, f_get_ou_code(pOuId) AS ou_code, f_get_ou_name(pOuId) AS ou_name, pDateStart AS date_start, pDateEnd AS date_end,
  1192.            pDateStart AS date_trx, f_get_username(pUserId) AS username, pDatetime AS datetime,
  1193.            pCashbankId AS cashbank_id, A.cashbank_code AS cashbank_code, A.cashbank_name AS cashbank_name,
  1194.            A.bank_code AS bank_code, A.account_no AS account_no, A.account_name1 AS account_name1, A.account_name2 AS account_name2,
  1195.            A.curr_code AS curr_code
  1196.     FROM m_cashbank A WHERE A.cashbank_id = pCashBankId;
  1197.            
  1198.     RETURN NEXT pRefHeader;
  1199.  
  1200.     Open pRefDetail FOR
  1201.     SELECT A.doc_type_desc AS doc_type_desc, A.doc_date AS doc_date, A.doc_no AS doc_no,
  1202.            A.mode_payment AS mode_payment, A.bank_payment AS bank_payment,
  1203.            A.ref_doc_date AS ref_doc_date, A.ref_doc_no AS ref_doc_no,
  1204.            CASE WHEN ((A.no_payment = '-') OR (A.no_payment = 'null')) THEN '' ELSE A.no_payment END AS no_payment,
  1205.            CASE WHEN (A.amount > 0 ) THEN A.amount ELSE 0 END AS debit,
  1206.            CASE WHEN (A.amount < 0 ) THEN -1 * A.amount ELSE 0 END AS credit,
  1207.            SUM(A.amount) OVER (ORDER BY A.order_type_data, A.doc_date, A.doc_no) AS amount,
  1208.            A.remark, A.partner_name,
  1209.            (CASE WHEN length(TRIM(A.remark)) = 0 THEN (CEIL(1/36.0))*21 ELSE ((CEIL(length(SPLIT_PART(TRIM(A.remark), vNewLine, 2))/36.0))*21)+21 END) AS height
  1210.     FROM tr_daily_cashbank A
  1211.     WHERE A.session_id = pSessionId
  1212.     AND A.tenant_id = pTenantId
  1213.     GROUP BY A.doc_type_desc, A.doc_date, A.doc_no, A.mode_payment, A.bank_payment, A.ref_doc_date, A.ref_doc_no, A.order_type_data, A.amount, A.remark, A.partner_name, A.no_payment
  1214.     ORDER BY A.order_type_data, A.doc_date, A.doc_no;
  1215.    
  1216.     RETURN NEXT pRefDetail;
  1217.    
  1218.     DELETE FROM tr_daily_cashbank WHERE session_id = pSessionId;
  1219.     DELETE FROM tr_kartu_kas_by_doc_type WHERE session_id = pSessionId;
  1220.    
  1221. END;
  1222. $BODY$
  1223.   LANGUAGE plpgsql VOLATILE
  1224.   COST 100;
  1225.   /
Add Comment
Please, Sign In to add comment