aadddrr

r_print_vat_out_re_po_invoice_with_valas_20171114172301

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