Advertisement
Evra70

a

Mar 24th, 2022 (edited)
1,106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * author : fredi, 27 Desember 2015
  3.  */
  4. CREATE OR REPLACE FUNCTION r_generate_vat_out_for_efaktur(BIGINT, BIGINT, CHARACTER VARYING, CHARACTER VARYING)
  5.   RETURNS SETOF refcursor AS
  6. $BODY$
  7. DECLARE
  8.     pRefHeader          REFCURSOR := 'refHeader';
  9.     pRefDetail          REFCURSOR := 'refDetail';
  10.  
  11.     pTenantId           ALIAS FOR $1;
  12.     pReportMessageId    ALIAS FOR $2;
  13.     pSessionId          ALIAS FOR $3;
  14.     pProcessNo          ALIAS FOR $4;
  15.    
  16.     vOuId               bigint;
  17.     vPartnerId          bigint;
  18.     vTaxDateFrom        character varying;
  19.     vTaxDateTo          character varying;
  20.     vFilterPartnerQuery     text;
  21.     vEmpty              character varying := '';
  22.     vStatusPkp              character varying;
  23.     vQueryStatusPkp     character varying := '';
  24.    
  25. BEGIN
  26.     -- get input
  27.     vOuId := CAST(f_get_report_parameter_value_by_id(pReportMessageId, 'ouId') AS bigint);
  28.     vPartnerId := CAST(f_get_report_parameter_value_by_id(pReportMessageId, 'partnerId') AS bigint);
  29.     vTaxDateFrom := f_get_report_parameter_value_by_id(pReportMessageId, 'taxDateFrom');
  30.     vTaxDateTo := f_get_report_parameter_value_by_id(pReportMessageId, 'taxDateTo');
  31.     vStatusPkp := f_get_report_parameter_value_by_id(pReportMessageId, 'statusPkp');
  32.    
  33.     OPEN pRefHeader FOR
  34.     SELECT 20 AS _COUNT,
  35.             'FK', 'KD_JENIS_TRANSAKSI', 'FG_PENGGANTI',
  36.             'NOMOR_FAKTUR', 'MASA_PAJAK', 'TAHUN_PAJAK',
  37.             'TANGGAL_FAKTUR', 'NPWP', 'NAMA',
  38.             'ALAMAT_LENGKAP', 'JUMLAH_DPP', 'JUMLAH_PPN',
  39.             'JUMLAH_PPNBM', 'ID_KETERANGAN_TAMBAHAN', 'FG_UANG_MUKA',
  40.             'UANG_MUKA_DPP', 'UANG_MUKA_PPN', 'UANG_MUKA_PPNBM',
  41.             'REFERENSI','KODE_DOKUMEN_PENDUKUNG', 1 AS ordial
  42.     UNION
  43.     SELECT 14 AS _COUNT,
  44.             'LT', 'NPWP', 'NAMA',
  45.             'JALAN', 'BLOK', 'NOMOR',
  46.             'RT', 'RW', 'KECAMATAN',
  47.             'KELURAHAN', 'KABUPATEN', 'PROPINSI',
  48.             'KODE_POS', 'NOMOR_TELEPON', '',
  49.             '', '', '',
  50.             '', '',2 AS ordial
  51.     UNION
  52.     SELECT 11 AS _COUNT,
  53.             'OF', 'KODE_OBJEK', 'NAMA',
  54.             'HARGA_SATUAN', 'JUMLAH_BARANG', 'HARGA_TOTAL',
  55.             'DISKON', 'DPP', 'PPN',
  56.             'TARIF_PPNBM', 'PPNBM', '',
  57.             '', '', '',
  58.             '', '', '',
  59.             '', '', 3 AS ordial
  60.     ORDER BY ordial;
  61.    
  62.     RETURN NEXT pRefHeader;
  63.    
  64.    
  65.     vFilterPartnerQuery := '';
  66.        
  67.     IF vPartnerId <> -99 THEN
  68.         vFilterPartnerQuery := ' AND A.partner_id = '||vPartnerId|| ' ';
  69.     END IF;
  70.    
  71.     IF vStatusPkp <> vEmpty THEN
  72.         vQueryStatusPkp := ' AND f_get_flg_pkp_partner(A.partner_id) = ''' || vStatusPkp || '''';
  73.     END IF;
  74.    
  75.     OPEN pRefDetail FOR
  76.     EXECUTE '
  77.     SELECT CASE WHEN record_type = $7 THEN 20 WHEN record_type = $8 THEN 14 WHEN record_type = $9 THEN 11 END AS _COUNT,
  78.         A.record_type, COALESCE(A.col1, $1) AS col1,
  79.  
  80.         COALESCE(A.col2, $1) AS col2, COALESCE(A.col3, $1) AS col3, COALESCE(A.col4, $1) AS col4, COALESCE(A.col5, $1) AS col5,
  81.         COALESCE(A.col6, $1) AS col6, COALESCE(A.col7, $1) AS col7, COALESCE(A.col8, $1) AS col8, COALESCE(A.col9, $1) AS col9,
  82.        
  83.         CASE WHEN record_type = $7 THEN TRUNC(COALESCE(NULLIF(A.col10, $1), $6)::numeric, 0)::character varying ELSE COALESCE(A.col10 , $1) END AS col10,
  84.         CASE WHEN record_type = $7 THEN TRUNC(COALESCE(NULLIF(A.col11, $1), $6)::numeric, 0)::character varying ELSE COALESCE(A.col11 , $1) END AS col11,
  85.         CASE WHEN record_type = $7 THEN TRUNC(COALESCE(NULLIF(A.col12, $1), $6)::numeric, 0)::character varying ELSE COALESCE(A.col12 , $1) END AS col12,
  86.         COALESCE(A.col13, $1) AS col13,
  87.        
  88.         COALESCE(A.col14, $1) AS col14,
  89.         CASE WHEN record_type = $7 THEN TRUNC(COALESCE(NULLIF(A.col15, $1), $6)::numeric, 0)::character varying ELSE COALESCE(A.col15 , $1) END AS col15,
  90.         CASE WHEN record_type = $7 THEN TRUNC(COALESCE(NULLIF(A.col16, $1), $6)::numeric, 0)::character varying ELSE COALESCE(A.col16 , $1) END AS col16,
  91.         CASE WHEN record_type = $7 THEN TRUNC(COALESCE(NULLIF(A.col17, $1), $6)::numeric, 0)::character varying ELSE COALESCE(A.col17 , $1) END AS col17,
  92.  
  93.         COALESCE(A.col18, $1) AS col18, COALESCE(A.col19, $1) AS col19,
  94.         CASE WHEN record_type = $7 THEN $6 ELSE $1 END AS col20
  95.     FROM fi_vat_out_for_efaktur A
  96.     JOIN m_ou_structure B ON A.ou_id = B.ou_id
  97.     WHERE A.tenant_id = $2
  98.         AND (B.ou_bu_id = $3 OR B.ou_branch_id = $3)
  99.         AND A.tax_date BETWEEN $4 AND $5 '
  100.         || vFilterPartnerQuery  || vQueryStatusPkp || '
  101.     ORDER BY A.tax_date, A.tax_no, A.doc_type_id, A.doc_id, A.vat_out_for_efaktur_id'
  102.     USING vEmpty, pTenantId, vOuId, vTaxDateFrom, vTaxDateTo, '0', 'FK', 'LT', 'OF';
  103.    
  104.     RETURN NEXT pRefDetail;
  105.    
  106. END
  107. $BODY$
  108.   LANGUAGE plpgsql VOLATILE
  109.   COST 100
  110.   ROWS 1000;
  111. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement