317 lines
11 KiB
Plaintext
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 |