Vous êtes sur la page 1sur 4

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

Vous aimerez peut-être aussi