public XmlDocument CrearDocumentoXml(ComprobanteElectronicoCRI objComprobanteElectronicoCRI, string tipoDocumento) { XmlDocument documentoXml = new XmlDocument(); XmlDeclaration xmlDeclaracion = documentoXml.CreateXmlDeclaration("1.0", "UTF-8", null); XmlElement root = documentoXml.DocumentElement; documentoXml.InsertBefore(xmlDeclaracion, root); switch (tipoDocumento) { case EngineData.facturaElectronica: CreadorFactura XmlFactura = new CreadorFactura(); FacturaElectronica Factura = new FacturaElectronica(); Factura = XmlFactura.CrearEstructuraFactura(objComprobanteElectronicoCRI); var navFactura = documentoXml.CreateNavigator(); using (writer = navFactura.AppendChild()) { var serializer = new XmlSerializer(typeof(FacturaElectronica)); serializer.Serialize(writer, Factura); } break; case EngineData.notaCreditoElectronica: CreadorNotaCredito XmlNotaCredito = new CreadorNotaCredito(); NotaCreditoElectronica NotaCredito = new NotaCreditoElectronica(); NotaCredito = XmlNotaCredito.CrearEstructuraNotaCredito(objComprobanteElectronicoCRI); var navNotaCredito = documentoXml.CreateNavigator(); using (writer = navNotaCredito.AppendChild()) { var serializer = new XmlSerializer(typeof(NotaCreditoElectronica)); serializer.Serialize(writer, NotaCredito); } break; case EngineData.notaDebitoElectronica: CreadorNotaDebito XmlNotaDebito = new CreadorNotaDebito(); NotaDebitoElectronica NotaDebito = new NotaDebitoElectronica(); NotaDebito = XmlNotaDebito.CrearEstructuraNotaDebito(objComprobanteElectronicoCRI); var navNotaDebito = documentoXml.CreateNavigator(); using (writer = navNotaDebito.AppendChild()) { var serializer = new XmlSerializer(typeof(NotaDebitoElectronica)); serializer.Serialize(writer, NotaDebito); } break; case EngineData.tiqueteElectronico: CreadorTiquete XmlTiquete = new CreadorTiquete(); TiqueteElectronico TiqueteElectronico = new TiqueteElectronico(); TiqueteElectronico = XmlTiquete.CrearEstructuraTiquete(objComprobanteElectronicoCRI); var navTiquete = documentoXml.CreateNavigator(); using (writer = navTiquete.AppendChild()) { var serializer = new XmlSerializer(typeof(TiqueteElectronico)); serializer.Serialize(writer, TiqueteElectronico); } break; } return(documentoXml); }
public TiqueteElectronico CrearEstructuraTiquete(ComprobanteElectronicoCRI value) { TiqueteElectronico TiqueteElectronico = new TiqueteElectronico() { Clave = value.Clave, NumeroConsecutivo = value.NumeroConsecutivo, FechaEmision = value.FechaEmision, Emisor = new EmisorTypeT { Nombre = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.Nombre, Identificacion = new IdentificacionTypeT { Numero = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.Identificacion, Tipo = (IdentificacionTypeTipoT)Enum.Parse(typeof(IdentificacionTypeTipoT), value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.TipoIdentificacion) }, NombreComercial = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.NombreComercial, Ubicacion = new UbicacionTypeT { Provincia = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoProvincia, Canton = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoCanton, Distrito = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoDistrito, Barrio = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoBarrio, OtrasSenas = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.OtrasSennas }, Telefono = new TelefonoTypeT { CodigoPais = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoPaisTelefono, NumTelefono = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.NumeroTelefono }, Fax = new TelefonoTypeT { CodigoPais = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoPaisFax, NumTelefono = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.NumeroFax }, CorreoElectronico = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CorreoElectronico }, // FIN EMISOR Receptor = new ReceptorTypeT { Nombre = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.Nombre, Identificacion = new IdentificacionTypeT { Numero = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.Identificacion, Tipo = (IdentificacionTypeTipoT)Enum.Parse(typeof(IdentificacionTypeTipoT), value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.TipoIdentificacion) }, IdentificacionExtranjero = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.IdentificacionExtranjero, NombreComercial = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.NombreComercial, Ubicacion = new UbicacionTypeT { Provincia = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoProvincia, Canton = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoCanton, Distrito = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoDistrito, Barrio = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoBarrio, OtrasSenas = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.OtrasSennas }, Telefono = new TelefonoTypeT { CodigoPais = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoPaisTelefono, NumTelefono = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.NumeroTelefono }, Fax = new TelefonoTypeT { CodigoPais = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoPaisFax, NumTelefono = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.NumeroFax }, CorreoElectronico = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CorreoElectronico }, // FIN RECEPTOR CondicionVenta = (TiqueteElectronicoCondicionVenta)Enum.Parse(typeof(TiqueteElectronicoCondicionVenta), value.CondicionVenta), PlazoCredito = value.PlazoCredito, MedioPago = new TiqueteElectronicoMedioPago[] { (TiqueteElectronicoMedioPago)Enum.Parse(typeof(TiqueteElectronicoMedioPago), value.MedioPago) }, // FIN INFORMACON DE LA VENTA DetalleServicio = DetalleTiquete(value).ToArray(), //DETALLE DEL TIQUETE ResumenFactura = new TiqueteElectronicoResumenFactura() { CodigoMoneda = (TiqueteElectronicoResumenFacturaCodigoMoneda)Enum.Parse(typeof(TiqueteElectronicoResumenFacturaCodigoMoneda), value.CodigoMoneda), CodigoMonedaSpecified = EngineDocumento.InsertFieldBoolCadena(value.CodigoMoneda), TipoCambio = value.TipoCambio.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), TipoCambioSpecified = EngineDocumento.InsertFieldBoolCantidad(value.TipoCambio), TotalServGravados = value.TotalServGravados.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), TotalServGravadosSpecified = EngineDocumento.InsertFieldBoolCantidad(value.TotalServGravados), TotalServExentos = value.TotalServExentos.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), TotalServExentosSpecified = EngineDocumento.InsertFieldBoolCantidad(value.TotalServExentos), TotalMercanciasGravadas = value.TotalMercanciasGravadas.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), TotalMercanciasGravadasSpecified = EngineDocumento.InsertFieldBoolCantidad(value.TotalMercanciasGravadas), TotalMercanciasExentas = value.TotalMercanciasExentas.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), TotalMercanciasExentasSpecified = EngineDocumento.InsertFieldBoolCantidad(value.TotalMercanciasExentas), TotalGravado = value.TotalGravado.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), //TotalServGravados + TotalMercanciasgravadas TotalGravadoSpecified = EngineDocumento.InsertFieldBoolCantidad(value.TotalGravado), TotalExento = value.TotalExento.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), //totalServExcento + totalMercanciasexentas TotalExentoSpecified = EngineDocumento.InsertFieldBoolCantidad(value.TotalExento), TotalVenta = value.TotalVenta.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), //totalGravado + totalExento TotalDescuentos = value.TotalDescuentos.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), // suma de todos los campos de “monto dedescuentos concedidos TotalDescuentosSpecified = EngineDocumento.InsertFieldBoolCantidad(value.TotalDescuentos), TotalVentaNeta = value.TotalVentaNeta.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), //totalVenta - totaDescuentos TotalImpuesto = value.TotalImpuesto.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), //suma de todos los campos denominados Monto del impuesto. TotalImpuestoSpecified = EngineDocumento.InsertFieldBoolCantidad(value.TotalImpuesto), TotalComprobante = value.TotalComprobante.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), //totalVentaNeta + totalImpuesto }, //FIN RESUMEN DEL TIQUETE InformacionReferencia = new TiqueteElectronicoInformacionReferencia[] { new TiqueteElectronicoInformacionReferencia { TipoDoc = (TiqueteElectronicoInformacionReferenciaTipoDoc)Enum.Parse(typeof(TiqueteElectronicoInformacionReferenciaTipoDoc), value.InformacionReferenciaTipoDocumento), Numero = value.InformacionReferenciaNumero, FechaEmision = value.InformacionReferenciaFechaEmision, Codigo = (TiqueteElectronicoInformacionReferenciaCodigo)Enum.Parse(typeof(TiqueteElectronicoInformacionReferenciaCodigo), value.InformacionReferenciaCodigo), Razon = value.InformacionReferenciaRazon } }, //FIN REFERENCIA DEL TIQUETE Normativa = new TiqueteElectronicoNormativa { NumeroResolucion = value.NumeroResolucion, FechaResolucion = value.FechaResolucion }, //FIN NORMATIVA DEL TIQUETE Otros = new TiqueteElectronicoOtros { OtroTexto = new TiqueteElectronicoOtrosOtroTexto[] { new TiqueteElectronicoOtrosOtroTexto { codigo = value.OtrosCodigo, Value = value.OtrosOtroTexto } }, /*OtroContenido = new TiqueteElectronicoOtrosOtroContenido[] * { * new TiqueteElectronicoOtrosOtroContenido * { * codigo ="obs", * } * }*/ } // FIN OTROS CONTENIDOS }; // FIN DEL TIQUETE return(TiqueteElectronico); }