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);
        }
Пример #2
0
        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);
        }