private List <ImpuestoType> ImpuestoFactura(ComprobanteElectronicoCRI value, int numeroLinea)
        {
            List <ImpuestoType> detalleImpuesto = new List <ImpuestoType>();

            if (value.ListaComprobanteElectronicoCRIDetalle[numeroLinea].ListaComprobanteElectronicoCRIDetalleImpuesto.Count == 0)
            {
                return(detalleImpuesto);
            }
            for (int n = 0; n <= value.ListaComprobanteElectronicoCRIDetalle[numeroLinea].ListaComprobanteElectronicoCRIDetalleImpuesto.Count - 1; n++)
            {
                ImpuestoType lineaImpuesto = new ImpuestoType
                {
                    Codigo      = (ImpuestoTypeCodigo)Enum.Parse(typeof(ImpuestoTypeCodigo), value.ListaComprobanteElectronicoCRIDetalle[numeroLinea].ListaComprobanteElectronicoCRIDetalleImpuesto[n].Codigo),//Codigo del Impuesto
                    Tarifa      = value.ListaComprobanteElectronicoCRIDetalle[numeroLinea].ListaComprobanteElectronicoCRIDetalleImpuesto[n].Tarifa.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture),
                    Monto       = value.ListaComprobanteElectronicoCRIDetalle[numeroLinea].ListaComprobanteElectronicoCRIDetalleImpuesto[n].Monto.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture),
                    Exoneracion = new ExoneracionType
                    {
                        TipoDocumento     = (ExoneracionTypeTipoDocumento)Enum.Parse(typeof(ExoneracionTypeTipoDocumento), value.ListaComprobanteElectronicoCRIDetalle[numeroLinea].ListaComprobanteElectronicoCRIDetalleImpuesto[n].ExoneracionTipoDocumento),
                        NumeroDocumento   = value.ListaComprobanteElectronicoCRIDetalle[numeroLinea].ListaComprobanteElectronicoCRIDetalleImpuesto[n].ExoneracionNumeroDocumento,
                        NombreInstitucion = value.ListaComprobanteElectronicoCRIDetalle[numeroLinea].ListaComprobanteElectronicoCRIDetalleImpuesto[n].ExoneracionNombreInstitucion,
                        FechaEmision      = value.ListaComprobanteElectronicoCRIDetalle[numeroLinea].ListaComprobanteElectronicoCRIDetalleImpuesto[n].ExoneracionFechaEmision,
                        MontoImpuesto     = value.ListaComprobanteElectronicoCRIDetalle[numeroLinea].ListaComprobanteElectronicoCRIDetalleImpuesto[n].ExoneracionMontoImpuesto.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture),
                        PorcentajeCompra  = value.ListaComprobanteElectronicoCRIDetalle[numeroLinea].ListaComprobanteElectronicoCRIDetalleImpuesto[n].ExoneracionPorcentajeCompra.ToString()
                    }
                };
                detalleImpuesto.Add(lineaImpuesto);
            }
            return(detalleImpuesto);
        }
