PROCEDURE GP_INV_XmlGeneraECI(gsIdDB_Inv_Contrato,gnAño,gnMes)
//Genera el xml del estado de cuenta de inversión
nContador is int = 0
nActual is int = 0
nAnterior is int = 0
dPeriodoDel is Date = FirstDayOfMonth(gnAño,gnMes)
dPeriodoAl is Date = LastDayOfMonth(gnAño, gnMes)
sResultado is ANSI string
HReadSeekFirst(DB_Inv_Contrato,IdDB_Inv_Contrato, gsIdDB_Inv_Contrato)
HReadSeekFirst(DB_Socio,IdSocio,DB_Inv_Contrato.IdSocio)
miEci is xmlDocument <description = "eci_v02">
nNameSpace1 is xmlNamespace
nNameSpace2 is xmlNamespace
nNode is dynamic xmlNode
nNode = miEci.eci
nNameSpace1.Name = "xsi"
nNameSpace1.URI = "http://www.w3.org/2001/XMLSchema-instance"
Add(nNode..NamespaceDeclared, nNameSpace1)
nNameSpace2.Name = "schemaLocation"
nNameSpace2.URI = "eci_v02.xsd"
Add(nNode..NamespaceDeclared, nNameSpace2)
miEci.eci:version = "1.0"
miEci.eci:fechaEmision = DateToString(Today(),"YYYY-MM-DD")
miEci.eci:periodoDel = DateToString(dPeriodoDel,"YYYY-MM-DD")
miEci.eci:periodoAl = DateToString(dPeriodoAl ,"YYYY-MM-DD")
miEci.eci:contratoNo = DB_Inv_Contrato.Folio
miEci.eci:comisionesPer = 0
miEci.eci:interesesAcum = 0
miEci.eci:ImpuestosRet = 0
miEci.eci:fechaCorte = dPeriodoAl
miEci.eci.socio:noSocio = DB_Socio.NoSocio
miEci.eci.socio:razonSocial = DB_Socio.RazonSocial
miEci.eci.socio:rfc = DB_Socio.RFC
HReadSeekFirst(DB_Soc_Domicilio, IdSocio,DB_Socio.IdSocio)
WHILE HFound(DB_Soc_Domicilio) = True
IF DB_Soc_Domicilio.Legal = True THEN
miEci.eci.socio:calle = DB_Soc_Domicilio.Calle
miEci.eci.socio:noExterior = DB_Soc_Domicilio.NoExterior
miEci.eci.socio:noInterior = DB_Soc_Domicilio.NoInterior
miEci.eci.socio:cp = DB_Soc_Domicilio.Cp
miEci.eci.socio:colonia = DB_Soc_Domicilio.Colonia
miEci.eci.socio:ciudad = DB_Soc_Domicilio.Localidad
miEci.eci.socio:estado = DB_Soc_Domicilio.Estado
BREAK
END
HReadNext(DB_Soc_Domicilio,IdSocio)
END
//**** MOVIMIENTOS DEL PERIODO ****
HReadSeekFirst(DB_Inv_Inversion,IdDB_Inv_Contrato,gsIdDB_Inv_Contrato)
WHILE HFound(DB_Inv_Inversion) = True
IF (DB_Inv_Inversion.FechaInversion >= dPeriodoDel AND DB_Inv_Inversion.FechaInversion <= dPeriodoAl) THEN
nContador++
miEci.eci.movimientos.movimiento[nContador]:fecha = DB_Inv_Inversion.FechaInversion
miEci.eci.movimientos.movimiento[nContador]:concepto = "PAGARE"
miEci.eci.movimientos.movimiento[nContador]:certificado = DB_Inv_Inversion.Folio
miEci.eci.movimientos.movimiento[nContador]:plazo = DB_Inv_Inversion.Plazo
miEci.eci.movimientos.movimiento[nContador]:inversion = DB_Inv_Inversion.FechaInversion
miEci.eci.movimientos.movimiento[nContador]:vencimiento = DB_Inv_Inversion.FechaVencimiento
miEci.eci.movimientos.movimiento[nContador]:tasa = DB_Inv_Inversion.TasaBruta
miEci.eci.movimientos.movimiento[nContador]:gatNominal = 0
miEci.eci.movimientos.movimiento[nContador]:gatReal = 0
miEci.eci.movimientos.movimiento[nContador]:debe = 0
miEci.eci.movimientos.movimiento[nContador]:haber = DB_Inv_Inversion.APagar
miEci.eci.movimientos.movimiento[nContador]:total = DB_Inv_Inversion.APagar
END
IF (DB_Inv_Inversion.FechaVencimiento >= dPeriodoDel AND DB_Inv_Inversion.FechaVencimiento <= dPeriodoAl) THEN
nContador++
miEci.eci.movimientos.movimiento[nContador]:fecha = DB_Inv_Inversion.FechaVencimiento
miEci.eci.movimientos.movimiento[nContador]:concepto = "VENCIMIENTO"
miEci.eci.movimientos.movimiento[nContador]:certificado = DB_Inv_Inversion.Folio
miEci.eci.movimientos.movimiento[nContador]:plazo = DB_Inv_Inversion.Plazo
miEci.eci.movimientos.movimiento[nContador]:inversion = DB_Inv_Inversion.FechaInversion
miEci.eci.movimientos.movimiento[nContador]:vencimiento = DB_Inv_Inversion.FechaVencimiento
miEci.eci.movimientos.movimiento[nContador]:tasa = DB_Inv_Inversion.TasaBruta
miEci.eci.movimientos.movimiento[nContador]:gatNominal = 0
miEci.eci.movimientos.movimiento[nContador]:gatReal = 0
miEci.eci.movimientos.movimiento[nContador]:debe = DB_Inv_Inversion.APagar
miEci.eci.movimientos.movimiento[nContador]:haber = 0
miEci.eci.movimientos.movimiento[nContador]:total = DB_Inv_Inversion.APagar
END
//**** PORTAFOLIO MES ACTUAL ****
IF (DB_Inv_Inversion.FechaVencimiento > dPeriodoAl) THEN
nActual++
miEci.eci.actual.portafolio[nActual]:concepto = "PAGARE"
miEci.eci.actual.portafolio[nActual]:certificado = DB_Inv_Inversion.Folio
miEci.eci.actual.portafolio[nActual]:plazo = DB_Inv_Inversion.Plazo
miEci.eci.actual.portafolio[nActual]:inversion = DB_Inv_Inversion.FechaInversion
miEci.eci.actual.portafolio[nActual]:vencimiento = DB_Inv_Inversion.FechaVencimiento
miEci.eci.actual.portafolio[nActual]:tasa = DB_Inv_Inversion.TasaBruta
miEci.eci.actual.portafolio[nActual]:gatNominal = 0
miEci.eci.actual.portafolio[nActual]:gatReal = 0
miEci.eci.actual.portafolio[nActual]:importe = DB_Inv_Inversion.APagar
END
//**** PORTAFOLIO MES ANTERIOR ****
IF DB_Inv_Inversion.FechaInversion < dPeriodoDel AND DB_Inv_Inversion.FechaVencimiento > dPeriodoAl THEN
nAnterior++
miEci.eci.anterior.portafolio[nAnterior]:concepto = "PAGARE"
miEci.eci.anterior.portafolio[nAnterior]:certificado = DB_Inv_Inversion.Folio
miEci.eci.anterior.portafolio[nAnterior]:plazo = DB_Inv_Inversion.Plazo
miEci.eci.anterior.portafolio[nAnterior]:inversion = DB_Inv_Inversion.FechaInversion
miEci.eci.anterior.portafolio[nAnterior]:vencimiento = DB_Inv_Inversion.FechaVencimiento
miEci.eci.anterior.portafolio[nAnterior]:tasa = DB_Inv_Inversion.TasaBruta
miEci.eci.anterior.portafolio[nAnterior]:gatNominal = 0
miEci.eci.anterior.portafolio[nAnterior]:gatReal = 0
miEci.eci.anterior.portafolio[nAnterior]:importe = DB_Inv_Inversion.APagar
END
HReadNext(DB_Inv_Inversion,IdDB_Inv_Contrato)
END
//info("terminé xml")
IF miEci.eci.movimientos..Occurrence > 0 OR miEci.eci.actual..Occurrence > 0 THEN
IF XMLValidDocument(miEci) = True THEN
sResultado = XMLBuildString(miEci)
HReset(DB_Inv_Eci)
DB_Inv_Eci.IdDB_Inv_eci = GP_DameIdentificador()
DB_Inv_Eci.IdDB_Inv_Contrato= gsIdDB_Inv_Contrato
DB_Inv_Eci.Contenido = sResultado
DB_Inv_Eci.Año = gnAño
DB_Inv_Eci.Mes = gnMes
IF HSave(DB_Inv_Eci) = True THEN
//info("guardado")
END
//Ahora guardo el archivo para poder timbrarlo
IF ErrorOccurred = True THEN
Error("No se pudo grabar el documento", ErrorInfo())
ELSE
//Info("OK")
END
ELSE
Error("El documento XML es inválido", ErrorInfo())
END
END
RESULT sResultado
lunes, 23 de agosto de 2021
Crear XML a partir de un XSD
Suscribirse a:
Entradas (Atom)
Try catch end
// -------------------------------------------------- // Procedure principal que executa uma query com tratamento de exceção // -----------...
-
Una guía paso a paso para los perplejos: Presione la tecla de Windows Escribe " intl.cpl " y presiona Enter....
-
MyWorksheet is xlsDocument xlsAddWorksheet(MyWorksheet, "R04_C-0451") //MyWorksheet = xlsOpen(sNombreArchivoXLS, xlsWrite) ...
-
Copiado del blog de mi amigo Francisco Carabez En caso de que no se cuenta con la contraseña del HFSQL Control Center: Respalda o copia e...