Está en la página 1de 72

TO.BTL-2019-00000.

00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

Nombre Objeto : SAPFI_GENXMLOTC411_PE_F (MODIFICADO)

Descripción : Genera XML de Ventas y Medios de Pago desde


PMM

Tipo : PROCEDURE

1. Functional Overview:
Genera XML de Ventas y Medios de Pago desde PMM

2. Technical Specifications:

2.1. Input / Output Parameters:

Input / Output In / Out Type Mandator Default Description


Parameters y Value

2.2. Procedure Outline:

CREATE OR REPLACE PROCEDURE SAPFI_GENXMLOTC411_PE_F IS


----------------------------------------------------------------------------
---------------------------------------
-- Fecha: 13/09/2019
-- Autor: Cesar Lopez Saavedra.
-- SRF: 167736
-- Proyecto: Integracion PMM con SAP
-- Descripción: Generación de archivos XML de ventas y medios de pago para
SAP
-- (Adecuacion de procedimiento para Peru)
----------------------------------------------------------------------------
---------------------------------------
--Modificaciones:
--Fecha Responsable SRF Descripcion
--
--25-02-2020 Mario La Rosa 167736 MLR01-Obtener el codigo
de sociedad
--25-02-2020 Mario La Rosa 167736 MLR02-Agregar el TAG
HEADER a la estructura XML
----------------------------------------------------------------------------
--------------------------------------
-- 18-02-2020 Cesar Lopez Saavedra 167736 Pase a Test
--25-02-2020 Mario La Rosa 167736 Pase a Test
--16-07-2020 Cesar Lopez Saavedra 167736 Pase a Test

Página 1/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

--03-09-2020 Cesar Lopez Saavedra 167736 Pase a Test


--
****************************************************************************
************************************
BEGIN
DECLARE

----------------------------------------------------------------------------
--------------------
-- Declaciones de Constantes.

----------------------------------------------------------------------------
--------------------
l_estado NUMBER := 0;
var_nlote NUMBER := 1;---diferenciar sociedades al enviar(1 -
P009, 2 - P010)
pi_fecha_periodo CHAR(10);
flag_envio number := 0;-- (9 = sirve al usuario, pero no enviar a
sap)

co_My_Proc_Name CONSTANT invstpee.proc_name%TYPE :=


'SAPFI_GENXMLOTC411_F'; -- name SP
co_code_Transac CONSTANT sapfi_param.par_nombre%Type :=
'CODE_TRANSAC';
co_nref_Transac CONSTANT sapfi_param.par_nombre%Type :=
'NREF_TRANSAC';
co_ruc_Transac CONSTANT sapfi_param.par_nombre%Type :=
'RUC_TRANSAC';
co_ParAplicacion CONSTANT sapfi_chlparam.param_code%Type := 'CODAPP';
-- Codigo de la Aplicacion
co_ParInterfaz CONSTANT sapfi_chlparam.param_code%Type :=
'INTOTC411'; -- Codigo de la interfaz
--co_ParTaxCode CONSTANT sapfi_param.par_nombre%Type :=
'TaxCode';
--Inicio MLR01
--Anula variable empresa
--co_ParCodEmpresa CONSTANT sapfi_param.par_nombre%Type :=
'CodEmpresa';
--Fin MLR01
co_ParTagItem01 CONSTANT sapfi_param.par_nombre%Type :=
'TAG01_411'; -- Tag Item 01 XML
co_ParTagItem02 CONSTANT sapfi_param.par_nombre%Type :=
'TAG02_411'; -- Tag Item 02 XML
co_ParTagItem03 CONSTANT sapfi_param.par_nombre%Type :=
'TAG03_411'; -- Tag Item 02 XML
co_ParTagItem04 CONSTANT sapfi_param.par_nombre%Type :=
'TAG04_411'; -- Tag Item 02 XML
co_ParTagItem05 CONSTANT sapfi_param.par_nombre%Type :=
'TAG05_411'; -- Tag Item 02 XML
co_ParTagItem06 CONSTANT sapfi_param.par_nombre%Type :=
'TAG06_411'; -- Tag Item 02 XML
co_ParTagItem07 CONSTANT sapfi_param.par_nombre%Type :=
'TAG07_411'; -- Tag Item 02 XML
co_ParTagItem08 CONSTANT sapfi_param.par_nombre%Type :=
'TAG08_411'; -- Tag Item 02 XML

Página 2/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

co_ParTagItem09 CONSTANT sapfi_param.par_nombre%Type :=


'TAG09_411'; -- Tag Item 02 XML
co_ParTagItem10 CONSTANT sapfi_param.par_nombre%Type :=
'TAG10_411'; -- Tag Item 02 XML
co_ParTagItem11 CONSTANT sapfi_param.par_nombre%Type :=
'TAG11_411'; -- Tag Item 02 XML
co_ParTagItem12 CONSTANT sapfi_param.par_nombre%Type :=
'TAG12_411'; -- Tag Item 02 XML
co_ParTagItem13 CONSTANT sapfi_param.par_nombre%Type :=
'TAG13_411'; -- Tag Item 02 XML
co_ParTagItem14 CONSTANT sapfi_param.par_nombre%Type :=
'TAG14_411'; -- Tag Item 02 XML

co_cod_tipo_tran CONSTANT sapfi_outinah.cod_tipo_tran%Type:= 0; --


Codigo tipo transmision
co_Version CONSTANT sapfi_outinah.version%Type := 0; --
Version interfaz
co_nro_intentos CONSTANT sapfi_outinah.nro_intentos%Type := 1; --
Primer intentos transmision
co_error_handle CONSTANT sapfi_logerree.sql_error%Type := -20101; --
Error SQL

co_cdocumento_desagrupado CONSTANT SAPFI_PARAM.PAR_NOMBRE%TYPE :=


'CDOC_DESAGRUPADO';
co_cdocumento_desagrupadoCC CONSTANT SAPFI_PARAM.PAR_NOMBRE%TYPE :=
'CDOC_DESAGRUPADOCC';
co_cdocumento_agrupado CONSTANT SAPFI_PARAM.PAR_NOMBRE%TYPE :=
'CDOC_AGRUPADO';
co_cdocumento_j01 CONSTANT SAPFI_PARAM.PAR_NOMBRE%TYPE :=
'CDOC_J01'; --Agrupa todos los documentos en la jerarquia j01

co_ctransac_whitelist_agrupado CONSTANT SAPFI_PARAM.PAR_NOMBRE


%TYPE := 'CTRANSAC_WHITELIST_AGRUPADO';
co_ctransac_whitelist_desagrup CONSTANT SAPFI_PARAM.PAR_NOMBRE
%TYPE := 'CTRANSAC_WHITELIST_DESAGRUPADO';
co_ctransac_whitelist_j01 CONSTANT SAPFI_PARAM.PAR_NOMBRE
%TYPE := 'CTRANSAC_WHITELIST_J01'; --Agrupa todos los documentos en la
jerarquia j01

co_rut_1 CONSTANT SAPFI_PARAM.PAR_NOMBRE%Type := 'CRUT_1'; --


Codigo RUT y Razon Social
co_rut_2 CONSTANT SAPFI_PARAM.PAR_NOMBRE%Type := 'CRUT_2'; --
Codigo RUT y Razon Social
co_rut_3 CONSTANT SAPFI_PARAM.PAR_NOMBRE%Type := 'CRUT_3'; --
Codigo RUT y Razon Social
co_rut_4 CONSTANT SAPFI_PARAM.PAR_NOMBRE%Type := 'CRUT_4'; --
Codigo RUT y Razon Social

co_ParDcompra CONSTANT SAPFI_PARAM.PAR_NOMBRE%Type := 'DCOMPRA';

l_fec_envio CONSTANT DATE := sysdate;

----------------------------------------------------------------------------
--------------------

Página 3/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

-- Declaciones de Variables

----------------------------------------------------------------------------
--------------------
l_CodAplicacion sapfi_chlparam.param_value%Type; -- Codigo de la
aplicacion
l_Codinterfaz sapfi_chlparam.param_value%Type; -- Codigo de la
interfaz
l_nro_legado_r sapfi_outinee.nro_legado%TYPE ; -- Numero
legado respuesta

l_XML CLOB;
l_Head_XML CLOB; -- Cuerpo del XML
l_Detalle_XML CLOB;
vartemp_Detalle_XML CLOB;
l_AreaCredito_XML CLOB;
l_ImpAdicionales_XML CLOB;
l_MediosPago_XML CLOB;
l_vMediosPago_XML CLOB;
l_Item01_XML sapfi_param.par_value%Type; -- Tag Item01
l_Item02_XML sapfi_param.par_value%Type; -- Tag Item02
l_Item03_XML sapfi_param.par_value%Type; -- Tag Item03
l_Item04_XML sapfi_param.par_value%Type; -- Tag Item04
l_Item05_XML sapfi_param.par_value%Type; -- Tag Item05
l_Item06_XML sapfi_param.par_value%Type; -- Tag Item06
l_Item07_XML sapfi_param.par_value%Type; -- Tag Item07
l_Item08_XML sapfi_param.par_value%Type; -- Tag Item08
l_Item09_XML sapfi_param.par_value%Type; -- Tag Item09
l_Item10_XML sapfi_param.par_value%Type; -- Tag Item10
l_Item11_XML sapfi_param.par_value%Type; -- Tag Item11
l_Item12_XML sapfi_param.par_value%Type; -- Tag Item12
l_Item13_XML sapfi_param.par_value%Type; -- Tag Item13
l_Item14_XML sapfi_param.par_value%Type; -- Tag Item14

l_Nro_Legado SAPFI_OUTINEE.NRO_LEGADO%TYPE; -- Numero de legado


l_Nro_Legado_Chk SAPFI_OUTINEE.NRO_LEGADO%TYPE; -- Numero de legado
chequeo
l_Nro_Error NUMBER := 0; -- Numero Error
l_Msg_Error VARCHAR2(4000); -- Mensaje Error
l_sys_guid sapfi_ctrenvee.sys_guid%Type := null; -- Identificador
unico de proceso guid

--Inicio MLR01
--Anula Variable Empresa
--l_CodEmpresa sapfi_param.par_value%Type;
--Fin MLR01
--l_TaxCode TXSCODEE.TXS_CODE_TECH_KEY%type;

l_sumaImpAdic NUMBER := 0;
l_mImpAdic14 NUMBER := 0;
l_mImpAdic35 NUMBER := 0;
l_sumaImpAdic00 NUMBER := 0;
vartemp_cdocumento NUMBER ;
var_valor number;
vartemp_ctransac NUMBER ;
l_charMediopago VARCHAR2(16) := '';

Página 4/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

l_charIndicador VARCHAR2(2) := '';


vartemp_mventa varchar2(16);
vartemp_identidad varchar2(11);
vartemp_mventa2 varchar2(16);
vartemp_mdescto varchar2(16);
vartemp_miva varchar2(16);
vartemp_miva2 varchar2(16);
varn_codrep number;

varn_EFECTIVO number;
varn_CMR number;
varn_VISA_CREDITO number;
varn_VISA_DEBITO number;
varn_MC_CREDITO number;
varn_MC_DEBITO number;
varn_EXPRESSNET number;
varn_DINERS number;
varn_GIFT number;
varn_CONTADOCHEQUE number;
varn_CCC number;
varn_VALECREDITO number;
varn_VALES_ALIM_MONTO number;
varn_CMRPUNTOS number;
varn_QUICKPAY_CRED number;
varn_QUICKPAY_DEB number;
varn_REDONDEO number;
varn_VALE_CONSUMO number;
varn_LINIO number;
varn_MONTOTTUS number;
--varn_GLOVO number;
--varn_UBER number;
varn_FPAY number;
varn_VUELTO number;

l_sumaMediosPago NUMBER := 0;
l_sumaJerarquias NUMBER := 0;
l_cdocAnterior NUMBER;
l_ctransacAnterior NUMBER := 0;
l_nrodctoAnterior NUMBER := 0;
l_minComprobante NUMBER := 0;
l_maxComprobante NUMBER := 0;
c_minComprobante VARCHAR2(20) := '';
c_maxComprobante VARCHAR2(20) := '';
l_seccionAnterior VARCHAR(1) := '';

l_cdocIdentidadAnterior VARCHAR2(50) := NULL;


l_min_trntechkey NUMBER := 0;
l_max_trntechkey NUMBER := 0;
var_min_trntechkey7 NUMBER := 0;
var_max_trntechkey7 NUMBER := 0;
var_min_trntechkey11 NUMBER := 0;
var_max_trntechkey11 NUMBER := 0;
l_orgLvlChildAnterior NUMBER;
l_orgLvlNumberAnterior NUMBER;
l_dcompraAnterior DATE;

Página 5/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

flag70_76_0_pacifico NUMBER:=0;
suma_70_7 NUMBER:=0;
suma_76_11 NUMBER:=0;

var_indimp_iva1 VARCHAR2(3) := '';


var_indimp_iva2 VARCHAR2(3) := '';

l_dcompra varchar2(10);

l_rut1 varchar2(50); -- Codigo RUT BANCO FALABELLA PERU S.A


l_razonsoc1 varchar2(50); -- Razon Social BANCO FALABELLA PERU S.A
l_rut3 varchar2(50); -- Codigo RUT ASOCIACION FE Y ALEGRIA DEL
PERU
l_razonsoc3 varchar2(50); -- Razon Social ASOCIACION FE Y ALEGRIA DEL
PERU
l_rut2 varchar2(50); -- Codigo RUT PACIFICO COMPAÑÍA DE SEGUROS
Y REASEGUROS S.A.
--l_razonsoc2 varchar2(50); -- Razon Social PACIFICO COMPAÑÍA DE
SEGUROS Y REASEGUROS S.A.
l_rut4 varchar2(50);--Codigo RUT PROCESOS DE MEDIOS DE PAGO S.A
l_razonsoc4 varchar2(50);--Razon Social PROCESOS DE MEDIOS DE PAGO
S.A

--Inicio MLR01
vl_org_lvl_child orgmstee.org_lvl_child%type;
vl_codsoc varchar2(5);
--Fin MLR01

--Inicio MLR02
l_Item00_XML sapfi_param.par_value%Type; -- Tag Item00
co_ParTagItem00 CONSTANT sapfi_param.par_nombre%Type :=
'TAG00_411'; -- Tag Item 00 XML
vc_fin clob;
vc_refin clob;
--Fin MLR02

----------------------------------------------------------------------------
--------------------
-- Declaciones de Cursores - Query principal de la interfaz

----------------------------------------------------------------------------
--------------------
CURSOR c0 IS
SELECT NVL(ORG_LVL_NUMBER,0) ORG_LVL_NUMBER, DCOMPRA, SUM(CANT)
CANTIDAD, NVL(CDOCUMENTO,0) CDOCUMENTO, NVL(CTRANSAC,0) CTRANSAC FROM
(select org_lvl_number, dcompra, count(org_lvl_number) CANT,
NVL(cdocumento,0) CDOCUMENTO, ctransac
from vtahdref A
where dproceso = pi_fecha_periodo
AND ctransac not in (44,42)

Página 6/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

AND ORG_LVL_NUMBER NOT IN (499,822)--se quita HTO (822)


AND CTRANSAC IN (1, 3, 30, 14, 52, 70, 31, 51, 74, 76, 79, 71)
AND A.CESTADO = 'V'
AND A.DCOMPRA >= l_dcompra
having count(org_lvl_number) > 0
group by dcompra, cdocumento, ctransac, org_lvl_number )
GROUP BY ORG_LVL_NUMBER, DCOMPRA, CDOCUMENTO, CTRANSAC
order by org_lvl_number, dcompra, SUM(CANT);
c0Row c0%RowType;

CURSOR c1(
p_minTechKey VTAHDREF.TRN_TECH_KEY%TYPE,p_maxTechKey
VTAHDREF.TRN_TECH_KEY%TYPE,
p_orgLvlChild VTAHDREF.ORG_LVL_CHILD%TYPE,
p_dproceso VTAHDREF.DPROCESO%TYPE,p_dcompra VTAHDREF.DCOMPRA%TYPE,
p_ctransac VTAHDREF.CTRANSAC%TYPE,p_cdocumento VTAHDREF.CDOCUMENTO
%TYPE, p_valor number)
IS
SELECT A.TRN_TECH_KEY, A.ORG_LVL_CHILD, A.DPROCESO, A.NTERMINAL,
A.NSECUENCIA, A.DCOMPRA
from vtahdref A, VTADPREF D
where A.CESTADO = 'V'
AND A.TRN_TECH_KEY = D.TRN_TECH_KEY
AND A.TRN_TECH_KEY BETWEEN p_minTechKey AND p_maxTechKey
AND A.ORG_LVL_CHILD = p_orgLvlChild
AND A.CTRANSAC = p_ctransac
AND (p_valor = 0 or (p_valor = 1 and D.prd_upc in (select distinct
trim(sfp.PAR_VALUE) from SAPFI_PARAM sfp
where TRIM(PAR_TYPE) = trim(co_My_Proc_Name) and
TRIM(PAR_NOMBRE) = trim(co_code_Transac)
and substr(par_desc,1,2)=trim(p_ctransac) and sfp.PAR_CODE
= nvl(p_cdocumento,0) and rownum = 1))
)
AND (p_valor = 1 or p_valor = 2 or (p_valor = 0 AND
(NVL(A.Cdocumento,0) = NVL(p_cdocumento,0) OR NVL(A.Cdocumento,0) = 0)))
AND A.Dproceso = p_dproceso
AND A.Dcompra = p_dcompra
group by A.TRN_TECH_KEY, A.ORG_LVL_CHILD, A.DPROCESO, A.NTERMINAL,
A.NSECUENCIA, A.DCOMPRA;

c1Row c1%RowType;

CURSOR c_cursoradicionalJ000 IS
-------------donaciones---------------------------------
SELECT A.dproceso,
A.dcompra,
A.org_lvl_number,
count(org_lvl_number) CANT,
70 ctransac,
0 cdocumento,
l_rut3 cdoc_identidad,
l_razonsoc3 cdoc_razonsoc,

MIN(A.TRN_TECH_KEY) min_trntechkey,
MAX(A.TRN_TECH_KEY) max_trntechkey,
NVL(SUM(DON.MDONACION), 0) mventa

Página 7/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

FROM VTADONEP DON,VTAHDREF A


WHERE DON.TRN_TECH_KEY = A.TRN_TECH_KEY
AND A.dproceso = pi_fecha_periodo
AND ctransac not in (44,42)
AND ORG_LVL_NUMBER NOT IN (499,822)
AND CTRANSAC IN (1, 3, 30, 14, 52, 70, 31, 51, 74, 76, 79, 71)
AND A.CESTADO = 'V'
AND A.TRN_TECH_KEY not in (SELECT TRN_TECH_KEY FROM VTATEMPWW WHERE
DPROCESO = pi_fecha_periodo AND TABLA = 'VTA')--REENTRADA ONLINE
having count(org_lvl_number) > 0
group by A.dproceso,A.dcompra, A.org_lvl_number
-------------exceso vales de alimento---------------------------------
UNION ALL
SELECT A.dproceso,
A.dcompra,
A.org_lvl_number,
count(org_lvl_number) CANT,
70 ctransac,
9 cdocumento,
'0' cdoc_identidad,
'' cdoc_razonsoc,

MIN(A.TRN_TECH_KEY) min_trntechkey,
MAX(A.TRN_TECH_KEY) max_trntechkey,
NVL(SUM(DMB.MEXCESO), 0) mventa
FROM VTADMBEP DMB,VTAHDREF A
WHERE DMB.TRN_TECH_KEY = A.TRN_TECH_KEY
AND A.dproceso = pi_fecha_periodo
AND ctransac not in (44,42)
AND ORG_LVL_NUMBER NOT IN (499,822)
AND CTRANSAC IN (1, 3, 30, 14, 52, 70, 31, 51, 74, 76, 79, 71)
AND A.CESTADO = 'V'
AND A.TRN_TECH_KEY not in (SELECT TRN_TECH_KEY FROM VTATEMPWW WHERE
DPROCESO = pi_fecha_periodo AND TABLA = 'VTA')--REENTRADA ONLINE
having count(org_lvl_number) > 0 and SUM(DMB.MEXCESO) <> 0
group by A.dproceso,A.dcompra, A.org_lvl_number
;
c_cursoradicionalJ000Row c_cursoradicionalJ000%RowType;

CURSOR c_cursorCabecera(p_dcompra DATE, v_local NUMBER, p_cdocumento


NUMBER, p_ctransac NUMBER) IS
SELECT SECCION,
ORG_LVL_CHILD,
DPROCESO,
DEMPRESA,
CTRANSAC,
DCOMPRA,
ORG_LVL_NUMBER,
CDOCUMENTO,
MIN(MINCOMPROBANTE)MINCOMPROBANTE,
MAX(MAXCOMPROBANTE)MAXCOMPROBANTE,
NGUIA_ELECTRONICA,
AREA_FUNCIONAL,
CODIGO_REPORTE,
SUM(MVENTA+MDESCTOPRD-MIVA - MIVA2)MVENTA,

Página 8/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

INDICADOR_IVA,

SUM(IMPUESTOADICIONAL3)IMPUESTOADICIONAL3,
IMPUESTOADICIONAL3INDICADOR,
SUM(MIVA)MIVA,
SUM(MIVA2) MIVA2,
CDOC_IDENTIDAD,
CDOC_RAZONSOC,
COND_PAGO,
0 MDESCTOPRD,
0 MDESCTOPRO,
MIN(MIN_TRNTECHKEY)MIN_TRNTECHKEY,
MAX(MAX_TRNTECHKEY)MAX_TRNTECHKEY,
NUMERO_DOC_REF,
TIPO_DOCUMENTO_REF,
VEMP_RET,
SUM(EFECTIVO/CANTIDAD) EFECTIVO,
SUM(CMR/CANTIDAD) CMR,
SUM((VISA_CREDITO/CANTIDAD)-(VISA_DEBITO/CANTIDAD)) VISA_CREDITO,
SUM(VISA_DEBITO/CANTIDAD) VISA_DEBITO,
SUM((MC_CREDITO/CANTIDAD)-(MC_DEBITO/CANTIDAD)) MC_CREDITO,
SUM((MC_DEBITO/CANTIDAD) + (GIFTCORP/CANTIDAD)) MC_DEBITO,
SUM(EXPRESSNET/CANTIDAD) EXPRESSNET,
SUM(DINERS/CANTIDAD) DINERS,
SUM(GIFT/CANTIDAD) GIFT,
SUM(CONTADOCHEQUE/CANTIDAD) CONTADOCHEQUE,
SUM(CCC/CANTIDAD) CCC,
SUM(VALECREDITO/CANTIDAD) VALECREDITO,
SUM(VALES_ALIM_MONTO/CANTIDAD) VALES_ALIM_MONTO,
SUM(CMRPUNTOS/CANTIDAD) CMRPUNTOS,
SUM(QUICKPAY_CRED/CANTIDAD) QUICKPAY_CRED,
SUM(QUICKPAY_DEB/CANTIDAD) QUICKPAY_DEB,
SUM(REDONDEO/CANTIDAD) REDONDEO,
SUM(VALE_CONSUMO/CANTIDAD) VALE_CONSUMO,
SUM(LINIO/CANTIDAD) LINIO,
SUM(MONTOTTUS/CANTIDAD) MONTOTTUS,
--SUM(GLOVO/CANTIDAD) GLOVO,
--SUM(UBER/CANTIDAD) UBER,
SUM(FPAY/CANTIDAD) FPAY,
SUM(VUELTO/CANTIDAD) VUELTO

