You are on page 1of 14

RF / OT Proyecto

NiveldeComplejidad Proveedor
CoordinadorProveedo CoordinadorMovista Vernica Revelo
r r
Preparado por: Vernica Revelo Fecha ltimo 2017.04.05
cambio:
Descripcin Automatizacin de reportes mensuales SRI

1. Propuesta de Solucin Funcional


Antecedentes:
A. Actualmente se ejecutan de forma manual los reportes de la facturacin para el SRI,
los mismos tienen 2 modalidades para su ejecucin:
A.1. Corren 6 das posteriores al ciclo de facturacin correspondiente segn los cortes
definidos en Telefnica Ecuador:2,8,12,15,22 de cada mes.
Las tablas en las que se almacena la informacin de la facturacin de cada ciclo se
crean dinmicamente al cerrarse cada uno de los ciclos.
A.2. Los reportes que corresponden a la facturacin ciclo y Notas de Crdito se
ejecutan el da 3 de cada mes con la informacin de todo el mes anterior.
A.3. Las tablas FA_HIST_IMPTO_Ciclo, solo existen a partir de junio del 2016 y
fueron creadas por los cambios tributarios a raz del terremoto de abril 2016

Descripcin del Requerimiento:


1. Construir un proceso que tome como parmetro la fecha de facturacin y ejecute la
extraccin del reporte correspondiente al ciclo. La consulta con la que actualmente
se obtienen los datos es la siguiente:
--FACTURA CICLO--cambiar el ciclo

-- Para la factura ciclo


select d.sri
, to_char(fec_proceso,'yyyy/mm/dd') fecha_autorizacion
, to_char(fec_proceso,'hh24:mi:ss') hora_autorizacion
, null clave_acceso
, a.cod_centremi num_establecimiento
, a.pref_plaza num_puntoventa
, a.num_folio secuencial
, a.fec_emision
, a.cod_tipdocum
, c.des_tipdocum
, 'Consumo' Descripcion
, a.acum_netonograv base_excenta
, null baseno_objeto
, null base_imponible_0
, b.acum_neto_iva base_imponible_14
, null base_imponible_12
, b.acum_neto_ice base_imponible_ice_15
, b.acum_iva IVA_14
, 0 acum_iva_12
, b.acum_ice ice_15
, imp.base_2
, imp.desciva_2 dcto_sldrio
, ( a.acum_netonograv
+ b.acum_neto_ice
+ b.acum_neto_iva
+ b.acum_iva
+ b.acum_ice +

1
desciva_2)Total_suma
, a.tot_factura
, catd.des_catimpos aplica_dct_solidario
, des_provincia
, imp.desciva_2 dcto_sldrio
, a.pref_plaza||a.num_folio factura
, a.cod_cliente
, num_ident
, nom_cliente||' '||nom_apeclien1||' '||nom_apeclien2 razon_social
, null factura_afectada
from fa_histdocu a
inner join FA_HIST_IMPTO_220317 b --cambiar ciclo, table corresponde a
cada ciclo
on a.ind_ordentotal=b.ind_ordentotal
left join (select ind_ordentotal
, sum (imp_concepto) desciva_2
, sum (imp_montobase) base_2
from fa_histconc_220317 tt --cambiar ciclo, table corresponde a cada
ciclo
where tt.cod_concepto=9786
group by ind_ordentotal
) imp
on a.ind_ordentotal=imp.ind_ordentotal
inner join ge_tipdocumen c
on a.cod_tipdocum=c.cod_tipdocum
inner join ge_clientes d
on a.cod_cliente=d.cod_cliente
left join fa_factura_sri d
on a.ind_ordentotal=d.ind_ordentotal
and a.num_folio=d.num_folio
and a.pref_plaza=d.pref_plaza
left join siscel.GE_CATIMPCLIENTES cat
on d.cod_cliente=cat.cod_cliente
and cat.fec_hasta > sysdate
left join GE_CATIMPOSITIVA catd
on cat.cod_catimpos=catd.cod_catimpos
left join GA_DIRECCLI dirc
on d.cod_cliente=dirc.cod_cliente
and dirc.cod_tipdireccion=1
left join ge_direcciones d
on dirc.cod_direccion=d.cod_direccion
left join ge_provincias pr
on d.cod_provincia=pr.cod_provincia
where a.fec_emision>=to_date('220317','ddmmyy') ---cambiar fecha por la de corte
and a.fec_emision<to_date('230317','ddmmyy') ---cambiar fecha por un da despus
del corte
and a.cod_tipdocum=2 --indica que la facture es ciclo
;

