Advertisement
Guest User

r_log_stock_without_documents

a guest
Jan 18th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Author by Widana Nur Azis, 18 Jan 2018
  2. /*
  3.  * Menghasilkan data dari log product balance stock dan log product balance stock consignment
  4.  * yang status dokumen nya tidak approved dan tidak ada dokumen dari suatu table master dokumen.
  5.  */
  6. CREATE OR REPLACE FUNCTION r_log_stock_without_documents(character varying,bigint, bigint, bigint, character varying, bigint, character varying)
  7.   RETURNS SETOF refcursor AS
  8. $BODY$
  9. DECLARE
  10.     pRefHeader                  REFCURSOR := 'refHeader';
  11.     pRefDetail                  REFCURSOR := 'refDetail';
  12.     pSessionId                  ALIAS FOR $1;
  13.     pTenantId                   ALIAS FOR $2;
  14.     pUserId                     ALIAS FOR $3;
  15.     pRoleId                     ALIAS FOR $4;
  16.     pDatetime                   ALIAS FOR $5;
  17.     pOuId                       ALIAS FOR $6;
  18.     pPeriodDate                 ALIAS FOR $7;
  19.  
  20.     vApproved               character varying := 'APPROVED';
  21.     vNotYetStatus           character varying := 'NOT YET STATUS';
  22.    
  23. BEGIN
  24.    
  25.     DELETE FROM tt_log_stock_without_documents WHERE session_id = pSessionId;
  26.    
  27.     /*
  28.      * Melakukan simpan data yang status dokumen nya belum approved,
  29.      * document terdaftar di master
  30.      * in_log_product_balance_stock
  31.      */
  32.     INSERT INTO tt_log_stock_without_documents (session_id, ou_id, tenant_id, doc_type, doc_no, doc_date, product_code, product_name,
  33.         serial_number, warehouse_code, warehouse_name, base_uom_code, base_uom_name, qty, status)
  34.     SELECT pSessionId, C.ou_id, C.tenant_id, f_get_doc_desc(C.doc_type_id), C.doc_no, C.doc_date, f_get_product_code(C.product_id), f_get_product_name(C.product_id),
  35.         f_get_serial_number(C.product_balance_id), f_get_warehouse_code(C.warehouse_id), f_get_warehouse_name(C.warehouse_id),
  36.         f_get_uom_code(C.base_uom_id), f_get_uom_name(C.base_uom_id), C.qty, A.current_state
  37.     FROM awe_currdoc_status A
  38.     INNER JOIN m_document B ON A.scheme = B.scheme
  39.     INNER JOIN in_log_product_balance_stock C ON A.doc_id = C.ref_id AND B.doc_type_id = C.doc_type_id
  40.     WHERE A.current_state NOT IN(vApproved)
  41.         AND C.ou_id IN (SELECT Z.ou_id FROM t_ou Z WHERE Z.ou_parent_id  = pOuId OR Z.ou_id = pOuId)
  42.         AND C.tenant_id = pTenantId
  43.         AND substring(C.doc_date, 0, 7) = pPeriodDate;
  44.  
  45.     /*
  46.      * Melakukan simpan data yang status dokumen nya belum approved,
  47.      * document tidak terdaftar di master
  48.      * in_log_product_balance_stock
  49.      */
  50.     INSERT INTO tt_log_stock_without_documents (session_id, ou_id, tenant_id, doc_type, doc_no, doc_date, product_code, product_name,
  51.         serial_number, warehouse_code, warehouse_name, base_uom_code, base_uom_name, qty, status)
  52.     SELECT pSessionId, C.ou_id, C.tenant_id, CASE WHEN C.doc_type_id = -99 THEN 'SALDO AWAL' ELSE f_get_doc_desc(C.doc_type_id) END , C.doc_no, C.doc_date, f_get_product_code(C.product_id), f_get_product_name(C.product_id),
  53.         f_get_serial_number(C.product_balance_id), f_get_warehouse_code(C.warehouse_id), f_get_warehouse_name(C.warehouse_id),
  54.         f_get_uom_code(C.base_uom_id), f_get_uom_name(C.base_uom_id), C.qty, vNotYetStatus
  55.     FROM in_log_product_balance_stock C
  56.     WHERE NOT EXISTS (SELECT 1 FROM m_document Z WHERE C.doc_type_id = Z.doc_type_id)
  57.         AND C.ou_id IN (SELECT Z.ou_id FROM t_ou Z WHERE Z.ou_parent_id  = pOuId OR Z.ou_id = pOuId)
  58.         AND C.tenant_id = pTenantId
  59.         AND substring(C.doc_date, 0, 7) = pPeriodDate;
  60.    
  61.     /*
  62.      * Melakukan simpan data yang status dokumen nya belum approved,
  63.      * document terdaftar di master
  64.      * in_log_product_consignment_balance_stock
  65.      */
  66.     INSERT INTO tt_log_stock_without_documents (session_id, ou_id, tenant_id, doc_type, doc_no, doc_date, product_code, product_name,
  67.         serial_number, warehouse_code, warehouse_name, base_uom_code, base_uom_name, qty, status)
  68.     SELECT pSessionId, C.ou_id, C.tenant_id, f_get_doc_desc(C.doc_type_id), C.doc_no, C.doc_date, f_get_product_code(C.product_id), f_get_product_name(C.product_id),
  69.         f_get_serial_number(C.product_balance_id), f_get_warehouse_code(C.warehouse_id), f_get_warehouse_name(C.warehouse_id),
  70.         f_get_uom_code(C.base_uom_id), f_get_uom_name(C.base_uom_id), C.qty, A.current_state
  71.     FROM awe_currdoc_status A
  72.     INNER JOIN m_document B ON A.scheme = B.scheme
  73.     INNER JOIN in_log_product_consignment_balance_stock C ON A.doc_id = C.ref_id AND B.doc_type_id = C.doc_type_id
  74.     WHERE A.current_state NOT IN(vApproved)
  75.         AND C.ou_id IN (SELECT Z.ou_id FROM t_ou Z WHERE Z.ou_parent_id  = pOuId OR Z.ou_id = pOuId)
  76.         AND C.tenant_id = pTenantId
  77.         AND substring(C.doc_date, 0, 7) = pPeriodDate;
  78.  
  79.     /*
  80.      * Melakukan simpan data yang status dokumen nya belum approved,
  81.      * document tidak terdaftar di master
  82.      * in_log_product_consignment_balance_stock
  83.      */
  84.     INSERT INTO tt_log_stock_without_documents (session_id, ou_id, tenant_id, doc_type, doc_no, doc_date, product_code, product_name,
  85.         serial_number, warehouse_code, warehouse_name, base_uom_code, base_uom_name, qty, status)
  86.     SELECT pSessionId, C.ou_id, C.tenant_id, CASE WHEN C.doc_type_id = -99 THEN 'SALDO AWAL' ELSE f_get_doc_desc(C.doc_type_id) END , C.doc_no, C.doc_date, f_get_product_code(C.product_id), f_get_product_name(C.product_id),
  87.         f_get_serial_number(C.product_balance_id), f_get_warehouse_code(C.warehouse_id), f_get_warehouse_name(C.warehouse_id),
  88.         f_get_uom_code(C.base_uom_id), f_get_uom_name(C.base_uom_id), C.qty, vNotYetStatus
  89.     FROM in_log_product_consignment_balance_stock C
  90.     WHERE NOT EXISTS (SELECT 1 FROM m_document Z WHERE C.doc_type_id = Z.doc_type_id)
  91.         AND C.ou_id IN (SELECT Z.ou_id FROM t_ou Z WHERE Z.ou_parent_id  = pOuId OR Z.ou_id = pOuId)
  92.         AND C.tenant_id = pTenantId
  93.         AND substring(C.doc_date, 0, 7) = pPeriodDate;
  94.    
  95.     OPEN pRefHeader FOR
  96.         SELECT f_get_ou_name(pOuId) AS ou_name, pPeriodDate AS period_date, pDatetime AS datetime,
  97.                 f_get_role_name(pRoleId) AS role_name, pPeriodDate AS year_month;
  98.     RETURN NEXT pRefHeader;
  99.    
  100.     OPEN pRefDetail FOR
  101.         SELECT session_id, ou_id, tenant_id, doc_type, doc_no, doc_date, product_code, product_name,
  102.                 serial_number, warehouse_code, warehouse_name, base_uom_code, base_uom_name, qty, status
  103.         FROM tt_log_stock_without_documents;
  104.     RETURN NEXT  pRefDetail;
  105.  
  106.     DELETE FROM tt_log_stock_without_documents WHERE session_id = pSessionId;
  107. END;
  108. $BODY$
  109.   LANGUAGE plpgsql VOLATILE
  110.   COST 100
  111.   ROWS 1000;
  112. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement