//OT7349 FIN public string EnviarComprobante(string tipoComprobante, string serie, string numero, string codigoUsuario) { FacturacionDA da = new FacturacionDA(); ParametrosDA parametroDA = new ParametrosDA(); DataTable dt = null; string rutaApp = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); string rutaModelo = rutaApp + ConfigurationSettings.AppSettings[ConstantesING.RUTA_MODELO]; string rutaArchivo = rutaApp + ConfigurationSettings.AppSettings[ConstantesING.RUTA_ARCHIVOS]; switch (tipoComprobante) { case "01": dt = da.ObtenerFacturaParaEnvio(serie, numero); break; case "03": dt = da.ObtenerBoletaParaEnvio(serie, numero); break; case "07": dt = da.ObtenerNCParaEnvio(serie, numero); break; } string destinoCsv = rutaArchivo + ConfigurationSettings.AppSettings[tipoComprobante + "csv"]; string destinoRespuesta = rutaArchivo + ConfigurationSettings.AppSettings[tipoComprobante + "respuesta"]; string flagAfectoIGV = dt.Rows[0]["FLAG_AFECTOIGV"].ToString(); DataTable dtParametro = parametroDA.ObtenerValoresParametros(ConstantesING.TABLA_MODELO, tipoComprobante + "-" + flagAfectoIGV); string nombreArchivoModelo = dtParametro.Rows[0]["CAMPO1"].ToString(); //FileStream modelo = File.Open(rutaModelo + nombreArchivoModelo, FileMode.Open); StreamReader modelo = new StreamReader(rutaModelo + nombreArchivoModelo); string contenidoModelo = modelo.ReadToEnd(); //Reemplazando valores en el modelo string fechaEmision = dt.Rows[0]["FECHA_EMISION"].ToString(); string numeroDocumento = dt.Rows[0]["NUMERO_DOCUMENTO"].ToString(); string tipoDocumento = dt.Rows[0]["TIPO_DOCUMENTO"].ToString(); string moneda = dt.Rows[0]["MONEDA"].ToString(); string igv = Convert.ToDecimal(dt.Rows[0]["IGV"]).ToString("#0.00"); string subTotal = Convert.ToDecimal(dt.Rows[0]["VALOR_VENTA"]).ToString("#0.00"); string total = Convert.ToDecimal(dt.Rows[0]["TOTAL"]).ToString("#0.00"); string docCliente = dt.Rows[0]["DOC_CLIENTE"].ToString(); string tipoDocCliente = dt.Rows[0]["TIPO_DOC_CLIENTE"].ToString(); string razonSocial = dt.Rows[0]["RAZON_SOCIAL"].ToString(); string ubigeo = dt.Rows[0]["UBIGEO"].ToString(); string codigoPostal = dt.Rows[0]["CODIGO_POSTAL"].ToString(); string direccionCliente = dt.Rows[0]["DIRECCION_CLIENTE"].ToString(); string departamentoCliente = dt.Rows[0]["DEP_CLIENTE"].ToString(); string provinciaCliente = dt.Rows[0]["PRO_CLIENTE"].ToString(); string distritoCliente = dt.Rows[0]["DIS_CLIENTE"].ToString(); string pais = dt.Rows[0]["PAIS_CLIENTE"].ToString(); string correo = dt.Rows[0]["CORREO_CLIENTE"].ToString(); string cantidad = dt.Rows[0]["CANTIDAD"].ToString(); string descripcion = dt.Rows[0]["DESCRIPCION"].ToString(); string porcIgv = dt.Rows[0]["PORC_IGV"].ToString(); string tipoDocRelacionado = dt.Rows[0]["TIPO_DOCREL"].ToString(); //OT 8365 INI string numDocRelacionado = tipoDocRelacionado == "01" ? "F" : "B"; //OT 8365 FIN numDocRelacionado = numDocRelacionado + dt.Rows[0]["NUMERO_DOCREL"].ToString(); string tipoNC = dt.Rows[0]["TIPO_NC"].ToString(); string glosa = dt.Rows[0]["GLOSA"].ToString(); NumLetra nl = new NumLetra(); string montoTexto = nl.Convertir(dt.Rows[0]["TOTAL"].ToString(), moneda == "PEN"? "Nuevos Soles": "Dólares americanos", true, tipoDocumento); string unidad = "UN"; //OT7999 INI string montoDetraccion = string.Empty; string porcentajeDetraccion = string.Empty; string numeroBancoNancion = string.Empty; string detracMontoTotal = string.Empty; string codTabScotiabankMN = string.Empty; string codItemScotiabankMN = string.Empty; string codTabScotiabankCCI = string.Empty; string codItemScotiabankCCI = string.Empty; string cuentaScotiabankMN = string.Empty; string cuentaScotiabankCCI = string.Empty; string codTabScotiabankMNTexto = string.Empty; string codItemScotiabankMNTexto = string.Empty; string codTabScotiabankCCITexto = string.Empty; string codItemScotiabankCCITexto = string.Empty; string textoScotiabankMN = string.Empty; string textoScotiabankCCI = string.Empty; string textoCuentasScotiabank = string.Empty; /*Cargando los valores adicionales para las facturas*/ if (tipoComprobante.Equals(ConstantesING.TIPO_DOCUMENTO_FACTURA)) { double dTotal = Convert.ToDouble(dt.Rows[0]["TOTAL"]); double dDetraccion = Convert.ToDouble(dt.Rows[0]["MONTO_DETRACCION"]); if (dDetraccion != 0) //Se ha calculado la detraccion { montoDetraccion = Convert.ToDecimal(dt.Rows[0]["MONTO_DETRACCION"]).ToString("#0.00"); porcentajeDetraccion = Convert.ToDecimal(dt.Rows[0]["PORCENTAJE_DETRACCION"]).ToString("#0.00"); //Cargando el numero de banco de la nacion. string strCodigoBancoNacion = ConstantesING.CODIGO_NUMERO_BANCO_NACION; string strNumeroBancoNacion = ConstantesING.NUMERO_BANCO_NACION; DataTable dtNumeroBancoNacion = ObtenerDatosParametro(strCodigoBancoNacion, strNumeroBancoNacion); if (dtNumeroBancoNacion.Rows.Count > 0) { if (dtNumeroBancoNacion.Rows[0]["Descripcion"] != DBNull.Value) { numeroBancoNancion = dtNumeroBancoNacion.Rows[0]["Descripcion"].ToString(); } else { //se sigue procesando?? } } else { //se sigue procesando?? } double dDetracMontoTotal = dTotal - dDetraccion; detracMontoTotal = dDetracMontoTotal.ToString("#0.00"); } } if (tipoComprobante.Equals(ConstantesING.TIPO_DOCUMENTO_FACTURA) || tipoComprobante.Equals(ConstantesING.TIPO_DOCUMENTO_BOLETA)) { if (moneda == "PEN") { //soles codTabScotiabankMN = ConstantesING.CODIGO_SCOTIABANK_SOLES_MN; codItemScotiabankMN = ConstantesING.SCOTIABANK_SOLES_MN; codTabScotiabankCCI = ConstantesING.CODIGO_SCOTIABANK_SOLES_CCI; codItemScotiabankCCI = ConstantesING.SCOTIABANK_SOLES_CCI; codTabScotiabankMNTexto = ConstantesING.CODIGO_SCOTIABANK_SOLES_MN_TEXTO; codItemScotiabankMNTexto = ConstantesING.SCOTIABANK_SOLES_MN_TEXTO; codTabScotiabankCCITexto = ConstantesING.CODIGO_SCOTIABANK_SOLES_CCI_TEXTO; codItemScotiabankCCITexto = ConstantesING.SCOTIABANK_SOLES_CCI_TEXTO; } else { //dolares codTabScotiabankMN = ConstantesING.CODIGO_SCOTIABANK_DOLARES_MN; codItemScotiabankMN = ConstantesING.SCOTIABANK_DOLARES_MN; codTabScotiabankCCI = ConstantesING.CODIGO_SCOTIABANK_DOLARES_CCI; codItemScotiabankCCI = ConstantesING.SCOTIABANK_DOLARES_CCI; codTabScotiabankMNTexto = ConstantesING.CODIGO_SCOTIABANK_DOLARES_MN_TEXTO; codItemScotiabankMNTexto = ConstantesING.SCOTIABANK_DOLARES_MN_TEXTO; codTabScotiabankCCITexto = ConstantesING.CODIGO_SCOTIABANK_DOLARES_CCI_TEXTO; codItemScotiabankCCITexto = ConstantesING.SCOTIABANK_DOLARES_CCI_TEXTO; } DataTable dtCuentaScotiabankMN = ObtenerDatosParametro(codTabScotiabankMN, codItemScotiabankMN); if (dtCuentaScotiabankMN.Rows.Count > 0) { if (dtCuentaScotiabankMN.Rows[0]["Descripcion"] != DBNull.Value) { cuentaScotiabankMN = dtCuentaScotiabankMN.Rows[0]["Descripcion"].ToString(); } else { //se sigue procesando?? } } else { //se sigue procesando?? } DataTable dtCuentaScotiabankCCI = ObtenerDatosParametro(codTabScotiabankCCI, codItemScotiabankCCI); if (dtCuentaScotiabankCCI.Rows.Count > 0) { if (dtCuentaScotiabankCCI.Rows[0]["Descripcion"] != DBNull.Value) { cuentaScotiabankCCI = dtCuentaScotiabankCCI.Rows[0]["Descripcion"].ToString(); } else { //se sigue procesando?? } } else { //se sigue procesando?? } DataTable dtScotiabankTextoMN = ObtenerDatosParametro(codTabScotiabankMNTexto, codItemScotiabankMNTexto); if (dtScotiabankTextoMN.Rows.Count > 0) { if (dtScotiabankTextoMN.Rows[0]["Descripcion"] != DBNull.Value) { textoScotiabankMN = dtScotiabankTextoMN.Rows[0]["Descripcion"].ToString(); } else { //se sigue procesando?? } } else { //se sigue procesando?? } DataTable dtScotiabankTextoCCI = ObtenerDatosParametro(codTabScotiabankCCITexto, codItemScotiabankCCITexto); if (dtScotiabankTextoCCI.Rows.Count > 0) { if (dtScotiabankTextoCCI.Rows[0]["Descripcion"] != DBNull.Value) { textoScotiabankCCI = dtScotiabankTextoCCI.Rows[0]["Descripcion"].ToString(); } else { //se sigue procesando?? } } else { //se sigue procesando?? } //cuentaScotiabankMN = "Scotiabank Cuenta Corriente MN " + cuentaScotiabankMN; cuentaScotiabankMN = textoScotiabankMN + " " + cuentaScotiabankMN; //cuentaScotiabankCCI = "CCI: " + cuentaScotiabankCCI; cuentaScotiabankCCI = textoScotiabankCCI + " " + cuentaScotiabankCCI; textoCuentasScotiabank = cuentaScotiabankMN + " " + cuentaScotiabankCCI; } //OT7999 FIN string usuarioSOL = ConfigurationSettings.AppSettings["UsuarioSol"]; string passwordSOL = ConfigurationSettings.AppSettings["ClaveSol"]; string contenidoArchivo = contenidoModelo.Replace("{FECHA_EMISION}", fechaEmision) .Replace("{NUMERO_DOCUMENTO}", numeroDocumento) .Replace("{TIPO_DOCUMENTO}", tipoDocumento) .Replace("{MONEDA}", moneda) .Replace("{IGV}", igv) .Replace("{TOTAL}", total) .Replace("{VALOR_VENTA}", subTotal) //OT 7999 INI .Replace("{DETRAC_MONTO}", montoDetraccion) .Replace("{DETRAC_PORCENTAJE}", porcentajeDetraccion) .Replace("{DETRAC_NUM_BANCO}", numeroBancoNancion) .Replace("{DETRAC_MONTO_TOTAL}", detracMontoTotal) //OT 7999 FIN .Replace("{DOC_CLIENTE}", docCliente) .Replace("{TIPO_DOC_CLIENTE}", tipoDocCliente) .Replace("{RAZON_SOCIAL}", razonSocial) .Replace("{UBIGEO_CLIENTE}", ubigeo) .Replace("{DIRECCION_CLIENTE}", direccionCliente) .Replace("{DEP_CLIENTE}", departamentoCliente) .Replace("{PRO_CLIENTE}", provinciaCliente) .Replace("{DIS_CLIENTE}", distritoCliente) .Replace("{PAIS_CLIENTE}", pais) .Replace("{CORREO_CLIENTE}", correo) .Replace("{MONTO_TEXTO}", montoTexto) //OT 7999 INI .Replace("{SCOTIABANK}", textoCuentasScotiabank) //OT 7999 FIN .Replace("{UNIDAD}", unidad) .Replace("{CANTIDAD}", cantidad) .Replace("{DESCRIPCION_DETALLE}", descripcion) .Replace("{PORC_IGV}", porcIgv) .Replace("{NUM_DOC_REL}", numDocRelacionado) .Replace("{TIP_DOC_REL}", tipoDocRelacionado) .Replace("{TIPO_AFECTACION}", tipoNC) .Replace("{GLOSA}", glosa) .Replace("{USUARIO}", usuarioSOL) .Replace("{CLAVE}", passwordSOL); string rutaArchivoCompleta = destinoCsv + numeroDocumento + ".csv"; StreamWriter sw = new StreamWriter(rutaArchivoCompleta); sw.Write(contenidoArchivo); sw.Close(); string rutaRespuesta = destinoRespuesta; //File.Move(rutaArchivoCompleta, rutaArchivoCompleta.Replace(".txt", ".csv")); string usuarioServicio = ConfigurationSettings.AppSettings["UsuarioServicio"]; string passwordServicio = ConfigurationSettings.AppSettings["ClaveServicio"]; string respuesta = string.Empty; switch (tipoComprobante) { case "01": respuesta = EfactService.EnviarFactura(usuarioServicio, passwordServicio, rutaArchivoCompleta, rutaRespuesta, numeroDocumento, dt.Rows[0]); break; case "03": respuesta = EfactService.EnviarBoleta(usuarioServicio, passwordServicio, rutaArchivoCompleta, rutaRespuesta, numeroDocumento, dt.Rows[0]); break; case "07": respuesta = EfactService.EnviarNotaCredito(usuarioServicio, passwordServicio, rutaArchivoCompleta, rutaRespuesta, numeroDocumento, dt.Rows[0]); break; } if (dt.Rows[0]["FLAG_ENVIADO"].ToString().Equals(ConstantesING.SI)) { facturacionDA.Server = Conexiones.ServidorPremBanco13; facturacionDA.Database = Conexiones.BaseDeDatosPremBanco13; decimal idComprobante = Convert.ToDecimal(dt.Rows[0]["ID_COMPROBANTE"]); facturacionDA.CrearConexion(); facturacionDA.AbrirConexion(); facturacionDA.AbrirTransaccion(); try { facturacionDA.ActualizarEstadoEnvio(idComprobante, codigoUsuario); facturacionDA.CommitTransaccion(); } catch (Exception ex) { facturacionDA.RollbackTransaccion(); } } return(respuesta); }