2. Construir un proceso que tome como parmetro la fecha de inicio y fin del periodo y
ejecute la extraccin del reporte correspondiente a la facturacin no ciclo. La
secuencia de consultas con la que actualmente se obtienen los datos es la siguiente:

--No ciclo

--Paso 1 Obtener el detalle de la factura no ciclo, se debera insertar en una tabla temporal

create table borrar_rnr_248328 as

2
select x.num_establecimiento
, x.num_puntoventa
, x.secuencial
, x.fec_emision
, x.cod_tipdocum
, x.base_excenta
, x.aplica_dct_solidario
, x.tot_factura
, x.acum_netograv
, x.acum_netonograv
, x.acum_iva
, x.factura
, x.cod_cliente
, x.ind_ordentotal --**
, x.codbaseimp
, x.pref_plaza
, x.num_folio
, case when pct_impuesto is null then x.valorbaseimp end base_nograv
, case when pct_impuesto =0 then x.valorbaseimp end baseimp_0
, case when pct_impuesto=12 then x.valorbaseimp end baseimp_12
, case when pct_impuesto=14 then x.valorbaseimp end baseimp_14
, case when pct_impuesto=15 then x.valorbaseimp end baseimp_15
, case when pct_impuesto=2 then x.valorbaseimp end basedesc_2
, x.desc_baseimp
, x.cod_impuesto
, x.valorimpuesto
, x.desc_impuesto
, case when pct_impuesto =0 then x.valorimpuesto end imp_0
, case when pct_impuesto=12 then x.valorimpuesto end iva_12
, case when pct_impuesto=14 then x.valorimpuesto end iva_14
, case when pct_impuesto=15 then x.valorimpuesto end ice_15
, case when pct_impuesto=2 then x.valorimpuesto end desc_iva_2
--, x.pct_impuesto
FROM( SELECT a.cod_centremi num_establecimiento
, a.pref_plaza num_puntoventa
, a.num_folio secuencial
, a.fec_emision
, a.cod_tipdocum
, a.acum_netonograv base_excenta
, decode(a.cod_zonaimpo, 1, 'normal', 4, 'sociedades',5 ,'zona cero normal',6 ,'zona cero
sociedades') aplica_dct_solidario
, a.tot_factura
, a.acum_netograv
, a.acum_netonograv
, a.acum_iva
, a.pref_plaza||a.num_folio factura
, a.pref_plaza
, a.num_folio
, a.cod_cliente
, b.ind_ordentotal --**
, b.cod_concepto codbaseimp
, b.imp_facturable valorbaseimp
, b.des_concepto desc_baseimp
, c.cod_concepto cod_impuesto
, c.imp_facturable valorimpuesto
, c.des_concepto desc_impuesto
, c.prc_impuesto pct_impuesto
FROM fa_histdocu a

3
inner join fa_histconc_19010102 --Tabla del detalle de la facturacion no ciclo y notas de
credito
on a.ind_ordentotal=b.ind_ordentotal
and b.cod_tipconce in (2,3)-- solamente considerar cargos y descuentos
left join fa_histconc_19010102 c --**
on b.cod_concepto=c.cod_concerel
and b.ind_ordentotal=c.ind_ordentotal
and b.num_abonado=c.num_abonado
and b.columna=c.columna_rel
and c.cod_tipconce =1--solamente considerar impuestos
where a.fec_emision>=to_date('010317','ddmmyy')
and a.fec_emision<to_date('010417','ddmmyy')
and a.cod_tipdocum not in (2,25)--no facturas ciclo ni NC
)x
;

drop table borrar_rnr_248328_resumen


;

--Paso 2, generar un resumen de la informacin obtenida en el paso anterior, insertar en una


segunda tabla temporal

create table borrar_rnr_248328_resumen as


select x.num_establecimiento
, x.num_puntoventa
, x.secuencial
, x.fec_emision
, x.cod_tipdocum
, x.base_excenta
, x.aplica_dct_solidario
, x.tot_factura
, x.acum_netograv
, x.acum_netonograv
, x.acum_iva
, x.factura
, x.cod_cliente
, x.ind_ordentotal --**
, x.pref_plaza
, x.num_folio
, sum(nvl(base_nograv,0)) base_nograv
, sum(nvl(baseimp_0,0)) baseimp_0
, sum(nvl(baseimp_12,0)) baseimp_12
, sum(nvl(baseimp_14,0)) baseimp_14
, sum(nvl(baseimp_15,0)) baseimp_15
, sum(nvl(basedesc_2,0)) basedesc_2
, sum(nvl(imp_0,0))imp_0
, sum(nvl(iva_12,0))iva_12
, sum(nvl(iva_14,0))iva_14
, sum(nvl(ice_15,0))ice_15
, sum(nvl(desc_iva_2,0))desc_iva_2
FROM borrar_rnr_248328 x --leer la tabla temporal
group by
x.num_establecimiento
, x.num_puntoventa
, x.secuencial
, x.fec_emision
, x.cod_tipdocum

4
, x.base_excenta
, x.aplica_dct_solidario
, x.tot_factura
, x.acum_netograv
, x.acum_netonograv
, x.acum_iva
, x.factura
, x.cod_cliente
, x.ind_ordentotal
, x.pref_plaza
, x.num_folio
;

--Reporte factura no ciclo

select d.sri
, to_char(fec_proceso,'yyyy/mm/dd') fecha_autorizacion
, to_char(fec_proceso,'hh24:mi:ss') hora_autorizacion
, null clave_acceso
, x.num_establecimiento
, x.num_puntoventa
, x.num_folio secuencial
, x.fec_emision
, x.cod_tipdocum
, c.des_tipdocum
, 'Otros' Descripcion
, x.base_excenta
, null base_no_objeto
, x. baseimp_0
, x. baseimp_12
, x. baseimp_14
, x. baseimp_15
, x. basedesc_2
, x.imp_0
, x.iva_12
, x.iva_14
, x.ice_15
, x.tot_factura
, catd.des_catimpos aplica_dct_solidario
, pr.des_provincia
, x.desc_iva_2 dcto_solidario
, x.factura
, x.cod_cliente
, num_ident
, nom_cliente||' '||nom_apeclien1||' '||nom_apeclien2 razon_social
, null factura_afec
from borrar_rnr_248328_resumen x
inner join ge_tipdocumen c
on x.cod_tipdocum=c.cod_tipdocum
inner join ge_clientes d
on x.cod_cliente=d.cod_cliente
left join siscel.GE_CATIMPCLIENTES cat
on d.cod_cliente=cat.cod_cliente
and cat.fec_hasta > sysdate
left join GE_CATIMPOSITIVA catd
on cat.cod_catimpos=catd.cod_catimpos
left join GA_DIRECCLI dirc
on d.cod_cliente=dirc.cod_cliente

5
and dirc.cod_tipdireccion=1
left join ge_direcciones d
on dirc.cod_direccion=d.cod_direccion
left join ge_provincias pr
on d.cod_provincia=pr.cod_provincia
left join fa_factura_sri d
on x.ind_ordentotal=d.ind_ordentotal
and x.num_folio=d.num_folio
and x.pref_plaza=d.pref_plaza
order by fec_emision
;
3. Construir un proceso que tome como parmetro la fecha de facturacin y ejecute la
extraccin del reporte correspondiente a las notas de crdito. La consulta con la que
actualmente se obtienen los datos es la siguiente:
Siguiendo la misma lgica de la facturacin no ciclo respecto del uso de tablas
temporales, no creacin de nuevas tablas por cada ejecucin:

--Notas de crdito

drop table borrar_rnr_248328_NC


;

create table borrar_rnr_248328_NC as


select x.num_establecimiento
, x.num_puntoventa
, x.secuencial
, x.fec_emision
, x.cod_tipdocum
, x.base_excenta
, x.aplica_dct_solidario
, x.tot_factura
, x.acum_netograv
, x.acum_netonograv
, x.acum_iva
, x.factura
, x.cod_cliente
, x.ind_ordentotal --**
, x.codbaseimp
, x.pref_plaza
, x.num_folio
, case when pct_impuesto is null then x.valorbaseimp end base_nograv
, case when pct_impuesto =0 then x.valorbaseimp end baseimp_0
, case when pct_impuesto=12 then x.valorbaseimp end baseimp_12
, case when pct_impuesto=14 then x.valorbaseimp end baseimp_14
, case when pct_impuesto=15 then x.valorbaseimp end baseimp_15
, case when pct_impuesto=2 then x.valorbaseimp end basedesc_2
, x.desc_baseimp
, x.cod_impuesto
, x.valorimpuesto
, x.desc_impuesto
, case when pct_impuesto =0 then x.valorimpuesto end imp_0
, case when pct_impuesto=12 then x.valorimpuesto end iva_12
, case when pct_impuesto=14 then x.valorimpuesto end iva_14
, case when pct_impuesto=15 then x.valorimpuesto end ice_15
, case when pct_impuesto=2 then x.valorimpuesto end desc_iva_2
--, x.pct_impuesto
, x.fac_afectada
FROM( SELECT a.cod_centremi num_establecimiento
, a.pref_plaza num_puntoventa

6
, a.num_folio secuencial
, a.fec_emision
, a.cod_tipdocum
, a.acum_netonograv base_excenta
, decode(a.cod_zonaimpo, 1, 'normal', 4, 'sociedades',5 ,'zona cero
normal',6 ,'zona cero sociedades') aplica_dct_solidario
, a.tot_factura
, a.acum_netograv
, a.acum_netonograv
, a.acum_iva
, a.pref_plaza||a.num_folio factura
, a.pref_plaza
, a.num_folio
, a.cod_cliente
, b.ind_ordentotal --**
, b.cod_concepto codbaseimp
, b.imp_facturable valorbaseimp
, b.des_concepto desc_baseimp
, c.cod_concepto cod_impuesto
, c.imp_facturable valorimpuesto
, c.des_concepto desc_impuesto
, c.prc_impuesto pct_impuesto
, fa.pref_plaza||fa.num_folio fac_afectada
FROM fa_histdocu a
inner join fa_histconc_19010102 b
on a.ind_ordentotal=b.ind_ordentotal
and b.cod_tipconce in (2,3)-- solamente considerar cargos y descuentos
left join fa_histconc_19010102 c --**
on b.cod_concepto=c.cod_concerel
and b.ind_ordentotal=c.ind_ordentotal
and b.num_abonado=c.num_abonado
and b.columna=c.columna_rel
and c.cod_tipconce =1--solamente considerar impuestos
inner join fa_histdocu fa
on a.num_securel=fa.num_secuenci
and a.letrarel=fa.letra
and a.cod_tipdocumrel=fa.cod_tipdocum
and a.cod_vendedor_agenterel=fa.cod_vendedor_agente
and a.cod_centrrel=fa.cod_centremi
where a.fec_emision>=to_date('010317','ddmmyy')
and a.fec_emision< to_date('010417','ddmmyy')
and a.cod_tipdocum =25--no facturas ciclo, solo Notas de Crdito
)x
;

drop table borrar_rnr_248328_NC_resumen


;

create table borrar_rnr_248328_NC_resumen as


select x.num_establecimiento
, x.num_puntoventa
, x.secuencial
, x.fec_emision
, x.cod_tipdocum
, x.base_excenta
, x.aplica_dct_solidario

7
, x.tot_factura
, x.acum_netograv
, x.acum_netonograv
, x.acum_iva
, x.factura
, x.cod_cliente
, x.ind_ordentotal --**
, x.pref_plaza
, x.num_folio
, x.fac_afectada
, sum(nvl(base_nograv,0)) base_nograv
, sum(nvl(baseimp_0,0)) baseimp_0
, sum(nvl(baseimp_12,0)) baseimp_12
, sum(nvl(baseimp_14,0)) baseimp_14
, sum(nvl(baseimp_15,0)) baseimp_15
, sum(nvl(desc_iva_2,0)) basedesc_2
, sum(nvl(imp_0,0))imp_0
, sum(nvl(iva_12,0))iva_12
, sum(nvl(iva_14,0))iva_14
, sum(nvl(ice_15,0))ice_15
, sum(nvl(desc_iva_2,0))desc_iva_2
FROM borrar_rnr_248328_NC x
group by
x.num_establecimiento
, x.num_puntoventa
, x.secuencial
, x.fec_emision
, x.cod_tipdocum
, x.base_excenta
, x.aplica_dct_solidario
, x.tot_factura
, x.acum_netograv
, x.acum_netonograv
, x.acum_iva
, x.factura
, x.cod_cliente
, x.ind_ordentotal --**
, x.pref_plaza
, x.num_folio
, x.fac_afectada
;

--reporte Notas Credito

select d.sri
, to_char(fec_proceso,'yyyy/mm/dd') fecha_autorizacion
, to_char(fec_proceso,'hh24:mi:ss') hora_autorizacion
, null clave_acceso
, x.num_establecimiento
, x.num_puntoventa
, x.num_folio secuencial
, x.fec_emision
, x.cod_tipdocum
, c.des_tipdocum
, 'Otros' Descripcion
, x.base_excenta
, null base_no_objeto
, x. baseimp_0

8
, x. baseimp_12
, x. baseimp_14
, x. baseimp_15
, x. basedesc_2
, x.imp_0
, x.iva_12
, x.iva_14
, x.ice_15
, x.tot_factura
, catd.des_catimpos aplica_dct_solidario
, pr.des_provincia
, desc_iva_2 dcto_solidario
, x.factura
, x.cod_cliente
, num_ident
, nom_cliente||' '||nom_apeclien1||' '||nom_apeclien2 razon_social
, x.fac_afectada
from borrar_rnr_248328_NC_resumen x
inner join ge_tipdocumen c
on x.cod_tipdocum=c.cod_tipdocum
inner join ge_clientes d
on x.cod_cliente=d.cod_cliente
left join siscel.GE_CATIMPCLIENTES cat
on d.cod_cliente=cat.cod_cliente
and cat.fec_hasta > sysdate
left join GE_CATIMPOSITIVA catd
on cat.cod_catimpos=catd.cod_catimpos
left join GA_DIRECCLI dirc
on d.cod_cliente=dirc.cod_cliente
and dirc.cod_tipdireccion=1
left join ge_direcciones d
on dirc.cod_direccion=d.cod_direccion
left join ge_provincias pr
on d.cod_provincia=pr.cod_provincia
left join fa_factura_sri d
on x.ind_ordentotal=d.ind_ordentotal
and x.num_folio=d.num_folio
and x.pref_plaza=d.pref_plaza
;

4. Los reportes deben ser depositados en la carpeta:


\\fileuio03\PLANOSDWH\ARCHIVOS_USUARIO\FacturacinSRI\2017\04
Donde 2017 es el ao y 04 es abril.
5. Los procesos deben generar correos de alerta en caso de que error, los destinatarios
deben ser configurables, inicialmente deben quedar los correos de Marcelo Trujillo,
Kathy Arevalo, Carlos Naula.
6. Al finalizar el proceso debe enviarse un correo al usuario Ricardo Bastidas, el correo
debe indicar que el proceso ha finalizado y el nombre del archivo generado y la ruta
en la cual el mismo ha sido depositado.
7. El proceso debe guardar una tabla con la cantidad de registros generados en cada
ejecucin de modo que en la siguiente se puedan comparar los resultados y
determinar tendencias, en caso de que la cantidad de registros generado sobrepase
el 10% (configurable) de diferencia en valor absoluto respecto del promedio de las
ultimas 3 ejecuciones equivalentes se debe alertar al administrador a travs de un
correo.
8. El proceso debe permitir reproceso.

9
9. Este documento debe contemplar la seccin de Informe de Pruebas, en el cual se
ha de colocar uno o varios ejemplos de la forma de ejecucin del proceso y /
reproceso y los resultados obtenidos en las pruebas internas realizadas por el
desarrollador. Asimismo debe indicarse que consideraciones han de tomarse en
cuenta en caso de que el proceso no llegue a culminar de modo exitoso.
10. En la seccin de: Archivo o tablas de Configuracin
especificar si se han creado archivos de configuracin , parameter sets, tablas de
configuracin o si se tiene cdigo duro y la razn.
11. No es necesario que se coloque una foto de los Jobs, a no ser que sea para explicar
algo relevante, es suficiente con listarlo e indicar el nombre y la ruta especifica en la
cual est creado, lo que s es importante es que se describa su funcin, propsito u
objetivo y se incluya la consulta en caso de que aplique.
12. No debe obviarse el diagrama de arquitectura en el detalle de la solucin tcnica.
13. En la seccin de Archivos de Entrada-Salida, especificar si existen archivos de
parmetros para la ejecucin del proceso y si como resultado se generan archivos,
indicar el patrn de nombre y la ruta en la que se depositan, sean estos de datos o
logs del procesamiento, en caso de que sean archivos de log indicar la poltica de
eliminacin segn la utilidad.
14. Construrir los procesos Control M que permitan la ejecucin peridica de los DS.
15. Los DS deben ser independientes entre si.

Detalle de la solucin tcnica.

Prerrequisitos necesarios para el desarrollo.

NECESIDAD RESPONSABLE FECHA


COMPROMISO

A. Planificacin

Cronograma

Tarea Jornadas
Anlisis de requerimiento y obtencin de
archivos requeridos para entrega por el
Negocio
Creacin de estructuras y carga de
archivos.
Generacin de extractor y construccin de
procesos
Documentacin

Fecha de Entrega

10
La fecha de entrega ser das laborables a partir del siguiente da de la aprobacin de la
propuesta de solucin tcnica.

Costo

Detallar el nmero de jornadas y horas que se requieren para la implementacin de la


solucin planteada.

B. Construccin

Fuentes

Bases de Datos

NOMBRE
TABLAS FUENTE:
DESCRIPCION
TNS
TIPO

NOMBRE
TABLAS FUENTE:
DESCRIPCION
TNS
TIPO

Procesos Dependientes

Ninguno

Errores Controlados

Detallar los errores capturados por codificacin (messagebox, alerts) y su posible causa y
solucin.

MENSAJE CAUSA POSIBLE SOLUCIN

11
Descripcin de Alarmas

Detallar las alarmas que enva el proceso.

MENSAJE TIPO DESCRIPCION

Archivos Entrada Salida

Archivo o tablas de Configuracin

Las variables globales:


#Fecha_Ejecucion#

C. Pruebas Unitarias

Planes de ejecucin

Si se realiz cambios o se aaden nuevos: select, insert, update delete incluir la sentencia
y su plan de ejecucin en un formato legible.

TKPROF de ejecucin(aplica para desarrollos sobre la base de datos Oracle)


Anexar el resultado del anlisis de tkprofen un formato legible.

Informe de Pruebas

Se debe incluir un informe por cada una de las pantallas/procesos probados.

FECHA
BASES DE DATOS
PARMETROS
TIEMPO DE
EJECUCIN
RESULTADOS
OBSERVACION

12
D. Paso a produccin

Descripcin de paso a produccin

Incluir las tareas que debe realizar el rea de paso a produccin para implantacin del
producto. Es de vital importancia, verificar el orden de ejecucin de las actividades. Incluir:
scripts de generacin/modificacin de objetos de base de datos, scripts de permisos, tareas
de respaldos, distribucin de nuevos TNS, requerimientos del servidor en caso aplicar, etc.
Se debe referenciar el directorio del servidor de fuentes

Sec Tarea Servido Afecta el tiemp


. r servicio o
?

Reverso

Incluir las tareas que debe realizar el rea de paso a produccin para dar marcha atrs la
puesta en produccin.

Sec Tarea Servidor Afecta tiemp


. el o
servicio
?

Versionamiento

Especificar la versin del proceso generado

E. Manual de Usuario
Si el proceso tiene parte grfica, capturar las pantallas y describir su funcionalidad

F. Aprobacin Tcnica
Incluir los datos de especialista(s) del proveedor que avale la solucin tcnica
implementada

TECNICO CERTIFICACION CODIGO

13
G. Anexos
Incluir cualquier anexo que se considere importante documentar.

14

You might also like