Esempio n. 2
0
        //METODO PARA CREAR DOCUMENTOS ELECTRONICOS DE PRUEBA (Factura, NotaDebito , NotaCredito,TiqueteElectronico ) - NO ES NESESARIO DENTRO DEL PROYECTO
        public bool CrearDocumentoElectronico(ComprobanteElectronicoCRI objComprobanteElectronicoCRI, string tipoDocumento)
        {
            bool resultado = false;

            try
            {
                EngineDocumentoXml MetodoCrear  = new EngineDocumentoXml();
                XmlDocument        documentoXml = new XmlDocument();
                documentoXml = MetodoCrear.CrearDocumentoXml(objComprobanteElectronicoCRI, tipoDocumento);
                documentoXml.Save(@"C:\Users\Public\Documents\" + MetodoCrear.NombreDocumentoXml(documentoXml));
                resultado = true;
            }
            catch (Exception ex)
            {
                throw new Exception("Error en metodo CrearDocumentoElectronico ", ex);
            }
            return(resultado);
        }
        private List <FacturaElectronicaLineaDetalle> DetalleFactura(ComprobanteElectronicoCRI value)
        {
            List <FacturaElectronicaLineaDetalle> detalleServicio = new List <FacturaElectronicaLineaDetalle>();

            for (int i = 0; i <= value.ListaComprobanteElectronicoCRIDetalle.Count - 1; i++)
            {
                if (i > 999)
                {
                    return(detalleServicio);
                }
                FacturaElectronicaLineaDetalle linea = new FacturaElectronicaLineaDetalle
                {
                    NumeroLinea = value.ListaComprobanteElectronicoCRIDetalle[i].NumeroLinea.ToString(),
                    Codigo      = new CodigoType[]
                    {
                        new CodigoType
                        {
                            Tipo   = (CodigoTypeTipo)Enum.Parse(typeof(CodigoTypeTipo), value.ListaComprobanteElectronicoCRIDetalle[i].TipoCodigo),
                            Codigo = value.ListaComprobanteElectronicoCRIDetalle[i].Codigo
                        }
                    },

                    Cantidad              = value.ListaComprobanteElectronicoCRIDetalle[i].Cantidad.ToString(EngineData.decimalFormat3, CultureInfo.InvariantCulture),// 13 enteros 3 decimales
                    UnidadMedida          = (UnidadMedidaType)Enum.Parse(typeof(UnidadMedidaType), value.ListaComprobanteElectronicoCRIDetalle[i].UnidadMedida),
                    UnidadMedidaComercial = value.ListaComprobanteElectronicoCRIDetalle[i].UnidadMedidaComercial,
                    Detalle                 = value.ListaComprobanteElectronicoCRIDetalle[i].Detalle,
                    PrecioUnitario          = value.ListaComprobanteElectronicoCRIDetalle[i].PrecioUnitario.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), //13enteros 5 decimales
                    MontoTotal              = value.ListaComprobanteElectronicoCRIDetalle[i].MontoTotal.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture),     //cantidad * precioUnitario 13enteros 5 decimales
                    MontoDescuento          = value.ListaComprobanteElectronicoCRIDetalle[i].MontoDescuento.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), //13enteros 5 decimales
                    MontoDescuentoSpecified = EngineDocumento.InsertFieldBoolCantidad(value.ListaComprobanteElectronicoCRIDetalle[i].MontoDescuento),
                    NaturalezaDescuento     = value.ListaComprobanteElectronicoCRIDetalle[i].NaturalezaDescuento,
                    SubTotal                = value.ListaComprobanteElectronicoCRIDetalle[i].SubTotal.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture),//montoTotal - montoDescuento

                    Impuesto = ImpuestoFactura(value, value.ListaComprobanteElectronicoCRIDetalle[i].NumeroLinea - 1).ToArray(),

                    MontoTotalLinea = value.ListaComprobanteElectronicoCRIDetalle[i].MontoTotalLinea.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture)
                };

                detalleServicio.Add(linea);
            }

            return(detalleServicio);
        }
Esempio n. 4
0
        //METODO PARA CREAR , FIRMAR Y ENVIAR DOCUMENTOS ELECTRONICOS EMITIDOS (Factura, NotaDebito , NotaCredito,TiqueteElectronico )
        public async Task <string> EnviarDocumentoPost(string accessToken, ComprobanteElectronicoCRI objComprobanteElectronicoCRI, string tipoDocumento)
        {
            urlValidacion = string.Empty;
            string             jsonDocumento = string.Empty;
            EngineDocumentoXml MetodoCrear   = new EngineDocumentoXml();
            XmlDocument        documentoXml  = new XmlDocument();

            documentoXml = MetodoCrear.CrearDocumentoXml(objComprobanteElectronicoCRI, tipoDocumento);
            FirmaXadesEpes MetodoFirmar = new FirmaXadesEpes();

            documentoXml = MetodoFirmar.XadesEpesFirma(documentoXml, Valor.PathCertificadoNeo(), Valor.PinCertificadoNeo()); // DATOS DEL CERTIFICADO DEL EMISOR DEL DOCUMENTO
            //documentoXml = MetodoFirmar.XadesEpesFirma(documentoXml, Valor.PathCertificadoByron(), Valor.PinCertificadoByron());

            CreadorComprobante ComprobanteXml     = new CreadorComprobante();
            string             tipoEmisorNumero   = Valor.TipoEmisor().Substring(Valor.TipoEmisor().Length - 2, 2);//Quito la palabra Item al TipoEmisor
            string             tipoReceptorNumero = objComprobanteElectronicoCRI.ComprobanteElectronicoCRIEntidadJuridicaReceptor.TipoIdentificacion.Substring(objComprobanteElectronicoCRI.ComprobanteElectronicoCRIEntidadJuridicaReceptor.TipoIdentificacion.Length - 2, 2);

            jsonDocumento = ComprobanteXml.CadenaComprobante(objComprobanteElectronicoCRI.Clave, objComprobanteElectronicoCRI.NumeroConsecutivo, tipoEmisorNumero, Valor.NumeroIdentificacionEmisor(), tipoEmisorNumero, objComprobanteElectronicoCRI.ComprobanteElectronicoCRIEntidadJuridicaReceptor.Identificacion, documentoXml);

            HttpClient client = new HttpClient();

            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(EngineData.application_json));
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(EngineData.bearer, accessToken);
            HttpResponseMessage response = await client.PostAsync(Valor.UrlEnvioDocumento(), new StringContent(jsonDocumento, Encoding.UTF8, EngineData.application_json));

            if (response.IsSuccessStatusCode)
            {
                urlValidacion = response.Headers.Location.ToString();
            }
            else
            {
                urlValidacion = EngineData.falso;
            }

            return(urlValidacion);
        }
