aadddrr

r_report_daily_cashbank

Sep 18th, 2017
52
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. --Modified by Adrian, Sep 19, 2017,  menambahkan filter status doc
  5. CREATE OR REPLACE FUNCTION r_report_daily_cashbank(character varying, bigint, bigint, bigint, character varying, bigint, bigint, character varying, character varying, character varying)
  6.   RETURNS SETOF refcursor AS
  7. $BODY$
  8. DECLARE
  9.     pRefHeader          REFCURSOR := 'refHeader';
  10.     pRefDetail          REFCURSOR := 'refDetail';
  11.     pSessionId          ALIAS FOR $1;
  12.     pTenantId           ALIAS FOR $2;
  13.     pUserId             ALIAS FOR $3;
  14.     pRoleId             ALIAS FOR $4;
  15.     pDatetime           ALIAS FOR $5;
  16.     pOuId               ALIAS FOR $6;
  17.     pCashbankId         ALIAS FOR $7;
  18.     pDateStart          ALIAS FOR $8;
  19.     pDateEnd            ALIAS FOR $9;
  20.     pStatusDoc          ALIAS FOR $10;
  21.    
  22.     vEmptyId                bigint;
  23.     vEmpty                  character varying(1);
  24.     vCashBankInType         character varying(1);
  25.     vCashBankOutType        character varying(1);
  26.     vStatusReleased         character varying(1);
  27.     vStatusVoid             character varying(1);
  28.     vRecordTypeSaldoAwal    character varying(1);
  29.     vRecordTypeKredit       character varying(1);
  30.     vRecordTypeDebet        character varying(1);
  31.     vTglAwalCashbankBalance character varying(8);
  32.     vDocTypePosShop             bigint;
  33.     vDocTypeReturnPosShop       bigint;
  34.     vDocTypePosShopInshop       bigint;
  35.     vDocTypeReturnPosShopInShop bigint;
  36.     vDocTypeCashBankOut         bigint;
  37.     vDocTypeCashBankInOther     bigint;
  38.     vDocTypeCashBankInAr        bigint;
  39.     vDocTypeEdcSettlement       bigint;
  40.     vDocTypeFollowUpCashAdvanceSettlement       bigint;
  41.     vCount                      bigint;
  42.    
  43.     vStatusApprovedDoc                      character varying;
  44.     vStatusApprovedDocAndOsCbOut            character varying;
  45.     vStatusApprovedDocAndOsCbIn             character varying
  46.     vAllStatusDoc                           character varying;
  47.     vStatusInProgress                       character varying;
  48.     vStatusDraft                            character varying;
  49.    
  50. BEGIN
  51.    
  52.     vEmptyId := -99;
  53.     vEmpty   := ' ';
  54.     vCashBankInType := 'I';
  55.     vCashBankOutType := 'O';
  56.     vStatusReleased := 'R';
  57.     vStatusVoid := 'V';
  58.     vRecordTypeSaldoAwal := 'A';
  59.     vRecordTypeKredit := 'K';
  60.     vRecordTypeDebet := 'D';
  61.     vTglAwalCashbankBalance := ' ';
  62.     vDocTypePosShop := 401;
  63.     vDocTypeReturnPosShop := 402;
  64.     vDocTypePosShopInShop := 403;
  65.     vDocTypeReturnPosShopInShop := 404;
  66.     vDocTypeCashBankOut := 611;
  67.     vDocTypeCashBankInOther := 623;
  68.     vDocTypeCashBankInAr := 621;
  69.     vDocTypeEdcSettlement := 622;
  70.     vDocTypeFollowUpCashAdvanceSettlement := 641;
  71.    
  72.     vStatusApprovedDoc := 'approvedDoc';
  73.     vStatusApprovedDocAndOsCbOut := 'approvedDocAndOutstandingCBOutOnly';
  74.     vStatusApprovedDocAndOsCbIn := 'approvedDocAndOutstandingCBInOnly';
  75.     vAllStatusDoc := 'allStatusDoc';
  76.     vStatusInProgress := 'I';
  77.     vStatusDraft := 'D';
  78.    
  79.     DELETE FROM tr_daily_cashbank WHERE session_id = pSessionId;
  80.     DELETE FROM tr_kartu_kas_by_doc_type WHERE session_id = pSessionId;
  81.    
  82.     SELECT MAX(A.cash_bank_date) INTO vTglAwalCashbankBalance
  83.     FROM cb_cashbank_balance A
  84.     WHERE A.tenant_id = pTenantId
  85.     AND A.cashbank_id = pCashbankId
  86.     AND A.rec_type = vRecordTypeSaldoAwal
  87.     AND A.cash_bank_date <= pDateStart;
  88.  
  89.     IF vTglAwalCashbankBalance IS null OR vTglAwalCashbankBalance IN ('', ' ') THEN
  90.        
  91.         INSERT INTO tr_daily_cashbank
  92.         (session_id, tenant_id, cashbank_id, order_type_data,
  93.         doc_type_id, doc_type_desc, doc_no, doc_date,
  94.         mode_payment, bank_payment, no_payment, date_payment,
  95.         amount)
  96.         SELECT pSessionId, pTenantId, A.cashbank_id, 1, -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  97.         ' ', ' ', ' ', ' ',
  98.         SUM(CASE WHEN rec_type = vRecordTypeKredit THEN A.amount * -1 ELSE A.amount END) AS sum_amount
  99.         FROM cb_cashbank_balance A
  100.         WHERE A.tenant_id = pTenantId
  101.         AND A.cashbank_id = pCashbankId
  102.         AND A.cash_bank_date < pDateStart
  103.         GROUP BY A.cashbank_id;
  104.            
  105.     ELSE
  106.    
  107.         INSERT INTO tr_daily_cashbank
  108.         (session_id, tenant_id, cashbank_id, order_type_data,
  109.         doc_type_id, doc_type_desc, doc_no, doc_date,
  110.         mode_payment, bank_payment, no_payment, date_payment,
  111.         amount)
  112.         SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  113.         'Beginning Balance', 'Beginning Balance', pDateStart,
  114.         ' ', ' ', ' ', ' ',
  115.         SUM(A.amount) AS sum_amount
  116.         FROM cb_cashbank_balance A
  117.         WHERE A.tenant_id = pTenantId
  118.         AND A.cashbank_id = pCashbankId
  119.         AND A.cash_bank_date = vTglAwalCashbankBalance
  120.         AND A.rec_type = vRecordTypeSaldoAwal
  121.         GROUP BY A.cashbank_id;
  122.    
  123.         INSERT INTO tr_daily_cashbank
  124.         (session_id, tenant_id, cashbank_id, order_type_data,
  125.         doc_type_id, doc_type_desc, doc_no, doc_date,
  126.         mode_payment, bank_payment, no_payment, date_payment,
  127.         amount)
  128.         SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  129.         'Beginning Balance', 'Beginning Balance', pDateStart,
  130.         ' ', ' ', ' ', ' ',
  131.         SUM(CASE WHEN rec_type = vRecordTypeKredit THEN A.amount * -1 ELSE A.amount END) AS sum_amount
  132.         FROM cb_cashbank_balance A
  133.         WHERE A.tenant_id = pTenantId
  134.         AND A.cashbank_id = pCashbankId
  135.         AND A.cash_bank_date >= vTglAwalCashbankBalance
  136.         AND A.cash_bank_date < pDateStart
  137.         AND A.rec_type <> vRecordTypeSaldoAwal
  138.         GROUP BY A.cashbank_id;
  139.        
  140.         --ambil nilai untuk CB trf
  141.         INSERT INTO tr_daily_cashbank
  142.         (session_id, tenant_id, cashbank_id, order_type_data,
  143.         doc_type_id, doc_type_desc, doc_no, doc_date,
  144.         mode_payment, bank_payment, no_payment, date_payment,
  145.         amount)
  146.         SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  147.         'Beginning Balance', 'Beginning Balance', pDateStart,
  148.         ' ', ' ', ' ', ' ',
  149.         SUM(A.transfer_amount)
  150.         FROM cb_transfer_cashbank A
  151.         WHERE A.tenant_id = pTenantId
  152.         AND A.cashbank_id = pCashbankId
  153.         AND A.status_doc <> vStatusReleased
  154.         AND A.doc_date >= vTglAwalCashbankBalance
  155.         AND A.doc_date < pDateStart
  156.         GROUP BY A.cashbank_id;
  157.        
  158.         INSERT INTO tr_daily_cashbank
  159.         (session_id, tenant_id, cashbank_id, order_type_data,
  160.         doc_type_id, doc_type_desc, doc_no, doc_date,
  161.         mode_payment, bank_payment, no_payment, date_payment,
  162.         amount)
  163.         SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  164.         'Beginning Balance', 'Beginning Balance', pDateStart,
  165.         ' ', ' ', ' ', ' ',
  166.         SUM(B.payment_amount)
  167.         FROM cb_transfer_cashbank A
  168.         RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  169.         WHERE A.tenant_id = pTenantId
  170.         AND A.cashbank_id = pCashbankId
  171.         AND A.status_doc <> vStatusReleased
  172.         AND A.doc_date >= vTglAwalCashbankBalance
  173.         AND A.doc_date < pDateStart
  174.         GROUP BY A.cashbank_id;
  175.        
  176.         --ambil nilai untuk CB out
  177.         INSERT INTO tr_daily_cashbank
  178.         (session_id, tenant_id, cashbank_id, order_type_data,
  179.         doc_type_id, doc_type_desc, doc_no, doc_date,
  180.         mode_payment, bank_payment, no_payment, date_payment,
  181.         amount)
  182.         SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  183.         -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  184.         ' ', ' ', ' ', ' ',
  185.         SUM(B.cashbank_amount)
  186.         FROM cb_in_out_cashbank A
  187.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  188.         WHERE A.tenant_id = pTenantId
  189.         AND B.cashbank_id = pCashbankId
  190.         AND A.doc_date >= vTglAwalCashbankBalance
  191.         AND A.doc_date < pDateStart
  192.         AND A.status_doc <> vStatusReleased
  193.         AND A.doc_type_id = vDocTypeCashBankOut
  194.         GROUP BY B.cashbank_id;
  195.        
  196.         --ambil nilai untuk FU CAS
  197.         INSERT INTO tr_daily_cashbank
  198.         (session_id, tenant_id, cashbank_id, order_type_data,
  199.         doc_type_id, doc_type_desc, doc_no, doc_date,
  200.         mode_payment, bank_payment, no_payment, date_payment,
  201.         amount)
  202.         SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  203.         -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  204.         ' ', ' ', ' ', ' ',
  205.         SUM(B.cashbank_amount)
  206.         FROM cb_in_out_cashbank A
  207.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  208.         WHERE A.tenant_id = pTenantId
  209.         AND B.cashbank_id = pCashbankId
  210.         AND A.doc_date >= vTglAwalCashbankBalance
  211.         AND A.doc_date < pDateStart
  212.         AND A.status_doc <> vStatusReleased
  213.         AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  214.         AND A.ref_amount > 0
  215.         GROUP BY B.cashbank_id;
  216.        
  217.         --Adrian, Sep 19, 2017, ambil nilai untuk O/S CB out
  218.         IF (pStatusDoc = vStatusApprovedDocAndOsCbOut)
  219.             OR (pStatusDoc = vAllStatusDoc) THEN
  220.            
  221.             INSERT INTO tr_daily_cashbank
  222.             (session_id, tenant_id, cashbank_id, order_type_data,
  223.             doc_type_id, doc_type_desc, doc_no, doc_date,
  224.             mode_payment, bank_payment, no_payment, date_payment,
  225.             amount)
  226.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  227.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  228.             ' ', ' ', ' ', ' ',
  229.             SUM(-1 * B.cashbank_amount)
  230.             FROM cb_in_out_cashbank A
  231.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  232.             WHERE A.tenant_id = pTenantId
  233.             AND B.cashbank_id = pCashbankId
  234.             AND A.doc_date >= vTglAwalCashbankBalance
  235.             AND A.doc_date < pDateStart
  236.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  237.             AND A.doc_type_id = vDocTypeCashBankOut
  238.             GROUP BY B.cashbank_id;
  239.            
  240.         END IF;
  241.        
  242.         --Adrian, Sep 19, 2017, ambil nilai untuk O/S CB in
  243.         IF (pStatusDoc = vStatusApprovedDocAndOsCbIn)
  244.             OR (pStatusDoc = vAllStatusDoc) THEN
  245.            
  246.             --ambil nilai untuk O/S CB in AR
  247.             INSERT INTO tr_daily_cashbank
  248.             (session_id, tenant_id, cashbank_id, order_type_data,
  249.             doc_type_id, doc_type_desc, doc_no, doc_date,
  250.             mode_payment, bank_payment, no_payment, date_payment,
  251.             amount)
  252.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  253.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  254.             ' ', ' ', ' ', ' ',
  255.             SUM(B.cashbank_amount)
  256.             FROM cb_in_out_cashbank A
  257.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  258.             WHERE A.tenant_id = pTenantId
  259.             AND B.cashbank_id = pCashbankId
  260.             AND A.doc_date >= vTglAwalCashbankBalance
  261.             AND A.doc_date < pDateStart
  262.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  263.             AND A.doc_type_id = vDocTypeCashBankInAr
  264.             GROUP BY B.cashbank_id;
  265.            
  266.             --ambil nilai untuk O/S CB in other
  267.             INSERT INTO tr_daily_cashbank
  268.             (session_id, tenant_id, cashbank_id, order_type_data,
  269.             doc_type_id, doc_type_desc, doc_no, doc_date,
  270.             mode_payment, bank_payment, no_payment, date_payment,
  271.             amount)
  272.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  273.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  274.             ' ', ' ', ' ', ' ',
  275.             SUM(B.cashbank_amount)
  276.             FROM cb_in_out_cashbank A
  277.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  278.             WHERE A.tenant_id = pTenantId
  279.             AND B.cashbank_id = pCashbankId
  280.             AND A.doc_date >= vTglAwalCashbankBalance
  281.             AND A.doc_date < pDateStart
  282.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  283.             AND A.doc_type_id = vDocTypeCashBankInOther
  284.             GROUP BY B.cashbank_id;
  285.            
  286.         END IF;
  287.        
  288.         INSERT INTO tr_daily_cashbank
  289.         (session_id, tenant_id, cashbank_id, order_type_data,
  290.         doc_type_id, doc_type_desc, doc_no, doc_date,
  291.         mode_payment, bank_payment, no_payment, date_payment,
  292.         amount)
  293.         SELECT pSessionId, pTenantId, cashbank_id, 1,
  294.         doc_type_id, doc_type_desc, doc_no, doc_date,
  295.         mode_payment, bank_payment, no_payment, date_payment,
  296.         SUM(amount)
  297.         FROM tr_daily_cashbank
  298.         WHERE session_id = pSessionId
  299.         AND tenant_id = pTenantId
  300.         AND order_type_data = -1
  301.         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;
  302.        
  303.         DELETE FROM tr_daily_cashbank WHERE session_id = pSessionId AND order_type_data = -1;
  304.        
  305.     END IF;
  306.    
  307.     -- cb trf
  308.     INSERT INTO tr_daily_cashbank
  309.     (session_id, tenant_id, cashbank_id, order_type_data,
  310.     doc_type_id, doc_type_desc, doc_no, doc_date,
  311.     mode_payment, bank_payment, no_payment, date_payment,
  312.     amount, remark)
  313.     SELECT pSessionId, pTenantId, pCashbankId, 2,
  314.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  315.     A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  316.     -1 * A.transfer_amount, A.remark
  317.     FROM cb_transfer_cashbank A
  318.     WHERE A.tenant_id = pTenantId
  319.     AND A.cashbank_id = pCashbankId
  320.     AND A.status_doc = vStatusReleased
  321.     AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  322.    
  323.     /*
  324.      * PS, 27 Maret 2015
  325.      * update amount pada tr_daily_cashbank, dikurangi dengan cost_amount dari cb_transfer_cashbank_cost
  326.      * memakai RIGHT JOIN karena transaksi di cb_transfer_cashbank_cost bisa kosong untuk sebuah transfer cashbank
  327.      */
  328. --  UPDATE tr_daily_cashbank C
  329. --  SET amount = C.amount - B.cost_amount
  330. --  FROM cb_transfer_cashbank A
  331. --  RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id=B.transfer_cashbank_id
  332. --  WHERE A.tenant_id = pTenantId
  333. --  AND A.cashbank_id = pCashbankId
  334. --  AND A.status_doc = vStatusReleased
  335. --  AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  336.  
  337.     UPDATE tr_daily_cashbank C
  338.     SET amount = C.amount - B.payment_amount
  339.     FROM cb_transfer_cashbank A
  340.     RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id=B.transfer_cashbank_id
  341.     WHERE A.tenant_id = pTenantId
  342.     AND A.cashbank_id = pCashbankId
  343.     AND A.doc_no = C.doc_no
  344.     AND A.doc_date = C.doc_date
  345.     AND A.doc_type_id = C.doc_type_id
  346.     AND A.status_doc = vStatusReleased
  347.     AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  348.    
  349.     INSERT INTO tr_daily_cashbank
  350.     (session_id, tenant_id, cashbank_id, order_type_data,
  351.     doc_type_id, doc_type_desc, doc_no, doc_date,
  352.     mode_payment, bank_payment, no_payment, date_payment,
  353.     amount, remark)
  354.     SELECT pSessionId, pTenantId, pCashbankId, 2,
  355.     B.doc_type_id, f_get_doc_desc(B.doc_type_id), B.doc_no, B.doc_date,
  356.     A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  357.     A.receive_amount, A.remark
  358.     FROM cb_transfer_cashbank_receive A
  359.     INNER JOIN cb_transfer_cashbank B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  360.     WHERE B.tenant_id = pTenantId
  361.     AND A.cashbank_to_id = pCashbankId
  362.     AND B.status_doc = vStatusReleased
  363.     AND B.doc_date BETWEEN pDateStart AND pDateEnd;
  364.    
  365.     -- cash bank out
  366.     /* Note : WTC & TKP 24 Mei 2016
  367.      * tidak perlu join ke cb_in_out_cashbank_cost
  368.      * dan untuk join ke cb_trx_cashbank_balance langsung di inner join aja
  369.      */
  370.     INSERT INTO tr_daily_cashbank
  371.     (session_id, tenant_id, cashbank_id, order_type_data,
  372.     doc_type_id, doc_type_desc, doc_no, doc_date,
  373.     mode_payment, bank_payment, no_payment, date_payment,
  374.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  375.     partner_name)
  376.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  377.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  378.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  379.     (-1 * B.cashbank_amount), A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  380.     f_get_partner_name(A.partner_id) AS partner_name
  381.     FROM cb_in_out_cashbank A
  382.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  383.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  384.     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
  385.     WHERE A.tenant_id = pTenantId
  386.     AND B.cashbank_id = pCashbankId
  387.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  388.     AND A.status_doc = vStatusReleased
  389.     AND A.doc_type_id = vDocTypeCashBankOut
  390.     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;
  391.    
  392.     -- cash bank in AR
  393.     /* Note : WTC & TKP 24 Mei 2016
  394.      * tidak perlu join ke cb_trx_cashbank_balance
  395.      */
  396.     INSERT INTO tr_daily_cashbank
  397.     (session_id, tenant_id, cashbank_id, order_type_data,
  398.     doc_type_id, doc_type_desc, doc_no, doc_date,
  399.     mode_payment, bank_payment, no_payment, date_payment,
  400.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  401.     partner_name)
  402.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  403.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  404.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  405.     B.cashbank_amount - SUM(COALESCE(C.cost_amount, 0)),
  406.     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)
  407.     FROM cb_in_out_cashbank A
  408.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  409.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  410.     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
  411.     WHERE A.tenant_id = pTenantId
  412.     AND B.cashbank_id = pCashbankId
  413.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  414.     AND A.status_doc = vStatusReleased
  415.     AND A.doc_type_id = vDocTypeCashBankInAr
  416.     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;
  417.    
  418.     -- cash bank in other
  419.     /* Note : WTC & TKP 24 Mei 2016
  420.      * tidak perlu join ke cb_trx_cashbank_balance
  421.      *
  422.      * Note : Didit 24 Agustus 2016
  423.      * Perhitungkan juga dokumen yang statusnya void karena hasil konversi
  424.      */
  425.     INSERT INTO tr_daily_cashbank
  426.     (session_id, tenant_id, cashbank_id, order_type_data,
  427.     doc_type_id, doc_type_desc, doc_no, doc_date,
  428.     mode_payment, bank_payment, no_payment, date_payment,
  429.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  430.     partner_name)
  431.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  432.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  433.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  434.     B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  435.     f_get_partner_name(A.partner_id)
  436.     FROM cb_in_out_cashbank A
  437.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  438.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  439.     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
  440.     WHERE A.tenant_id = pTenantId
  441.     AND B.cashbank_id = pCashbankId
  442.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  443.     AND A.status_doc IN (vStatusReleased, vStatusVoid)
  444.     AND A.doc_type_id = vDocTypeCashBankInOther
  445.     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;
  446.    
  447.     --Adrian, Sep 19, 2017, O/S cash bank out
  448.     IF (pStatusDoc = vStatusApprovedDocAndOsCbOut)
  449.         OR (pStatusDoc = vAllStatusDoc) THEN
  450.        
  451.         INSERT INTO tr_daily_cashbank
  452.         (session_id, tenant_id, cashbank_id, order_type_data,
  453.         doc_type_id, doc_type_desc, doc_no, doc_date,
  454.         mode_payment, bank_payment, no_payment, date_payment,
  455.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  456.         partner_name)
  457.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  458.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  459.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  460.         (-1 * B.cashbank_amount), A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  461.         f_get_partner_name(A.partner_id) AS partner_name
  462.         FROM cb_in_out_cashbank A
  463.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  464.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  465.         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
  466.         WHERE A.tenant_id = pTenantId
  467.         AND B.cashbank_id = pCashbankId
  468.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  469.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  470.         AND A.doc_type_id = vDocTypeCashBankOut
  471.         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;
  472.        
  473.     END IF;
  474.    
  475.     --Adrian, Sep 19, 2017, O/S cash bank in
  476.     IF (pStatusDoc = vStatusApprovedDocAndOsCbIn)
  477.         OR (pStatusDoc = vAllStatusDoc) THEN
  478.        
  479.         --O/S cash bank in AR
  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, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  485.         partner_name)
  486.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  487.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  488.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  489.         B.cashbank_amount - SUM(COALESCE(C.cost_amount, 0)),
  490.         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)
  491.         FROM cb_in_out_cashbank A
  492.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  493.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  494.         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
  495.         WHERE A.tenant_id = pTenantId
  496.         AND B.cashbank_id = pCashbankId
  497.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  498.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  499.         AND A.doc_type_id = vDocTypeCashBankInAr
  500.         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;
  501.        
  502.         --O/S cash bank in other
  503.         INSERT INTO tr_daily_cashbank
  504.         (session_id, tenant_id, cashbank_id, order_type_data,
  505.         doc_type_id, doc_type_desc, doc_no, doc_date,
  506.         mode_payment, bank_payment, no_payment, date_payment,
  507.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  508.         partner_name)
  509.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  510.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  511.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  512.         B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  513.         f_get_partner_name(A.partner_id)
  514.         FROM cb_in_out_cashbank A
  515.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  516.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  517.         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
  518.         WHERE A.tenant_id = pTenantId
  519.         AND B.cashbank_id = pCashbankId
  520.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  521.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  522.         AND A.doc_type_id = vDocTypeCashBankInOther
  523.         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;
  524.        
  525.     END IF;
  526.    
  527.     -- edc settlement
  528.     INSERT INTO tr_daily_cashbank
  529.     (session_id, tenant_id, cashbank_id, order_type_data,
  530.     doc_type_desc, doc_no, doc_date,
  531.     mode_payment, bank_payment, no_payment, date_payment,
  532.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  533.     partner_name)
  534.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  535.     f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  536.     B.mode_payment, B.bank_payment, A.doc_no, A.doc_date,
  537.     B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  538.     f_get_partner_name(A.partner_id)
  539.     FROM cb_in_out_cashbank A
  540.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  541.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  542.     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
  543.     WHERE A.tenant_id = pTenantId
  544.     AND B.cashbank_id = pCashbankId
  545.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  546.     AND A.status_doc = vStatusReleased
  547.     AND A.doc_type_id = vDocTypeEdcSettlement
  548.     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;
  549.    
  550.     -- Added by Citrahadi, 2015-10-01
  551.     -- follow up cash advance settlement
  552.     -- ref_amount minus artinya follow up dgn cashbank in
  553.     INSERT INTO tr_daily_cashbank
  554.     (session_id, tenant_id, cashbank_id, order_type_data,
  555.     doc_type_id, doc_type_desc, doc_no, doc_date,
  556.     mode_payment, bank_payment, no_payment, date_payment,
  557.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no,
  558.     ref_doc_date, partner_name)
  559.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  560.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  561.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  562.     CASE WHEN A.ref_amount < 0  THEN B.cashbank_amount ELSE (-1 * B.cashbank_amount) END, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no,
  563.     D.payment_doc_date, f_get_partner_name(A.partner_id) AS partner_name
  564.     FROM cb_in_out_cashbank A
  565.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  566.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  567.     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
  568.     WHERE A.tenant_id = pTenantId
  569.     AND B.cashbank_id = pCashbankId
  570.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  571.     AND A.status_doc = vStatusReleased
  572.     AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  573.     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,
  574.         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;
  575.    
  576.     /*
  577.      * ambil data transaksi penjualan pos dan return pos untuk cash payment
  578.      */
  579.     INSERT INTO tr_kartu_kas_by_doc_type
  580.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  581.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  582.     amount_debit, amount_credit)
  583.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  584.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  585.         SUM(B.conversion_amount), 0
  586.     FROM i_trx_pos A, i_trx_pos_cash_payment B, m_document C, m_cashbank D, m_cashbank_ou E
  587.     WHERE A.tenant_id = pTenantId AND
  588.         --A.ou_id = pOuId AND
  589.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  590.         A.doc_type_id IN (vDocTypePosShop, vDocTypePosShopInShop) AND
  591.         A.trx_pos_id = B.trx_pos_id AND
  592.         A.tenant_id = B.tenant_id AND
  593.         A.process_no = B.process_no AND
  594.         B.curr_payment_code = D.curr_code AND
  595.         D.flg_cash_bank = 'C' AND
  596.         D.cashbank_id = E.cashbank_id AND
  597.         A.ou_id = E.ou_id AND
  598.         A.doc_type_id = C.doc_type_id AND
  599.         D.cashbank_id = pCashbankId
  600.     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;
  601.  
  602.     INSERT INTO tr_kartu_kas_by_doc_type
  603.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  604.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  605.     amount_debit, amount_credit)
  606.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  607.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  608.         SUM(B.conversion_amount), 0
  609.     FROM i_trx_pos A, i_trx_pos_cash_payment B, m_document C, m_cashbank D, m_cashbank_ou E
  610.     WHERE A.tenant_id = pTenantId AND
  611.         --A.ou_id = pOuId AND
  612.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  613.         A.doc_type_id IN (vDocTypeReturnPosShop, vDocTypeReturnPosShopInShop) AND
  614.         A.trx_pos_id = B.trx_pos_id AND
  615.         A.tenant_id = B.tenant_id AND
  616.         A.process_no = B.process_no AND
  617.         B.curr_payment_code = D.curr_code AND
  618.         D.flg_cash_bank = 'C' AND
  619.         D.cashbank_id = E.cashbank_id AND
  620.         A.ou_id = E.ou_id AND
  621.         A.doc_type_id = C.doc_type_id AND
  622.         D.cashbank_id = pCashbankId
  623.     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;
  624.  
  625.     /*
  626.      * ambil data transaksi penjualan pos dan return pos untuk pengembalian cash
  627.      */
  628.     INSERT INTO tr_kartu_kas_by_doc_type
  629.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  630.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  631.     amount_debit, amount_credit)
  632.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  633.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  634.         0, SUM(A.total_refund)
  635.     FROM i_trx_pos A, m_document C, m_cashbank D, m_cashbank_ou E
  636.     WHERE A.tenant_id = pTenantId AND
  637.         --A.ou_id = pOuId AND
  638.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  639.         A.doc_type_id IN (vDocTypePosShop, vDocTypePosShopInShop) AND
  640.         A.curr_code = D.curr_code AND
  641.         D.flg_cash_bank = 'C' AND
  642.         D.cashbank_id = E.cashbank_id AND
  643.         A.ou_id = E.ou_id AND
  644.         A.doc_type_id = C.doc_type_id AND
  645.         D.cashbank_id = pCashbankId
  646.     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;
  647.  
  648.     INSERT INTO tr_kartu_kas_by_doc_type
  649.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  650.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  651.     amount_debit, amount_credit)
  652.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  653.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  654.         0, SUM(A.total_refund)
  655.     FROM i_trx_pos A, m_document C, m_cashbank D, m_cashbank_ou E
  656.     WHERE A.tenant_id = pTenantId AND
  657.         --A.ou_id = pOuId AND
  658.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  659.         A.doc_type_id IN (vDocTypeReturnPosShop, vDocTypeReturnPosShopInShop) AND
  660.         A.curr_code = D.curr_code AND
  661.         D.flg_cash_bank = 'C' AND
  662.         D.cashbank_id = E.cashbank_id AND
  663.         A.ou_id = E.ou_id AND
  664.         A.doc_type_id = C.doc_type_id AND
  665.         D.cashbank_id = pCashbankId
  666.     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;
  667.    
  668.     INSERT INTO tr_daily_cashbank
  669.         (session_id, tenant_id, cashbank_id, order_type_data,
  670.         doc_type_id, doc_type_desc, doc_no, doc_date,
  671.         mode_payment, bank_payment, no_payment, date_payment,
  672.         amount)
  673.     SELECT pSessionId, pTenantId, A.cashbank_id, 2,
  674.            A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  675.            'CASH', ' ', ' ', ' ',
  676.            SUM(A.amount_debit) - SUM(A.amount_credit)
  677.     FROM tr_kartu_kas_by_doc_type A
  678.     WHERE A.session_id = pSessionId
  679.     GROUP BY A.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date;
  680.    
  681.     INSERT INTO tr_daily_cashbank
  682.         (session_id, tenant_id, cashbank_id, order_type_data,
  683.         doc_type_id, doc_type_desc, doc_no, doc_date,
  684.         mode_payment, bank_payment, no_payment, date_payment,
  685.         amount)
  686.     SELECT pSessionId, pTenantId, A.cashbank_id, 2,
  687.            A.doc_type_id, f_get_doc_desc(A.doc_type_id), 'VOID ' || A.doc_no, A.doc_date,
  688.            'CASH', ' ', ' ', ' ',
  689.            -1 * (SUM(A.amount_debit) - SUM(A.amount_credit))
  690.     FROM tr_kartu_kas_by_doc_type A
  691.     WHERE A.session_id = pSessionId
  692.     AND EXISTS (SELECT 1 FROM i_trx_log_voided_pos B
  693.                     WHERE A.tenant_id = B.tenant_id AND
  694.                     A.doc_no = B.doc_no AND
  695.                     A.doc_date = B.doc_date AND
  696.                     A.ou_id = B.ou_id)
  697.     GROUP BY A.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date;
  698.  
  699.     SELECT COUNT(1) INTO vCount
  700.     FROM tr_daily_cashbank
  701.     WHERE session_id = pSessionId AND order_type_data = 1;
  702.  
  703.     IF vCount = 0 THEN
  704.         INSERT INTO tr_daily_cashbank
  705.         (session_id, tenant_id, cashbank_id, order_type_data,
  706.         doc_type_desc, doc_no, doc_date,
  707.         mode_payment, bank_payment, no_payment, date_payment,
  708.         amount)
  709.         SELECT pSessionId, pTenantId, pCashbankId, 1, 'Beginning Balance', 'Beginning Balance', pDateStart,
  710.         ' ', ' ', ' ', ' ',
  711.         0;
  712.     END IF;
  713.                    
  714.     Open pRefHeader FOR
  715.     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,
  716.            pDateStart AS date_trx, f_get_username(pUserId) AS username, pDatetime AS datetime,
  717.            pCashbankId AS cashbank_id, A.cashbank_code AS cashbank_code, A.cashbank_name AS cashbank_name,
  718.            A.bank_code AS bank_code, A.account_no AS account_no, A.account_name1 AS account_name1, A.account_name2 AS account_name2,
  719.            A.curr_code AS curr_code
  720.     FROM m_cashbank A WHERE A.cashbank_id = pCashBankId;
  721.            
  722.     RETURN NEXT pRefHeader;
  723.  
  724.     Open pRefDetail FOR
  725.     SELECT A.doc_type_desc AS doc_type_desc, A.doc_date AS doc_date, A.doc_no AS doc_no,
  726.            A.mode_payment AS mode_payment, A.bank_payment AS bank_payment,
  727.            A.ref_doc_date AS ref_doc_date, A.ref_doc_no AS ref_doc_no,
  728.            CASE WHEN (A.no_payment = '-') THEN '' ELSE A.no_payment END AS no_payment,
  729.            CASE WHEN (A.amount > 0 ) THEN A.amount ELSE 0 END AS debit,
  730.            CASE WHEN (A.amount < 0 ) THEN -1 * A.amount ELSE 0 END AS credit,
  731.            SUM(A.amount) OVER (ORDER BY A.order_type_data, A.doc_date, A.doc_no) AS amount,
  732.            A.remark, A.partner_name,
  733.            (CASE WHEN length(TRIM(A.remark)) = 0 THEN (CEIL(1/36.0))*21 ELSE (CEIL(length(TRIM(A.remark))/36.0))*21 END) AS height
  734.     FROM tr_daily_cashbank A
  735.     WHERE A.session_id = pSessionId
  736.     AND A.tenant_id = pTenantId
  737.     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
  738.     ORDER BY A.order_type_data, A.doc_date, A.doc_no;
  739.    
  740.     RETURN NEXT pRefDetail;
  741.    
  742.     DELETE FROM tr_daily_cashbank WHERE session_id = pSessionId;
  743.     DELETE FROM tr_kartu_kas_by_doc_type WHERE session_id = pSessionId;
  744.    
  745. END;
  746. $BODY$
  747.   LANGUAGE plpgsql VOLATILE
  748.   COST 100;
  749.   /
Add Comment
Please, Sign In to add comment