Advertisement
aadddrr

r_print_vat_out_re_po_invoice_INDOCOM_20171114182201

Nov 14th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Function: r_print_vat_out_re_po_invoice(character varying, bigint, bigint, bigint, character varying, bigint)
  2.  
  3. -- DROP FUNCTION r_print_vat_out_re_po_invoice(character varying, bigint, bigint, bigint, character varying, bigint);
  4.  
  5. CREATE OR REPLACE FUNCTION r_print_vat_out_re_po_invoice(character varying, bigint, bigint, bigint, character varying, bigint)
  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.     pInvoiceId              ALIAS FOR $6;
  17.    
  18.    
  19.     vClaimNoteDocTypeId         bigint;
  20.     vReportName             character varying;
  21.     vDiscPrice              numeric;
  22.     vNpwp                   character varying;
  23.     vYes                    character varying(1);
  24. BEGIN
  25.     vClaimNoteDocTypeId := 511;
  26.     vReportName := 'FormVatOutReturnPurchaseInvoice';
  27.     vDiscPrice := 0;
  28.     vNpwp := '00.000.000.0-000.00';
  29.     vYes := 'Y';
  30.    
  31.     Open pRefHeader FOR
  32.     SELECT A.invoice_id, A.ou_id, A.ou_legal_id, B.legal_name AS ou_name, COALESCE(B.address1 || ' ' || B.address2 || ' ' || B.address3, '-') AS ou_addr_1,
  33.         COALESCE(B.city || ', ' || B.state_or_province || ', ' || B.zip_code, '-') AS ou_addr_2, B.npwp_no AS ou_npwp,
  34.         A.partner_id, COALESCE(D.npwp_name,C.partner_name) AS cust_name,
  35.         f_get_report_partner_address_for_vat_out(A.tenant_id, A.partner_id) AS cust_addr,
  36.         COALESCE(D.npwp_no,vNpwp) AS cust_npwp, F.tax_no AS tax_number, F.tax_date, A.curr_code AS curr_code_amount,
  37.         f_get_report_parameter_config_value(pTenantId, vReportName, A.ou_id, 'approval_name') AS approval_name,
  38.         F.base_amount AS total_amount, vDiscPrice AS disc_amount, F.advance_amount AS dp_amount,
  39.         F.gov_tax_amount AS ppn_amount, ((F.base_amount-vDiscPrice)-F.advance_amount) AS dpp_amount
  40.     FROM pu_invoice A
  41.         INNER JOIN t_ou_legal B ON A.tenant_id = B.tenant_id AND A.ou_legal_id = B.ou_legal_id
  42.         INNER JOIN m_partner C ON A.tenant_id = C.tenant_id AND A.partner_id = C.partner_id
  43.         LEFT OUTER JOIN m_partner_npwp D ON C.tenant_id = D.tenant_id AND C.partner_id = D.partner_id AND D.active = vYes
  44.         INNER JOIN pu_po E ON A.tenant_id = E.tenant_id AND A.ref_id = E.po_id
  45.         INNER JOIN pu_invoice_tax F ON A.tenant_id = F.tenant_id AND A.invoice_id = F.invoice_id
  46.     WHERE A.tenant_id = pTenantId
  47.         AND A.invoice_id = pInvoiceId;
  48.     RETURN NEXT pRefHeader;
  49.    
  50.     Open pRefDetail FOR
  51.     SELECT C.product_id, D.product_code, D.product_name, G.curr_code, SUM(A.ref_item_amount) AS amount
  52.     FROM pu_invoice_item A
  53.         INNER JOIN pu_invoice H ON A.tenant_id = H.tenant_id AND A.invoice_id = H.invoice_id  
  54.         INNER JOIN in_inventory B ON A.tenant_id = B.tenant_id AND A.ref_id = B.inventory_id
  55.         INNER JOIN pu_receive_goods_item C ON A.tenant_id = C.tenant_id AND A.ref_item_id = C.receive_goods_item_id
  56.         INNER JOIN m_product D ON A.tenant_id = D.tenant_id AND C.product_id = D.product_id
  57.         INNER JOIN pu_po_balance_invoice_tax G ON A.tenant_id = G.tenant_id AND G.ou_id = H.ou_id AND G.ref_doc_type_id = vClaimNoteDocTypeId AND G.ref_id = B.inventory_id AND G.po_id = B.ref_id AND G.ref_item_id = A.ref_item_id
  58.     WHERE A.tenant_id = pTenantId
  59.         AND A.invoice_id = pInvoiceId
  60.     GROUP BY C.product_id, D.product_code, D.product_name, G.curr_code
  61.     ORDER BY C.product_id;
  62.     RETURN NEXT pRefDetail;
  63.    
  64. END;
  65. $BODY$
  66.   LANGUAGE plpgsql VOLATILE
  67.   COST 100
  68.   ROWS 1000;
  69. ALTER FUNCTION r_print_vat_out_re_po_invoice(character varying, bigint, bigint, bigint, character varying, bigint)
  70.   OWNER TO sts;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement