aadddrr

r_report_daily_cashbank_20170922_1

Sep 22nd, 2017
38
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
  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) - SUM(COALESCE(C.cost_amount, 0))
  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.             INNER JOIN cb_cheque_giro_balance D ON B.ref_balance_id = D.cheque_giro_balance_id
  442.             INNER JOIN cb_in_out_cashbank E ON D.in_out_cashbank_id = E.in_out_cashbank_id
  443.             LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  444.             WHERE A.tenant_id = pTenantId
  445.             AND B.cashbank_id = pCashbankId
  446.             AND A.doc_date >= vTglAwalCashbankBalance
  447.             AND A.doc_date < pDateStart
  448.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  449.             AND A.doc_type_id = vDocTypeCGRealization
  450.             AND B.realization_status = vStatusAccept
  451.             GROUP BY B.cashbank_id;
  452.            
  453.         END IF;
  454.        
  455.         INSERT INTO tr_daily_cashbank
  456.         (session_id, tenant_id, cashbank_id, order_type_data,
  457.         doc_type_id, doc_type_desc, doc_no, doc_date,
  458.         mode_payment, bank_payment, no_payment, date_payment,
  459.         amount)
  460.         SELECT pSessionId, pTenantId, cashbank_id, 1,
  461.         doc_type_id, doc_type_desc, doc_no, doc_date,
  462.         mode_payment, bank_payment, no_payment, date_payment,
  463.         SUM(amount)
  464.         FROM tr_daily_cashbank
  465.         WHERE session_id = pSessionId
  466.         AND tenant_id = pTenantId
  467.         AND order_type_data = -1
  468.         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;
  469.        
  470.         DELETE FROM tr_daily_cashbank WHERE session_id = pSessionId AND order_type_data = -1;
  471.        
  472.     END IF;
  473.    
  474.     -- cb trf
  475.     INSERT INTO tr_daily_cashbank
  476.     (session_id, tenant_id, cashbank_id, order_type_data,
  477.     doc_type_id, doc_type_desc, doc_no, doc_date,
  478.     mode_payment, bank_payment, no_payment, date_payment,
  479.     amount, remark)
  480.     SELECT pSessionId, pTenantId, pCashbankId, 2,
  481.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  482.     A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  483.     -1 * A.transfer_amount, vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || A.remark
  484.     FROM cb_transfer_cashbank A
  485.     WHERE A.tenant_id = pTenantId
  486.     AND A.cashbank_id = pCashbankId
  487.     AND A.status_doc = vStatusReleased
  488.     AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  489.    
  490.     /*
  491.      * PS, 27 Maret 2015
  492.      * update amount pada tr_daily_cashbank, dikurangi dengan cost_amount dari cb_transfer_cashbank_cost
  493.      * memakai RIGHT JOIN karena transaksi di cb_transfer_cashbank_cost bisa kosong untuk sebuah transfer cashbank
  494.      */
  495. --  UPDATE tr_daily_cashbank C
  496. --  SET amount = C.amount - B.cost_amount
  497. --  FROM cb_transfer_cashbank A
  498. --  RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id=B.transfer_cashbank_id
  499. --  WHERE A.tenant_id = pTenantId
  500. --  AND A.cashbank_id = pCashbankId
  501. --  AND A.status_doc = vStatusReleased
  502. --  AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  503.  
  504.     UPDATE tr_daily_cashbank C
  505.     SET amount = C.amount - B.payment_amount
  506.     FROM cb_transfer_cashbank A
  507.     RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id=B.transfer_cashbank_id
  508.     WHERE A.tenant_id = pTenantId
  509.     AND A.cashbank_id = pCashbankId
  510.     AND A.doc_no = C.doc_no
  511.     AND A.doc_date = C.doc_date
  512.     AND A.doc_type_id = C.doc_type_id
  513.     AND A.status_doc = vStatusReleased
  514.     AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  515.    
  516.     INSERT INTO tr_daily_cashbank
  517.     (session_id, tenant_id, cashbank_id, order_type_data,
  518.     doc_type_id, doc_type_desc, doc_no, doc_date,
  519.     mode_payment, bank_payment, no_payment, date_payment,
  520.     amount, remark)
  521.     SELECT pSessionId, pTenantId, pCashbankId, 2,
  522.     B.doc_type_id, f_get_doc_desc(B.doc_type_id), B.doc_no, B.doc_date,
  523.     A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  524.     A.receive_amount, vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || A.remark
  525.     FROM cb_transfer_cashbank_receive A
  526.     INNER JOIN cb_transfer_cashbank B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  527.     WHERE B.tenant_id = pTenantId
  528.     AND A.cashbank_to_id = pCashbankId
  529.     AND B.status_doc = vStatusReleased
  530.     AND B.doc_date BETWEEN pDateStart AND pDateEnd;
  531.    
  532.     -- cash bank out
  533.     /* Note : WTC & TKP 24 Mei 2016
  534.      * tidak perlu join ke cb_in_out_cashbank_cost
  535.      * dan untuk join ke cb_trx_cashbank_balance langsung di inner join aja
  536.      */
  537.     INSERT INTO tr_daily_cashbank
  538.     (session_id, tenant_id, cashbank_id, order_type_data,
  539.     doc_type_id, doc_type_desc, doc_no, doc_date,
  540.     mode_payment, bank_payment, no_payment, date_payment,
  541.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  542.     partner_name)
  543.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  544.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  545.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  546.     (-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,
  547.     f_get_partner_name(A.partner_id) AS partner_name
  548.     FROM cb_in_out_cashbank A
  549.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  550.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  551.     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
  552.     WHERE A.tenant_id = pTenantId
  553.     AND B.cashbank_id = pCashbankId
  554.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  555.     AND A.status_doc = vStatusReleased
  556.     AND A.doc_type_id = vDocTypeCashBankOut
  557.     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;
  558.    
  559.     -- cash bank in AR
  560.     /* Note : WTC & TKP 24 Mei 2016
  561.      * tidak perlu join ke cb_trx_cashbank_balance
  562.      */
  563.     INSERT INTO tr_daily_cashbank
  564.     (session_id, tenant_id, cashbank_id, order_type_data,
  565.     doc_type_id, doc_type_desc, doc_no, doc_date,
  566.     mode_payment, bank_payment, no_payment, date_payment,
  567.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  568.     partner_name)
  569.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  570.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  571.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  572.     B.cashbank_amount - SUM(COALESCE(C.cost_amount, 0)),
  573.     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)
  574.     FROM cb_in_out_cashbank A
  575.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  576.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  577.     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
  578.     WHERE A.tenant_id = pTenantId
  579.     AND B.cashbank_id = pCashbankId
  580.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  581.     AND A.status_doc = vStatusReleased
  582.     AND A.doc_type_id = vDocTypeCashBankInAr
  583.     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;
  584.    
  585.     -- cash bank in other
  586.     /* Note : WTC & TKP 24 Mei 2016
  587.      * tidak perlu join ke cb_trx_cashbank_balance
  588.      *
  589.      * Note : Didit 24 Agustus 2016
  590.      * Perhitungkan juga dokumen yang statusnya void karena hasil konversi
  591.      */
  592.     INSERT INTO tr_daily_cashbank
  593.     (session_id, tenant_id, cashbank_id, order_type_data,
  594.     doc_type_id, doc_type_desc, doc_no, doc_date,
  595.     mode_payment, bank_payment, no_payment, date_payment,
  596.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  597.     partner_name)
  598.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  599.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  600.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  601.     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,
  602.     f_get_partner_name(A.partner_id)
  603.     FROM cb_in_out_cashbank A
  604.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  605.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  606.     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
  607.     WHERE A.tenant_id = pTenantId
  608.     AND B.cashbank_id = pCashbankId
  609.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  610.     AND A.status_doc IN (vStatusReleased, vStatusVoid)
  611.     AND A.doc_type_id = vDocTypeCashBankInOther
  612.     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;
  613.    
  614.     -- edc settlement
  615.     INSERT INTO tr_daily_cashbank
  616.     (session_id, tenant_id, cashbank_id, order_type_data,
  617.     doc_type_desc, doc_no, doc_date,
  618.     mode_payment, bank_payment, no_payment, date_payment,
  619.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  620.     partner_name)
  621.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  622.     f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  623.     B.mode_payment, B.bank_payment, A.doc_no, A.doc_date,
  624.     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,
  625.     f_get_partner_name(A.partner_id)
  626.     FROM cb_in_out_cashbank A
  627.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  628.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  629.     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
  630.     WHERE A.tenant_id = pTenantId
  631.     AND B.cashbank_id = pCashbankId
  632.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  633.     AND A.status_doc = vStatusReleased
  634.     AND A.doc_type_id = vDocTypeEdcSettlement
  635.     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;
  636.    
  637.     -- Added by Citrahadi, 2015-10-01
  638.     -- follow up cash advance settlement
  639.     -- ref_amount minus artinya follow up dgn cashbank in
  640.     INSERT INTO tr_daily_cashbank
  641.     (session_id, tenant_id, cashbank_id, order_type_data,
  642.     doc_type_id, 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,
  645.     ref_doc_date, partner_name)
  646.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  647.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  648.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  649.     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,
  650.     D.payment_doc_date, f_get_partner_name(A.partner_id) AS partner_name
  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 = vDocTypeFollowUpCashAdvanceSettlement
  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,
  661.         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;
  662.    
  663.     --Added by Adrian, Sep 22, 2017 cheque giro realization
  664.     INSERT INTO tr_daily_cashbank
  665.     (session_id, tenant_id, cashbank_id, order_type_data,
  666.     doc_type_id, doc_type_desc, doc_no, doc_date,
  667.     mode_payment, bank_payment, no_payment, date_payment,
  668.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  669.     partner_name)
  670.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  671.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), D.cheque_giro_no, D.cheque_giro_date,
  672.     D.mode_payment, B.bank_payment, B.cheque_giro_no, B.realization_date,
  673.     B.cheque_giro_amount - SUM(COALESCE(C.cost_amount, 0)), vStatusDocLabel || vApproved || vNewLine || vRemarkLabel || D.remark, A.in_out_cashbank_id, A.doc_type_id, A.doc_no, A.doc_date,   
  674.     f_get_partner_name(B.partner_id)
  675.     FROM cb_in_out_cashbank A
  676.     INNER JOIN cb_cheque_giro_realization B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  677.     INNER JOIN cb_cheque_giro_balance D ON B.ref_balance_id = D.cheque_giro_balance_id
  678.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  679.     WHERE A.tenant_id = pTenantId
  680.     AND B.cashbank_id = pCashbankId
  681.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  682.     AND A.status_doc = vStatusReleased
  683.     AND A.doc_type_id = vDocTypeCGRealization
  684.     AND B.realization_status = vStatusAccept
  685.     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;
  686.        
  687.     --Adrian, Sep 19, 2017, O/S cash bank out
  688.     IF (pStatusDoc = vStatusApprovedDocAndOsCbOut)
  689.         OR (pStatusDoc = vAllStatusDoc) THEN
  690.        
  691.         -- O/S cb trf
  692.         INSERT INTO tr_daily_cashbank
  693.         (session_id, tenant_id, cashbank_id, order_type_data,
  694.         doc_type_id, doc_type_desc, doc_no, doc_date,
  695.         mode_payment, bank_payment, no_payment, date_payment,
  696.         amount, remark)
  697.         SELECT pSessionId, pTenantId, pCashbankId, 2,
  698.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  699.         A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  700.         -1 * A.transfer_amount,
  701.         vStatusDocLabel ||
  702.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  703.             vDraft
  704.         ELSE
  705.             vInProgress
  706.         END
  707.         || vNewLine || vRemarkLabel || A.remark AS remark
  708.         FROM cb_transfer_cashbank A
  709.         WHERE A.tenant_id = pTenantId
  710.         AND A.cashbank_id = pCashbankId
  711.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  712.         AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  713.        
  714.         UPDATE tr_daily_cashbank C
  715.         SET amount = C.amount - B.payment_amount
  716.         FROM cb_transfer_cashbank A
  717.         RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id=B.transfer_cashbank_id
  718.         WHERE A.tenant_id = pTenantId
  719.         AND A.cashbank_id = pCashbankId
  720.         AND A.doc_no = C.doc_no
  721.         AND A.doc_date = C.doc_date
  722.         AND A.doc_type_id = C.doc_type_id
  723.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  724.         AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  725.        
  726.         --O/S cash bank out
  727.         INSERT INTO tr_daily_cashbank
  728.         (session_id, tenant_id, cashbank_id, order_type_data,
  729.         doc_type_id, doc_type_desc, doc_no, doc_date,
  730.         mode_payment, bank_payment, no_payment, date_payment,
  731.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  732.         partner_name)
  733.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  734.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  735.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  736.         (-1 * B.cashbank_amount),
  737.         vStatusDocLabel ||
  738.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  739.             vDraft
  740.         ELSE
  741.             vInProgress
  742.         END
  743.         || vNewLine || vRemarkLabel || A.remark AS remark,
  744.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  745.         f_get_partner_name(A.partner_id) AS partner_name
  746.         FROM cb_in_out_cashbank A
  747.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  748.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  749.         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
  750.         WHERE A.tenant_id = pTenantId
  751.         AND B.cashbank_id = pCashbankId
  752.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  753.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  754.         AND A.doc_type_id = vDocTypeCashBankOut
  755.         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;
  756.        
  757.         --O/S follow up cash advance settlement
  758.         INSERT INTO tr_daily_cashbank
  759.         (session_id, tenant_id, cashbank_id, order_type_data,
  760.         doc_type_id, doc_type_desc, doc_no, doc_date,
  761.         mode_payment, bank_payment, no_payment, date_payment,
  762.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no,
  763.         ref_doc_date, partner_name)
  764.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  765.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  766.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  767.         (-1 * B.cashbank_amount),
  768.         vStatusDocLabel ||
  769.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  770.             vDraft
  771.         ELSE
  772.             vInProgress
  773.         END
  774.         || vNewLine || vRemarkLabel || A.remark AS remark,
  775.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no,
  776.         D.payment_doc_date, f_get_partner_name(A.partner_id) AS partner_name
  777.         FROM cb_in_out_cashbank A
  778.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  779.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  780.         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
  781.         WHERE A.tenant_id = pTenantId
  782.         AND B.cashbank_id = pCashbankId
  783.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  784.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  785.         AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  786.         AND A.ref_amount > 0
  787.         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,
  788.             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;
  789.        
  790.     END IF;
  791.    
  792.     --Adrian, Sep 19, 2017, O/S cash bank in
  793.     IF (pStatusDoc = vStatusApprovedDocAndOsCbIn)
  794.         OR (pStatusDoc = vAllStatusDoc) THEN
  795.        
  796.         --O/S cb trf
  797.         INSERT INTO tr_daily_cashbank
  798.         (session_id, tenant_id, cashbank_id, order_type_data,
  799.         doc_type_id, doc_type_desc, doc_no, doc_date,
  800.         mode_payment, bank_payment, no_payment, date_payment,
  801.         amount, remark)
  802.         SELECT pSessionId, pTenantId, pCashbankId, 2,
  803.         B.doc_type_id, f_get_doc_desc(B.doc_type_id), B.doc_no, B.doc_date,
  804.         A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  805.         A.receive_amount,
  806.         vStatusDocLabel ||
  807.         CASE WHEN (B.status_doc = vStatusDraft) THEN
  808.             vDraft
  809.         ELSE
  810.             vInProgress
  811.         END
  812.         || vNewLine || vRemarkLabel || A.remark AS remark
  813.         FROM cb_transfer_cashbank_receive A
  814.         INNER JOIN cb_transfer_cashbank B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  815.         WHERE B.tenant_id = pTenantId
  816.         AND A.cashbank_to_id = pCashbankId
  817.         AND B.status_doc IN (vStatusDraft, vStatusInProgress)
  818.         AND B.doc_date BETWEEN pDateStart AND pDateEnd;
  819.        
  820.         --O/S cash bank in AR
  821.         INSERT INTO tr_daily_cashbank
  822.         (session_id, tenant_id, cashbank_id, order_type_data,
  823.         doc_type_id, doc_type_desc, doc_no, doc_date,
  824.         mode_payment, bank_payment, no_payment, date_payment,
  825.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  826.         partner_name)
  827.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  828.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  829.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  830.         B.cashbank_amount - SUM(COALESCE(C.cost_amount, 0)),
  831.         vStatusDocLabel ||
  832.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  833.             vDraft
  834.         ELSE
  835.             vInProgress
  836.         END
  837.         || vNewLine || vRemarkLabel || A.remark AS remark,
  838.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, f_get_partner_name(A.partner_id)
  839.         FROM cb_in_out_cashbank A
  840.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  841.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  842.         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
  843.         WHERE A.tenant_id = pTenantId
  844.         AND B.cashbank_id = pCashbankId
  845.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  846.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  847.         AND A.doc_type_id = vDocTypeCashBankInAr
  848.         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;
  849.        
  850.         --O/S cash bank in other
  851.         INSERT INTO tr_daily_cashbank
  852.         (session_id, tenant_id, cashbank_id, order_type_data,
  853.         doc_type_id, doc_type_desc, doc_no, doc_date,
  854.         mode_payment, bank_payment, no_payment, date_payment,
  855.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  856.         partner_name)
  857.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  858.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  859.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  860.         B.cashbank_amount,
  861.         vStatusDocLabel ||
  862.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  863.             vDraft
  864.         ELSE
  865.             vInProgress
  866.         END
  867.         || vNewLine || vRemarkLabel || A.remark AS remark,
  868.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, 
  869.         f_get_partner_name(A.partner_id)
  870.         FROM cb_in_out_cashbank A
  871.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  872.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  873.         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
  874.         WHERE A.tenant_id = pTenantId
  875.         AND B.cashbank_id = pCashbankId
  876.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  877.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  878.         AND A.doc_type_id = vDocTypeCashBankInOther
  879.         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;
  880.        
  881.         -- edc settlement
  882.         INSERT INTO tr_daily_cashbank
  883.         (session_id, tenant_id, cashbank_id, order_type_data,
  884.         doc_type_desc, doc_no, doc_date,
  885.         mode_payment, bank_payment, no_payment, date_payment,
  886.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  887.         partner_name)
  888.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  889.         f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  890.         B.mode_payment, B.bank_payment, A.doc_no, A.doc_date,
  891.         B.cashbank_amount,
  892.         vStatusDocLabel ||
  893.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  894.             vDraft
  895.         ELSE
  896.             vInProgress
  897.         END
  898.         || vNewLine || vRemarkLabel || A.remark AS remark,
  899.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date, 
  900.         f_get_partner_name(A.partner_id)
  901.         FROM cb_in_out_cashbank A
  902.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  903.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  904.         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
  905.         WHERE A.tenant_id = pTenantId
  906.         AND B.cashbank_id = pCashbankId
  907.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  908.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  909.         AND A.doc_type_id = vDocTypeEdcSettlement
  910.         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;
  911.        
  912.         --O/S follow up cash advance settlement
  913.         INSERT INTO tr_daily_cashbank
  914.         (session_id, tenant_id, cashbank_id, order_type_data,
  915.         doc_type_id, doc_type_desc, doc_no, doc_date,
  916.         mode_payment, bank_payment, no_payment, date_payment,
  917.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no,
  918.         ref_doc_date, partner_name)
  919.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  920.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  921.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  922.         B.cashbank_amount,
  923.         vStatusDocLabel ||
  924.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  925.             vDraft
  926.         ELSE
  927.             vInProgress
  928.         END
  929.         || vNewLine || vRemarkLabel || A.remark AS remark,
  930.         A.ref_id, A.ref_doc_type_id, D.payment_doc_no,
  931.         D.payment_doc_date, f_get_partner_name(A.partner_id) AS partner_name
  932.         FROM cb_in_out_cashbank A
  933.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  934.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  935.         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
  936.         WHERE A.tenant_id = pTenantId
  937.         AND B.cashbank_id = pCashbankId
  938.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  939.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  940.         AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  941.         AND A.ref_amount < 0
  942.         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,
  943.             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;
  944.            
  945.         --Added by Adrian, Sep 22, 2017 O/S cheque giro realization
  946.         INSERT INTO tr_daily_cashbank
  947.         (session_id, tenant_id, cashbank_id, order_type_data,
  948.         doc_type_id, doc_type_desc, doc_no, doc_date,
  949.         mode_payment, bank_payment, no_payment, date_payment,
  950.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  951.         partner_name)
  952.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  953.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), D.cheque_giro_no, D.cheque_giro_date,
  954.         D.mode_payment, B.bank_payment, B.cheque_giro_no, B.realization_date,
  955.         B.cheque_giro_amount- SUM(COALESCE(C.cost_amount, 0)), vStatusDocLabel ||
  956.         CASE WHEN (A.status_doc = vStatusDraft) THEN
  957.             vDraft
  958.         ELSE
  959.             vInProgress
  960.         END
  961.         || vNewLine || vRemarkLabel || D.remark, A.in_out_cashbank_id, A.doc_type_id, A.doc_no, A.doc_date,
  962.         f_get_partner_name(B.partner_id)
  963.         FROM cb_in_out_cashbank A
  964.         INNER JOIN cb_cheque_giro_realization B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  965.         INNER JOIN cb_cheque_giro_balance D ON B.ref_balance_id = D.cheque_giro_balance_id
  966.         INNER JOIN cb_in_out_cashbank E ON D.in_out_cashbank_id = E.in_out_cashbank_id
  967.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  968.         WHERE A.tenant_id = pTenantId
  969.         AND B.cashbank_id = pCashbankId
  970.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  971.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  972.         AND A.doc_type_id = vDocTypeCGRealization
  973.         AND B.realization_status = vStatusAccept
  974.         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;
  975.        
  976.     END IF;
  977.        
  978.     /*
  979.      * ambil data transaksi penjualan pos dan return pos untuk cash payment
  980.      */
  981.     INSERT INTO tr_kartu_kas_by_doc_type
  982.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  983.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  984.     amount_debit, amount_credit)
  985.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  986.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  987.         SUM(B.conversion_amount), 0
  988.     FROM i_trx_pos A, i_trx_pos_cash_payment B, m_document C, m_cashbank D, m_cashbank_ou E
  989.     WHERE A.tenant_id = pTenantId AND
  990.         --A.ou_id = pOuId AND
  991.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  992.         A.doc_type_id IN (vDocTypePosShop, vDocTypePosShopInShop) AND
  993.         A.trx_pos_id = B.trx_pos_id AND
  994.         A.tenant_id = B.tenant_id AND
  995.         A.process_no = B.process_no AND
  996.         B.curr_payment_code = D.curr_code AND
  997.         D.flg_cash_bank = 'C' AND
  998.         D.cashbank_id = E.cashbank_id AND
  999.         A.ou_id = E.ou_id AND
  1000.         A.doc_type_id = C.doc_type_id AND
  1001.         D.cashbank_id = pCashbankId
  1002.     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;
  1003.  
  1004.     INSERT INTO tr_kartu_kas_by_doc_type
  1005.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  1006.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  1007.     amount_debit, amount_credit)
  1008.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  1009.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  1010.         SUM(B.conversion_amount), 0
  1011.     FROM i_trx_pos A, i_trx_pos_cash_payment B, m_document C, m_cashbank D, m_cashbank_ou E
  1012.     WHERE A.tenant_id = pTenantId AND
  1013.         --A.ou_id = pOuId AND
  1014.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  1015.         A.doc_type_id IN (vDocTypeReturnPosShop, vDocTypeReturnPosShopInShop) AND
  1016.         A.trx_pos_id = B.trx_pos_id AND
  1017.         A.tenant_id = B.tenant_id AND
  1018.         A.process_no = B.process_no AND
  1019.         B.curr_payment_code = D.curr_code AND
  1020.         D.flg_cash_bank = 'C' AND
  1021.         D.cashbank_id = E.cashbank_id AND
  1022.         A.ou_id = E.ou_id AND
  1023.         A.doc_type_id = C.doc_type_id AND
  1024.         D.cashbank_id = pCashbankId
  1025.     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;
  1026.  
  1027.     /*
  1028.      * ambil data transaksi penjualan pos dan return pos untuk pengembalian cash
  1029.      */
  1030.     INSERT INTO tr_kartu_kas_by_doc_type
  1031.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  1032.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  1033.     amount_debit, amount_credit)
  1034.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  1035.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  1036.         0, SUM(A.total_refund)
  1037.     FROM i_trx_pos A, m_document C, m_cashbank D, m_cashbank_ou E
  1038.     WHERE A.tenant_id = pTenantId AND
  1039.         --A.ou_id = pOuId AND
  1040.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  1041.         A.doc_type_id IN (vDocTypePosShop, vDocTypePosShopInShop) AND
  1042.         A.curr_code = D.curr_code AND
  1043.         D.flg_cash_bank = 'C' AND
  1044.         D.cashbank_id = E.cashbank_id AND
  1045.         A.ou_id = E.ou_id AND
  1046.         A.doc_type_id = C.doc_type_id AND
  1047.         D.cashbank_id = pCashbankId
  1048.     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;
  1049.  
  1050.     INSERT INTO tr_kartu_kas_by_doc_type
  1051.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  1052.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  1053.     amount_debit, amount_credit)
  1054.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  1055.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  1056.         0, SUM(A.total_refund)
  1057.     FROM i_trx_pos A, m_document C, m_cashbank D, m_cashbank_ou E
  1058.     WHERE A.tenant_id = pTenantId AND
  1059.         --A.ou_id = pOuId AND
  1060.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  1061.         A.doc_type_id IN (vDocTypeReturnPosShop, vDocTypeReturnPosShopInShop) AND
  1062.         A.curr_code = D.curr_code AND
  1063.         D.flg_cash_bank = 'C' AND
  1064.         D.cashbank_id = E.cashbank_id AND
  1065.         A.ou_id = E.ou_id AND
  1066.         A.doc_type_id = C.doc_type_id AND
  1067.         D.cashbank_id = pCashbankId
  1068.     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;
  1069.    
  1070.     INSERT INTO tr_daily_cashbank
  1071.         (session_id, tenant_id, cashbank_id, order_type_data,
  1072.         doc_type_id, doc_type_desc, doc_no, doc_date,
  1073.         mode_payment, bank_payment, no_payment, date_payment,
  1074.         amount)
  1075.     SELECT pSessionId, pTenantId, A.cashbank_id, 2,
  1076.            A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  1077.            'CASH', ' ', ' ', ' ',
  1078.            SUM(A.amount_debit) - SUM(A.amount_credit)
  1079.     FROM tr_kartu_kas_by_doc_type A
  1080.     WHERE A.session_id = pSessionId
  1081.     GROUP BY A.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date;
  1082.    
  1083.     INSERT INTO tr_daily_cashbank
  1084.         (session_id, tenant_id, cashbank_id, order_type_data,
  1085.         doc_type_id, doc_type_desc, doc_no, doc_date,
  1086.         mode_payment, bank_payment, no_payment, date_payment,
  1087.         amount)
  1088.     SELECT pSessionId, pTenantId, A.cashbank_id, 2,
  1089.            A.doc_type_id, f_get_doc_desc(A.doc_type_id), 'VOID ' || A.doc_no, A.doc_date,
  1090.            'CASH', ' ', ' ', ' ',
  1091.            -1 * (SUM(A.amount_debit) - SUM(A.amount_credit))
  1092.     FROM tr_kartu_kas_by_doc_type A
  1093.     WHERE A.session_id = pSessionId
  1094.     AND EXISTS (SELECT 1 FROM i_trx_log_voided_pos B
  1095.                     WHERE A.tenant_id = B.tenant_id AND
  1096.                     A.doc_no = B.doc_no AND
  1097.                     A.doc_date = B.doc_date AND
  1098.                     A.ou_id = B.ou_id)
  1099.     GROUP BY A.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date;
  1100.  
  1101.     SELECT COUNT(1) INTO vCount
  1102.     FROM tr_daily_cashbank
  1103.     WHERE session_id = pSessionId AND order_type_data = 1;
  1104.  
  1105.     IF vCount = 0 THEN
  1106.         INSERT INTO tr_daily_cashbank
  1107.         (session_id, tenant_id, cashbank_id, order_type_data,
  1108.         doc_type_desc, doc_no, doc_date,
  1109.         mode_payment, bank_payment, no_payment, date_payment,
  1110.         amount)
  1111.         SELECT pSessionId, pTenantId, pCashbankId, 1, 'Beginning Balance', 'Beginning Balance', pDateStart,
  1112.         ' ', ' ', ' ', ' ',
  1113.         0;
  1114.     END IF;
  1115.                    
  1116.     Open pRefHeader FOR
  1117.     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,
  1118.            pDateStart AS date_trx, f_get_username(pUserId) AS username, pDatetime AS datetime,
  1119.            pCashbankId AS cashbank_id, A.cashbank_code AS cashbank_code, A.cashbank_name AS cashbank_name,
  1120.            A.bank_code AS bank_code, A.account_no AS account_no, A.account_name1 AS account_name1, A.account_name2 AS account_name2,
  1121.            A.curr_code AS curr_code
  1122.     FROM m_cashbank A WHERE A.cashbank_id = pCashBankId;
  1123.            
  1124.     RETURN NEXT pRefHeader;
  1125.  
  1126.     Open pRefDetail FOR
  1127.     SELECT A.doc_type_desc AS doc_type_desc, A.doc_date AS doc_date, A.doc_no AS doc_no,
  1128.            A.mode_payment AS mode_payment, A.bank_payment AS bank_payment,
  1129.            A.ref_doc_date AS ref_doc_date, A.ref_doc_no AS ref_doc_no,
  1130.            CASE WHEN ((A.no_payment = '-') OR (A.no_payment = 'null')) THEN '' ELSE A.no_payment END AS no_payment,
  1131.            CASE WHEN (A.amount > 0 ) THEN A.amount ELSE 0 END AS debit,
  1132.            CASE WHEN (A.amount < 0 ) THEN -1 * A.amount ELSE 0 END AS credit,
  1133.            SUM(A.amount) OVER (ORDER BY A.order_type_data, A.doc_date, A.doc_no) AS amount,
  1134.            A.remark, A.partner_name,
  1135.            (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
  1136.     FROM tr_daily_cashbank A
  1137.     WHERE A.session_id = pSessionId
  1138.     AND A.tenant_id = pTenantId
  1139.     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
  1140.     ORDER BY A.order_type_data, A.doc_date, A.doc_no;
  1141.    
  1142.     RETURN NEXT pRefDetail;
  1143.    
  1144.     DELETE FROM tr_daily_cashbank WHERE session_id = pSessionId;
  1145.     DELETE FROM tr_kartu_kas_by_doc_type WHERE session_id = pSessionId;
  1146.    
  1147. END;
  1148. $BODY$
  1149.   LANGUAGE plpgsql VOLATILE
  1150.   COST 100;
  1151.   /
Add Comment
Please, Sign In to add comment