Files
MBS/PROYECTO/otrodir/generafilexml_2.4gl
T

301 lines
10 KiB
Plaintext

DEFINE a om.SaxAttributes
DEFINE out om.SaxDocumentHandler,
i INT,
nombreFile STRING
DEFINE r_documento_encabezado RECORD
tipoEcf,eNcf,indicadorMontoGravado,tipoPago,fechaLimitePago,FormadePAgo,montoPago,FechaVencimientoSecuencia,
rncEmisor,razonSocialEmisor,direccionEmisor,Municipio,Provincia,telefonoEmisor,
correoEmisor,webSite,codigoVendedor,numeroFacturaInterna,numeroPedidoInterno,
fechaEmision,rncComprador,razonSocialComprador,montoGravadoTotal,montoGravadoI1,
montoGravadoI2,montoGravadoI3,montoExento,itbis1,itbis2,itbis3,totalItbis,totalItbis1,
totalItbis2,totalItbis3,montoTotal,tipoIngreso,terminoPago,TipoCuentaPago,NumeroCuentaPago,IdentificadorExtranjero
STRING
END RECORD
DEFINE r_documento_Detalle DYNAMIC ARRAY OF RECORD
indicadorFacturacion,nombreItem,indicadorBienoServicio,cantidadItem,precioUnitarioItem,
montoItem STRING,
DescripcionItem VARCHAR(1000),
NumeroLinea int
END RECORD
FUNCTION generafile(documento_encabezado,documento_Detalle)
DEFINE documento_encabezado RECORD
tipoEcf,eNcf,indicadorMontoGravado,tipoPago,fechaLimitePago,FormadePAgo,montoPago,FechaVencimientoSecuencia,
rncEmisor,razonSocialEmisor,direccionEmisor,Municipio,Provincia,telefonoEmisor,
correoEmisor,webSite,codigoVendedor,numeroFacturaInterna,numeroPedidoInterno,
fechaEmision,rncComprador,razonSocialComprador,montoGravadoTotal,montoGravadoI1,
montoGravadoI2,montoGravadoI3,montoExento,itbis1,itbis2,itbis3,totalItbis,totalItbis1,
totalItbis2,totalItbis3,montoTotal,tipoIngreso,terminoPago,TipoCuentaPago,NumeroCuentaPago,IdentificadorExtranjero
STRING
END RECORD
DEFINE documento_Detalle DYNAMIC ARRAY OF RECORD
indicadorFacturacion,nombreItem,indicadorBienoServicio,cantidadItem,precioUnitarioItem,
montoItem STRING,
DescripcionItem VARCHAR(1000),
NumeroLinea int
END RECORD
LET nombreFile = 'ECF',documento_encabezado.eNcf CLIPPED,'.XML'
LET r_documento_encabezado.* = documento_encabezado.*
LET r_documento_Detalle = documento_detalle
LET out=om.XmlWriter.createFileWriter(nombreFile)
LET a=om.SaxAttributes.create()
CALL out.startDocument()
CALL out.startElement("ECF",a)
CALL encabezado()
CALL detalle()
CALL out.endElement("ECF")
CALL out.endDocument()
CALL procesoEncf(nombrefile)
END FUNCTION
FUNCTION encabezado()
CALL out.startElement("Encabezado",a)
CALL out.startElement("Version",null)
CALL out.characters("1.0")
CALL out.endElement("Version")
CALL a.clear()
CALL out.startElement("idDoc",NULL)
CALL out.startElement("TipoeCF",null)
CALL out.characters(r_documento_encabezado.tipoEcf CLIPPED)
CALL out.endElement("TipoeCF")
CALL out.startElement("eNCF",null)
CALL out.characters(r_documento_encabezado.eNcf CLIPPED)
CALL out.endElement("eNCF")
CALL out.startElement("FechaVencimientoSecuencia",null)
CALL out.characters(r_documento_encabezado.FechaVencimientoSecuencia)
CALL out.endElement("FechaVencimientoSecuencia")
CALL out.startElement("IndicadorMontoGravado",null)
CALL out.characters(r_documento_encabezado.indicadorMontoGravado)
CALL out.endElement("IndicadorMontoGravado")
CALL out.startElement("TipoIngresos",null)
CALL out.characters(r_documento_encabezado.tipoIngreso)
CALL out.endElement("TipoIngresos")
CALL out.startElement("TipoPago",null)
CALL out.characters(r_documento_encabezado.tipoPago)
CALL out.endElement("TipoPago")
IF r_documento_encabezado.fechaLimitePago IS NOT NULL THEN
CALL out.startElement("FechaLimitePago",null)
CALL out.characters(r_documento_encabezado.fechaLimitePago)
CALL out.endElement("FechaLimitePago")
END IF
IF r_documento_encabezado.terminoPago IS NOT NULL THEN
CALL out.startElement("TerminoPago",null)
CALL out.characters(r_documento_encabezado.terminoPago)
CALL out.endElement("TerminoPago")
END IF
# AQUI VA LA TABLA FORMA DE PAGO, ESTO NO ES OBLIGATORIO
CALL out.startElement("TablaFormasPago",NULL)
CALL out.startElement("FormaPago",null)
CALL out.characters(r_documento_encabezado.FormadePAgo)
CALL out.endElement("FormaPago")
CALL out.startElement("MontoPago",null)
CALL out.characters(r_documento_encabezado.montoPago)
CALL out.endElement("MontoPago")
CALL out.startElement("TipoCuentaPago",null)
CALL out.characters(r_documento_encabezado.TipoCuentaPago)
CALL out.endElement("TipoCuentaPago")
CALL out.endElement("TablaFormasPago")
CALL out.endElement("idDoc")
CALL out.startElement("Emisor",NULL)
CALL out.startElement("RNCEmisor",NULL)
CALL out.characters(r_documento_encabezado.rncEmisor)
CALL out.endElement("RNCEmisor")
CALL out.startElement("RazonSocialEmisor",NULL)
CALL out.characters(r_documento_encabezado.razonSocialEmisor)
CALL out.endElement("RazonSocialEmisor")
CALL out.startElement("DireccionEmisor",NULL)
CALL out.characters(r_documento_encabezado.direccionEmisor)
CALL out.endElement("DireccionEmisor")
CALL out.startElement("Municipio",NULL)
CALL out.characters(r_documento_encabezado.Municipio)
CALL out.endElement("Municipio")
CALL out.startElement("Provincia",NULL)
CALL out.characters(r_documento_encabezado.Provincia)
CALL out.endElement("Provincia")
CALL out.startElement("CorreoEmisor",NULL)
CALL out.characters(r_documento_encabezado.correoEmisor)
CALL out.endElement("CorreoEmisor")
CALL out.startElement("CodigoVendedor",NULL)
CALL out.characters(r_documento_encabezado.codigoVendedor)
CALL out.endElement("CodigoVendedor")
CALL out.startElement("NumeroFacturaInterna",NULL)
CALL out.characters(r_documento_encabezado.numeroFacturaInterna)
CALL out.endElement("NumeroFacturaInterna")
CALL out.startElement("NumeroPedidoInterno",NULL)
CALL out.characters(r_documento_encabezado.numeroPedidoInterno)
CALL out.endElement("NumeroPedidoInterno")
CALL out.startElement("FechaEmision",NULL)
CALL out.characters(r_documento_encabezado.fechaEmision)
CALL out.endElement("FechaEmision")
CALL out.endElement("Emisor")
CALL out.startElement("Comprador",NULL)
CALL out.startElement("RNCComprador",NULL)
CALL out.characters(r_documento_encabezado.rncComprador)
CALL out.endElement("RNCComprador")
CALL out.startElement("RazonSocialComprador",NULL)
CALL out.characters(r_documento_encabezado.razonSocialComprador)
CALL out.endElement("RazonSocialComprador")
CALL out.endElement("Comprador")
CALL out.startElement("Totales",NULL)
CALL out.startElement("MontoGravadoTotal",NULL)
CALL out.characters(r_documento_encabezado.montoGravadoTotal)
CALL out.endElement("MontoGravadoTotal")
CALL out.startElement("MontoGravadoI1",NULL)
CALL out.characters(r_documento_encabezado.montoGravadoTotal)
CALL out.endElement("MontoGravadoI1")
CALL out.startElement("MontoGravadoI2",NULL)
CALL out.characters(r_documento_encabezado.montoGravadoI2)
CALL out.endElement("MontoGravadoI2")
CALL out.startElement("MontoGravadoI3",NULL)
CALL out.characters(r_documento_encabezado.montoGravadoI3)
CALL out.endElement("MontoGravadoI3")
CALL out.startElement("MontoExento",NULL)
CALL out.characters(r_documento_encabezado.montoExento)
CALL out.endElement("MontoExento")
CALL out.startElement("ITBIS1",NULL)
CALL out.characters(r_documento_encabezado.itbis1)
CALL out.endElement("ITBIS1")
CALL out.startElement("ITBIS2",NULL)
CALL out.characters(r_documento_encabezado.itbis2)
CALL out.endElement("ITBIS2")
CALL out.startElement("ITBIS3",NULL)
CALL out.characters(r_documento_encabezado.itbis3)
CALL out.endElement("ITBIS3")
CALL out.startElement("TotalITBIS",NULL)
CALL out.characters(r_documento_encabezado.totalItbis)
CALL out.endElement("TotalITBIS")
CALL out.startElement("TotalITBIS1",NULL)
CALL out.characters(r_documento_encabezado.totalItbis1)
CALL out.endElement("TotalITBIS1")
CALL out.startElement("TotalITBIS2",NULL)
CALL out.characters(r_documento_encabezado.totalItbis2)
CALL out.endElement("TotalITBIS2")
CALL out.startElement("TotalITBIS3",NULL)
CALL out.characters(r_documento_encabezado.totalItbis3)
CALL out.endElement("TotalITBIS3")
CALL out.startElement("MontoTotal",NULL)
CALL out.characters(r_documento_encabezado.montoTotal)
CALL out.endElement("MontoTotal")
CALL out.endElement("Totales")
CALL out.endElement("Encabezado")
END FUNCTION
FUNCTION detalle()
CALL out.startElement("DetallesItems",NULL)
FOR i =1 TO r_documento_detalle.getLength()
CALL out.startElement("Item",NULL)
CALL out.startElement("NumeroLinea",NULL)
CALL out.characters(i USING "<<<")
CALL out.endElement("NumeroLinea")
CALL out.startElement("IndicadorFacturacion",NULL)
CALL out.characters(r_documento_detalle[i].indicadorFacturacion)
CALL out.endElement("IndicadorFacturacion")
CALL out.startElement("NombreItem",NULL)
CALL out.characters(r_documento_detalle[i].nombreItem)
CALL out.endElement("NombreItem")
CALL out.startElement("IndicadorBienoServicio",NULL)
CALL out.characters(r_documento_detalle[i].indicadorBienoServicio)
CALL out.endElement("IndicadorBienoServicio")
CALL out.startElement("DescripcionItem",NULL)
CALL out.characters(r_documento_detalle[i].DescripcionItem)
CALL out.endElement("DescripcionItem")
CALL out.startElement("CantidadItem",NULL)
CALL out.characters(r_documento_detalle[i].cantidadItem)
CALL out.endElement("CantidadItem")
CALL out.startElement("PrecioUnitarioItem",NULL)
CALL out.characters(r_documento_detalle[i].precioUnitarioItem)
CALL out.endElement("PrecioUnitarioItem")
CALL out.startElement("MontoItem",NULL)
CALL out.characters(r_documento_detalle[i].montoItem)
CALL out.endElement("MontoItem")
CALL out.endElement("Item")
END FOR
CALL out.endElement("DetallesItems")
END FUNCTION