aadddrr

r_report_daily_cashbank_20170919_1

Sep 19th, 2017
50
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.             --ambil nilai untuk O/S CB trf
  222.             INSERT INTO tr_daily_cashbank
  223.             (session_id, tenant_id, cashbank_id, order_type_data,
  224.             doc_type_id, doc_type_desc, doc_no, doc_date,
  225.             mode_payment, bank_payment, no_payment, date_payment,
  226.             amount)
  227.             SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  228.             'Beginning Balance', 'Beginning Balance', pDateStart,
  229.             ' ', ' ', ' ', ' ',
  230.             SUM(-1 * A.transfer_amount)
  231.             FROM cb_transfer_cashbank A
  232.             WHERE A.tenant_id = pTenantId
  233.             AND A.cashbank_id = pCashbankId
  234.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  235.             AND A.doc_date >= vTglAwalCashbankBalance
  236.             AND A.doc_date < pDateStart
  237.             GROUP BY A.cashbank_id;
  238.            
  239.             INSERT INTO tr_daily_cashbank
  240.             (session_id, tenant_id, cashbank_id, order_type_data,
  241.             doc_type_id, doc_type_desc, doc_no, doc_date,
  242.             mode_payment, bank_payment, no_payment, date_payment,
  243.             amount)
  244.             SELECT pSessionId, pTenantId, A.cashbank_id, -1, -99,
  245.             'Beginning Balance', 'Beginning Balance', pDateStart,
  246.             ' ', ' ', ' ', ' ',
  247.             SUM(-1 * B.payment_amount)
  248.             FROM cb_transfer_cashbank A
  249.             RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  250.             WHERE A.tenant_id = pTenantId
  251.             AND A.cashbank_id = pCashbankId
  252.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  253.             AND A.doc_date >= vTglAwalCashbankBalance
  254.             AND A.doc_date < pDateStart
  255.             GROUP BY A.cashbank_id;
  256.            
  257.             --ambil nilai untuk O/S CB out
  258.             INSERT INTO tr_daily_cashbank
  259.             (session_id, tenant_id, cashbank_id, order_type_data,
  260.             doc_type_id, doc_type_desc, doc_no, doc_date,
  261.             mode_payment, bank_payment, no_payment, date_payment,
  262.             amount)
  263.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  264.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  265.             ' ', ' ', ' ', ' ',
  266.             SUM(-1 * B.cashbank_amount)
  267.             FROM cb_in_out_cashbank A
  268.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  269.             WHERE A.tenant_id = pTenantId
  270.             AND B.cashbank_id = pCashbankId
  271.             AND A.doc_date >= vTglAwalCashbankBalance
  272.             AND A.doc_date < pDateStart
  273.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  274.             AND A.doc_type_id = vDocTypeCashBankOut
  275.             GROUP BY B.cashbank_id;
  276.            
  277.             --ambil nilai untuk O/S FU CAS
  278.             INSERT INTO tr_daily_cashbank
  279.             (session_id, tenant_id, cashbank_id, order_type_data,
  280.             doc_type_id, doc_type_desc, doc_no, doc_date,
  281.             mode_payment, bank_payment, no_payment, date_payment,
  282.             amount)
  283.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  284.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  285.             ' ', ' ', ' ', ' ',
  286.             SUM(-1 * B.cashbank_amount)
  287.             FROM cb_in_out_cashbank A
  288.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  289.             WHERE A.tenant_id = pTenantId
  290.             AND B.cashbank_id = pCashbankId
  291.             AND A.doc_date >= vTglAwalCashbankBalance
  292.             AND A.doc_date < pDateStart
  293.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  294.             AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  295.             AND A.ref_amount > 0
  296.             GROUP BY B.cashbank_id;
  297.            
  298.         END IF;
  299.        
  300.         --Adrian, Sep 19, 2017, ambil nilai untuk O/S CB in
  301.         IF (pStatusDoc = vStatusApprovedDocAndOsCbIn)
  302.             OR (pStatusDoc = vAllStatusDoc) THEN
  303.    
  304.             --ambil nilai untuk O/S CB trf
  305.             INSERT INTO tr_daily_cashbank
  306.             (session_id, tenant_id, cashbank_id, order_type_data,
  307.             doc_type_id, doc_type_desc, doc_no, doc_date,
  308.             mode_payment, bank_payment, no_payment, date_payment,
  309.             amount)
  310.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  311.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  312.             ' ', ' ', ' ', ' ',
  313.             SUM(A.receive_amount)
  314.             FROM cb_transfer_cashbank_receive A
  315.             INNER JOIN cb_transfer_cashbank B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  316.             WHERE B.tenant_id = pTenantId
  317.             AND A.cashbank_to_id = pCashbankId
  318.             AND B.status_doc IN (vStatusDraft, vStatusInProgress)
  319.             AND B.doc_date >= vTglAwalCashbankBalance
  320.             AND B.doc_date < pDateStart
  321.             GROUP BY B.cashbank_id;
  322.            
  323.             --ambil nilai untuk O/S CB in AR
  324.             INSERT INTO tr_daily_cashbank
  325.             (session_id, tenant_id, cashbank_id, order_type_data,
  326.             doc_type_id, doc_type_desc, doc_no, doc_date,
  327.             mode_payment, bank_payment, no_payment, date_payment,
  328.             amount)
  329.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  330.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  331.             ' ', ' ', ' ', ' ',
  332.             SUM(B.cashbank_amount) - SUM(COALESCE(C.cost_amount, 0))
  333.             FROM cb_in_out_cashbank A
  334.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  335.             LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  336.             WHERE A.tenant_id = pTenantId
  337.             AND B.cashbank_id = pCashbankId
  338.             AND A.doc_date >= vTglAwalCashbankBalance
  339.             AND A.doc_date < pDateStart
  340.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  341.             AND A.doc_type_id = vDocTypeCashBankInAr
  342.             GROUP BY B.cashbank_id;
  343.            
  344.             --ambil nilai untuk O/S CB in other
  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 = vDocTypeCashBankInOther
  363.             GROUP BY B.cashbank_id;
  364.            
  365.             --ambil nilai untuk O/S EDC Settlement
  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)
  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.             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
  379.             WHERE A.tenant_id = pTenantId
  380.             AND B.cashbank_id = pCashbankId
  381.             AND A.doc_date >= vTglAwalCashbankBalance
  382.             AND A.doc_date < pDateStart
  383.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  384.             AND A.doc_type_id = vDocTypeEdcSettlement
  385.             GROUP BY B.cashbank_id;
  386.                    
  387.             --ambil nilai untuk O/S FU CAS
  388.             INSERT INTO tr_daily_cashbank
  389.             (session_id, tenant_id, cashbank_id, order_type_data,
  390.             doc_type_id, doc_type_desc, doc_no, doc_date,
  391.             mode_payment, bank_payment, no_payment, date_payment,
  392.             amount)
  393.             SELECT pSessionId, pTenantId, B.cashbank_id, -1,
  394.             -99, 'Beginning Balance', 'Beginning Balance', pDateStart,
  395.             ' ', ' ', ' ', ' ',
  396.             SUM(B.cashbank_amount)
  397.             FROM cb_in_out_cashbank A
  398.             INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  399.             WHERE A.tenant_id = pTenantId
  400.             AND B.cashbank_id = pCashbankId
  401.             AND A.doc_date >= vTglAwalCashbankBalance
  402.             AND A.doc_date < pDateStart
  403.             AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  404.             AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  405.             AND A.ref_amount < 0
  406.             GROUP BY B.cashbank_id;
  407.            
  408.         END IF;
  409.        
  410.         INSERT INTO tr_daily_cashbank
  411.         (session_id, tenant_id, cashbank_id, order_type_data,
  412.         doc_type_id, doc_type_desc, doc_no, doc_date,
  413.         mode_payment, bank_payment, no_payment, date_payment,
  414.         amount)
  415.         SELECT pSessionId, pTenantId, cashbank_id, 1,
  416.         doc_type_id, doc_type_desc, doc_no, doc_date,
  417.         mode_payment, bank_payment, no_payment, date_payment,
  418.         SUM(amount)
  419.         FROM tr_daily_cashbank
  420.         WHERE session_id = pSessionId
  421.         AND tenant_id = pTenantId
  422.         AND order_type_data = -1
  423.         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;
  424.        
  425.         DELETE FROM tr_daily_cashbank WHERE session_id = pSessionId AND order_type_data = -1;
  426.        
  427.     END IF;
  428.    
  429.     -- cb trf
  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, remark)
  435.     SELECT pSessionId, pTenantId, pCashbankId, 2,
  436.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  437.     A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  438.     -1 * A.transfer_amount, A.remark
  439.     FROM cb_transfer_cashbank A
  440.     WHERE A.tenant_id = pTenantId
  441.     AND A.cashbank_id = pCashbankId
  442.     AND A.status_doc = vStatusReleased
  443.     AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  444.    
  445.     /*
  446.      * PS, 27 Maret 2015
  447.      * update amount pada tr_daily_cashbank, dikurangi dengan cost_amount dari cb_transfer_cashbank_cost
  448.      * memakai RIGHT JOIN karena transaksi di cb_transfer_cashbank_cost bisa kosong untuk sebuah transfer cashbank
  449.      */
  450. --  UPDATE tr_daily_cashbank C
  451. --  SET amount = C.amount - B.cost_amount
  452. --  FROM cb_transfer_cashbank A
  453. --  RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id=B.transfer_cashbank_id
  454. --  WHERE A.tenant_id = pTenantId
  455. --  AND A.cashbank_id = pCashbankId
  456. --  AND A.status_doc = vStatusReleased
  457. --  AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  458.  
  459.     UPDATE tr_daily_cashbank C
  460.     SET amount = C.amount - B.payment_amount
  461.     FROM cb_transfer_cashbank A
  462.     RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id=B.transfer_cashbank_id
  463.     WHERE A.tenant_id = pTenantId
  464.     AND A.cashbank_id = pCashbankId
  465.     AND A.doc_no = C.doc_no
  466.     AND A.doc_date = C.doc_date
  467.     AND A.doc_type_id = C.doc_type_id
  468.     AND A.status_doc = vStatusReleased
  469.     AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  470.    
  471.     INSERT INTO tr_daily_cashbank
  472.     (session_id, tenant_id, cashbank_id, order_type_data,
  473.     doc_type_id, doc_type_desc, doc_no, doc_date,
  474.     mode_payment, bank_payment, no_payment, date_payment,
  475.     amount, remark)
  476.     SELECT pSessionId, pTenantId, pCashbankId, 2,
  477.     B.doc_type_id, f_get_doc_desc(B.doc_type_id), B.doc_no, B.doc_date,
  478.     A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  479.     A.receive_amount, A.remark
  480.     FROM cb_transfer_cashbank_receive A
  481.     INNER JOIN cb_transfer_cashbank B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  482.     WHERE B.tenant_id = pTenantId
  483.     AND A.cashbank_to_id = pCashbankId
  484.     AND B.status_doc = vStatusReleased
  485.     AND B.doc_date BETWEEN pDateStart AND pDateEnd;
  486.    
  487.     -- cash bank out
  488.     /* Note : WTC & TKP 24 Mei 2016
  489.      * tidak perlu join ke cb_in_out_cashbank_cost
  490.      * dan untuk join ke cb_trx_cashbank_balance langsung di inner join aja
  491.      */
  492.     INSERT INTO tr_daily_cashbank
  493.     (session_id, tenant_id, cashbank_id, order_type_data,
  494.     doc_type_id, doc_type_desc, doc_no, doc_date,
  495.     mode_payment, bank_payment, no_payment, date_payment,
  496.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  497.     partner_name)
  498.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  499.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  500.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  501.     (-1 * B.cashbank_amount), A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  502.     f_get_partner_name(A.partner_id) AS partner_name
  503.     FROM cb_in_out_cashbank A
  504.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  505.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  506.     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
  507.     WHERE A.tenant_id = pTenantId
  508.     AND B.cashbank_id = pCashbankId
  509.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  510.     AND A.status_doc = vStatusReleased
  511.     AND A.doc_type_id = vDocTypeCashBankOut
  512.     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;
  513.    
  514.     -- cash bank in AR
  515.     /* Note : WTC & TKP 24 Mei 2016
  516.      * tidak perlu join ke cb_trx_cashbank_balance
  517.      */
  518.     INSERT INTO tr_daily_cashbank
  519.     (session_id, tenant_id, cashbank_id, order_type_data,
  520.     doc_type_id, doc_type_desc, doc_no, doc_date,
  521.     mode_payment, bank_payment, no_payment, date_payment,
  522.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  523.     partner_name)
  524.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  525.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  526.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  527.     B.cashbank_amount - SUM(COALESCE(C.cost_amount, 0)),
  528.     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)
  529.     FROM cb_in_out_cashbank A
  530.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  531.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  532.     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
  533.     WHERE A.tenant_id = pTenantId
  534.     AND B.cashbank_id = pCashbankId
  535.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  536.     AND A.status_doc = vStatusReleased
  537.     AND A.doc_type_id = vDocTypeCashBankInAr
  538.     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;
  539.    
  540.     -- cash bank in other
  541.     /* Note : WTC & TKP 24 Mei 2016
  542.      * tidak perlu join ke cb_trx_cashbank_balance
  543.      *
  544.      * Note : Didit 24 Agustus 2016
  545.      * Perhitungkan juga dokumen yang statusnya void karena hasil konversi
  546.      */
  547.     INSERT INTO tr_daily_cashbank
  548.     (session_id, tenant_id, cashbank_id, order_type_data,
  549.     doc_type_id, doc_type_desc, doc_no, doc_date,
  550.     mode_payment, bank_payment, no_payment, date_payment,
  551.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  552.     partner_name)
  553.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  554.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  555.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  556.     B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  557.     f_get_partner_name(A.partner_id)
  558.     FROM cb_in_out_cashbank A
  559.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  560.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  561.     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
  562.     WHERE A.tenant_id = pTenantId
  563.     AND B.cashbank_id = pCashbankId
  564.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  565.     AND A.status_doc IN (vStatusReleased, vStatusVoid)
  566.     AND A.doc_type_id = vDocTypeCashBankInOther
  567.     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;
  568.    
  569.     -- edc settlement
  570.     INSERT INTO tr_daily_cashbank
  571.     (session_id, tenant_id, cashbank_id, order_type_data,
  572.     doc_type_desc, doc_no, doc_date,
  573.     mode_payment, bank_payment, no_payment, date_payment,
  574.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  575.     partner_name)
  576.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  577.     f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  578.     B.mode_payment, B.bank_payment, A.doc_no, A.doc_date,
  579.     B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  580.     f_get_partner_name(A.partner_id)
  581.     FROM cb_in_out_cashbank A
  582.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  583.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  584.     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
  585.     WHERE A.tenant_id = pTenantId
  586.     AND B.cashbank_id = pCashbankId
  587.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  588.     AND A.status_doc = vStatusReleased
  589.     AND A.doc_type_id = vDocTypeEdcSettlement
  590.     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;
  591.    
  592.     -- Added by Citrahadi, 2015-10-01
  593.     -- follow up cash advance settlement
  594.     -- ref_amount minus artinya follow up dgn cashbank in
  595.     INSERT INTO tr_daily_cashbank
  596.     (session_id, tenant_id, cashbank_id, order_type_data,
  597.     doc_type_id, doc_type_desc, doc_no, doc_date,
  598.     mode_payment, bank_payment, no_payment, date_payment,
  599.     amount, remark, ref_id, ref_doc_type_id, ref_doc_no,
  600.     ref_doc_date, partner_name)
  601.     SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  602.     A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  603.     B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  604.     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,
  605.     D.payment_doc_date, f_get_partner_name(A.partner_id) AS partner_name
  606.     FROM cb_in_out_cashbank A
  607.     INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  608.     LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  609.     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
  610.     WHERE A.tenant_id = pTenantId
  611.     AND B.cashbank_id = pCashbankId
  612.     AND A.doc_date BETWEEN pDateStart AND pDateEnd
  613.     AND A.status_doc = vStatusReleased
  614.     AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  615.     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,
  616.         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;
  617.    
  618.     --Adrian, Sep 19, 2017, O/S cash bank out
  619.     IF (pStatusDoc = vStatusApprovedDocAndOsCbOut)
  620.         OR (pStatusDoc = vAllStatusDoc) THEN
  621.        
  622.         -- O/S cb trf
  623.         INSERT INTO tr_daily_cashbank
  624.         (session_id, tenant_id, cashbank_id, order_type_data,
  625.         doc_type_id, doc_type_desc, doc_no, doc_date,
  626.         mode_payment, bank_payment, no_payment, date_payment,
  627.         amount, remark)
  628.         SELECT pSessionId, pTenantId, pCashbankId, 2,
  629.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  630.         A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  631.         -1 * A.transfer_amount, A.remark
  632.         FROM cb_transfer_cashbank A
  633.         WHERE A.tenant_id = pTenantId
  634.         AND A.cashbank_id = pCashbankId
  635.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  636.         AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  637.        
  638.         UPDATE tr_daily_cashbank C
  639.         SET amount = C.amount - B.payment_amount
  640.         FROM cb_transfer_cashbank A
  641.         RIGHT JOIN cb_transfer_cashbank_cost B ON A.transfer_cashbank_id=B.transfer_cashbank_id
  642.         WHERE A.tenant_id = pTenantId
  643.         AND A.cashbank_id = pCashbankId
  644.         AND A.doc_no = C.doc_no
  645.         AND A.doc_date = C.doc_date
  646.         AND A.doc_type_id = C.doc_type_id
  647.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  648.         AND A.doc_date BETWEEN pDateStart AND pDateEnd;
  649.        
  650.         --O/S cash bank out
  651.         INSERT INTO tr_daily_cashbank
  652.         (session_id, tenant_id, cashbank_id, order_type_data,
  653.         doc_type_id, doc_type_desc, doc_no, doc_date,
  654.         mode_payment, bank_payment, no_payment, date_payment,
  655.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  656.         partner_name)
  657.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  658.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  659.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  660.         (-1 * B.cashbank_amount), A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  661.         f_get_partner_name(A.partner_id) AS partner_name
  662.         FROM cb_in_out_cashbank A
  663.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  664.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  665.         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
  666.         WHERE A.tenant_id = pTenantId
  667.         AND B.cashbank_id = pCashbankId
  668.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  669.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  670.         AND A.doc_type_id = vDocTypeCashBankOut
  671.         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;
  672.        
  673.         --O/S follow up cash advance settlement
  674.         INSERT INTO tr_daily_cashbank
  675.         (session_id, tenant_id, cashbank_id, order_type_data,
  676.         doc_type_id, doc_type_desc, doc_no, doc_date,
  677.         mode_payment, bank_payment, no_payment, date_payment,
  678.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no,
  679.         ref_doc_date, partner_name)
  680.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  681.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  682.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  683.         (-1 * B.cashbank_amount), A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no,
  684.         D.payment_doc_date, f_get_partner_name(A.partner_id) AS partner_name
  685.         FROM cb_in_out_cashbank A
  686.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  687.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  688.         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
  689.         WHERE A.tenant_id = pTenantId
  690.         AND B.cashbank_id = pCashbankId
  691.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  692.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  693.         AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  694.         AND A.ref_amount > 0
  695.         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,
  696.             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;
  697.        
  698.     END IF;
  699.    
  700.     --Adrian, Sep 19, 2017, O/S cash bank in
  701.     IF (pStatusDoc = vStatusApprovedDocAndOsCbIn)
  702.         OR (pStatusDoc = vAllStatusDoc) THEN
  703.        
  704.         --O/S cb trf
  705.         INSERT INTO tr_daily_cashbank
  706.         (session_id, tenant_id, cashbank_id, order_type_data,
  707.         doc_type_id, doc_type_desc, doc_no, doc_date,
  708.         mode_payment, bank_payment, no_payment, date_payment,
  709.         amount, remark)
  710.         SELECT pSessionId, pTenantId, pCashbankId, 2,
  711.         B.doc_type_id, f_get_doc_desc(B.doc_type_id), B.doc_no, B.doc_date,
  712.         A.mode_payment, A.bank_payment, A.no_payment, A.date_payment,
  713.         A.receive_amount, A.remark
  714.         FROM cb_transfer_cashbank_receive A
  715.         INNER JOIN cb_transfer_cashbank B ON A.transfer_cashbank_id = B.transfer_cashbank_id
  716.         WHERE B.tenant_id = pTenantId
  717.         AND A.cashbank_to_id = pCashbankId
  718.         AND B.status_doc IN (vStatusDraft, vStatusInProgress)
  719.         AND B.doc_date BETWEEN pDateStart AND pDateEnd;
  720.        
  721.         --O/S cash bank in AR
  722.         INSERT INTO tr_daily_cashbank
  723.         (session_id, tenant_id, cashbank_id, order_type_data,
  724.         doc_type_id, doc_type_desc, doc_no, doc_date,
  725.         mode_payment, bank_payment, no_payment, date_payment,
  726.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  727.         partner_name)
  728.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  729.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  730.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  731.         B.cashbank_amount - SUM(COALESCE(C.cost_amount, 0)),
  732.         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)
  733.         FROM cb_in_out_cashbank A
  734.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  735.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  736.         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
  737.         WHERE A.tenant_id = pTenantId
  738.         AND B.cashbank_id = pCashbankId
  739.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  740.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  741.         AND A.doc_type_id = vDocTypeCashBankInAr
  742.         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;
  743.        
  744.         --O/S cash bank in other
  745.         INSERT INTO tr_daily_cashbank
  746.         (session_id, tenant_id, cashbank_id, order_type_data,
  747.         doc_type_id, doc_type_desc, doc_no, doc_date,
  748.         mode_payment, bank_payment, no_payment, date_payment,
  749.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  750.         partner_name)
  751.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  752.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  753.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  754.         B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  755.         f_get_partner_name(A.partner_id)
  756.         FROM cb_in_out_cashbank A
  757.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  758.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  759.         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
  760.         WHERE A.tenant_id = pTenantId
  761.         AND B.cashbank_id = pCashbankId
  762.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  763.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  764.         AND A.doc_type_id = vDocTypeCashBankInOther
  765.         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;
  766.        
  767.         -- edc settlement
  768.         INSERT INTO tr_daily_cashbank
  769.         (session_id, tenant_id, cashbank_id, order_type_data,
  770.         doc_type_desc, doc_no, doc_date,
  771.         mode_payment, bank_payment, no_payment, date_payment,
  772.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no, ref_doc_date,
  773.         partner_name)
  774.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  775.         f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  776.         B.mode_payment, B.bank_payment, A.doc_no, A.doc_date,
  777.         B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no, D.payment_doc_date,
  778.         f_get_partner_name(A.partner_id)
  779.         FROM cb_in_out_cashbank A
  780.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  781.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  782.         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
  783.         WHERE A.tenant_id = pTenantId
  784.         AND B.cashbank_id = pCashbankId
  785.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  786.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  787.         AND A.doc_type_id = vDocTypeEdcSettlement
  788.         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;
  789.        
  790.         --O/S follow up cash advance settlement
  791.         INSERT INTO tr_daily_cashbank
  792.         (session_id, tenant_id, cashbank_id, order_type_data,
  793.         doc_type_id, doc_type_desc, doc_no, doc_date,
  794.         mode_payment, bank_payment, no_payment, date_payment,
  795.         amount, remark, ref_id, ref_doc_type_id, ref_doc_no,
  796.         ref_doc_date, partner_name)
  797.         SELECT pSessionId, pTenantId, B.cashbank_id, 2,
  798.         A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  799.         B.mode_payment, B.bank_payment, B.no_payment, B.date_payment,
  800.         B.cashbank_amount, A.remark, A.ref_id, A.ref_doc_type_id, D.payment_doc_no,
  801.         D.payment_doc_date, f_get_partner_name(A.partner_id) AS partner_name
  802.         FROM cb_in_out_cashbank A
  803.         INNER JOIN cb_in_out_cashbank_payment B ON A.in_out_cashbank_id = B.in_out_cashbank_id
  804.         LEFT OUTER JOIN cb_in_out_cashbank_cost C ON A.in_out_cashbank_id = C.in_out_cashbank_id
  805.         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
  806.         WHERE A.tenant_id = pTenantId
  807.         AND B.cashbank_id = pCashbankId
  808.         AND A.doc_date BETWEEN pDateStart AND pDateEnd
  809.         AND A.status_doc IN (vStatusDraft, vStatusInProgress)
  810.         AND A.doc_type_id = vDocTypeFollowUpCashAdvanceSettlement
  811.         AND A.ref_amount < 0
  812.         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,
  813.             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;
  814.        
  815.     END IF;
  816.        
  817.     /*
  818.      * ambil data transaksi penjualan pos dan return pos untuk cash payment
  819.      */
  820.     INSERT INTO tr_kartu_kas_by_doc_type
  821.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  822.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  823.     amount_debit, amount_credit)
  824.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  825.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  826.         SUM(B.conversion_amount), 0
  827.     FROM i_trx_pos A, i_trx_pos_cash_payment B, m_document C, m_cashbank D, m_cashbank_ou E
  828.     WHERE A.tenant_id = pTenantId AND
  829.         --A.ou_id = pOuId AND
  830.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  831.         A.doc_type_id IN (vDocTypePosShop, vDocTypePosShopInShop) AND
  832.         A.trx_pos_id = B.trx_pos_id AND
  833.         A.tenant_id = B.tenant_id AND
  834.         A.process_no = B.process_no AND
  835.         B.curr_payment_code = D.curr_code AND
  836.         D.flg_cash_bank = 'C' AND
  837.         D.cashbank_id = E.cashbank_id AND
  838.         A.ou_id = E.ou_id AND
  839.         A.doc_type_id = C.doc_type_id AND
  840.         D.cashbank_id = pCashbankId
  841.     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;
  842.  
  843.     INSERT INTO tr_kartu_kas_by_doc_type
  844.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  845.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  846.     amount_debit, amount_credit)
  847.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  848.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  849.         SUM(B.conversion_amount), 0
  850.     FROM i_trx_pos A, i_trx_pos_cash_payment B, m_document C, m_cashbank D, m_cashbank_ou E
  851.     WHERE A.tenant_id = pTenantId AND
  852.         --A.ou_id = pOuId AND
  853.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  854.         A.doc_type_id IN (vDocTypeReturnPosShop, vDocTypeReturnPosShopInShop) AND
  855.         A.trx_pos_id = B.trx_pos_id AND
  856.         A.tenant_id = B.tenant_id AND
  857.         A.process_no = B.process_no AND
  858.         B.curr_payment_code = D.curr_code AND
  859.         D.flg_cash_bank = 'C' AND
  860.         D.cashbank_id = E.cashbank_id AND
  861.         A.ou_id = E.ou_id AND
  862.         A.doc_type_id = C.doc_type_id AND
  863.         D.cashbank_id = pCashbankId
  864.     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;
  865.  
  866.     /*
  867.      * ambil data transaksi penjualan pos dan return pos untuk pengembalian cash
  868.      */
  869.     INSERT INTO tr_kartu_kas_by_doc_type
  870.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  871.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  872.     amount_debit, amount_credit)
  873.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  874.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  875.         0, SUM(A.total_refund)
  876.     FROM i_trx_pos A, m_document C, m_cashbank D, m_cashbank_ou E
  877.     WHERE A.tenant_id = pTenantId AND
  878.         --A.ou_id = pOuId AND
  879.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  880.         A.doc_type_id IN (vDocTypePosShop, vDocTypePosShopInShop) AND
  881.         A.curr_code = D.curr_code AND
  882.         D.flg_cash_bank = 'C' AND
  883.         D.cashbank_id = E.cashbank_id AND
  884.         A.ou_id = E.ou_id AND
  885.         A.doc_type_id = C.doc_type_id AND
  886.         D.cashbank_id = pCashbankId
  887.     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;
  888.  
  889.     INSERT INTO tr_kartu_kas_by_doc_type
  890.     (session_id, sort_no, tenant_id, ou_id, doc_type_id, doc_desc, ref_id,
  891.     doc_no, doc_date, partner_id, cashbank_id, cashbank_target_id, curr_code,
  892.     amount_debit, amount_credit)
  893.     SELECT pSessionId, 2, A.tenant_id, A.ou_id, A.doc_type_id, C.doc_desc, A.trx_pos_id,
  894.         A.doc_no, A.doc_date, A.partner_id, D.cashbank_id, D.cashbank_id, D.curr_code,
  895.         0, SUM(A.total_refund)
  896.     FROM i_trx_pos A, m_document C, m_cashbank D, m_cashbank_ou E
  897.     WHERE A.tenant_id = pTenantId AND
  898.         --A.ou_id = pOuId AND
  899.         A.doc_date BETWEEN pDateStart AND pDateEnd AND
  900.         A.doc_type_id IN (vDocTypeReturnPosShop, vDocTypeReturnPosShopInShop) AND
  901.         A.curr_code = D.curr_code AND
  902.         D.flg_cash_bank = 'C' AND
  903.         D.cashbank_id = E.cashbank_id AND
  904.         A.ou_id = E.ou_id AND
  905.         A.doc_type_id = C.doc_type_id AND
  906.         D.cashbank_id = pCashbankId
  907.     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;
  908.    
  909.     INSERT INTO tr_daily_cashbank
  910.         (session_id, tenant_id, cashbank_id, order_type_data,
  911.         doc_type_id, doc_type_desc, doc_no, doc_date,
  912.         mode_payment, bank_payment, no_payment, date_payment,
  913.         amount)
  914.     SELECT pSessionId, pTenantId, A.cashbank_id, 2,
  915.            A.doc_type_id, f_get_doc_desc(A.doc_type_id), A.doc_no, A.doc_date,
  916.            'CASH', ' ', ' ', ' ',
  917.            SUM(A.amount_debit) - SUM(A.amount_credit)
  918.     FROM tr_kartu_kas_by_doc_type A
  919.     WHERE A.session_id = pSessionId
  920.     GROUP BY A.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date;
  921.    
  922.     INSERT INTO tr_daily_cashbank
  923.         (session_id, tenant_id, cashbank_id, order_type_data,
  924.         doc_type_id, doc_type_desc, doc_no, doc_date,
  925.         mode_payment, bank_payment, no_payment, date_payment,
  926.         amount)
  927.     SELECT pSessionId, pTenantId, A.cashbank_id, 2,
  928.            A.doc_type_id, f_get_doc_desc(A.doc_type_id), 'VOID ' || A.doc_no, A.doc_date,
  929.            'CASH', ' ', ' ', ' ',
  930.            -1 * (SUM(A.amount_debit) - SUM(A.amount_credit))
  931.     FROM tr_kartu_kas_by_doc_type A
  932.     WHERE A.session_id = pSessionId
  933.     AND EXISTS (SELECT 1 FROM i_trx_log_voided_pos B
  934.                     WHERE A.tenant_id = B.tenant_id AND
  935.                     A.doc_no = B.doc_no AND
  936.                     A.doc_date = B.doc_date AND
  937.                     A.ou_id = B.ou_id)
  938.     GROUP BY A.cashbank_id, A.doc_type_id, A.doc_no, A.doc_date;
  939.  
  940.     SELECT COUNT(1) INTO vCount
  941.     FROM tr_daily_cashbank
  942.     WHERE session_id = pSessionId AND order_type_data = 1;
  943.  
  944.     IF vCount = 0 THEN
  945.         INSERT INTO tr_daily_cashbank
  946.         (session_id, tenant_id, cashbank_id, order_type_data,
  947.         doc_type_desc, doc_no, doc_date,
  948.         mode_payment, bank_payment, no_payment, date_payment,
  949.         amount)
  950.         SELECT pSessionId, pTenantId, pCashbankId, 1, 'Beginning Balance', 'Beginning Balance', pDateStart,
  951.         ' ', ' ', ' ', ' ',
  952.         0;
  953.     END IF;
  954.                    
  955.     Open pRefHeader FOR
  956.     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,
  957.            pDateStart AS date_trx, f_get_username(pUserId) AS username, pDatetime AS datetime,
  958.            pCashbankId AS cashbank_id, A.cashbank_code AS cashbank_code, A.cashbank_name AS cashbank_name,
  959.            A.bank_code AS bank_code, A.account_no AS account_no, A.account_name1 AS account_name1, A.account_name2 AS account_name2,
  960.            A.curr_code AS curr_code
  961.     FROM m_cashbank A WHERE A.cashbank_id = pCashBankId;
  962.            
  963.     RETURN NEXT pRefHeader;
  964.  
  965.     Open pRefDetail FOR
  966.     SELECT A.doc_type_desc AS doc_type_desc, A.doc_date AS doc_date, A.doc_no AS doc_no,
  967.            A.mode_payment AS mode_payment, A.bank_payment AS bank_payment,
  968.            A.ref_doc_date AS ref_doc_date, A.ref_doc_no AS ref_doc_no,
  969.            CASE WHEN (A.no_payment = '-') THEN '' ELSE A.no_payment END AS no_payment,
  970.            CASE WHEN (A.amount > 0 ) THEN A.amount ELSE 0 END AS debit,
  971.            CASE WHEN (A.amount < 0 ) THEN -1 * A.amount ELSE 0 END AS credit,
  972.            SUM(A.amount) OVER (ORDER BY A.order_type_data, A.doc_date, A.doc_no) AS amount,
  973.            A.remark, A.partner_name,
  974.            (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
  975.     FROM tr_daily_cashbank A
  976.     WHERE A.session_id = pSessionId
  977.     AND A.tenant_id = pTenantId
  978.     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
  979.     ORDER BY A.order_type_data, A.doc_date, A.doc_no;
  980.    
  981.     RETURN NEXT pRefDetail;
  982.    
  983.     DELETE FROM tr_daily_cashbank WHERE session_id = pSessionId;
  984.     DELETE FROM tr_kartu_kas_by_doc_type WHERE session_id = pSessionId;
  985.    
  986. END;
  987. $BODY$
  988.   LANGUAGE plpgsql VOLATILE
  989.   COST 100;
  990.   /
Add Comment
Please, Sign In to add comment