FROM (
--Q1 Extraccion de boleta
SELECT 'A' SECCION,
A.TRN_TECH_KEY,D.NCORRELATIVO,
a.org_lvl_child,
A.DPROCESO,
--Inicio MLR01
--reemplaza empresa
--l_CodEmpresa DEMPRESA,
vl_codsoc DEMPRESA,
--Fin MLR01
A.CTRANSAC,
A.DCOMPRA,
A.ORG_LVL_NUMBER,
39 as CDOCUMENTO, --A.CDOCUMENTO,

Página 9/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

TO_CHAR(MIN(A.TRN_TECH_KEY)) mincomprobante,
TO_CHAR(MAX(A.TRN_TECH_KEY)) maxcomprobante,
0 nguia_electronica,
DECODE(TRIM(NVL(PRD_OBT_JERARQ_F(MIN(d.prd_lvl_child), 6, 1),'J01')),
'', 'J01', TRIM(NVL(PRD_OBT_JERARQ_F(MIN(d.prd_lvl_child), 6, 1),'J01')))
Area_funcional,

nvl(fn_obtieneCodReporte('P009',A.trn_tech_key,MIN(d.prd_lvl_child),MIN(d.pr
d_lvl_ch2),MIN(d.prd_upc),A.CTRANSAC) ,1) Codigo_reporte,
MIN(d.mventa) mventa,
DECODE(sum(nvl(d.miva2,0)),0, DECODE((select count(1) from FATXSEXPEE
w where w.txs_type_exe = 2 and
w.exp_prd_lvl_child=nvl(d.prd_lvl_child,0)),0,'D3','D0'),

DECODE(SUM(nvl(d.miva1,0)),0,'D1',nvl(MIN(IMP.TXS_CODE_INDIMP),'D1')))
Indicador_iva,
--
MIN(nvl(A.NMTO_DETR,0)) ImpuestoAdicional3,
MIN(nvl(A.ccod_detr,0)) ImpuestoAdicional3Indicador,

DECODE(MIN(nvl(d.miva1,0)),0,MIN(nvl(d.miva2,0)),MIN(nvl(d.miva1,0)))
miva, --si hay isc monto isc, si no igv
DECODE(SUM(nvl(d.miva1,0)),0,0,SUM(nvl(d.miva2,0))) miva2, --igv si
hay isc, igv=0 si no hay isc

'0' cdoc_identidad,
'' cdoc_razonsoc,
0 cond_pago,
MIN(D.MDESCTOPRD) MDESCTOPRD,
MIN(D.MDESCTOPRO) MDESCTOPRO,
MIN(TO_NUMBER(A.TRN_TECH_KEY)) min_trntechkey,
MAX(TO_NUMBER(A.TRN_TECH_KEY)) max_trntechkey,
'0' numero_doc_ref,
0 tipo_documento_ref,
DECODE(A.ORG_LVL_NUMBER,910,1,2) vemp_ret,
SUM((SELECT NVL(SUM(DEF.MEFECTIVO), 0) FROM VTADEFEF DEF WHERE
DEF.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS EFECTIVO,
SUM((SELECT NVL(SUM(DTI.MTARJETA), 0)FROM VTADTIEF DTI WHERE
DTI.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CMR,
--SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
-- where DTE.CTARJETA = 'V' and BN.CTIPO = 'C' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VISA_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where
DTE.CTARJETA = 'V' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VISA_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
where DTE.CTARJETA = 'V' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY
= A.TRN_TECH_KEY)) AS VISA_DEBITO,
--SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
-- where DTE.CTARJETA = 'M' and BN.CTIPO = 'C' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MC_CREDITO,

Página 10/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where


DTE.CTARJETA = 'M' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MC_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
where DTE.CTARJETA = 'M' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY
= A.TRN_TECH_KEY)) AS MC_DEBITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'A' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS EXPRESSNET,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'D' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS DINERS,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'G' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GIFTCORP,
SUM((SELECT NVL(SUM(DGT.MGIFT), 0) FROM VTADGTEF DGT WHERE
DGT.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GIFT,
SUM((SELECT NVL(SUM(DCE.MCCE), 0) FROM VTADCEEF DCE WHERE
DCE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CONTADOCHEQUE,
SUM((SELECT NVL(SUM(CCC.MCCC), 0) FROM VTADCCEF CCC WHERE
CCC.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CCC,--
SUM((SELECT NVL(SUM(DVC.MVALE), 0) FROM VTADVCEF DVC WHERE
DVC.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALECREDITO,
SUM((SELECT NVL(SUM(DMB.MMONTO), 0) FROM VTADMBEP DMB WHERE
DMB.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALES_ALIM_MONTO,
SUM((SELECT NVL(SUM(PTS.MTARJETA), 0) FROM VTAPTSEF PTS WHERE
PTS.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CMRPUNTOS,
SUM((SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND (TRIM(PQP.QPTYPEPAYMENT) = 'QPCR' or
PQP.QPTYPEPAYMENT is null ))) AS QUICKPAY_CRED,
SUM((SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND TRIM(PQP.QPTYPEPAYMENT) = 'QPDB')) AS
QUICKPAY_DEB,
SUM((SELECT NVL(SUM(ADV.MREDONDEO), 0) FROM VTADVUEP ADV WHERE
ADV.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS REDONDEO,
SUM((SELECT NVL(SUM(DPP.MVALECONSUMO), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALE_CONSUMO,
SUM((SELECT NVL(SUM(DPP.MVALELIN), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS LINIO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'T' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MONTOTTUS,
--SUM((SELECT NVL(SUM(DPP.MVALEGLV), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GLOVO,
--SUM((SELECT NVL(SUM(DPP.MVALEUBR), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS UBER,
SUM((SELECT NVL(SUM(PAY.MWALLET), 0)FROM VTAEPAYP PAY WHERE
PAY.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS FPAY,
SUM((SELECT NVL(SUM(DTE.MCASH_BACK),0) FROM VTADTEEF DTE WHERE
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY AND DTE.BMATCH = 'D')) VUELTO,

(SELECT NVL(COUNT(DET.NCORRELATIVO),1) FROM VTADPREF DET WHERE


DET.TRN_TECH_KEY = A.TRN_TECH_KEY) CANTIDAD

FROM VTAHDREF A, VTATTRCF TTR, VTADPREF D left join PRDMSTEE PRD


ON D.prd_lvl_child=PRD.prd_lvl_child left join TXSPRDEE TPR
ON TPR.prd_lvl_child=PRD.prd_lvl_child left join TXSCODEE TXS
ON TXS.TXS_CODE_TECH_KEY = TPR.TXS_CODE_TECH_KEY left join
SAPFI_INDIMPDET IMP

Página 11/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

ON IMP.TXS_CODE_TECH_KEY = TXS.TXS_CODE_TECH_KEY
WHERE A.TRN_TECH_KEY NOT IN (SELECT CC.TRN_TECH_KEY FROM
VTADCCEF CC where CC.TRN_TECH_KEY =A.TRN_TECH_KEY)
AND A.DPROCESO = pi_fecha_periodo

AND A.DCOMPRA = p_dcompra


AND A.TRN_TECH_KEY = D.TRN_TECH_KEY
AND A.CESTADO = 'V'
AND A.CTRANSAC = TTR.CTRANSAC
AND a.ORG_LVL_NUMBER = v_local
AND TO_CHAR(NVL(a.cdocumento,0)) = to_char(p_cdocumento)
AND p_cdocumento = 3
AND a.ctransac = p_ctransac
/* AND A.TRN_TECH_KEY not in (select tb2.TRN_TECH_KEY from VTAHDREF
tb2,(SELECT DPROCESO,NTERMINAL, NSECUENCIA,
DCOMPRA,ORG_LVL_NUMBER,TCOMPROBANTE_E,CSERIE_ELECTRONICA,NCOMPROBANTE
from VTAHDREF WHERE CESTADO = 'V' AND DCOMPRA = p_dcompra AND
ORG_LVL_NUMBER = v_local AND p_cdocumento = 3 AND ctransac = p_ctransac AND
TO_CHAR(NVL(cdocumento,0)) = to_char(p_cdocumento)
and DPROCESO = pi_fecha_periodo AND trn_tech_key between p_trnmini
and p_trnmaxi GROUP BY DPROCESO,NTERMINAL, NSECUENCIA,
DCOMPRA,ORG_LVL_NUMBER,TCOMPROBANTE_E,CSERIE_ELECTRONICA,NCOMPROBANTE
having sum(MMONTO)=0) tb1 where tb2.CESTADO = 'V' AND
tb2.DCOMPRA = p_dcompra AND tb2.ORG_LVL_NUMBER = v_local AND tb2.ctransac =
p_ctransac
AND TO_CHAR(NVL(tb2.cdocumento,0)) = to_char(p_cdocumento)
AND tb1.DPROCESO = tb2.DPROCESO AND tb1.NTERMINAL = tb2.NTERMINAL AND
tb1.NSECUENCIA = tb2.NSECUENCIA
AND tb1.DCOMPRA = tb2.DCOMPRA AND tb1.ORG_LVL_NUMBER =
tb2.ORG_LVL_NUMBER AND tb1.TCOMPROBANTE_E = tb2.TCOMPROBANTE_E
AND tb1.CSERIE_ELECTRONICA = tb2.CSERIE_ELECTRONICA AND
tb1.NCOMPROBANTE = tb2.NCOMPROBANTE AND tb2.trn_tech_key between p_trnmini
and p_trnmaxi)*/
AND A.TRN_TECH_KEY not in (SELECT TRN_TECH_KEY FROM VTATEMPWW WHERE
DPROCESO = pi_fecha_periodo AND TABLA = 'VTA')--REENTRADA ONLINE
GROUP BY
A.TRN_TECH_KEY,D.NCORRELATIVO, d.prd_lvl_child,
A.org_lvl_child,
A.DPROCESO,
A.CTRANSAC,
A.DCOMPRA,
A.ORG_LVL_NUMBER
)
GROUP BY
SECCION,
ORG_LVL_CHILD,
DPROCESO,
DEMPRESA,
CTRANSAC,
DCOMPRA,
ORG_LVL_NUMBER,
CDOCUMENTO,
NGUIA_ELECTRONICA,
AREA_FUNCIONAL,
CODIGO_REPORTE,
INDICADOR_IVA,

Página 12/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

IMPUESTOADICIONAL3INDICADOR,
CDOC_IDENTIDAD,
CDOC_RAZONSOC,
COND_PAGO,
NUMERO_DOC_REF,
TIPO_DOCUMENTO_REF,
VEMP_RET

UNION ALL
SELECT SECCION,
ORG_LVL_CHILD,
DPROCESO,
DEMPRESA,
CTRANSAC,
DCOMPRA,
ORG_LVL_NUMBER,
CDOCUMENTO,
MIN(MINCOMPROBANTE) MINCOMPROBANTE,
MAX(MAXCOMPROBANTE) MAXCOMPROBANTE,
NGUIA_ELECTRONICA,
AREA_FUNCIONAL,
CODIGO_REPORTE,
SUM(MVENTA+MDESCTOPRD-MIVA -MIVA2)MVENTA,
INDICADOR_IVA,

MAX(IMPUESTOADICIONAL3) IMPUESTOADICIONAL3,
IMPUESTOADICIONAL3INDICADOR,
SUM(MIVA) MIVA,
SUM(MIVA2) MIVA2,
CDOC_IDENTIDAD,
CDOC_RAZONSOC,
COND_PAGO,
0 MDESCTOPRD,
0 MDESCTOPRO,
MIN(MIN_TRNTECHKEY) MIN_TRNTECHKEY,
MAX(MAX_TRNTECHKEY) MAX_TRNTECHKEY,
NUMERO_DOC_REF,
TIPO_DOCUMENTO_REF,
VEMP_RET,
SUM(EFECTIVO/CANTIDAD) EFECTIVO,
SUM(CMR/CANTIDAD) CMR,
SUM((VISA_CREDITO-VISA_DEBITO)/CANTIDAD) VISA_CREDITO,
SUM(VISA_DEBITO/CANTIDAD) VISA_DEBITO,
SUM((MC_CREDITO-MC_DEBITO)/CANTIDAD) MC_CREDITO,
SUM(MC_DEBITO/CANTIDAD) MC_DEBITO,
SUM(EXPRESSNET/CANTIDAD) EXPRESSNET,
SUM(DINERS/CANTIDAD) DINERS,
SUM(GIFT/CANTIDAD) GIFT,
SUM(CONTADOCHEQUE/CANTIDAD) CONTADOCHEQUE,
SUM(CCC/CANTIDAD) CCC,
SUM(VALECREDITO/CANTIDAD) VALECREDITO,
SUM(VALES_ALIM_MONTO/CANTIDAD) VALES_ALIM_MONTO,
SUM(CMRPUNTOS/CANTIDAD) CMRPUNTOS,
SUM(QUICKPAY_CRED/CANTIDAD) QUICKPAY_CRED,
SUM(QUICKPAY_DEB/CANTIDAD) QUICKPAY_DEB,

Página 13/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

SUM(REDONDEO/CANTIDAD) REDONDEO,
SUM(VALE_CONSUMO/CANTIDAD) VALE_CONSUMO,
SUM(LINIO/CANTIDAD) LINIO,
SUM(MONTOTTUS/CANTIDAD) MONTOTTUS,
--SUM(GLOVO/CANTIDAD) GLOVO,
--SUM(UBER/CANTIDAD) UBER,
SUM(FPAY/CANTIDAD) FPAY,
SUM(VUELTO/CANTIDAD) VUELTO

FROM (SELECT ---Q2 Query Agrupada


DECODE(NVL(A.TCOMPROBANTE_E,''),'','A','B') SECCION,
A.TRN_TECH_KEY,D.NCORRELATIVO,
a.org_lvl_child,
A.DPROCESO,
--Inicio MLR01
--Reemplaza Empresa
--l_CodEmpresa DEMPRESA,
vl_codsoc DEMPRESA,
--Fin MLR01
A.CTRANSAC,
A.DCOMPRA,
A.ORG_LVL_NUMBER,

DECODE(NVL(A.TCOMPROBANTE_E,''),'',39,1) AS CDOCUMENTO,

DECODE(NVL(A.TCOMPROBANTE_E,''),'',TO_CHAR(MIN(A.TRN_TECH_KEY)),
MIN(A.TCOMPROBANTE_E || A.CSERIE_ELECTRONICA || '-' ||
TRIM((A.NCOMPROBANTE))) ) mincomprobante,

DECODE(NVL(A.TCOMPROBANTE_E,''),'',TO_CHAR(MAX(A.TRN_TECH_KEY)),
MAX(A.TCOMPROBANTE_E || A.CSERIE_ELECTRONICA || '-' ||
TRIM((A.NCOMPROBANTE))) ) MAXCOMPROBANTE,

0 nguia_electronica,
DECODE(NVL(MIN(d.prd_lvl_child),0), 0, 'J01',
NVL(prd_obt_jerarq_f(MIN(d.prd_lvl_child), 6, 1),'J01'))
Area_funcional,

nvl(fn_obtieneCodReporte('P009',A.trn_tech_key,MIN(d.prd_lvl_child),MIN(d.pr
d_lvl_ch2),MIN(d.prd_upc),A.CTRANSAC) ,1) Codigo_reporte,
MIN(d.mventa) mventa,

DECODE(sum(nvl(d.miva2,0)),0, DECODE((select count(1) from


FATXSEXPEE w where w.txs_type_exe = 2 and
w.exp_prd_lvl_child=nvl(d.prd_lvl_child,0)),0,'D3','D0'),

DECODE(SUM(nvl(d.miva1,0)),0,'D1',nvl(MIN(IMP.TXS_CODE_INDIMP),'D1')))
Indicador_iva,

MIN(nvl(A.NMTO_DETR,0)) ImpuestoAdicional3,
MIN(nvl(A.ccod_detr,0)) ImpuestoAdicional3Indicador,

DECODE(MIN(nvl(d.miva1,0)),0,MIN(nvl(d.miva2,0)),MIN(nvl(d.miva1,0))) miva,

Página 14/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

DECODE(SUM(nvl(d.miva1,0)),0,0,SUM(nvl(d.miva2,0))) miva2,

DECODE(NVL(A.TCOMPROBANTE_E,''),'','0',(SELECT
TO_CHAR(dfc.nrutfactura) FROM vtadfcef dfc WHERE
dfc.trn_tech_key=A.TRN_TECH_KEY AND ROWNUM < 2)) cdoc_identidad,

DECODE(NVL(A.TCOMPROBANTE_E,''),'','',(select vpc.vendor_name from


vtadfcef dfc,vpcmstee vpc where (vpc.vendor_number =
substr(dfc.nrutfactura,1,10) or vpc.vendor_number = dfc.nrutfactura)
and dfc.trn_tech_key = A.TRN_TECH_KEY and ROWNUM = 1))
cdoc_razonsoc,
0 cond_pago,
MIN(D.MDESCTOPRD) MDESCTOPRD,
MIN(D.MDESCTOPRO) MDESCTOPRO,
MIN(A.TRN_TECH_KEY) min_trntechkey,
MAX(A.TRN_TECH_KEY) max_trntechkey,
'0' numero_doc_ref,
0 tipo_documento_ref,
DECODE(A.ORG_LVL_NUMBER,910,1,2) vemp_ret,
SUM((SELECT NVL(SUM(DEF.MEFECTIVO), 0) FROM VTADEFEF DEF WHERE
DEF.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS EFECTIVO,
SUM((SELECT NVL(SUM(DTI.MTARJETA), 0)FROM VTADTIEF DTI WHERE
DTI.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CMR,
--SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
-- where DTE.CTARJETA = 'V' and BN.CTIPO = 'C' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VISA_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where
DTE.CTARJETA = 'V' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VISA_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
where DTE.CTARJETA = 'V' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY
= A.TRN_TECH_KEY)) AS VISA_DEBITO,
--SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
-- where DTE.CTARJETA = 'M' and BN.CTIPO = 'C' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MC_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where
DTE.CTARJETA = 'M' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MC_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
where DTE.CTARJETA = 'M' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY
= A.TRN_TECH_KEY)) AS MC_DEBITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'A' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS EXPRESSNET,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'D' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS DINERS,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'G' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GIFTCORP,
SUM((SELECT NVL(SUM(DGT.MGIFT), 0) FROM VTADGTEF DGT WHERE
DGT.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GIFT,

Página 15/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

SUM((SELECT NVL(SUM(DCE.MCCE), 0) FROM VTADCEEF DCE WHERE


DCE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CONTADOCHEQUE,
SUM((SELECT NVL(SUM(CCC.MCCC), 0) FROM VTADCCEF CCC WHERE
CCC.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CCC,--
SUM((SELECT NVL(SUM(DVC.MVALE), 0) FROM VTADVCEF DVC WHERE
DVC.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALECREDITO,
SUM((SELECT NVL(SUM(DMB.MMONTO), 0) FROM VTADMBEP DMB WHERE
DMB.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALES_ALIM_MONTO,
SUM((SELECT NVL(SUM(PTS.MTARJETA), 0) FROM VTAPTSEF PTS WHERE
PTS.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CMRPUNTOS,
SUM((SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND (TRIM(PQP.QPTYPEPAYMENT) = 'QPCR' or
PQP.QPTYPEPAYMENT is null ))) AS QUICKPAY_CRED,
SUM((SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND TRIM(PQP.QPTYPEPAYMENT) = 'QPDB')) AS
QUICKPAY_DEB,
SUM((SELECT NVL(SUM(ADV.MREDONDEO), 0) FROM VTADVUEP ADV WHERE
ADV.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS REDONDEO,
SUM((SELECT NVL(SUM(DPP.MVALECONSUMO), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALE_CONSUMO,
SUM((SELECT NVL(SUM(DPP.MVALELIN), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS LINIO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'T' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MONTOTTUS,
--SUM((SELECT NVL(SUM(DPP.MVALEGLV), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GLOVO,
--SUM((SELECT NVL(SUM(DPP.MVALEUBR), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS UBER,
SUM((SELECT NVL(SUM(PAY.MWALLET), 0) FROM VTAEPAYP PAY WHERE
PAY.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS FPAY,
SUM((SELECT NVL(SUM(DTE.MCASH_BACK),0) FROM VTADTEEF DTE WHERE
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY AND DTE.BMATCH = 'D')) VUELTO,

(SELECT NVL(COUNT(DET.NCORRELATIVO),1) FROM VTADPREF DET WHERE


DET.TRN_TECH_KEY = A.TRN_TECH_KEY) CANTIDAD

FROM VTAHDREF A, VTATTRCF TTR, VTADPREF D left join PRDMSTEE PRD


ON D.prd_lvl_child=PRD.prd_lvl_child left join TXSPRDEE TPR
ON TPR.prd_lvl_child=PRD.prd_lvl_child left join TXSCODEE TXS
ON TXS.TXS_CODE_TECH_KEY = TPR.TXS_CODE_TECH_KEY left join
SAPFI_INDIMPDET IMP
ON IMP.TXS_CODE_TECH_KEY = TXS.TXS_CODE_TECH_KEY
WHERE A.DPROCESO = pi_fecha_periodo
AND A.DCOMPRA = p_dcompra

AND A.TRN_TECH_KEY = D.TRN_TECH_KEY


AND A.CESTADO = 'V'
AND A.CTRANSAC = TTR.CTRANSAC
AND to_char(p_cdocumento) IN (SELECT TO_CHAR(PAR_VALUE)
FROM SAPFI_PARAM
WHERE TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name)
AND TRIM(PAR_NOMBRE) = TRIM(co_cdocumento_agrupado))
AND to_char(p_ctransac) IN (SELECT TO_CHAR(PAR_VALUE)
FROM SAPFI_PARAM
WHERE TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name)
AND TRIM(PAR_NOMBRE) = TRIM(co_ctransac_whitelist_agrupado))--

Página 16/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

CTRANSAC_WHITELIST
AND a.ORG_LVL_NUMBER = v_local
AND TO_CHAR(NVL(a.cdocumento,0)) = to_char(p_cdocumento)
AND a.ctransac = p_ctransac
/* AND A.TRN_TECH_KEY not in (select tb2.TRN_TECH_KEY from VTAHDREF
tb2,(SELECT DPROCESO,NTERMINAL, NSECUENCIA,
DCOMPRA,ORG_LVL_NUMBER,TCOMPROBANTE_E,CSERIE_ELECTRONICA,NCOMPROBANTE
from VTAHDREF WHERE CESTADO = 'V' AND DCOMPRA = p_dcompra AND
ORG_LVL_NUMBER = v_local AND ctransac = p_ctransac AND
TO_CHAR(NVL(cdocumento,0)) = to_char(p_cdocumento)
and DPROCESO = pi_fecha_periodo AND trn_tech_key between
p_trnmini and p_trnmaxi GROUP BY DPROCESO,NTERMINAL, NSECUENCIA,
DCOMPRA,ORG_LVL_NUMBER,TCOMPROBANTE_E,CSERIE_ELECTRONICA,NCOMPROBANTE
having sum(MMONTO)=0) tb1 where tb2.CESTADO = 'V' AND
tb2.DCOMPRA = p_dcompra AND tb2.ORG_LVL_NUMBER = v_local AND tb2.ctransac =
p_ctransac
AND TO_CHAR(NVL(tb2.cdocumento,0)) =
to_char(p_cdocumento) AND tb1.DPROCESO = tb2.DPROCESO AND tb1.NTERMINAL =
tb2.NTERMINAL AND tb1.NSECUENCIA = tb2.NSECUENCIA
AND tb1.DCOMPRA = tb2.DCOMPRA AND tb1.ORG_LVL_NUMBER =
tb2.ORG_LVL_NUMBER AND tb1.TCOMPROBANTE_E = tb2.TCOMPROBANTE_E
AND tb1.CSERIE_ELECTRONICA = tb2.CSERIE_ELECTRONICA AND
tb1.NCOMPROBANTE = tb2.NCOMPROBANTE AND tb2.trn_tech_key between p_trnmini
and p_trnmaxi)*/
AND A.TRN_TECH_KEY not in (SELECT TRN_TECH_KEY FROM VTATEMPWW WHERE
DPROCESO = pi_fecha_periodo AND TABLA = 'VTA')--REENTRADA ONLINE
GROUP BY
A.TRN_TECH_KEY,D.NCORRELATIVO,d.prd_lvl_child,
A.TCOMPROBANTE_E,A.CSERIE_ELECTRONICA,A.NCOMPROBANTE,
A.DCOMPRA,
a.org_lvl_child,
A.DPROCESO,
A.NTERMINAL,
A.NSECUENCIA,
A.ORG_LVL_NUMBER,
A.CTRANSAC,
A.CDOCUMENTO
ORDER BY A.CTRANSAC, A.ORG_LVL_NUMBER, A.DPROCESO, A.DCOMPRA,
cdoc_identidad)
GROUP BY SECCION,ORG_LVL_CHILD, DPROCESO, DEMPRESA, CTRANSAC,
DCOMPRA, ORG_LVL_NUMBER, CDOCUMENTO,
NGUIA_ELECTRONICA, AREA_FUNCIONAL,CODIGO_REPORTE, INDICADOR_IVA,
IMPUESTOADICIONAL3INDICADOR, CDOC_IDENTIDAD, CDOC_RAZONSOC,
COND_PAGO,
NUMERO_DOC_REF, TIPO_DOCUMENTO_REF, VEMP_RET
UNION ALL
SELECT SECCION, --QUERY DESAGRUPADA
ORG_LVL_CHILD,
DPROCESO,
DEMPRESA,
CTRANSAC,
DCOMPRA,
ORG_LVL_NUMBER,
CDOCUMENTO,
MINCOMPROBANTE,
MAXCOMPROBANTE,

Página 17/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

NGUIA_ELECTRONICA,
AREA_FUNCIONAL,
DECODE(min(prd_sku_type),
'099',DECODE((SELECT count(pep.NRUT) FROM VTAEMPEP pep
WHERE pep.NRUT = trim(CDOC_IDENTIDAD)),0,

DECODE(CDOCUMENTO,90,3,CODIGO_REPORTE),DECODE(CDOCUMENTO,90,5,4)),CODIGO_REP
ORTE)CODIGO_REPORTE,
SUM(MVENTA+MDESCTOPRD-MIVA -MIVA2)MVENTA,
INDICADOR_IVA,

MAX(IMPUESTOADICIONAL3) IMPUESTOADICIONAL3,
IMPUESTOADICIONAL3INDICADOR,
SUM(MIVA) MIVA,
SUM(MIVA2) MIVA2,
CDOC_IDENTIDAD,
CDOC_RAZONSOC,
COND_PAGO,
0 MDESCTOPRD,
0 MDESCTOPRO,
MIN_TRNTECHKEY MIN_TRNTECHKEY,
MAX_TRNTECHKEY MAX_TRNTECHKEY,
NUMERO_DOC_REF,
TIPO_DOCUMENTO_REF,
VEMP_RET,
SUM(EFECTIVO/CANTIDAD) EFECTIVO,
SUM(CMR/CANTIDAD) CMR,
SUM((VISA_CREDITO/CANTIDAD)-(VISA_DEBITO/CANTIDAD))
VISA_CREDITO,
SUM(VISA_DEBITO/CANTIDAD) VISA_DEBITO,
SUM((MC_CREDITO/CANTIDAD)-(MC_DEBITO/CANTIDAD)) MC_CREDITO,
SUM((MC_DEBITO/CANTIDAD) + (GIFTCORP/CANTIDAD)) MC_DEBITO,
SUM(EXPRESSNET/CANTIDAD) EXPRESSNET,
SUM(DINERS/CANTIDAD) DINERS,
SUM(GIFT/CANTIDAD) GIFT,
SUM(CONTADOCHEQUE/CANTIDAD) CONTADOCHEQUE,
SUM(CCC/CANTIDAD) CCC,
SUM(VALECREDITO/CANTIDAD) VALECREDITO,
SUM(VALES_ALIM_MONTO/CANTIDAD) VALES_ALIM_MONTO,
SUM(CMRPUNTOS/CANTIDAD) CMRPUNTOS,
SUM(QUICKPAY_CRED/CANTIDAD) QUICKPAY_CRED,
SUM(QUICKPAY_DEB/CANTIDAD) QUICKPAY_DEB,
SUM(REDONDEO/CANTIDAD) REDONDEO,
SUM(VALE_CONSUMO/CANTIDAD) VALE_CONSUMO,
SUM(LINIO/CANTIDAD) LINIO,
SUM(MONTOTTUS/CANTIDAD) MONTOTTUS,
--SUM(GLOVO/CANTIDAD) GLOVO,
--SUM(UBER/CANTIDAD) UBER,
SUM(FPAY/CANTIDAD) FPAY,
SUM(VUELTO/CANTIDAD) VUELTO

FROM (
SELECT
'B' SECCION,--Q3
A.TRN_TECH_KEY,D.NCORRELATIVO, prd.prd_sku_type,
a.org_lvl_child,

Página 18/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

A.DPROCESO,
--Inicio MLR01
--Reemplaza Empresa
--l_CodEmpresa DEMPRESA,
vl_codsoc DEMPRESA,
--Fin MLR01
DECODE(A.CDOCUMENTO,1,11,7,11,A.CTRANSAC) as CTRANSAC,--
A.CTRANSAC,
A.DCOMPRA,
A.ORG_LVL_NUMBER,

DECODE(A.CTRANSAC,1,DECODE(A.CDOCUMENTO,1,33,3,39,NVL(A.CDOCUMENTO,0)),30,90
,NVL(A.CDOCUMENTO,0)) AS CDOCUMENTO,

TO_CHAR(nvl(A.TCOMPROBANTE_E || A.CSERIE_ELECTRONICA || '-' ||


TRIM((A.NCOMPROBANTE)),A.TRN_TECH_KEY)) mincomprobante,
TO_CHAR(nvl(A.TCOMPROBANTE_E || A.CSERIE_ELECTRONICA || '-' ||
TRIM((A.NCOMPROBANTE)),A.TRN_TECH_KEY)) maxcomprobante,

0 nguia_electronica,

DECODE(NVL(MIN(d.prd_lvl_child),0), 0, 'J01',
NVL(prd_obt_jerarq_f(MIN(d.prd_lvl_child), 6, 1),'J01'))
Area_funcional,

nvl(fn_obtieneCodReporte('P009',A.trn_tech_key,MIN(d.prd_lvl_child),MIN(d.pr
d_lvl_ch2),MIN(d.prd_upc),A.CTRANSAC) ,1) Codigo_reporte,
MIN(d.mventa) mventa,

DECODE(sum(nvl(d.miva2,0)),0, DECODE((select count(1) from


FATXSEXPEE w where w.txs_type_exe = 2 and
w.exp_prd_lvl_child=nvl(d.prd_lvl_child,0)),0,'D3','D0'),

DECODE(SUM(nvl(d.miva1,0)),0,'D1',nvl(MIN(IMP.TXS_CODE_INDIMP),'D1')))
Indicador_iva,

MIN(nvl(A.NMTO_DETR,0)) ImpuestoAdicional3,
DECODE(MIN(nvl(d.miva,0)),0,MIN(nvl(A.ccod_detr,0)),0)
ImpuestoAdicional3Indicador,

DECODE(MIN(nvl(d.miva1,0)),0,MIN(nvl(d.miva2,0)),MIN(nvl(d.miva1,0))) miva,
DECODE(SUM(nvl(d.miva1,0)),0,0,SUM(nvl(d.miva2,0))) miva2,

NVL(DECODE(A.CTRANSAC, 30,DECODE (nvl((SELECT FB.NRUT FROM


FANCRHDREF FA, FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD
AND LENGTH(FB.NRUT) > 7

Página 19/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM <


2),0),0,DECODE(nvl(translate(A.cdoc_identidad,'T
0123456789','T'),'0'),'0',A.cdoc_identidad,0),
(SELECT FB.NRUT FROM FANCRHDREF FA, FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD
AND LENGTH(FB.NRUT) > 7
AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM < 2)),
31,DECODE (nvl((SELECT FB.NRUT FROM FANCRHDREF FA, FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD
AND LENGTH(FB.NRUT) > 7
AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM <
2),0),0,DECODE(nvl(translate(A.cdoc_identidad,'T
0123456789','T'),'0'),'0',A.cdoc_identidad,0),
(SELECT FB.NRUT FROM FANCRHDREF FA, FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD
AND LENGTH(FB.NRUT) > 7
AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM < 2))
,TO_CHAR((SELECT dfc.nrutfactura FROM vtadfcef dfc WHERE
dfc.trn_tech_key=A.TRN_TECH_KEY AND ROWNUM < 2))),'0') cdoc_identidad,

DECODE(A.CTRANSAC, 30,
(SELECT FB.XNOMBRE FROM FANCRHDREF FA, FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD
AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM < 2),
31,(SELECT FB.XNOMBRE FROM FANCRHDREF FA, FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD
AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM < 2),
(select vpc.vendor_name from vtadfcef dfc,vpcmstee vpc where
(vpc.vendor_number = substr(dfc.nrutfactura,1,10) or vpc.vendor_number =
dfc.nrutfactura)
and dfc.trn_tech_key = A.TRN_TECH_KEY and ROWNUM = 1))
cdoc_razonsoc,
NVL((SELECT CPAGO FROM VTADXCEF CEF WHERE CEF.TRN_TECH_KEY =
A.TRN_TECH_KEY AND ROWNUM < 2),0) cond_pago,
MIN(D.MDESCTOPRD) MDESCTOPRD,
MIN(D.MDESCTOPRO) MDESCTOPRO,
A.TRN_TECH_KEY min_trntechkey,
A.TRN_TECH_KEY max_trntechkey,
DECODE(A.CDOCUMENTO,
7,
(SELECT HREF.TCOMPROBANTE_E || HREF.CSERIE_ELECTRONICA||'-'||

Página 20/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

TO_NUMBER(nvl(HREF.NCOMPROBANTE,0))
FROM fancrhdref FREF, VTAHDREF HREF--HREF.CDOCUMENTO
WHERE FREF.org_lvl_child = A.org_lvl_child
AND FREF.nterminal = A.nterminal
AND FREF.nsecuencia = A.nsecuencia
AND FREF.DCOMPRA = A.DCOMPRA
AND HREF.org_lvl_child = FREF.org_lvl_child_Ant
AND HREF.nterminal = FREF.Nterminal_Ant
AND HREF.nsecuencia = FREF.Nsecuencia_Ant
AND HREF.DCOMPRA = FREF.DCOMPRA_ANT AND ROWNUM < 2),
1,'1',
'0') numero_doc_ref,
DECODE(A.CDOCUMENTO,
7,33,
1,801,
0) tipo_documento_ref,
DECODE(A.ORG_LVL_NUMBER,910,1,2) vemp_ret,
SUM((SELECT NVL(SUM(DEF.MEFECTIVO), 0) FROM VTADEFEF DEF WHERE
DEF.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS EFECTIVO,
SUM((SELECT NVL(SUM(DTI.MTARJETA), 0)FROM VTADTIEF DTI WHERE
DTI.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CMR,
--SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
--where DTE.CTARJETA = 'V' and BN.CTIPO = 'C' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VISA_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where
DTE.CTARJETA = 'V' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VISA_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
where DTE.CTARJETA = 'V' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY
= A.TRN_TECH_KEY)) AS VISA_DEBITO,
--SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
--where DTE.CTARJETA = 'M' and BN.CTIPO = 'C' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MC_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where
DTE.CTARJETA = 'M' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MC_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
where DTE.CTARJETA = 'M' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY
= A.TRN_TECH_KEY)) AS MC_DEBITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'A' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS EXPRESSNET,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'D' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS DINERS,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'G' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GIFTCORP,
SUM((SELECT NVL(SUM(DGT.MGIFT), 0) FROM VTADGTEF DGT WHERE
DGT.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GIFT,
SUM((SELECT NVL(SUM(DCE.MCCE), 0) FROM VTADCEEF DCE WHERE
DCE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CONTADOCHEQUE,
NVL(SUM(CC.MCCC), 0) AS CCC,--

Página 21/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

SUM((SELECT NVL(SUM(DVC.MVALE), 0) FROM VTADVCEF DVC WHERE


DVC.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALECREDITO,
SUM((SELECT NVL(SUM(DMB.MMONTO), 0) FROM VTADMBEP DMB WHERE
DMB.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALES_ALIM_MONTO,
SUM((SELECT NVL(SUM(PTS.MTARJETA), 0) FROM VTAPTSEF PTS WHERE
PTS.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CMRPUNTOS,
SUM((SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND (TRIM(PQP.QPTYPEPAYMENT) = 'QPCR' or
PQP.QPTYPEPAYMENT is null ))) AS QUICKPAY_CRED,
SUM((SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND TRIM(PQP.QPTYPEPAYMENT) = 'QPDB')) AS
QUICKPAY_DEB,
SUM((SELECT NVL(SUM(ADV.MREDONDEO), 0) FROM VTADVUEP ADV WHERE
ADV.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS REDONDEO,
SUM((SELECT NVL(SUM(DPP.MVALECONSUMO), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALE_CONSUMO,
SUM((SELECT NVL(SUM(DPP.MVALELIN), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS LINIO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'T' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MONTOTTUS,
--SUM((SELECT NVL(SUM(DPP.MVALEGLV), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GLOVO,
--SUM((SELECT NVL(SUM(DPP.MVALEUBR), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS UBER,
SUM((SELECT NVL(SUM(PAY.MWALLET), 0) FROM VTAEPAYP PAY WHERE
PAY.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS FPAY,
SUM((SELECT NVL(SUM(DTE.MCASH_BACK),0) FROM VTADTEEF DTE WHERE
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY AND DTE.BMATCH = 'D')) VUELTO,

(SELECT NVL(COUNT(DET.NCORRELATIVO),1) FROM VTADPREF DET WHERE


DET.TRN_TECH_KEY = A.TRN_TECH_KEY) CANTIDAD

FROM VTAHDREF A, VTATTRCF TTR, VTADPREF D left join PRDMSTEE PRD


ON D.prd_lvl_child=PRD.prd_lvl_child left join TXSPRDEE TPR
ON TPR.prd_lvl_child=PRD.prd_lvl_child left join TXSCODEE TXS
ON TXS.TXS_CODE_TECH_KEY = TPR.TXS_CODE_TECH_KEY left join
SAPFI_INDIMPDET IMP
ON IMP.TXS_CODE_TECH_KEY = TXS.TXS_CODE_TECH_KEY, VTADCCEF CC --
Query desagrupado las ventas al credito
WHERE A.DPROCESO = pi_fecha_periodo
AND A.DCOMPRA = p_dcompra

AND A.TRN_TECH_KEY = D.TRN_TECH_KEY


AND A.TRN_TECH_KEY = CC.TRN_TECH_KEY
AND A.CESTADO = 'V'
AND A.CTRANSAC = TTR.CTRANSAC
AND to_char(p_cdocumento) IN (SELECT TO_CHAR(PAR_VALUE)
FROM SAPFI_PARAM
WHERE TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name)
AND TRIM(PAR_NOMBRE) = TRIM(co_cdocumento_desagrupadoCC))
AND to_char(p_ctransac) IN (SELECT TO_CHAR(PAR_VALUE)
FROM SAPFI_PARAM
WHERE TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name)
AND TRIM(PAR_NOMBRE) = TRIM(co_ctransac_whitelist_desagrup))
AND a.ORG_LVL_NUMBER = v_local
AND TO_CHAR(NVL(a.cdocumento,0)) = to_char(p_cdocumento)

Página 22/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

AND a.ctransac = p_ctransac


/* AND A.TRN_TECH_KEY not in (select tb2.TRN_TECH_KEY from VTAHDREF
tb2,(SELECT DPROCESO,NTERMINAL, NSECUENCIA,
DCOMPRA,ORG_LVL_NUMBER,TCOMPROBANTE_E,CSERIE_ELECTRONICA,NCOMPROBANTE
from VTAHDREF WHERE CESTADO = 'V' AND DCOMPRA = p_dcompra AND
ORG_LVL_NUMBER = v_local AND ctransac = p_ctransac AND
TO_CHAR(NVL(cdocumento,0)) = to_char(p_cdocumento)
and DPROCESO = pi_fecha_periodo AND trn_tech_key between
p_trnmini and p_trnmaxi GROUP BY DPROCESO,NTERMINAL, NSECUENCIA,
DCOMPRA,ORG_LVL_NUMBER,TCOMPROBANTE_E,CSERIE_ELECTRONICA,NCOMPROBANTE
having sum(MMONTO)=0) tb1 where tb2.CESTADO = 'V' AND
tb2.DCOMPRA = p_dcompra AND tb2.ORG_LVL_NUMBER = v_local AND tb2.ctransac =
p_ctransac
AND TO_CHAR(NVL(tb2.cdocumento,0)) =
to_char(p_cdocumento) AND tb1.DPROCESO = tb2.DPROCESO AND tb1.NTERMINAL =
tb2.NTERMINAL AND tb1.NSECUENCIA = tb2.NSECUENCIA
AND tb1.DCOMPRA = tb2.DCOMPRA AND tb1.ORG_LVL_NUMBER =
tb2.ORG_LVL_NUMBER AND tb1.TCOMPROBANTE_E = tb2.TCOMPROBANTE_E
AND tb1.CSERIE_ELECTRONICA = tb2.CSERIE_ELECTRONICA
AND tb1.NCOMPROBANTE = tb2.NCOMPROBANTE AND tb2.trn_tech_key between
p_trnmini and p_trnmaxi)*/
AND A.TRN_TECH_KEY not in (SELECT TRN_TECH_KEY FROM VTATEMPWW WHERE
DPROCESO = pi_fecha_periodo AND TABLA = 'VTA')--REENTRADA ONLINE
GROUP BY
A.TRN_TECH_KEY,D.NCORRELATIVO,d.prd_lvl_child,
A.TCOMPROBANTE_E,A.CSERIE_ELECTRONICA,
A.DCOMPRA,
a.org_lvl_child,prd.prd_sku_type,
A.DPROCESO,
A.ORG_LVL_NUMBER,
A.CDOCUMENTO,
A.CTRANSAC,

A.cdoc_identidad,

A.NCOMPROBANTE,
A.NTERMINAL,
A.NSECUENCIA

ORDER BY mincomprobante, A.ORG_LVL_NUMBER, A.DPROCESO, A.DCOMPRA,


area_funcional, cdoc_identidad)
GROUP BY SECCION,ORG_LVL_CHILD, DPROCESO, DEMPRESA, CTRANSAC,
DCOMPRA, ORG_LVL_NUMBER, CDOCUMENTO,
NGUIA_ELECTRONICA,
AREA_FUNCIONAL,CODIGO_REPORTE, INDICADOR_IVA,
IMPUESTOADICIONAL3INDICADOR, CDOC_IDENTIDAD, CDOC_RAZONSOC,
COND_PAGO,
NUMERO_DOC_REF, TIPO_DOCUMENTO_REF, VEMP_RET, MINCOMPROBANTE,
MAXCOMPROBANTE, MIN_TRNTECHKEY, MAX_TRNTECHKEY
UNION ALL
SELECT SECCION,
ORG_LVL_CHILD,
DPROCESO,
DEMPRESA,
CTRANSAC,
DCOMPRA,

Página 23/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

ORG_LVL_NUMBER,
CDOCUMENTO,
MINCOMPROBANTE MINCOMPROBANTE,
MAXCOMPROBANTE MAXCOMPROBANTE,
NGUIA_ELECTRONICA,
AREA_FUNCIONAL,
CODIGO_REPORTE,
SUM(MVENTA+MDESCTOPRD-MIVA)MVENTA,
INDICADOR_IVA,

MAX(IMPUESTOADICIONAL3) IMPUESTOADICIONAL3,
IMPUESTOADICIONAL3INDICADOR,
SUM(MIVA) MIVA,
SUM(MIVA2) MIVA2,
CDOC_IDENTIDAD,
CDOC_RAZONSOC,
COND_PAGO,
MDESCTOPRD,
MDESCTOPRO,
MIN_TRNTECHKEY MIN_TRNTECHKEY,
MAX_TRNTECHKEY MAX_TRNTECHKEY,
NUMERO_DOC_REF,
TIPO_DOCUMENTO_REF,
VEMP_RET,
SUM(EFECTIVO) EFECTIVO,
SUM(CMR) CMR,
SUM(VISA_CREDITO-VISA_DEBITO) VISA_CREDITO,
SUM(VISA_DEBITO) VISA_DEBITO,
SUM(MC_CREDITO-MC_DEBITO) MC_CREDITO,
SUM(MC_DEBITO + GIFTCORP) MC_DEBITO,
SUM(EXPRESSNET) EXPRESSNET,
SUM(DINERS) DINERS,
SUM(GIFT) GIFT,
SUM(CONTADOCHEQUE) CONTADOCHEQUE,
SUM(CCC) CCC,
SUM(VALECREDITO) VALECREDITO,
SUM(VALES_ALIM_MONTO) VALES_ALIM_MONTO,
SUM(CMRPUNTOS) CMRPUNTOS,
SUM(QUICKPAY_CRED) QUICKPAY_CRED,
SUM(QUICKPAY_DEB) QUICKPAY_DEB,
SUM(REDONDEO) REDONDEO,
SUM(VALE_CONSUMO) VALE_CONSUMO,
SUM(LINIO) LINIO,
SUM(MONTOTTUS) MONTOTTUS,
--SUM(GLOVO) GLOVO,
--SUM(UBER) UBER,
SUM(FPAY) FPAY,
SUM(VUELTO) VUELTO

FROM (SELECT ---Q4 Query J01


'B' SECCION,
A.TRN_TECH_KEY,--D.NCORRELATIVO,
a.org_lvl_child,
A.DPROCESO,
--Inicio MLR01
--Reemplaza Empresa

Página 24/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

--l_CodEmpresa DEMPRESA,
vl_codsoc DEMPRESA,
--Fin MLR01
A.CTRANSAC,
A.DCOMPRA,
A.ORG_LVL_NUMBER,

nvl((select distinct sfp.PAR_CODE from SAPFI_PARAM sfp


where trim(sfp.PAR_VALUE)=to_char(d.prd_upc)
and TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name) and
TRIM(PAR_NOMBRE) = trim(co_code_Transac)
and substr(par_desc,1,2)=trim(A.CTRANSAC)
and rownum = 1),0) AS CDOCUMENTO,
to_char(NVL((A.ORG_LVL_NUMBER||'-'||A.NTERMINAL || '-' ||
A.NSECUENCIA ), A.TRN_TECH_KEY)) mincomprobante,
to_char(NVL((A.ORG_LVL_NUMBER||'-'||A.NTERMINAL || '-' ||
A.NSECUENCIA ), A.TRN_TECH_KEY)) maxcomprobante,
0 nguia_electronica,
'J000' Area_funcional,

nvl(fn_obtieneCodReporte('P009',A.trn_tech_key,d.prd_lvl_child,min(d.prd_lvl
_ch2),min(d.prd_upc),A.CTRANSAC) ,1) Codigo_reporte,
(SELECT ((SELECT NVL(SUM(DEF.MEFECTIVO), 0)FROM VTADEFEF DEF WHERE
DEF.TRN_TECH_KEY = A.TRN_TECH_KEY) +
DECODE (A.CTRANSAC ,51 , 0 , 52 , 0, 14, 0, (SELECT
NVL(SUM(DTI.MTARJETA), 0)FROM VTADTIEF DTI WHERE DTI.TRN_TECH_KEY =
A.TRN_TECH_KEY)) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where
DTE.CTARJETA = 'V' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) +
--(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner
join VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
-- where DTE.CTARJETA = 'V' and BN.CTIPO = 'D' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where
DTE.CTARJETA = 'M' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) +
--(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner
join VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
-- where DTE.CTARJETA = 'M' and BN.CTIPO = 'D' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'A' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'D' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DGT.MGIFT), 0) FROM VTADGTEF DGT WHERE
DGT.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DCE.MCCE), 0) FROM VTADCEEF DCE WHERE
DCE.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'G' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)+--GIFCARDCORP
(SELECT NVL(SUM(CCC.MCCC), 0) FROM VTADCCEF CCC WHERE
CCC.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DVC.MVALE), 0) FROM VTADVCEF DVC WHERE
DVC.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DMB.MMONTO), 0) FROM VTADMBEP DMB WHERE

Página 25/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

DMB.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(PTS.MTARJETA), 0) FROM VTAPTSEF PTS WHERE
PTS.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND (TRIM(PQP.QPTYPEPAYMENT) = 'QPCR' or
PQP.QPTYPEPAYMENT is null )) +
(SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND TRIM(PQP.QPTYPEPAYMENT) = 'QPDB') +
(SELECT NVL(SUM(ADV.MREDONDEO), 0) FROM VTADVUEP ADV WHERE
ADV.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DPP.MVALECONSUMO), 0) FROM VTADPPEF DPP
WHERE DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DPP.MVALELIN), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) +
--(SELECT NVL(SUM(DPP.MVALEGLV), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) +
--(SELECT NVL(SUM(DPP.MVALEUBR), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(PAY.MWALLET), 0) FROM VTAEPAYP PAY WHERE
PAY.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'T' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) FROM DUAL)
mventa,

'' Indicador_iva,

0 miva,
0 miva2,
NVL(min(A.NMTO_DETR),0) ImpuestoAdicional3,
NVL(min(A.ccod_detr),0) ImpuestoAdicional3Indicador,
DECODE(A.CTRANSAC,70,
NVL(DECODE((SELECT LENGTH(CSOLICITUD) FROM vtadotef where
TRN_TECH_KEY = A.TRN_TECH_KEY AND ROWNUM = 1),11,
(SELECT to_char(CSOLICITUD) FROM vtadotef where TRN_TECH_KEY =
A.TRN_TECH_KEY AND ROWNUM = 1),
(select rdv.rut||rdv.rutdv from vtadotef dot,vpcmstee
vpc,chlrdvee rdv where rdv.vpc_tech_key=vpc.vpc_tech_key
and vpc.vendor_number = substr(dot.CSOLICITUD,1,10) and
dot.TRN_TECH_KEY = A.TRN_TECH_KEY AND ROWNUM = 1)),
(SELECT to_char(nvl(CSOLICITUD,0)) FROM vtadotef where
TRN_TECH_KEY = A.TRN_TECH_KEY AND ROWNUM = 1)),
76,nvl((SELECT to_char(dot.CSOLICITUD) FROM vtadotef dot,vtahdref
vta,vtadotef dot2 where vta.TRN_TECH_KEY = dot.TRN_TECH_KEY
AND dot2.trn_tech_key = A.TRN_TECH_KEY and vta.org_lvl_number
= to_number(nvl(substr(dot2.NFOLIO,1,3),0))
and vta.ctransac=70 and vta.mmonto = a.mmonto*(-1) --ubicar
trx a original
AND vta.nterminal = TO_NUMBER(nvl(substr(dot2.NFOLIO,4,3),0))
AND vta.nsecuencia = TO_NUMBER(nvl(substr(dot2.NFOLIO,7,4),0))
AND ROWNUM = 1),'0')) cdoc_identidad,
NVL(DECODE(A.CTRANSAC,70,
(select vpc.vendor_name from vtadotef dot,vpcmstee vpc where
(vpc.vendor_number = substr(dot.CSOLICITUD,1,10)
or vpc.vendor_number = dot.CSOLICITUD) and dot.trn_tech_key =
A.TRN_TECH_KEY and ROWNUM = 1),
76,(SELECT vpc.vendor_name FROM vtadotef dot,vtahdref

Página 26/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

vta,vtadotef dot2,vpcmstee vpc where vta.TRN_TECH_KEY = dot.TRN_TECH_KEY


AND dot2.trn_tech_key = A.TRN_TECH_KEY and vta.org_lvl_number
= to_number(nvl(substr(dot2.NFOLIO,1,3),0))
and vta.ctransac=70 and vta.mmonto = a.mmonto*(-1) --ubicar
trx a original
AND vta.nterminal = TO_NUMBER(nvl(substr(dot2.NFOLIO,4,3),0))
AND vta.nsecuencia = TO_NUMBER(nvl(substr(dot2.NFOLIO,7,4),0))
AND (vpc.vendor_number = substr(dot.CSOLICITUD,1,10) or
vpc.vendor_number = dot.CSOLICITUD)AND ROWNUM = 1)), '') cdoc_razonsoc,
0 cond_pago,
0 MDESCTOPRD,
0 MDESCTOPRO,
A.TRN_TECH_KEY min_trntechkey,
A.TRN_TECH_KEY max_trntechkey,
DECODE(A.CTRANSAC, 70,'1',76,
nvl((SELECT TO_NUMBER(nvl(substr(NFOLIO,1,3),0)) || '-' ||
TO_NUMBER(nvl(substr(NFOLIO,4,3),0)) || '-' ||
TO_NUMBER(nvl(substr(NFOLIO,7,4),0))
FROM vtadotef where TRN_TECH_KEY = A.TRN_TECH_KEY AND ROWNUM =
1),'0')
,'0') numero_doc_ref,
DECODE(A.CTRANSAC, 70,801,76,
nvl((select to_number(nvl(PAR_CODE,0)) from SAPFI_PARAM sfp
where trim(sfp.PAR_VALUE)=to_char(d.prd_upc)
and TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name) and
TRIM(PAR_NOMBRE) = trim(co_nref_Transac)
and trim(par_desc)=A.CTRANSAC and rownum = 1),801)
,0) tipo_documento_ref,
DECODE(A.ORG_LVL_NUMBER,910,1,2) vemp_ret,
(SELECT NVL(SUM(DEF.MEFECTIVO), 0) FROM VTADEFEF DEF WHERE
DEF.TRN_TECH_KEY = A.TRN_TECH_KEY) AS EFECTIVO,
DECODE(A.CTRANSAC, 51, 0 , 52, 0 , 14 , 0,
(SELECT NVL(SUM(DTI.MTARJETA), 0)FROM VTADTIEF DTI WHERE
DTI.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CMR,
--(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
--where DTE.CTARJETA = 'V' and BN.CTIPO = 'C' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS VISA_CREDITO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where DTE.CTARJETA
= 'V' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS VISA_CREDITO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
where DTE.CTARJETA = 'V' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY
= A.TRN_TECH_KEY) AS VISA_DEBITO,
--(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
--where DTE.CTARJETA = 'M' and BN.CTIPO = 'C' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS MC_CREDITO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where DTE.CTARJETA
= 'M' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS MC_CREDITO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)

Página 27/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

where DTE.CTARJETA = 'M' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY


= A.TRN_TECH_KEY) AS MC_DEBITO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE DTE.CTARJETA
= 'A' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS EXPRESSNET,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE DTE.CTARJETA
= 'D' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS DINERS,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE DTE.CTARJETA
= 'G' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS GIFTCORP,
(SELECT NVL(SUM(DGT.MGIFT), 0) FROM VTADGTEF DGT WHERE
DGT.TRN_TECH_KEY = A.TRN_TECH_KEY) AS GIFT,
(SELECT NVL(SUM(DCE.MCCE), 0) FROM VTADCEEF DCE WHERE
DCE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS CONTADOCHEQUE,
(SELECT NVL(SUM(CCC.MCCC), 0) FROM VTADCCEF CCC WHERE
CCC.TRN_TECH_KEY = A.TRN_TECH_KEY) AS CCC,--
(SELECT NVL(SUM(DVC.MVALE), 0) FROM VTADVCEF DVC WHERE
DVC.TRN_TECH_KEY = A.TRN_TECH_KEY) AS VALECREDITO,
(SELECT NVL(SUM(DMB.MMONTO), 0) FROM VTADMBEP DMB WHERE
DMB.TRN_TECH_KEY = A.TRN_TECH_KEY) AS VALES_ALIM_MONTO,
(SELECT NVL(SUM(PTS.MTARJETA), 0) FROM VTAPTSEF PTS WHERE
PTS.TRN_TECH_KEY = A.TRN_TECH_KEY) AS CMRPUNTOS,
(SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND (TRIM(PQP.QPTYPEPAYMENT) = 'QPCR' or
PQP.QPTYPEPAYMENT is null )) AS QUICKPAY_CRED,
(SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND TRIM(PQP.QPTYPEPAYMENT) = 'QPDB') AS
QUICKPAY_DEB,
(SELECT NVL(SUM(ADV.MREDONDEO), 0) FROM VTADVUEP ADV WHERE
ADV.TRN_TECH_KEY = A.TRN_TECH_KEY) AS REDONDEO,
(SELECT NVL(SUM(DPP.MVALECONSUMO), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) AS VALE_CONSUMO,
(SELECT NVL(SUM(DPP.MVALELIN), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) AS LINIO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE DTE.CTARJETA
= 'T' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS MONTOTTUS,
--(SELECT NVL(SUM(DPP.MVALEGLV), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) AS GLOVO,
--(SELECT NVL(SUM(DPP.MVALEUBR), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) AS UBER,
(SELECT NVL(SUM(PAY.MWALLET), 0) FROM VTAEPAYP PAY WHERE
PAY.TRN_TECH_KEY = A.TRN_TECH_KEY) AS FPAY,
(SELECT NVL(SUM(DTE.MCASH_BACK),0) FROM VTADTEEF DTE WHERE
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY AND DTE.BMATCH = 'D') VUELTO

FROM VTAHDREF A left join VTADPREF D ON A.TRN_TECH_KEY =


D.TRN_TECH_KEY left join PRDMSTEE PRD
ON D.prd_lvl_child=PRD.prd_lvl_child left join TXSPRDEE TPR
ON TPR.prd_lvl_child=PRD.prd_lvl_child left join TXSCODEE TXS
ON TXS.TXS_CODE_TECH_KEY = TPR.TXS_CODE_TECH_KEY
left join SAPFI_INDIMPDET IMP
ON IMP.TXS_CODE_TECH_KEY = TXS.TXS_CODE_TECH_KEY,VTATTRCF TTR,
VTADCCEF CC --Query desagrupado ventas al credito
WHERE A.TRN_TECH_KEY = CC.TRN_TECH_KEY
AND A.DPROCESO = pi_fecha_periodo
AND A.DCOMPRA = p_dcompra

AND A.CESTADO = 'V'

Página 28/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

AND A.CTRANSAC = TTR.CTRANSAC


AND to_char(p_cdocumento) IN (SELECT TO_CHAR(PAR_VALUE)
FROM SAPFI_PARAM
WHERE TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name)
AND TRIM(PAR_NOMBRE) = TRIM(co_cdocumento_j01))
AND to_char(p_ctransac) IN (SELECT TO_CHAR(PAR_VALUE)
FROM SAPFI_PARAM
WHERE TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name)
AND TRIM(PAR_NOMBRE) = TRIM(co_ctransac_whitelist_j01))
AND a.ORG_LVL_NUMBER = v_local
AND TO_CHAR(NVL(a.cdocumento,0)) = to_char(p_cdocumento)
AND a.ctransac = p_ctransac
AND A.TRN_TECH_KEY not in (SELECT TRN_TECH_KEY FROM VTATEMPWW
WHERE DPROCESO = pi_fecha_periodo AND TABLA = 'VTA')--REENTRADA ONLINE
GROUP BY
A.TRN_TECH_KEY,d.prd_lvl_child,d.prd_upc, a.mmonto,

a.org_lvl_child,
A.DPROCESO,
A.CTRANSAC,
A.DCOMPRA,
A.ORG_LVL_NUMBER,
A.NTERMINAL, A.NSECUENCIA

ORDER BY A.CTRANSAC, A.ORG_LVL_NUMBER, A.DPROCESO, A.DCOMPRA,


cdoc_identidad)

GROUP BY SECCION,
ORG_LVL_CHILD,
DPROCESO,
DEMPRESA,
CTRANSAC,
DCOMPRA,
ORG_LVL_NUMBER,
CDOCUMENTO,
NGUIA_ELECTRONICA,
AREA_FUNCIONAL,
CODIGO_REPORTE,
INDICADOR_IVA,

IMPUESTOADICIONAL3INDICADOR,
CDOC_IDENTIDAD,
CDOC_RAZONSOC,
COND_PAGO,
NUMERO_DOC_REF,
TIPO_DOCUMENTO_REF,
VEMP_RET,
MINCOMPROBANTE, MAXCOMPROBANTE, MIN_TRNTECHKEY, MAX_TRNTECHKEY
UNION ALL
SELECT SECCION, --QUERY DESAGRUPADA EXCLUYENDO VENTAS AL CREDITO
ORG_LVL_CHILD,
DPROCESO,
DEMPRESA,
CTRANSAC,
DCOMPRA,
ORG_LVL_NUMBER,

Página 29/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

CDOCUMENTO,
MINCOMPROBANTE,
MAXCOMPROBANTE,
NGUIA_ELECTRONICA,
AREA_FUNCIONAL,
DECODE(min(prd_sku_type),
'099',DECODE((SELECT count(pep.NRUT) FROM VTAEMPEP pep
WHERE pep.NRUT = trim(CDOC_IDENTIDAD)),0,

DECODE(CDOCUMENTO,90,3,CODIGO_REPORTE),DECODE(CDOCUMENTO,90,5,4)),CODIGO_REP
ORTE)CODIGO_REPORTE,
SUM(MVENTA+MDESCTOPRD-MIVA -MIVA2)MVENTA,
INDICADOR_IVA,

MAX(IMPUESTOADICIONAL3) IMPUESTOADICIONAL3,
IMPUESTOADICIONAL3INDICADOR,
SUM(MIVA) MIVA,
SUM(MIVA2) MIVA2,
CDOC_IDENTIDAD,
CDOC_RAZONSOC,
COND_PAGO,
0 MDESCTOPRD,
0 MDESCTOPRO,
MIN_TRNTECHKEY MIN_TRNTECHKEY,
MAX_TRNTECHKEY MAX_TRNTECHKEY,
NUMERO_DOC_REF,
TIPO_DOCUMENTO_REF,
VEMP_RET,
SUM(EFECTIVO/CANTIDAD) EFECTIVO,
SUM(CMR/CANTIDAD) CMR,
SUM((VISA_CREDITO/CANTIDAD)-(VISA_DEBITO/CANTIDAD))
VISA_CREDITO,
SUM(VISA_DEBITO/CANTIDAD) VISA_DEBITO,
SUM((MC_CREDITO/CANTIDAD)-(MC_DEBITO/CANTIDAD)) MC_CREDITO,
SUM((MC_DEBITO/CANTIDAD) + (GIFTCORP/CANTIDAD)) MC_DEBITO,
SUM(EXPRESSNET/CANTIDAD) EXPRESSNET,
SUM(DINERS/CANTIDAD) DINERS,
SUM(GIFT/CANTIDAD) GIFT,
SUM(CONTADOCHEQUE/CANTIDAD) CONTADOCHEQUE,
SUM(CCC/CANTIDAD) CCC,
SUM(VALECREDITO/CANTIDAD) VALECREDITO,
SUM(VALES_ALIM_MONTO/CANTIDAD) VALES_ALIM_MONTO,
SUM(CMRPUNTOS/CANTIDAD) CMRPUNTOS,
SUM(QUICKPAY_CRED/CANTIDAD) QUICKPAY_CRED,
SUM(QUICKPAY_DEB/CANTIDAD) QUICKPAY_DEB,
SUM(REDONDEO/CANTIDAD) REDONDEO,
SUM(VALE_CONSUMO/CANTIDAD) VALE_CONSUMO,
SUM(LINIO/CANTIDAD) LINIO,
SUM(MONTOTTUS/CANTIDAD) MONTOTTUS,
--SUM(GLOVO/CANTIDAD) GLOVO,
--SUM(UBER/CANTIDAD) UBER,
SUM(FPAY/CANTIDAD) FPAY,
SUM(VUELTO/CANTIDAD) VUELTO

FROM (
SELECT

Página 30/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

'B' SECCION,--Q5
A.TRN_TECH_KEY,D.NCORRELATIVO,prd.prd_sku_type,
a.org_lvl_child,
A.DPROCESO,
--Inicio MLR01
--Reemplaza Empresa
--l_CodEmpresa DEMPRESA,
vl_codsoc DEMPRESA,
--Fin MLR01
A.CTRANSAC,
A.DCOMPRA,
A.ORG_LVL_NUMBER,

DECODE(A.CTRANSAC,30,90,NVL(A.CDOCUMENTO,0)) AS CDOCUMENTO,

TO_CHAR(nvl(A.TCOMPROBANTE_E || A.CSERIE_ELECTRONICA || '-' ||


TRIM((A.NCOMPROBANTE)),A.TRN_TECH_KEY)) mincomprobante,
TO_CHAR(nvl(A.TCOMPROBANTE_E || A.CSERIE_ELECTRONICA || '-' ||
TRIM((A.NCOMPROBANTE)),A.TRN_TECH_KEY)) maxcomprobante,

0 nguia_electronica,

DECODE(NVL(MIN(d.prd_lvl_child),0), 0, 'J01',
NVL(prd_obt_jerarq_f(MIN(d.prd_lvl_child), 6, 1),'J01'))
Area_funcional,

nvl(fn_obtieneCodReporte('P009',A.trn_tech_key,MIN(d.prd_lvl_child),MIN(d.pr
d_lvl_ch2),MIN(d.prd_upc),A.CTRANSAC) ,1) Codigo_reporte,

MIN(d.mventa) mventa,

DECODE(sum(nvl(d.miva2,0)),0, DECODE((select count(1) from


FATXSEXPEE w where w.txs_type_exe = 2 and
w.exp_prd_lvl_child=nvl(d.prd_lvl_child,0)),0,'D3','D0'),

DECODE(SUM(nvl(d.miva1,0)),0,'D1',nvl(MIN(IMP.TXS_CODE_INDIMP),'D1')))
Indicador_iva,

MIN(nvl(A.NMTO_DETR,0)) ImpuestoAdicional3,
DECODE(MIN(nvl(d.miva,0)),0,MIN(nvl(A.ccod_detr,0)),0)
ImpuestoAdicional3Indicador,

DECODE(MIN(nvl(d.miva1,0)),0,MIN(nvl(d.miva2,0)),MIN(nvl(d.miva1,0))) miva,
DECODE(SUM(nvl(d.miva1,0)),0,0,SUM(nvl(d.miva2,0))) miva2,

NVL(DECODE(A.CTRANSAC, 30,DECODE (nvl((SELECT FB.NRUT FROM


FANCRHDREF FA, FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD

Página 31/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

AND LENGTH(FB.NRUT) > 7


AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM <
2),'0'),0,DECODE(nvl(translate(A.cdoc_identidad,'T
0123456789','T'),'0'),'0',A.cdoc_identidad,0),
(SELECT FB.NRUT FROM FANCRHDREF FA, FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD
AND LENGTH(FB.NRUT) > 7
AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM < 2)),
31,DECODE (nvl((SELECT FB.NRUT FROM FANCRHDREF FA, FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD
AND LENGTH(FB.NRUT) > 7
AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM <
2),'0'),0,DECODE(nvl(translate(A.cdoc_identidad,'T
0123456789','T'),'0'),'0',A.cdoc_identidad,0),
(SELECT FB.NRUT FROM FANCRHDREF FA, FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD
AND LENGTH(FB.NRUT) > 7
AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM < 2))
,TO_CHAR((SELECT dfc.nrutfactura FROM vtadfcef dfc WHERE
dfc.trn_tech_key=A.TRN_TECH_KEY AND ROWNUM < 2))),'0') cdoc_identidad,

DECODE(A.CTRANSAC, 30,(SELECT FB.XNOMBRE FROM FANCRHDREF FA,


FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD
AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM < 2),
31,(SELECT FB.XNOMBRE FROM FANCRHDREF FA, FANCROTREF FB
WHERE A.DCOMPRA = FA.DCOMPRA
AND A.NTERMINAL = FA.NTERMINAL
AND A.NSECUENCIA = FA.NSECUENCIA
AND A.ORG_LVL_CHILD = FA.ORG_LVL_CHILD
AND FA.CAUTORIZA = FB.CAUTORIZA AND ROWNUM < 2),
(select vpc.vendor_name from vtadfcef dfc,vpcmstee vpc where
dfc.trn_tech_key = A.TRN_TECH_KEY AND
(vpc.vendor_number = substr(dfc.nrutfactura,1,10) or
vpc.vendor_number = dfc.nrutfactura) and ROWNUM = 1)) cdoc_razonsoc,
NVL((SELECT CPAGO FROM VTADXCEF CEF WHERE CEF.TRN_TECH_KEY =
A.TRN_TECH_KEY AND ROWNUM < 2),0) cond_pago,
MIN(D.MDESCTOPRD) MDESCTOPRD,
MIN(D.MDESCTOPRO) MDESCTOPRO,
A.TRN_TECH_KEY min_trntechkey,
A.TRN_TECH_KEY max_trntechkey,
DECODE(A.CDOCUMENTO,
7,
(SELECT HREF.TCOMPROBANTE_E || HREF.CSERIE_ELECTRONICA||'-'||

Página 32/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

TO_NUMBER(nvl(HREF.NCOMPROBANTE,0))
FROM fancrhdref FREF, VTAHDREF HREF--HREF.CDOCUMENTO
WHERE FREF.org_lvl_child = A.org_lvl_child
AND FREF.nterminal = A.nterminal
AND FREF.nsecuencia = A.nsecuencia
AND FREF.DCOMPRA = A.DCOMPRA
AND HREF.org_lvl_child = FREF.org_lvl_child_Ant
AND HREF.nterminal = FREF.Nterminal_Ant
AND HREF.nsecuencia = FREF.Nsecuencia_Ant
AND HREF.DCOMPRA = FREF.DCOMPRA_ANT AND ROWNUM < 2),
'0') numero_doc_ref,
DECODE(A.CDOCUMENTO,
7,DECODE(nvl((SELECT TO_NUMBER(nvl(HREF.CDOCUMENTO,0)) FROM
fancrhdref FREF, VTAHDREF HREF--HREF.CDOCUMENTO
WHERE FREF.org_lvl_child = A.org_lvl_child
AND FREF.nterminal = A.nterminal
AND FREF.nsecuencia = A.nsecuencia
AND FREF.DCOMPRA = A.DCOMPRA
AND HREF.org_lvl_child = FREF.org_lvl_child_Ant
AND HREF.nterminal = FREF.Nterminal_Ant
AND HREF.nsecuencia = FREF.Nsecuencia_Ant
AND HREF.DCOMPRA = FREF.DCOMPRA_ANT AND ROWNUM <
2),0),1,1,3,39,0),
0) tipo_documento_ref,
DECODE(A.ORG_LVL_NUMBER,910,1,2) vemp_ret,
SUM((SELECT NVL(SUM(DEF.MEFECTIVO), 0) FROM VTADEFEF DEF WHERE
DEF.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS EFECTIVO,
SUM((SELECT NVL(SUM(DTI.MTARJETA), 0)FROM VTADTIEF DTI WHERE
DTI.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CMR,
--SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
--where DTE.CTARJETA = 'V' and BN.CTIPO = 'C' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VISA_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where
DTE.CTARJETA = 'V' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VISA_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
where DTE.CTARJETA = 'V' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY
= A.TRN_TECH_KEY)) AS VISA_DEBITO,
--SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
--where DTE.CTARJETA = 'M' and BN.CTIPO = 'C' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MC_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
where DTE.CTARJETA = 'M' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY
= A.TRN_TECH_KEY)) AS MC_DEBITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where
DTE.CTARJETA = 'M' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MC_CREDITO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'A' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS EXPRESSNET,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE

Página 33/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

DTE.CTARJETA = 'D' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS DINERS,


SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'G' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GIFTCORP,
SUM((SELECT NVL(SUM(DGT.MGIFT), 0) FROM VTADGTEF DGT WHERE
DGT.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GIFT,
SUM((SELECT NVL(SUM(DCE.MCCE), 0) FROM VTADCEEF DCE WHERE
DCE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CONTADOCHEQUE,
SUM((SELECT NVL(SUM(CCC.MCCC), 0) FROM VTADCCEF CCC WHERE
CCC.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CCC,--
SUM((SELECT NVL(SUM(DVC.MVALE), 0) FROM VTADVCEF DVC WHERE
DVC.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALECREDITO,
SUM((SELECT NVL(SUM(DMB.MMONTO), 0) FROM VTADMBEP DMB WHERE
DMB.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALES_ALIM_MONTO,
SUM((SELECT NVL(SUM(PTS.MTARJETA), 0) FROM VTAPTSEF PTS WHERE
PTS.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CMRPUNTOS,
SUM((SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND (TRIM(PQP.QPTYPEPAYMENT) = 'QPCR' or
PQP.QPTYPEPAYMENT is null ))) AS QUICKPAY_CRED,
SUM((SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND TRIM(PQP.QPTYPEPAYMENT) = 'QPDB')) AS
QUICKPAY_DEB,
SUM((SELECT NVL(SUM(ADV.MREDONDEO), 0) FROM VTADVUEP ADV WHERE
ADV.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS REDONDEO,
SUM((SELECT NVL(SUM(DPP.MVALECONSUMO), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS VALE_CONSUMO,
SUM((SELECT NVL(SUM(DPP.MVALELIN), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS LINIO,
SUM((SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'T' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS MONTOTTUS,
--SUM((SELECT NVL(SUM(DPP.MVALEGLV), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS GLOVO,
--SUM((SELECT NVL(SUM(DPP.MVALEUBR), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS UBER,
SUM((SELECT NVL(SUM(PAY.MWALLET), 0) FROM VTAEPAYP PAY WHERE
PAY.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS FPAY,
SUM((SELECT NVL(SUM(DTE.MCASH_BACK),0) FROM VTADTEEF DTE WHERE
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY AND DTE.BMATCH = 'D')) VUELTO,

(SELECT NVL(COUNT(DET.NCORRELATIVO),1) FROM VTADPREF DET WHERE


DET.TRN_TECH_KEY = A.TRN_TECH_KEY) CANTIDAD

FROM VTAHDREF A, VTATTRCF TTR , VTADPREF D left join PRDMSTEE PRD


ON D.prd_lvl_child=PRD.prd_lvl_child left join TXSPRDEE TPR
ON TPR.prd_lvl_child=PRD.prd_lvl_child left join TXSCODEE TXS
ON TXS.TXS_CODE_TECH_KEY = TPR.TXS_CODE_TECH_KEY left join
SAPFI_INDIMPDET IMP
ON IMP.TXS_CODE_TECH_KEY = TXS.TXS_CODE_TECH_KEY
WHERE A.DPROCESO = pi_fecha_periodo
AND A.DCOMPRA = p_dcompra
--
AND A.TRN_TECH_KEY = D.TRN_TECH_KEY
AND A.TRN_TECH_KEY NOT IN (SELECT CC.TRN_TECH_KEY FROM
VTADCCEF CC where CC.TRN_TECH_KEY =A.TRN_TECH_KEY)
AND A.CESTADO = 'V'
AND A.CTRANSAC = TTR.CTRANSAC
AND to_char(p_cdocumento) IN (SELECT TO_CHAR(PAR_VALUE)

Página 34/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

FROM SAPFI_PARAM
WHERE TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name)
AND TRIM(PAR_NOMBRE) = TRIM(co_cdocumento_desagrupado))
AND to_char(p_ctransac) IN (SELECT TO_CHAR(PAR_VALUE)
FROM SAPFI_PARAM
WHERE TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name)
AND TRIM(PAR_NOMBRE) = TRIM(co_ctransac_whitelist_desagrup))
AND a.ORG_LVL_NUMBER = v_local
AND TO_CHAR(NVL(a.cdocumento,0)) = to_char(p_cdocumento)
AND a.ctransac = p_ctransac
/* AND A.TRN_TECH_KEY not in (select tb2.TRN_TECH_KEY from VTAHDREF
tb2,(SELECT DPROCESO,NTERMINAL, NSECUENCIA,
DCOMPRA,ORG_LVL_NUMBER,TCOMPROBANTE_E,CSERIE_ELECTRONICA,NCOMPROBANTE
from VTAHDREF WHERE CESTADO = 'V' AND DCOMPRA = p_dcompra
AND ORG_LVL_NUMBER = v_local AND ctransac = p_ctransac AND
TO_CHAR(NVL(cdocumento,0)) = to_char(p_cdocumento)
and DPROCESO = pi_fecha_periodo AND trn_tech_key between
p_trnmini and p_trnmaxi GROUP BY DPROCESO,NTERMINAL, NSECUENCIA,
DCOMPRA,ORG_LVL_NUMBER,TCOMPROBANTE_E,CSERIE_ELECTRONICA,NCOMPROBANTE
having sum(MMONTO)=0) tb1 where tb2.CESTADO = 'V' AND
tb2.DCOMPRA = p_dcompra AND tb2.ORG_LVL_NUMBER = v_local AND tb2.ctransac =
p_ctransac
AND TO_CHAR(NVL(tb2.cdocumento,0)) = to_char(p_cdocumento)
AND tb1.DPROCESO = tb2.DPROCESO AND tb1.NTERMINAL = tb2.NTERMINAL AND
tb1.NSECUENCIA = tb2.NSECUENCIA
AND tb1.DCOMPRA = tb2.DCOMPRA AND tb1.ORG_LVL_NUMBER =
tb2.ORG_LVL_NUMBER AND tb1.TCOMPROBANTE_E = tb2.TCOMPROBANTE_E
AND tb1.CSERIE_ELECTRONICA = tb2.CSERIE_ELECTRONICA AND
tb1.NCOMPROBANTE = tb2.NCOMPROBANTE AND tb2.trn_tech_key between p_trnmini
and p_trnmaxi)*/
AND A.TRN_TECH_KEY not in (SELECT TRN_TECH_KEY FROM VTATEMPWW
WHERE DPROCESO = pi_fecha_periodo AND TABLA = 'VTA')--REENTRADA ONLINE
GROUP BY
A.TRN_TECH_KEY,D.NCORRELATIVO,d.prd_lvl_child,
A.TCOMPROBANTE_E,A.CSERIE_ELECTRONICA,
A.DCOMPRA,
a.org_lvl_child,prd.prd_sku_type,
A.DPROCESO,
A.ORG_LVL_NUMBER,
A.CDOCUMENTO,
A.CTRANSAC,

A.cdoc_identidad,

A.NCOMPROBANTE,
A.NTERMINAL,
A.NSECUENCIA

ORDER BY mincomprobante, A.ORG_LVL_NUMBER, A.DPROCESO, A.DCOMPRA,


area_funcional, cdoc_identidad)
GROUP BY SECCION,ORG_LVL_CHILD, DPROCESO, DEMPRESA, CTRANSAC,
DCOMPRA, ORG_LVL_NUMBER, CDOCUMENTO,
NGUIA_ELECTRONICA,
AREA_FUNCIONAL,CODIGO_REPORTE, INDICADOR_IVA,
IMPUESTOADICIONAL3INDICADOR, CDOC_IDENTIDAD, CDOC_RAZONSOC,
COND_PAGO,

Página 35/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

NUMERO_DOC_REF, TIPO_DOCUMENTO_REF, VEMP_RET, MINCOMPROBANTE,


MAXCOMPROBANTE, MIN_TRNTECHKEY, MAX_TRNTECHKEY
UNION ALL
SELECT SECCION,
ORG_LVL_CHILD,
DPROCESO,
DEMPRESA,
CTRANSAC,
DCOMPRA,
ORG_LVL_NUMBER,
CDOCUMENTO,
MIN(MINCOMPROBANTE) MINCOMPROBANTE,
MAX(MAXCOMPROBANTE) MAXCOMPROBANTE,
NGUIA_ELECTRONICA,
AREA_FUNCIONAL,
CODIGO_REPORTE,
SUM(MVENTA+MDESCTOPRD-MIVA)MVENTA,
INDICADOR_IVA,

MAX(IMPUESTOADICIONAL3) IMPUESTOADICIONAL3,
IMPUESTOADICIONAL3INDICADOR,
SUM(MIVA) MIVA,
SUM(MIVA2) MIVA2,
CDOC_IDENTIDAD,
CDOC_RAZONSOC,
COND_PAGO,
0 MDESCTOPRD,
0 MDESCTOPRO,
MIN(MIN_TRNTECHKEY) MIN_TRNTECHKEY,
MAX(MAX_TRNTECHKEY) MAX_TRNTECHKEY,
NUMERO_DOC_REF,
TIPO_DOCUMENTO_REF,
VEMP_RET,
SUM(EFECTIVO) EFECTIVO,
SUM(CMR) CMR,
SUM((VISA_CREDITO-VISA_DEBITO)) VISA_CREDITO,
SUM(VISA_DEBITO) VISA_DEBITO,
SUM((MC_CREDITO-MC_DEBITO)) MC_CREDITO,
SUM(MC_DEBITO + GIFTCORP) MC_DEBITO,
SUM(EXPRESSNET) EXPRESSNET,
SUM(DINERS) DINERS,
SUM(GIFT) GIFT,
SUM(CONTADOCHEQUE) CONTADOCHEQUE,
SUM(CCC) CCC,
SUM(VALECREDITO) VALECREDITO,
SUM(VALES_ALIM_MONTO) VALES_ALIM_MONTO,
SUM(CMRPUNTOS) CMRPUNTOS,
SUM(QUICKPAY_CRED) QUICKPAY_CRED,
SUM(QUICKPAY_DEB) QUICKPAY_DEB,
SUM(REDONDEO) REDONDEO,
SUM(VALE_CONSUMO) VALE_CONSUMO,
SUM(LINIO) LINIO,
SUM(MONTOTTUS) MONTOTTUS,
--SUM(GLOVO) GLOVO,
--SUM(UBER) UBER,
SUM(FPAY) FPAY,

Página 36/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

SUM(VUELTO) VUELTO

FROM (SELECT ---Q6 Query J01 AGRUPADO EXCLUYENDO VENTAS AL CREDITO


'A' SECCION,
a.org_lvl_child,
A.DPROCESO,
--Inicio MLR01
--Reemplaza Empresa
--l_CodEmpresa DEMPRESA,
vl_codsoc DEMPRESA,
--Fin MLR01
A.CTRANSAC,
A.DCOMPRA,
A.ORG_LVL_NUMBER,

nvl((select distinct sfp.PAR_CODE from SAPFI_PARAM sfp


where trim(sfp.PAR_VALUE)=to_char(d.prd_upc)
and TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name) and
TRIM(PAR_NOMBRE) = trim(co_code_Transac)
and substr(par_desc,1,2)=trim(A.CTRANSAC)
and rownum = 1),0) AS CDOCUMENTO,

TO_CHAR(MIN(A.TRN_TECH_KEY)) mincomprobante,

TO_CHAR(MAX(A.TRN_TECH_KEY)) maxcomprobante,
0 nguia_electronica,
'J000' Area_funcional,

nvl(fn_obtieneCodReporte('P009',A.trn_tech_key,d.prd_lvl_child,d.prd_lvl_ch2
,d.prd_upc,A.CTRANSAC),1) Codigo_reporte,
(SELECT ((SELECT NVL(SUM(DEF.MEFECTIVO), 0)FROM VTADEFEF DEF WHERE
DEF.TRN_TECH_KEY = A.TRN_TECH_KEY) +
DECODE (A.CTRANSAC ,51 , 0 , 52 , 0, 14, 0, (SELECT
NVL(SUM(DTI.MTARJETA), 0)FROM VTADTIEF DTI WHERE DTI.TRN_TECH_KEY =
A.TRN_TECH_KEY)) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where
DTE.CTARJETA = 'V' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) +
--(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner
join VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
-- where DTE.CTARJETA = 'V' and BN.CTIPO = 'D' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where
DTE.CTARJETA = 'M' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) +
--(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner
join VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
-- where DTE.CTARJETA = 'M' and BN.CTIPO = 'D' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'A' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'D' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DGT.MGIFT), 0) FROM VTADGTEF DGT WHERE
DGT.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DCE.MCCE), 0) FROM VTADCEEF DCE WHERE

Página 37/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

DCE.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'G' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)+--GIFCARDCORP
(SELECT NVL(SUM(CCC.MCCC), 0) FROM VTADCCEF CCC WHERE
CCC.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DVC.MVALE), 0) FROM VTADVCEF DVC WHERE
DVC.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DMB.MMONTO), 0) FROM VTADMBEP DMB WHERE
DMB.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(PTS.MTARJETA), 0) FROM VTAPTSEF PTS WHERE
PTS.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND (TRIM(PQP.QPTYPEPAYMENT) = 'QPCR' or
PQP.QPTYPEPAYMENT is null )) +
(SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND TRIM(PQP.QPTYPEPAYMENT) = 'QPDB') +
(SELECT NVL(SUM(ADV.MREDONDEO), 0) FROM VTADVUEP ADV WHERE
ADV.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DPP.MVALECONSUMO), 0) FROM VTADPPEF DPP
WHERE DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DPP.MVALELIN), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) +
--(SELECT NVL(SUM(DPP.MVALEGLV), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) +
--(SELECT NVL(SUM(DPP.MVALEUBR), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(PAY.MWALLET), 0) FROM VTAEPAYP PAY WHERE
PAY.TRN_TECH_KEY = A.TRN_TECH_KEY) +
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE
DTE.CTARJETA = 'T' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY)) FROM DUAL)
mventa,

0 miva,
0 miva2,
'' Indicador_iva,

NVL(A.NMTO_DETR,0) ImpuestoAdicional3,
NVL(A.ccod_detr,0) ImpuestoAdicional3Indicador,
NVL(decode(a.ctransac, 14, l_rut1 , 51, l_rut1 ,52,l_rut1
,
nvl((select distinct ruc.PAR_VALUE from SAPFI_PARAM sfp, SAPFI_PARAM
ruc
where trim(sfp.PAR_VALUE)=to_char(d.prd_upc) and
TRIM(sfp.PAR_TYPE) = TRIM(co_My_Proc_Name)
and TRIM(sfp.PAR_NOMBRE) = trim(co_ruc_Transac) and
TRIM(sfp.PAR_TYPE) = TRIM(ruc.PAR_TYPE)
and sfp.PAR_CODE = ruc.PAR_CODE and
substr(ruc.PAR_NOMBRE,1,5)= 'CRUT_'
and rownum = 1),
(select distinct ruc.PAR_VALUE from SAPFI_PARAM sfp, SAPFI_PARAM
ruc, basatpee atp,basacdee acd
where TRIM(sfp.PAR_TYPE) = TRIM(co_My_Proc_Name)
and atp.atr_cod_tech_key = acd.atr_cod_tech_key
and atp.atr_hdr_tech_key= acd.atr_hdr_tech_key
and trim(acd.atr_code) = trim(sfp.PAR_VALUE)
and TRIM(sfp.PAR_NOMBRE) = trim(co_ruc_Transac) and

Página 38/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

TRIM(sfp.PAR_TYPE) = TRIM(ruc.PAR_TYPE)
and sfp.PAR_CODE = ruc.PAR_CODE and
substr(ruc.PAR_NOMBRE,1,5)= 'CRUT_'
and atp.prd_lvl_child = d.prd_lvl_child and rownum = 1))
),'0') cdoc_identidad,
NVL(decode(a.ctransac, 14, l_razonsoc1 ,51 , l_razonsoc1 ,
52,l_razonsoc1 ,
nvl((select distinct ruc.PAR_DESC from SAPFI_PARAM sfp, SAPFI_PARAM
ruc
where trim(sfp.PAR_VALUE)=to_char(d.prd_upc) and
TRIM(sfp.PAR_TYPE) = TRIM(co_My_Proc_Name)
and TRIM(sfp.PAR_NOMBRE) = trim(co_ruc_Transac) and
TRIM(sfp.PAR_TYPE) = TRIM(ruc.PAR_TYPE)
and sfp.PAR_CODE = ruc.PAR_CODE and
substr(ruc.PAR_NOMBRE,1,5)= 'CRUT_'
and rownum = 1),
(select distinct ruc.PAR_DESC from SAPFI_PARAM sfp, SAPFI_PARAM
ruc, basatpee atp,basacdee acd
where TRIM(sfp.PAR_TYPE) = TRIM(co_My_Proc_Name)
and atp.atr_cod_tech_key = acd.atr_cod_tech_key
and atp.atr_hdr_tech_key= acd.atr_hdr_tech_key
and trim(acd.atr_code) = trim(sfp.PAR_VALUE)
and TRIM(sfp.PAR_NOMBRE) = trim(co_ruc_Transac) and
TRIM(sfp.PAR_TYPE) = TRIM(ruc.PAR_TYPE)
and sfp.PAR_CODE = ruc.PAR_CODE and
substr(ruc.PAR_NOMBRE,1,5)= 'CRUT_'
and atp.prd_lvl_child = d.prd_lvl_child and rownum = 1))
),'') cdoc_razonsoc,
0 cond_pago,
0 MDESCTOPRD,
0 MDESCTOPRO,
MIN(A.TRN_TECH_KEY) min_trntechkey,
MAX(A.TRN_TECH_KEY) max_trntechkey,
'0' numero_doc_ref,
0 tipo_documento_ref,
DECODE(A.ORG_LVL_NUMBER,910,1,2) vemp_ret,
(SELECT NVL(SUM(DEF.MEFECTIVO), 0) FROM VTADEFEF DEF WHERE
DEF.TRN_TECH_KEY = A.TRN_TECH_KEY) AS EFECTIVO,
DECODE(A.CTRANSAC, 51, 0 , 52, 0 , 14 , 0,
(SELECT NVL(SUM(DTI.MTARJETA), 0)FROM VTADTIEF DTI WHERE
DTI.TRN_TECH_KEY = A.TRN_TECH_KEY)) AS CMR,
--(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
--where DTE.CTARJETA = 'V' and BN.CTIPO = 'C' and
DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS VISA_CREDITO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where DTE.CTARJETA = 'V'
and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS VISA_CREDITO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
where DTE.CTARJETA = 'V' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY
= A.TRN_TECH_KEY) AS VISA_DEBITO,
--(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE left join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)

Página 39/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

--where DTE.CTARJETA = 'M' and BN.CTIPO = 'C' and


DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS MC_CREDITO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE where DTE.CTARJETA
= 'M' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS MC_CREDITO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE inner join
VTABINEP BN on (BN.CTARJETA=DTE.CTARJETA and
SUBSTR(DTE.NCUENTA,1,6)=BN.NBIN)
where DTE.CTARJETA = 'M' and BN.CTIPO = 'D' and DTE.TRN_TECH_KEY
= A.TRN_TECH_KEY) AS MC_DEBITO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE DTE.CTARJETA
= 'A' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS EXPRESSNET,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE DTE.CTARJETA
= 'D' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS DINERS,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE DTE.CTARJETA
= 'G' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS GIFTCORP,
(SELECT NVL(SUM(DGT.MGIFT), 0) FROM VTADGTEF DGT WHERE
DGT.TRN_TECH_KEY = A.TRN_TECH_KEY) AS GIFT,
(SELECT NVL(SUM(DCE.MCCE), 0) FROM VTADCEEF DCE WHERE
DCE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS CONTADOCHEQUE,
(SELECT NVL(SUM(CCC.MCCC), 0) FROM VTADCCEF CCC WHERE
CCC.TRN_TECH_KEY = A.TRN_TECH_KEY) AS CCC,--
(SELECT NVL(SUM(DVC.MVALE), 0) FROM VTADVCEF DVC WHERE
DVC.TRN_TECH_KEY = A.TRN_TECH_KEY) AS VALECREDITO,
(SELECT NVL(SUM(DMB.MMONTO), 0) FROM VTADMBEP DMB WHERE
DMB.TRN_TECH_KEY = A.TRN_TECH_KEY) AS VALES_ALIM_MONTO,
(SELECT NVL(SUM(PTS.MTARJETA), 0) FROM VTAPTSEF PTS WHERE
PTS.TRN_TECH_KEY = A.TRN_TECH_KEY) AS CMRPUNTOS,
(SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND (TRIM(PQP.QPTYPEPAYMENT) = 'QPCR' or
PQP.QPTYPEPAYMENT is null )) AS QUICKPAY_CRED,
(SELECT NVL(SUM(PQP.MQUICKPAY), 0) FROM VTAPQPEP PQP WHERE
PQP.TRN_TECH_KEY = A.TRN_TECH_KEY AND TRIM(PQP.QPTYPEPAYMENT) = 'QPDB') AS
QUICKPAY_DEB,
(SELECT NVL(SUM(ADV.MREDONDEO), 0) FROM VTADVUEP ADV WHERE
ADV.TRN_TECH_KEY = A.TRN_TECH_KEY) AS REDONDEO,
(SELECT NVL(SUM(DPP.MVALECONSUMO), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) AS VALE_CONSUMO,
(SELECT NVL(SUM(DPP.MVALELIN), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) AS LINIO,
(SELECT NVL(SUM(DTE.MTARJETA), 0)FROM VTADTEEF DTE WHERE DTE.CTARJETA
= 'T' and DTE.TRN_TECH_KEY = A.TRN_TECH_KEY) AS MONTOTTUS,
--(SELECT NVL(SUM(DPP.MVALEGLV), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) AS GLOVO,
--(SELECT NVL(SUM(DPP.MVALEUBR), 0) FROM VTADPPEF DPP WHERE
DPP.TRN_TECH_KEY = A.TRN_TECH_KEY) AS UBER,
(SELECT NVL(SUM(PAY.MWALLET), 0) FROM VTAEPAYP PAY WHERE
PAY.TRN_TECH_KEY = A.TRN_TECH_KEY) AS FPAY,

(SELECT NVL(SUM(DTE.MCASH_BACK),0) FROM VTADTEEF DTE WHERE


DTE.TRN_TECH_KEY = A.TRN_TECH_KEY AND DTE.BMATCH = 'D') VUELTO

FROM VTAHDREF A left join VTADPREF D ON A.TRN_TECH_KEY =


D.TRN_TECH_KEY left join PRDMSTEE PRD
ON D.prd_lvl_child=PRD.prd_lvl_child left join TXSPRDEE TPR
ON TPR.prd_lvl_child=PRD.prd_lvl_child left join TXSCODEE TXS
ON TXS.TXS_CODE_TECH_KEY = TPR.TXS_CODE_TECH_KEY left join

Página 40/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

SAPFI_INDIMPDET IMP
ON IMP.TXS_CODE_TECH_KEY = TXS.TXS_CODE_TECH_KEY, VTATTRCF TTR
WHERE A.DPROCESO = pi_fecha_periodo
AND A.DCOMPRA = p_dcompra

AND A.CESTADO = 'V'


AND A.CTRANSAC = TTR.CTRANSAC
AND A.TRN_TECH_KEY NOT IN (SELECT CC.TRN_TECH_KEY FROM
VTADCCEF CC where CC.TRN_TECH_KEY =A.TRN_TECH_KEY)
AND to_char(p_cdocumento) IN (SELECT TO_CHAR(PAR_VALUE)
FROM SAPFI_PARAM
WHERE TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name)
AND TRIM(PAR_NOMBRE) = TRIM(co_cdocumento_j01))
AND to_char(p_ctransac) IN (SELECT TO_CHAR(PAR_VALUE)
FROM SAPFI_PARAM
WHERE TRIM(PAR_TYPE) = TRIM(co_My_Proc_Name)
AND TRIM(PAR_NOMBRE) = TRIM(co_ctransac_whitelist_j01))
AND a.ORG_LVL_NUMBER = v_local
AND TO_CHAR(NVL(a.cdocumento,0)) = to_char(p_cdocumento)
AND a.ctransac = p_ctransac
AND A.TRN_TECH_KEY not in (SELECT TRN_TECH_KEY FROM VTATEMPWW
WHERE DPROCESO = pi_fecha_periodo AND TABLA = 'VTA')--REENTRADA ONLINE
GROUP BY
A.TRN_TECH_KEY,
A.DCOMPRA,
a.org_lvl_child,
A.DPROCESO,
A.ORG_LVL_NUMBER,
A.CTRANSAC,

d.prd_lvl_child,d.prd_lvl_ch2,d.prd_upc,
IMP.TXS_CODE_INDIMP,prd.prd_sku_type,d.CPLAZOIVA,
A.NMTO_DETR,A.ccod_detr--,
having sum(nvl(d.mventa,a.mmonto)) <> 0
ORDER BY A.CTRANSAC, A.ORG_LVL_NUMBER, A.DPROCESO, A.DCOMPRA,
cdoc_identidad)
GROUP BY SECCION,
ORG_LVL_CHILD,
DPROCESO,
DEMPRESA,
CTRANSAC,
DCOMPRA,
ORG_LVL_NUMBER,
CDOCUMENTO,
NGUIA_ELECTRONICA,
AREA_FUNCIONAL,
CODIGO_REPORTE,
INDICADOR_IVA,

IMPUESTOADICIONAL3INDICADOR,
CDOC_IDENTIDAD,
CDOC_RAZONSOC,
COND_PAGO,
NUMERO_DOC_REF,
TIPO_DOCUMENTO_REF,
VEMP_RET

Página 41/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

ORDER BY CTRANSAC, ORG_LVL_NUMBER, DPROCESO, DCOMPRA,


mincomprobante, area_funcional, cdoc_identidad;

c_cursorCabeceraRow c_cursorCabecera%RowType;

----------------------------------------------------------------------------
---
-- Procedimiento obtiene valor del Sys_Guid

----------------------------------------------------------------------------
---
PROCEDURE prc_s_obtiene_sys_guid (i_RefLegado VARCHAR2, i_CodInterfaz
VARCHAR2)
IS
l_NroLegado NUMBER;
l_GeneraSysGuid VARCHAR2(3);
l_SysGuid sapfi_recibemsge.sys_guid%TYPE;
BEGIN
SELECT NVL(MAX(nro_legado),0)
INTO l_NroLegado
FROM sapfi_outinee
WHERE cod_interfaz = i_CodInterfaz
AND ref_legado = i_RefLegado
AND (numero_sap IS NOT NULL AND numero_sap <> '0');

l_GeneraSysGuid := 'NO';
IF l_NroLegado <> 0 THEN
BEGIN
SELECT SYS_GUID
INTO l_SysGuid
FROM Sapfi_Recibemsge
WHERE nro_legado = l_NroLegado;

EXCEPTION
WHEN NO_DATA_FOUND THEN
l_GeneraSysGuid := 'OK';
WHEN OTHERS THEN
l_GeneraSysGuid := 'OK';
END;
ELSE
l_GeneraSysGuid := 'OK';
END IF;

--Paso 3: Se asigna o genera el Sys_Guid dependiendo del resultado de


los pasos 1 y 2.
IF l_GeneraSysGuid = 'OK' THEN
--Genera SYS_GUID nuevo
SELECT SYS_GUID() INTO l_sys_guid FROM dual;
ELSE
--Asigna SYS_GUID recuperado
l_sys_guid := l_SysGuid;
END IF;
END prc_s_obtiene_sys_guid;

Página 42/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

----------------------------------------------------------------------------
---
-- Procedure Control de Errores

----------------------------------------------------------------------------
---
PROCEDURE Ctr_ErrHandle IS
BEGIN
BEGIN
RAISE_APPLICATION_ERROR(l_Nro_Error, l_msg_error, false);

EXCEPTION
WHEN OTHERS THEN
ROLLBACK; -- Aborta la transacciones
sapfi_errhandle(co_My_Proc_Name,
trim(l_Codinterfaz),
l_nro_legado); -- capturo error
END;
END Ctr_ErrHandle;
FUNCTION fn_obtieneParametro(p_nomParametro VARCHAR2) RETURN VARCHAR2

IS
l_varSalida SAPFI_PARAM.PAR_VALUE%TYPE;
BEGIN
l_Msg_Error := 'Recuperando parametro: '||p_nomParametro;
SELECT par_value
INTO l_varSalida
FROM sapfi_param
WHERE TRIM(par_type) = TRIM(co_My_Proc_Name)
AND TRIM(par_nombre) = TRIM(p_nomParametro);

RETURN l_varSalida;
END fn_obtieneParametro;

FUNCTION fn_obtieneParametro2(p_nomParametro VARCHAR2, p_desc NUMBER)


RETURN VARCHAR2
IS
l_varSalida varchar2(50);
BEGIN

l_Msg_Error := 'Recuperando parametro 2: '||p_nomParametro;


IF (p_desc=1) THEN
SELECT SUBSTR(par_VALUE,1,50)
INTO l_varSalida
FROM SAPFI_PARAM
WHERE TRIM(par_type) = TRIM(co_My_Proc_Name)
AND TRIM(par_nombre) = TRIM(p_nomParametro)
AND ROWNUM < 2;

ELSE
SELECT SUBSTR(PAR_DESC,1,50)
INTO l_varSalida
FROM SAPFI_PARAM
WHERE TRIM(par_type) = TRIM(co_My_Proc_Name)
AND TRIM(par_nombre) = TRIM(p_nomParametro)

Página 43/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

AND ROWNUM < 2;

END IF ;

RETURN l_varSalida;
END fn_obtieneParametro2;

FUNCTION fn_obtieneParametroCHL(p_nomParametro VARCHAR2, p_desc NUMBER)


RETURN VARCHAR2
IS
l_varSalida SAPFI_PARAM.PAR_VALUE%TYPE;
BEGIN
l_Msg_Error := 'Recuperando parametro CHL: '||p_nomParametro;
SELECT DECODE(p_desc, 0, param_value, 1, param_desc, 2, param_value1)
INTO l_varSalida
FROM Sapfi_Chlparam
WHERE TRIM(param_code) = TRIM(p_nomParametro)
AND ROWNUM < 2;

RETURN l_varSalida;
END fn_obtieneParametroCHL;

FUNCTION fn_formatoMonto(p_monto NUMBER) RETURN VARCHAR2


IS
l_varMOnto varchar2(18);
BEGIN
l_varMOnto:='X'||replace(round(p_monto,2),',','.');
l_varMOnto:=replace(l_varMOnto,'X.','0.');
l_varMOnto:=replace(l_varMOnto,'X-.','-0.');
l_varMOnto:=replace(l_varMOnto,'X','');

RETURN l_varMOnto;
END fn_formatoMonto;

----------------------------------------------------------------------------
---
FUNCTION fn_completaRuc10(P_numero_RUC VARCHAR2) RETURN VARCHAR2 IS
ln_start INTEGER := 1;
ln_max INTEGER := 6;
ln_curr INTEGER;
ln_base INTEGER := 11;
ln_total INTEGER := 0;
ln_last_digit INTEGER;
BEGIN
FOR I IN 1..10 LOOP
if ln_curr > ln_max or ln_curr is null then
ln_curr := ln_start + 1;
else
ln_curr := ln_curr + 1;
end if;
ln_total := ln_total + (ln_curr *substr(P_numero_RUC,(ln_base-
i),1));
END LOOP;

ln_last_digit :=ln_base-(ln_total-FLOOR((ln_total/
ln_base))*ln_base);

Página 44/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

IF ln_last_digit > 9 THEN


ln_last_digit := SUBSTR(ln_last_digit,2,1);
END IF;

return SUBSTR(P_numero_RUC,1,10) || ln_last_digit;


END;

----------------------------------------------------------------------------
---
-- Procedure Control de Errores

----------------------------------------------------------------------------
---
PROCEDURE prc_ctr_errhandle
IS
BEGIN
BEGIN
raise_application_error(l_nro_error, l_msg_error,false);

EXCEPTION
WHEN OTHERS THEN
ROLLBACK; -- Aborta la transacciones
sapfi_errhandle(co_My_Proc_Name,l_CodInterfaz,l_nro_legado); --
capturo error
END;
END prc_ctr_errhandle;

PROCEDURE prc_reportaErrorSuma AS
l_mensaje VARCHAR2(1000);
BEGIN
l_mensaje:='l_sumaJerarquias('||l_sumaJerarquias||')!
=l_sumaMediosPago('||l_sumaMediosPago||') ($'||(l_sumaMediosPago-
l_sumaJerarquias)||')';

--Inicio MLR01
--Reemplaza Empresa
--PROC_SAPFI_RECIBEMSGE_PE(trim(l_Codinterfaz),
0,2018,l_Nro_Legado, l_CodEmpresa,'ERR411','PE',1,NULL,NULL,
--l_mensaje,l_XML,1,l_sys_guid,NULL);

PROC_SAPFI_RECIBEMSGE_PE(trim(l_Codinterfaz),
0,2020,l_Nro_Legado, vl_codsoc,'ERR411','PE',1,NULL,NULL,
l_mensaje,l_XML,1,l_sys_guid,NULL);

--Fin MLR01

l_nro_error := -20101;
raise_application_error(l_Nro_Error, l_mensaje);
EXCEPTION
WHEN OTHERS THEN

sapfi_errhandle(co_My_Proc_Name,trim(l_Codinterfaz),l_Nro_Legado);
END prc_reportaErrorSuma;

Página 45/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

PROCEDURE prc_insertaXML(p_XML IN CLOB, p_min_trntechkey IN


SAPFI_OUTINEE.REF_LEGADO%TYPE, p_max_trntechkey IN NUMBER, p_ORG_LVL_CHILD
IN NUMBER, flag IN number) IS
BEGIN

IF p_XML IS NOT NULL THEN

vc_refin:=TO_CLOB(l_Item00_XML)||p_XML; --agregadooo

select sapfi_genHeaderSend(l_Codinterfaz,vl_codsoc,vc_refin)
into vc_fin from dual;

vc_refin := TO_CLOB(vc_fin)|| TO_CLOB(l_Item14_XML);

var_nlote:= 1; --P009
IF (trim(vl_codsoc) = 'P010') THEN
var_nlote:= 2; --P010
END IF;

l_estado:=0;

IF(flag=9) THEN
l_estado:=flag;
END IF;

prc_s_obtiene_sys_guid(p_min_trntechkey, l_Codinterfaz);
vc_refin :=REPLACE(vc_refin, '${sys_guid}', TO_CHAR(l_sys_guid));

SELECT sapfi_seq_nrolegado.nextval INTO l_Nro_Legado FROM dual;


BEGIN
/*Tabla de Salida*/
----dbms_output.put_line('insert SAPFI_OUTINEE::l_Nro_Legado::'
|| l_Nro_Legado);
INSERT INTO SAPFI_OUTINEE
(COD_APLIC,
COD_INTERFAZ,
COD_TIPO_TRAN,
NRO_LEGADO,
VERSION,
XML_MSG_OUT,
XML_MSG_IN,
FEC_ENVIO,
FEC_RETORNO,
STS_ID,
NRO_INTENTOS,
REF_LEGADO,
NRO_LOTE)
VALUES
(trim(l_CodAplicacion),
trim(l_Codinterfaz),
co_cod_tipo_tran,
l_Nro_Legado,
co_Version,
--Inicio MLR02

Página 46/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

--Reemplaza resultado
--p_XML,
vc_refin,
--Fin MLR02
NULL,
l_fec_envio,
NULL,
l_estado,
co_nro_intentos,
p_min_trntechkey,
var_nlote)
RETURNING NRO_LEGADO INTO l_Nro_Legado_Chk;

COMMIT;

vartemp_cdocumento :=l_cdocAnterior ;
vartemp_ctransac :=l_ctransacAnterior ;
var_valor := 0;

IF(vartemp_ctransac=11) THEN
IF (vartemp_cdocumento=33)THEN
vartemp_ctransac :=1;
vartemp_cdocumento :=1;
ELSIF (vartemp_cdocumento=90) THEN
vartemp_ctransac :=30;
vartemp_cdocumento :=7;
END IF;
ELSIF (vartemp_ctransac=1) THEN
IF (vartemp_cdocumento=33 or vartemp_cdocumento=39)THEN
vartemp_cdocumento :=3;
END IF;
ELSIF (vartemp_ctransac=30) THEN
vartemp_cdocumento :=7;
ELSIF (vartemp_ctransac=70) THEN
var_valor := 1;
IF (vartemp_cdocumento = 0) THEN
var_valor := 0;
vartemp_cdocumento:=2;
END IF;
ELSIF (vartemp_ctransac=74) THEN
var_valor := 1;
IF (vartemp_cdocumento = 0) THEN
var_valor := 0;
vartemp_cdocumento:=2;
END IF;
ELSIF (vartemp_ctransac=76) THEN
var_valor := 1;
IF (vartemp_cdocumento = 0) THEN
var_valor := 0;
vartemp_cdocumento:=2;
END IF;
ELSE
vartemp_cdocumento:=2;
END IF;

IF(flag=0) THEN

Página 47/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

FOR c1Row in c1(p_min_trntechkey,p_max_trntechkey,


p_ORG_LVL_CHILD,
pi_fecha_periodo,l_dcompraAnterior,
vartemp_ctransac,vartemp_cdocumento, var_valor) LOOP

INSERT INTO SAPFI_CDTLENVEE (TRN_TECH_KEY, ORG_LVL_CHILD,


DPROCESO, NTERMINAL,
NSECUENCIA, DCOMPRA, DGENERACION, SYS_GUID, COD_INTERFAZ,
NRO_LEGADO)
VALUES (c1Row.TRN_TECH_KEY, c1Row.ORG_LVL_CHILD,
c1Row.DPROCESO, c1Row.NTERMINAL,
c1Row.NSECUENCIA, c1Row.DCOMPRA, SYSDATE, l_sys_guid,
trim(l_Codinterfaz), l_Nro_Legado);

END LOOP;
END IF;
IF NVL(l_Nro_Legado_Chk, 0) = 0 THEN
l_Nro_Error := co_error_handle;
l_Msg_Error := 'Error : No se pudo insertar en SAPFI_OUTINEE';

BEGIN
RAISE_APPLICATION_ERROR(l_Nro_Error, l_Msg_Error);
EXCEPTION
WHEN OTHERS THEN
SAPFI_ERRHANDLE(co_My_Proc_Name,
trim(l_Codinterfaz),
l_Nro_Legado);
END;
ELSE
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;

sapfi_errhandle(co_My_Proc_Name,trim(l_Codinterfaz),l_Nro_Legado);
END;

BEGIN
/*Tabla de Historico*/
INSERT INTO SAPFI_OUTINAH
(COD_APLIC,
COD_INTERFAZ,
COD_TIPO_TRAN,
NRO_LEGADO,
VERSION,
XML_MSG_OUT,
XML_MSG_IN,
FEC_ENVIO,
FEC_RETORNO,
STS_ID,
NRO_INTENTOS,
REF_LEGADO,
NRO_LOTE,
FEC_AUDIT)

Página 48/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

VALUES
(TRIM(l_CodAplicacion),
TRIM(l_Codinterfaz),
co_cod_tipo_tran,
l_Nro_Legado,
co_Version,
vc_refin,
NULL,
l_fec_envio,
NULL,
l_estado,
co_nro_intentos,
p_min_trntechkey,
var_nlote,
SYSDATE)
RETURNING NRO_LEGADO INTO l_Nro_Legado_Chk;

IF NVL(l_Nro_Legado_Chk, 0) = 0 THEN
-- verifico si la grabacion fue erronea
l_Nro_Error := co_error_handle;
l_Msg_Error := 'Error : No se pudo insertar en SAPFI_OUTINAH';
BEGIN
RAISE_APPLICATION_ERROR(l_Nro_Error, l_Msg_Error);
EXCEPTION
WHEN OTHERS THEN
SAPFI_ERRHANDLE(co_My_Proc_Name,
trim(l_Codinterfaz),
l_Nro_Legado);
END;
END IF;

COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;

sapfi_errhandle(co_My_Proc_Name,trim(l_Codinterfaz),l_Nro_Legado);
END;

l_nro_error := -20101;
IF l_nro_error = -20101 THEN
BEGIN
INSERT INTO sapfi_ctrenvee (
sys_guid,
cod_interfaz,
nro_legado,
ref_legado,
fec_proceso,
trn_tech_key_ini,
trn_tech_key_fin,
ORG_LVL_CHILD
)
VALUES
(
l_sys_guid,
TRIM(l_CodInterfaz),

Página 49/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

l_nro_Legado,
p_min_trntechkey,
to_date(pi_fecha_periodo,'dd/mm/yyyy'),--l_fec_envio,
TO_NUMBER(p_min_trntechkey),
p_max_trntechkey,
p_ORG_LVL_CHILD
)
RETURNING nro_legado INTO l_nro_legado_r;

IF NVL(l_nro_legado_r,0) = 0 THEN -- verifico si la


grabacion fue erronea
l_nro_error := -20101; -- no se pudo grabar
l_msg_error := 'Error: No se pudo insertar en
SAPFI_CTRENVEE';
prc_ctr_errhandle;
ELSE
COMMIT; -- Confirmo grabacion exitosa
END IF;

EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
UPDATE sapfi_ctrenvee
SET cod_interfaz = l_CodInterfaz,
nro_legado = l_nro_Legado,
ref_legado = p_min_trntechkey,
fec_proceso =
to_date(pi_fecha_periodo,'dd/mm/yyyy'),--l_fec_envio,
trn_tech_key_ini =
TO_NUMBER(p_min_trntechkey),
trn_tech_key_fin = p_max_trntechkey
WHERE sys_guid = l_sys_guid
RETURNING nro_legado INTO l_nro_legado_r;

IF NVL(l_nro_legado_r,0) = 0 THEN -- verifico si la


grabacion fue erronea
l_nro_error := -20101; -- no se pudo grabar
l_msg_error := 'Error: No se pudo actualizar en
SAPFI_CTRENVEE';
prc_ctr_errhandle;
ELSE
COMMIT; -- Confirmo grabacion exitosa
END IF;

WHEN OTHERS THEN


l_nro_error := -20101;
l_msg_error := 'Error: Excepcion no se pudo grabar
SAPFI_CTRENVEE - ' || SQLERRM || ' ' ||
SUBSTR(DBMS_UTILITY.format_error_backtrace,INSTR(DBMS_UTILITY.format_error_b
acktrace,':',1)+1);
prc_ctr_errhandle;
END;--begin
END IF;--if

END IF;

Página 50/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

END prc_insertaXML;

PROCEDURE prc_creaNodoMedioPago(p_med_pago VARCHAR2, p_mabono NUMBER) IS


BEGIN
IF(p_mabono <> 0)THEN
IF(l_ctransacAnterior=14)THEN
l_charMediopago:=ABS(p_mabono);
ELSE
l_charMediopago:=round(p_mabono,2);
END IF;
l_charMediopago:='X'||replace(l_charMediopago,',','.');
l_charMediopago:=replace(l_charMediopago,'X.','0.');
l_charMediopago:=replace(l_charMediopago,'X','');

SELECT l_MediosPago_XML || '<Item>' ||


XMLELEMENT("med_pago", trim(p_med_pago)) ||
XMLELEMENT("mabono",l_charMediopago) || '</Item>'
INTO l_MediosPago_XML
FROM DUAL;
l_sumaMediosPago := NVL(l_sumaMediosPago,0) + NVL(p_mabono,0);
END IF;
END prc_creaNodoMedioPago;

FUNCTION fn_obtieneMediosPago(EFECTIVO number,


CMR number,
VISA_CREDITO number,
VISA_DEBITO number,
MC_CREDITO number,
MC_DEBITO number,
EXPRESSNET number,
DINERS number,
--GIFT number,
CONTADOCHEQUE number,
CCC number,
VALECREDITO number,
VALES_ALIM_MONTO number,
CMRPUNTOS number,
QUICKPAY_CRED number,
QUICKPAY_DEB number,
REDONDEO number,
VALE_CONSUMO number,
LINIO number,
MONTOTTUS number,
--GLOVO number,
--UBER number,
FPAY number,
VUELTO number ) RETURN CLOB IS

BEGIN

l_MediosPago_XML := TO_CLOB(l_Item10_XML);

--Se suma vuelto a tarjeta de debito y se resta de efectivo


prc_creaNodoMedioPago('AJV',NVL(REDONDEO,0));

Página 51/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

prc_creaNodoMedioPago('EFE',NVL(EFECTIVO,0)-NVL(VUELTO,0));
prc_creaNodoMedioPago('PRTO',NVL(CMRPUNTOS,0));

IF (flag70_76_0_pacifico=0) THEN
prc_creaNodoMedioPago('CMR', NVL(CMR,0));
END IF;

prc_creaNodoMedioPago('VCT',NVL(VISA_CREDITO,0));
prc_creaNodoMedioPago('VDE',NVL(VISA_DEBITO,0)+NVL(VUELTO,0));
prc_creaNodoMedioPago('MCC',NVL(MC_CREDITO,0));
prc_creaNodoMedioPago('MCD',NVL(MC_DEBITO,0)+NVL(VUELTO,0));
prc_creaNodoMedioPago('AMX',NVL(EXPRESSNET,0));
prc_creaNodoMedioPago('DNR',NVL(DINERS,0));
prc_creaNodoMedioPago('QPC',NVL(QUICKPAY_CRED,0));
prc_creaNodoMedioPago('QPF',NVL(QUICKPAY_DEB,0));
prc_creaNodoMedioPago('FPA', NVL(FPAY,0));
prc_creaNodoMedioPago('DBC',NVL(VALE_CONSUMO,0));
prc_creaNodoMedioPago('LIN',NVL(LINIO,0));
prc_creaNodoMedioPago('MON',NVL(MONTOTTUS,0));
prc_creaNodoMedioPago('MBR',NVL(VALES_ALIM_MONTO,0));
prc_creaNodoMedioPago('VCR',NVL(VALECREDITO,0));
prc_creaNodoMedioPago('CCC',NVL(CCC,0));
--prc_creaNodoMedioPago('TARG',NVL(GLOVO,0));
prc_creaNodoMedioPago('CCE',NVL(CONTADOCHEQUE,0));

--prc_creaNodoMedioPago('TARU',NVL(UBER,0));

l_MediosPago_XML := l_MediosPago_XML || TO_CLOB(l_Item11_XML);


RETURN l_MediosPago_XML;
END fn_obtieneMediosPago;

FUNCTION fn_obtieneImpAdicional(p_impadicional14 NUMBER,


p_impadicional35 NUMBER) RETURN CLOB IS

BEGIN
IF (p_impadicional14 > 0) THEN
SELECT l_ImpAdicionales_XML || l_Item07_XML ||
XMLELEMENT("Indicador_impuesto",'D114') ||

XMLELEMENT("mimp_adic",replace(ROUND(p_impadicional14,2),',','.')) ||

XMLELEMENT("base_adic",replace(ROUND(l_sumaImpAdic,2),',','.')) ||
l_Item08_XML
INTO l_ImpAdicionales_XML
FROM DUAL;
END IF;

IF (p_impadicional35 > 0) THEN


SELECT l_ImpAdicionales_XML || l_Item07_XML ||
XMLELEMENT("Indicador_impuesto",'D535') ||

XMLELEMENT("mimp_adic",replace(ROUND(p_impadicional35,2),',','.')) ||

XMLELEMENT("base_adic",replace(ROUND(l_sumaImpAdic,2),',','.')) ||

Página 52/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

l_Item08_XML
INTO l_ImpAdicionales_XML
FROM DUAL;
END IF;

l_ImpAdicionales_XML := TO_CLOB(l_Item06_XML) ||
l_ImpAdicionales_XML || TO_CLOB(l_Item09_XML);
RETURN l_ImpAdicionales_XML;
END fn_obtieneImpAdicional;

PROCEDURE prc_grabaDocumentoGIFT (orglvlnumber IN number,ctransac IN


number ,cdocumento IN number ,dproceso IN date ,
dcompra IN date ,montoventa IN
number ,cantboletas IN number, p_min_trntechkey number,
p_max_trntechkey number) IS

BEGIN
BEGIN
l_AreaCredito_XML := '';
l_XML := '';
l_ImpAdicionales_XML := '';
l_Head_XML := '';
l_Detalle_XML := '';

begin
select org_lvl_child into vl_org_lvl_child
from orgmstee
where org_lvl_number = orglvlnumber;
EXCEPTION
WHEN no_data_found THEN
l_Nro_Error := co_error_handle;
l_msg_error := 'No se encontro el numero de Organizacion
'|| orglvlnumber||' en la tabla ORGMSTEE';
Ctr_ErrHandle; -- Registrar error
RETURN; -- Abortar proceso
END;

select fnc_codigo_sociedad_f(vl_org_lvl_child) into


vl_codsoc from dual;

SELECT l_Item01_XML ||
XMLELEMENT("sys_gui", '${sys_guid}') || --l_sys_guid)
||
XMLELEMENT("dproceso", trim(TO_CHAR(dproceso,
'YYYY-MM-DD'))) ||
XMLELEMENT("dempresa", trim(vl_codsoc))
||
XMLELEMENT("ctransac", ctransac ) ||
XMLELEMENT("dcompra",
trim(TO_CHAR(dcompra,'YYYY-MM-DD'))) ||
XMLELEMENT("org_lvl_number", trim(orglvlnumber))
||
XMLELEMENT("cdocumento", trim(cdocumento))
||

Página 53/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

XMLELEMENT("ncomprobante",
TO_CHAR(p_min_trntechkey)) ||
XMLELEMENT("ncomprobante1",
TO_CHAR(p_max_trntechkey)) ||
XMLELEMENT("cantidadboletas", cantboletas) ||
XMLELEMENT("nguia_electronica",0) ||
XMLELEMENT("tipo_documento_ref", 0)||
XMLELEMENT("numero_doc_ref", 0)||
XMLELEMENT("vemp_ret", 2)||
l_Item02_XML
INTO l_Head_XML
FROM dual;

SELECT l_Item04_XML ||
XMLELEMENT("cdoc_identidad",trim(l_rut4)) ||

XMLELEMENT("cdoc_razonsoc",substr(trim(reemp_car_esp_f(l_razonsoc4)),1,50))
||
XMLELEMENT("cond_pago",0) ||
XMLELEMENT("org_lvl_number",trim(orglvlnumber))||
XMLELEMENT("Ref_Legado",'NA')
INTO l_Detalle_XML
FROM DUAL;

vartemp_mventa:=fn_formatoMonto(montoventa);

SELECT l_AreaCredito_XML || l_Item07_XML ||


XMLELEMENT("Area_funcional",'J000') ||
XMLELEMENT("mventa",vartemp_mventa) ||
XMLELEMENT("mdescto",0) ||
XMLELEMENT("Indicador_iva",'0') ||
XMLELEMENT("miva",0) ||
XMLELEMENT("cod_reporte",1)
INTO l_AreaCredito_XML
FROM DUAL;

l_AreaCredito_XML := l_AreaCredito_XML || l_Item08_XML;


l_MediosPago_XML := TO_CLOB(l_Item10_XML);
prc_creaNodoMedioPago('GFT',montoventa);
l_vMediosPago_XML := l_MediosPago_XML ||
TO_CLOB(l_Item11_XML);

l_Detalle_XML := l_Detalle_XML ||
l_Item05_XML ||
l_AreaCredito_XML||
l_Item12_XML ||
l_vMediosPago_XML ||
l_ImpAdicionales_XML ||
TO_CLOB(l_Item13_XML);

l_XML := l_Head_XML ||
TO_CLOB(l_Item03_XML)||
l_Detalle_XML ;

IF(l_XML LIKE l_Item01_XML||'%')THEN


prc_insertaXML(l_XML, p_min_trntechkey,p_max_trntechkey,

Página 54/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

orglvlnumber,1);
END IF;

EXCEPTION
WHEN OTHERS THEN
l_nro_error := co_error_handle;
l_msg_error := 'Error: armar XML - Documentos GIFT ' ||
SQLERRM || ' ' ||
SUBSTR(DBMS_UTILITY.format_error_backtrace,
INSTR(DBMS_UTILITY.format_error_backtrace,':',1) +
1);
Ctr_ErrHandle;
END;
EXCEPTION
WHEN OTHERS THEN

sapfi_errhandle(co_My_Proc_Name,trim(l_Codinterfaz),l_Nro_Legado);
END prc_grabaDocumentoGIFT;
BEGIN

-- Obtencion de Tag Item 01 XML


BEGIN

--Inicio MLR02
l_Item00_XML := fn_obtieneParametro(co_ParTagItem00);
--Fin MLR02

l_Item01_XML := fn_obtieneParametro(co_ParTagItem01);
l_Item02_XML := fn_obtieneParametro(co_ParTagItem02);
l_Item03_XML := fn_obtieneParametro(co_ParTagItem03);
l_Item04_XML := fn_obtieneParametro(co_ParTagItem04);
l_Item05_XML := fn_obtieneParametro(co_ParTagItem05);
l_Item06_XML := fn_obtieneParametro(co_ParTagItem06);
l_Item07_XML := fn_obtieneParametro(co_ParTagItem07);
l_Item08_XML := fn_obtieneParametro(co_ParTagItem08);
l_Item09_XML := fn_obtieneParametro(co_ParTagItem09);
l_Item10_XML := fn_obtieneParametro(co_ParTagItem10);
l_Item11_XML := fn_obtieneParametro(co_ParTagItem11);
l_Item12_XML := fn_obtieneParametro(co_ParTagItem12);
l_Item13_XML := fn_obtieneParametro(co_ParTagItem13);
l_Item14_XML := fn_obtieneParametro(co_ParTagItem14);

--Inicio MLR01
--Anula variable empresa valor fijo
--l_CodEmpresa := fn_obtieneParametro(co_ParCodEmpresa);
--Fin MLR01

l_CodAplicacion := fn_obtieneParametroCHL(co_ParAplicacion,0);
l_Codinterfaz := fn_obtieneParametroCHL(co_ParInterfaz, 0);

l_rut1 := fn_obtieneParametro2(co_rut_1,1);
l_razonsoc1 := fn_obtieneParametro2(co_rut_1,2);
l_rut3 := fn_obtieneParametro2(co_rut_3,1);
l_razonsoc3 := fn_obtieneParametro2(co_rut_3,2);

Página 55/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

l_rut2 := fn_obtieneParametro2(co_rut_2,1);
--l_razonsoc2 := fn_obtieneParametro2(co_rut_2,2);
l_rut4 := fn_obtieneParametro2(co_rut_4,1);
l_razonsoc4 := fn_obtieneParametro2(co_rut_4,2);

l_dcompra := fn_obtieneParametro(co_ParDcompra);

EXCEPTION
WHEN OTHERS THEN
l_Nro_Error := co_error_handle;
Ctr_ErrHandle; -- Registrar error
RETURN; -- Abortar proceso
END;

----------------------------------------------------------------------------
------------------------------
-- Iniciar proceso generacion del XML de la interfaz si codigo error
igual a cero

----------------------------------------------------------------------------
------------------------------
IF l_Nro_Error = 0 THEN

--obtencion de la fecha a procesar


Begin
select to_char(caldat-1,'dd/mm/yyyy')
into pi_fecha_periodo
from caldayee;

Exception
When No_Data_Found Then pi_fecha_periodo :=
to_char(trunc(sysdate),'dd/mm/yyyy');
End;

Begin
insert into VTATEMPWW (TRN_TECH_KEY,TABLA,FLAG,DPROCESO)
select tb2.TRN_TECH_KEY,'VTA','E',tb2.DPROCESO from VTAHDREF
tb2,(SELECT DPROCESO,NTERMINAL, NSECUENCIA,
DCOMPRA,ORG_LVL_NUMBER,TCOMPROBANTE_E,CSERIE_ELECTRONICA,NCOMPROBANTE
from VTAHDREF WHERE CESTADO = 'V' AND DPROCESO =
pi_fecha_periodo
and TCOMPROBANTE_E is not null and CSERIE_ELECTRONICA is not
null and NCOMPROBANTE is not null
GROUP BY DPROCESO,NTERMINAL, NSECUENCIA,
DCOMPRA,ORG_LVL_NUMBER,TCOMPROBANTE_E,CSERIE_ELECTRONICA,NCOMPROBANTE
having sum(MMONTO)=0)tb1 where tb2.CESTADO = 'V' AND
tb2.DPROCESO = pi_fecha_periodo
AND tb1.DPROCESO = tb2.DPROCESO AND tb1.NTERMINAL =
tb2.NTERMINAL AND tb1.NSECUENCIA = tb2.NSECUENCIA
AND tb1.DCOMPRA = tb2.DCOMPRA AND tb1.ORG_LVL_NUMBER =
tb2.ORG_LVL_NUMBER AND tb1.TCOMPROBANTE_E = tb2.TCOMPROBANTE_E
AND tb1.CSERIE_ELECTRONICA = tb2.CSERIE_ELECTRONICA AND
tb1.NCOMPROBANTE = tb2.NCOMPROBANTE;

commit;

Página 56/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

Exception
When OTHERS Then null;
End;

FOR c0Row IN c0 LOOP


l_AreaCredito_XML := '';
l_XML := '';
l_ImpAdicionales_XML := '';
l_Head_XML := '';
l_Detalle_XML := '';
l_sumaImpAdic := 0;
l_sumaImpAdic00 := 0;
l_mImpAdic14 :=0;
l_mImpAdic35 :=0;
l_sumaMediosPago := 0;
l_sumaJerarquias := 0;
l_cdocAnterior := NULL;
l_ctransacAnterior := NULL;
l_nrodctoAnterior := 0;
l_minComprobante := 0;
l_maxComprobante := 0;
c_minComprobante := '';
c_maxComprobante := '';
l_min_trntechkey := 0;
l_max_trntechkey := 0;
l_seccionAnterior := '';
l_cdocAnterior := NULL;
l_cdocIdentidadAnterior := NULL;
flag70_76_0_pacifico:=0;

varn_EFECTIVO :=0;
varn_CMR :=0;
varn_VISA_CREDITO :=0;
varn_VISA_DEBITO :=0;
varn_MC_CREDITO :=0;
varn_MC_DEBITO :=0;
varn_EXPRESSNET :=0;
varn_DINERS :=0;
varn_GIFT :=0;
varn_CONTADOCHEQUE :=0;
varn_CCC :=0;
varn_VALECREDITO :=0;
varn_VALES_ALIM_MONTO :=0;
varn_CMRPUNTOS :=0;
varn_QUICKPAY_CRED :=0;
varn_QUICKPAY_DEB :=0;
varn_REDONDEO :=0;
varn_VALE_CONSUMO :=0;
varn_LINIO :=0;
varn_MONTOTTUS :=0;
--varn_GLOVO :=0;
--varn_UBER :=0;
varn_FPAY :=0;
varn_VUELTO :=0;

Página 57/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

--Inicio MLR01
--Obtiene sociedad
begin
select org_lvl_child into vl_org_lvl_child
from orgmstee
where org_lvl_number = c0Row.ORG_LVL_NUMBER;
EXCEPTION
WHEN no_data_found THEN
l_Nro_Error := co_error_handle;
l_msg_error := 'No se encontro el numero de Organizacion '||
c0Row.ORG_LVL_NUMBER||' en la tabla ORGMSTEE';
Ctr_ErrHandle; -- Registrar error
RETURN; -- Abortar proceso
END;

select fnc_codigo_sociedad_f(vl_org_lvl_child) into vl_codsoc from


dual;
--Fin MLR01

--70 7
IF (suma_70_7 <> 0 and trim(l_orgLvlNumberAnterior) <>
trim(c0Row.ORG_LVL_NUMBER)) THEN
prc_grabaDocumentoGIFT (l_orgLvlNumberAnterior , 70,
7,pi_fecha_periodo,
c0Row.DCOMPRA, suma_70_7, 1,
var_min_trntechkey7,var_max_trntechkey7) ;
suma_70_7:=0;
var_max_trntechkey7:=0;
var_min_trntechkey7:=0;

END IF;
--76 11
IF (suma_76_11 <> 0 and trim(l_orgLvlNumberAnterior) <>
trim(c0Row.ORG_LVL_NUMBER)) THEN
prc_grabaDocumentoGIFT (l_orgLvlNumberAnterior , 76,
11,pi_fecha_periodo,
c0Row.DCOMPRA, suma_76_11, 1,
var_min_trntechkey11, var_max_trntechkey11) ;

suma_76_11:=0;
var_max_trntechkey11:=0;
var_min_trntechkey11:=0;
END IF;
l_AreaCredito_XML := '';
l_XML := '';
l_ImpAdicionales_XML := '';
l_Head_XML := '';
l_Detalle_XML := '';
l_orgLvlNumberAnterior:=c0Row.ORG_LVL_NUMBER;

FOR c_cursorCabeceraRow IN c_cursorCabecera(c0Row.DCOMPRA,


c0Row.ORG_LVL_NUMBER, c0Row.CDOCUMENTO, c0Row.CTRANSAC) LOOP
l_Nro_Error := 0;

Página 58/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

--dbms_output.put_line('entro cabecera');
IF ((
(l_seccionAnterior = 'A' AND (l_seccionAnterior <>
c_cursorCabeceraRow.SECCION OR
l_cdocAnterior <> c_cursorCabeceraRow.cdocumento OR
l_cdocIdentidadAnterior <> c_cursorCabeceraRow.cdoc_identidad OR
l_ctransacAnterior <> c_cursorCabeceraRow.ctransac OR
l_orgLvlChildAnterior <> c_cursorCabeceraRow.ORG_LVL_CHILD OR
l_dcompraAnterior <> c_cursorCabeceraRow.DCOMPRA))
OR
(l_seccionAnterior = 'B' AND (l_seccionAnterior <>
c_cursorCabeceraRow.SECCION OR
l_cdocAnterior <> c_cursorCabeceraRow.cdocumento OR
l_cdocIdentidadAnterior <> c_cursorCabeceraRow.cdoc_identidad OR
l_ctransacAnterior <> c_cursorCabeceraRow.ctransac OR
c_minComprobante <> c_cursorCabeceraRow.mincomprobante OR
l_orgLvlChildAnterior <> c_cursorCabeceraRow.ORG_LVL_CHILD OR
l_dcompraAnterior <> c_cursorCabeceraRow.DCOMPRA))
)) THEN

l_vMediosPago_XML := fn_obtieneMediosPago(
varn_EFECTIVO,
varn_CMR,
varn_VISA_CREDITO,
varn_VISA_DEBITO,
varn_MC_CREDITO,
varn_MC_DEBITO,
varn_EXPRESSNET,
varn_DINERS,
--varn_GIFT,
varn_CONTADOCHEQUE,
varn_CCC,
varn_VALECREDITO,
varn_VALES_ALIM_MONTO,
varn_CMRPUNTOS,
varn_QUICKPAY_CRED,
varn_QUICKPAY_DEB,
varn_REDONDEO,
varn_VALE_CONSUMO,
varn_LINIO,
varn_MONTOTTUS,
--varn_GLOVO,
--varn_UBER,
varn_FPAY,
varn_VUELTO );

l_ImpAdicionales_XML
:=fn_obtieneImpAdicional(l_mImpAdic14,l_mImpAdic35);

l_Detalle_XML := l_Detalle_XML ||
l_Item05_XML ||
l_AreaCredito_XML||
l_Item12_XML ||
l_vMediosPago_XML ||
l_ImpAdicionales_XML ||
TO_CLOB(l_Item13_XML);

Página 59/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

IF(INSTR(c_cursorCabeceraRow.mincomprobante,'-',1) = 0) THEN
l_Head_XML := REPLACE(l_Head_XML, '${minComprobante}',
TO_CHAR(l_minComprobante));
l_Head_XML := REPLACE(l_Head_XML, '${maxComprobante}',
TO_CHAR(l_maxComprobante));

ELSE
l_Head_XML := REPLACE(l_Head_XML, '${minComprobante}',
TO_CHAR(c_minComprobante));
l_Head_XML := REPLACE(l_Head_XML, '${maxComprobante}',
TO_CHAR(c_maxComprobante));
END IF;

--Inicio MLR02
--Anula cierre TAG item
l_XML := l_Head_XML ||
TO_CLOB(l_Item03_XML)||
l_Detalle_XML ; --||
--TO_CLOB(l_Item14_XML);
--Fin MLR02

IF(l_XML LIKE l_Item01_XML||'%')THEN


prc_insertaXML(l_XML, l_min_trntechkey,l_max_trntechkey,
l_orgLvlChildAnterior,flag_envio);
flag_envio:=0;
END IF;

IF (flag70_76_0_pacifico=1) THEN

l_MediosPago_XML := TO_CLOB(l_Item10_XML);
prc_creaNodoMedioPago('CMR',varn_CMR);
l_vMediosPago_XML := l_MediosPago_XML ||
TO_CLOB(l_Item11_XML);

vartemp_Detalle_XML:= replace
(vartemp_Detalle_XML,'<Ref_Legado>NA</Ref_Legado>','<Ref_Legado>No se envia
a SAP</Ref_Legado>');

l_Detalle_XML := vartemp_Detalle_XML ||
l_Item05_XML ||
l_AreaCredito_XML||
l_Item12_XML ||
l_vMediosPago_XML ||
l_ImpAdicionales_XML ||
TO_CLOB(l_Item13_XML);

l_XML := l_Head_XML ||
TO_CLOB(l_Item03_XML)||
l_Detalle_XML ;

IF(l_XML LIKE l_Item01_XML||'%')THEN


prc_insertaXML(l_XML, l_min_trntechkey,l_max_trntechkey,
l_orgLvlChildAnterior,9);

Página 60/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

END IF;
END IF;

l_sumaImpAdic := 0;
l_sumaImpAdic00 := 0;
l_mImpAdic14 :=0;
l_mImpAdic35 :=0;
l_sumaMediosPago := 0;
l_sumaJerarquias := 0;
l_minComprobante := 0;
l_maxComprobante := 0;
c_minComprobante := '';
c_maxComprobante := '';
l_min_trntechkey := 0;
l_max_trntechkey := 0;
flag70_76_0_pacifico:=0;
l_AreaCredito_XML := '';
l_XML := '';
l_ImpAdicionales_XML := '';
l_Head_XML := '';
l_Detalle_XML := '';

varn_EFECTIVO :=0;
varn_CMR :=0;
varn_VISA_CREDITO :=0;
varn_VISA_DEBITO :=0;
varn_MC_CREDITO :=0;
varn_MC_DEBITO :=0;
varn_EXPRESSNET :=0;
varn_DINERS :=0;
varn_GIFT :=0;
varn_CONTADOCHEQUE :=0;
varn_CCC :=0;
varn_VALECREDITO :=0;
varn_VALES_ALIM_MONTO :=0;
varn_CMRPUNTOS :=0;
varn_QUICKPAY_CRED :=0;
varn_QUICKPAY_DEB :=0;
varn_REDONDEO :=0;
varn_VALE_CONSUMO :=0;
varn_LINIO :=0;
varn_MONTOTTUS :=0;
--varn_GLOVO :=0;
--varn_UBER :=0;
varn_FPAY :=0;
varn_VUELTO :=0;

IF (c_cursorCabeceraRow.SECCION = 'B') THEN


c_minComprobante := c_cursorCabeceraRow.mincomprobante;
c_maxComprobante := c_cursorCabeceraRow.maxcomprobante;
l_min_trntechkey := c_cursorCabeceraRow.min_trntechkey;
l_max_trntechkey := c_cursorCabeceraRow.max_trntechkey;
END IF;
END IF;

Página 61/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

IF(INSTR(c_cursorCabeceraRow.mincomprobante,'-',1) = 0) THEN
IF(l_minComprobante > c_cursorCabeceraRow.mincomprobante) OR
l_minComprobante = 0 THEN
l_minComprobante := c_cursorCabeceraRow.mincomprobante;
END IF;
IF(l_maxComprobante < c_cursorCabeceraRow.maxcomprobante) OR
l_maxComprobante = 0 THEN
l_maxComprobante := c_cursorCabeceraRow.maxcomprobante;
END IF;
ELSE
c_minComprobante :=
c_cursorCabeceraRow.mincomprobante;----
c_maxComprobante :=
c_cursorCabeceraRow.maxcomprobante;----
END IF;

IF(l_min_trntechkey > c_cursorCabeceraRow.min_trntechkey) OR


l_min_trntechkey = 0 THEN
l_min_trntechkey := c_cursorCabeceraRow.min_trntechkey;
END IF;
IF(l_max_trntechkey < c_cursorCabeceraRow.max_trntechkey) OR
l_max_trntechkey = 0 THEN
l_max_trntechkey := c_cursorCabeceraRow.max_trntechkey;
END IF;

BEGIN
--prc_s_obtiene_sys_guid(c_cursorCabeceraRow.min_trntechkey,
l_Codinterfaz);

SELECT l_Item01_XML ||
XMLELEMENT("sys_gui", '${sys_guid}') || --l_sys_guid) ||
XMLELEMENT("dproceso",
trim(TO_CHAR(c_cursorCabeceraRow.dproceso, 'YYYY-MM-DD'))) ||
XMLELEMENT("dempresa",
trim(c_cursorCabeceraRow.dempresa)) ||
XMLELEMENT("ctransac",
trim(c_cursorCabeceraRow.Ctransac)) ||
XMLELEMENT("dcompra",
trim(TO_CHAR(c_cursorCabeceraRow.dcompra,'YYYY-MM-DD'))) ||
XMLELEMENT("org_lvl_number",
trim(c_cursorCabeceraRow.org_lvl_number)) ||
XMLELEMENT("cdocumento",
trim(c_cursorCabeceraRow.cdocumento)) ||
XMLELEMENT("ncomprobante", '${minComprobante}') ||
XMLELEMENT("ncomprobante1", '${maxComprobante}') ||
XMLELEMENT("cantidadboletas",
DECODE(c_cursorCabeceraRow.SECCION, 'A', c0Row.cantidad, 1)) ||

XMLELEMENT("nguia_electronica",trim(NVL(c_cursorCabeceraRow.nguia_electronic
a,0))) ||
XMLELEMENT("tipo_documento_ref",
c_cursorCabeceraRow.tipo_documento_ref)||
XMLELEMENT("numero_doc_ref",
c_cursorCabeceraRow.numero_doc_ref)||
XMLELEMENT("vemp_ret", c_cursorCabeceraRow.vemp_ret)||
l_Item02_XML

Página 62/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

INTO l_Head_XML
FROM dual;

--si cdoc_identidad tiene 10 digitos


vartemp_identidad:=trim(c_cursorCabeceraRow.cdoc_identidad);
IF (LENGTH(vartemp_identidad)=10) THEN
vartemp_identidad:=fn_completaRuc10(vartemp_identidad); END IF;

SELECT l_Item04_XML ||
XMLELEMENT("cdoc_identidad",vartemp_identidad) ||

XMLELEMENT("cdoc_razonsoc",substr(trim(reemp_car_esp_f(c_cursorCabeceraRow.c
doc_razonsoc)),1,50)) ||

XMLELEMENT("cond_pago",trim(c_cursorCabeceraRow.cond_pago)) ||

XMLELEMENT("org_lvl_number",trim(c_cursorCabeceraRow.org_lvl_number))||
XMLELEMENT("Ref_Legado",'NA')
INTO l_Detalle_XML
FROM DUAL;
vartemp_Detalle_XML:=l_Detalle_XML;

IF (TRIM(c_cursorCabeceraRow.Ctransac) IN (70,74)
and trim(c_cursorCabeceraRow.cdocumento) IN (0,1)
and trim(c_cursorCabeceraRow.cdoc_identidad) =trim (l_rut2) )
THEN --pacifico seguros
IF (c_cursorCabeceraRow.CMR <> 0) THEN
vartemp_mventa:=fn_formatoMonto(c_cursorCabeceraRow.mventa
- c_cursorCabeceraRow.CMR);
IF(vartemp_mventa = '0') THEN
flag_envio:=9;
END IF;
flag70_76_0_pacifico:=1;
ELSE

vartemp_mventa:=fn_formatoMonto(c_cursorCabeceraRow.mventa);
END IF;
ELSE
vartemp_mventa:=fn_formatoMonto(c_cursorCabeceraRow.mventa);
END IF;

vartemp_mdescto:=fn_formatoMonto(c_cursorCabeceraRow.MDESCTOPRD);
vartemp_miva:=fn_formatoMonto(c_cursorCabeceraRow.miva);
l_charIndicador:=trim(c_cursorCabeceraRow.Indicador_iva);
if (vartemp_miva='0' and
trim(c_cursorCabeceraRow.Indicador_iva)='D1') then
l_charIndicador:='D0';
end if;
IF(c_cursorCabeceraRow.Ctransac=14)THEN

vartemp_mventa:=fn_formatoMonto(ABS(c_cursorCabeceraRow.mventa));
END IF;

varn_codrep:=trim(c_cursorCabeceraRow.Codigo_reporte);

Página 63/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

--codigo de impuesto
var_indimp_iva1 := '';
var_indimp_iva2 := '';
IF (substr(trim(c_cursorCabeceraRow.Indicador_iva),1,1) <> 'D')
THEN

BEGIN
SELECT TXS_CODE_INDIMP,TXS_CODE_CLAIMP
INTO var_indimp_iva1,var_indimp_iva2
FROM SAPFI_INDIMPHEA
WHERE TXS_CODE_INDIMP =
trim(c_cursorCabeceraRow.Indicador_iva);

vartemp_mventa2:=fn_formatoMonto(c_cursorCabeceraRow.mventa
+ c_cursorCabeceraRow.miva);
vartemp_miva2:=fn_formatoMonto(c_cursorCabeceraRow.miva2);

SELECT l_AreaCredito_XML || l_Item07_XML ||

XMLELEMENT("Area_funcional",trim(c_cursorCabeceraRow.Area_funcional)) ||
XMLELEMENT("mventa",vartemp_mventa2) ||
XMLELEMENT("mdescto",0) ||
XMLELEMENT("Indicador_iva",trim(var_indimp_iva2)) ||
XMLELEMENT("miva",vartemp_miva2) ||
XMLELEMENT("cod_reporte",varn_codrep)
INTO l_AreaCredito_XML
FROM DUAL;
l_AreaCredito_XML := l_AreaCredito_XML || l_Item08_XML;

----------------------------------------------------------------------

EXCEPTION
WHEN no_data_found THEN
var_indimp_iva1 :=
trim(c_cursorCabeceraRow.Indicador_iva);

END;
l_charIndicador:=trim(var_indimp_iva1);
END IF;

SELECT l_AreaCredito_XML || l_Item07_XML ||

XMLELEMENT("Area_funcional",trim(c_cursorCabeceraRow.Area_funcional)) ||
XMLELEMENT("mventa",vartemp_mventa) ||
XMLELEMENT("mdescto",vartemp_mdescto) ||
XMLELEMENT("Indicador_iva",l_charIndicador) ||
XMLELEMENT("miva",vartemp_miva) ||
XMLELEMENT("cod_reporte",varn_codrep)
INTO l_AreaCredito_XML
FROM DUAL;

l_AreaCredito_XML := l_AreaCredito_XML || l_Item08_XML;

Página 64/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

--detraccion
IF (trim(c_cursorCabeceraRow.ImpuestoAdicional3Indicador) <> 0)
THEN

IF
(trim(c_cursorCabeceraRow.ImpuestoAdicional3Indicador)='014') THEN
l_mImpAdic14 :=
round(c_cursorCabeceraRow.ImpuestoAdicional3,2);
END IF;

IF
(trim(c_cursorCabeceraRow.ImpuestoAdicional3Indicador)='035') THEN
l_mImpAdic35 :=
round(c_cursorCabeceraRow.ImpuestoAdicional3,2);
END IF;

END IF;

l_sumaImpAdic:=l_sumaImpAdic+ROUND(NVL(c_cursorCabeceraRow.mventa,0),2) +
ROUND(NVL(c_cursorCabeceraRow.miva,0),2);

--GIFT 70 7
IF (TRIM(c_cursorCabeceraRow.Ctransac) =70 and
trim(c_cursorCabeceraRow.cdocumento) IN (5,6)) THEN
suma_70_7:=suma_70_7+c_cursorCabeceraRow.mventa;
IF(var_min_trntechkey7 > l_min_trntechkey) OR
var_min_trntechkey7 = 0 THEN
var_min_trntechkey7 := l_min_trntechkey;
END IF;
IF(var_max_trntechkey7 < l_max_trntechkey) OR
var_max_trntechkey7 = 0 THEN
var_max_trntechkey7 := l_max_trntechkey;
END IF;
END IF;

--GIFT 76 11
IF (TRIM(c_cursorCabeceraRow.Ctransac) =76 and
trim(c_cursorCabeceraRow.cdocumento) IN (9,10)) THEN

suma_76_11:=suma_76_11+c_cursorCabeceraRow.mventa;

IF(var_min_trntechkey11 > l_min_trntechkey) OR


var_min_trntechkey11 = 0 THEN
var_min_trntechkey11 := l_min_trntechkey;
END IF;
IF(var_max_trntechkey11 < l_max_trntechkey) OR
var_max_trntechkey11 = 0 THEN
var_max_trntechkey11 := l_max_trntechkey;
END IF;
END IF;

varn_EFECTIVO := varn_EFECTIVO + c_cursorCabeceraRow.EFECTIVO ;


varn_CMR := varn_CMR + c_cursorCabeceraRow.CMR ;

Página 65/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

varn_VISA_CREDITO := varn_VISA_CREDITO +
c_cursorCabeceraRow.VISA_CREDITO ;
varn_VISA_DEBITO := varn_VISA_DEBITO +
c_cursorCabeceraRow.VISA_DEBITO ;
varn_MC_CREDITO := varn_MC_CREDITO +
c_cursorCabeceraRow.MC_CREDITO ;
varn_MC_DEBITO := varn_MC_DEBITO + c_cursorCabeceraRow.MC_DEBITO
;
varn_EXPRESSNET := varn_EXPRESSNET +
c_cursorCabeceraRow.EXPRESSNET ;
varn_DINERS := varn_DINERS + c_cursorCabeceraRow.DINERS ;
varn_GIFT := varn_GIFT + c_cursorCabeceraRow.GIFT ;
varn_CONTADOCHEQUE := varn_CONTADOCHEQUE +
c_cursorCabeceraRow.CONTADOCHEQUE ;
varn_CCC := varn_CCC + c_cursorCabeceraRow.CCC ;
varn_VALECREDITO := varn_VALECREDITO +
c_cursorCabeceraRow.VALECREDITO ;
varn_VALES_ALIM_MONTO := varn_VALES_ALIM_MONTO +
c_cursorCabeceraRow.VALES_ALIM_MONTO ;
varn_CMRPUNTOS := varn_CMRPUNTOS + c_cursorCabeceraRow.CMRPUNTOS
;
varn_QUICKPAY_CRED := varn_QUICKPAY_CRED +
c_cursorCabeceraRow.QUICKPAY_CRED ;
varn_QUICKPAY_DEB := varn_QUICKPAY_DEB +
c_cursorCabeceraRow.QUICKPAY_DEB ;
varn_REDONDEO := varn_REDONDEO + c_cursorCabeceraRow.REDONDEO ;
varn_VALE_CONSUMO := varn_VALE_CONSUMO +
c_cursorCabeceraRow.VALE_CONSUMO ;
varn_LINIO := varn_LINIO + c_cursorCabeceraRow.LINIO ;
varn_MONTOTTUS := varn_MONTOTTUS + c_cursorCabeceraRow.MONTOTTUS
;
--varn_GLOVO := varn_GLOVO + c_cursorCabeceraRow.GLOVO ;
--varn_UBER := varn_UBER + c_cursorCabeceraRow.UBER ;
varn_FPAY := varn_FPAY + c_cursorCabeceraRow.FPAY ;
varn_VUELTO := varn_VUELTO + c_cursorCabeceraRow.VUELTO ;

EXCEPTION
WHEN OTHERS THEN
l_nro_error := co_error_handle;
l_msg_error := 'Error: armar XML - ' || SQLERRM || ' ' ||
SUBSTR(DBMS_UTILITY.format_error_backtrace,
INSTR(DBMS_UTILITY.format_error_backtrace,':',1) +
1);
Ctr_ErrHandle;
END;

l_seccionAnterior := c_cursorCabeceraRow.SECCION;
l_cdocAnterior := c_cursorCabeceraRow.cdocumento;
l_cdocIdentidadAnterior := c_cursorCabeceraRow.cdoc_identidad;
l_ctransacAnterior := c_cursorCabeceraRow.ctransac;
c_minComprobante :=
c_cursorCabeceraRow.mincomprobante;----
c_maxComprobante :=
c_cursorCabeceraRow.maxcomprobante;----
l_orgLvlChildAnterior := c_cursorCabeceraRow.ORG_LVL_CHILD;

Página 66/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

l_dcompraAnterior := c_cursorCabeceraRow.DCOMPRA;

END LOOP;
l_vMediosPago_XML := fn_obtieneMediosPago(
varn_EFECTIVO,
varn_CMR,
varn_VISA_CREDITO,
varn_VISA_DEBITO,
varn_MC_CREDITO,
varn_MC_DEBITO,
varn_EXPRESSNET,
varn_DINERS,
--varn_GIFT,
varn_CONTADOCHEQUE,
varn_CCC,
varn_VALECREDITO,
varn_VALES_ALIM_MONTO,
varn_CMRPUNTOS,
varn_QUICKPAY_CRED,
varn_QUICKPAY_DEB,
varn_REDONDEO,
varn_VALE_CONSUMO,
varn_LINIO,
varn_MONTOTTUS,
--varn_GLOVO,
--varn_UBER,
varn_FPAY,
varn_VUELTO );

l_ImpAdicionales_XML
:=fn_obtieneImpAdicional(l_mImpAdic14,l_mImpAdic35);

l_Detalle_XML := l_Detalle_XML ||
l_Item05_XML ||
l_AreaCredito_XML||
l_Item12_XML ||
l_vMediosPago_XML ||
l_ImpAdicionales_XML ||
TO_CLOB(l_Item13_XML);

IF(INSTR(c_minComprobante,'-',1) = 0) THEN
l_Head_XML := REPLACE(l_Head_XML, '${minComprobante}',
TO_CHAR(l_minComprobante));
l_Head_XML := REPLACE(l_Head_XML, '${maxComprobante}',
TO_CHAR(l_maxComprobante));

ELSE
l_Head_XML := REPLACE(l_Head_XML, '${minComprobante}',
TO_CHAR(c_minComprobante));
l_Head_XML := REPLACE(l_Head_XML, '${maxComprobante}',
TO_CHAR(c_maxComprobante));
END IF;

--Inicio MLR02

Página 67/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

--Anula cierre TAG item


l_XML := l_Head_XML ||
TO_CLOB(l_Item03_XML)||
l_Detalle_XML ; --||
--TO_CLOB(l_Item14_XML);
--Fin MLR02

IF(l_XML LIKE l_Item01_XML||'%')THEN

prc_insertaXML(l_XML, l_min_trntechkey,l_max_trntechkey,
l_orgLvlChildAnterior,flag_envio);
flag_envio:=0;
END IF;

IF (flag70_76_0_pacifico=1) THEN

l_MediosPago_XML := TO_CLOB(l_Item10_XML);
prc_creaNodoMedioPago('CMR',varn_CMR);
l_vMediosPago_XML := l_MediosPago_XML || TO_CLOB(l_Item11_XML);

vartemp_Detalle_XML:= replace
(vartemp_Detalle_XML,'<Ref_Legado>NA</Ref_Legado>','<Ref_Legado>No se envia
a SAP</Ref_Legado>');

l_Detalle_XML := vartemp_Detalle_XML ||
l_Item05_XML ||
l_AreaCredito_XML||
l_Item12_XML ||
l_vMediosPago_XML ||
l_ImpAdicionales_XML ||
TO_CLOB(l_Item13_XML);

l_XML := l_Head_XML ||
TO_CLOB(l_Item03_XML)||
l_Detalle_XML ;

IF(l_XML LIKE l_Item01_XML||'%')THEN


prc_insertaXML(l_XML, l_min_trntechkey,l_max_trntechkey,
l_orgLvlChildAnterior,9);
END IF;

END IF;

END LOOP;

--70 7
IF (suma_70_7 <> 0) THEN
prc_grabaDocumentoGIFT (l_orgLvlNumberAnterior , 70,
7,pi_fecha_periodo,
l_dcompraAnterior, suma_70_7,
1,var_min_trntechkey7,var_max_trntechkey7) ;

END IF;
--76 11

Página 68/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

IF (suma_76_11 <> 0) THEN


prc_grabaDocumentoGIFT (l_orgLvlNumberAnterior , 76,
11,pi_fecha_periodo,
l_dcompraAnterior, suma_76_11,
1,var_min_trntechkey11,var_max_trntechkey11) ;

END IF;

FOR c_cursoradicionalJ000Row IN c_cursoradicionalJ000 LOOP


BEGIN
l_AreaCredito_XML := '';
l_XML := '';
l_ImpAdicionales_XML := '';
l_Head_XML := '';
l_Detalle_XML := '';

begin
select org_lvl_child into vl_org_lvl_child
from orgmstee
where org_lvl_number =
c_cursoradicionalJ000Row.org_lvl_number;
EXCEPTION
WHEN no_data_found THEN
l_Nro_Error := co_error_handle;
l_msg_error := 'No se encontro el numero de Organizacion '||
c_cursoradicionalJ000Row.org_lvl_number||' en la tabla ORGMSTEE';
Ctr_ErrHandle; -- Registrar error
RETURN; -- Abortar proceso
END;

select fnc_codigo_sociedad_f(vl_org_lvl_child) into vl_codsoc


from dual;

SELECT l_Item01_XML ||
XMLELEMENT("sys_gui", '${sys_guid}') || --l_sys_guid) ||
XMLELEMENT("dproceso",
trim(TO_CHAR(c_cursoradicionalJ000Row.dproceso, 'YYYY-MM-DD'))) ||
XMLELEMENT("dempresa", trim(vl_codsoc))
||
XMLELEMENT("ctransac",
c_cursoradicionalJ000Row.ctransac ) ||
XMLELEMENT("dcompra",
trim(TO_CHAR(c_cursoradicionalJ000Row.dcompra,'YYYY-MM-DD'))) ||
XMLELEMENT("org_lvl_number",
trim(c_cursoradicionalJ000Row.org_lvl_number)) ||
XMLELEMENT("cdocumento",
c_cursoradicionalJ000Row.cdocumento) ||
XMLELEMENT("ncomprobante",
TO_CHAR(c_cursoradicionalJ000Row.min_trntechkey)) ||
XMLELEMENT("ncomprobante1",
TO_CHAR(c_cursoradicionalJ000Row.max_trntechkey)) ||
XMLELEMENT("cantidadboletas",
c_cursoradicionalJ000Row.cant) ||
XMLELEMENT("nguia_electronica",0) ||

Página 69/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

XMLELEMENT("tipo_documento_ref", 0)||
XMLELEMENT("numero_doc_ref", 0)||
XMLELEMENT("vemp_ret", 2)||
l_Item02_XML
INTO l_Head_XML
FROM dual;

SELECT l_Item04_XML ||

XMLELEMENT("cdoc_identidad",trim(c_cursoradicionalJ000Row.cdoc_identidad))
||

XMLELEMENT("cdoc_razonsoc",substr(trim(reemp_car_esp_f(c_cursoradicionalJ000
Row.cdoc_razonsoc)),1,50)) ||
XMLELEMENT("cond_pago",0) ||

XMLELEMENT("org_lvl_number",trim(c_cursoradicionalJ000Row.org_lvl_number))||
XMLELEMENT("Ref_Legado",'NA')
INTO l_Detalle_XML
FROM DUAL;

vartemp_mventa:=fn_formatoMonto(c_cursoradicionalJ000Row.mventa);

SELECT l_AreaCredito_XML || l_Item07_XML ||


XMLELEMENT("Area_funcional",'J000') ||
XMLELEMENT("mventa",vartemp_mventa) ||
XMLELEMENT("mdescto",0) ||
XMLELEMENT("Indicador_iva",'') ||
XMLELEMENT("miva",0) ||
XMLELEMENT("cod_reporte",1)
INTO l_AreaCredito_XML
FROM DUAL;

l_AreaCredito_XML := l_AreaCredito_XML || l_Item08_XML;


l_MediosPago_XML := TO_CLOB(l_Item10_XML);
IF (c_cursoradicionalJ000Row.cdocumento = 0) THEN --donaciones
prc_creaNodoMedioPago('EFE',c_cursoradicionalJ000Row.mventa);
ELSIF(c_cursoradicionalJ000Row.cdocumento = 9) THEN --exceso
vales de alimento
prc_creaNodoMedioPago('MBR',c_cursoradicionalJ000Row.mventa);
END IF;
l_vMediosPago_XML := l_MediosPago_XML ||
TO_CLOB(l_Item11_XML);

l_Detalle_XML := l_Detalle_XML ||
l_Item05_XML ||
l_AreaCredito_XML||
l_Item12_XML ||
l_vMediosPago_XML ||
l_ImpAdicionales_XML ||
TO_CLOB(l_Item13_XML);

l_XML := l_Head_XML ||
TO_CLOB(l_Item03_XML)||

Página 70/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

l_Detalle_XML ;

IF(l_XML LIKE l_Item01_XML||'%')THEN


prc_insertaXML(l_XML,
c_cursoradicionalJ000Row.min_trntechkey,c_cursoradicionalJ000Row.max_trntech
key, c_cursoradicionalJ000Row.org_lvl_number,1);
END IF;

EXCEPTION
WHEN OTHERS THEN
l_nro_error := co_error_handle;
l_msg_error := 'Error: armar XML - c_cursoradicionalJ000 ' ||
SQLERRM || ' ' ||
SUBSTR(DBMS_UTILITY.format_error_backtrace,
INSTR(DBMS_UTILITY.format_error_backtrace,':',1) +
1);
Ctr_ErrHandle;
END;
END LOOP;

ELSE
l_Nro_Error := co_error_handle;
l_Msg_Error := 'Error : No se ha realizado el proceso por falta de
parametros generales.';

BEGIN
raise_application_error(l_Nro_Error, l_Msg_Error);
EXCEPTION
WHEN OTHERS THEN
sapfi_errhandle(co_My_Proc_Name,trim(l_Codinterfaz),l_Nro_Legado);
END;
END IF;
END;

END;

3. Logical Outline:
o Ninguno

4. Called From:
o Ninguno

5. Called To:
o Ninguno

6. Consideraciones de Migración:
o Ambientes:
Desarrollo PMMINTDS

Página 71/72
TO.BTL-2019-00000.00 - SP SAPFI_GENXMLOTC411_PE_F PROCEDURE

Test PMMINTPETS
Producción PMMINTPEPR

6. Dependencias de Migración:
Script de inserción en la tabla SAPFI_PARAM: SAPFI_PARAM_OTC411.sql
Script de inserción en la tabla SAPFI_CHPARAM: SAPFI_CHLPARAM_OTC411.sql

Firmas

___________________ ______________________
Technical Manager Cliente Jefe proyecto Cliente

Página 72/72

También podría gustarte