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); } }