modificaciones facturacion electronica
This commit is contained in:
@@ -37,6 +37,53 @@ import xml
|
||||
END RECORD ,
|
||||
hasr varchar(10)
|
||||
|
||||
# Tabla de formas de pago (pago mixto) que carga el programa llamador via set_formaspago()
|
||||
DEFINE m_formaspago DYNAMIC ARRAY OF RECORD
|
||||
formapago STRING,
|
||||
montopago STRING
|
||||
END RECORD
|
||||
|
||||
# El programa llamador (veprmt001) carga aqui las formas de pago antes de generafile()
|
||||
FUNCTION set_formaspago(p_arr)
|
||||
DEFINE p_arr DYNAMIC ARRAY OF RECORD
|
||||
formapago STRING,
|
||||
montopago STRING
|
||||
END RECORD
|
||||
DEFINE j INT
|
||||
CALL m_formaspago.clear()
|
||||
FOR j = 1 TO p_arr.getLength()
|
||||
LET m_formaspago[j].formapago = p_arr[j].formapago
|
||||
LET m_formaspago[j].montopago = p_arr[j].montopago
|
||||
END FOR
|
||||
END FUNCTION
|
||||
|
||||
# Emite uno o varios <FormaDePago>. Si hay pago mixto (m_formaspago) los recorre;
|
||||
# si no, usa la forma unica del encabezado (comportamiento anterior).
|
||||
FUNCTION emite_formasdepago()
|
||||
DEFINE j INT
|
||||
IF m_formaspago.getLength() > 0 THEN
|
||||
FOR j = 1 TO m_formaspago.getLength()
|
||||
CALL out.startElement("FormaDePago",NULL)
|
||||
CALL out.startElement("FormaPago",NULL)
|
||||
CALL out.characters(m_formaspago[j].formapago CLIPPED)
|
||||
CALL out.endElement("FormaPago")
|
||||
CALL out.startElement("MontoPago",NULL)
|
||||
CALL out.characters(m_formaspago[j].montopago CLIPPED)
|
||||
CALL out.endElement("MontoPago")
|
||||
CALL out.endElement("FormaDePago")
|
||||
END FOR
|
||||
ELSE
|
||||
CALL out.startElement("FormaDePago",NULL)
|
||||
CALL out.startElement("FormaPago",NULL)
|
||||
CALL out.characters(r_documento_encabezado.FormadePAgo CLIPPED)
|
||||
CALL out.endElement("FormaPago")
|
||||
CALL out.startElement("MontoPago",NULL)
|
||||
CALL out.characters(r_documento_encabezado.montoPago)
|
||||
CALL out.endElement("MontoPago")
|
||||
CALL out.endElement("FormaDePago")
|
||||
END IF
|
||||
END FUNCTION
|
||||
|
||||
|
||||
FUNCTION generafile(documento_encabezado,documento_Detalle,xsucid,xbodega,xoperacion)
|
||||
|
||||
@@ -63,8 +110,17 @@ FUNCTION generafile(documento_encabezado,documento_Detalle,xsucid,xbodega,xopera
|
||||
NumeroLinea int
|
||||
END RECORD,
|
||||
respuesta,codigo STRING,
|
||||
phash,ohash VARCHAR(10)
|
||||
phash,ohash VARCHAR(10),
|
||||
vmover,vfc STRING
|
||||
LET ohash = NULL
|
||||
# Comando y subcarpeta FC segun el sistema: Linux (server) mv + FC/, Windows move + FC\
|
||||
IF os.Path.separator() = "/" THEN
|
||||
LET vmover = "mv "
|
||||
LET vfc = "FC/"
|
||||
ELSE
|
||||
LET vmover = "move "
|
||||
LET vfc = "FC\\"
|
||||
END IF
|
||||
LET ruta_originales= fgl_getenv("RUTA_XML_ORIGINALES")
|
||||
|
||||
#LET ruta_originales = '.\\filesXML\\ncf31\\'
|
||||
@@ -77,6 +133,14 @@ FUNCTION generafile(documento_encabezado,documento_Detalle,xsucid,xbodega,xopera
|
||||
|
||||
|
||||
LET out=om.XmlWriter.createFileWriter(nombreFile)
|
||||
IF out IS NULL THEN
|
||||
# No se pudo crear el XML (RUTA_XML_ORIGINALES vacia, carpeta inexistente,
|
||||
# sin "/" al final o sin permiso de escritura): avisa en vez de caerse
|
||||
LET respuesta = "No se pudo crear el XML en: ", nombreFile,
|
||||
" -- revise la variable RUTA_XML_ORIGINALES (carpeta existe, termina en / y tiene permiso de escritura)"
|
||||
CALL fgl_winmessage("e-CF",respuesta,"stop")
|
||||
RETURN NULL,respuesta,NULL,"500"
|
||||
END IF
|
||||
LET a=om.SaxAttributes.create()
|
||||
CALL out.startDocument()
|
||||
|
||||
@@ -144,7 +208,7 @@ FUNCTION generafile(documento_encabezado,documento_Detalle,xsucid,xbodega,xopera
|
||||
|
||||
CALL out.endElement("ECF")
|
||||
END IF
|
||||
IF r_documento_encabezado.tipoEcf = '32' AND montoFactura > 250000 THEN
|
||||
IF r_documento_encabezado.tipoEcf = '32' AND montoFactura >= 250000 THEN
|
||||
LET tipoRecepcion = "normal"
|
||||
CALL out.endElement("ECF")
|
||||
END IF
|
||||
@@ -165,7 +229,7 @@ FUNCTION generafile(documento_encabezado,documento_Detalle,xsucid,xbodega,xopera
|
||||
|
||||
CALL gethash(filexml) RETURNING ohash,fechaFirma,xfacturainterna
|
||||
LET nombrefile2=ruta_firmados,documento_encabezado.nombreFile
|
||||
LET comando2 = "move ",nombrefile2 CLIPPED," ",ruta_firmados CLIPPED,"FC\\",documento_encabezado.nombreFile clipped
|
||||
LET comando2 = vmover,nombrefile2 CLIPPED," ",ruta_firmados CLIPPED,vfc,documento_encabezado.nombreFile clipped
|
||||
DISPLAY "comando 2 ",ohash
|
||||
RUN comando2
|
||||
LET fechaFirma = CURRENT
|
||||
@@ -176,7 +240,7 @@ END IF
|
||||
|
||||
|
||||
IF r_documento_encabezado.tipoEcf = '32' AND montoFactura < 250000 THEN
|
||||
LET comando = "move ",nombrefile CLIPPED," ",ruta_originales CLIPPED,"FC\\",documento_encabezado.nombreFile clipped
|
||||
LET comando = vmover,nombrefile CLIPPED," ",ruta_originales CLIPPED,vfc,documento_encabezado.nombreFile clipped
|
||||
|
||||
DISPLAY "comando ",comando
|
||||
RUN comando
|
||||
@@ -187,6 +251,14 @@ END IF
|
||||
LET tipoRecepcion = "normal32"
|
||||
|
||||
LET out=om.XmlWriter.createFileWriter(nombreFile)
|
||||
IF out IS NULL THEN
|
||||
# No se pudo crear el XML (RUTA_XML_ORIGINALES vacia, carpeta inexistente,
|
||||
# sin "/" al final o sin permiso de escritura): avisa en vez de caerse
|
||||
LET respuesta = "No se pudo crear el XML en: ", nombreFile,
|
||||
" -- revise la variable RUTA_XML_ORIGINALES (carpeta existe, termina en / y tiene permiso de escritura)"
|
||||
CALL fgl_winmessage("e-CF",respuesta,"stop")
|
||||
RETURN NULL,respuesta,NULL,"500"
|
||||
END IF
|
||||
LET a=om.SaxAttributes.create()
|
||||
CALL out.startDocument()
|
||||
|
||||
@@ -229,6 +301,14 @@ END IF
|
||||
LET tipoRecepcion = "normal32"
|
||||
|
||||
LET out=om.XmlWriter.createFileWriter(nombreFile)
|
||||
IF out IS NULL THEN
|
||||
# No se pudo crear el XML (RUTA_XML_ORIGINALES vacia, carpeta inexistente,
|
||||
# sin "/" al final o sin permiso de escritura): avisa en vez de caerse
|
||||
LET respuesta = "No se pudo crear el XML en: ", nombreFile,
|
||||
" -- revise la variable RUTA_XML_ORIGINALES (carpeta existe, termina en / y tiene permiso de escritura)"
|
||||
CALL fgl_winmessage("e-CF",respuesta,"stop")
|
||||
RETURN NULL,respuesta,NULL,"500"
|
||||
END IF
|
||||
LET a=om.SaxAttributes.create()
|
||||
CALL out.startDocument()
|
||||
|
||||
@@ -245,7 +325,7 @@ END IF
|
||||
LET tipoRecepcion = "normal32"
|
||||
END IF
|
||||
|
||||
CALL procesoEncf(nombrefile,"test",tipoRecepcion,xsucid,xbodega,xoperacion,' ')
|
||||
CALL procesoEncf(nombrefile,ambiente() CLIPPED,tipoRecepcion,xsucid,xbodega,xoperacion,' ')
|
||||
RETURNING phash,respuesta,codigo
|
||||
|
||||
{ LET inserta_log = "INSERT INTO exterior.dbo.ncf_log
|
||||
@@ -335,18 +415,7 @@ DISPLAY "qui en el genera ",r_documento_encabezado.tipoPago
|
||||
CALL out.startElement("TablaFormasPago",NULL)
|
||||
|
||||
|
||||
CALL out.startElement("FormaDePago",NULL)
|
||||
|
||||
|
||||
CALL out.startElement("FormaPago",null)
|
||||
CALL out.characters(r_documento_encabezado.FormadePAgo clipped)
|
||||
CALL out.endElement("FormaPago")
|
||||
|
||||
CALL out.startElement("MontoPago",null)
|
||||
CALL out.characters(r_documento_encabezado.montoPago)
|
||||
CALL out.endElement("MontoPago")
|
||||
|
||||
CALL out.endElement("FormaDePago")
|
||||
CALL emite_formasdepago()
|
||||
|
||||
CALL out.endElement("TablaFormasPago")
|
||||
|
||||
@@ -647,18 +716,7 @@ CALL out.startElement("Encabezado",a)
|
||||
CALL out.startElement("TablaFormasPago",NULL)
|
||||
|
||||
|
||||
CALL out.startElement("FormaDePago",NULL)
|
||||
|
||||
|
||||
CALL out.startElement("FormaPago",null)
|
||||
CALL out.characters(r_documento_encabezado.FormadePAgo clipped)
|
||||
CALL out.endElement("FormaPago")
|
||||
|
||||
CALL out.startElement("MontoPago",null)
|
||||
CALL out.characters(r_documento_encabezado.montoPago)
|
||||
CALL out.endElement("MontoPago")
|
||||
|
||||
CALL out.endElement("FormaDePago")
|
||||
CALL emite_formasdepago()
|
||||
|
||||
CALL out.endElement("TablaFormasPago")
|
||||
END IF
|
||||
@@ -800,18 +858,7 @@ FUNCTION resumen32()
|
||||
CALL out.endElement("TipoPago")
|
||||
|
||||
CALL out.startElement("TablaFormasPago",NULL)
|
||||
CALL out.startElement("FormaDePago",NULL)
|
||||
|
||||
|
||||
CALL out.startElement("FormaPago",null)
|
||||
CALL out.characters(r_documento_encabezado.FormadePAgo clipped)
|
||||
CALL out.endElement("FormaPago")
|
||||
|
||||
CALL out.startElement("MontoPago",null)
|
||||
CALL out.characters(r_documento_encabezado.montoPago)
|
||||
CALL out.endElement("MontoPago")
|
||||
|
||||
CALL out.endElement("FormaDePago")
|
||||
CALL emite_formasdepago()
|
||||
|
||||
CALL out.endElement("TablaFormasPago")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user