Advertisement
aadddrr

BACKUP REPORT CLAIM CONSIGNMENT

Mar 16th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION r_claim_consignment(character varying, bigint, bigint, bigint, character varying, bigint, character varying, character varying, character varying, character varying, character varying)
  2.  RETURNS SETOF refcursor AS
  3. $BODY$
  4. DECLARE
  5.     vRefHeader          REFCURSOR := 'refHeader';
  6.     vRefDetail          REFCURSOR := 'refDetail';
  7.    
  8.     pSessionId          ALIAS FOR $1;
  9.     pTenantId           ALIAS FOR $2;
  10.     pUserId             ALIAS FOR $3;
  11.     pRoleId             ALIAS FOR $4;
  12.     pDatetime           ALIAS FOR $5;
  13.    
  14.     pOu                 ALIAS FOR $6;
  15.     pStatusDoc          ALIAS FOR $7;
  16.     pDocNo              ALIAS FOR $8;
  17.     pDateFrom           ALIAS FOR $9;
  18.     pDateTo             ALIAS FOR $10;
  19.     pCustomer           ALIAS FOR $11;
  20.    
  21.     vFilterStatusDoc    text;
  22.     vFilterDocNo        text;
  23.     vFilterCustomer     text;
  24.    
  25.     vEmptyString        character varying := ' ';
  26.     vFlgInProgress      character varying := 'I';
  27.     vStatusInProgress   character varying := 'In Progress';
  28.     vFlgDraft           character varying := 'D';
  29.     vStatusDraft        character varying := 'Draft';
  30.     vFLgApprove         character varying := 'R';
  31.     vStatusApprove      character varying := 'Approve';
  32.     vDocTypeClaimConsignment bigint := 561;
  33.    
  34. BEGIN
  35.    
  36.     IF (pStatusDoc <> vEmptyString) THEN
  37.         vFilterStatusDoc := ' AND UPPER(A.status_doc) LIKE UPPER(''%' || pStatusDoc || '%'') ';
  38.     END IF;
  39.    
  40.     IF (pDocNo <> vEmptyString) THEN
  41.         vFilterDocNo := ' AND UPPER(A.doc_no) LIKE UPPER(''%' || pDocNo || '%'') ';
  42.     END IF;
  43.    
  44.     IF (pCustomer <> vEmptyString) THEN
  45.         vFilterCustomer := ' AND ( UPPER(f_get_partner_name(A.partner_id)) LIKE UPPER(''%' || pCustomer || '%'')
  46.                                 OR UPPER(f_get_partner_code(A.partner_id)) LIKE UPPER(''%' || pCustomer || '%'') )';
  47.     END IF;
  48.    
  49.     OPEN vRefHeader FOR
  50.         SELECT f_get_ou_name(pOu) AS ou_name, pDateFrom AS date_from, pDateTo AS date_to, pDatetime AS datetime,
  51.             f_get_username(pUserId) AS username,
  52.             CASE WHEN pStatusDoc = vFlgInProgress THEN vStatusInProgress
  53.                 WHEN pStatusDoc = vFlgDraft THEN vStatusDraft
  54.                 WHEN pStatusDoc = vFLgApprove THEN vStatusApprove ELSE 'ALL' END AS status_doc,            
  55.             CASE WHEN pDocNo = vEmptyString THEN 'ALL' ELSE pDocNo END AS doc_no,              
  56.             CASE WHEN pCustomer = vEmptyString THEN 'ALL' ELSE pCustomer END AS customer_name;
  57.    
  58.     RETURN NEXT vRefHeader;
  59.    
  60.    
  61.     OPEN vRefDetail FOR
  62.     EXECUTE '
  63.         SELECT A.doc_date AS claim_consignment_date, A.doc_no AS claim_consignment_no, C.doc_date AS po_date,
  64.             C.doc_no AS po_no, D.doc_date AS rg_consignment_date, D.doc_no AS rg_consignment_no,
  65.             f_get_partner_name(A.partner_id) AS partner_name, f_get_partner_code(A.partner_id) AS partner_code,
  66.             f_get_product_name(B.product_id) AS product_name, f_get_product_code(B.product_id) AS product_code,
  67.             SUM(B.qty_realization) AS qty, f_get_uom_name(B.base_uom_id) AS base_uom,
  68.             CASE WHEN A.status_doc = '''|| vFlgInProgress ||''' THEN '''|| vStatusInProgress ||'''
  69.                 WHEN A.status_doc = '''|| vFlgDraft ||''' THEN '''|| vStatusDraft ||''' ELSE '''|| vStatusApprove ||''' END AS status_doc
  70.         FROM in_inventory A
  71.         INNER JOIN in_inventory_item B ON A.inventory_id = B.inventory_id
  72.         INNER JOIN pu_po C ON A.ref_doc_type_id = C.doc_type_id AND A.ref_id = C.po_id
  73.         INNER JOIN pu_receive_goods_consignment D ON D.ref_doc_type_id = C.doc_type_id AND D.ref_id = C.po_id
  74.         WHERE A.tenant_id = $1 AND
  75.             A.ou_from_id = $2 AND
  76.             A.doc_type_id = $3 AND
  77.             A.doc_date BETWEEN $4 AND $5 '
  78.                 || vFilterDocNo
  79.                 || vFilterCustomer
  80.                 || vFilterStatusDoc ||'
  81.         GROUP BY A.doc_date, A.doc_no, C.doc_date, C.doc_no, D.doc_date, D.doc_no, A.partner_id, B.product_id, B.base_uom_id, A.status_doc
  82.         ORDER BY A.doc_date'
  83.     USING pTenantId, pOu, vDocTypeClaimConsignment, pDateFrom, pDateTo;
  84.    
  85.     RETURN NEXT vRefDetail;
  86.  
  87. END;
  88. $BODY$
  89.   LANGUAGE plpgsql VOLATILE
  90.   COST 100
  91.   ROWS 1000;
  92.   /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement