Files
MBS/PROYECTO/otrodir/generafilexml_1.4gl

317 lines
11 KiB
Plaintext

SCHEMA smarmotech
DEFINE pventas RECORD LIKE vetb00002.*
DEFINE a om.SaxAttributes
DEFINE out om.SaxDocumentHandler,
i INT
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,
nombreFile STRING
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")
{
DECLARE buscar CURSOR FOR
SELECT b.factura,b.fecha_factura FROM vetb00002 b,vetb00071 c,vetb00072 d
WHERE b.factura = d.documento AND d.tipo_doc = 'FT' AND
c.codigo_dgii = d.codigo_dgii and
b.fecha_factura between '03/01/2023' and '03/30/2023' and b.status_t is null
FOREACH buscar INTO pventas.factura,pventas.fecha_factura
# CALL a.clear()
CALL a.addAttribute("factura",pventas.factura)
CALL a.addAttribute("fecha",pventas.fecha_factura)
CALL out.startElement("Encabezado",a)
CALL out.endElement("Encabezado")
END FOREACH}
END FUNCTION