Advertisement
aadddrr

r_inventory_summary_mutation_monthly_by_product_code_periode

May 13th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Function: r_inventory_summary_mutation_monthly_by_product_code_periode(character varying, bigint, bigint, bigint, character varying, bigint, character varying, character varying, character varying)
  2.  
  3. -- DROP FUNCTION r_inventory_summary_mutation_monthly_by_product_code_periode(character varying, bigint, bigint, bigint, character varying, bigint, character varying, character varying, character varying);
  4.  
  5. CREATE OR REPLACE FUNCTION r_inventory_summary_mutation_monthly_by_product_code_periode(character varying, bigint, bigint, bigint, character varying, 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.     pYearMonthFrom              ALIAS FOR $7;
  18.     pYearMonthTo                ALIAS FOR $8;
  19.     pCodeProduct                ALIAS FOR $9;
  20.    
  21.     vDefaultDocTypeId                       integer := -99;
  22.     vDocTypeIdGr                            integer := 111;
  23.     vDocTypeIdDo                            integer := 311;
  24.     vDocTypeIdDoReceipt                     integer := 526;
  25.     vDocTypeIdRn                            integer := 502;
  26.     vDocTypeidAsq                           integer := 521;
  27.     vDocTypeIdAsa                           integer := 522;
  28.     vDocTypeIdClaimNote                     integer := 511;
  29.     vDocTypeIdCostingAllocationToProduct    integer := 528;
  30.     vEmptyString                character varying := '';
  31.    
  32.     vGroupCoaPersediaanId               integer := 13;
  33.     vGroupCoaPersediaanIdTenant11       integer := 1113;
  34.     vEmptyId                            integer := -99;
  35.     vSignJournalCredit                  character varying := 'C';
  36.     vSignJournalDebit                   character varying := 'D';
  37.    
  38. BEGIN
  39.    
  40.     -- SUM for stock_awal
  41.     INSERT INTO tt_mutasi_nilai_persediaan(
  42.             session_id,year_month,stock_awal,product_id,ctgr_product_id,sub_ctgr_product_id,
  43.             qty_stock_awal)
  44.             SELECT pSessionId,A.date_year_month,SUM(gl_amount),A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id,
  45.             sum(A.qty)
  46.             FROM in_summary_monthly_amount A
  47.             INNER JOIN m_product B USING (product_id)
  48.             WHERE A.tenant_id = pTenantId
  49.             AND A.ou_bu_id = pOuId
  50.             AND A.date_year_month = pYearMonthFrom
  51.             AND A.doc_type_id = vDefaultDocTypeId
  52.             GROUP BY A.date_year_month,A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id;
  53.            
  54.     -- SUM for stock_awal: Journal Voucher Debt
  55.     INSERT INTO tt_mutasi_nilai_persediaan(
  56.             session_id,year_month,stock_awal,product_id,ctgr_product_id,sub_ctgr_product_id,journal_trx_id,coa_id,
  57.             qty_stock_awal)
  58.             SELECT pSessionId,SUBSTRING(B.doc_date, 1, 6),SUM(gl_amount),vEmptyId,vEmptyId,vEmptyId,A.journal_trx_id,A.coa_id,
  59.             sum(A.qty)
  60.             FROM vw_gl_journal_trx_details A
  61.             INNER JOIN gl_journal_trx B ON A.journal_trx_id = B.journal_trx_id
  62.             INNER JOIN m_coa C ON A.coa_id = C.coa_id
  63.             WHERE A.tenant_id = pTenantId
  64.             AND B.ou_bu_id = pOuId
  65.             AND SUBSTRING(B.doc_date, 1, 6) < pYearMonthFrom
  66.             AND B.doc_type_id NOT IN (
  67.                 vDefaultDocTypeId, vDocTypeIdGr, vDocTypeIdDo,
  68.                 vDocTypeIdDoReceipt, vDocTypeIdRn, vDocTypeidAsq,
  69.                 vDocTypeIdAsa, vDocTypeIdClaimNote, vDocTypeIdCostingAllocationToProduct  
  70.             )
  71.             AND C.group_coa_id IN (vGroupCoaPersediaanId, vGroupCoaPersediaanIdTenant11)
  72.             AND A.sign_journal = vSignJournalDebit
  73.             GROUP BY SUBSTRING(B.doc_date, 1, 6),A.journal_trx_id,A.coa_id;
  74.            
  75.     -- SUM for stock_awal: Journal Voucher Credit
  76.     INSERT INTO tt_mutasi_nilai_persediaan(
  77.             session_id,year_month,stock_awal,product_id,ctgr_product_id,sub_ctgr_product_id,journal_trx_id,coa_id,
  78.             qty_stock_awal)
  79.             SELECT pSessionId,SUBSTRING(B.doc_date, 1, 6),SUM(gl_amount) * -1,vEmptyId,vEmptyId,vEmptyId,A.journal_trx_id,A.coa_id,
  80.             sum(A.qty)
  81.             FROM vw_gl_journal_trx_details A
  82.             INNER JOIN gl_journal_trx B ON A.journal_trx_id = B.journal_trx_id
  83.             INNER JOIN m_coa C ON A.coa_id = C.coa_id
  84.             WHERE A.tenant_id = pTenantId
  85.             AND B.ou_bu_id = pOuId
  86.             AND SUBSTRING(B.doc_date, 1, 6) < pYearMonthFrom
  87.             AND B.doc_type_id NOT IN (
  88.                 vDefaultDocTypeId, vDocTypeIdGr, vDocTypeIdDo,
  89.                 vDocTypeIdDoReceipt, vDocTypeIdRn, vDocTypeidAsq,
  90.                 vDocTypeIdAsa, vDocTypeIdClaimNote, vDocTypeIdCostingAllocationToProduct
  91.             )
  92.             AND C.group_coa_id IN (vGroupCoaPersediaanId, vGroupCoaPersediaanIdTenant11)
  93.             AND A.sign_journal = vSignJournalCredit
  94.             GROUP BY SUBSTRING(B.doc_date, 1, 6),A.journal_trx_id,A.coa_id;
  95.  
  96.     -- SUM for stock_receipt
  97.     INSERT INTO tt_mutasi_nilai_persediaan(
  98.             session_id,year_month,stock_receipt,product_id,ctgr_product_id,sub_ctgr_product_id,
  99.             qty_stock_receipt)
  100.             SELECT pSessionId,A.date_year_month,SUM(gl_amount),A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id,
  101.             sum(A.qty)
  102.             FROM in_summary_monthly_amount A
  103.             INNER JOIN m_product B USING (product_id)
  104.             WHERE A.tenant_id = pTenantId
  105.             AND A.ou_bu_id = pOuId
  106.             AND A.date_year_month BETWEEN pYearMonthFrom AND pYearMonthTo
  107.             AND A.doc_type_id = vDocTypeIdGr
  108.             GROUP BY A.date_year_month,A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id;       
  109.  
  110.     -- SUM for stock_sales
  111.     INSERT INTO tt_mutasi_nilai_persediaan(
  112.             session_id,year_month,stock_sales,product_id,ctgr_product_id,sub_ctgr_product_id,
  113.             qty_stock_sales)
  114.             SELECT pSessionId,A.date_year_month,(SUM(gl_amount) * -1),A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id,
  115.             sum(A.qty) * -1
  116.             FROM in_summary_monthly_amount A
  117.             INNER JOIN m_product B USING (product_id)
  118.             WHERE A.tenant_id = pTenantId
  119.             AND A.ou_bu_id = pOuId
  120.             AND A.date_year_month BETWEEN pYearMonthFrom AND pYearMonthTo
  121.             AND A.doc_type_id IN ( vDocTypeIdDo, vDocTypeIdDoReceipt )
  122.             GROUP BY A.date_year_month,A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id;       
  123.  
  124.     -- SUM for stock_return_sales
  125.     INSERT INTO tt_mutasi_nilai_persediaan(
  126.             session_id,year_month,stock_return_sales,product_id,ctgr_product_id,sub_ctgr_product_id,
  127.             qty_stock_return_sales)
  128.             SELECT pSessionId,A.date_year_month,SUM(gl_amount),A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id,
  129.             sum(A.qty)
  130.             FROM in_summary_monthly_amount A
  131.             INNER JOIN m_product B USING (product_id)
  132.             WHERE A.tenant_id = pTenantId
  133.             AND A.ou_bu_id = pOuId
  134.             AND A.date_year_month BETWEEN pYearMonthFrom AND pYearMonthTo
  135.             AND A.doc_type_id = vDocTypeIdRn
  136.             GROUP BY A.date_year_month,A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id;       
  137.  
  138.     -- SUM for stock_adj_qty
  139.     INSERT INTO tt_mutasi_nilai_persediaan(
  140.             session_id,year_month,stock_adj_qty,product_id,ctgr_product_id,sub_ctgr_product_id,
  141.             qty_stock_adj_qty)
  142.             SELECT pSessionId,A.date_year_month,SUM(gl_amount),A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id,
  143.             sum(A.qty)
  144.             FROM in_summary_monthly_amount A
  145.             INNER JOIN m_product B USING (product_id)
  146.             WHERE A.tenant_id = pTenantId
  147.             AND A.ou_bu_id = pOuId
  148.             AND A.date_year_month BETWEEN pYearMonthFrom AND pYearMonthTo
  149.             AND A.doc_type_id = vDocTypeidAsq
  150.             GROUP BY A.date_year_month,A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id;       
  151.  
  152.     -- SUM for stock_adj_amount
  153.     INSERT INTO tt_mutasi_nilai_persediaan(
  154.             session_id,year_month,stock_adj_amount,product_id,ctgr_product_id,sub_ctgr_product_id,
  155.             qty_stock_adj_amount)
  156.             SELECT pSessionId,A.date_year_month,SUM(gl_amount),A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id,
  157.             sum(A.qty)
  158.             FROM in_summary_monthly_amount A
  159.             INNER JOIN m_product B USING (product_id)
  160.             WHERE A.tenant_id = pTenantId
  161.             AND A.ou_bu_id = pOuId
  162.             AND A.date_year_month BETWEEN pYearMonthFrom AND pYearMonthTo
  163.             AND A.doc_type_id IN (vDocTypeIdAsa, vDocTypeIdCostingAllocationToProduct)
  164.             GROUP BY A.date_year_month,A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id;
  165.    
  166.     -- SUM for stock_claim_note
  167.     INSERT INTO tt_mutasi_nilai_persediaan(
  168.             session_id, year_month, stock_claim_note, product_id, ctgr_product_id, sub_ctgr_product_id,
  169.             qty_stock_claim_note)
  170.             SELECT pSessionId, A.date_year_month, SUM(gl_amount) * -1, A.product_id, B.ctgr_product_id, B.sub_ctgr_product_id,
  171.             sum(A.qty)* -1
  172.             FROM in_summary_monthly_amount A
  173.             INNER JOIN m_product B USING (product_id)
  174.             WHERE A.tenant_id = pTenantId
  175.             AND A.ou_bu_id = pOuId
  176.             AND A.date_year_month BETWEEN pYearMonthFrom AND pYearMonthTo
  177.             AND A.doc_type_id = vDocTypeIdClaimNote
  178.             GROUP BY A.date_year_month,A.product_id,B.ctgr_product_id,B.sub_ctgr_product_id;
  179.            
  180.     -- SUM for Journal Voucher Persediaan Debit
  181.     INSERT INTO tt_mutasi_nilai_persediaan(
  182.             session_id,year_month,stock_adj_amount,product_id,ctgr_product_id,sub_ctgr_product_id,journal_trx_id,coa_id,
  183.             qty_stock_adj_amount)
  184.             SELECT pSessionId,SUBSTRING(B.doc_date, 1, 6),SUM(gl_amount),vEmptyId,vEmptyId,vEmptyId,A.journal_trx_id,A.coa_id,
  185.             sum(A.qty)
  186.             FROM vw_gl_journal_trx_details A
  187.             INNER JOIN gl_journal_trx B ON A.journal_trx_id = B.journal_trx_id
  188.             INNER JOIN m_coa C ON A.coa_id = C.coa_id
  189.             WHERE A.tenant_id = pTenantId
  190.             AND B.ou_bu_id = pOuId
  191.             AND SUBSTRING(B.doc_date, 1, 6) BETWEEN pYearMonthFrom AND pYearMonthTo
  192.             AND B.doc_type_id NOT IN (
  193.                 vDefaultDocTypeId, vDocTypeIdGr, vDocTypeIdDo,
  194.                 vDocTypeIdDoReceipt, vDocTypeIdRn, vDocTypeidAsq,
  195.                 vDocTypeIdAsa, vDocTypeIdClaimNote, vDocTypeIdCostingAllocationToProduct  
  196.             )
  197.             AND C.group_coa_id IN (vGroupCoaPersediaanId, vGroupCoaPersediaanIdTenant11)
  198.             AND A.sign_journal = vSignJournalDebit
  199.             GROUP BY SUBSTRING(B.doc_date, 1, 6),A.journal_trx_id,A.coa_id;
  200.            
  201.     -- SUM for Journal Voucher Persediaan Credit
  202.     INSERT INTO tt_mutasi_nilai_persediaan(
  203.             session_id,year_month,stock_adj_amount,product_id,ctgr_product_id,sub_ctgr_product_id,journal_trx_id,coa_id,
  204.             qty_stock_adj_amount)
  205.             SELECT pSessionId,SUBSTRING(B.doc_date, 1, 6),SUM(gl_amount) * -1,vEmptyId,vEmptyId,vEmptyId,A.journal_trx_id,A.coa_id,
  206.             sum(A.qty)
  207.             FROM vw_gl_journal_trx_details A
  208.             INNER JOIN gl_journal_trx B ON A.journal_trx_id = B.journal_trx_id
  209.             INNER JOIN m_coa C ON A.coa_id = C.coa_id
  210.             WHERE A.tenant_id = pTenantId
  211.             AND B.ou_bu_id = pOuId
  212.             AND SUBSTRING(B.doc_date, 1, 6) BETWEEN pYearMonthFrom AND pYearMonthTo
  213.             AND B.doc_type_id NOT IN (
  214.                 vDefaultDocTypeId, vDocTypeIdGr, vDocTypeIdDo,
  215.                 vDocTypeIdDoReceipt, vDocTypeIdRn, vDocTypeidAsq,
  216.                 vDocTypeIdAsa, vDocTypeIdClaimNote, vDocTypeIdCostingAllocationToProduct
  217.             )
  218.             AND C.group_coa_id IN (vGroupCoaPersediaanId, vGroupCoaPersediaanIdTenant11)
  219.             AND A.sign_journal = vSignJournalCredit
  220.             GROUP BY SUBSTRING(B.doc_date, 1, 6),A.journal_trx_id,A.coa_id;
  221.  
  222.     OPEN pRefHeader FOR
  223.         SELECT  f_get_ou_name(pOuId) AS ou_name, pYearMonthFrom AS year_month_from, pYearMonthTo AS year_month_to,
  224.                 f_get_username(pUserId) AS username, f_get_role_name(pRoleId) AS role_name, pDatetime AS datetime;
  225.     RETURN NEXT pRefHeader;
  226.  
  227.    
  228.     OPEN pRefDetail FOR
  229.         SELECT C.*
  230.         FROM (
  231.             SELECT A.session_id, B.doc_no AS ctgr_product_name,
  232.                 f_get_coa_desc(A.coa_id) AS sub_ctgr_product_name,
  233.                 vEmptyString AS product_code,
  234.                 vEmptyString AS product_name,  
  235.                 SUM(A.qty_stock_awal) AS qty_stock_awal,
  236.                 SUM(A.stock_awal) AS stock_awal,
  237.                 SUM(A.qty_stock_receipt) AS qty_stock_receipt,
  238.                 SUM(A.stock_receipt) AS stock_receipt,
  239.                 SUM(A.qty_stock_claim_note) AS qty_stock_claim_note,
  240.                 SUM(A.stock_claim_note) AS stock_claim_note,
  241.                 SUM(A.qty_stock_sales) AS qty_stock_sales,
  242.                 SUM(A.stock_sales) AS stock_sales,
  243.                 SUM(A.qty_stock_return_sales) AS qty_stock_return_sales,
  244.                 SUM(A.stock_return_sales) AS stock_return_sales,
  245.                 SUM(A.qty_stock_adj_qty) AS qty_stock_adj_qty,
  246.                 SUM(A.stock_adj_qty) AS stock_adj_qty,
  247.                 SUM(A.qty_stock_adj_amount) AS qty_stock_adj_amount,
  248.                 SUM(A.stock_adj_amount) AS stock_adj_amount,
  249.                 SUM( A.qty_stock_awal + qty_stock_receipt - qty_stock_sales + qty_stock_return_sales + qty_stock_adj_qty + qty_stock_adj_amount - qty_stock_claim_note )
  250.                   AS qty_stock_akhir,
  251.                 SUM( A.stock_awal + stock_receipt - stock_sales + stock_return_sales + stock_adj_qty + stock_adj_amount - stock_claim_note )
  252.                   AS stock_akhir
  253.             FROM tt_mutasi_nilai_persediaan A
  254.             INNER JOIN gl_journal_trx B ON A.journal_trx_id = B.journal_trx_id
  255.             WHERE A.session_id = pSessionId
  256.             AND A.journal_trx_id <> vEmptyId
  257.             AND A.year_month < pYearMonthFrom
  258.             GROUP BY A.session_id, A.journal_trx_id, A.year_month, B.doc_no, A.coa_id
  259.             ORDER BY A.year_month, B.doc_no, f_get_coa_desc(A.coa_id)
  260.         ) C
  261.    
  262.         UNION ALL
  263.    
  264.         SELECT A.*
  265.         FROM (
  266.             SELECT A.session_id,f_get_ctgr_product_name(A.ctgr_product_id) AS ctgr_product_name,
  267.                 f_get_sub_ctgr_product_name(A.sub_ctgr_product_id) AS sub_ctgr_product_name,
  268.                 f_get_product_code(A.product_id) AS product_code,
  269.                 f_get_product_name(A.product_id) AS product_name,
  270.                 SUM(A.qty_stock_awal) AS qty_stock_awal,
  271.                 SUM(A.stock_awal) AS stock_awal,
  272.                 SUM(A.qty_stock_receipt) AS qty_stock_receipt,
  273.                 SUM(A.stock_receipt) AS stock_receipt,
  274.                 SUM(A.qty_stock_claim_note) AS qty_stock_claim_note,
  275.                 SUM(A.stock_claim_note) AS stock_claim_note,
  276.                 SUM(A.qty_stock_sales) AS qty_stock_sales,
  277.                 SUM(A.stock_sales) AS stock_sales,
  278.                 SUM(A.qty_stock_return_sales) AS qty_stock_return_sales,
  279.                 SUM(A.stock_return_sales) AS stock_return_sales,
  280.                 SUM(A.qty_stock_adj_qty) AS qty_stock_adj_qty,
  281.                 SUM(A.stock_adj_qty) AS stock_adj_qty,
  282.                 SUM(A.qty_stock_adj_amount) AS qty_stock_adj_amount,
  283.                 SUM(A.stock_adj_amount) AS stock_adj_amount,
  284.                 SUM( A.qty_stock_awal + qty_stock_receipt - qty_stock_sales + qty_stock_return_sales + qty_stock_adj_qty + qty_stock_adj_amount - qty_stock_claim_note )
  285.                   AS qty_stock_akhir,
  286.                 SUM( A.stock_awal + stock_receipt - stock_sales + stock_return_sales + stock_adj_qty + stock_adj_amount - stock_claim_note )
  287.                   AS stock_akhir
  288.             FROM tt_mutasi_nilai_persediaan A
  289.             WHERE A.session_id = pSessionId AND
  290.             CASE WHEN pCodeProduct <> vEmptyString THEN UPPER(f_get_product_code(A.product_id)) LIKE UPPER('%'||pCodeProduct||'%') ELSE f_get_product_code(A.product_id) <> vEmptyString END
  291.             AND A.journal_trx_id = vEmptyId
  292.             GROUP BY A.session_id, A.product_id, A.sub_ctgr_product_id, A.ctgr_product_id
  293.             ORDER BY f_get_ctgr_product_name(A.ctgr_product_id), f_get_sub_ctgr_product_name(A.sub_ctgr_product_id), f_get_product_code(A.product_id)
  294.     --           A.stock_sales,A.stock_return_sales,A.stock_adj_qty,A.stock_adj_amount,A.stock_awal,A.stock_receipt;
  295.         ) A
  296.        
  297.         UNION ALL
  298.        
  299.         SELECT B.*
  300.         FROM (
  301.             SELECT A.session_id, B.doc_no AS ctgr_product_name,
  302.                 f_get_coa_desc(A.coa_id) AS sub_ctgr_product_name,
  303.                 vEmptyString AS product_code,
  304.                 vEmptyString AS product_name,  
  305.                 SUM(A.qty_stock_awal) AS qty_stock_awal,
  306.                 SUM(A.stock_awal) AS stock_awal,
  307.                 SUM(A.qty_stock_receipt) AS qty_stock_receipt,
  308.                 SUM(A.stock_receipt) AS stock_receipt,
  309.                 SUM(A.qty_stock_claim_note) AS qty_stock_claim_note,
  310.                 SUM(A.stock_claim_note) AS stock_claim_note,
  311.                 SUM(A.qty_stock_sales) AS qty_stock_sales,
  312.                 SUM(A.stock_sales) AS stock_sales,
  313.                 SUM(A.qty_stock_return_sales) AS qty_stock_return_sales,
  314.                 SUM(A.stock_return_sales) AS stock_return_sales,
  315.                 SUM(A.qty_stock_adj_qty) AS qty_stock_adj_qty,
  316.                 SUM(A.stock_adj_qty) AS stock_adj_qty,
  317.                 SUM(A.qty_stock_adj_amount) AS qty_stock_adj_amount,
  318.                 SUM(A.stock_adj_amount) AS stock_adj_amount,
  319.                 SUM( A.qty_stock_awal + qty_stock_receipt - qty_stock_sales + qty_stock_return_sales + qty_stock_adj_qty + qty_stock_adj_amount - qty_stock_claim_note )
  320.                   AS qty_stock_akhir,
  321.                 SUM( A.stock_awal + stock_receipt - stock_sales + stock_return_sales + stock_adj_qty + stock_adj_amount - stock_claim_note )
  322.                   AS stock_akhir
  323.             FROM tt_mutasi_nilai_persediaan A
  324.             INNER JOIN gl_journal_trx B ON A.journal_trx_id = B.journal_trx_id
  325.             WHERE A.session_id = pSessionId
  326.             AND A.journal_trx_id <> vEmptyId
  327.             AND A.year_month >= pYearMonthFrom
  328.             GROUP BY A.session_id, A.journal_trx_id, B.doc_no, A.coa_id
  329.             ORDER BY B.doc_no, f_get_coa_desc(A.coa_id)
  330.         ) B;
  331.     RETURN NEXT pRefDetail;
  332.  
  333.     DELETE FROM tt_mutasi_nilai_persediaan WHERE session_id = pSessionId;
  334. END;
  335. $BODY$
  336.   LANGUAGE plpgsql VOLATILE
  337.   COST 100
  338.   ROWS 1000;
  339. ALTER FUNCTION r_inventory_summary_mutation_monthly_by_product_code_periode(character varying, bigint, bigint, bigint, character varying, bigint, character varying, character varying, character varying)
  340.   OWNER TO sts;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement