public ActionResult Login(BancoUsers Usuario) { if (ModelState.IsValid) { BancoUsers authUser = null; BancosEntities contexto = new BancosEntities(); { authUser = contexto.BancoUsers.FirstOrDefault(u => u.Login == Usuario.Login && u.Password == Usuario.Password); } if (authUser != null) { FormsAuthentication.SetAuthCookie(authUser.Login, false); Session["USUARIO"] = authUser; return(RedirectToAction("Lista", "Cuentas")); } else { ModelState.AddModelError("CredentialError", "Usuario o contraseña incorrecta"); //return null; return(View()); } } else { return(View()); } }
public ActionResult Login(BancoUsers usuario, string returnUrl) { if (ModelState.IsValid) { BancoUsers authUser = null; using (BancosEntities contexto = new BancosEntities()) { authUser = contexto.BancoUsers.FirstOrDefault(u => u.Login == usuario.Login && u.Password == usuario.Password); } if (authUser != null) { FormsAuthentication.SetAuthCookie(authUser.Login, false); Session["USUARIO"] = authUser; return(Redirect(returnUrl)); } else { ModelState.AddModelError("CredentialError", "Usuario o contraseña incorrectos"); return(View()); } } else { return(View()); } }
protected void Page_Load(object sender, EventArgs e) { ErrMessage_Span.InnerHtml = ""; ErrMessage_Span.Style["display"] = "none"; GeneralMessage_Span.InnerHtml = ""; GeneralMessage_Span.Style["display"] = "none"; if (!Page.IsPostBack) { if (!User.Identity.IsAuthenticated) { FormsAuthentication.SignOut(); return; } this.OpcionesLibroCompras_Fieldset.Visible = false; this.OpcionesConsultaGeneral_Div.Visible = false; this.OpcionesComprobantesRetencionIva_Fieldset.Visible = false; // ------------------------------------------------------------------------------------------------------------------- // intentamos recuperar el state de esta página; en general, lo intentamos con popups filtros if (!(Membership.GetUser().UserName == null)) { KeepPageState MyKeepPageState = new KeepPageState(Membership.GetUser().UserName, this.GetType().Name.ToString()); MyKeepPageState.ReadStateFromFile(this, this.Controls); MyKeepPageState = null; } if (string.IsNullOrEmpty(this.Titulo_TextBox.Text)) { this.Titulo_TextBox.Text = "Libro de Compras"; } // leemos apenas la 1ra. linea del archio con los registros seleccionados, para obtener nombre y rif de la cia contab ... BancosEntities context = new BancosEntities(); tTempWebReport_ConsultaFacturas factura = context.tTempWebReport_ConsultaFacturas.Where("it.NombreUsuario == '" + User.Identity.Name + "'").FirstOrDefault(); if (factura != null) { this.CiaContabNombre_TextBox.Text = factura.CiaContabNombre; this.CiaContabRif_TextBox.Text = factura.CiaContabRif; } this.DropDownList1.SelectedIndex = 0; } }
public HttpResponseMessage LeerBancos() { if (!User.Identity.IsAuthenticated) { var errorResult = new { ErrorFlag = true, ErrorMessage = "Error: por favor haga un login a esta aplicación, y luego regrese a ejecutar esta función." }; return(Request.CreateResponse(HttpStatusCode.OK, errorResult)); } using (BancosEntities bancosContext = new BancosEntities()) { try { var bancos = bancosContext.Bancos.Select(b => new { id = b.Banco1, nombre = b.Nombre }).ToList(); var result = new { errorFlag = false, resultMessage = "", bancos = bancos }; return(Request.CreateResponse(HttpStatusCode.OK, result)); } catch (Exception ex) { string message = ex.Message; if (ex.InnerException != null) { message += "<br />" + ex.InnerException.Message; } var errorResult = new { errorFlag = true, resultMessage = "Error: se ha producido un error al intentar efectuar una operación en la base de datos.<br />" + "El mensaje específico de error es: <br />" + message }; return(Request.CreateResponse(HttpStatusCode.OK, errorResult)); } } }
public bool ValidarUltimoMesCerradoBancos(DateTime fecha, int ciaContab, BancosEntities bancosContext) { var UltimoMesCerrado = (from umc in bancosContext.UltimoMesCerradoes where umc.Cia == ciaContab select umc).FirstOrDefault(); if (UltimoMesCerrado == null) { return(false); } if ((fecha.Year < UltimoMesCerrado.Ano) || (fecha.Year == UltimoMesCerrado.Ano & fecha.Month <= UltimoMesCerrado.Mes)) { return(false); } return(true); }
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { HtmlGenericControl MyHtmlH2; MyHtmlH2 = (HtmlGenericControl)Master.FindControl("PageTitle_TableCell"); if (!(MyHtmlH2 == null)) { MyHtmlH2.InnerHtml = "Pagos - Consulta"; } this.Pago_EntityDataSource.WhereParameters["PagoID"].DefaultValue = Page.Request.QueryString["ID"].ToString(); this.Facturas_EntityDataSource.WhereParameters["PagoID"].DefaultValue = Page.Request.QueryString["ID"].ToString(); // --------------------------------------------------------------------------------------------------- // para permitir mostrar el asiento contable asociado, con un click al hyperlink ... int pagoID = Convert.ToInt32(Page.Request.QueryString["ID"].ToString()); // para buscar el asiento contable asociado, debemos obtener su ID (NumeroAutomatico); para hacerlo, leemos el asiento // antes; nótese que lo obtenemos usando el pk del movimiento bancario BancosEntities bancosContext = new BancosEntities(); MovimientosBancario movimientoBancario = bancosContext.MovimientosBancarios.Where(m => m.PagoID == pagoID).FirstOrDefault(); string url = ""; if (movimientoBancario != null) { url = "../../ConsultasBancos/MovimientosBancarios/MovimientoBancario_page.aspx?ID=" + movimientoBancario.ClaveUnica.ToString(); } else { url = "../../ConsultasBancos/MovimientosBancarios/MovimientoBancario_page.aspx?ID=-999"; } MostrarMovimientoBancario_HyperLink.HRef = "javascript:PopupWin('" + url + "', 1000, 680)"; } }
protected void GenerarArchivoRetencionesIva_Button_Click(object sender, EventArgs e) { // Create the CSV file on the server String fileName = @"ImpuestoIvaRetenido_" + User.Identity.Name + ".txt"; String filePath = HttpContext.Current.Server.MapPath("~/Temp/" + fileName); if (File.Exists(@filePath)) { File.Delete(@filePath); } StreamWriter sw; try { sw = new StreamWriter(filePath, false); } catch (Exception ex) { string errorMessage = ex.Message; if (ex.InnerException != null) { errorMessage += ex.InnerException.Message; } ErrMessage_Span.InnerHtml = "Error al intentar escribir al archivo.<br /><br />" + errorMessage; ErrMessage_Span.Style["display"] = "block"; return; } StringBuilder sb; int cantidadLineas = 0; if (this.ObtencionArchivoRetencionesIva_AgregarEncabezados_CheckBox.Checked) { // agregamos una linea de encabezado al archivo ... sb = new StringBuilder(); // nuestro rif sb.Append("Nuestro rif" + "\t"); // periodo fiscal sb.Append("Período" + "\t"); // fecha Doc sb.Append("Fecha doc" + "\t"); // tipo operación (siempre C) sb.Append("Tipo oper" + "\t"); // tipo doc (siempre 01) sb.Append("Tipo doc" + "\t"); // su rif sb.Append("Su rif" + "\t"); // número documento sb.Append("Número doc" + "\t"); // número control sb.Append("Control" + "\t"); // total doc sb.Append("Total doc" + "\t"); // base imponible sb.Append("Monto imp" + "\t"); // ret iva sb.Append("Ret iva" + "\t"); // doc afectado sb.Append("Doc afectado" + "\t"); // comprobante seniat sb.Append("Comp seniat" + "\t"); // base no imp sb.Append("Monto no imp" + "\t"); // iva porc sb.Append("Iva%" + "\t"); // número de expediente (siempre 0) sb.Append("#Exp"); sw.Write(sb.ToString()); sw.Write(sw.NewLine); cantidadLineas++; } BancosEntities context = new BancosEntities(); // nótese como leemos las facturas seleccionadas, en la tabla 'temp...', para construir un filtro para Facturas_Impuestos, que regrese // justamente, las facturas que el usuario ha seleccionado string filtroFacturasSeleccionadas = ""; var facturas = from f in context.tTempWebReport_ConsultaFacturas where f.NombreUsuario == User.Identity.Name select f.ClaveUnicaFactura; foreach (int facturaID in facturas) { if (string.IsNullOrEmpty(filtroFacturasSeleccionadas)) { filtroFacturasSeleccionadas = "(it.FacturaID In {" + facturaID.ToString(); } else { filtroFacturasSeleccionadas += "," + facturaID.ToString(); } } if (string.IsNullOrEmpty(filtroFacturasSeleccionadas)) { filtroFacturasSeleccionadas = "(1 == 2)"; } else { filtroFacturasSeleccionadas += "})"; } var query = context.Facturas_Impuestos.Include("Factura"). Include("Factura.Proveedore"). Include("Factura.Compania"). Where(filtroFacturasSeleccionadas). Select(i => i); query = query.Where(i => i.ImpuestosRetencionesDefinicion.Predefinido == 2). // solo retenciones Iva OrderBy(i => i.Factura.NumeroComprobante); int retencionesIvaAgregadas = 0; foreach (Facturas_Impuestos impuesto in query) { // lamentablemente, debemos leer la definición del impuesto Iva para la retención que acabamos de leer. La razón es que // en el registro de la retención Iva no está el monto imponible que corresponde; cuando es una sola retención, se puede tomar // de la factura; cuando la factura tiene más de una retención, pueden haber montos imponibles diferentes ... Facturas_Impuestos impuestoIva = context.Facturas_Impuestos.Where(i => i.FacturaID == impuesto.FacturaID && i.ID < impuesto.ID). Where(i => i.ImpuestosRetencionesDefinicion.Predefinido == 1). OrderByDescending(i => i.ID). // para leer *justo* la definición de Iva anterior y no otra que está aún antes ... FirstOrDefault(); string numeroDocumento = ""; if (!string.IsNullOrEmpty(impuesto.Factura.NcNdFlag)) { numeroDocumento = impuesto.Factura.NcNdFlag + "-" + impuesto.Factura.NumeroFactura; } else { numeroDocumento = impuesto.Factura.NumeroFactura; } // ahora escribimos una linea al archivo de texto, separado por tabs sb = new StringBuilder(); // nuestro rif sb.Append(string.IsNullOrEmpty(impuesto.Factura.Compania.Rif) ? "" : impuesto.Factura.Compania.Rif.ToString().Replace("-", "")); sb.Append("\t"); // nótese que el usuario indica si desea la fecha de emisión o recepción en el archivo ... if (this.UsarFechaEmision_CheckBox.Checked) { sb.Append(impuesto.Factura.FechaEmision.ToString("yyyy") + impuesto.Factura.FechaEmision.ToString("MM")); sb.Append("\t"); sb.Append(impuesto.Factura.FechaEmision.ToString("yyyy-MM-dd")); sb.Append("\t"); } else { sb.Append(impuesto.Factura.FechaRecepcion.ToString("yyyy") + impuesto.Factura.FechaRecepcion.ToString("MM")); sb.Append("\t"); sb.Append(impuesto.Factura.FechaRecepcion.ToString("yyyy-MM-dd")); sb.Append("\t"); } // tipo operación (siempre C) sb.Append("C"); sb.Append("\t"); // tipo doc (siempre 01; no, 01 para facturas; 03 para NC) if (string.IsNullOrEmpty(impuesto.Factura.NcNdFlag)) { sb.Append("01"); } else if (impuesto.Factura.NcNdFlag == "NC") { sb.Append("03"); } else { sb.Append("01"); } sb.Append("\t"); // su rif sb.Append(string.IsNullOrEmpty(impuesto.Factura.Proveedore.Rif) ? "" : impuesto.Factura.Proveedore.Rif.ToString().Replace("-", "")); sb.Append("\t"); // número documento sb.Append(numeroDocumento); sb.Append("\t"); // ----------------------------------------------------------------------------------------- // número control string sNumeroControlDefinitivo = impuesto.Factura.NumeroControl; if (string.IsNullOrEmpty(sNumeroControlDefinitivo)) { sNumeroControlDefinitivo = "0"; } Int64 numeroControl = 0; if (this.NumeroControl_ConvertirSoloNumeros_CheckBox.Checked) { if (!Int64.TryParse(sNumeroControlDefinitivo, out numeroControl)) { // excelente como quitamos letras y caracteres especiales del string (tomado de algún lado en la Web) ... sNumeroControlDefinitivo = new String(sNumeroControlDefinitivo.Where(c => char.IsDigit(c)).ToArray()); } else { sNumeroControlDefinitivo = impuesto.Factura.NumeroControl; } } ; // --------------------------------------------------------------------------------------------------------------------------------------- // base imponible: nótese como la tomamos del registro de impuesto Iva (leído antes) decimal montoNoImponible = 0; decimal montoImponible = 0; decimal ivaPorc = 0; decimal montoIva = 0; decimal totalFactura = 0; if (impuesto.Factura.MontoFacturaSinIva != null) { montoNoImponible = impuesto.Factura.MontoFacturaSinIva.Value; } if (impuestoIva != null && impuestoIva.MontoBase != null) { montoImponible = impuestoIva.MontoBase.Value; } if (impuestoIva != null && impuestoIva.Porcentaje != null) { ivaPorc = impuestoIva.Porcentaje.Value; montoIva = montoImponible * ivaPorc / 100; } totalFactura = montoNoImponible + montoImponible + montoIva; sb.Append(sNumeroControlDefinitivo); sb.Append("\t"); // total doc sb.Append(totalFactura.ToString("0.00", CultureInfo.InvariantCulture)); sb.Append("\t"); // monto imponible sb.Append(montoImponible.ToString("0.00", CultureInfo.InvariantCulture)); sb.Append("\t"); // ret iva sb.Append(impuesto.Monto.ToString("0.00", CultureInfo.InvariantCulture)); sb.Append("\t"); // doc afectado sb.Append(string.IsNullOrEmpty(impuesto.Factura.NumeroFacturaAfectada) ? "0" : impuesto.Factura.NumeroFacturaAfectada); sb.Append("\t"); // comprobante seniat sb.Append(impuesto.Factura.NumeroComprobante); sb.Append("\t"); // base no imp sb.Append(montoNoImponible.ToString("0.00", CultureInfo.InvariantCulture)); sb.Append("\t"); // iva porc sb.Append(ivaPorc.ToString("0.00", CultureInfo.InvariantCulture)); sb.Append("\t"); // número de expediente (siempre 0) sb.Append("0"); sw.Write(sb.ToString()); sw.Write(sw.NewLine); cantidadLineas++; retencionesIvaAgregadas++; } try { // finally close the file sw.Close(); sw = null; } catch (Exception ex) { string errorMessage = ex.Message; if (ex.InnerException != null) { errorMessage += ex.InnerException.Message; } ErrMessage_Span.InnerHtml = "Ha ocurrido un error al intentar grabar el archivo requerido en el servidor. <br /><br />" + errorMessage; ErrMessage_Span.Style["display"] = "block"; context = null; return; } if (retencionesIvaAgregadas == 0) { ErrMessage_Span.InnerHtml = "No existe información para construir el archivo que Ud. ha requerido. <br /><br />" + "Probablemente Ud. no ha aplicado un filtro y seleccionado información aún."; ErrMessage_Span.Style["display"] = "block"; context = null; return; } GeneralMessage_Span.InnerHtml = "Ok, el archivo de texto ha sido generado en forma satisfactoria. <br />" + "La cantidad de facturas que se han grabado al archivo es: " + cantidadLineas.ToString() + ". <br />" + "El nombre del archivo es: " + filePath + ".<br /><br />"; GeneralMessage_Span.Style["display"] = "block"; ObtencionArchivoRetencionesIva_DownloadFile_LinkButton.Visible = true; FileName_HiddenField.Value = filePath; return; }
protected void GenerarXMLFile_Button_Click(object sender, EventArgs e) { if (PeriodoSeleccion_TextBox.Text == "") { ErrMessage_Span.InnerHtml = "Ud. debe indicar un período de selección válido. <br /><br />" + "El período de selección que Ud. indique debe tener la forma 'aaaamm'; por ejemplo: 200901."; ErrMessage_Span.Style["display"] = "block"; return; } if (PeriodoSeleccion_TextBox.Text.ToString().Length != 6) { ErrMessage_Span.InnerHtml = "Ud. debe indicar un período de selección válido. <br /><br />" + "El período de selección que Ud. indique debe tener la forma 'aaaamm'; por ejemplo: 200901."; ErrMessage_Span.Style["display"] = "block"; return; } int nPeriodoSeleccion = 0; if (!int.TryParse(PeriodoSeleccion_TextBox.Text, out nPeriodoSeleccion)) { ErrMessage_Span.InnerHtml = "Ud. debe indicar un período de selección válido. <br /><br />" + "El período de selección que Ud. indique debe tener la forma 'aaaamm'; por ejemplo: 200901."; ErrMessage_Span.Style["display"] = "block"; return; } // si el combo no tiene registro seleccionado es porque no hay registros en la tabla if (CiaContab_DropDownList.SelectedIndex == -1) { ErrMessage_Span.InnerHtml = "No existe información para construir el archivo que Ud. ha requerido. <br /><br />" + "Probablemente Ud. no ha aplicado un filtro y seleccionado información aún."; ErrMessage_Span.Style["display"] = "block"; return; } BancosEntities dbBancos = new BancosEntities(); int ciaContab = Convert.ToInt32(CiaContab_DropDownList.SelectedValue); var Facturas = (from f in dbBancos.tTempWebReport_ConsultaFacturas join c in dbBancos.Companias on f.CiaContab equals c.Numero where f.NombreUsuario == User.Identity.Name && f.CiaContab == ciaContab select new { RifAgente = c.Rif, NombreCiaContab = c.NombreCorto, c.Abreviatura }).ToList(); if (Facturas.Count == 0) { ErrMessage_Span.InnerHtml = "No existe información para construir el archivo que Ud. ha requerido. <br /><br /> " + "Probablemente Ud. no ha aplicado un filtro y seleccionado información aún."; ErrMessage_Span.Style["display"] = "block"; dbBancos = null; return; } string sNombreCiaContab = Facturas[0].Abreviatura; string sRifCiaContab = Facturas[0].RifAgente.ToString().Replace("-", ""); int cantidadFacturas = 0; int cantidadRetenciones = 0; Facturas = null; // nótese como seleccionamos solo los registros que corresponden a la cia contab seleccinada; // además, solo los que corresponden al usuario XDocument xmldoc = new XDocument( new XElement("RelacionRetencionesISLR", new XAttribute("RifAgente", sRifCiaContab), new XAttribute("Periodo", nPeriodoSeleccion.ToString()))); xmldoc.Declaration = new XDeclaration("1.0", "ISO-8859-1", "true"); var facturasQuery = from f in dbBancos.tTempWebReport_ConsultaFacturas where f.NombreUsuario == User.Identity.Name && f.CiaContab == ciaContab select f; foreach (var f in facturasQuery) { // nótese lo que hacemos aquí: si el Iva comienza con J (persona jurídica) grabamos el // monto sujeto a retención al archivo; si el rif comienza con otra letra (persona NO juridica) // grabamos el monto total de la factura (ie: imponible más no imponible) // dejamos de aplicar el criterio que sigue pues ahora los empleados vienen siempre desde la // nómina con el sueldo que registre el usuario como monto sujeto a retención para el xml file if (f.RifCompania == null) { ErrMessage_Span.InnerHtml = "Aparentemente, la compañía " + f.NombreCompania + " no tiene un número de rif definido en la Maestra de Proveedores. <br /><br />" + "Por favor revise esta situación; asigne un número de Rif a esta compañía y regrese a ejecutar nuevamente este proceso."; ErrMessage_Span.Style["display"] = "block"; dbBancos = null; return; } // ---------------------------------------------------------------------------------------------------------------------------------------------- // ahora los impuestos y las retenciones se registran en forma separada en la tabla Facturas_Impuestos; el objetivo principal de este cambio fue, // simplemente, poder registrar *más de una* retención de impuestos para una factura. Aunque no es un caso frecuente, existen proveedores que // hacen facturas en las cuales especifican dos retenciones (islr) diferentes ... ellos ya las indican, para que el cliente sepa que debe hacerlo // así ... por esa razón, ahora buscamos, para cada factura, la retención islr en la tabla Facturas_Impuestos; como dijimos antes, aunque no es // frecuente, puede haber más de una retención islr para una misma factura ... Factura factura = dbBancos.Facturas.Include("Facturas_Impuestos"). Include("Facturas_Impuestos.ImpuestosRetencionesDefinicion"). Where(x => x.ClaveUnica == f.ClaveUnicaFactura). FirstOrDefault(); if (factura == null) { continue; } foreach (Facturas_Impuestos retencion in factura.Facturas_Impuestos.Where(r => r.ImpuestosRetencionesDefinicion.Predefinido == 3)) { // la factura debe tener un código de retención en el registro de ImpuestosRetenciones ... string codigoConceptoRetencion_islr = retencion.Codigo; if (string.IsNullOrEmpty(codigoConceptoRetencion_islr)) { ErrMessage_Span.InnerHtml = "Aparentemente, la compañía " + f.NombreCompania + " no tiene un 'código de concepto de retención de Islr' " + "en una (o varias) de sus facturas asociadas (ej: " + factura.NumeroFactura + "). " + "<br /><br /> Por favor revise esta situación; asigne un " + "'código de concepto de retención de Islr' a cada una de las facturas asociadas a esta compañía; " + "luego regrese y ejecute nuevamente este proceso."; ErrMessage_Span.Style["display"] = "block"; dbBancos = null; return; } // ------------------------------------------------------------------------------------------ // número control - intentamos quitar caracteres especiales y dejar solo números ... string sNumeroControlDefinitivo = factura.NumeroControl; if (string.IsNullOrEmpty(sNumeroControlDefinitivo)) { sNumeroControlDefinitivo = "0"; } Int64 numeroControl = 0; if (this.retencionISLR_NumeroControl_ConvertirNumeros_CheckBox.Checked) { if (!Int64.TryParse(sNumeroControlDefinitivo, out numeroControl)) { // excelente como quitamos letras y caracteres especiales del string (tomado de algún lado en la Web) ... sNumeroControlDefinitivo = new String(sNumeroControlDefinitivo.Where(c => char.IsDigit(c)).ToArray()); } else { sNumeroControlDefinitivo = factura.NumeroControl; } } ; // ------------------------------------------------------------------------------------------ decimal montoOperacion = retencion.MontoBase != null ? retencion.MontoBase.Value : 0; decimal porcentaje = retencion.Porcentaje != null ? retencion.Porcentaje.Value : 0; montoOperacion = decimal.Round(montoOperacion, 2, MidpointRounding.AwayFromZero); porcentaje = decimal.Round(porcentaje, 2, MidpointRounding.AwayFromZero); XElement x = new XElement("DetalleRetencion", new XElement("RifRetenido", f.RifCompania.ToString().Replace("-", "")), new XElement("NumeroFactura", factura.NumeroFactura), new XElement("NumeroControl", sNumeroControlDefinitivo), new XElement("FechaOperacion", factura.FechaRecepcion.ToString("dd/MM/yyyy").Replace("-", "/")), new XElement("CodigoConcepto", codigoConceptoRetencion_islr), // siempre nos aseguramos que el signo decimal en los montos sea '.' y no ',' new XElement("MontoOperacion", montoOperacion.ToString().Replace(",", ".")), new XElement("PorcentajeRetencion", porcentaje.ToString().Replace(",", ".")) ); xmldoc.Element("RelacionRetencionesISLR").Add(x); cantidadRetenciones++; } cantidadFacturas++; } String fileName = @"ISLR_retenido_" + sNombreCiaContab + ".xml"; String filePath = HttpContext.Current.Server.MapPath("~/Temp/" + fileName); // -------------------------------------------------------------------------------------------------- // si el usuario así lo indica, leemos retenciones desde la nómina de pago if (!LeerNomina_CheckBox.Checked) { // Saving to a file, you can also save to streams xmldoc.Save(filePath); GeneralMessage_Span.InnerHtml = "<br />" + "Ok, el archivo xml ha sido generado en forma satisfactoria. <br />" + "Se han leído " + cantidadFacturas.ToString() + " facturas, en base al criterio de selección que Ud. indicó. <br />" + "Se han agregado " + cantidadRetenciones.ToString() + " retenciones (registros) al archivo de retenciones. <br />" + "El nombre del archivo es: " + filePath + ".<br /><br />"; GeneralMessage_Span.Style["display"] = "block"; DownloadFile_LinkButton.Visible = true; FileName_HiddenField.Value = filePath; return; } // ----------------------------------------------------------------------------------------------- // lo primero que hacemos es intentar generar fechas de inicio y fin usando el período indicado int ano = Convert.ToInt32(PeriodoSeleccion_TextBox.Text.ToString().Substring(0, 4)); int mes = Convert.ToInt32(PeriodoSeleccion_TextBox.Text.ToString().Substring(4, 2)); if (ano <= 1990 || ano >= 2050) { ErrMessage_Span.InnerHtml = "El período indicado no está correctamente formado. <br /><br />" + "Recuerde que el período debe formarse de la siguiente manera: aaaamm; ejemplo: 201006."; ErrMessage_Span.Style["display"] = "block"; dbBancos = null; return; } if (mes <= 0 || mes >= 13) { ErrMessage_Span.InnerHtml = "El período indicado no está correctamente formado. <br /><br />" + "Recuerde que el período debe formarse de la siguiente manera: aaaamm; ejemplo: 201006."; ErrMessage_Span.Style["display"] = "block"; dbBancos = null; return; } // intentamos leer el código de retención para empleados de nómina // declaramos el EF context ... NominaEntities nominaCtx = new NominaEntities(); ContabSysNet_Web.ModelosDatos_EF.Nomina.ParametrosNomina parametrosNomina = (from c in nominaCtx.ParametrosNominas where c.Cia == ciaContab select c).FirstOrDefault(); if (parametrosNomina == null || string.IsNullOrEmpty(parametrosNomina.CodigoConceptoRetencionISLREmpleados)) { ErrMessage_Span.InnerHtml = "Aparentemente, no se ha definido un código de retención ISLR para empleados en la tabla Parámetros Nómina. <br /><br /> " + "Por favor abra la tabla mencionada y registre el código usado como concepto de retención para retención ISLR de empleados."; ErrMessage_Span.Style["display"] = "block"; dbBancos = null; return; } // rubro que corresponde al ISLR var rubroIslr = nominaCtx.tMaestraRubros.Select(r => new { r.Rubro, r.TipoRubro }).Where(r => r.TipoRubro == 8).FirstOrDefault(); if (rubroIslr == null) { ErrMessage_Span.InnerHtml = "No se ha definido el rubro ISLR en la maestra de rubros " + "(Catálogos --> Maestra de Rubros). <br /><br />" + "Ud. debe definir el rubro ISLR en la Maestra de Rubros."; ErrMessage_Span.Style["display"] = "block"; nominaCtx = null; return; } // leemos la nómina de pago del mes y seleccionamos los rubros que corresponden a la retención de ISLR // recuérdese que arriba validamos que existan rubros marcados como ISLR en la maestra; sin embargo, // puede no haber de éstos en la nómina de pago ... // además, leemos solo los empleados cuya propiedad EscribirArchivoXMLRetencionesISLR es true ... var queryNominaPago = from n in nominaCtx.tNominas where n.tNominaHeader.FechaNomina.Month == mes && n.tNominaHeader.FechaNomina.Year == ano && (n.tEmpleado.EscribirArchivoXMLRetencionesISLR != null && n.tEmpleado.EscribirArchivoXMLRetencionesISLR == true) && n.tNominaHeader.tGruposEmpleado.Cia == ciaContab && n.Rubro == rubroIslr.Rubro // maestraRubro.Rubro group n by n.Empleado into g select new { empleado = g.Key, fechaNomina = g.Max(m => m.tNominaHeader.FechaNomina), montoISLR = g.Sum(m => m.Monto), montoBase = g.Sum(m => m.MontoBase) }; int empleadosAgregadosISLRFile = 0; RegistroRetencionISLR registroRetencionISLR; List <RegistroRetencionISLR> registroRetencionISLR_List = new List <RegistroRetencionISLR>(); foreach (var n in queryNominaPago) { // leemos empleado ContabSysNet_Web.ModelosDatos_EF.Nomina.tEmpleado empleado = (from emp in nominaCtx.tEmpleados where emp.Empleado == n.empleado select emp).FirstOrDefault(); if (String.IsNullOrEmpty(empleado.Rif)) { ErrMessage_Span.InnerHtml = "Aunque se ha retenido ISLR al empleado " + empleado.Nombre + " en la nómina de pago, no se ha registrado su número de rif en la Maestra de Empleados. <br /><br />" + "Por favor abra la tabla mencionada y registre un número de rif para cada empleado que tenga retención de ISLR en la nómina de pago."; ErrMessage_Span.Style["display"] = "block"; dbBancos = null; return; } decimal islrPorc = 0; decimal montoBase = 0; decimal montoISLR = n.montoISLR; if (n.montoBase != null) { montoBase = n.montoBase.Value; } if (montoBase < 0) { // cómo la retención de islr en la nómina es una deducción, este monto viene negativo ... montoBase *= -1; } if (montoISLR < 0) { montoISLR *= -1; } if (montoBase != 0) { islrPorc = montoISLR * 100 / montoBase; } registroRetencionISLR = new RegistroRetencionISLR(); registroRetencionISLR.RifRetenido = empleado.Rif; registroRetencionISLR.NumeroFactura = "0"; registroRetencionISLR.NumeroControl = "NA"; registroRetencionISLR.FechaOperacion = n.fechaNomina; registroRetencionISLR.CodigoConcepto = parametrosNomina.CodigoConceptoRetencionISLREmpleados; // nos aseguramos que el monto tenga siempre 2 decimales decimal montoOperacion = decimal.Round(montoBase, 2, MidpointRounding.AwayFromZero); decimal porcentaje = decimal.Round(islrPorc, 2, MidpointRounding.AwayFromZero); // al convertir el monto a string siempre queda así: 1500.35 registroRetencionISLR.MontoOperacion = montoOperacion.ToString(); registroRetencionISLR.PorcentajeRetencion = porcentaje.ToString(); registroRetencionISLR_List.Add(registroRetencionISLR); empleadosAgregadosISLRFile++; } // finalmente, agregamos cada item en la lista como un nodo al xml file foreach (RegistroRetencionISLR r in registroRetencionISLR_List) { XElement x = new XElement("DetalleRetencion", new XElement("RifRetenido", r.RifRetenido.ToString().Replace("-", "")), new XElement("NumeroFactura", r.NumeroFactura), new XElement("NumeroControl", r.NumeroControl), new XElement("FechaOperacion", r.FechaOperacion.ToString("dd/MM/yyyy")), new XElement("CodigoConcepto", r.CodigoConcepto), new XElement("MontoOperacion", r.MontoOperacion), new XElement("PorcentajeRetencion", r.PorcentajeRetencion) ); xmldoc.Element("RelacionRetencionesISLR").Add(x); } // Saving to a file, you can also save to streams xmldoc.Save(filePath); GeneralMessage_Span.InnerHtml = "<br />" + "Ok, el archivo xml ha sido generado en forma satisfactoria. <br />" + "Se han leído " + cantidadFacturas.ToString() + " facturas, en base al criterio de selección que Ud. indicó. <br />" + "Se han agregado " + cantidadRetenciones.ToString() + " retenciones (registros) al archivo de retenciones. <br />" + "El nombre del archivo es: " + filePath + "<br /><br />" + "Además, se han agregado " + empleadosAgregadosISLRFile.ToString() + " retenciones (registros) desde la nómina de pago del mes."; GeneralMessage_Span.Style["display"] = "block"; DownloadFile_LinkButton.Visible = true; FileName_HiddenField.Value = filePath; }
public HttpResponseMessage construirDocumentoExcel([FromUri] int?cuentaBancariaID, [FromBody] ConstruirExcelCollections construirDocExcel_Collections) { if (!User.Identity.IsAuthenticated) { var errorResult = new { errorFlag = true, resultMessage = "Error: por favor haga un login a esta aplicación, y luego regrese a ejecutar esta función." }; return(Request.CreateResponse(HttpStatusCode.OK, errorResult)); } try { // -------------------------------------------------------------------------------------------------------------------------- // establecemos una conexión a mongodb string contabm_mongodb_connection = System.Web.Configuration.WebConfigurationManager.AppSettings["contabm_mongodb_connectionString"]; string contabM_mongodb_name = System.Web.Configuration.WebConfigurationManager.AppSettings["contabM_mongodb_name"]; var client = new MongoClient(contabm_mongodb_connection); // var server = client.GetServer(); // nótese como el nombre de la base de datos mongo (de contabM) está en el archivo webAppSettings.config; en este db se registran las vacaciones var mongoDataBase = client.GetDatabase(contabM_mongodb_name); // vamos a leer todas las compañías y ponerlas en una lista ... la cuenta bancaria (default) para cada compañía, será buscada allí ... var companiasMongoCollection = mongoDataBase.GetCollection <Compania_mongodb>("Compania"); var mongoQuery = from e in companiasMongoCollection.AsQueryable <Compania_mongodb>() select e; List <Compania_mongodb> companias = mongoQuery.ToList(); // ----------------------------------------------------------------------------------------------------------------- // preparamos el documento Excel, para tratarlo con ClosedXML ... string fileName = System.Web.HttpContext.Current.Server.MapPath("~/Excel/Plantillas/InstruccionesPagoAlBanco/InstruccionesPagoAlBanco.xlsx"); XLWorkbook wb; IXLWorksheet ws; try { wb = new XLWorkbook(fileName); ws = wb.Worksheet(1); } catch (Exception ex) { string errorMessage = ex.Message; if (ex.InnerException != null) { errorMessage += "<br />" + ex.InnerException.Message; } var errorResult = new { errorFlag = true, resultMessage = errorMessage }; return(Request.CreateResponse(HttpStatusCode.OK, errorResult)); } var excelTable = ws.Table("Facturas"); // ----------------------------------------------------------------------------------------------------------------- int cantidadRows = 0; foreach (var factura in construirDocExcel_Collections.FacturasSeleccionadas_List) { cantidadRows++; excelTable.DataRange.LastRow().Field(0).SetValue(factura.companiaID); excelTable.DataRange.LastRow().Field(1).SetValue(factura.compania); excelTable.DataRange.LastRow().Field(2).SetValue(new DateTime(factura.fechaRecepcion.Year, factura.fechaRecepcion.Month, factura.fechaRecepcion.Day)); excelTable.DataRange.LastRow().Field(3).SetValue(factura.numeroFactura); excelTable.DataRange.LastRow().Field(4).SetValue(factura.numeroControl); excelTable.DataRange.LastRow().Field(5).SetValue(factura.concepto); excelTable.DataRange.LastRow().Field(6).SetValue(factura.montoNoImponible); excelTable.DataRange.LastRow().Field(7).SetValue(factura.montoImponible); excelTable.DataRange.LastRow().Field(8).SetValue(factura.Iva); excelTable.DataRange.LastRow().Field(9).SetValue(factura.totalFactura); excelTable.DataRange.LastRow().Field(10).SetValue(factura.montoPagado); excelTable.DataRange.LastRow().Field(11).SetValue(factura.montoAPagar); excelTable.DataRange.InsertRowsBelow(1); } // ---------------------------------------------------------- // ahora escribimos registros a otra tabla en el documento ws = wb.Worksheet(2); excelTable = ws.Table("Pagos"); cantidadRows = 0; foreach (var pago in construirDocExcel_Collections.ResumenFacturas_List) { cantidadRows++; excelTable.DataRange.LastRow().Field(0).SetValue(pago.companiaID); excelTable.DataRange.LastRow().Field(1).SetValue(pago.compania); excelTable.DataRange.LastRow().Field(2).SetValue(pago.cantidadFacturasAPagar); excelTable.DataRange.LastRow().Field(3).SetValue(pago.tipoPersona + '-' + pago.numeroRif); excelTable.DataRange.LastRow().Field(4).SetValue(pago.nombreBeneficiario); excelTable.DataRange.LastRow().Field(5).SetValue(pago.codigoBanco); excelTable.DataRange.LastRow().Field(6).SetValue(pago.numeroCuentaBancaria); excelTable.DataRange.LastRow().Field(7).SetValue(new DateTime(pago.fechaValor.Year, pago.fechaValor.Month, pago.fechaValor.Day)); excelTable.DataRange.LastRow().Field(8).SetValue(pago.monto); excelTable.DataRange.InsertRowsBelow(1); } BancosEntities context = new BancosEntities(); string nombreCiaContab = ""; string rifCiaContab = ""; CuentasBancaria cuentaBancaria = context.CuentasBancarias.Where(cta => cta.CuentaInterna == cuentaBancariaID).FirstOrDefault(); if (cuentaBancaria != null) { ContabSysNet_Web.ModelosDatos_EF.Bancos.Compania ciaContab = context.Companias.Where(cia => cia.Numero == cuentaBancaria.Cia).FirstOrDefault(); nombreCiaContab = ciaContab.Nombre; rifCiaContab = ciaContab.Rif; } ws = wb.Worksheet(1); ws.Cell("B2").Value = nombreCiaContab; ws.Cell("B3").Value = "Rif: " + rifCiaContab; string userName = User.Identity.Name.Replace("@", "_").Replace(".", "_"); fileName = System.Web.HttpContext.Current.Server.MapPath("~/Excel/InstruccionesPagoAlBanco_" + userName + ".xlsx"); if (File.Exists(fileName)) { File.Delete(fileName); } wb.SaveAs(fileName); var errorResult2 = new { errorFlag = false, resultMessage = "Ok, el documento Excel se ha construído en forma satisfactoria.<br />" + "Por favor haga un click en la opción que le permite descargar (download) el documento a su computador." }; return(Request.CreateResponse(HttpStatusCode.OK, errorResult2)); } catch (Exception ex) { string message = ex.Message; if (ex.InnerException != null) { message += "<br />" + ex.InnerException.Message; } var errorResult = new { errorFlag = true, resultMessage = "Error: se ha producido un error al intentar efectuar una operación en la base de datos.<br />" + "El mensaje específico de error es: <br />" + message }; return(Request.CreateResponse(HttpStatusCode.OK, errorResult)); } }
public HttpResponseMessage leerDatosCompanias([FromUri] int?cuentaBancariaID, [FromBody] List <ResumenFacturas> resumenFacturas) { if (!User.Identity.IsAuthenticated) { var errorResult = new { errorFlag = true, resultMessage = "Error: por favor haga un login a esta aplicación, y luego regrese a ejecutar esta función." }; return(Request.CreateResponse(HttpStatusCode.OK, errorResult)); } try { // -------------------------------------------------------------------------------------------------------------------------- // establecemos una conexión a mongodb string contabm_mongodb_connection = System.Web.Configuration.WebConfigurationManager.AppSettings["contabm_mongodb_connectionString"]; string contabM_mongodb_name = System.Web.Configuration.WebConfigurationManager.AppSettings["contabM_mongodb_name"]; var client = new MongoClient(contabm_mongodb_connection); // var server = client.GetServer(); // nótese como el nombre de la base de datos mongo (de contabM) está en el archivo webAppSettings.config; en este db se registran las vacaciones var mongoDataBase = client.GetDatabase(contabM_mongodb_name); // vamos a leer todas las compañías y ponerlas en una lista ... la cuenta bancaria (default) para cada compañía, será buscada allí ... var companiasMongoCollection = mongoDataBase.GetCollection <Compania_mongodb>("Compania"); var mongoQuery = from e in companiasMongoCollection.AsQueryable <Compania_mongodb>() select e; List <Compania_mongodb> companias = mongoQuery.ToList(); // -------------------------------------------------------------------------------------------------------------------------- BancosEntities context = new BancosEntities(); // antes que nada, leemos la cuenta bancaria y los datos de la cia contab ... ContabSysNet_Web.ModelosDatos_EF.Bancos.Compania ciaContab = null; CuentasBancaria cuentaBancariaCiaContab = null; string codigoBancoCiaContab = ""; if (cuentaBancariaID != null) { cuentaBancariaCiaContab = context.CuentasBancarias.Where(cta => cta.CuentaInterna == cuentaBancariaID).FirstOrDefault(); if (cuentaBancariaCiaContab != null) { ciaContab = context.Companias.Where(cia => cia.Numero == cuentaBancariaCiaContab.Cia).FirstOrDefault(); codigoBancoCiaContab = cuentaBancariaCiaContab.Agencia1.Banco1.Codigo; } } foreach (var c in resumenFacturas) { Proveedore compania = context.Proveedores.Include("Personas").Where(p => p.Proveedor == c.companiaID).FirstOrDefault(); if (compania != null) { c.tipoPersona = compania.Rif != null?compania.Rif.Substring(0, 1) : ""; c.numeroRif = compania.Rif != null?compania.Rif.Substring(1, compania.Rif.Length - 1) : ""; Persona persona = compania.Personas.Where(p => p.DefaultFlag.HasValue && p.DefaultFlag.Value).FirstOrDefault(); if (persona != null) { c.nombreBeneficiario = persona.Nombre + ' ' + persona.Apellido; c.email = persona.email; c.celular = persona.Celular; // solo si la persona posee un Rif registrado, lo usamos if (!string.IsNullOrEmpty(persona.Rif)) { c.tipoPersona = persona.Rif != null?persona.Rif.Substring(0, 1) : ""; c.numeroRif = persona.Rif != null?persona.Rif.Substring(1, persona.Rif.Length - 1) : ""; } } // buscamos la compañía en la lista que leímos desde mongo var compania2 = companias.Where(x => x.Id == c.companiaID).FirstOrDefault(); if (compania2 != null && compania2.cuentasBancarias.Any(x => x.isDefault)) { var cuentaBancaria = compania2.cuentasBancarias.Where(x => x.isDefault).FirstOrDefault(); var banco = context.Bancos.Where(b => b.Banco1 == cuentaBancaria.banco).FirstOrDefault(); c.numeroCuentaBancaria = cuentaBancaria.numero; c.codigoBanco = banco != null ? banco.Codigo : null; c.modalidadPago = ""; if (!(cuentaBancaria.tipo == "VI" || cuentaBancaria.tipo == "MA" || cuentaBancaria.tipo == "AM")) { // la cuenta no es una tarjeta; es una cuenta de ahorros o corriente if (c.codigoBanco == codigoBancoCiaContab) { // cuentas del mismo banco (que nuestro banco) c.modalidadPago = "CTA"; } else { // cuenta de difenrente banco (a nuestro banco) c.modalidadPago = "BAN"; } } else { // tarjetas de crédito if (cuentaBancaria.tipo == "AM") { c.modalidadPago = "AME"; } else if (c.codigoBanco == codigoBancoCiaContab) { // visa/master mismo banco c.modalidadPago = "V/M"; } else { // visa/master otros bancos c.modalidadPago = "TAR"; } } } } } var registroCiaContab = new { tipoRegistro = "01", descripcionLote = "Proveedores", tipoPersona = ciaContab.Rif != null?ciaContab.Rif.Substring(0, 1) : "", numeroRif = ciaContab.Rif != null?ciaContab.Rif.Replace("-", "").Substring(1, ciaContab.Rif.Replace("-", "").Length - 1) : "", numeroContrato = cuentaBancariaCiaContab.NumeroContrato, numeroLote = 0, fechaEnvio = DateTime.Today, cantidadOperaciones = resumenFacturas.Count(), montoTotal = resumenFacturas.Sum(f => f.monto), moneda = "VEB" }; var result = new { errorFlag = false, resultMessage = "", resumenFacturas = resumenFacturas, registroCiaContab }; return(Request.CreateResponse(HttpStatusCode.OK, result)); } catch (Exception ex) { string message = ex.Message; if (ex.InnerException != null) { message += "<br />" + ex.InnerException.Message; } var errorResult = new { errorFlag = true, resultMessage = "Error: se ha producido un error al intentar efectuar una operación en la base de datos.<br />" + "El mensaje específico de error es: <br />" + message }; return(Request.CreateResponse(HttpStatusCode.OK, errorResult)); } }
private bool LibroCompras_ExportarMicrosoftExcel() { if (User.Identity == null || string.IsNullOrEmpty(User.Identity.Name)) { // un timeout podría hacer que el usuario no esté authenticado ... string errorMessage = "Ud. debe hacer un login en la aplicación antes de continuar. Por vaya a Home e intente hacer un login en la aplicación."; ErrMessage_Span.InnerHtml = errorMessage; ErrMessage_Span.Style["display"] = "block"; return(false); } BancosEntities context = new BancosEntities(); var query = context.tTempWebReport_ConsultaFacturas.Where("it.NombreUsuario == '" + User.Identity.Name + "'"); if (query.Count() == 0) { string errorMessage = "No existe información para mostrar el reporte " + "que Ud. ha requerido. <br /><br /> Probablemente Ud. no ha aplicado un " + "filtro y seleccionado información aún."; ErrMessage_Span.InnerHtml = errorMessage; ErrMessage_Span.Style["display"] = "block"; return(false); } // ----------------------------------------------------------------------------------------------------------------- // preparamos el documento Excel, para tratarlo con ClosedXML ... string fileName = System.Web.HttpContext.Current.Server.MapPath("~/Excel/LibroCompras.xlsx"); XLWorkbook wb; IXLWorksheet ws; try { wb = new XLWorkbook(fileName); ws = wb.Worksheet(1); } catch (Exception ex) { string errorMessage = ex.Message; if (ex.InnerException != null) { errorMessage += "<br />" + ex.InnerException.Message; } ErrMessage_Span.InnerHtml = errorMessage; ErrMessage_Span.Style["display"] = "block"; return(false); } var excelTable = ws.Table("Ventas"); // ----------------------------------------------------------------------------------------------------------------- int cantidadRows = 0; decimal ivaPorc = 0; decimal montoNoImponible = 0; decimal montoImponible = 0; decimal montoIva = 0; DateTime?fechaComprobanteRetencionIva = null; decimal montoRetencionImpuestosIva = 0; foreach (var factura in query.OrderBy(f => f.FechaRecepcion).ThenBy(f => f.NumeroFactura)) { cantidadRows++; excelTable.DataRange.LastRow().Field(0).SetValue(cantidadRows); excelTable.DataRange.LastRow().Field(1).SetValue(factura.FechaRecepcion); excelTable.DataRange.LastRow().Field(2).SetValue(factura.NombreCompania); excelTable.DataRange.LastRow().Field(3).SetValue(factura.RifCompania); if (factura.ImportacionFlag != null && factura.ImportacionFlag.Value) { // importaciones switch (factura.NcNdFlag) { case "NC": { excelTable.DataRange.LastRow().Field(9).SetValue(factura.NumeroFactura); excelTable.DataRange.LastRow().Field(10).SetValue(factura.NumeroFacturaAfectada); break; } case "ND": { excelTable.DataRange.LastRow().Field(8).SetValue(factura.NumeroFactura); break; } default: { excelTable.DataRange.LastRow().Field(4).SetValue(factura.NumeroFactura); break; } } } else { // compra nacional switch (factura.NcNdFlag) { case "NC": { excelTable.DataRange.LastRow().Field(7).SetValue(factura.NumeroFactura); excelTable.DataRange.LastRow().Field(10).SetValue(factura.NumeroFacturaAfectada); break; } case "ND": { excelTable.DataRange.LastRow().Field(6).SetValue(factura.NumeroFactura); break; } default: { excelTable.DataRange.LastRow().Field(4).SetValue(factura.NumeroFactura); break; } } } // calculamos el porcentaje de Iva, que no viene en el registro montoNoImponible = factura.MontoFacturaSinIva != null ? factura.MontoFacturaSinIva.Value : 0; montoImponible = factura.MontoFacturaConIva != null ? factura.MontoFacturaConIva.Value : 0; montoIva = factura.Iva != null ? factura.Iva.Value : 0; ivaPorc = 0; fechaComprobanteRetencionIva = null; montoRetencionImpuestosIva = factura.RetencionSobreIva != null ? factura.RetencionSobreIva.Value : 0; if (montoImponible != 0) { ivaPorc = Math.Round(montoIva * 100 / montoImponible, 2); } // para determinar la fecha de recepción del comprobante, tenemos que buscar en la tabla FacturasImpuestos; además, en FacturasImpuestos, // el registro cuyo correspondiente en ImpuestosRetencionesDefinicion tenga 1 en la columna Predefinido ... Facturas_Impuestos impuestoIva = context.Facturas_Impuestos.Where(i => i.FacturaID == factura.ClaveUnicaFactura). Where(i => i.ImpuestosRetencionesDefinicion.Predefinido == 1). FirstOrDefault(); if (impuestoIva != null) { fechaComprobanteRetencionIva = impuestoIva.FechaRecepcionPlanilla; } if (factura.ImportacionFlag != null && factura.ImportacionFlag.Value) { excelTable.DataRange.LastRow().Field(11).SetValue(montoImponible + montoIva); // gravadas excelTable.DataRange.LastRow().Field(12).SetValue(montoNoImponible); // exoneradas excelTable.DataRange.LastRow().Field(13).SetValue(montoImponible); // base imponible excelTable.DataRange.LastRow().Field(14).SetValue(ivaPorc); excelTable.DataRange.LastRow().Field(15).SetValue(montoIva); } else { excelTable.DataRange.LastRow().Field(16).SetValue(montoImponible + montoIva); // gravadas excelTable.DataRange.LastRow().Field(17).SetValue(montoNoImponible); // exoneradas excelTable.DataRange.LastRow().Field(18).SetValue(montoImponible); // base imponible excelTable.DataRange.LastRow().Field(19).SetValue(ivaPorc); excelTable.DataRange.LastRow().Field(20).SetValue(montoIva); } excelTable.DataRange.LastRow().Field(21).SetValue(factura.NumeroComprobante); excelTable.DataRange.LastRow().Field(22).SetValue(fechaComprobanteRetencionIva); excelTable.DataRange.LastRow().Field(23).SetValue(montoRetencionImpuestosIva); excelTable.DataRange.InsertRowsBelow(1); } // en el libro de ventas, asumimos que el usuario seleccionó una sola empresa (cia contab) y usamos el primer registro // de la lista de items seleccionados para obtenerla ... string nombreCiaContab = ""; string rifCiaContab = ""; string direccionCiaContab = ""; string periodoFechaInicial = this.Periodo_FechaInicial_TextBox.Text; string periodoFechaFinal = this.Periodo_FechaFinal_TextBox.Text; if (query.Count() > 0) { var factura = query.FirstOrDefault(); nombreCiaContab = factura.CiaContabNombre; rifCiaContab = factura.CiaContabRif; direccionCiaContab = factura.CiaContabDireccion; } ws.Cell("B2").Value = nombreCiaContab; ws.Cell("B3").Value = "Rif: " + rifCiaContab; ws.Cell("B4").Value = direccionCiaContab; ws.Cell("B6").Value = "Período: " + periodoFechaInicial + " al " + periodoFechaFinal; string userName = User.Identity.Name.Replace("@", "_").Replace(".", "_"); fileName = System.Web.HttpContext.Current.Server.MapPath("~/Excel/LibroCompras_" + userName + ".xlsx"); if (File.Exists(fileName)) { File.Delete(fileName); } try { wb.SaveAs(fileName); string errorMessage = "Ok, la función que exporta los datos a Microsoft Excel se ha ejecutado en forma satisfactoria.<br />" + "En total, se han agregado " + cantidadRows.ToString() + " registros a la tabla en el documento Excel.<br />" + "Ud. debe hacer un <em>click</em> en el botón que permite obtener (<em>download</em>) el documento Excel."; Session["ExcelDocument_FileName"] = fileName; GeneralMessage_Span.InnerHtml = errorMessage; GeneralMessage_Span.Style["display"] = "block"; } catch (Exception ex) { string errorMessage = ex.Message; if (ex.InnerException != null) { errorMessage += "<br />" + ex.InnerException.Message; } errorMessage += "Se producido un error mientras se ejecutaba el proceso. El mensaje específico del error es:<br />" + errorMessage; ErrMessage_Span.InnerHtml = errorMessage; ErrMessage_Span.Style["display"] = "block"; return(false); } return(true); }
protected void Page_Load(object sender, EventArgs e) { if (!User.Identity.IsAuthenticated) { FormsAuthentication.SignOut(); return; } if (!Page.IsPostBack) { switch (Request.QueryString["rpt"].ToString()) { case "activosFijosDepreciacion": { if (!User.Identity.IsAuthenticated) { FormsAuthentication.SignOut(); return; } if (Request.QueryString["tit"] == null || Request.QueryString["subtit"] == null || Request.QueryString["mes"] == null || Request.QueryString["ano"] == null || Request.QueryString["soloTotales"] == null) { ErrMessage_Cell.InnerHtml = "Aparentemente, Ud. no ha seleccionado aún información para la obtención de este reporte.<br /><br />" + "Probablemente, Ud. no ha definido y aplicado un filtro que permita seleccionar información apropiada para la obtención " + "de este reporte."; break; } // nótese como mantenemos los items mes y año como texto; no necesitamos que sean números en el reporte ... string titutlo = Request.QueryString["tit"].ToString(); string subTitulo = Request.QueryString["subtit"].ToString(); string mes = Request.QueryString["mes"].ToString(); string ano = Request.QueryString["ano"].ToString(); bool soloTotales = Convert.ToBoolean(Request.QueryString["soloTotales"].ToString()); // string que muestra el período (en meses) que va desde el inicio del año fiscal hasta el mes de la consulta; ej: Mar-Ago ... string periodo = ""; if (Request.QueryString["periodo"] != null) { periodo = Request.QueryString["periodo"].ToString(); } // ---------------------------------------------------------------------------------------------------------------------- // agregamos este flag luego de la reconversión del 1-Oct-21 // la idea es que el usuario pueda decidir si reconvertir montos bool bReconvertirCifrasAntes_01Oct2021 = false; if (Session["ReconvertirCifrasAntes_01Oct2021"] != null) { bReconvertirCifrasAntes_01Oct2021 = (bool)Session["ReconvertirCifrasAntes_01Oct2021"]; } // ---------------------------------------------------------------------------------------------------------------------- // leemos la tabla de monedas para 'saber' cual es la moneda Bs. Nota: la idea es aplicar las opciones de reconversión // *solo* a esta moneda var monedaNacional_return = Reconversion.Get_MonedaNacional(); if (monedaNacional_return.error) { ErrMessage_Cell.InnerHtml = monedaNacional_return.message; break; } Monedas monedaNacional = monedaNacional_return.moneda; // ---------------------------------------------------------------------------------------------------------------------- string connectionString = WebConfigurationManager.ConnectionStrings["dbContabConnectionString"].ConnectionString; string query = "Select * From vtTempActivosFijos_ConsultaDepreciacion Where NombreUsuario = @NombreUsuario"; SqlCommand sqlCommand = new SqlCommand(query); sqlCommand.Parameters.AddWithValue("@NombreUsuario", User.Identity.Name); SqlConnection sqlConnnection = new SqlConnection(connectionString); sqlCommand.Connection = sqlConnnection; SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); DataSet dataSet = new DataSet(); try { sqlConnnection.Open(); sqlDataAdapter.Fill(dataSet, "vtTempActivosFijos_ConsultaDepreciacion"); if (dataSet.Tables[0].Rows.Count == 0) { ErrMessage_Cell.InnerHtml = "No existe información para mostrar el reporte que Ud. ha requerido. <br /><br /> Probablemente Ud. no ha aplicado un filtro y seleccionado información aún."; return; } } catch (Exception ex) { string errorMessage = ex.Message; if (ex.InnerException != null) { errorMessage += "<br /><br />" + ex.InnerException.Message; } ErrMessage_Cell.InnerHtml = "Hemos obtenido un error al intentar efectuar una operación de base de datos. <br />" + "El mensaje específico del error es: <br /><br />" + errorMessage; return; } //finally //{ // sqlConnnection.Close(); //} // ahora preparamos una lista para usarla como DataSource del report ... List <ActivosFijos_Report_ConsultaDepreciacion> myList = new List <ActivosFijos_Report_ConsultaDepreciacion>(); ActivosFijos_Report_ConsultaDepreciacion infoDepreciacion; for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++) { infoDepreciacion = new ActivosFijos_Report_ConsultaDepreciacion(); infoDepreciacion.NombreCiaContab = dataSet.Tables[0].Rows[i]["NombreCiaContab"].ToString(); infoDepreciacion.AbreviaturaCiaContab = dataSet.Tables[0].Rows[i]["AbreviaturaCiaContab"].ToString(); infoDepreciacion.NombreDepartamento = dataSet.Tables[0].Rows[i]["NombreDepartamento"].ToString(); infoDepreciacion.Moneda = Convert.ToInt32(dataSet.Tables[0].Rows[i]["Moneda"]); infoDepreciacion.DescripcionMoneda = dataSet.Tables[0].Rows[i]["DescripcionMoneda"].ToString(); infoDepreciacion.SimboloMoneda = dataSet.Tables[0].Rows[i]["SimboloMoneda"].ToString(); infoDepreciacion.NombreTipoProducto = dataSet.Tables[0].Rows[i]["NombreTipoProducto"].ToString(); infoDepreciacion.Producto = dataSet.Tables[0].Rows[i]["Producto"].ToString(); infoDepreciacion.DescripcionProducto = dataSet.Tables[0].Rows[i]["DescripcionProducto"].ToString(); infoDepreciacion.FechaCompra = Convert.ToDateTime(dataSet.Tables[0].Rows[i]["FechaCompra"]); if (DateTime.TryParse(dataSet.Tables[0].Rows[i]["FechaDesincorporacion"].ToString(), out var temp)) { infoDepreciacion.FechaDesincorporacion = temp; } infoDepreciacion.DepreciarDesde = dataSet.Tables[0].Rows[i]["DepreciarDesde"].ToString(); infoDepreciacion.DepreciarDesdeMes = Convert.ToInt16(dataSet.Tables[0].Rows[i]["DepreciarDesdeMes"]); infoDepreciacion.DepreciarDesdeAno = Convert.ToInt16(dataSet.Tables[0].Rows[i]["DepreciarDesdeAno"]); infoDepreciacion.DepreciarHasta = dataSet.Tables[0].Rows[i]["DepreciarHasta"].ToString(); infoDepreciacion.DepreciarHastaMes = Convert.ToInt16(dataSet.Tables[0].Rows[i]["DepreciarHastaMes"]); infoDepreciacion.DepreciarHastaAno = Convert.ToInt16(dataSet.Tables[0].Rows[i]["DepreciarHastaAno"]); infoDepreciacion.CantidadMesesADepreciar = Convert.ToInt16(dataSet.Tables[0].Rows[i]["CantidadMesesADepreciar"]); infoDepreciacion.DepAcum_CantMeses = Convert.ToInt16(dataSet.Tables[0].Rows[i]["DepAcum_CantMeses"]); infoDepreciacion.DepAcum_CantMeses_AnoActual = Convert.ToInt16(dataSet.Tables[0].Rows[i]["DepAcum_CantMeses_AnoActual"]); if (Int16.TryParse(dataSet.Tables[0].Rows[i]["RestaPorDepreciar_Meses"].ToString(), out var temp1)) { infoDepreciacion.RestaPorDepreciar_Meses = temp1; } infoDepreciacion.CostoTotal = Convert.ToDecimal(dataSet.Tables[0].Rows[i]["CostoTotal"]); infoDepreciacion.MontoADepreciar = Convert.ToDecimal(dataSet.Tables[0].Rows[i]["MontoADepreciar"]); infoDepreciacion.DepreciacionMensual = Convert.ToDecimal(dataSet.Tables[0].Rows[i]["DepreciacionMensual"]); infoDepreciacion.DepAcum_AnoActual = Convert.ToDecimal(dataSet.Tables[0].Rows[i]["DepAcum_AnoActual"]); infoDepreciacion.DepAcum_Total = Convert.ToDecimal(dataSet.Tables[0].Rows[i]["DepAcum_Total"]); if (Decimal.TryParse(dataSet.Tables[0].Rows[i]["RestaPorDepreciar"].ToString(), out var temp2)) { infoDepreciacion.RestaPorDepreciar = temp2; } infoDepreciacion.NombreUsuario = dataSet.Tables[0].Rows[i]["NombreUsuario"].ToString(); myList.Add(infoDepreciacion); } // si el usuario indicó que quería reconvertir montos anteriores a Oct/2021, lo hacemos ahora if (bReconvertirCifrasAntes_01Oct2021) { foreach (var item in myList) { if (item.Moneda == monedaNacional.Moneda && item.FechaCompra < new DateTime(2021, 10, 1)) { item.CostoTotal = Math.Round((item.CostoTotal / 1000000), 2); } } } this.ReportViewer1.LocalReport.ReportPath = "ActivosFijos/Consultas/DepreciacionMensual/ConsultaDepreciacion.rdlc"; ReportDataSource myReportDataSource = new ReportDataSource(); myReportDataSource.Name = "DataSet1"; myReportDataSource.Value = myList; // dataSet.Tables["vtTempActivosFijos_ConsultaDepreciacion"]; this.ReportViewer1.LocalReport.DataSources.Add(myReportDataSource); this.ReportViewer1.LocalReport.Refresh(); List <ReportParameter> reportParameterCollection = new List <ReportParameter>(); reportParameterCollection.Add(new ReportParameter("tituloReporte", titutlo)); reportParameterCollection.Add(new ReportParameter("subTituloReporte", subTitulo)); reportParameterCollection.Add(new ReportParameter("mes", mes)); reportParameterCollection.Add(new ReportParameter("ano", ano)); reportParameterCollection.Add(new ReportParameter("soloTotales", soloTotales.ToString())); reportParameterCollection.Add(new ReportParameter("periodo", periodo)); this.ReportViewer1.LocalReport.SetParameters(reportParameterCollection); break; } case "movimientosbancarios": { if (!User.Identity.IsAuthenticated) { FormsAuthentication.SignOut(); return; } if (Request.QueryString["tit"] == null || Request.QueryString["subtit"] == null || Request.QueryString["filter"] == null) { ErrMessage_Cell.InnerHtml = "Aparentemente, Ud. no ha seleccionado aún información para la obtención de este reporte.<br /><br />" + "Probablemente, Ud. no ha definido y aplicado un filtro que permita seleccionar información apropiada para la obtención " + "de este reporte."; break; } string titutlo = Request.QueryString["tit"].ToString(); string subTitulo = Request.QueryString["subtit"].ToString(); string filter = Request.QueryString["filter"].ToString(); BancosEntities bancosContext = new BancosEntities(); var query = bancosContext.MovimientosBancarios. Include("Chequera"). Include("Chequera.CuentasBancaria"). Include("Chequera.CuentasBancaria.Compania"). Include("Chequera.CuentasBancaria.Moneda1"). Include("Chequera.CuentasBancaria.Agencia1"). Include("Chequera.CuentasBancaria.Agencia1.Banco1"). Where(filter); if (query.Count() == 0) { ErrMessage_Cell.InnerHtml = "No existe información para mostrar el reporte " + "que Ud. ha requerido. <br /><br /> Probablemente Ud. no ha aplicado un " + "filtro y seleccionado información aún."; return; } // ahora preparamos una lista para usarla como DataSource del report ... List <Bancos_Report_ConsultaMovimientoBancario> myList = new List <Bancos_Report_ConsultaMovimientoBancario>(); Bancos_Report_ConsultaMovimientoBancario infoMovimientoBancario; foreach (MovimientosBancario movimiento in query) { infoMovimientoBancario = new Bancos_Report_ConsultaMovimientoBancario(); infoMovimientoBancario.NombreMoneda = movimiento.Chequera.CuentasBancaria.Moneda1.Descripcion; infoMovimientoBancario.NombreCiaContab = movimiento.Chequera.CuentasBancaria.Compania.Nombre; infoMovimientoBancario.Transaccion = movimiento.Transaccion; infoMovimientoBancario.Tipo = movimiento.Tipo; infoMovimientoBancario.Fecha = movimiento.Fecha; infoMovimientoBancario.NombreBanco = movimiento.Chequera.CuentasBancaria.Agencia1.Banco1.Nombre; infoMovimientoBancario.CuentaBancaria = movimiento.Chequera.CuentasBancaria.CuentaBancaria; infoMovimientoBancario.Beneficiario = movimiento.Beneficiario; infoMovimientoBancario.Concepto = movimiento.Concepto; infoMovimientoBancario.Monto = movimiento.Monto; infoMovimientoBancario.FechaEntregado = movimiento.FechaEntregado; myList.Add(infoMovimientoBancario); } this.ReportViewer1.LocalReport.ReportPath = "Bancos/ConsultasBancos/MovimientosBancarios/ConsultaMovimientosBancarios.rdlc"; ReportDataSource myReportDataSource = new ReportDataSource(); myReportDataSource.Name = "DataSet1"; myReportDataSource.Value = myList; this.ReportViewer1.LocalReport.DataSources.Add(myReportDataSource); this.ReportViewer1.LocalReport.Refresh(); ReportParameter titulo_ReportParameter = new ReportParameter("tituloReporte", titutlo); ReportParameter subTitulo_ReportParameter = new ReportParameter("subTituloReporte", subTitulo); ReportParameter[] MyReportParameters = { titulo_ReportParameter, subTitulo_ReportParameter }; this.ReportViewer1.LocalReport.SetParameters(MyReportParameters); break; } case "pagos": { if (!User.Identity.IsAuthenticated) { FormsAuthentication.SignOut(); return; } if (Request.QueryString["tit"] == null || Request.QueryString["subtit"] == null || Request.QueryString["filter"] == null) { ErrMessage_Cell.InnerHtml = "Aparentemente, Ud. no ha seleccionado aún información para la obtención de este reporte.<br /><br />" + "Probablemente, Ud. no ha definido y aplicado un filtro que permita seleccionar información apropiada para la obtención " + "de este reporte."; break; } string titutlo = Request.QueryString["tit"].ToString(); string subTitulo = Request.QueryString["subtit"].ToString(); string filter = Request.QueryString["filter"].ToString(); BancosEntities bancosContext = new BancosEntities(); var query = bancosContext.Pagos. Include("Proveedore"). Include("Compania"). Include("Moneda1"). Where(filter); if (query.Count() == 0) { ErrMessage_Cell.InnerHtml = "No existe información para mostrar el reporte " + "que Ud. ha requerido. <br /><br /> Probablemente Ud. no ha aplicado un " + "filtro y seleccionado información aún."; return; } // ahora preparamos una lista para usarla como DataSource del report ... List <Bancos_Report_ConsultaPago> myList = new List <Bancos_Report_ConsultaPago>(); Bancos_Report_ConsultaPago infoPago; foreach (Pago pago in query) { infoPago = new Bancos_Report_ConsultaPago(); infoPago.NombreMoneda = pago.Moneda1.Descripcion; infoPago.NombreCiaContab = pago.Compania.Nombre; infoPago.Fecha = pago.Fecha; infoPago.NombreCompania = pago.Proveedore.Abreviatura; infoPago.NumeroPago = pago.NumeroPago; infoPago.MiSu = pago.MiSuFlag == 1 ? "Mi" : "Su"; infoPago.Concepto = pago.Concepto; infoPago.Monto = pago.Monto != null ? pago.Monto.Value : 0; myList.Add(infoPago); } this.ReportViewer1.LocalReport.ReportPath = "Bancos/Consultas facturas/Pagos/ConsultaPagos.rdlc"; ReportDataSource myReportDataSource = new ReportDataSource(); myReportDataSource.Name = "DataSet1"; myReportDataSource.Value = myList; this.ReportViewer1.LocalReport.DataSources.Add(myReportDataSource); this.ReportViewer1.LocalReport.Refresh(); ReportParameter titulo_ReportParameter = new ReportParameter("tituloReporte", titutlo); ReportParameter subTitulo_ReportParameter = new ReportParameter("subTituloReporte", subTitulo); ReportParameter[] MyReportParameters = { titulo_ReportParameter, subTitulo_ReportParameter }; this.ReportViewer1.LocalReport.SetParameters(MyReportParameters); break; } } } }
public HttpResponseMessage LeerCompanias() { if (!User.Identity.IsAuthenticated) { var errorResult = new { ErrorFlag = true, ErrorMessage = "Error: por favor haga un login a esta aplicación, y luego regrese a ejecutar esta función." }; return(Request.CreateResponse(HttpStatusCode.OK, errorResult)); } // -------------------------------------------------------------------------------------------------------------------------- // establecemos una conexión a mongodb string contabm_mongodb_connection = System.Web.Configuration.WebConfigurationManager.AppSettings["contabm_mongodb_connectionString"]; string contabM_mongodb_name = System.Web.Configuration.WebConfigurationManager.AppSettings["contabM_mongodb_name"]; var client = new MongoClient(contabm_mongodb_connection); // var server = client.GetServer(); // nótese como el nombre de la base de datos mongo (de contabM) está en el archivo webAppSettings.config; en este db se registran las vacaciones var mongoDataBase = client.GetDatabase(contabM_mongodb_name); // -------------------------------------------------------------------------------------------------------------------------- var companiasMongoCollection = mongoDataBase.GetCollection <Compania_mongodb>("Compania"); try { // -------------------------------------------------------------------------------------------------------------------------- // eliminamos las facturas en la tabla 'temporal' que corresponden al usuario var builder = Builders <Compania_mongodb> .Filter; var filter = builder.Eq(x => x.Id, -999999999); companiasMongoCollection.DeleteManyAsync(filter); } catch (Exception ex) { string message = ex.Message; if (ex.InnerException != null) { message += "<br />" + ex.InnerException.Message; } message = "Se producido un error al intentar ejecutar una operación en mongodb.<br />" + "El mensaje específico del error es:<br />" + message; var errorResult = new { errorFlag = true, resultMessage = "Error: se ha producido un error al intentar efectuar una operación en la base de datos.<br />" + "El mensaje específico de error es: <br />" + message }; return(Request.CreateResponse(HttpStatusCode.OK, errorResult)); } using (BancosEntities bancosContext = new BancosEntities()) { try { List <Compania_ActualizarCuentasBancarias> companias = new List <Compania_ActualizarCuentasBancarias>(); Compania_ActualizarCuentasBancarias compania; var query = bancosContext.Proveedores.Select(c => new { nombre = c.Nombre, id = c.Proveedor, ciudad = c.tCiudade.Descripcion, clienteProveedor = c.ProveedorClienteFlag, tipo = c.TiposProveedor.Descripcion, rif = c.Rif, naturalJuridico = c.NatJurFlag }).ToList(); foreach (var c in query) { compania = new Compania_ActualizarCuentasBancarias(); compania.nombre = c.nombre; compania.id = c.id; compania.ciudad = c.ciudad; compania.clienteProveedor = c.clienteProveedor; compania.tipo = c.tipo; compania.rif = c.rif; compania.naturalJuridico = c.naturalJuridico; // ahora buscamos la compañía en mongo; si existe, agregamos las cuentas bancarias ... var companiaMongo = companiasMongoCollection.AsQueryable().Where(e => e.Id == compania.id).FirstOrDefault(); if (companiaMongo != null) { Compania_ActualizarCuentasBancarias_CuentaBancaria cuentaBancaria; foreach (var cuentaBancos in companiaMongo.cuentasBancarias) { cuentaBancaria = new Compania_ActualizarCuentasBancarias_CuentaBancaria(); cuentaBancaria.numero = cuentaBancos.numero; cuentaBancaria.banco = cuentaBancos.banco; cuentaBancaria.isDefault = cuentaBancos.isDefault; cuentaBancaria.tipo = cuentaBancos.tipo; compania.cuentasBancarias.Add(cuentaBancaria); } } companias.Add(compania); } var result = new { errorFlag = false, resultMessage = "", companias = companias }; return(Request.CreateResponse(HttpStatusCode.OK, result)); } catch (Exception ex) { string message = ex.Message; if (ex.InnerException != null) { message += "<br />" + ex.InnerException.Message; } var errorResult = new { errorFlag = true, resultMessage = "Error: se ha producido un error al intentar efectuar una operación en la base de datos.<br />" + "El mensaje específico de error es: <br />" + message }; return(Request.CreateResponse(HttpStatusCode.OK, errorResult)); } } }
protected void Ok_Button_Click(object sender, EventArgs e) { // ahora recorremos los movimientos bancarios seleccionados y construimos un txt file con // los datos necesarios para que el usuario inicie un proceso de mail merge usando Word ... if (Session["FiltroForma"] == null) { this.CustomValidator1.IsValid = false; this.CustomValidator1.ErrorMessage = "No se ha podido acceder a los registros necesarios para ejecutar este proceso.<br />" + "Probablemente, Ud. no ha definido y aplicado un filtro aún que permita a este proceso leer y procesar registros."; ValidationSummary1.ShowSummary = true; return; } StringBuilder sb; // Create the CSV file on the server String fileName = @"OrdenesPago_" + User.Identity.Name + ".txt"; String filePath = HttpContext.Current.Server.MapPath("~/Temp/" + fileName); StreamWriter sw = new StreamWriter(filePath, false); // First we will write the headers. sb = new StringBuilder(); sb.Append("\"CiaContabNombre\""); sb.Append("\t"); sb.Append("\"Fecha\""); sb.Append("\t"); sb.Append("\"Beneficiario\""); sb.Append("\t"); sb.Append("\"Moneda\""); sb.Append("\t"); sb.Append("\"Monto\""); sb.Append("\t"); sb.Append("\"MonedaYMonto\""); sb.Append("\t"); sb.Append("\"Concepto\""); sb.Append("\t"); sb.Append("\"Soporte1\""); sb.Append("\t"); sb.Append("\"Soporte2\""); sb.Append("\t"); sb.Append("\"Soporte3\""); sb.Append("\t"); sb.Append("\"Soporte4\""); sb.Append("\t"); sb.Append("\"Soporte5\""); sb.Append("\t"); sb.Append("\"RealizadoPor\""); sb.Append("\t"); sb.Append("\"CargoRealizadoPor\""); sb.Append("\t"); sb.Append("\"RevisadoPor\""); sb.Append("\t"); sb.Append("\"CargoRevisadoPor\""); sb.Append("\t"); sb.Append("\"AutorizadoPor1\""); sb.Append("\t"); sb.Append("\"CargoAutorizadoPor1\""); sb.Append("\t"); sb.Append("\"AutorizadoPor2\""); sb.Append("\t"); sb.Append("\"CargoAutorizadoPor2\""); sw.Write(sb.ToString()); sw.Write(sw.NewLine); // Now write all the rows. BancosEntities bancosContext = new BancosEntities(); var query = bancosContext.MovimientosBancarios. Include("Chequera"). Include("Chequera.CuentasBancaria"). Include("Chequera.CuentasBancaria.Compania"). Include("Chequera.CuentasBancaria.Moneda1"). Include("Chequera.CuentasBancaria.Agencia1"). Include("Chequera.CuentasBancaria.Agencia1.Banco1"). Where(Session["FiltroForma"].ToString()); int cantidadRegistrosLeidos = 0; foreach (MovimientosBancario m in query) { //sw.Write(","); //sw.Write(sw.NewLine); sb = new StringBuilder(); sb.Append("\"" + m.Chequera.CuentasBancaria.Compania.Nombre + "\""); sb.Append("\t"); sb.Append("\"" + m.Fecha.ToString("dd-MMM-yyyy") + "\""); sb.Append("\t"); sb.Append("\"" + m.Beneficiario + "\""); sb.Append("\t"); sb.Append("\"" + m.Chequera.CuentasBancaria.Moneda1.Simbolo + "\""); sb.Append("\t"); sb.Append("\"" + Math.Abs(m.Monto).ToString("N2") + "\""); sb.Append("\t"); sb.Append("\"" + m.Chequera.CuentasBancaria.Moneda1.Simbolo + " " + Math.Abs(m.Monto).ToString("N2") + "\""); sb.Append("\t"); sb.Append("\"" + m.Concepto + "\""); sb.Append("\t"); // escribimos hasta 5 soportes int i = 1; foreach (ListItem item in this.Soportes_CheckBoxList.Items) { if (item.Selected) { sb.Append("\"" + item.Text + "\""); sb.Append("\t"); i++; } if (i == 6) { break; } } for (int j = i; j <= 5; j++) { // si el usuario menos de 5 soportes, agregamos el resto en blanco ... sb.Append("\t"); } // declaramos un context para las tablas de nómina, para leer el cargo de cada empleado indicado ... NominaEntities nominaContext = new NominaEntities(); // realizado por if (this.RealizadoPor_DropDownList.SelectedValue != "Indefinido") { sb.Append("\"" + this.RealizadoPor_DropDownList.SelectedItem.Text + "\""); sb.Append("\t"); int empleadoID = Convert.ToInt32(this.RealizadoPor_DropDownList.SelectedValue); string nombreCargo = (from c in nominaContext.tEmpleados where c.Empleado == empleadoID select c).FirstOrDefault().tCargo.Descripcion; sb.Append("\"" + nombreCargo + "\""); sb.Append("\t"); } else { sb.Append("\t"); sb.Append("\t"); } // revisado por if (this.RevisadoPor_DropDownList.SelectedValue != "Indefinido") { sb.Append("\"" + this.RevisadoPor_DropDownList.SelectedItem.Text + "\""); sb.Append("\t"); int empleadoID = Convert.ToInt32(this.RevisadoPor_DropDownList.SelectedValue); string nombreCargo = (from c in nominaContext.tEmpleados where c.Empleado == empleadoID select c).FirstOrDefault().tCargo.Descripcion; sb.Append("\"" + nombreCargo + "\""); sb.Append("\t"); } else { sb.Append("\t"); sb.Append("\t"); } // autorizado por (1) if (this.AutorizadoPor1_DropDownList.SelectedValue != "Indefinido") { sb.Append("\"" + this.AutorizadoPor1_DropDownList.SelectedItem.Text + "\""); sb.Append("\t"); int empleadoID = Convert.ToInt32(this.AutorizadoPor1_DropDownList.SelectedValue); string nombreCargo = (from c in nominaContext.tEmpleados where c.Empleado == empleadoID select c).FirstOrDefault().tCargo.Descripcion; sb.Append("\"" + nombreCargo + "\""); sb.Append("\t"); } else { sb.Append("\t"); sb.Append("\t"); } // autorizado por (2) if (this.AutorizadoPor2_DropDownList.SelectedValue != "Indefinido") { sb.Append("\"" + this.AutorizadoPor2_DropDownList.SelectedItem.Text + "\""); sb.Append("\t"); int empleadoID = Convert.ToInt32(this.AutorizadoPor2_DropDownList.SelectedValue); string nombreCargo = (from c in nominaContext.tEmpleados where c.Empleado == empleadoID select c).FirstOrDefault().tCargo.Descripcion; sb.Append("\"" + nombreCargo + "\""); } else { sb.Append("\t"); //sb.Append("\t"); } sw.Write(sb.ToString()); sw.Write(sw.NewLine); cantidadRegistrosLeidos++; } // finally close the file sw.Close(); if (cantidadRegistrosLeidos == 0) { this.CustomValidator1.IsValid = false; this.CustomValidator1.ErrorMessage = "No se ha podido acceder a los registros necesarios para ejecutar este proceso.<br />" + "Probablemente, Ud. no ha definido y aplicado un filtro aún que permita a este proceso leer y procesar registros."; ValidationSummary1.ShowSummary = true; return; } string message = "Ok, el archivo requerido ha sido generado en forma satisfactoria. <br />" + "La cantidad de lineas que se han grabado al archivo es: " + cantidadRegistrosLeidos.ToString() + ". <br />" + "El nombre del archivo (en el servidor) es: " + filePath; Message_Span.InnerHtml = message; Message_Span.Style["display"] = "block"; DownloadFile_LinkButton.Visible = true; this.FileName_HiddenField.Value = filePath; // ------------------------------------------------------------------------------------------------------------------------- // para guardar el contenido de los controles de la página para recuperar el state cuando se abra la proxima vez KeepPageState MyKeepPageState = new KeepPageState(Membership.GetUser().UserName, this.GetType().Name.ToString()); MyKeepPageState.SavePageStateInFile(this.Controls); MyKeepPageState = null; // ------------------------------------------------------------------------------------------------------------------------- }
public FuncionesBancos(BancosEntities bancosContext) { _bancosContext = bancosContext; }