Esempio n. 5
0
        private void button4_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = string.Empty;
            if (chkFactura.Checked)
            {
                tipoDocumento = "FacturaElectronica"; nombreArchivoXml = "FacturaElectronica.xml";
            }
            else if (chkNotaDebito.Checked)
            {
                tipoDocumento = "NotaDebitoElectronica"; nombreArchivoXml = "NotaDebitoElectronica.xml";
            }
            else if (chkNotaCredito.Checked)
            {
                tipoDocumento = "NotaCreditoElectronica"; nombreArchivoXml = "NotaCreditoElectronica.xml";
            }
            else if (chkTicket.Checked)
            {
                tipoDocumento = "TiqueteElectronico"; nombreArchivoXml = "TiqueteElectronico.xml";
            }
            else
            {
                MessageBox.Show("Debe elegir un tipo de documento"); return;
            }

            ComprobanteElectronicoCRI objComprobanteElectronicoCRI = new ComprobanteElectronicoCRI();

            TributarioCr.EngineDocumentoXml Metodo = new TributarioCr.EngineDocumentoXml();
            objComprobanteElectronicoCRI = Metodo.ObjComprobanteElectronicoCRI(tipoDocumento);
            if (ConsumoApi.CrearDocumentoElectronico(objComprobanteElectronicoCRI, tipoDocumento))
            {
                MessageBox.Show("Documento " + tipoDocumento + " creado satisfactoriamente");
            }
            else
            {
                MessageBox.Show("El documento " + tipoDocumento + " no pudo ser creado");
            }
        }
        private List <FacturaElectronicaInformacionReferencia> InformacionReferenciaFactura(ComprobanteElectronicoCRI value)
        {
            List <FacturaElectronicaInformacionReferencia> informacionReferencia = new List <FacturaElectronicaInformacionReferencia>();

            for (int i = 0; i <= value.ListaComprobanteElectronicoCRIDetalle.Count - 1; i++)
            {
                if (i > 9)
                {
                    return(informacionReferencia);
                }
                FacturaElectronicaInformacionReferencia lineaReferencia = new FacturaElectronicaInformacionReferencia
                {
                    TipoDoc      = (FacturaElectronicaInformacionReferenciaTipoDoc)Enum.Parse(typeof(FacturaElectronicaInformacionReferenciaTipoDoc), value.InformacionReferenciaTipoDocumento),
                    Numero       = value.InformacionReferenciaNumero,
                    FechaEmision = value.InformacionReferenciaFechaEmision,
                    Codigo       = (FacturaElectronicaInformacionReferenciaCodigo)Enum.Parse(typeof(FacturaElectronicaInformacionReferenciaCodigo), value.InformacionReferenciaCodigo),
                    Razon        = value.InformacionReferenciaRazon
                };
            }
            return(informacionReferencia);
        }
        public FacturaElectronica CrearEstructuraFactura(ComprobanteElectronicoCRI value)
        {
            FacturaElectronica FacturaElectronica = new FacturaElectronica()
            {
                Clave             = value.Clave,
                NumeroConsecutivo = value.NumeroConsecutivo,
                FechaEmision      = value.FechaEmision,

                Emisor = new EmisorType
                {
                    Nombre         = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.Nombre,
                    Identificacion = new IdentificacionType
                    {
                        Numero = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.Identificacion,
                        Tipo   = (IdentificacionTypeTipo)Enum.Parse(typeof(IdentificacionTypeTipo), value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.TipoIdentificacion)
                    },
                    NombreComercial = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.NombreComercial,
                    Ubicacion       = new UbicacionType
                    {
                        Provincia  = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoProvincia,
                        Canton     = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoCanton,
                        Distrito   = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoDistrito,
                        Barrio     = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoBarrio,
                        OtrasSenas = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.OtrasSennas
                    },
                    Telefono = new TelefonoType
                    {
                        CodigoPais  = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoPaisTelefono,
                        NumTelefono = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.NumeroTelefono
                    },
                    Fax = new TelefonoType
                    {
                        CodigoPais  = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CodigoPaisFax,
                        NumTelefono = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.NumeroFax
                    },
                    CorreoElectronico = value.ComprobanteElectronicoCRIEntidadJuridicaEmisor.CorreoElectronico
                },
                // FIN EMISOR

                Receptor = new ReceptorType
                {
                    Nombre         = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.Nombre,
                    Identificacion = new IdentificacionType
                    {
                        Numero = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.Identificacion,
                        Tipo   = (IdentificacionTypeTipo)Enum.Parse(typeof(IdentificacionTypeTipo), value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.TipoIdentificacion)
                    },
                    IdentificacionExtranjero = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.IdentificacionExtranjero,
                    NombreComercial          = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.NombreComercial,
                    Ubicacion = new UbicacionType
                    {
                        Provincia  = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoProvincia,
                        Canton     = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoCanton,
                        Distrito   = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoDistrito,
                        Barrio     = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoBarrio,
                        OtrasSenas = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.OtrasSennas
                    },
                    Telefono = new TelefonoType
                    {
                        CodigoPais  = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoPaisTelefono,
                        NumTelefono = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.NumeroTelefono
                    },
                    Fax = new TelefonoType
                    {
                        CodigoPais  = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CodigoPaisFax,
                        NumTelefono = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.NumeroFax
                    },
                    CorreoElectronico = value.ComprobanteElectronicoCRIEntidadJuridicaReceptor.CorreoElectronico
                },
                // FIN RECEPTOR

                CondicionVenta = (FacturaElectronicaCondicionVenta)Enum.Parse(typeof(FacturaElectronicaCondicionVenta), value.CondicionVenta),
                PlazoCredito   = value.PlazoCredito,
                MedioPago      = new FacturaElectronicaMedioPago[] { (FacturaElectronicaMedioPago)Enum.Parse(typeof(FacturaElectronicaMedioPago), value.MedioPago) },
                // FIN INFORMACON DE LA VENTA

                DetalleServicio = DetalleFactura(value).ToArray(), //DETALLE DE LA FACTURA

                ResumenFactura = new FacturaElectronicaResumenFactura()
                {
                    CodigoMoneda                     = (FacturaElectronicaResumenFacturaCodigoMoneda)Enum.Parse(typeof(FacturaElectronicaResumenFacturaCodigoMoneda), 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 DE LA FACTURA

                /* InformacionReferencia = new FacturaElectronicaInformacionReferencia[]
                 * {
                 *  new FacturaElectronicaInformacionReferencia
                 *  {
                 *    TipoDoc = (FacturaElectronicaInformacionReferenciaTipoDoc)Enum.Parse(typeof(FacturaElectronicaInformacionReferenciaTipoDoc), value.InformacionReferenciaTipoDocumento),
                 *    Numero = value.InformacionReferenciaNumero,
                 *    FechaEmision = value.InformacionReferenciaFechaEmision,
                 *    Codigo = (FacturaElectronicaInformacionReferenciaCodigo)Enum.Parse(typeof(FacturaElectronicaInformacionReferenciaCodigo), value.InformacionReferenciaCodigo),
                 *    Razon = value.InformacionReferenciaRazon
                 *  }
                 * },*/
                //FIN REFERENCIA DE LA FACTURA

                Normativa = new FacturaElectronicaNormativa
                {
                    NumeroResolucion = value.NumeroResolucion,
                    FechaResolucion  = value.FechaResolucion
                },
                //FIN NORMATIVA DE LA FACTURA

                Otros = new FacturaElectronicaOtros
                {
                    OtroTexto = new FacturaElectronicaOtrosOtroTexto[]
                    {
                        new FacturaElectronicaOtrosOtroTexto
                        {
                            codigo = value.OtrosCodigo,
                            Value  = value.OtrosOtroTexto
                        }
                    },

                    /*OtroContenido = new FacturaElectronicaOtrosOtroContenido[]
                     * {
                     *    new FacturaElectronicaOtrosOtroContenido
                     *    {
                     *      codigo ="obs",
                     *    }
                     * }*/
                } // FIN OTROS CONTENIDOS
            };// FIN DE LA FACTURA

            return(FacturaElectronica);
        }
Esempio n. 8
0
        private async void MetodoConsumo()
        {
            try
            {
                switch (paso)
                {
                case 1:
                    tokenAccess = await ConsumoApi.ObtenerAutentificacionPost();

                    if (tokenAccess != string.Empty && tokenAccess != "false")
                    {
                        Mostrar(tokenAccess);
                        paso++;
                        timer1.Start();
                    }
                    else
                    {
                        MessageBox.Show("ERROR OBTENIENDO AUTENTIFICACION");
                    }
                    break;

                case 2:
                    ComprobanteElectronicoCRI       objComprobanteElectronicoCRI = new ComprobanteElectronicoCRI();
                    TributarioCr.EngineDocumentoXml Metodo = new TributarioCr.EngineDocumentoXml();
                    objComprobanteElectronicoCRI = Metodo.ObjComprobanteElectronicoCRI(tipoDocumento);
                    urlValidacion = await ConsumoApi.EnviarDocumentoPost(tokenAccess, objComprobanteElectronicoCRI, tipoDocumento);

                    if (urlValidacion != string.Empty && urlValidacion != "false")
                    {
                        Mostrar(urlValidacion);
                        paso++;
                        timer1.Start();
                    }
                    else
                    {
                        MessageBox.Show("ERROR ENVIANDO DOCUMENTO");
                    }
                    break;

                case 3:
                    ConsumidorApi.Validacion validacion = new ConsumidorApi.Validacion();
                    validacion = await ConsumoApi.ValidarDocumentoGet(urlValidacion, tokenAccess);

                    Mostrar(validacion.IndEstado);
                    Mostrar(validacion.RespuestaXml);
                    Mostrar(Comprobante.DecodeBase64(validacion.RespuestaXml));
                    paso++;
                    timer1.Start();
                    break;

                case 4:
                    desconexion = await ConsumoApi.DeconexionGet(tokenAccess);

                    Mostrar(desconexion);
                    paso = 0;
                    timer1.Stop();
                    break;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        public ComprobanteElectronicoCRI ObjComprobanteElectronicoCRI(string tipoDocumento)
        {
            this.clave             = MCodigo.Clave(tipoDocumento, EngineData.msjEmisor);
            this.numeroConsecutivo = MCodigo.NumeroConsecutivo(tipoDocumento);
            this.fechaEmision      = Convert.ToDateTime(DateTime.UtcNow.ToString(EngineData.dateFormat));

            //***************************************************************************************************

            EngineData Valor = EngineData.Instance();
            List <ComprobanteElectronicoCRIDetalle> Detalle = new List <ComprobanteElectronicoCRIDetalle>();
            ComprobanteElectronicoCRI value = new ComprobanteElectronicoCRI
            {
                //ENCABEZADO
                Clave             = this.clave,
                NumeroConsecutivo = this.numeroConsecutivo,
                FechaEmision      = fechaEmision,
                //EMISOR
                ComprobanteElectronicoCRIEntidadJuridicaEmisor = new ComprobanteElectronicoCRIEntidadJuridica
                {
                    Nombre             = Valor.NombreEmisor(),
                    Identificacion     = Valor.NumeroIdentificacionEmisor(),
                    TipoIdentificacion = Valor.TipoEmisor(),
                    NombreComercial    = Valor.NombreEmisor(),
                    CodigoProvincia    = Valor.ProvinciaEmisor(),
                    CodigoCanton       = Valor.CantonEmisor(),
                    CodigoDistrito     = Valor.DistritoEmisor(),
                    CodigoBarrio       = Valor.BarrioEmisor(),
                    OtrasSennas        = Valor.OtrasSenasEmisor(),
                    CodigoPaisTelefono = Valor.CodigoPaisEmisor(),
                    NumeroTelefono     = Valor.TelefonoEmisor(),
                    CodigoPaisFax      = Valor.CodigoPaisEmisor(),
                    NumeroFax          = Valor.FaxEmisor(),
                    CorreoElectronico  = Valor.EmailEmisor()

                                         /* Nombre = "Byron Alejandro Rojas Burgos",
                                          * Identificacion = "303970663",
                                          * TipoIdentificacion = "Item01",
                                          * NombreComercial = "Byron Alejandro Rojas Burgos",
                                          * CodigoProvincia = "3",
                                          * CodigoCanton = "01",
                                          * CodigoDistrito = "11",
                                          * CodigoBarrio = "01",
                                          * OtrasSennas = "Condominio ALBACETE, casa 29A",
                                          * CodigoPaisTelefono = "506",
                                          * NumeroTelefono = "40701590",
                                          * CodigoPaisFax = "506",
                                          * NumeroFax = "40701590",
                                          * CorreoElectronico = "*****@*****.**"*/
                },
                //RECEPTOR
                ComprobanteElectronicoCRIEntidadJuridicaReceptor = new ComprobanteElectronicoCRIEntidadJuridica
                {
                    Nombre             = "Dental Care",
                    Identificacion     = "3001123208",
                    TipoIdentificacion = "Item02",
                    NombreComercial    = "Dental Care",
                    CodigoProvincia    = "1",
                    CodigoCanton       = "01",
                    CodigoDistrito     = "01",
                    CodigoBarrio       = "01",
                    OtrasSennas        = "Amon",
                    CodigoPaisTelefono = "506",
                    NumeroTelefono     = "40701590",
                    CodigoPaisFax      = "506",
                    NumeroFax          = "40701590",
                    CorreoElectronico  = "*****@*****.**"

                                         /*Nombre = Valor.NombreReceptor(),
                                          * Identificacion = Valor.NumeroIdentificacionReceptor(),
                                          * TipoIdentificacion = Valor.TipoReceptor(),
                                          * NombreComercial = Valor.NombreReceptor(),
                                          * CodigoProvincia = Valor.ProvinciaReceptor(),
                                          * CodigoCanton = Valor.CantonReceptor(),
                                          * CodigoDistrito = Valor.DistritoReceptor(),
                                          * CodigoBarrio = Valor.BarrioReceptor(),
                                          * OtrasSennas = Valor.OtrasSenasReceptor(),
                                          * CodigoPaisTelefono = Valor.CodigoPaisReceptor(),
                                          * NumeroTelefono = Valor.TelefonoReceptor(),
                                          * CodigoPaisFax = Valor.CodigoPaisReceptor(),
                                          * NumeroFax = Valor.FaxReceptor(),
                                          * CorreoElectronico = Valor.EmailReceptor()*/
                },
                //INFORMACION DE LA VENTA
                CondicionVenta = "Item01",
                PlazoCredito   = "",
                MedioPago      = "Item01",
                //DETALLE
                ListaComprobanteElectronicoCRIDetalle = DetalleDocumento(Detalle),
                //RESUMEN
                CodigoMoneda            = "CRC",
                TipoCambio              = 1,
                TotalServGravados       = 97000.6M / 2,
                TotalServExentos        = 0,
                TotalMercanciasGravadas = 97000.6M / 2,
                TotalMercanciasExentas  = 0,
                TotalGravado            = 97000.6M,       // TotalServGravado + TotalMercanciasGravadas
                TotalExento             = 0,
                TotalVenta              = 97000.6M,       // TotalGravado + TotalExcento

                TotalDescuentos  = 0,                     //Sumatoria de los descuentos
                TotalVentaNeta   = 97000.6M,              //TotalVenta - TotalDescuentos
                TotalImpuesto    = 9750 + 2860.078M,      // Sumatoria Impuestos
                TotalComprobante = 97000.6M + 12610.078M, // TotalVentaNeta + MontoTotalImpuesto
                //REFERENCIA
                InformacionReferenciaTipoDocumento = "Item01",
                InformacionReferenciaNumero        = this.numeroConsecutivo, //string 50
                InformacionReferenciaFechaEmision  = this.fechaEmision,
                InformacionReferenciaCodigo        = "Item01",
                InformacionReferenciaRazon         = "Descripcion del Codigo Utilizado",
                //NORMATIVA
                NumeroResolucion = Valor.ResolucionFactura(),
                FechaResolucion  = Valor.FechaResolucionFactura(),
                //OTROS
                OtrosCodigo    = "OTRO CODIGO",
                OtrosOtroTexto = "VALOR DEL OTRO CODIGO"
            };

            return(value);
        }
        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);
        }