private void LlenarVendedores(int iSemana) { this.dgvVendedor.Rows.Clear(); if (iSemana <= 0) { return; } var oParams = this.ObtenerParametros(); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); // Se llena el grid de Vendedor var oConsulta = oDatos.Where(c => UtilTheos.SemanaSabAVie(c.Fecha) == iSemana).GroupBy(g => new { g.VendedorID, g.Vendedor }).Select( c => new { c.Key.VendedorID, c.Key.Vendedor, Actual = c.Sum(s => s.Actual), Anterior = c.Sum(s => s.Anterior) }).OrderByDescending(c => c.Actual); decimal mTotal = (oConsulta.Count() > 0 ? oConsulta.Sum(c => c.Actual).Valor() : 0); foreach (var oReg in oConsulta) { this.dgvVendedor.Rows.Add(oReg.VendedorID, oReg.Vendedor, oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, mTotal) * 100)); } // Se llenan los totales decimal mTotalAnt = (oConsulta.Count() > 0 ? oConsulta.Sum(c => c.Anterior).Valor() : 0); this.dgvVendedorT["VendedorT_Actual", 0].Value = mTotal; this.dgvVendedorT["VendedorT_Anterior", 0].Value = mTotalAnt; this.dgvVendedorT["VendedorT_Resultado", 0].Value = Util.DividirONull(mTotal, mTotalAnt); }
private void MostrarDetalle(int iCotizacion9500ID) { this.o9500.ctlComDetalle.LimpiarDetalle(); ProductoVenta oProductoV; var Detalle = Datos.GetListOf <Cotizaciones9500DetalleView>(q => q.Cotizacion9500ID == iCotizacion9500ID); foreach (var Producto in Detalle) { oProductoV = new ProductoVenta() { ParteID = Producto.ParteID, NumeroDeParte = Producto.NumeroParte, NombreDeParte = Producto.NombreParte, Cantidad = Producto.Cantidad, PrecioUnitario = UtilTheos.ObtenerPrecioSinIva(Producto.PrecioAlCliente, 3), Iva = UtilTheos.ObtenerIvaDePrecio(Producto.PrecioAlCliente, 3) // PrecioConIva = Producto.PrecioAlCliente }; this.o9500.ctlComDetalle.AgregarProducto(oProductoV); } this.o9500.ctlComDetalle.VerExistenciaLista(); // Se actualiza el Cliente this.oCotizacion9500 = Datos.GetEntity <Cotizacion9500>(q => q.Cotizacion9500ID == iCotizacion9500ID && q.Estatus); this.ComCliente = Datos.GetEntity <ClientesDatosView>(q => q.ClienteID == oCotizacion9500.ClienteID); this.o9500.ClienteCompletar(this.ComCliente); // Se guarda el anticipo this.ComAnticipoSel = oCotizacion9500.Anticipo; }
protected void LlenarSemanasCompras(int iId) { this.dgvSemanas.Rows.Clear(); this.chrSemanas.Series["Actual"].Points.Clear(); this.chrSemanas.Series["Pasado"].Points.Clear(); if (iId <= 0) { return; } var oParams = this.ObtenerParametrosCompras(); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlCompras_Result>("pauCuadroDeControlCompras", oParams); // Se llena el grid y la gráfica de Semanas var oConsulta = oDatos.Where(c => c.ProveedorID == iId).GroupBy(g => UtilTheos.SemanaSabAVie(g.Fecha.Valor())).Select( c => new { Semana = c.Key, Actual = c.Sum(s => s.Actual), Anterior = c.Sum(s => s.Anterior) }).OrderBy(c => c.Semana); decimal mTotal = (oConsulta.Count() > 0 ? oConsulta.Sum(c => c.Actual).Valor() : 0); foreach (var oReg in oConsulta) { this.dgvSemanas.Rows.Add(oReg.Semana, oReg.Semana, oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, mTotal) * 100)); // Para la gráfica this.chrSemanas.Series["Actual"].Points.AddXY(oReg.Semana, oReg.Actual); this.chrSemanas.Series["Pasado"].Points.AddXY(oReg.Semana, oReg.Anterior); } }
private void LlenarGraficaSemanas(int?iVendedorID) { this.chrSemana.Series["Actual"].Points.Clear(); this.chrSemana.Series["Anterior"].Points.Clear(); if (iVendedorID <= 0) { return; } var oParams = this.ObtenerParametros(); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); // Se llena la gráfica IEnumerable <pauCuadroDeControlGeneralNuevo_Result> oFiltro = oDatos; if (iVendedorID.HasValue) { oFiltro = oDatos.Where(c => c.VendedorID == iVendedorID); } // var oConsulta = oFiltro.GroupBy(g => new { Semana = UtilTheos.SemanaSabAVie(g.Fecha) }).Select( c => new { c.Key.Semana, Actual = c.Sum(s => s.Actual), Anterior = c.Sum(s => s.Anterior) }).OrderBy(c => c.Semana); foreach (var oReg in oConsulta) { this.chrSemana.Series["Actual"].Points.AddXY(oReg.Semana, oReg.Actual); this.chrSemana.Series["Anterior"].Points.AddXY(oReg.Semana, oReg.Anterior); } }
private void LlenarColumnasAnio(int iAnio) { // Se borran las columnas de semanas for (int iCol = (this.dgvDatos.Columns.Count - 1); iCol >= this.iColumnasFijas; iCol--) { this.dgvDatos.Columns.RemoveAt(iCol); } // Se agregan las nuevas columnas DateTime dDia = new DateTime(iAnio, DateTime.Now.Month, DateTime.Now.Day); DateTime dIni = UtilTheos.InicioSemanaSabAVie(new DateTime(iAnio, 1, 1)); int iColSem = 0; while (dIni.Year <= iAnio) { string sEnc = string.Format("{0}\n{1}", dIni.ToString("dd/MMM"), dIni.AddDays(6).ToString("dd/MMM")); var oCol = new DataGridViewTextBoxColumn() { Name = dIni.ToShortDateString(), HeaderText = sEnc }; oCol.FormatoMoneda(); this.dgvDatos.Columns.Add(oCol); if (dDia >= dIni && dDia < dIni.AddDays(7)) { iColSem = this.dgvDatos.Columns.Count; } dIni = dIni.AddDays(7); } this.dgvDatos.FirstDisplayedScrollingColumnIndex = (iColSem - 1); this.FormatoColumnas(); }
protected override void LlenarPartes(int iGridFuente, int iIdPrincipal, int iId) { this.dgvPartes.Rows.Clear(); if (iId <= 0) { return; } var oParams = this.ObtenerParametros(); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); var oConsulta = oDatos.Where(c => c.VendedorID == iIdPrincipal && c.Fecha >= this.dtpDesde.Value.Date); switch (iGridFuente) { case CuadroMultiple.GridFuente.Grupos: this.LlenarDetalle(oConsulta, iId); /* foreach (var oReg in oConsulta) * { * var oVentasDetV = General.GetListOf<VentasDetalleView>(c => c.VentaID == oReg.VentaID && c.LineaID == iId); * foreach (var oDet in oVentasDetV) * this.dgvPartes.Rows.Add(oReg.Fecha, oReg.Folio, oDet.NumeroParte, oDet.NombreParte, * ((oDet.PrecioUnitario - oDet.CostoConDescuento) * oDet.Cantidad)); * } */ return; case CuadroMultiple.GridFuente.Meses: case CuadroMultiple.GridFuente.Semanas: DateTime dIni, dFin; if (iGridFuente == CuadroMultiple.GridFuente.Semanas) { dIni = UtilTheos.InicioSemanaSabAVie(this.dtpDesde.Value.Year, iId); dFin = dIni.AddDays(6).AddDays(1); } else { dIni = new DateTime(this.dtpDesde.Value.Year, iId, 1); dFin = dIni.DiaUltimo().AddDays(1); } oConsulta = oConsulta.Where(c => (c.Fecha >= dIni && c.Fecha < dFin)); break; case CuadroMultiple.GridFuente.Sucursales: oConsulta = oConsulta.Where(c => c.SucursalID == iId); break; } // Se llena el grid this.LlenarDetalle(oConsulta, null); /* foreach (var oReg in oConsulta) * { * var oVentasDetV = General.GetListOf<VentasDetalleView>(c => c.VentaID == oReg.VentaID); * foreach (var oDet in oVentasDetV) * this.dgvPartes.Rows.Add(oReg.Fecha, oReg.Folio, oDet.NumeroParte, oDet.NombreParte, ((oDet.PrecioUnitario - oDet.CostoConDescuento) * oDet.Cantidad)); * }*/ }
public GastoCajaAPoliza(decimal mImporte) { InitializeComponent(); this.txtImporte.Text = mImporte.ToString(); this.txtSubtotal.Text = UtilTheos.ObtenerPrecioSinIva(mImporte).ToString(); this.txtIva.Text = UtilTheos.ObtenerIvaDePrecio(mImporte).ToString(); }
protected void LlenarPartesCompras(int iGridFuente, int iIdPrincipal, int iId) { this.dgvPartes.Rows.Clear(); if (iId <= 0) { return; } var oParams = this.ObtenerParametrosCompras(); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlCompras_Result>("pauCuadroDeControlCompras", oParams); var oConsulta = oDatos.Where(c => c.ProveedorID == iId); switch (iGridFuente) { case CuadroMultiple.GridFuente.Grupos: foreach (var oReg in oConsulta) { var oDetV = Datos.GetListOf <MovimientoInventarioDetalleView>(c => c.MovimientoInventarioID == oReg.MovimientoInventarioID && c.LineaID == iId); foreach (var oRegDet in oDetV) { this.dgvPartes.Rows.Add(oReg.Fecha, oReg.FolioFactura, oRegDet.NumeroParte, oRegDet.NombreParte , (oRegDet.PrecioUnitarioConDescuento * oRegDet.Cantidad)); } } return; case CuadroMultiple.GridFuente.Meses: case CuadroMultiple.GridFuente.Semanas: DateTime dIni, dFin; if (iGridFuente == CuadroMultiple.GridFuente.Semanas) { dIni = UtilTheos.InicioSemanaSabAVie(this.dtpDesde.Value.Year, iId); dFin = dIni.AddDays(6).AddDays(1); } else { dIni = new DateTime(this.dtpDesde.Value.Year, iId, 1); dFin = dIni.DiaUltimo().AddDays(1); } oConsulta = oConsulta.Where(c => (c.Fecha >= dIni && c.Fecha < dFin)); break; } // Se llena el grid foreach (var oReg in oConsulta) { var oDetV = Datos.GetListOf <MovimientoInventarioDetalleView>(c => c.MovimientoInventarioID == oReg.MovimientoInventarioID); foreach (var oRegDet in oDetV) { this.dgvPartes.Rows.Add(oReg.Fecha, oReg.FolioFactura, oRegDet.NumeroParte, oRegDet.NombreParte , (oRegDet.PrecioUnitarioConDescuento * oRegDet.Cantidad)); } } }
private void CalcularPrecios() { // Se obtiene el registro correspondiente para los porcentajes var oParteGan = this.ObtenerParteGanancia(this.ParteIDSel); decimal mCosto = Util.Decimal(this.txtCosto.Text); if (oParteGan == null) { if (this.chkPrecioAutomatico.Checked) { this.txtPrecio.Text = ""; } this.lblPrecio1.Text = ""; this.lblPrecio2.Text = ""; this.lblPrecio3.Text = ""; this.lblPrecio4.Text = ""; this.lblPrecio5.Text = ""; } else { decimal[] Precios = new decimal[] { UtilTheos.AplicarRedondeo(mCosto * oParteGan.PorcentajeDeGanancia1) , UtilTheos.AplicarRedondeo(mCosto * oParteGan.PorcentajeDeGanancia2) , UtilTheos.AplicarRedondeo(mCosto * oParteGan.PorcentajeDeGanancia3) , UtilTheos.AplicarRedondeo(mCosto * oParteGan.PorcentajeDeGanancia4) , UtilTheos.AplicarRedondeo(mCosto * oParteGan.PorcentajeDeGanancia5) }; // Se contempla el costo de la paquetería if (this.chkPaqueteria.Checked) { decimal mPaqueteria = Util.Decimal(this.txtCostoPaqueteria.Text); for (int iCont = 0; iCont < Precios.Length; iCont++) { Precios[iCont] += mPaqueteria; } } // Se asignan los precios this.lblPrecio1.Text = Precios[0].ToString(GlobalClass.FormatoMoneda); this.lblPrecio2.Text = Precios[1].ToString(GlobalClass.FormatoMoneda); this.lblPrecio3.Text = Precios[2].ToString(GlobalClass.FormatoMoneda); this.lblPrecio4.Text = Precios[3].ToString(GlobalClass.FormatoMoneda); this.lblPrecio5.Text = Precios[4].ToString(GlobalClass.FormatoMoneda); // Se asigna el precio automático, si aplica if (this.chkPrecioAutomatico.Checked) { this.txtPrecio.Text = Precios[this.Cliente.ListaDePrecios - 1].ToString(); } } }
private void CargarPorSemana(List <pauCuadroDeControlCobranza_Result> oDatos) { var oPorSemana = this.AgruparPorEntero(oDatos.GroupBy(g => UtilTheos.SemanaSabAVie(g.Vencimiento.Valor()))); this.dgvPorSemana.Rows.Clear(); this.chrPorSemana.Series["Expectativa"].Points.Clear(); this.chrPorSemana.Series["Cobrado"].Points.Clear(); foreach (var oReg in oPorSemana) { this.dgvPorSemana.Rows.Add(oReg.Llave, oReg.Esperado, oReg.Pagado , Util.DividirONull(oReg.Pagado, oReg.Esperado), Util.DividirONull(oReg.Pagado, oReg.PagadoAnt)); this.chrPorSemana.Series["Expectativa"].Points.AddXY(oReg.Llave, oReg.Esperado); this.chrPorSemana.Series["Cobrado"].Points.AddXY(oReg.Llave, oReg.Pagado); } // this.dgvPorSemanaT["SemanaT_Actual", 0].Value = (oPorSemana.Count() > 0 ? oPorSemana.Average(c => c.Actual) : 0); // this.dgvPorSemanaT["SemanaT_Anterior", 0].Value = (oPorSemana.Count() > 0 ? oPorSemana.Average(c => c.Anterior) : 0); }
protected void LlenarGraficaSemanasTodos() { // Se limpian los puntos de las series foreach (Series oSerie in this.chrSemanas.Series) { oSerie.Points.Clear(); } var oParams = this.ObtenerParametros(); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); // Se empieza a llenar el gráfico var oConsulta = this.AgruparPorEnteroCadenaEntero(oDatos.GroupBy(g => new AgrupadoPorEnteroCadenaEntero() { Llave = g.VendedorID, Cadena = g.Vendedor, Entero = UtilTheos.SemanaSabAVie(g.Fecha) })); foreach (var oReg in oConsulta) { string sSerie = oReg.Llave.ToString(); // Si la serie no existe, se crea if (this.chrSemanas.Series.Any(c => c.Name == sSerie)) { this.chrSemanas.Series[sSerie].Points.AddXY(oReg.Entero, oReg.Actual); } else { var oSerie = new Series(sSerie) { ChartType = SeriesChartType.Line, ToolTip = oReg.Cadena, Label = "o", LabelForeColor = Color.Transparent, LabelToolTip = "Semana: #VALX\nImporte: $#VAL", CustomProperties = "LabelStyle=Center", }; oSerie.Points.AddXY(oReg.Entero, oReg.Actual); this.chrSemanas.Series.Add(oSerie); } } }
private void AplicarPorcentajes() { var frmCalculo = new MasterCostos(); frmCalculo.Text = "Porcentajes"; frmCalculo.ModoPrecios = false; if (frmCalculo.ShowDialog(Principal.Instance) == DialogResult.OK) { foreach (DataGridViewRow Fila in this.dgvDatos.Rows) { if (!Util.Logico(Fila.Cells["Procesar"].Value)) { continue; } // Se afectan los porcentajes Fila.Cells["Por1"].Value = frmCalculo.Porcentajes[0]; Fila.Cells["Por2"].Value = frmCalculo.Porcentajes[1]; Fila.Cells["Por3"].Value = frmCalculo.Porcentajes[2]; Fila.Cells["Por4"].Value = frmCalculo.Porcentajes[3]; Fila.Cells["Por5"].Value = frmCalculo.Porcentajes[4]; // Se actualizan los precios, si aplica if (frmCalculo.ActualizarPrecios) { decimal mCosto = Util.Decimal(Fila.Cells["Costo"].Value); Fila.Cells["Precio1"].Value = UtilTheos.AplicarRedondeo(mCosto * frmCalculo.Porcentajes[0]); Fila.Cells["Precio2"].Value = UtilTheos.AplicarRedondeo(mCosto * frmCalculo.Porcentajes[1]); Fila.Cells["Precio3"].Value = UtilTheos.AplicarRedondeo(mCosto * frmCalculo.Porcentajes[2]); Fila.Cells["Precio4"].Value = UtilTheos.AplicarRedondeo(mCosto * frmCalculo.Porcentajes[3]); Fila.Cells["Precio5"].Value = UtilTheos.AplicarRedondeo(mCosto * frmCalculo.Porcentajes[4]); } } } frmCalculo.Dispose(); }
private void CargarDatosPorTipo() { Cargando.Mostrar(); var oFuenteT = new Font(FontFamily.GenericSansSerif, 9, FontStyle.Bold); // Se limpian los datos this.dgvDatos.Rows.Clear(); foreach (var oSerie in this.chrPorSemana.Series) { oSerie.Points.Clear(); } // Se borran las columnas de semanas for (int iCol = (this.dgvDatos.Columns.Count - 1); iCol >= this.iColumnasFijas; iCol--) { this.dgvDatos.Columns.RemoveAt(iCol); } // Se llenan las columnas string sPrefijo = ""; switch (this.cmbTipo.Text) { case "Mensual": sPrefijo = "Mes"; for (int iMes = 1; iMes <= 12; iMes++) { this.dgvDatos.Columns.Add((sPrefijo + iMes.ToString()), DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(iMes).PrimeraMayus()); } break; case "Trimestral": sPrefijo = "Tri"; for (int iMes = 1; iMes <= 12; iMes += 3) { this.dgvDatos.Columns.Add((sPrefijo + iMes.ToString()), DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(iMes).PrimeraMayus()); } break; case "Semestral": sPrefijo = "Sem"; for (int iMes = 1; iMes <= 12; iMes += 6) { this.dgvDatos.Columns.Add((sPrefijo + iMes.ToString()), DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(iMes).PrimeraMayus()); } break; } this.FormatoColumnas(); // Se obtienen los datos para los ingresos int iAnio = Util.Entero(this.cmbAnio.Text); int iSucursalID = Util.Entero(this.cmbSucursal.SelectedValue); DateTime dDesde = new DateTime(iAnio, 1, 1); DateTime dHasta = new DateTime(iAnio, 12, 31); DateTime dHastaMas1 = dHasta.AddDays(1); var oParams = new Dictionary <string, object>(); oParams.Add("SucursalID", (iSucursalID == 0 ? null : (int?)iSucursalID)); oParams.Add("Pagadas", true); oParams.Add("Cobradas", false); oParams.Add("Solo9500", false); oParams.Add("OmitirDomingo", false); oParams.Add("Desde", dDesde); oParams.Add("Hasta", dHasta); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); oDatos = oDatos.Where(c => c.Fecha >= dDesde).ToList(); List <ConsultaEdr> oConsulta = null; switch (this.cmbTipo.Text) { case "Mensual": oConsulta = oDatos.GroupBy(c => new { Mes = c.Fecha.Month, c.Sucursal }) .Select(c => new ConsultaEdr() { Mes = c.Key.Mes, Sucursal = c.Key.Sucursal , PrecioSinIva = c.Sum(s => s.PrecioSinIvaActual).Valor(), Costo = c.Sum(s => s.CostoDescActual).Valor() }) .OrderBy(c => c.Sucursal).ThenBy(c => c.Mes).ToList(); break; case "Trimestral": oConsulta = oDatos.GroupBy(c => new { Mes = UtilTheos.ObtenerTrimestre(c.Fecha), Sucursal = c.Sucursal }) .Select(c => new ConsultaEdr() { Mes = c.Key.Mes, Sucursal = c.Key.Sucursal , PrecioSinIva = c.Sum(s => s.PrecioSinIvaActual).Valor(), Costo = c.Sum(s => s.CostoDescActual).Valor() }) .OrderBy(c => c.Sucursal).ThenBy(c => c.Mes).ToList(); break; case "Semestral": oConsulta = oDatos.GroupBy(c => new { Mes = UtilTheos.ObtenerSemestre(c.Fecha), Sucursal = c.Sucursal }) .Select(c => new ConsultaEdr() { Mes = c.Key.Mes, Sucursal = c.Key.Sucursal , PrecioSinIva = c.Sum(s => s.PrecioSinIvaActual).Valor(), Costo = c.Sum(s => s.CostoDescActual).Valor() }) .OrderBy(c => c.Sucursal).ThenBy(c => c.Mes).ToList(); break; } // Se agrega la fila de ingresos int iFilaIngresos = this.dgvDatos.Rows.Add("+ Ingresos", oConsulta.Sum(c => c.PrecioSinIva), oConsulta.Average(c => c.PrecioSinIva)); this.dgvDatos.Rows[iFilaIngresos].DefaultCellStyle.Font = oFuenteT; // Se llenan los ingresos string sSucursal = ""; int iFila = 0; foreach (var oReg in oConsulta) { if (sSucursal != oReg.Sucursal) { sSucursal = oReg.Sucursal; iFila = this.dgvDatos.Rows.Add(sSucursal, oConsulta.Where(c => c.Sucursal == sSucursal).Sum(c => c.PrecioSinIva) , oConsulta.Where(c => c.Sucursal == sSucursal).Average(c => c.PrecioSinIva)); } string sColumna = (sPrefijo + oReg.Mes.ToString()); this.dgvDatos[sColumna, iFila].Value = (Util.Decimal(this.dgvDatos[sColumna, iFila].Value) + oReg.PrecioSinIva); this.dgvDatos[sColumna, iFilaIngresos].Value = (Util.Decimal(this.dgvDatos[sColumna, iFilaIngresos].Value) + oReg.PrecioSinIva); } // Se agrega la fila de Costos int iFilaCostos = this.dgvDatos.Rows.Add("- Costos", oConsulta.Sum(c => c.Costo), oConsulta.Average(c => c.Costo)); this.dgvDatos.Rows[iFilaCostos].DefaultCellStyle.Font = oFuenteT; // Se llenan los costos sSucursal = ""; foreach (var oReg in oConsulta) { if (sSucursal != oReg.Sucursal) { sSucursal = oReg.Sucursal; iFila = this.dgvDatos.Rows.Add(sSucursal, oConsulta.Where(c => c.Sucursal == sSucursal).Sum(c => c.Costo) , oConsulta.Where(c => c.Sucursal == sSucursal).Average(c => c.Costo)); } string sColumna = (sPrefijo + oReg.Mes.ToString()); this.dgvDatos[sColumna, iFila].Value = (Util.Decimal(this.dgvDatos[sColumna, iFila].Value) + oReg.Costo); this.dgvDatos[sColumna, iFilaCostos].Value = (Util.Decimal(this.dgvDatos[sColumna, iFilaCostos].Value) + oReg.Costo); } // Se agrega la fila de margen bruto int iFilaMargen = this.dgvDatos.Rows.Add("= Margen Bruto"); this.dgvDatos.Rows[iFilaMargen].DefaultCellStyle.Font = oFuenteT; foreach (DataGridViewColumn oCol in this.dgvDatos.Columns) { if (oCol.Index == 0) { continue; } this.dgvDatos[oCol.Index, iFilaMargen].Value = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaIngresos].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaCostos].Value) ); } // Se obtienen los datos para los gastos oParams.Clear(); oParams.Add("Desde", dDesde); oParams.Add("Hasta", dHasta); var oGastos = Datos.GetListOf <ContaEgresosView>(c => c.Fecha >= dDesde && c.Fecha < dHastaMas1); oConsulta = null; switch (this.cmbTipo.Text) { case "Mensual": oConsulta = oGastos.GroupBy(c => new { Mes = c.Fecha.Month, c.Sucursal }) .Select(c => new ConsultaEdr() { Mes = c.Key.Mes, Sucursal = c.Key.Sucursal, Importe = c.Sum(s => s.ImporteDev).Valor() }) .OrderBy(c => c.Sucursal).ThenBy(c => c.Mes).ToList(); break; case "Trimestral": oConsulta = oGastos.GroupBy(c => new { Mes = UtilTheos.ObtenerTrimestre(c.Fecha), c.Sucursal }) .Select(c => new ConsultaEdr() { Mes = c.Key.Mes, Sucursal = c.Key.Sucursal, Importe = c.Sum(s => s.ImporteDev).Valor() }) .OrderBy(c => c.Sucursal).ThenBy(c => c.Mes).ToList(); break; case "Semestral": oConsulta = oGastos.GroupBy(c => new { Mes = UtilTheos.ObtenerSemestre(c.Fecha), c.Sucursal }) .Select(c => new ConsultaEdr() { Mes = c.Key.Mes, Sucursal = c.Key.Sucursal, Importe = c.Sum(s => s.ImporteDev).Valor() }) .OrderBy(c => c.Sucursal).ThenBy(c => c.Mes).ToList(); break; } // Se agrega la fila de los Gastos int iFilaGastos = this.dgvDatos.Rows.Add("- Gastos", oConsulta.Sum(c => c.Importe), oConsulta.Average(c => c.Importe)); this.dgvDatos.Rows[iFilaGastos].DefaultCellStyle.Font = oFuenteT; // Se llenan los gastos sSucursal = ""; foreach (var oReg in oConsulta) { if (sSucursal != oReg.Sucursal) { sSucursal = oReg.Sucursal; iFila = this.dgvDatos.Rows.Add(sSucursal, oConsulta.Where(c => c.Sucursal == sSucursal).Sum(c => c.Importe) , oConsulta.Where(c => c.Sucursal == sSucursal).Average(c => c.Importe)); } string sColumna = (sPrefijo + oReg.Mes.ToString()); this.dgvDatos[sColumna, iFila].Value = (Util.Decimal(this.dgvDatos[sColumna, iFila].Value) + oReg.Importe); this.dgvDatos[sColumna, iFilaGastos].Value = (Util.Decimal(this.dgvDatos[sColumna, iFilaGastos].Value) + oReg.Importe); } // Se agrega la fila de utilidad, con cada una de las sucursales int iFilaUtilidad = this.dgvDatos.Rows.Add("= Utilidad"); this.dgvDatos.Rows[iFilaUtilidad].DefaultCellStyle.Font = oFuenteT; // Sucursales var oSucursales = Datos.GetListOf <Sucursal>(c => c.Estatus).OrderBy(c => c.NombreSucursal).ToList(); foreach (var oReg in oSucursales) { this.dgvDatos.Rows.Add(oReg.NombreSucursal); } // Se llenan los datos foreach (DataGridViewColumn oCol in this.dgvDatos.Columns) { if (oCol.Index == 0) { continue; } // Utilidad total this.dgvDatos[oCol.Index, iFilaUtilidad].Value = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaMargen].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaGastos].Value) ); // Sucursales for (int i = 1; i <= oSucursales.Count; i++) { this.dgvDatos[oCol.Index, iFilaUtilidad + i].Value = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaIngresos + i].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaCostos + i].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaGastos + i].Value) ); } } // Se obtienen los datos de gastos especiales var oGastosEsp = Datos.GetListOf <ContaEgresosDevengadoEspecialCuentasView>(c => c.Fecha >= dDesde && c.Fecha < dHastaMas1); oConsulta = null; switch (this.cmbTipo.Text) { case "Mensual": oConsulta = oGastosEsp.GroupBy(c => new { Mes = c.Fecha.Month, c.Duenio }) .Select(c => new ConsultaEdr() { Mes = c.Key.Mes, Sucursal = c.Key.Duenio, Importe = c.Sum(s => s.ImporteDev) }) .OrderBy(c => c.Sucursal).ThenBy(c => c.Mes).ToList(); break; case "Trimestral": oConsulta = oGastosEsp.GroupBy(c => new { Mes = UtilTheos.ObtenerTrimestre(c.Fecha), c.Duenio }) .Select(c => new ConsultaEdr() { Mes = c.Key.Mes, Sucursal = c.Key.Duenio, Importe = c.Sum(s => s.ImporteDev) }) .OrderBy(c => c.Sucursal).ThenBy(c => c.Mes).ToList(); break; case "Semestral": oConsulta = oGastosEsp.GroupBy(c => new { Mes = UtilTheos.ObtenerSemestre(c.Fecha), c.Duenio }) .Select(c => new ConsultaEdr() { Mes = c.Key.Mes, Sucursal = c.Key.Duenio, Importe = c.Sum(s => s.ImporteDev) }) .OrderBy(c => c.Sucursal).ThenBy(c => c.Mes).ToList(); break; } // Se agrega la fila de Especiales bool bHay = (oConsulta.Count() > 0); int iFilaEsp = this.dgvDatos.Rows.Add("- Especiales", (bHay ? oConsulta.Sum(c => c.Importe) : 0), (bHay ? oConsulta.Average(c => c.Importe) : 0)); this.dgvDatos.Rows[iFilaEsp].DefaultCellStyle.Font = oFuenteT; // Se llenan los gastos string sDuenio = ""; foreach (var oReg in oConsulta) { if (sDuenio != oReg.Sucursal) { sDuenio = oReg.Sucursal; iFila = this.dgvDatos.Rows.Add(sDuenio, oConsulta.Where(c => c.Sucursal == sDuenio).Sum(c => c.Importe) , oConsulta.Where(c => c.Sucursal == sDuenio).Average(c => c.Importe)); } string sColumna = (sPrefijo + oReg.Mes.ToString()); this.dgvDatos[sColumna, iFila].Value = (Util.Decimal(this.dgvDatos[sColumna, iFila].Value) + oReg.Importe); this.dgvDatos[sColumna, iFilaEsp].Value = (Util.Decimal(this.dgvDatos[sColumna, iFilaEsp].Value) + oReg.Importe); } // Se agrega la fila de utilidad neta int iFilaDividendos = this.dgvDatos.Rows.Add("= Dividendos"); this.dgvDatos.Rows[iFilaDividendos].DefaultCellStyle.Font = oFuenteT; foreach (DataGridViewColumn oCol in this.dgvDatos.Columns) { if (oCol.Index == 0) { continue; } this.dgvDatos[oCol.Index, iFilaDividendos].Value = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaMargen].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaGastos].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaEsp].Value) ); } // Se obtienen los datos para lo de reinversión var oReinversiones = Datos.GetListOf <ContaPolizasDetalleAvanzadoView>(c => c.FechaPoliza >= dDesde && c.FechaPoliza < dHastaMas1 && ( c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarLargoPlazo || (c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarCortoPlazo && c.ContaCuentaAuxiliarID != Cat.ContaCuentasAuxiliares.TarjetaDeCredito) || c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.AcreedoresDiversos || (c.ContaSubcuentaID == Cat.ContaSubcuentas.ActivoFijo && c.ContaCuentaDeMayorID != Cat.ContaCuentasDeMayor.Edificios) )); var oDeudas = oReinversiones.Where(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarLargoPlazo || c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarCortoPlazo || c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.AcreedoresDiversos); var oInversiones = oReinversiones.Where(c => c.ContaSubcuentaID == Cat.ContaSubcuentas.ActivoFijo); List <ConsultaEdr> oDeudasGr = null; List <ConsultaEdr> oInversionesGr = null; switch (this.cmbTipo.Text) { case "Mensual": oDeudasGr = oDeudas.GroupBy(c => c.FechaPoliza.Valor().Month).Select(c => new ConsultaEdr() { Mes = c.Key, Importe = c.Sum(s => s.Cargo) }).ToList(); oInversionesGr = oInversiones.GroupBy(c => c.FechaPoliza.Valor().Month).Select(c => new ConsultaEdr() { Mes = c.Key, Importe = c.Sum(s => s.Cargo) }).ToList(); break; case "Trimestral": oDeudasGr = oDeudas.GroupBy(c => UtilTheos.ObtenerTrimestre(c.FechaPoliza.Valor())) .Select(c => new ConsultaEdr() { Mes = c.Key, Importe = c.Sum(s => s.Cargo) }).ToList(); oInversionesGr = oInversiones.GroupBy(c => UtilTheos.ObtenerTrimestre(c.FechaPoliza.Valor())) .Select(c => new ConsultaEdr() { Mes = c.Key, Importe = c.Sum(s => s.Cargo) }).ToList(); break; case "Semestral": oDeudasGr = oDeudas.GroupBy(c => UtilTheos.ObtenerSemestre(c.FechaPoliza.Valor())) .Select(c => new ConsultaEdr() { Mes = c.Key, Importe = c.Sum(s => s.Cargo) }).ToList(); oInversionesGr = oInversiones.GroupBy(c => UtilTheos.ObtenerSemestre(c.FechaPoliza.Valor())) .Select(c => new ConsultaEdr() { Mes = c.Key, Importe = c.Sum(s => s.Cargo) }).ToList(); break; } // Se agrega la fila de Reinversión decimal mDeudas = (oDeudasGr.Count() > 0 ? oDeudasGr.Sum(c => c.Importe) : 0); decimal mDeudasProm = (oDeudasGr.Count() > 0 ? oDeudasGr.Average(c => c.Importe) : 0); decimal mInversiones = (oInversionesGr.Count() > 0 ? oInversionesGr.Sum(c => c.Importe) : 0); decimal mInversionesProm = (oInversionesGr.Count() > 0 ? oInversionesGr.Average(c => c.Importe) : 0); int iFilaReinversion = this.dgvDatos.Rows.Add("- Reinversión", (mDeudas + mInversiones), ((mDeudasProm + mInversionesProm) / 2)); this.dgvDatos.Rows[iFilaReinversion].DefaultCellStyle.Font = oFuenteT; // Se llenan los datos de reinversión // Deudas iFila = this.dgvDatos.Rows.Add("Deudas", mDeudas, mDeudasProm); foreach (var oReg in oDeudasGr) { string sColumna = (sPrefijo + oReg.Mes.ToString()); this.dgvDatos[sColumna, iFila].Value = (Util.Decimal(this.dgvDatos[sColumna, iFila].Value) + oReg.Importe); this.dgvDatos[sColumna, iFilaReinversion].Value = (Util.Decimal(this.dgvDatos[sColumna, iFilaReinversion].Value) + oReg.Importe); } // Inversión iFila = this.dgvDatos.Rows.Add("Inversiones", mInversiones, mInversionesProm); foreach (var oReg in oInversionesGr) { string sColumna = (sPrefijo + oReg.Mes.ToString()); this.dgvDatos[sColumna, iFila].Value = (Util.Decimal(this.dgvDatos[sColumna, iFila].Value) + oReg.Importe); this.dgvDatos[sColumna, iFilaReinversion].Value = (Util.Decimal(this.dgvDatos[sColumna, iFilaReinversion].Value) + oReg.Importe); } // Se agrega el saldo final int iFilaSaldo = this.dgvDatos.Rows.Add("= Saldo final"); this.dgvDatos.Rows[iFilaSaldo].DefaultCellStyle.Font = oFuenteT; foreach (DataGridViewColumn oCol in this.dgvDatos.Columns) { if (oCol.Index == 0) { continue; } this.dgvDatos[oCol.Index, iFilaSaldo].Value = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaDividendos].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaReinversion].Value) ); } // Se llena la gráfica, en base al grid ya cargado for (int iCol = this.iColumnasFijas; iCol < this.dgvDatos.Columns.Count; iCol++) { this.chrPorSemana.Series["Ingresos"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaIngresos].Value)); this.chrPorSemana.Series["Costos"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaCostos].Value)); this.chrPorSemana.Series["Margen"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaMargen].Value)); this.chrPorSemana.Series["Gastos"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaGastos].Value)); this.chrPorSemana.Series["Utilidad"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaUtilidad].Value)); this.chrPorSemana.Series["Especiales"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaEsp].Value)); this.chrPorSemana.Series["Dividendos"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaDividendos].Value)); } Cargando.Cerrar(); }
private void CargarDatos() { Cargando.Mostrar(); var oFuenteT = new Font(FontFamily.GenericSansSerif, 9, FontStyle.Bold); // Se limpian los datos this.dgvDatos.Rows.Clear(); foreach (var oSerie in this.chrPorSemana.Series) { oSerie.Points.Clear(); } // Se llenan las columnas del año int iAnio = Util.Entero(this.cmbAnio.Text); this.LlenarColumnasAnio(iAnio); // Se agrega la fila de ingresos int iFilaIngresos = this.dgvDatos.Rows.Add("+ Ingresos"); this.dgvDatos.Rows[iFilaIngresos].DefaultCellStyle.Font = oFuenteT; decimal mTotal = 0, mPromedio = 0; // Se agrega la fila de saldo inicial int iFilaSaldoInicial = this.dgvDatos.Rows.Add("Saldo inicial"); // Se obtienen los datos para las ventas // int iSucursalID = Util.ConvertirEntero(this.cmbSucursal.SelectedValue); DateTime dDesde = new DateTime(iAnio, 1, 1); DateTime dHasta = new DateTime(iAnio, 12, 31); DateTime dDesdeSemUno = UtilTheos.InicioSemanaSabAVie(dDesde); var oParams = new Dictionary <string, object>(); // oParams.Add("SucursalID", (iSucursalID == 0 ? null : (int?)iSucursalID)); oParams.Add("Pagadas", true); oParams.Add("Cobradas", false); oParams.Add("Solo9500", false); oParams.Add("OmitirDomingo", false); oParams.Add("Desde", dDesdeSemUno); oParams.Add("Hasta", dHasta); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); var oSemanas = oDatos.Where(c => c.Fecha >= dDesdeSemUno) .GroupBy(c => new { Semana = UtilTheos.InicioSemanaSabAVie(c.Fecha) }) .Select(c => new { c.Key.Semana, PrecioSinIva = c.Sum(s => s.PrecioSinIvaActual) }) .OrderBy(c => c.Semana); mTotal += oSemanas.Sum(c => c.PrecioSinIva).Valor(); mPromedio += oSemanas.Average(c => c.PrecioSinIva).Valor(); // Se agrega la fila de ventas int iFila = this.dgvDatos.Rows.Add("Ventas", oSemanas.Sum(c => c.PrecioSinIva), oSemanas.Average(c => c.PrecioSinIva)); foreach (var oReg in oSemanas) { string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.PrecioSinIva); this.dgvDatos[sSemana, iFilaIngresos].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaIngresos].Value) + oReg.PrecioSinIva); } // Se obtienen datos para varios grupos DateTime dHastaMas1 = dHasta.AddDays(1); // DateTime dDesdeMas1 = dDesde.AddDays(1); var oReinversiones = Datos.GetListOf <ContaPolizasDetalleAvanzadoView>(c => c.FechaPoliza >= dDesdeSemUno && c.FechaPoliza < dHastaMas1 && ( c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarLargoPlazo || (c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarCortoPlazo && c.ContaCuentaAuxiliarID != Cat.ContaCuentasAuxiliares.TarjetaDeCredito) || c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.AcreedoresDiversos || c.ContaSubcuentaID == Cat.ContaSubcuentas.ActivoFijo ) ); // Se agrega la fila de préstamos var oPrestamos = oReinversiones.Where(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarLargoPlazo || c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarCortoPlazo) .GroupBy(c => UtilTheos.InicioSemanaSabAVie(c.FechaPoliza.Valor())) .Select(c => new { Semana = c.Key, Importe = c.Sum(s => s.Abono) }); mTotal += oPrestamos.Sum(c => c.Importe); decimal mPromedioAct = (oPrestamos.Count() > 0 ? oPrestamos.Average(c => c.Importe) : 0); mPromedio += mPromedioAct; iFila = this.dgvDatos.Rows.Add("Préstamos", oPrestamos.Sum(c => c.Importe), mPromedioAct); foreach (var oReg in oPrestamos) { string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.Importe); this.dgvDatos[sSemana, iFilaIngresos].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaIngresos].Value) + oReg.Importe); } // Se llenan los totales de ingresos this.dgvDatos["Total", iFilaIngresos].Value = mTotal; this.dgvDatos["Promedio", iFilaIngresos].Value = (mPromedio / 2); // Se agrega la fila de egresos int iFilaEgresos = this.dgvDatos.Rows.Add("- Egresos"); this.dgvDatos.Rows[iFilaEgresos].DefaultCellStyle.Font = oFuenteT; mTotal = mPromedio = 0; // Se obtienen los datos para los gastos oParams.Clear(); oParams.Add("Desde", dDesdeSemUno); oParams.Add("Hasta", dHasta); var oGastos = Datos.ExecuteProcedure <pauContaCuentasPorSemana_Result>("pauContaCuentasPorSemana", oParams); var oGastosSem = ContaProc.GastosSemanalizados(oGastos, Util.FechaHora(this.dgvDatos.Columns[this.dgvDatos.Columns.Count - 1].Name)); oGastosSem = oGastosSem.Where(c => c.Semana >= dDesdeSemUno) .GroupBy(c => new { c.Semana }).Select(c => new ContaProc.GastoSem() { Semana = c.Key.Semana, Importe = c.Sum(s => s.Importe) }).ToList(); mTotal += oGastosSem.Sum(c => c.Importe); mPromedio += oGastosSem.Average(c => c.Importe); // Se agrega la fila de los Gastos iFila = this.dgvDatos.Rows.Add("Gastos", oGastosSem.Sum(c => c.Importe), oGastosSem.Average(c => c.Importe)); foreach (var oReg in oGastosSem) { string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.Importe); this.dgvDatos[sSemana, iFilaEgresos].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaEgresos].Value) + oReg.Importe); } // Para las compras var oCompras = Datos.GetListOf <ProveedoresPolizasDetalleAvanzadoView>(c => c.Fecha >= dDesdeSemUno && c.Fecha < dHastaMas1 && (c.OrigenID == Cat.OrigenesPagosAProveedores.PagoDirecto || c.OrigenID == Cat.OrigenesPagosAProveedores.PagoDeCaja)) .GroupBy(c => new { Semana = UtilTheos.InicioSemanaSabAVie(c.Fecha.Valor()) }) .Select(c => new { c.Key.Semana, Importe = c.Sum(s => s.Subtotal) }) .OrderBy(c => c.Semana); mTotal += oCompras.Sum(c => c.Importe); mPromedioAct = (oCompras.Count() > 0 ? oCompras.Average(c => c.Importe) : 0); mPromedio += mPromedioAct; // Se agrega la fila de compras iFila = this.dgvDatos.Rows.Add("Compras", oCompras.Sum(c => c.Importe), mPromedioAct); foreach (var oReg in oCompras) { string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.Importe); this.dgvDatos[sSemana, iFilaEgresos].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaEgresos].Value) + oReg.Importe); } // Para las deudas var oDeudas = oReinversiones.Where(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarLargoPlazo || c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarCortoPlazo || c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.AcreedoresDiversos) .GroupBy(c => UtilTheos.InicioSemanaSabAVie(c.FechaPoliza.Valor())) .Select(c => new { Semana = c.Key, Importe = c.Sum(s => s.Cargo) }); mTotal += oDeudas.Sum(c => c.Importe); mPromedioAct = (oDeudas.Count() > 0 ? oDeudas.Average(c => c.Importe) : 0); mPromedio += mPromedioAct; // Se agrega la fila de deudas iFila = this.dgvDatos.Rows.Add("Deudas", oDeudas.Sum(c => c.Importe), mPromedioAct); foreach (var oReg in oDeudas) { string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.Importe); this.dgvDatos[sSemana, iFilaEgresos].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaEgresos].Value) + oReg.Importe); } // Para las inversiones var oInversiones = oReinversiones.Where(c => c.ContaSubcuentaID == Cat.ContaSubcuentas.ActivoFijo) .GroupBy(c => UtilTheos.InicioSemanaSabAVie(c.FechaPoliza.Valor())) .Select(c => new { Semana = c.Key, Importe = c.Sum(s => s.Cargo) }); mTotal += oInversiones.Sum(c => c.Importe); mPromedioAct = (oInversiones.Count() > 0 ? oInversiones.Average(c => c.Importe) : 0); mPromedio += mPromedioAct; // Se agrega la fila de deudas iFila = this.dgvDatos.Rows.Add("Inversiones", oInversiones.Sum(c => c.Importe), mPromedioAct); foreach (var oReg in oInversiones) { string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.Importe); this.dgvDatos[sSemana, iFilaEgresos].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaEgresos].Value) + oReg.Importe); } // Para lo de Isidro y Don Isidro var oGastosSemEsp = ContaProc.GastosSemanalizados(Datos.GetListOf <ContaEgresosDevengadoEspecialCuentasView>(c => c.Fecha >= dDesdeSemUno && c.Fecha < dHastaMas1) , Util.FechaHora(this.dgvDatos.Columns[this.dgvDatos.Columns.Count - 1].Name)); oGastosSemEsp = oGastosSemEsp.Where(c => c.Semana >= dDesdeSemUno).ToList(); mTotal += oGastosSemEsp.Sum(c => c.Importe); mPromedioAct = (oGastosSemEsp.Count() > 0 ? oGastosSemEsp.Average(c => c.Importe) : 0); mPromedio += mPromedioAct; // Se agregan las filas string sDuenio = ""; foreach (var oReg in oGastosSemEsp) { if (sDuenio != oReg.Grupo) { sDuenio = oReg.Grupo; iFila = this.dgvDatos.Rows.Add(sDuenio, oGastosSemEsp.Where(c => c.Grupo == sDuenio).Sum(c => c.Importe) , oGastosSemEsp.Where(c => c.Grupo == sDuenio).Average(c => c.Importe)); } string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.Importe); this.dgvDatos[sSemana, iFilaEgresos].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaEgresos].Value) + oReg.Importe); } // Se llenan los totales de egresos this.dgvDatos["Total", iFilaEgresos].Value = mTotal; this.dgvDatos["Promedio", iFilaEgresos].Value = (mPromedio / 2); // Ajuste especial para el año 2015, se quitan los datos antes del 01 de Julio if (dDesde.Year == 2015) { DateTime dInicio = new DateTime(2015, 6, 1); foreach (DataGridViewRow oFila in this.dgvDatos.Rows) { mPromedio = 0; for (int iCol = this.iColumnasFijas; iCol < this.dgvDatos.Columns.Count; iCol++) { DateTime dSem = Util.FechaHora(this.dgvDatos.Columns[iCol].Name); oFila.Cells["Total"].Value = 0; if (dSem >= dInicio) { mPromedio++; oFila.Cells["Total"].Value = (Util.Decimal(oFila.Cells["Total"].Value) + Util.Decimal(oFila.Cells[iCol].Value)); } else { oFila.Cells[iCol].Value = null; } } oFila.Cells["Promedio"].Value = (Util.Decimal(oFila.Cells["Total"].Value) / mPromedio); } } // Se agrega el saldo final int iFilaSaldo = this.dgvDatos.Rows.Add("= Saldo final"); this.dgvDatos.Rows[iFilaSaldo].DefaultCellStyle.Font = oFuenteT; foreach (DataGridViewColumn oCol in this.dgvDatos.Columns) { if (oCol.Index == 0) { continue; } // Se modifica el saldo inicial de la semana actual, y se suma a la fila de ingresos if (oCol.Index >= this.iColumnasFijas) { this.dgvDatos[oCol.Index, iFilaIngresos].Value = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaIngresos].Value) + Util.Decimal(this.dgvDatos[oCol.Index, iFilaSaldoInicial].Value) ); } decimal mSaldo = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaIngresos].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaEgresos].Value) ); this.dgvDatos[oCol.Index, iFilaSaldo].Value = mSaldo; // Se llena el saldo inicial de la siguiente semana, si hay if (oCol.Index >= this.iColumnasFijas && oCol.Index < (this.dgvDatos.Columns.Count - 1)) { this.dgvDatos[oCol.Index + 1, iFilaSaldoInicial].Value = mSaldo; } } // Se llena la gráfica, en base al grid ya cargado for (int iCol = this.iColumnasFijas; iCol < this.dgvDatos.Columns.Count; iCol++) { this.chrPorSemana.Series["Ventas"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaIngresos + 1].Value)); this.chrPorSemana.Series["Prestamos"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaIngresos + 2].Value)); this.chrPorSemana.Series["Gastos"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaEgresos + 1].Value)); this.chrPorSemana.Series["Compras"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaEgresos + 2].Value)); this.chrPorSemana.Series["Deudas"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaEgresos + 3].Value)); this.chrPorSemana.Series["Inversiones"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaEgresos + 4].Value)); if (this.dgvDatos.Rows.Count > 10) { this.chrPorSemana.Series["Isidro"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaEgresos + 5].Value)); this.chrPorSemana.Series["DonIsidro"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaEgresos + 6].Value)); } } Cargando.Cerrar(); }
protected override void LlenarSemanas(int iId) { this.dgvSemanas.Rows.Clear(); this.chrSemanas.Series["Actual"].Points.Clear(); this.chrSemanas.Series["Pasado"].Points.Clear(); if (iId <= 0) { return; } var oParams = this.ObtenerParametros(); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); // Se filtran según el combo de marcas if (this.ctlMarcas.ValoresSeleccionados.Count > 0) { oDatos = oDatos.Where(c => this.ctlMarcas.ValoresSeleccionados.Contains(c.MarcaID.Valor())).ToList(); } // Se llena el grid y la gráfica de Semanas IEnumerable <TotalesPorEntero> oConsulta; if (this.ActiveControl == this.dgvPrincipal) { oConsulta = this.AgruparPorEntero(oDatos.Where(c => c.LineaID == iId).GroupBy(g => UtilTheos.SemanaSabAVie(g.Fecha))); } else { oConsulta = this.AgruparPorEntero(oDatos.Where(c => c.ClienteID == iId).GroupBy(g => UtilTheos.SemanaSabAVie(g.Fecha))); } decimal mTotal = (oConsulta.Count() > 0 ? oConsulta.Sum(c => c.Actual) : 0); foreach (var oReg in oConsulta) { this.dgvSemanas.Rows.Add(oReg.Llave, oReg.Llave, oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, mTotal) * 100)); // Para la gráfica this.chrSemanas.Series["Actual"].Points.AddXY(oReg.Llave, oReg.Actual); this.chrSemanas.Series["Pasado"].Points.AddXY(oReg.Llave, oReg.Anterior); } }
private void CargarDatos() { Cargando.Mostrar(); int iSucursalID = Util.Entero(this.cmbSucursal.SelectedValue); var oParams = new Dictionary <string, object>(); oParams.Add("SucursalID", (iSucursalID == 0 ? null : (int?)iSucursalID)); oParams.Add("Pagadas", this.chkPagadas.Checked); oParams.Add("Cobradas", this.chkCobradas.Checked); oParams.Add("Solo9500", this.chk9500.Checked); oParams.Add("OmitirDomingo", this.chkOmitirDomingos.Checked); // oParams.Add("CostoConDescuento", this.chkCostoConDescuento.Checked); oParams.Add("Desde", this.dtpDesde.Value); oParams.Add("Hasta", this.dtpHasta.Value); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); var oTotales = this.ObtenerTotales(oDatos); // Se llena el grid de por día var oPorDia = this.AgruparPorDia(oDatos); this.dgvPorDia.Rows.Clear(); foreach (var oReg in oPorDia) { this.dgvPorDia.Rows.Add(oReg.Llave, oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, oTotales.Actual) * 100)); } this.dgvPorDiaT["DiaT_Actual", 0].Value = (oPorDia.Count() > 0 ? oPorDia.Average(c => c.Actual) : 0); this.dgvPorDiaT["DiaT_Anterior", 0].Value = (oPorDia.Count() > 0 ? oPorDia.Average(c => c.Anterior) : 0); // Se llena el grid de por semana var oPorSemana = this.AgruparPorEntero(oDatos.GroupBy(g => UtilTheos.SemanaSabAVie(g.Fecha))); this.dgvPorSemana.Rows.Clear(); this.chrPorSemana.Series["Actual"].Points.Clear(); this.chrPorSemana.Series["Pasado"].Points.Clear(); foreach (var oReg in oPorSemana) { this.dgvPorSemana.Rows.Add(oReg.Llave, oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, oTotales.Actual) * 100)); this.chrPorSemana.Series["Actual"].Points.AddXY(oReg.Llave, oReg.Actual); this.chrPorSemana.Series["Pasado"].Points.AddXY(oReg.Llave, oReg.Anterior); } this.dgvPorSemanaT["SemanaT_Actual", 0].Value = (oPorSemana.Count() > 0 ? oPorSemana.Average(c => c.Actual) : 0); this.dgvPorSemanaT["SemanaT_Anterior", 0].Value = (oPorSemana.Count() > 0 ? oPorSemana.Average(c => c.Anterior) : 0); // Se llena el grid de por mes var oPorMes = this.AgruparPorEntero(oDatos.GroupBy(g => g.Fecha.Month)); this.dgvPorMes.Rows.Clear(); this.chrPorMes.Series["Actual"].Points.Clear(); this.chrPorMes.Series["Pasado"].Points.Clear(); foreach (var oReg in oPorMes) { this.dgvPorMes.Rows.Add(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(oReg.Llave).ToUpper(), oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, oTotales.Actual) * 100)); this.chrPorMes.Series["Actual"].Points.AddXY(oReg.Llave, oReg.Actual); this.chrPorMes.Series["Pasado"].Points.AddXY(oReg.Llave, oReg.Anterior); } // Se llena el grid de días oParams["Desde"] = this.dtpDesde.Value; oParams["Hasta"] = this.dtpHasta.Value; oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); var oPorDiaSem = oDatos.GroupBy(g => g.Fecha.DayOfWeek).Select(c => new { Dia = c.Key, Actual = c.Sum(s => s.Actual), Anterior = c.Sum(s => s.Anterior) }) .OrderBy(o => (int)o.Dia); decimal mTotalDiaSem = (oDatos.Count > 0 ? oDatos.Sum(c => c.Actual).Valor() : 0); this.dgvDias.Rows.Clear(); this.chrPorDiaSem.Series["Actual"].Points.Clear(); foreach (var oReg in oPorDiaSem) { this.dgvDias.Rows.Add(CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(oReg.Dia).ToUpper(), oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, mTotalDiaSem) * 100)); int iPunto = this.chrPorDiaSem.Series["Actual"].Points.AddXY((int)oReg.Dia, oReg.Actual); this.chrPorDiaSem.Series["Actual"].Points[iPunto].AxisLabel = CultureInfo.CurrentCulture.DateTimeFormat.GetShortestDayName(oReg.Dia).ToUpper(); } // Se llena el grid de horas var oPorHora = this.AgruparPorEntero(oDatos.GroupBy(g => g.Fecha.Hour)); this.dgvHoras.Rows.Clear(); this.chrPorHora.Series.Clear(); foreach (var oReg in oPorHora) { this.dgvHoras.Rows.Add(string.Format("{0:00}:00", oReg.Llave), oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, mTotalDiaSem) * 100)); this.AgregarSerieCilindro(this.chrPorHora, oReg.Llave, oReg.Actual); } // Se llena el grid de sucursales var oPorSucursal = this.AgruparPorEntero(oDatos.GroupBy(g => g.SucursalID)); var oSucursales = oDatos.Select(c => new { c.SucursalID, c.Sucursal }).Distinct(); this.dgvSucursales.Rows.Clear(); foreach (var oReg in oPorSucursal) { string sSucursal = oSucursales.FirstOrDefault(c => c.SucursalID == oReg.Llave).Sucursal; this.dgvSucursales.Rows.Add(sSucursal, oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, mTotalDiaSem) * 100)); } // Se llena el grid de por año oParams.Remove("Desde"); oParams.Remove("Hasta"); var oPorAnio = Datos.ExecuteProcedure <pauCuadroDeControlPorAnio_Result>("pauCuadroDeControlPorAnio", oParams); this.dgvPorAnio.Rows.Clear(); foreach (var oReg in oPorAnio) { decimal mDato = this.ObtenerDatoAnio(oReg); this.dgvPorAnio.Rows.Add(oReg.Anio, mDato); this.chrPorAnio.Series["Actual"].Points.AddXY(oReg.Anio, mDato); } // Se configuran columnas del grid this.AplicarFormatoColumnas(); // Se llenan los totales this.txtAnioActual.Text = oTotales.Actual.ToString(GlobalClass.FormatoMoneda); this.txtAnioAnterior.Text = oTotales.Anterior.ToString(GlobalClass.FormatoMoneda); this.txtResultado.Text = Util.DividirONull(oTotales.Actual, oTotales.Anterior).Valor().ToString(GlobalClass.FormatoDecimal); Cargando.Cerrar(); }
protected override void LlenarSemanas(int iId) { this.dgvSemanas.Rows.Clear(); // Se limpian los puntos de las series bool bGraficar = !this.chkGrafSemanas.Checked; if (bGraficar) { foreach (Series oSerie in this.chrSemanas.Series) { oSerie.Points.Clear(); } } if (iId <= 0) { return; } var oParams = this.ObtenerParametros(); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); // Se llena el grid y la gráfica de Semanas var oConsulta = this.AgruparPorEntero(oDatos.Where(c => c.VendedorID == iId).GroupBy(g => UtilTheos.SemanaSabAVie(g.Fecha))); decimal mTotal = (oConsulta.Count() > 0 ? oConsulta.Sum(c => c.Actual) : 0); foreach (var oReg in oConsulta) { this.dgvSemanas.Rows.Add(oReg.Llave, oReg.Llave, oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, mTotal) * 100)); // Para la gráfica if (bGraficar) { this.chrSemanas.Series["Actual"].Points.AddXY(oReg.Llave, oReg.Actual); this.chrSemanas.Series["Pasado"].Points.AddXY(oReg.Llave, oReg.Anterior); } } }
private void CargarDatos() { Cargando.Mostrar(); var oParams = this.ObtenerParametros(); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); var oTotales = this.ObtenerTotales(oDatos); // Se llena el grid de por semana var oPorSemana = this.AgruparPorEntero(oDatos.GroupBy(g => UtilTheos.SemanaSabAVie(g.Fecha))); this.dgvSemana.Rows.Clear(); // this.chrSemana.Series["Actual"].Points.Clear(); // this.chrSemana.Series["Pasado"].Points.Clear(); foreach (var oReg in oPorSemana) { this.dgvSemana.Rows.Add(oReg.Llave, oReg.Llave, oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, oTotales.Actual) * 100)); // this.chrSemana.Series["Actual"].Points.AddXY(oReg.Semana, oReg.Actual); // this.chrSemana.Series["Pasado"].Points.AddXY(oReg.Semana, oReg.Anterior); } this.dgvSemanaT["SemanaT_Actual", 0].Value = oTotales.Actual; this.dgvSemanaT["SemanaT_Anterior", 0].Value = oTotales.Anterior; this.dgvSemanaT["SemanaT_Resultado", 0].Value = Util.DividirONull(oTotales.Actual, oTotales.Anterior); // Se llena el grid de Vendedores con semanas int iFila; Dictionary <string, decimal> oSemanasT = new Dictionary <string, decimal>(); var oPorVendedor = this.AgruparPorEnteroCadenaEntero(oDatos.GroupBy(g => new AgrupadoPorEnteroCadenaEntero() { Llave = g.VendedorID, Cadena = g.Vendedor, Entero = UtilTheos.SemanaSabAVie(g.Fecha) })).OrderBy(c => c.Entero); this.dgvVendedorSem.Rows.Clear(); foreach (var oReg in oPorVendedor) { // Se encuentra la fila del vendedor, o se agrega si no existe iFila = this.dgvVendedorSem.EncontrarIndiceDeValor("VendedorSem_Id", oReg.Llave); if (iFila < 0) { var oVendedor = oPorVendedor.Where(c => c.Llave == oReg.Llave); iFila = this.dgvVendedorSem.Rows.Add(oReg.Llave, oReg.Cadena , oVendedor.Average(c => c.Actual), oVendedor.Sum(c => c.Actual)); } // Se verifica si existe la columna de la semana, si no, se agrega string sColSem = ("VendedorSem_" + oReg.Entero.ToString()); if (!this.dgvVendedorSem.Columns.Contains(sColSem)) { this.dgvVendedorSem.Columns.Add(sColSem, ("Sem " + oReg.Entero.ToString())); this.dgvVendedorSem.Columns[sColSem].FormatoMoneda(); } if (!oSemanasT.ContainsKey(sColSem)) { oSemanasT.Add(sColSem, 0); } // Se llenan los datos this.dgvVendedorSem[sColSem, iFila].Value = oReg.Actual; oSemanasT[sColSem] += oReg.Actual; // Para el formato de la columna // this.dgvVendedorSem.Columns[sColSem].DefaultCellStyle.Format = (this.cmbCalculo.Text == "Ventas" ? "N0" : "C2"); } // Se agrega la fila de total // this.dgvVendedorSem.Rows.Add(); iFila = this.dgvVendedorSem.Rows.Add(0, "Totales", oPorVendedor.Average(c => c.Actual), oPorVendedor.Sum(c => c.Actual)); this.dgvVendedorSem.Rows[iFila].DefaultCellStyle.Font = new Font(this.dgvVendedorSem.Font, FontStyle.Bold); foreach (DataGridViewColumn oCol in this.dgvVendedorSem.Columns) { if (oCol.Index < 4) { continue; } if (!oSemanasT.ContainsKey(oCol.Name)) { continue; } this.dgvVendedorSem[oCol.Name, iFila].Value = oSemanasT[oCol.Name]; } // Se configuran columnas del grid this.AplicarFormatoColumnas(); Cargando.Cerrar(); }
protected override void LlenarSemanas(int iClienteID) { this.dgvSemanas.Rows.Clear(); this.chrSemanas.Series["Actual"].Points.Clear(); this.chrSemanas.Series["Pasado"].Points.Clear(); if (iClienteID <= 0) { return; } var oParams = this.ObtenerParametros(); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); if (oDatos == null) { return; } // Se llena el grid y la gráfica de Semanas var oConsulta = this.AgruparPorEntero(oDatos.Where(c => c.ClienteID == iClienteID).GroupBy(g => UtilTheos.SemanaSabAVie(g.Fecha))); decimal mTotal = (oConsulta.Count() > 0 ? oConsulta.Sum(c => c.Actual) : 0); foreach (var oReg in oConsulta) { this.dgvSemanas.Rows.Add(oReg.Llave, oReg.Llave, oReg.Actual, oReg.Anterior , Util.DividirONull(oReg.Actual, oReg.Anterior), (Util.DividirONull(oReg.Actual, mTotal) * 100)); // Para la gráfica this.chrSemanas.Series["Actual"].Points.AddXY(oReg.Llave, oReg.Actual); this.chrSemanas.Series["Pasado"].Points.AddXY(oReg.Llave, oReg.Anterior); } }
public void CargarDatos() { Cargando.Mostrar(); var oParams = new Dictionary <string, object>(); int iAnio = Util.Entero(this.cmbAnio.Text); DateTime dDesde = new DateTime(iAnio, 1, 1); DateTime dHasta = new DateTime(iAnio, 12, 31); oParams.Add("Desde", dDesde); oParams.Add("Hasta", dHasta); oParams.Add("AfectaMetas", this.chkAfectaMetas.Checked); // Se llenan los datos var oDatos = Datos.ExecuteProcedure <pauContaCuentasPorSemana_Result>("pauContaCuentasPorSemana", oParams); this.tgvDatos.Nodes.Clear(); TreeGridNode oNodoSucursal = null, oNodoCuenta = null, oNodoSubcuenta = null, oNodoCuentaDeMayor = null, oNodoCuentaAuxiliar = null; string sSucursal = "", sCuenta = "", sSubcuenta = "", sCuentaDeMayor = "", sCuentaAuxiliar = ""; foreach (var oReg in oDatos) { // Nodo de Sucursal if (oReg.Sucursal != sSucursal) { sSucursal = oReg.Sucursal; oNodoSucursal = this.tgvDatos.Nodes.Add(sSucursal); oNodoSucursal.Tag = false; // Se marca como false para indicar que no es devengado especial sCuenta = ""; } // Nodo de Cuenta if (oReg.Cuenta != sCuenta) { sCuenta = oReg.Cuenta; oNodoCuenta = oNodoSucursal.Nodes.Add(sCuenta); sSubcuenta = ""; } // Nodo de Subcuenta if (oReg.Subcuenta != sSubcuenta) { sSubcuenta = oReg.Subcuenta; oNodoSubcuenta = oNodoCuenta.Nodes.Add(sSubcuenta); sCuentaDeMayor = ""; } // Nodo de Cuenta de mayor if (oReg.CuentaDeMayor != sCuentaDeMayor) { sCuentaDeMayor = oReg.CuentaDeMayor; oNodoCuentaDeMayor = oNodoSubcuenta.Nodes.Add(sCuentaDeMayor); sCuentaAuxiliar = ""; } // Se agrega la cuenta auxiliar if (oReg.CuentaAuxiliar != sCuentaAuxiliar) { sCuentaAuxiliar = oReg.CuentaAuxiliar; oNodoCuentaAuxiliar = oNodoCuentaDeMayor.Nodes.Add(oReg.CuentaAuxiliar); } // Se meten los valores de las semanas, y los totales if (oReg.PeriodicidadMes.HasValue) { DateTime dInicioPer = oReg.Fecha.DiaPrimero().Date; DateTime dFinPer = dInicioPer.AddMonths(oReg.PeriodicidadMes.Valor()).AddDays(-1); decimal mImporteDiario = (oReg.ImporteDev.Valor() / ((dFinPer - dInicioPer).Days + 1)); decimal mImporte; int iDias; DateTime dIniSem = UtilTheos.InicioSemanaSabAVie(dInicioPer).Date; for (int iCol = (this.tgvDatos.Columns["Sem" + dIniSem.ToString("d")].Index); iCol < this.tgvDatos.Columns.Count; iCol++) { // Se verifica si se debe de seguir semanalizando if (oReg.FinSemanalizar.HasValue && oReg.FinSemanalizar <= dIniSem) { break; } // Se verifica la fecha final, if (oNodoCuentaAuxiliar.Tag != null && dIniSem > dFinPer) { break; } // Se calcula el importe correspondiente DateTime dFinSem = dIniSem.AddDays(6); if (dIniSem < dInicioPer) { iDias = dFinSem.Day; } else if (dIniSem <= dFinPer && dFinSem > dFinPer) { iDias = ((dIniSem.DiaUltimo().Day - dIniSem.Day) + 1); } else if (dIniSem > dFinPer && (dIniSem - dFinPer).Days < 7) { iDias = (dIniSem.Day - 1); iCol--; } else { iDias = 7; // Se verifica si es /* if (oReg.CuentaAuxiliar == sCuentaAuxiliar) * { * oNodoCuentaAuxiliar.Cells[iCol].Value = 0; * oNodoCuentaAuxiliar.Cells[iCol].Tag = null; * } */ } // int iDias = (dIniSem < dInicioPer ? dFinSem.Day : (dFinSem > dFinPer ? ((dIniSem.DiaUltimo().Day - dIniSem.Day) + 1) : 7)); mImporte = (mImporteDiario * iDias); dIniSem = dIniSem.AddDays(7); // Para guardar los datos relacionados if (oNodoCuentaAuxiliar.Cells[iCol].Tag == null) { oNodoCuentaAuxiliar.Cells[iCol].Tag = new List <int>(); } (oNodoCuentaAuxiliar.Cells[iCol].Tag as List <int>).Add(oReg.ContaEgresoDevengadoID); // Para llenar las celdas oNodoCuentaAuxiliar.Cells[iCol].Value = (Util.Decimal(oNodoCuentaAuxiliar.Cells[iCol].Value) + mImporte); // mImporte; /* * // Para los niveles superiores * oNodoCuentaDeMayor.Cells[iCol].Value = (Util.ConvertirDecimal(oNodoCuentaDeMayor.Cells[iCol].Value) + mImporte); * oNodoSubcuenta.Cells[iCol].Value = (Util.ConvertirDecimal(oNodoSubcuenta.Cells[iCol].Value) + mImporte); * oNodoCuenta.Cells[iCol].Value = (Util.ConvertirDecimal(oNodoCuenta.Cells[iCol].Value) + mImporte); * oNodoSucursal.Cells[iCol].Value = (Util.ConvertirDecimal(oNodoSucursal.Cells[iCol].Value) + mImporte); * * // Para la columna de totales * oNodoCuentaAuxiliar.Cells[1].Value = (Util.ConvertirDecimal(oNodoCuentaAuxiliar.Cells[1].Value) + mImporte); // mImporteTotal; * oNodoCuentaDeMayor.Cells[1].Value = (Util.ConvertirDecimal(oNodoCuentaDeMayor.Cells[1].Value) + mImporte); * oNodoSubcuenta.Cells[1].Value = (Util.ConvertirDecimal(oNodoSubcuenta.Cells[1].Value) + mImporte); * oNodoCuenta.Cells[1].Value = (Util.ConvertirDecimal(oNodoCuenta.Cells[1].Value) + mImporte); * oNodoSucursal.Cells[1].Value = (Util.ConvertirDecimal(oNodoSucursal.Cells[1].Value) + mImporte); */ } // Se marca la cuenta, para que ya no se semanalice hasta el final if (oNodoCuentaAuxiliar.Tag == null) { oNodoCuentaAuxiliar.Tag = true; } } else { DateTime dIniSem = UtilTheos.InicioSemanaSabAVie(oReg.Fecha).Date; int iCol = this.tgvDatos.Columns["Sem" + dIniSem.ToString("d")].Index; // Para guardar los datos relacionados if (oNodoCuentaAuxiliar.Cells[iCol].Tag == null) { oNodoCuentaAuxiliar.Cells[iCol].Tag = new List <int>(); } (oNodoCuentaAuxiliar.Cells[iCol].Tag as List <int>).Add(oReg.ContaEgresoDevengadoID); // Para llenar el importe oNodoCuentaAuxiliar.Cells[iCol].Value = (Util.Decimal(oNodoCuentaAuxiliar.Cells[iCol].Value) + oReg.ImporteDev); } } // Se llenan los datos de devengados especiales DateTime dHastaMas1 = dHasta.AddDays(1); var oDevEsp = Datos.GetListOf <ContaEgresosDevengadoEspecialCuentasView>(c => c.Fecha >= dDesde && c.Fecha < dHastaMas1) .OrderBy(c => c.Duenio).ThenBy(c => c.Cuenta).ThenBy(c => c.Subcuenta).ThenBy(c => c.CuentaDeMayor).ThenBy(c => c.CuentaAuxiliar) .ThenByDescending(c => c.Fecha); TreeGridNode oNodoDuenio = oNodoCuenta = oNodoSubcuenta = oNodoCuentaDeMayor = oNodoCuentaAuxiliar = null; string sDuenio = sCuenta = sSubcuenta = sCuentaDeMayor = sCuentaAuxiliar = ""; foreach (var oReg in oDevEsp) { // Nodo de Sucursal if (oReg.Duenio != sDuenio) { sDuenio = oReg.Duenio; oNodoDuenio = this.tgvDatos.Nodes.Add(sDuenio); oNodoDuenio.Tag = true; // Se marca como true para indicar que es devengado especial sCuenta = ""; } // Nodo de Cuenta if (oReg.Cuenta != sCuenta) { sCuenta = oReg.Cuenta; oNodoCuenta = oNodoDuenio.Nodes.Add(sCuenta); sSubcuenta = ""; } // Nodo de Subcuenta if (oReg.Subcuenta != sSubcuenta) { sSubcuenta = oReg.Subcuenta; oNodoSubcuenta = oNodoCuenta.Nodes.Add(sSubcuenta); sCuentaDeMayor = ""; } // Nodo de Cuenta de mayor if (oReg.CuentaDeMayor != sCuentaDeMayor) { sCuentaDeMayor = oReg.CuentaDeMayor; oNodoCuentaDeMayor = oNodoSubcuenta.Nodes.Add(sCuentaDeMayor); sCuentaAuxiliar = ""; } // Se agrega la cuenta auxiliar if (oReg.CuentaAuxiliar != sCuentaAuxiliar) { sCuentaAuxiliar = oReg.CuentaAuxiliar; oNodoCuentaAuxiliar = oNodoCuentaDeMayor.Nodes.Add(oReg.CuentaAuxiliar); } // Se meten los valores de las semanas, y los totales /* DateTime dIniSem = UtilTheos.InicioSemanaSabAVie(oReg.Fecha).Date; * int iCol = this.tgvDatos.Columns["Sem" + dIniSem.ToString("d")].Index; * // Para llenar el importe * oNodoCuentaAuxiliar.Cells[iCol].Value = (Util.ConvertirDecimal(oNodoCuentaAuxiliar.Cells[iCol].Value) + oReg.ImporteDev); */ if (oReg.PeriodicidadMes.HasValue) { DateTime dInicioPer = oReg.Fecha.DiaPrimero().Date; DateTime dFinPer = dInicioPer.AddMonths(oReg.PeriodicidadMes.Valor()).AddDays(-1); decimal mImporteDiario = (oReg.ImporteDev / ((dFinPer - dInicioPer).Days + 1)); decimal mImporte; int iDias; DateTime dIniSem = UtilTheos.InicioSemanaSabAVie(dInicioPer).Date; for (int iCol = (this.tgvDatos.Columns["Sem" + dIniSem.ToString("d")].Index); iCol < this.tgvDatos.Columns.Count; iCol++) { // Se verifica si se debe de seguir semanalizando if (oReg.FinSemanalizar.HasValue && oReg.FinSemanalizar <= dIniSem) { break; } // Se verifica la fecha final, if (oNodoCuentaAuxiliar.Tag != null && dIniSem > dFinPer) { break; } // Se calcula el importe correspondiente DateTime dFinSem = dIniSem.AddDays(6); if (dIniSem < dInicioPer) { iDias = dFinSem.Day; } else if (dIniSem <= dFinPer && dFinSem > dFinPer) { iDias = ((dIniSem.DiaUltimo().Day - dIniSem.Day) + 1); } else if (dIniSem > dFinPer && (dIniSem - dFinPer).Days < 7) { iDias = (dIniSem.Day - 1); iCol--; } else { iDias = 7; } // int iDias = (dIniSem < dInicioPer ? dFinSem.Day : (dFinSem > dFinPer ? ((dIniSem.DiaUltimo().Day - dIniSem.Day) + 1) : 7)); mImporte = (mImporteDiario * iDias); dIniSem = dIniSem.AddDays(7); // Para guardar los datos relacionados, para el grid de detalle devengado if (oNodoCuentaAuxiliar.Cells[iCol].Tag == null) { oNodoCuentaAuxiliar.Cells[iCol].Tag = new List <int>(); } (oNodoCuentaAuxiliar.Cells[iCol].Tag as List <int>).Add(oReg.ContaEgresoDevengadoEspecialID); // Para llenar las celdas oNodoCuentaAuxiliar.Cells[iCol].Value = (Util.Decimal(oNodoCuentaAuxiliar.Cells[iCol].Value) + mImporte); // mImporte; } // Se marca la cuenta, para que ya no se semanalice hasta el final if (oNodoCuentaAuxiliar.Tag == null) { oNodoCuentaAuxiliar.Tag = true; } } else { DateTime dIniSem = UtilTheos.InicioSemanaSabAVie(oReg.Fecha).Date; int iCol = this.tgvDatos.Columns["Sem" + dIniSem.ToString("d")].Index; // Para guardar los datos relacionados, para el grid de detalle devengado if (oNodoCuentaAuxiliar.Cells[iCol].Tag == null) { oNodoCuentaAuxiliar.Cells[iCol].Tag = new List <int>(); } (oNodoCuentaAuxiliar.Cells[iCol].Tag as List <int>).Add(oReg.ContaEgresoDevengadoEspecialID); // Para llenar el importe oNodoCuentaAuxiliar.Cells[iCol].Value = (Util.Decimal(oNodoCuentaAuxiliar.Cells[iCol].Value) + oReg.ImporteDev); } } // Se llena el nuevo grupo de Empresa (Totales) int iColCuenta = ColsCuentas.Cuenta; this.tgvDatos.Nodes.Insert(0, new TreeGridNode()); var oNodEmpresa = this.tgvDatos.Nodes[0]; oNodEmpresa.Cells[iColCuenta].Value = "EMPRESA"; foreach (var oNodSucursal in this.tgvDatos.Nodes) { if (Util.Cadena(oNodSucursal.Cells[iColCuenta].Value) == "EMPRESA") { continue; } foreach (var oNodCuenta in oNodSucursal.Nodes) { var oNECuenta = oNodEmpresa.Nodes.FirstOrDefault(c => c.Cells[iColCuenta].Value.ToString() == oNodCuenta.Cells[iColCuenta].Value.ToString()); if (oNECuenta == null) { oNECuenta = oNodEmpresa.Nodes.Add(oNodCuenta.Cells[iColCuenta].Value); } foreach (var oNodSubcuenta in oNodCuenta.Nodes) { var oNESubcuenta = oNECuenta.Nodes.FirstOrDefault(c => c.Cells[iColCuenta].Value.ToString() == oNodSubcuenta.Cells[iColCuenta].Value.ToString()); if (oNESubcuenta == null) { oNESubcuenta = oNECuenta.Nodes.Add(oNodSubcuenta.Cells[iColCuenta].Value); } foreach (var oNodCuentaDeMayor in oNodSubcuenta.Nodes) { var oNECuentaDeMayor = oNESubcuenta.Nodes.FirstOrDefault(c => c.Cells[iColCuenta].Value.ToString() == oNodCuentaDeMayor.Cells[iColCuenta].Value.ToString()); if (oNECuentaDeMayor == null) { oNECuentaDeMayor = oNESubcuenta.Nodes.Add(oNodCuentaDeMayor.Cells[iColCuenta].Value); } foreach (var oNodCuentaAuxiliar in oNodCuentaDeMayor.Nodes) { var oNECuentaAuxiliar = oNECuentaDeMayor.Nodes.FirstOrDefault(c => c.Cells[iColCuenta].Value.ToString() == oNodCuentaAuxiliar.Cells[iColCuenta].Value.ToString()); if (oNECuentaAuxiliar == null) { oNECuentaAuxiliar = oNECuentaDeMayor.Nodes.Add(oNodCuentaAuxiliar.Cells[iColCuenta].Value); } for (int iCol = 2; iCol < this.tgvDatos.Columns.Count; iCol++) { decimal mImporte = Util.Decimal(oNodCuentaAuxiliar.Cells[iCol].Value); oNECuentaAuxiliar.Cells[iCol].Value = (Util.Decimal(oNECuentaAuxiliar.Cells[iCol].Value) + mImporte); } } } } } } // Se llenan los totales foreach (var oNodSucursal in this.tgvDatos.Nodes) { foreach (var oNodCuenta in oNodSucursal.Nodes) { foreach (var oNodSubcuenta in oNodCuenta.Nodes) { foreach (var oNodCuentaDeMayor in oNodSubcuenta.Nodes) { foreach (var oNodCuentaAuxiliar in oNodCuentaDeMayor.Nodes) { for (int iCol = 2; iCol < this.tgvDatos.Columns.Count; iCol++) { decimal mImporte = Util.Decimal(oNodCuentaAuxiliar.Cells[iCol].Value); // Para los niveles superiores oNodCuentaDeMayor.Cells[iCol].Value = (Util.Decimal(oNodCuentaDeMayor.Cells[iCol].Value) + mImporte); oNodSubcuenta.Cells[iCol].Value = (Util.Decimal(oNodSubcuenta.Cells[iCol].Value) + mImporte); oNodCuenta.Cells[iCol].Value = (Util.Decimal(oNodCuenta.Cells[iCol].Value) + mImporte); oNodSucursal.Cells[iCol].Value = (Util.Decimal(oNodSucursal.Cells[iCol].Value) + mImporte); // Para la columna de totales oNodCuentaAuxiliar.Cells[1].Value = (Util.Decimal(oNodCuentaAuxiliar.Cells[1].Value) + mImporte); // mImporteTotal; oNodCuentaDeMayor.Cells[1].Value = (Util.Decimal(oNodCuentaDeMayor.Cells[1].Value) + mImporte); oNodSubcuenta.Cells[1].Value = (Util.Decimal(oNodSubcuenta.Cells[1].Value) + mImporte); oNodCuenta.Cells[1].Value = (Util.Decimal(oNodCuenta.Cells[1].Value) + mImporte); oNodSucursal.Cells[1].Value = (Util.Decimal(oNodSucursal.Cells[1].Value) + mImporte); } } } } } } // Se aplica el formato y el color foreach (var oNodSucursal in this.tgvDatos.Nodes) { // Se aplica el formato oNodSucursal.DefaultCellStyle.BackColor = Color.FromArgb(58, 79, 109); oNodSucursal.DefaultCellStyle.ForeColor = Color.White; oNodSucursal.DefaultCellStyle.Font = new Font(this.tgvDatos.Font, FontStyle.Bold); // oNodSucursal.Expand(); // Si su valor es cero, se pone un guión this.PonerGuionCeldas(oNodSucursal); foreach (var oNodCuenta in oNodSucursal.Nodes) { // Se aplica el formato oNodCuenta.DefaultCellStyle.BackColor = Color.FromArgb(67, 87, 123); oNodCuenta.DefaultCellStyle.ForeColor = Color.White; oNodCuenta.DefaultCellStyle.Font = new Font(this.tgvDatos.Font, FontStyle.Bold); oNodCuenta.DefaultCellStyle.Font = new Font(this.tgvDatos.Font.FontFamily, (float)7.75); // oNodCuenta.Expand(); // Si su valor es cero, se pone un guión this.PonerGuionCeldas(oNodCuenta); foreach (var oNodSubcuenta in oNodCuenta.Nodes) { // Se aplica el formato oNodSubcuenta.DefaultCellStyle.BackColor = Color.FromArgb(0, 112, 192); oNodSubcuenta.DefaultCellStyle.ForeColor = Color.White; // oNodSubcuenta.Expand(); // Si su valor es cero, se pone un guión this.PonerGuionCeldas(oNodSubcuenta); foreach (var oNodCuentaDeMayor in oNodSubcuenta.Nodes) { // Se aplica el formato oNodCuentaDeMayor.DefaultCellStyle.ForeColor = Color.FromArgb(58, 79, 109); oNodCuentaDeMayor.DefaultCellStyle.Font = new Font(this.tgvDatos.Font, FontStyle.Bold); oNodCuentaDeMayor.DefaultCellStyle.Font = new Font(this.tgvDatos.Font.FontFamily, (float)7.75); // Si su valor es cero, se pone un guión this.PonerGuionCeldas(oNodCuentaDeMayor); foreach (var oNodCuentaAuxiliar in oNodCuentaDeMayor.Nodes) { oNodCuentaAuxiliar.DefaultCellStyle.ForeColor = Color.FromArgb(58, 79, 109); // Si su valor es cero, se pone un guión this.PonerGuionCeldas(oNodCuentaAuxiliar); } } } } } Cargando.Cerrar(); }
private void Ncf_CrearNotaDeCreditoFiscal() { // Se verifica si hay ventas seleccionadas if (this.dgvNcf_Facturas.ContarIncidencias("Ncf_Aplicar", true) == 0) { UtilLocal.MensajeAdvertencia("No hay ninguna venta seleccionada."); return; } // Se obtiene el concepto var oConcepto = UtilLocal.ObtenerValor("Concepto de Nota de Crédito:", "", MensajeObtenerValor.Tipo.TextoLargo); if (oConcepto == null) { return; } // Se valida el permiso var oResU = UtilLocal.ValidarObtenerUsuario("Ventas.NotasDeCreditoFiscales.Agregar"); if (oResU.Error) { return; } int iUsuarioID = oResU.Respuesta.UsuarioID; // Se solicita la validación de autorización var oResA = UtilLocal.ValidarObtenerUsuario("Autorizaciones.Ventas.NotasDeCreditoFiscales.Agregar", "Autorización"); int?iAutorizoID = (oResA.Respuesta == null ? null : (int?)oResA.Respuesta.UsuarioID); // Se genera el detalle de la nota de crédito, para mandar a hacer la factura decimal mTotal = 0; var oNotaDetalle = new List <ProductoVenta>(); oNotaDetalle.Add(new ProductoVenta() { NombreDeParte = Util.Cadena(oConcepto), UnidadDeMedida = "." }); // Se meten las facturas afectadas foreach (DataGridViewRow oFila in this.dgvNcf_Facturas.Rows) { if (!Util.Logico(oFila.Cells["Ncf_Aplicar"].Value)) { continue; } int iVentaID = Util.Entero(oFila.Cells["Ncf_VentaID"].Value); decimal mImporte = Util.Decimal(oFila.Cells["Ncf_Diferencia"].Value); mTotal += mImporte; var oVenta = Datos.GetEntity <Venta>(c => c.VentaID == iVentaID && c.Estatus); oNotaDetalle.Add(new ProductoVenta() { NumeroDeParte = iVentaID.ToString(), // Se usa para mete la VentaID NombreDeParte = string.Format("FACTURA: {0}", oVenta.Folio), // Se usa para mostrar la factura Cantidad = 1, PrecioUnitario = UtilTheos.ObtenerPrecioSinIva(mImporte), Iva = UtilTheos.ObtenerIvaDePrecio(mImporte), UnidadDeMedida = "." }); } if (mTotal == 0) { return; } Cargando.Mostrar(); // Se manda hacer la nota de crédito fiscal var oRes = VentasLoc.GenerarNotaDeCreditoFiscal(oNotaDetalle, this.Cliente.ClienteID, iUsuarioID); if (oRes.Error) { Cargando.Cerrar(); UtilLocal.MensajeAdvertencia(string.Format("Ocurrió un error al hacer la Nota de Crédito Fiscal\n\n{0}", oRes.Mensaje)); return; } // Se modifica el detalle de la Nota de Crédito Fiscal, con datos adicionales de las ventas afectadas var oNcVentas = Datos.GetListOf <NotaDeCreditoFiscalDetalle>(c => c.NotaDeCreditoFiscalID == oRes.Respuesta); foreach (DataGridViewRow oFila in this.dgvNcf_Facturas.Rows) { if (!Util.Logico(oFila.Cells["Ncf_Aplicar"].Value)) { continue; } int iVentaID = Util.Entero(oFila.Cells["Ncf_VentaID"].Value); int iListaPre = Util.Entero(oFila.Cells["Ncf_ListaDePrecios"].Value); var oVentaV = Datos.GetEntity <VentasView>(c => c.VentaID == iVentaID); var oNcVenta = oNcVentas.FirstOrDefault(c => c.VentaID == iVentaID); if (oNcVenta == null) { continue; } oNcVenta.ListaDePreciosUsada = iListaPre; oNcVenta.ImporteAntes = oVentaV.Total; Datos.Guardar <NotaDeCreditoFiscalDetalle>(oNcVenta); } // Se descuenta el importe en cada artículo de las ventas afectadas foreach (DataGridViewRow oFila in this.dgvNcf_Facturas.Rows) { if (!Util.Logico(oFila.Cells["Ncf_Aplicar"].Value)) { continue; } int iVentaID = Util.Entero(oFila.Cells["Ncf_VentaID"].Value); int iListaPre = Util.Entero(oFila.Cells["Ncf_ListaDePrecios"].Value); var oPartes = Datos.GetListOf <VentaDetalle>(c => c.VentaID == iVentaID && c.Estatus); decimal mPrecio = 0; foreach (var oReg in oPartes) { var oPrecio = Datos.GetEntity <PartePrecio>(c => c.ParteID == oReg.ParteID && c.Estatus); switch (iListaPre) { case 1: mPrecio = oPrecio.PrecioUno.Valor(); break; case 2: mPrecio = oPrecio.PrecioDos.Valor(); break; case 3: mPrecio = oPrecio.PrecioTres.Valor(); break; case 4: mPrecio = oPrecio.PrecioCuatro.Valor(); break; case 5: mPrecio = oPrecio.PrecioCinco.Valor(); break; } // Se calcula el Iva oReg.PrecioUnitario = UtilTheos.ObtenerPrecioSinIva(mPrecio); oReg.Iva = (mPrecio - oReg.PrecioUnitario); Datos.Guardar <VentaDetalle>(oReg); } } // Se crea la póliza contable correspondiente (AfeConta) // Una póliza por cada venta afectada var oNotaV = Datos.GetEntity <NotasDeCreditoFiscalesView>(c => c.NotaDeCreditoFiscalID == oRes.Respuesta); foreach (var oReg in oNcVentas) { ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.NotaDeCreditoDescuentoVenta, oReg.NotaDeCreditoFiscalDetalleID , (oNotaV.Serie + oNotaV.Folio), oNotaV.Cliente); } // Se guarda la autorización VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.NotaDeCreditoFiscalCrear, "NotaDeCreditoFiscal", oRes.Respuesta, iAutorizoID); Cargando.Cerrar(); this.NcfLlenarFacturas(); }
private bool Completar9500() { // Se validan las partes if (!this.ctlComDetalle.Validar()) { return(false); } //if (Util.ControlAlFrente(this.pnlCompletar) == this.ctlComDetalle) //{ //} // Se verifica que se haya hecho el pago del anticipo Cotizacion9500 o9500 = this.ctlPartes.oCotizacion9500; if (!Datos.Exists <Venta>(c => c.VentaID == o9500.AnticipoVentaID && (c.VentaEstatusID == Cat.VentasEstatus.Completada || c.VentaEstatusID == Cat.VentasEstatus.Cobrada))) { UtilLocal.MensajeAdvertencia("Al parecer no se ha realizado el pago correspondiente al Anticipo. No se puede continuar."); return(false); } // Se confirma la operación if (UtilLocal.MensajePregunta(string.Format("¿Estás seguro que deseas completar el 9500 con el folio {0}?\n\n{1}" , this.ctlPartes.oCotizacion9500.Cotizacion9500ID, this.ctlPartes.o9500Sel["lisDescripcion"])) != DialogResult.Yes) { return(false); } // Se guardan los datos DateTime dAhora = DateTime.Now; // Se cancela la venta del anticipo /* Ya no. Ahora todo esto se hace al cobrar la venta final * oVenta.VentaEstatusID = Cat.VentasEstatus.Cancelada; * Datos.Guardar<Venta>(oVenta); * // Se genera una devolución de efectivo (si se realizó un pago) de la venta cancelada, pues se generará una nueva venta con el importe total * if (oVentaPago != null) * VentasProc.GenerarDevolucionDeEfectivo(o9500.AnticipoVentaID.Valor(), o9500.Anticipo); */ // Se genera la venta correspondiente al 9500 // var o9500Detalle = General.GetListOf<Cotizacion9500Detalle>(q => q.Estatus && q.Cotizacion9500ID == oCotizacion9500.Cotizacion9500ID); var oCliente = Datos.GetEntity <Cliente>(q => q.ClienteID == o9500.ClienteID && q.Estatus); var oDetalle = this.ctlComDetalle.ProductosSel(); var oVenta = new Venta() { Fecha = dAhora, ClienteID = o9500.ClienteID, VentaEstatusID = Cat.VentasEstatus.Realizada, RealizoUsuarioID = o9500.RealizoUsuarioID, ComisionistaClienteID = o9500.ComisionistaClienteID }; var oVentaDetalle = new List <VentaDetalle>(); foreach (var oParte in oDetalle) { // Se toma el precio de la tabla "PartePrecio", pues pudo haber sido cambiado por el encargado de Compras var oPartePrecio = Datos.GetEntity <PartePrecio>(q => q.ParteID == oParte.ParteID); decimal mPrecio = UtilDatos.PartePrecioDeVenta(oPartePrecio, oCliente.ListaDePrecios); // Se agrega la parte al detalle de la venta oVentaDetalle.Add(new VentaDetalle() { ParteID = oParte.ParteID, Costo = oPartePrecio.Costo.Valor(), CostoConDescuento = (oPartePrecio.CostoConDescuento ?? oPartePrecio.Costo.Valor()), Cantidad = oParte.Cantidad, PrecioUnitario = UtilTheos.ObtenerPrecioSinIva(mPrecio, 3), Iva = UtilTheos.ObtenerIvaDePrecio(mPrecio, 3) }); } // Se guarda la venta Guardar.Venta(oVenta, oVentaDetalle); // Se modifica el dato de la venta correspondiente al 9500 o9500.VentaID = oVenta.VentaID; o9500.EstatusGenericoID = Cat.EstatusGenericos.PorCompletar; Datos.Guardar <Cotizacion9500>(o9500); // Se restaura this.ctlPartes.ComCliente = null; this.pnlEnTotales.Controls.Remove(this.pnlCompletar); this.pnlCompletar.Dispose(); this.pnlCompletar = null; this.CambiarOpcion(eOpcion.Agregar); this.ctlPartes.tab9500.SelectedIndex = 0; // Se muestra una notifiación con el resultado UtilLocal.MostrarNotificacion("Cotización 9500 guardada correctamente."); // Se retorna falso para que no se quite la opción de 9500 return(false); }
private void CargarSemanas(int iClienteID) { if (this.oDatos == null) { return; } var oSemanas = this.AgruparPorEntero(this.oDatos.Where(c => c.ClienteID == iClienteID).GroupBy(c => UtilTheos.SemanaSabAVie(c.Fecha))); decimal mTotal = (oSemanas.Count() > 0 ? oSemanas.Sum(c => c.Actual) : 0); decimal mPromedio = (oSemanas.Count() > 0 ? oSemanas.Average(c => c.Actual) : 0); this.dgvSemanas.Rows.Clear(); this.chrPorSemana.Series["Actual"].Points.Clear(); this.chrPorSemana.Series["Anterior"].Points.Clear(); this.chrPorSemana.Series["Promedio"].Points.Clear(); foreach (var oReg in oSemanas) { int iFila = this.dgvSemanas.Rows.Add(oReg.Llave, oReg.Llave, oReg.Actual, Util.DividirONull(oReg.Actual, oReg.Anterior) , Util.DividirONull(oReg.Actual, mTotal)); this.chrPorSemana.Series["Actual"].Points.AddXY(oReg.Llave, oReg.Actual); this.chrPorSemana.Series["Anterior"].Points.AddXY(oReg.Llave, oReg.Anterior); this.chrPorSemana.Series["Promedio"].Points.AddXY(oReg.Llave, mPromedio); if (oReg.Actual < mPromedio) { this.dgvSemanas.Rows[iFila].DefaultCellStyle.ForeColor = Color.Black; } } this.txtPromedioSemanas.Text = mPromedio.ToString(); }
private void CargarDatos() { Cargando.Mostrar(); var oFuenteT = new Font(FontFamily.GenericSansSerif, 9, FontStyle.Bold); // Se limpian los datos this.dgvDatos.Rows.Clear(); foreach (var oSerie in this.chrPorSemana.Series) { oSerie.Points.Clear(); } // Se llenan las columnas del año int iAnio = Util.Entero(this.cmbAnio.Text); this.LlenarColumnasAnio(iAnio); // Se obtienen los datos para los ingresos int iSucursalID = Util.Entero(this.cmbSucursal.SelectedValue); DateTime dDesde = new DateTime(iAnio, 1, 1); DateTime dHasta = new DateTime(iAnio, 12, 31); var oParams = new Dictionary <string, object>(); oParams.Add("SucursalID", (iSucursalID == 0 ? null : (int?)iSucursalID)); oParams.Add("Pagadas", true); oParams.Add("Cobradas", false); oParams.Add("Solo9500", false); oParams.Add("OmitirDomingo", false); oParams.Add("Desde", dDesde); oParams.Add("Hasta", dHasta); var oDatos = Datos.ExecuteProcedure <pauCuadroDeControlGeneralNuevo_Result>("pauCuadroDeControlGeneral", oParams); var oSemanas = oDatos.Where(c => c.Fecha >= dDesde) .GroupBy(c => new { Semana = UtilTheos.InicioSemanaSabAVie(c.Fecha), c.Sucursal }) .Select(c => new { c.Key.Semana, c.Key.Sucursal, PrecioSinIva = c.Sum(s => s.PrecioSinIvaActual), Costo = c.Sum(s => s.CostoDescActual) }) .OrderBy(c => c.Sucursal).ThenBy(c => c.Semana); // Se agrega la fila de ingresos int iFilaIngresos = this.dgvDatos.Rows.Add("+ Ingresos", oSemanas.Sum(c => c.PrecioSinIva), oSemanas.Average(c => c.PrecioSinIva)); this.dgvDatos.Rows[iFilaIngresos].DefaultCellStyle.Font = oFuenteT; // Se llenan los ingresos string sSucursal = ""; int iFila = 0; foreach (var oReg in oSemanas) { if (sSucursal != oReg.Sucursal) { sSucursal = oReg.Sucursal; iFila = this.dgvDatos.Rows.Add(sSucursal, oSemanas.Where(c => c.Sucursal == sSucursal).Sum(c => c.PrecioSinIva) , oSemanas.Where(c => c.Sucursal == sSucursal).Average(c => c.PrecioSinIva)); } string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.PrecioSinIva); this.dgvDatos[sSemana, iFilaIngresos].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaIngresos].Value) + oReg.PrecioSinIva); } // Se agrega la fila de Costos int iFilaCostos = this.dgvDatos.Rows.Add("- Costos", oSemanas.Sum(c => c.Costo), oSemanas.Average(c => c.Costo)); this.dgvDatos.Rows[iFilaCostos].DefaultCellStyle.Font = oFuenteT; // Se llenan los costos sSucursal = ""; foreach (var oReg in oSemanas) { if (sSucursal != oReg.Sucursal) { sSucursal = oReg.Sucursal; iFila = this.dgvDatos.Rows.Add(sSucursal, oSemanas.Where(c => c.Sucursal == sSucursal).Sum(c => c.Costo) , oSemanas.Where(c => c.Sucursal == sSucursal).Average(c => c.Costo)); } string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.Costo); this.dgvDatos[sSemana, iFilaCostos].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaCostos].Value) + oReg.Costo); } // Se agrega la fila de margen bruto int iFilaMargen = this.dgvDatos.Rows.Add("= Margen Bruto"); this.dgvDatos.Rows[iFilaMargen].DefaultCellStyle.Font = oFuenteT; foreach (DataGridViewColumn oCol in this.dgvDatos.Columns) { if (oCol.Index == 0) { continue; } this.dgvDatos[oCol.Index, iFilaMargen].Value = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaIngresos].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaCostos].Value) ); } // Se obtienen los datos para los gastos oParams.Clear(); oParams.Add("Desde", dDesde); oParams.Add("Hasta", dHasta); var oGastos = Datos.ExecuteProcedure <pauContaCuentasPorSemana_Result>("pauContaCuentasPorSemana", oParams); var oGastosSemFijo = oGastos.GroupBy(c => new { Semana = UtilTheos.InicioSemanaSabAVie(c.Fecha), c.Sucursal }) .Select(c => new ContaProc.GastoSem() { Semana = c.Key.Semana, Grupo = c.Key.Sucursal, Importe = c.Sum(s => s.ImporteDev).Valor() }); // Se obtiene los datos según el tipo de semanalización List <ContaProc.GastoSem> oGastosSem; if (this.rdbSemanalizar.Checked) { oGastosSem = ContaProc.GastosSemanalizados(oGastos, Util.FechaHora(this.dgvDatos.Columns[this.dgvDatos.Columns.Count - 1].Name)); } else { oGastosSem = oGastosSemFijo.OrderBy(c => c.Grupo).ThenBy(c => c.Semana).ToList(); } // Se agrega la fila de los Gastos int iFilaGastos = this.dgvDatos.Rows.Add("- Gastos", oGastosSem.Sum(c => c.Importe), oGastosSem.Average(c => c.Importe)); this.dgvDatos.Rows[iFilaGastos].DefaultCellStyle.Font = oFuenteT; // Se llenan los gastos sSucursal = ""; foreach (var oReg in oGastosSem) { if (sSucursal != oReg.Grupo) { sSucursal = oReg.Grupo; iFila = this.dgvDatos.Rows.Add(sSucursal, oGastosSem.Where(c => c.Grupo == sSucursal).Sum(c => c.Importe) , oGastosSem.Where(c => c.Grupo == sSucursal).Average(c => c.Importe)); } string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.Importe); this.dgvDatos[sSemana, iFilaGastos].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaGastos].Value) + oReg.Importe); } // Se agrega la fila de utilidad, con cada una de las sucursales int iFilaUtilidad = this.dgvDatos.Rows.Add("= Utilidad"); this.dgvDatos.Rows[iFilaUtilidad].DefaultCellStyle.Font = oFuenteT; // Sucursales var oSucursales = Datos.GetListOf <Sucursal>(c => c.Estatus).OrderBy(c => c.NombreSucursal).ToList(); foreach (var oReg in oSucursales) { this.dgvDatos.Rows.Add(oReg.NombreSucursal); } // Se llenan los datos foreach (DataGridViewColumn oCol in this.dgvDatos.Columns) { if (oCol.Index == 0) { continue; } // Utilidad total this.dgvDatos[oCol.Index, iFilaUtilidad].Value = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaMargen].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaGastos].Value) ); // Sucursales for (int i = 1; i <= oSucursales.Count; i++) { this.dgvDatos[oCol.Index, iFilaUtilidad + i].Value = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaIngresos + i].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaCostos + i].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaGastos + i].Value) ); } } // Se obtienen los datos de gastos especiales DateTime dHastaMas1 = dHasta.AddDays(1); // Se obtiene los datos según el tipo de semanalización List <ContaProc.GastoSem> oGastosSemEsp; var oGastosSemEspFijo = Datos.GetListOf <ContaEgresosDevengadoEspecialCuentasView>(c => c.Fecha >= dDesde && c.Fecha < dHastaMas1) .GroupBy(c => new { c.Duenio, Semana = UtilTheos.InicioSemanaSabAVie(c.Fecha) }) .Select(c => new ContaProc.GastoSem() { Semana = c.Key.Semana, Grupo = c.Key.Duenio, Importe = c.Sum(s => s.ImporteDev) }); if (this.rdbSemanalizar.Checked) { oGastosSemEsp = ContaProc.GastosSemanalizados(Datos.GetListOf <ContaEgresosDevengadoEspecialCuentasView>(c => c.Fecha >= dDesde && c.Fecha < dHastaMas1) , Util.FechaHora(this.dgvDatos.Columns[this.dgvDatos.Columns.Count - 1].Name)); } else { oGastosSemEsp = oGastosSemEspFijo.OrderBy(c => c.Grupo).ThenBy(c => c.Semana).ToList(); } // Se agrega la fila de Especiales bool bHay = (oGastosSemEspFijo.Count() > 0); int iFilaEsp = this.dgvDatos.Rows.Add("- Especiales", (bHay ? oGastosSemEspFijo.Sum(c => c.Importe) : 0) , (bHay ? oGastosSemEspFijo.Average(c => c.Importe) : 0)); this.dgvDatos.Rows[iFilaEsp].DefaultCellStyle.Font = oFuenteT; // Se llenan los gastos string sDuenio = ""; foreach (var oReg in oGastosSemEsp) { if (sDuenio != oReg.Grupo) { sDuenio = oReg.Grupo; iFila = this.dgvDatos.Rows.Add(sDuenio, oGastosSemEspFijo.Where(c => c.Grupo == sDuenio).Sum(c => c.Importe) , oGastosSemEspFijo.Where(c => c.Grupo == sDuenio).Average(c => c.Importe)); } string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.Importe); this.dgvDatos[sSemana, iFilaEsp].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaEsp].Value) + oReg.Importe); } // Se agrega la fila de utilidad neta int iFilaDividendos = this.dgvDatos.Rows.Add("= Dividendos"); this.dgvDatos.Rows[iFilaDividendos].DefaultCellStyle.Font = oFuenteT; foreach (DataGridViewColumn oCol in this.dgvDatos.Columns) { if (oCol.Index == 0) { continue; } this.dgvDatos[oCol.Index, iFilaDividendos].Value = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaMargen].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaGastos].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaEsp].Value) ); } // Se obtienen los datos para lo de reinversión var oReinversiones = Datos.GetListOf <ContaPolizasDetalleAvanzadoView>(c => c.FechaPoliza >= dDesde && c.FechaPoliza < dHastaMas1 && ( c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarLargoPlazo || (c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarCortoPlazo && c.ContaCuentaAuxiliarID != Cat.ContaCuentasAuxiliares.TarjetaDeCredito) || c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.AcreedoresDiversos || (c.ContaSubcuentaID == Cat.ContaSubcuentas.ActivoFijo && c.ContaCuentaDeMayorID != Cat.ContaCuentasDeMayor.Edificios) )); var oDeudas = oReinversiones.Where(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarLargoPlazo || c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.CuentasPorPagarCortoPlazo || c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.AcreedoresDiversos) .GroupBy(c => UtilTheos.InicioSemanaSabAVie(c.FechaPoliza.Valor())) .Select(c => new { Semana = c.Key, Importe = c.Sum(s => s.Cargo) }); var oInversiones = oReinversiones.Where(c => c.ContaSubcuentaID == Cat.ContaSubcuentas.ActivoFijo) .GroupBy(c => UtilTheos.InicioSemanaSabAVie(c.FechaPoliza.Valor())).Select(c => new { Semana = c.Key, Importe = c.Sum(s => s.Cargo) }); // Se agrega la fila de Reinversión decimal mDeudas = (oDeudas.Count() > 0 ? oDeudas.Sum(c => c.Importe) : 0); decimal mDeudasProm = (oDeudas.Count() > 0 ? oDeudas.Average(c => c.Importe) : 0); decimal mInversiones = (oInversiones.Count() > 0 ? oInversiones.Sum(c => c.Importe) : 0); decimal mInversionesProm = (oInversiones.Count() > 0 ? oInversiones.Average(c => c.Importe) : 0); int iFilaReinversion = this.dgvDatos.Rows.Add("- Reinversión", (mDeudas + mInversiones), ((mDeudasProm + mInversionesProm) / 2)); this.dgvDatos.Rows[iFilaReinversion].DefaultCellStyle.Font = oFuenteT; // Se llenan los datos de reinversión // Deudas iFila = this.dgvDatos.Rows.Add("Deudas", mDeudas, mDeudasProm); foreach (var oReg in oDeudas) { string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.Importe); this.dgvDatos[sSemana, iFilaReinversion].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaReinversion].Value) + oReg.Importe); } // Inversión iFila = this.dgvDatos.Rows.Add("Inversiones", mInversiones, mInversionesProm); foreach (var oReg in oInversiones) { string sSemana = oReg.Semana.ToShortDateString(); this.dgvDatos[sSemana, iFila].Value = (Util.Decimal(this.dgvDatos[sSemana, iFila].Value) + oReg.Importe); this.dgvDatos[sSemana, iFilaReinversion].Value = (Util.Decimal(this.dgvDatos[sSemana, iFilaReinversion].Value) + oReg.Importe); } // Se agrega el saldo final int iFilaSaldo = this.dgvDatos.Rows.Add("= Saldo final"); this.dgvDatos.Rows[iFilaSaldo].DefaultCellStyle.Font = oFuenteT; foreach (DataGridViewColumn oCol in this.dgvDatos.Columns) { if (oCol.Index == 0) { continue; } this.dgvDatos[oCol.Index, iFilaSaldo].Value = ( Util.Decimal(this.dgvDatos[oCol.Index, iFilaDividendos].Value) - Util.Decimal(this.dgvDatos[oCol.Index, iFilaReinversion].Value) ); } // Se llena la gráfica, en base al grid ya cargado for (int iCol = this.iColumnasFijas; iCol < this.dgvDatos.Columns.Count; iCol++) { this.chrPorSemana.Series["Ingresos"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaIngresos].Value)); this.chrPorSemana.Series["Costos"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaCostos].Value)); this.chrPorSemana.Series["Margen"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaMargen].Value)); this.chrPorSemana.Series["Gastos"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaGastos].Value)); this.chrPorSemana.Series["Utilidad"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaUtilidad].Value)); this.chrPorSemana.Series["Especiales"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaEsp].Value)); this.chrPorSemana.Series["Dividendos"].Points.AddY(Util.Decimal(this.dgvDatos[iCol, iFilaDividendos].Value)); } Cargando.Cerrar(); }
private void AplicarPrecio(string sColumna) { var frmCalculo = new MasterCostos(); bool bCosto = (sColumna == "Costo"); frmCalculo.MostrarActualizarPrecios = bCosto; frmCalculo.Text = (bCosto ? "Costo" : ("Precio " + sColumna.Derecha(1))); if (frmCalculo.ShowDialog(Principal.Instance) == DialogResult.OK) { foreach (DataGridViewRow Fila in this.dgvDatos.Rows) { if (!Util.Logico(Fila.Cells["Procesar"].Value)) { continue; } // Se aplica el nuevo costo / precio, según aplique if (frmCalculo.TipoDePrecio == 1) { Fila.Cells[sColumna].Value = frmCalculo.Importe; if (bCosto) { Fila.Cells["CostoConDescuento"].Value = frmCalculo.Importe; this.dgvDatos.Columns[sColumna].Tag = ("Importe fijo: " + frmCalculo.Importe.ToString(GlobalClass.FormatoMoneda)); } } else if (frmCalculo.TipoDePrecio == 2) { Fila.Cells[sColumna].Value = Math.Round(Util.Decimal(Fila.Cells[sColumna].Value) * (1 + (frmCalculo.Porcentaje / 100)), 2); if (bCosto) { Fila.Cells["CostoConDescuento"].Value = Math.Round(Util.Decimal(Fila.Cells["CostoConDescuento"].Value) * (1 + (frmCalculo.Porcentaje / 100)), 2); this.dgvDatos.Columns[sColumna].Tag = ("Incremento o descuento: " + frmCalculo.Porcentaje.ToString() + "%"); } } else { Fila.Cells[sColumna].Value = (Util.Decimal(Fila.Cells[sColumna].Value) + frmCalculo.Importe); if (bCosto) { Fila.Cells["CostoConDescuento"].Value = (Util.Decimal(Fila.Cells["CostoConDescuento"].Value) + frmCalculo.Importe); this.dgvDatos.Columns[sColumna].Tag = ("Incremento o descuento: " + frmCalculo.Importe.ToString(GlobalClass.FormatoMoneda)); } } // Si es un precio, se aplica el redondeo if (!bCosto) { Fila.Cells[sColumna].Value = UtilTheos.AplicarRedondeo(Util.Decimal(Fila.Cells[sColumna].Value)); } // Se actualizan los precios, si aplica if (frmCalculo.ActualizarPrecios) { decimal mCosto = Util.Decimal(Fila.Cells["Costo"].Value); Fila.Cells["Precio1"].Value = UtilTheos.AplicarRedondeo(mCosto * Util.Decimal(Fila.Cells["Por1"].Value)); Fila.Cells["Precio2"].Value = UtilTheos.AplicarRedondeo(mCosto * Util.Decimal(Fila.Cells["Por2"].Value)); Fila.Cells["Precio3"].Value = UtilTheos.AplicarRedondeo(mCosto * Util.Decimal(Fila.Cells["Por3"].Value)); Fila.Cells["Precio4"].Value = UtilTheos.AplicarRedondeo(mCosto * Util.Decimal(Fila.Cells["Por4"].Value)); Fila.Cells["Precio5"].Value = UtilTheos.AplicarRedondeo(mCosto * Util.Decimal(Fila.Cells["Por5"].Value)); } } } frmCalculo.Dispose(); }
private IEnumerable <TotalesClientesSemanas> ObtenerClientesSemanas(List <pauCuadroDeControlGeneralNuevo_Result> oDatos) { var oGrupo = oDatos.GroupBy(c => new { c.ClienteID, Semana = UtilTheos.SemanaSabAVie(c.Fecha) }); string sCalculo = this.cmbCalculo.Text; switch (sCalculo) { case "Utilidad": return(oGrupo.Select(c => new TotalesClientesSemanas() { ClienteID = c.Key.ClienteID, Semana = c.Key.Semana, Actual = c.Sum(s => s.Actual).Valor() })); case "Utilidad Desc.": return(oGrupo.Select(c => new TotalesClientesSemanas() { ClienteID = c.Key.ClienteID, Semana = c.Key.Semana, Actual = c.Sum(s => s.UtilDescActual).Valor() })); case "Precio": return(oGrupo.Select(c => new TotalesClientesSemanas() { ClienteID = c.Key.ClienteID, Semana = c.Key.Semana, Actual = c.Sum(s => s.PrecioActual).Valor() })); case "Costo": return(oGrupo.Select(c => new TotalesClientesSemanas() { ClienteID = c.Key.ClienteID, Semana = c.Key.Semana, Actual = c.Sum(s => s.CostoActual).Valor() })); case "Costo Desc.": return(oGrupo.Select(c => new TotalesClientesSemanas() { ClienteID = c.Key.ClienteID, Semana = c.Key.Semana, Actual = c.Sum(s => s.CostoDescActual).Valor() })); case "Ventas": return(oGrupo.Select(c => new TotalesClientesSemanas() { ClienteID = c.Key.ClienteID, Semana = c.Key.Semana, Actual = c.Where(s => s.EsActual == true).Select(s => s.VentaID).Distinct().Count() })); case "Productos": return(oGrupo.Select(c => new TotalesClientesSemanas() { ClienteID = c.Key.ClienteID, Semana = c.Key.Semana, Actual = c.Sum(s => s.ProductosActual).Valor() })); } return(null); }
private bool Agregar9500() { // Se valida la parte de "Partes" if (!this.ctlPartes.Validar()) { return(false); } // Se pide el efectivo, si aplica if (!this.ctlCobro.CompletarCobro()) { return(false); } // Se valida que exista una Medida genérica, para las nuevas partes if (Datos.GetEntity <Medida>(q => q.MedidaID == Cat.Medidas.Pieza && q.Estatus) == null) { UtilLocal.MensajeAdvertencia("No existe una Medida genérica para asignarle a las partes nuevas. No se puede continuar."); return(false); } // Se solicitan la autorizaciones, si se requiere int iAutorizoID = 0; if (this.ctlPartes.AutorizacionRequeridaPrecio || this.ctlPartes.AutorizacionRequeridaAnticipo) { string sPermiso = (this.ctlPartes.AutorizacionRequeridaPrecio ? "Autorizaciones.Ventas.9500.PrecioFueraDeRango" : "Autorizaciones.Ventas.9500.NoAnticipo"); var Res = UtilLocal.ValidarObtenerUsuario(sPermiso, "Autorización"); iAutorizoID = (Res.Respuesta == null ? 0 : Res.Respuesta.UsuarioID); } // Se procede a guardar los datos DateTime dAhora = DateTime.Now; // Se genera la Cotización 9500 var o9500 = this.ctlPartes.Generar9500(); o9500.Fecha = dAhora; o9500.RealizoUsuarioID = this.ctlCobro.VendodorID; if (this.ctlCobro.ComisionistaID > 0) { o9500.ComisionistaClienteID = this.ctlCobro.ComisionistaID; } // Se genera el detalle del 9500 var oParteGanancia = this.ctlPartes.ObtenerParteGanancia(null); var o9500Detalle = new List <Cotizacion9500Detalle>(); foreach (var Parte9500 in this.ctlPartes.Detalle) { // Si la parte no existe, se agrega if (Parte9500.Value.ParteID <= 0) { int iFila = UtilLocal.findRowIndex(this.ctlPartes.dgvPartes, "Llave", Parte9500.Key); string sNumeroDeParte = Util.Cadena(this.ctlPartes.dgvPartes["NumeroDeParte", iFila].Value); string sDescripcion = Util.Cadena(this.ctlPartes.dgvPartes["Descripcion", iFila].Value); var oLinea = Datos.GetEntity <Linea>(q => q.LineaID == Parte9500.Value.LineaID && q.Estatus); Parte oParte = new Parte() { NumeroParte = sNumeroDeParte, LineaID = Parte9500.Value.LineaID, MarcaParteID = Parte9500.Value.MarcaParteID, ProveedorID = Parte9500.Value.ProveedorID, NombreParte = sDescripcion, Es9500 = true, SubsistemaID = oLinea.SubsistemaID.Valor() }; // Se agregan los precios PartePrecio oPartePrecio = null; if (oParteGanancia != null) { oPartePrecio = new PartePrecio() { Costo = Parte9500.Value.Costo, PorcentajeUtilidadUno = oParteGanancia.PorcentajeDeGanancia1, PorcentajeUtilidadDos = oParteGanancia.PorcentajeDeGanancia2, PorcentajeUtilidadTres = oParteGanancia.PorcentajeDeGanancia3, PorcentajeUtilidadCuatro = oParteGanancia.PorcentajeDeGanancia4, PorcentajeUtilidadCinco = oParteGanancia.PorcentajeDeGanancia5, PrecioUno = UtilTheos.AplicarRedondeo(Parte9500.Value.Costo * oParteGanancia.PorcentajeDeGanancia1), PrecioDos = UtilTheos.AplicarRedondeo(Parte9500.Value.Costo * oParteGanancia.PorcentajeDeGanancia2), PrecioTres = UtilTheos.AplicarRedondeo(Parte9500.Value.Costo * oParteGanancia.PorcentajeDeGanancia3), PrecioCuatro = UtilTheos.AplicarRedondeo(Parte9500.Value.Costo * oParteGanancia.PorcentajeDeGanancia4), PrecioCinco = UtilTheos.AplicarRedondeo(Parte9500.Value.Costo * oParteGanancia.PorcentajeDeGanancia5) }; } // Se guarda Guardar.Parte(oParte, oPartePrecio); Parte9500.Value.ParteID = oParte.ParteID; } // Se agrega la parte al detalle del 9500 o9500Detalle.Add(Parte9500.Value); } // Se guardan los datos de 9500 Guardar.c9500(o9500, o9500Detalle); // Se genera la venta con el anticipo var oVenta = new Venta() { ClienteID = o9500.ClienteID, RealizoUsuarioID = o9500.RealizoUsuarioID }; var oPrecioAnticipo = Datos.GetEntity <PartePrecio>(c => c.ParteID == Cat.Partes.AnticipoClientes && c.Estatus); var oVentaDetalle = new VentaDetalle() { ParteID = Cat.Partes.AnticipoClientes, Cantidad = 1, PrecioUnitario = o9500.Anticipo, Costo = oPrecioAnticipo.Costo.Valor(), CostoConDescuento = (oPrecioAnticipo.CostoConDescuento ?? oPrecioAnticipo.Costo.Valor()) }; Guardar.Venta(oVenta, new List <VentaDetalle>() { oVentaDetalle }); // Se guarda el dato de la venta con el anticipo en el registro de 9500 o9500.AnticipoVentaID = oVenta.VentaID; Datos.Guardar <Cotizacion9500>(o9500); // Se guardan las autorizaciones, si hubiera if (this.ctlPartes.AutorizacionRequeridaPrecio) { VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.c9500PrecioFueraDeRango, Cat.Tablas.Tabla9500, o9500.Cotizacion9500ID, iAutorizoID); } if (this.ctlPartes.AutorizacionRequeridaAnticipo) { VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.c9500SinAnticipo, Cat.Tablas.Tabla9500, o9500.Cotizacion9500ID, iAutorizoID); } // Se muestra una notifiación con el resultado UtilLocal.MostrarNotificacion("Cotización 9500 guardada correctamente."); return(true); }