Macro en Word para leer recibos de n贸mina CFDI y extraer el ISR retenido autom谩ticamente

Imagen
Macro en Word para leer recibos de n贸mina CFDI y extraer datos clave Si trabajas en contabilidad, seguramente has recibido archivos XML de recibos de n贸mina para revisi贸n o conciliaci贸n. Esta macro te permite leer m煤ltiples archivos CFDI versi贸n 4.0 directamente desde Word, y extraer autom谩ticamente los siguientes datos: RFC del Emisor RFC del Receptor Total del comprobante UUID ISR Retenido (extra铆do del nodo de deducciones de n贸mina) Esto es especialmente 煤til para quienes deben validar cantidades retenidas de ISR en recibos de n贸mina digitales y quieren presentar su declaraci贸n anual o para contadores. La macro coloca toda la informaci贸n organizada en una tabla dentro del documento Word, lista para copiar o validar. ¿C贸mo funciona? Al ejecutar la macro: Seleccionas uno o varios archivos XML desde tu computadora Word los analiza uno por uno Se genera autom谩ticamente una tabla con los datos clave ¿Qui茅n puede usar esta macro? Est谩 pensada para c...

馃捇 Lenguaje Progress 4GL: C贸mo utilizar tablas temporales

Bienvenidos a este blog, en esta publicaci贸n veremos como crear una tabla temporal y colocar 铆ndices con el lenguaje Progress 4gl.

Primero veamos un ejemplo  en que ocasiones podr铆amos utilizar una tabla temporal en general no solo Progress:

  • Cuando hacemos un reporte normalmente vamos recuperando informaci贸n de diferentes tablas de una base de datos y para ir guardando las filas con la informaci贸n que necesitamos en muchas ocasiones necesitamos tener una tabla nueva donde ir almacenando las nuevas filas.
  • Si vamos a realizar m谩s c谩lculos con los datos que obtenemos de diferentes tablas.
  • Queremos utilizarlo en reportes como Crystal Reports o en plantillas diferentes.
  • Cuando vamos a procesar el contenido de los datos, cuando vamos a realizar segmentaciones de los datos pero no lo vamos almacenar en una tabla f铆sica de base datos porque no se tarda mucho la generaci贸n de la informaci贸n y no es una informaci贸n que se genere con mucha frecuencia. 
La definici贸n general de Progress es la siguiente en la imagen

Ejemplo de c贸digo en Progress 4GL para desarrollar aplicaciones empresariales.

En general est谩n son las ventajas y desventajas de utilizar estas tablas temporales


Ahora veamos un ejemplo en Progress: quiero generar un programa que me lea un archivo de entrada y que con la tabla temporal en la que guardemos el archivo de entrada lo convirtamos en una carga CIM en QAD para crear ubicaciones en el m贸dulo de activos fijos.

{us/mf/mfdtitle.i}
DEF VAR vc-in-file AS CHAR NO-UNDO.
DEF VAR v-totrec   AS INTEGER NO-UNDO.
DEF VAR v-toterr   AS INTEGER NO-UNDO. 
DEF VAR lv-outfile AS CHAR NO-UNDO. 
DEF VAR lv-cimfile AS CHAR NO-UNDO. 
DEF VAR v-err      AS LOGICAL NO-UNDO. 
/*******TABLA TEMPORAL**************/
DEF TEMP-TABLE tabla_datos no-undo
  field tt_loc   like ld_part
  field tt_des   like ld_site    
  field tt_ent   like ld_loc
  field tt_sub   like ld_lot
  field tt_cc    like ld_ref
  FIELD tt-error  as   character
INDEX ttDataCim
  tt_loc
  tt_des
  tt_ent
  tt_sub
  tt_cc.
/*******TABLA TEMPORAL**************/  
DEF FRAME a           
  vc-in-file   COLON 21 LABEL "File to charge" FORMAT "X(30)"
WITH WIDTH 80 SIDE-LABELS.  

UPDATE vc-in-file WITH FRAME a.    
  
INPUT FROM VALUE(vc-in-file).
  REPEAT:
    CREATE  tabla_datos.
    IMPORT DELIMITER ","  tabla_datos EXCEPT tt-error  .
  END. 
INPUT CLOSE.

FOR EACH tabla_datos  
    WHERE tt_loc  <> ""
    NO-LOCK
    BREAK BY tt_loc
          BY tt_des
          BY tt_ent
          BY tt_sub
          BY tt_cc.
    IF tt-error = "" THEN DO:
      
      ASSIGN
        v-totrec   = v-totrec + 1
        lv-outfile = tt_loc + ".cim"
        lv-cimfile =  tt_loc + ".log".
      
      OUTPUT TO VALUE(lv-outfile).
        
        
PUT UNFORMAT '"' tt_loc '" ' SKIP.
IF tt_des <> '' THEN 
           put unformat '"' tt_des '" ' .
ELSE 
   put unformat '-' .
IF tt_ent <> '' THEN 
           put unformat '"' tt_ent '" ' .
ELSE 
   put unformat '-' .
IF tt_sub <> '' THEN 
           put unformat '"' tt_sub '" ' .
ELSE 
   put unformat '-' .              
   
IF tt_cc <> '' THEN 
           put unformat '"' tt_cc '" ' skip.
ELSE 
   put unformat '-' skip.
        
PUT UNFORMAT '-' SKIP.
        PUT UNFORMAT '.' SKIP.
        PUT UNFORMAT '.' SKIP.
        
      OUTPUT CLOSE.
      
      DO TRANSACTION:  
        
        OUTPUT TO VALUE(lv-cimfile). 
          input from value(lv-outfile). 
            batchrun = true.        
              {us/bbi/gprun.i ""falcmt.p""}
            batchrun = false.   
            pause 0 before-hide.
          input close. 
        output close.  
        
        v-err = false. 
        
        if v-err then do: 
          v-toterr = v-toterr + 1.  
          undo, next. 
        END. 
        
      END. 
    END. 
END.
DISPLAY  "TOTAL errores" v-toterr.

Otros art铆culos en este blog acerca de Progress 4gl

Espero les haya gustado y servido esta publicaci贸n, comparta en sus redes sociales y tambi茅n pueden seguirnos en este blog o en Facebook https://www.facebook.com/Programacionparatodosmsg/

Comentarios

馃殌 Mantener este blog funcionando requiere tiempo y caf茅. ¡Puedes contribuir con uno aqu铆!

Entradas m谩s populares de este blog

Gu铆a Pr谩ctica: Ejemplo Completo de ASPX para Desarrolladores Web

馃搳 Automatiza tu trabajo: Convierte tablas de Word a Excel con una macro

Macro de Excel para abrir archivo csv