0% encontró este documento útil (0 votos)
31 vistas4 páginas

Re-Cálculo IVA y Retención G.O. 41.052

Este documento describe un programa que realiza el re-cálculo del valor de retención y valor de intercambio en función al parámetro de IVA indicado, cumpliendo con la G.O 41.052 sobre IVA impositivo. El programa recupera datos de movimientos contables, valida si el comercio está exento de IVA, y recalcula los montos de retención e intercambio actualizando los registros.

Cargado por

dixon_anaya
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas4 páginas

Re-Cálculo IVA y Retención G.O. 41.052

Este documento describe un programa que realiza el re-cálculo del valor de retención y valor de intercambio en función al parámetro de IVA indicado, cumpliendo con la G.O 41.052 sobre IVA impositivo. El programa recupera datos de movimientos contables, valida si el comercio está exento de IVA, y recalcula los montos de retención e intercambio actualizando los registros.

Cargado por

dixon_anaya
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

Columnas . .

: 1 71 Examen FTESTDCS/QRPGLESRC
SEU==> TCIVARECAL
FMT ** ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
*************** Principio de datos ************************************
0000.01 **Free
0000.03 CTL-OPT DftActGrp(*No) ActGrp(*New);
0000.05 // -------------------------------------------------------------
0000.08 // - Elaborado por: Rhonald Anaya Fecha: Enero-2017 -
0000.09 // - Objetivo: Realiza el Re-Clculo del Valor de Retencin y -
0000.10 // - Valor de Intercambio en Funcin al Parametro de IVA -
0000.11 // - indicado. -
0000.12 // - Cumplimiento G.O 41.052 IVA Impositivo -
0000.13 // -------------------------------------------------------------
0001.05 Dcl-Pi TCIVARECAL EXTPGM('TCIVARECAL');
0001.06 fecDiaria Char(8) Options(*Nopass) Const;
0001.07 End-Pi;
0001.08 // -------------------------------------------------------------
0001.09 // - Variables de Trabajo -
0001.11 // -------------------------------------------------------------
0000.12 // - Cumplimiento G.O 41.052 IVA Impositivo -
0000.13 // -------------------------------------------------------------
0001.05 Dcl-Pi TCIVARECAL EXTPGM('TCIVARECAL');
0001.06 fecDiaria Char(8) Options(*Nopass) Const;
0001.07 End-Pi;
0001.08 // -------------------------------------------------------------
0001.09 // - Variables de Trabajo -
0001.11 // -------------------------------------------------------------
0001.13 Dcl-S wValNumeric Zoned(11:2) Inz(*Zeros);
0001.14 Dcl-S wMontoAplIVA Zoned(11:2) Inz(*Zeros);
0001.15 Dcl-S wProcIVA Zoned(11:2) Inz(*Zeros);
0001.16 Dcl-S wMontoRet Packed(11:2) Inz(*Zeros);
0001.17 Dcl-S wMontoNeto Packed(11:2) Inz(*Zeros);
0001.18 Dcl-S fecAplMov Char(8) Inz(*Blanks);
0001.19 Dcl-S fecUltDiaTDC Packed(8:0) Inz(*Zeros);
0001.21 Dcl-S codPgm Char(7) Inz(*Blanks);
0001.23 Dcl-S fecUltAno Packed(4:0) Inz(*Zeros);
0001.24 Dcl-S fecUltMes Packed(2:0) Inz(*Zeros);
0001.25 Dcl-S fecUltDia Packed(2:0) Inz(*Zeros);
0001.26 Dcl-S wProcIVAApl packed(5:2) Inz(*Zeros);
0001.27 Dcl-S wZonaEstb Char(2) Inz(*Blanks);
0001.28 // -------------------------------------------------------------
0001.29 // - Variables Constantes -
0001.30 // -------------------------------------------------------------
0001.31 Dcl-C @Activo 1 ;
0001.32 Dcl-C @FranqAmex '0';
0001.33 Dcl-S @BaseISLR Char(8) Inz('BASEISLR');
0001.34 // -------------------------------------------------------------
0001.35 // - Estructuras de Datos -
0001.36 // -------------------------------------------------------------
0001.37 Dcl-Ds DsMoap Qualified;
0001.38 D7FMAP Packed(8:0);
0001.39 D7NRTA Char(16);
0001.40 D7CDCC Char(3);
0001.41 D7CDTT Char(2);
0001.42 D7YLNB Packed(8:0);
0001.43 D7CDAU Char(6);
0001.44 D7MGNB Packed(10:0);
0001.45 D7NRC1 Packed(7:0);
0001.46 D7VRTR Packed(11:2);
0001.47 D7VRDE Packed(11:2);
0001.48 D7BFPC Packed(5:2);
0001.49 D7ZQV1 Packed(11:2);
0001.50 End-Ds;
0001.51 Dcl-Ds fecUltDiaria;
0001.54 fecAno Char(4) Pos(1);
0001.55 fecMes Char(2) Pos(5);
0001.56 fecDia Char(2) Pos(7);
0001.57 End-Ds;
0001.58 // -------------------------------------------------------------
0001.59 // - Procedimientos Externos -
0001.60 // -------------------------------------------------------------
0001.61 // Recupera la Fecha ltima Diaria TDC Ejecutada
0001.62 Dcl-Pr RucoPupb0 ExtPgm;
0001.63 fecUltDiaria_ Packed(8:0);
0001.64 End-Pr;
0001.65 // Recupera la Fecha Prxima Diaria TDC "Calendario"
0001.66 Dcl-Pr CladPex10 ExtPgm;
0001.67 valBlanco_ Char(7);
0001.68 anoCorte_ Packed(4);
0001.69 mesCorte_ Packed(2);
0001.70 diaCorte_ Packed(2);
0001.74 fecDiaria_ Char(8);
0001.75 End-Pr;
0001.76 // -------------------------------------------------------------
0001.77 // - Rutina Principal -
0001.78 // -------------------------------------------------------------
0001.79 Exec Sql Set Option Commit = *None;
0001.80
0001.81 // Valida Si esta Activo aplicacin G.O. 41.052 IVA Impositivo
0001.82 If GetParmVal('IVAACTRCAL') = @Activo;
0001.83
0001.84 // Valida Parametro Fecha Mov. Recupera Fecha Incorporacin
0001.85 If %Parms() = *Zeros;
0001.86 // Recupera la Fecha de la ltima Diaria
0001.87 RucoPupb0(fecUltDiaTDC);
0001.88 fecUltDiaria = %Char(fecUltDiaTDC);
0001.90 fecUltAno = %Dec(fecAno:4:0);
0001.91 fecUltMes = %Dec(fecMes:2:0);
0001.92 fecUltDia = %Dec(fecDia:2:0);
0001.93 // Recupera la Fecha del Calendario de Ejecucin
0001.94 CladPex10(codPgm:fecUltAno:fecUltMes:fecUltDia:fecAplMov);
0001.95 Else;
0001.96 fecAplMov = fecDiaria;
0001.97 EndIf;
0001.98 // Parametros para el Re-Clculo del IVA
0001.99 wMontoAplIVA = GetParmVal('IVAMTORCAL');
0002.00 wProcIVA = GetParmVal('IVANVORCAL');
0002.01 wProcIVAApl = (wProcIVA - 1) * 100;
0002.02 DclMoapExmo();
0002.03 Dow ReadMoapExmo();
0002.04 // Re-Calcula el Monto de Retencin e Intercambio
0002.05 Monitor;
0002.06 // Valida si Comercio se encuentra Exento de IVA
0002.07 If Not EstbExento(DsMoap.D7MGNB) And
0002.08 %Subst(DsMoap.D7NRTA:1:1) <> @FranqAmex;
0002.09 wMontoRet = ((DsMoap.D7VRTR / wProcIVA) * DsMoap.D7BFPC)
0002.10 wMontoNeto = DsMoap.D7VRTR - DsMoap.D7VRDE - wMontoRet;
0002.11 // Actualiza Monto de Retencin e Intercambio
0002.12 UpdPhyMoap();
0002.13 EndIf;
0002.14 On-Error *All;
0002.15 wMontoRet = *Zeros;
0002.16 wMontoNeto = *Zeros;
0002.17 EndMon;
0002.18 EndDo;
0002.19 CloseMoapExmo();
0002.20 EndIf;
0002.21 *InLr = *On;
0002.22 // -------------------------------------------------------------
0002.23 // - Seccin de Procedimientos Locales -
0002.24 // -------------------------------------------------------------
0002.25 // --- Recupera Parametro Valor ---
0002.26 Dcl-Proc GetParmVal;
0002.27 Dcl-Pi *N Zoned(11:2);
0002.28 valCodigo Char(10) Const;
0002.29 End-Pi;
0002.30 Dcl-S valNumeric Zoned(11:2) Inz(*Zeros) Static;
0002.31 Exec Sql
0002.32 Select QZY7V1 Into :valNumeric From PhyPrVl
0002.33 Where QZCVC1 = :valCodigo;
0002.34 Return valNumeric;
0002.35 End-Proc;
0002.36 // --- Arma Cursor Unin PHYMOAP - PHYEXMO ---
0002.37 Dcl-Proc DclMoapExmo;
0002.38 Exec Sql Close CurMoapExmo;
0002.39 Exec Sql Declare CurMoapExmo Cursor For
0002.40 Select D7FMAP, D7NRTA, D7CDCC, D7CDTT, D7YLNB, D7CDAU, D7MGNB,
0002.41 D7NRC1, D7VRTR, D7VRDE, D7BFPC, D7ZQV1
0002.42 From PHYMOAP Inner Join PHYEXMO
0002.43 On D7CDCC = MVCDCC And D7FMAP = MVFMAP And
0002.44 D7CDTT = MVCDTT And D7NRTA = MVNRTA And
0002.45 D7NRC1 = MVNRC1
0002.46 Where D7FMAP = :FecAplMov And
0002.47 MVZ8T1 Not In ( '01', '40', '41' ) And
0002.48 D7ERRM IN (0, 800000000000000) And
0002.49 D7VRTR >= :wMontoAplIVA And
0002.50 D7MGNB Between 10000 And 9999999999 And
0002.51 D7ZQV1 > 0
0002.52 For Read Only;
0002.53 Exec Sql Open CurMoapExmo;
0002.54 End-Proc;
0002.55 // --- Lee Cursor Unin PHYMOAP - PHYEXMO ---
0002.56 Dcl-Proc ReadMoapExmo;
0002.57 Dcl-Pi *N Ind End-Pi;
0002.58 Exec Sql Fetch Next From CurMoapExmo Into :dsMoap;
0002.59 Return (SqlCode = *Zeros);
0002.60 End-Proc;
0002.61 // --- Cierra Cursor Unin PHYMOAP - PHYEXMO ---
0002.62 Dcl-Proc CloseMoapExmo;
0002.63 Exec Sql Close CurMoapExmo;
0002.64 End-Proc;
0002.65 // --- Actualiza PHYESAT Nuevo Valor Retencin e Intercambio ---
0002.66 Dcl-Proc UpdPhyMoap;
0002.67 Exec Sql Update PhyMoap
0002.68 Set D7YXVA = :wMontoNeto, D7ZQV1 = :wMontoRet,
0002.69 D7BEPC = :wProcIVAApl
0002.70 Where D7CDCC = :DsMoap.D7CDCC And
0002.71 D7FMAP = :DsMoap.D7FMAP And
0002.72 D7CDTT = :DsMoap.D7CDTT And
0002.73 D7NRTA = :DsMoap.D7NRTA And
0002.74 D7NRC1 = :DsMoap.D7NRC1 And
0002.75 D7CDAU = :DsMoap.D7CDAU;
0002.76 End-Proc;
0002.77 // --- Valida si el Comercio esta Exento ---
0002.78 Dcl-Proc estbExento;
0002.79 Dcl-Pi *N Ind;
0002.80 codEstb Packed(10:0) Const;
0002.81 End-Pi;
0002.82 Dcl-S ivaExento Ind Inz(*Off) Static;
0002.83 Dcl-S baseIvaZona Packed(11:2) Inz(*Zeros) Static;
0002.84 // Inicializa Variables
0002.85 ivaExento = *Off;
0002.86 baseIvaZona = *Zeros;
0002.87 // Recupera Zona del Establecimiento
0002.88 Exec Sql Select C4EHTX Into :wZonaEstb From PHYESTA
0002.89 Where C4CDES = :codEstb;
0002.90 If SqlCode = *Zeros;
0002.91 // Busca Base de IVA por Zona
0002.92 Exec Sql Select QZY7V1 Into :baseIvaZona From PHYPRVL
0002.93 Where QZCVC1 = :@BaseISLR || :wZonaEstb;
0002.94 EndIf;
0002.95 If SqlCode = *Zeros And baseIvaZona > *Zeros;
0002.96 ivaExento = *On;
0002.97 EndIf;
0002.98
0002.99 Return ivaExento;
0003.00 End-Proc;
0003.01 **End-Free

También podría gustarte