Advertisement
aadddrr

in_summary_qty

Dec 12th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION in_summary_qty(bigint, character varying, bigint, character varying, character varying, bigint)
  2.   RETURNS void AS
  3. $BODY$
  4. DECLARE
  5.  
  6.     pTenantId           ALIAS FOR $1;
  7.     pSessionId          ALIAS FOR $2;
  8.     pOuId               ALIAS FOR $3;
  9.     pYearMonth          ALIAS FOR $4;
  10.     pDatetime           ALIAS FOR $5;
  11.     pUserId             ALIAS FOR $6;
  12.  
  13.     vDocTypeAwal            bigint;
  14.     vEmptyId                bigint;
  15.     vNextYearMonth          character varying(6);
  16.     vResult                 integer;
  17. BEGIN
  18.    
  19.     vDocTypeAwal := -99;
  20.     vEmptyId := -99;
  21.     vResult = 0;
  22.    
  23.     SELECT TO_CHAR(TO_DATE(MAX(pYearMonth),'YYYYMM') + interval '1 Month','YYYYMM') INTO vNextYearMonth;
  24.    
  25.     DELETE FROM tt_summary_monthly_qty WHERE session_id = pSessionId;
  26.    
  27.     DELETE FROM in_summary_monthly_invalid_qty      
  28.     WHERE tenant_id = pTenantId
  29.     AND date_year_month = vNextYearMonth
  30.     AND ou_id = pOuId;
  31.    
  32.     INSERT INTO tt_summary_monthly_qty
  33.     (session_id, date_year_month, tenant_id, ou_id, sub_ou_id, doc_type_id, warehouse_id,
  34.     product_id, product_balance_id, product_status, base_uom_id, qty)
  35.     SELECT pSessionId, A.date_year_month, A.tenant_id, A.ou_id, A.sub_ou_id, A.doc_type_id, A.warehouse_id,
  36.         A.product_id, A.product_balance_id, A.product_status, A.base_uom_id, A.qty
  37.     FROM in_summary_monthly_qty A
  38.     WHERE A.date_year_month = pYearMonth AND
  39.         A.doc_type_id = vDocTypeAwal AND
  40.         A.ou_id = pOuId AND
  41.         A.tenant_id = pTenantId;
  42.        
  43.     INSERT INTO tt_summary_monthly_qty
  44.     (session_id, date_year_month, tenant_id, ou_id, sub_ou_id, doc_type_id, warehouse_id,
  45.     product_id, product_balance_id, product_status, base_uom_id, qty)
  46.     SELECT pSessionId, C.year_month_date, A.tenant_id, B.ou_bu_id, A.ou_id, A.doc_type_id, A.warehouse_id,
  47.         A.product_id, A.product_balance_id, A.product_status, A.base_uom_id, A.qty
  48.     FROM in_log_product_balance_stock A, m_ou_structure B, dt_date C
  49.     WHERE A.ou_id = B.ou_id AND
  50.         B.ou_bu_id = pOuId AND
  51.         A.doc_date = C.string_date AND
  52.         C.year_month_date = pYearMonth AND
  53.         A.tenant_id = pTenantId;
  54.    
  55.     INSERT INTO tt_summary_monthly_qty
  56.     (session_id, date_year_month, tenant_id, ou_id, sub_ou_id, doc_type_id, warehouse_id,
  57.     product_id, product_balance_id, product_status, base_uom_id, qty)
  58.     SELECT pSessionId, vNextYearMonth, A.tenant_id, A.ou_id, A.sub_ou_id, vDocTypeAwal, A.warehouse_id,
  59.         A.product_id, A.product_balance_id, A.product_status, A.base_uom_id, SUM(A.qty)
  60.     FROM tt_summary_monthly_qty A
  61.     WHERE A.session_id = pSessionId
  62.     GROUP BY A.tenant_id, A.ou_id, A.sub_ou_id, A.warehouse_id,
  63.         A.product_id, A.product_balance_id, A.product_status, A.base_uom_id;
  64.                    
  65.     INSERT INTO in_summary_monthly_invalid_qty(
  66.         date_year_month, tenant_id, ou_id, sub_ou_id, warehouse_id,
  67.         product_id, base_uom_id, qty,
  68.         "version", create_datetime, create_user_id, update_datetime, update_user_id
  69.     )  
  70.     SELECT A.date_year_month, A.tenant_id, A.ou_id, A.sub_ou_id, A.warehouse_id,
  71.         A.product_id, A.base_uom_id, SUM(A.qty),
  72.         0, pDatetime, pUserId, pDatetime, pUserId
  73.     FROM tt_summary_monthly_qty A
  74.     WHERE A.session_id = pSessionId AND
  75.         A.date_year_month = vNextYearMonth
  76.     GROUP BY  A.date_year_month, A.tenant_id, A.ou_id, A.sub_ou_id, A.warehouse_id, A.product_id, A.base_uom_id
  77.     HAVING SUM(A.qty) < 0;
  78.    
  79.     INSERT INTO in_summary_monthly_qty
  80.     (date_year_month, tenant_id, ou_id, sub_ou_id, doc_type_id, warehouse_id,
  81.     product_id, product_balance_id, product_status, base_uom_id, qty,
  82.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  83.     SELECT A.date_year_month, A.tenant_id, A.ou_id, A.sub_ou_id, A.doc_type_id, A.warehouse_id,
  84.         A.product_id, A.product_balance_id, A.product_status, A.base_uom_id, A.qty,
  85.         0, pDatetime, pUserId, pDatetime, pUserId
  86.     FROM tt_summary_monthly_qty A
  87.     WHERE A.session_id = pSessionId AND
  88.         A.date_year_month = vNextYearMonth;
  89.        
  90.     INSERT INTO in_summary_monthly_activity
  91.     (date_year_month, tenant_id, ou_id, sub_ou_id, doc_type_id,
  92.     warehouse_id, product_id, product_balance_id, product_status,
  93.     activity_gl_id, base_uom_id, qty,
  94.     "version", create_datetime, create_user_id, update_datetime, update_user_id)
  95.     SELECT pYearMonth, A.tenant_id, D.ou_bu_id, D.ou_id, A.doc_type_id,
  96.         A.warehouse_id, A.product_id, A.product_balance_id, A.product_status,
  97.         B.activity_gl_id, A.base_uom_id, SUM(A.qty),
  98.         0, pDatetime, pUserId, pDatetime, pUserId
  99.     FROM in_log_product_balance_stock A, in_inventory B, dt_date C, m_ou_structure D
  100.     WHERE A.doc_date = C.string_date AND
  101.         C.year_month_date = pYearMonth AND
  102.         A.tenant_id = pTenantId AND
  103.         A.tenant_id = B.tenant_id AND
  104.         (A.ou_id = B.ou_from_id OR A.ou_id = B.ou_to_id ) AND
  105.         A.doc_type_id = B.doc_type_id AND
  106.         A.doc_no = B.doc_no AND
  107.         A.doc_date = B.doc_date AND
  108.         B.activity_gl_id <> vEmptyId AND
  109.         A.ou_id = D.ou_id AND
  110.         D.ou_bu_id = pOuId
  111.     GROUP BY A.tenant_id, D.ou_bu_id, D.ou_id, A.doc_type_id, A.warehouse_id,
  112.         A.product_id, A.product_balance_id, A.product_status, B.activity_gl_id, A.base_uom_id;
  113.  
  114.    
  115.     DELETE FROM tt_summary_monthly_qty WHERE session_id = pSessionId;  
  116.        
  117. END;
  118. $BODY$
  119.   LANGUAGE plpgsql VOLATILE
  120.   COST 100;
  121.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement