Exemplo n.º 1
0
        public static enviarDocumentoDispape.felRespuestaEnvio EnviarFactura(DataTable Fac, DataTable impFactura, string wsURL)
        {
            DateTime _createdDate;

            _createdDate      = DateTime.Now;
            Procesos.dateSend = _createdDate;
            try
            {
                Procesos.EscribirLogFileTXT("envioFacturaRespuestaDTO: Inicio");
                string urlServicio;
                urlServicio = wsURL;

                enviarDocumentoDispape.enviarDocumentoResponse response  = new enviarDocumentoDispape.enviarDocumentoResponse();
                enviarDocumentoDispape.felRespuestaEnvio       respuesta = new enviarDocumentoDispape.felRespuestaEnvio();
                enviarDocumentoDispape.felCabezaDocumento      Factura   = new enviarDocumentoDispape.felCabezaDocumento();
                enviarDocumentoDispape.WsEnviarDocumentoClient clienteServicio;

                clienteServicio = new enviarDocumentoDispape.WsEnviarDocumentoClient(ObtenerBindingsHttps(), new EndpointAddress(urlServicio));
                using (new OperationContextScope(clienteServicio.InnerChannel))
                {
                    //Add SOAP Header (Header property in the envelope) to an outgoing request.

                    HttpRequestMessageProperty requestMessage = new HttpRequestMessageProperty();
                    requestMessage.Headers["username"] = Procesos.username;
                    requestMessage.Headers["password"] = Procesos.password;
                    requestMessage.Headers["token"]    = Procesos.token;

                    OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = requestMessage;

                    int i           = 0;
                    int NumDetalles = Fac.Rows.Count;

                    Factura.idEmpresa                 = 233;
                    Factura.idEmpresaSpecified        = true;
                    Factura.usuario                   = Procesos.username;
                    Factura.contrasenia               = Procesos.password;
                    Factura.token /*tokenempresa*/    = Procesos.token;
                    Factura.version                   = Procesos.Buscar_ValorCab("version", i, Fac);
                    Factura.tipodocumento             = Procesos.Buscar_ValorCab("tipodocumento", i, Fac);
                    Factura.prefijo                   = Procesos.Buscar_ValorCab("prefijo", i, Fac);
                    Factura.consecutivo               = Convert.ToInt32(Procesos.Buscar_ValorCab("consecutivo", i, Fac));
                    Factura.fechafacturacion          = Convert.ToDateTime(Procesos.Buscar_ValorCab("fechafacturacion", i, Fac));
                    Factura.fechafacturacionSpecified = true;
                    Factura.codigoPlantillaPdf        = Convert.ToInt32(Procesos.Buscar_ValorCab("codigoPlantillaPdf", i, Fac));
                    Factura.cantidadLineas            = NumDetalles;
                    Factura.tiponota                  = Procesos.Buscar_ValorCab("tiponota", i, Fac);
                    Factura.aplicafel                 = Procesos.Buscar_ValorCab("aplicafel", i, Fac);
                    Factura.tipoOperacion             = Procesos.Buscar_ValorCab("tipoOperacion", i, Fac);

                    enviarDocumentoDispape.felPagos pago = new enviarDocumentoDispape.felPagos();
                    pago.moneda                         = Procesos.Buscar_ValorCab("moneda", i, Fac);
                    pago.totalimportebruto              = Convert.ToDouble(Procesos.Buscar_ValorCab("totalimportebruto", i, Fac));
                    pago.totalimportebrutoSpecified     = true;
                    pago.totalbaseimponible             = Convert.ToDouble(Procesos.Buscar_ValorCab("totalbaseimponible", i, Fac));
                    pago.totalbaseimponibleSpecified    = true;
                    pago.totalbaseconimpuestos          = Convert.ToDouble(Procesos.Buscar_ValorCab("totalbaseconimpuestos", i, Fac));
                    pago.totalbaseconimpuestosSpecified = true;
                    pago.totalfactura                   = Convert.ToDouble(Procesos.Buscar_ValorCab("totalfactura", i, Fac));
                    pago.totalfacturaSpecified          = true;
                    pago.pagoanticipado                 = Convert.ToDouble(Procesos.Buscar_ValorCab("pagoanticipado", i, Fac));
                    pago.pagoanticipadoSpecified        = true;
                    pago.tipocompra                     = Convert.ToInt32(Procesos.Buscar_ValorCab("tipocompra", i, Fac));
                    pago.periododepagoa                 = Convert.ToInt32(Procesos.Buscar_ValorCab("periododepagoa", i, Fac));
                    pago.periododepagoaSpecified        = true;
                    pago.fechavencimiento               = Convert.ToDateTime(Procesos.Buscar_ValorCab("fechavencimiento", i, Fac));
                    pago.fechavencimientoSpecified      = true;
                    Factura.pago                        = pago;

                    enviarDocumentoDispape.felDetalleDocumento[] Factura_Detalles = new enviarDocumentoDispape.felDetalleDocumento[NumDetalles];
                    i = 0;
                    if (Fac.Rows.Count > 0)
                    {
                        foreach (DataRow _row in Fac.Rows)
                        {
                            enviarDocumentoDispape.felDetalleDocumento LineaDetalle = new enviarDocumentoDispape.felDetalleDocumento();
                            LineaDetalle.codigoproducto     = Procesos.Buscar_ValorCab("codigoproducto", i, Fac);
                            LineaDetalle.tipocodigoproducto = Procesos.Buscar_ValorCab("tipocodigoproducto", i, Fac);
                            LineaDetalle.nombreProducto     = Procesos.Buscar_ValorCab("nombreProducto", i, Fac);
                            LineaDetalle.descripcion        = Procesos.Buscar_ValorCab("descripcionLine", i, Fac);
                            LineaDetalle.referencia         = Procesos.Buscar_ValorCab("referencia", i, Fac);
                            LineaDetalle.cantidad           = Convert.ToDouble(Procesos.Buscar_ValorCab("cantidad", i, Fac));
                            LineaDetalle.cantidadSpecified  = true;
                            LineaDetalle.unidadmedida       = Convert.ToString(Procesos.Buscar_ValorCab("unidadmedida", i, Fac));
                            LineaDetalle.valorunitario      = Convert.ToDouble(Procesos.Buscar_ValorCab("valorunitario", i, Fac));
                            LineaDetalle.preciosinimpuestos = Convert.ToDouble(Procesos.Buscar_ValorCab("preciosinimpuestos", i, Fac));
                            LineaDetalle.preciototal        = Convert.ToDouble(Procesos.Buscar_ValorCab("preciototal", i, Fac));
                            LineaDetalle.tipoImpuesto       = Convert.ToInt32(Procesos.Buscar_ValorCab("tipoImpuesto", i, Fac));
                            Factura_Detalles[i]             = LineaDetalle;
                            i++;
                        }
                        Factura.listaDetalle = Factura_Detalles;
                    }

                    int NumImpuestos = impFactura.Rows.Count;
                    enviarDocumentoDispape.felImpuesto[] Factura_Impuestos = new enviarDocumentoDispape.felImpuesto[NumImpuestos];

                    i = 0;
                    if (impFactura.Rows.Count > 0)
                    {
                        foreach (DataRow _row in impFactura.Rows)
                        {
                            enviarDocumentoDispape.felImpuesto LineaImpuestos = new enviarDocumentoDispape.felImpuesto();
                            LineaImpuestos.codigoImpuestoRetencion = Procesos.Buscar_ValorCab("codigoImpuestoRetencion", i, impFactura);
                            LineaImpuestos.porcentaje                      = Convert.ToDouble(Procesos.Buscar_ValorCab("porcentaje", i, impFactura));
                            LineaImpuestos.porcentajeSpecified             = true;
                            LineaImpuestos.valorImpuestoRetencion          = Convert.ToDouble(Procesos.Buscar_ValorCab("valorImpuestoRetencion", i, impFactura));
                            LineaImpuestos.valorImpuestoRetencionSpecified = true;
                            LineaImpuestos.baseimponible                   = Convert.ToDouble(Procesos.Buscar_ValorCab("baseimponible", i, impFactura));
                            LineaImpuestos.baseimponibleSpecified          = true;
                            LineaImpuestos.isAutoRetenido                  = Convert.ToBoolean(Procesos.Buscar_ValorCab("isAutoRetenido", i, impFactura));
                            LineaImpuestos.isAutoRetenidoSpecified         = true;
                            Factura_Impuestos[i] = LineaImpuestos;
                            i++;
                        }
                        Factura.listaImpuestos = Factura_Impuestos;
                    }

                    i = 0;
                    int docBase = 1;
                    if (impFactura.Rows.Count > 0)
                    {
                        if (Procesos.Buscar_ValorCab("consecutivofacturamodificada", i, Fac) != "")
                        {
                            enviarDocumentoDispape.felFacturaModificada[] Notas_DocBase = new enviarDocumentoDispape.felFacturaModificada[docBase];
                            enviarDocumentoDispape.felFacturaModificada   LineadocBase  = new enviarDocumentoDispape.felFacturaModificada();
                            LineadocBase.consecutivoFacturaModificada    = Procesos.Buscar_ValorCab("consecutivofacturamodificada", i, Fac);
                            LineadocBase.cufeFacturaModificada           = Procesos.Buscar_ValorCab("cufefacturamodificada", i, Fac);
                            LineadocBase.fechaFacturaModificadaSpecified = true;
                            LineadocBase.fechaFacturaModificada          = DateTime.Parse(Procesos.Buscar_ValorCab("fechafacturamodificada", i, Fac));
                            Notas_DocBase[i] = LineadocBase;
                            Factura.listaFacturasModificadas = Notas_DocBase;
                        }
                    }

                    i = 0;

                    enviarDocumentoDispape.felAdquirente[] adquirentes = new enviarDocumentoDispape.felAdquirente[1];
                    enviarDocumentoDispape.felAdquirente   adquirente  = new enviarDocumentoDispape.felAdquirente();

                    adquirente.tipoPersona          = Procesos.Buscar_ValorCab("tipopersona", i, Fac);
                    adquirente.nombreCompleto       = Procesos.Buscar_ValorCab("nombreCompleto", i, Fac);
                    adquirente.tipoIdentificacion   = Convert.ToInt32(Procesos.Buscar_ValorCab("tipoidentificacion", i, Fac));
                    adquirente.numeroIdentificacion = Procesos.Buscar_ValorCab("numeroidentificacion", i, Fac);
                    adquirente.digitoverificacion   = Procesos.Buscar_ValorCab("digitoverificacion", i, Fac);
                    adquirente.regimen                 = Procesos.Buscar_ValorCab("regimen", i, Fac);
                    adquirente.email                   = Procesos.Buscar_ValorCab("email", i, Fac);
                    adquirente.pais                    = Procesos.Buscar_ValorCab("pais", i, Fac);
                    adquirente.departamento            = Procesos.Buscar_ValorCab("departamento", i, Fac);
                    adquirente.ciudad                  = Procesos.Buscar_ValorCab("codigoCiudad", i, Fac);
                    adquirente.direccion               = Procesos.Buscar_ValorCab("direccion", i, Fac);
                    adquirente.telefono                = Procesos.Buscar_ValorCab("telefono", i, Fac);
                    adquirente.envioPorEmailPlataforma = Procesos.Buscar_ValorCab("envioPorEmailPlataforma", i, Fac);
                    adquirente.tipoobligacion          = Procesos.Buscar_ValorCab("tipoobligacion", i, Fac);

                    adquirentes[i]           = adquirente;
                    Factura.listaAdquirentes = adquirentes;


                    //enviarDocumentoDispape.felDatoEntrega[] entregas = new enviarDocumentoDispape.felDatoEntrega[1];
                    //enviarDocumentoDispape.felDatoEntrega entrega = new enviarDocumentoDispape.felDatoEntrega();
                    //    entrega.direccionEntrega = Procesos.Buscar_ValorCab("direccionEntrega", i, Fac);
                    //    entrega.telefonoEntrega = Procesos.Buscar_ValorCab("telefonoEntrega", i, Fac);
                    //    entregas[i] = entrega;
                    //Factura.listaDatosEntrega = entregas;


                    enviarDocumentoDispape.felMedioPago[] mediosPago = new enviarDocumentoDispape.felMedioPago[1];
                    enviarDocumentoDispape.felMedioPago   medioPago  = new enviarDocumentoDispape.felMedioPago();
                    medioPago.medioPago      = Procesos.Buscar_ValorCab("medioPago", i, Fac);
                    mediosPago[i]            = medioPago;
                    Factura.listaMediosPagos = mediosPago;


                    Procesos.EscribirLogFileTXT("Consumo: Inicio");
                    respuesta = clienteServicio.enviarDocumento(Factura);
                    Procesos.EscribirLogFileTXT("Consumo: Fin");
                }
                var serxml = new System.Xml.Serialization.XmlSerializer(Factura.GetType());
                var ms     = new MemoryStream();
                serxml.Serialize(ms, Factura);
                string xml = Encoding.UTF8.GetString(ms.ToArray());
                Procesos.requestSend = xml;

                clienteServicio.Close();
                return(respuesta);
            }
            catch (Exception ex)
            {
                enviarDocumentoDispape.felRespuestaEnvio response = null;
                Procesos.EscribirLogFileTXT("SendDispapeles: " + ex.Message);
                return(response);
            }
        }
        public static ResponseType setDocumento(DataTable Fac, DataTable impFactura)
        {
            Procesos.responseStatus = "";
            DateTime _createdDate;

            _createdDate      = DateTime.Now;
            Procesos.dateSend = _createdDate;
            try
            {
                int i = 0;
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
                ServiceClient client    = new ServiceClient();
                DocumentType  oDocument = new DocumentType();
                ResponseType  oResponse = new ResponseType();

                SoftwareSeguridadType oSeguridad = new SoftwareSeguridadType();
                oSeguridad.TipoDocumento    = Procesos.Buscar_ValorCab("TipoDocumento", i, Fac);
                oSeguridad.GuidEmpresa      = Procesos.Buscar_ValorCab("GuidEmpresa", i, Fac);
                oSeguridad.GuidOrigen       = Procesos.Buscar_ValorCab("GuidOrigen", i, Fac);
                oSeguridad.HashSeguridad    = Procesos.Buscar_ValorCab("HashSeguridad", i, Fac);
                oSeguridad.ClaveTecnica     = Procesos.Buscar_ValorCab("ClaveTecnica", i, Fac);
                oSeguridad.CodigoErp        = Procesos.Buscar_ValorCab("CodigoErp", i, Fac);
                oSeguridad.NumeroDocumento  = Procesos.Buscar_ValorCab("NumeroDocumento", i, Fac);
                oDocument.SoftwareSeguridad = oSeguridad;

                EmisorType oEmisor = new EmisorType();
                oEmisor.EmiTipoPersona        = Convert.ToInt32(Procesos.Buscar_ValorCab("EmiTipoPersona", i, Fac));
                oEmisor.EmiTipoIdentificacion = Convert.ToInt32(Procesos.Buscar_ValorCab("EmiTipoIdentificacion", i, Fac));
                oEmisor.EmiIdentificacion     = Procesos.Buscar_ValorCab("EmiIdentificacion", i, Fac);
                oEmisor.EmiDVIdentificacion   = Procesos.Buscar_ValorCab("EmiDVIdentificacion", i, Fac);
                oDocument.EmisorData          = oEmisor;

                CompradorType oComprador = new CompradorType();
                oComprador.CompradorTipoPersona        = Procesos.Buscar_ValorCab("CompradorTipoPersona", i, Fac);
                oComprador.CompradorTipoIdentificacion = Procesos.Buscar_ValorCab("CompradorTipoIdentificacion", i, Fac);
                oComprador.CompradorIdentificacion     = Procesos.Buscar_ValorCab("CompradorIdentificacion", i, Fac);
                oComprador.CompradorDVIdentificacion   = Procesos.Buscar_ValorCab("CompradorDVIdentificacion", i, Fac);
                oComprador.CompradorTipoRegimen        = Procesos.Buscar_ValorCab("CompradorTipoRegimen", i, Fac);
                oComprador.CompradorRespFiscal         = Procesos.Buscar_ValorCab("CompradorRespFiscal", i, Fac);
                oComprador.CompradorImpuesto           = Procesos.Buscar_ValorCab("CompradorImpuesto", i, Fac);
                oComprador.CompradorRazonSocial        = Procesos.Buscar_ValorCab("CompradorRazonSocial", i, Fac);
                oComprador.CompradorPrimerNombre       = Procesos.Buscar_ValorCab("CompradorPrimerNombre", i, Fac);
                oComprador.CompradorSegundoNombre      = Procesos.Buscar_ValorCab("CompradorSegundoNombre", i, Fac);
                oComprador.CompradorApellidos          = Procesos.Buscar_ValorCab("CompradorApellidos", i, Fac);
                oComprador.CompradorNombreCompleto     = Procesos.Buscar_ValorCab("CompradorNombreCompleto", i, Fac);
                oComprador.CompradorPais              = Procesos.Buscar_ValorCab("CompradorPais", i, Fac);
                oComprador.CompradorNombrePais        = Procesos.Buscar_ValorCab("CompradorNombrePais", i, Fac);
                oComprador.CompradorDepartamento      = Procesos.Buscar_ValorCab("CompradorDepartamento", i, Fac);
                oComprador.CompradorCodDepartamento   = Procesos.Buscar_ValorCab("CompradorCodDepartamento", i, Fac);
                oComprador.CompradorCiudad            = Procesos.Buscar_ValorCab("CompradorCiudad", i, Fac);
                oComprador.CompradorCodCiudad         = Procesos.Buscar_ValorCab("CompradorCodCiudad", i, Fac);
                oComprador.CompradorCodPostal         = Procesos.Buscar_ValorCab("CompradorCodPostal", i, Fac);
                oComprador.CompradorDireccion         = Procesos.Buscar_ValorCab("CompradorDireccion", i, Fac);
                oComprador.CompradorEnviarCorreo      = Convert.ToBoolean(Procesos.Buscar_ValorCab("CompradorEnviarCorreo", i, Fac));
                oComprador.CompradorTelefonoCont      = Procesos.Buscar_ValorCab("CompradorTelefonoCont", i, Fac);
                oComprador.CompradorCorreoElectronico = Procesos.Buscar_ValorCab("CompradorCorreoElectronico", i, Fac);
                oDocument.CompradorFactura            = oComprador;

                EncabezadoType oEncabezado = new EncabezadoType();
                oEncabezado.FacTipoFactura        = Procesos.Buscar_ValorCab("FacTipoFactura", i, Fac);
                oEncabezado.FacCodOperacion       = Procesos.Buscar_ValorCab("FacCodOperacion", i, Fac);
                oEncabezado.FacFechaHoraFactura   = Procesos.Buscar_ValorCab("FacFechaHoraFactura", i, Fac);
                oEncabezado.FacFechaIni           = Procesos.Buscar_ValorCab("FacFechaIni", i, Fac);
                oEncabezado.FacFechaFin           = Procesos.Buscar_ValorCab("FacFechaFin", i, Fac);
                oEncabezado.FacRefContigencia     = Procesos.Buscar_ValorCab("FacRefContigencia", i, Fac);
                oEncabezado.FacTipoRefContigencia = Procesos.Buscar_ValorCab("FacTipoRefContigencia", i, Fac);
                oEncabezado.FacFechaContingencia  = Procesos.Buscar_ValorCab("FacFechaContingencia", i, Fac);
                oDocument.EncabezadoData          = oEncabezado;

                InfoMonetarioType oInfoMoneda = new InfoMonetarioType();
                oInfoMoneda.FacCodMoneda          = Procesos.Buscar_ValorCab("FacCodMoneda", i, Fac);
                oInfoMoneda.FacTotalImporteBruto  = Procesos.Buscar_ValorCab("FacTotalImporteBruto", i, Fac);
                oInfoMoneda.FacTotalCargos        = Procesos.Buscar_ValorCab("FacTotalCargos", i, Fac);
                oInfoMoneda.FacTotalDescuentos    = Procesos.Buscar_ValorCab("FacTotalDescuentos", i, Fac);
                oInfoMoneda.FacTotalBaseImponible = Procesos.Buscar_ValorCab("FacTotalBaseImponible", i, Fac);
                oInfoMoneda.FacTotalBrutoMasImp   = Procesos.Buscar_ValorCab("FacTotalBrutoMasImp", i, Fac);
                oInfoMoneda.FacTotalAnticipos     = Procesos.Buscar_ValorCab("FacTotalAnticipos", i, Fac);
                oInfoMoneda.FacTotalFactura       = Procesos.Buscar_ValorCab("FacTotalFactura", i, Fac);
                oDocument.InfoMonetarioData       = oInfoMoneda;

                FormaPagoType oFormaPago = new FormaPagoType();
                oDocument.lsFormaPago        = new FormaPagoType[1];
                oFormaPago.FacMetodoPago     = Procesos.Buscar_ValorCab("FacMetodoPago", i, Fac);
                oFormaPago.FacFormaPago      = Procesos.Buscar_ValorCab("FacFormaPago", i, Fac);
                oFormaPago.FacVencimientoFac = Procesos.Buscar_ValorCab("FacVencimientoFac", i, Fac);
                oDocument.lsFormaPago[0]     = oFormaPago;


                i = 0;
                if (impFactura.Rows.Count > 0)
                {
                    foreach (DataRow _row in impFactura.Rows)
                    {
                        ImpuestoType oImpuestos = new ImpuestoType();
                        oDocument.LsImpuestos          = new ImpuestoType[impFactura.Rows.Count];
                        oImpuestos.CodigoImpuesto      = Procesos.Buscar_ValorCab("CodigoImpuesto", i, impFactura);
                        oImpuestos.NombreImpuesto      = Procesos.Buscar_ValorCab("NombreImpuesto", i, impFactura);
                        oImpuestos.EsRetencionImpuesto = Convert.ToBoolean(Procesos.Buscar_ValorCab("EsRetencionImpuesto", i, impFactura));
                        oImpuestos.BaseImponible       = Procesos.Buscar_ValorCab("BaseImponible", i, impFactura);
                        oImpuestos.Porcentaje          = Procesos.Buscar_ValorCab("Porcentaje", i, impFactura);
                        oImpuestos.ValorImpuesto       = Procesos.Buscar_ValorCab("ValorImpuesto", i, impFactura);
                        oDocument.LsImpuestos[i]       = oImpuestos;
                        i++;
                    }
                }

                i = 0;
                if (Fac.Rows.Count > 0)
                {
                    foreach (DataRow _row in Fac.Rows)
                    {
                        DetalleType oDetalle = new DetalleType();
                        oDocument.LsDetalle         = new DetalleType[Fac.Rows.Count];
                        oDetalle.DetFacConsecutivo  = Convert.ToInt32(Procesos.Buscar_ValorCab("DetFacConsecutivo", i, Fac));
                        oDetalle.Codigo             = Procesos.Buscar_ValorCab("Codigo", i, Fac);
                        oDetalle.CodigoEstandar     = Procesos.Buscar_ValorCab("CodigoEstandar", i, Fac);
                        oDetalle.Codificacion       = Procesos.Buscar_ValorCab("Codificacion", i, Fac);
                        oDetalle.Descripcion        = Procesos.Buscar_ValorCab("Descripcion", i, Fac);
                        oDetalle.Cantidad           = Procesos.Buscar_ValorCab("Cantidad", i, Fac);
                        oDetalle.UnidadMedida       = Procesos.Buscar_ValorCab("UnidadMedida", i, Fac);
                        oDetalle.PrecioUnitario     = Procesos.Buscar_ValorCab("PrecioUnitario", i, Fac);
                        oDetalle.PrecioSinImpuestos = Procesos.Buscar_ValorCab("PrecioSinImpuestos", i, Fac);
                        oDetalle.PrecioTotal        = Procesos.Buscar_ValorCab("PrecioTotal", i, Fac);
                        oDocument.LsDetalle[i]      = oDetalle;
                        i++;
                    }
                }

                i = 0;
                if (Fac.Rows.Count > 0)
                {
                    foreach (DataRow _row in Fac.Rows)
                    {
                        ImpuestoDetalleType oImpuDetalle = new ImpuestoDetalleType();
                        oDocument.LsDetalleImpuesto      = new ImpuestoDetalleType[Fac.Rows.Count];
                        oImpuDetalle.Secuencia           = Convert.ToInt32(Procesos.Buscar_ValorCab("Secuencia", i, Fac));
                        oImpuDetalle.CodigoImpuesto      = Procesos.Buscar_ValorCab("CodigoImpuesto", i, Fac);
                        oImpuDetalle.NombreImpuesto      = Procesos.Buscar_ValorCab("NombreImpuesto", i, Fac);
                        oImpuDetalle.EsRetencionImpuesto = Convert.ToBoolean(Procesos.Buscar_ValorCab("EsRetencionImpuesto", i, Fac));
                        oImpuDetalle.BaseImponible       = Procesos.Buscar_ValorCab("BaseImponible", i, Fac);
                        oImpuDetalle.Porcentaje          = Procesos.Buscar_ValorCab("Porcentaje", i, Fac);
                        oImpuDetalle.ValorImpuesto       = Procesos.Buscar_ValorCab("ValorImpuesto", i, Fac);
                        oDocument.LsDetalleImpuesto[i]   = oImpuDetalle;
                        i++;
                    }
                }

                i = 0;

                AutorizacionType oAutorizacion = new AutorizacionType();
                oAutorizacion.AutFechaInicio     = Procesos.Buscar_ValorCab("AutFechaInicio", i, Fac);
                oAutorizacion.AutFechaFinal      = Procesos.Buscar_ValorCab("AutFechaFinal", i, Fac);
                oAutorizacion.AutNumAutorizacion = Procesos.Buscar_ValorCab("AutNumAutorizacion", i, Fac);
                oAutorizacion.AutPrefijo         = Procesos.Buscar_ValorCab("AutPrefijo", i, Fac);
                oAutorizacion.AutSecuenciaInicio = Procesos.Buscar_ValorCab("AutSecuenciaInicio", i, Fac);
                oAutorizacion.AutSecuenciaFinal  = Procesos.Buscar_ValorCab("AutSecuenciaFinal", i, Fac);
                oDocument.AutorizacionFactura    = oAutorizacion;

                var serxml = new System.Xml.Serialization.XmlSerializer(oDocument.GetType());
                var ms     = new MemoryStream();
                serxml.Serialize(ms, oDocument);
                string xml = Encoding.UTF8.GetString(ms.ToArray());
                Procesos.requestSend = xml;
                Procesos.EscribirLogFileTXT(xml);

                oResponse = client.SetDocument(oDocument);

                client.Close();

                return(oResponse);
            }
            catch (Exception ex)
            {
                Procesos.EscribirLogFileTXT("setDocumento: " + ex.Message);
                return(null);
            }
        }