private void proCalcularTotales() { try { //Obtenemos los items unicos var objResumenDistinct = objDetalle.Where(p => p.IteCodigo != "").GroupBy(p => new { p.IteCodigo, p.IteNombre }).ToList(); //Instanciamos el objeto de resumen objDetalleRes = new List <clsComEntMercanciasRes>(); this.grcResumen.DataSource = objDetalleRes; int i = 0; int varListaPrecio = 0; string varIteCodigo = ""; decimal varPrecio = 0; //Recoremos los items unicos obtenidos foreach (var objFilaResumenDistinct in objResumenDistinct) { clsComEntMercanciasRes objFilaResumen = new clsComEntMercanciasRes(); varIteCodigo = objFilaResumenDistinct.Key.IteCodigo.ToString(); varListaPrecio = int.Parse(this.txtListaPrecio.Text); varPrecio = clsInvItem.funPrecioItem(varIteCodigo, varListaPrecio); objFilaResumen.DetSecuencia = ++i; objFilaResumen.IteCodigo = objFilaResumenDistinct.Key.IteCodigo.ToString(); objFilaResumen.IteNombre = objFilaResumenDistinct.Key.IteNombre.ToString(); objFilaResumen.DetPiezas = objDetalle.Count(p => p.IteCodigo == varIteCodigo); objFilaResumen.DetCantidad = objDetalle.Where(p => p.IteCodigo == varIteCodigo).Sum(p => p.DetCantNeta); objFilaResumen.DetCosto = varPrecio; objFilaResumen.DetTotal = decimal.Round(objFilaResumen.DetCantidad * varPrecio, 2); objFilaResumen.DetNro = objDetalle.Count(p => p.IteCodigo == varIteCodigo); objDetalleRes.Add(objFilaResumen); } this.grcResumen.RefreshDataSource(); this.txtTotalNeto.EditValue = objDetalle.Sum(p => p.DetCantNeta); this.txtDiferencia.EditValue = decimal.Parse(this.txtTotalNeto.Text) - decimal.Parse(this.txtTotalCamal.Text); } catch (Exception) { throw; } }
//Operacion de guardar public override void proGrabar() { base.proGrabar(); try { //Eliminamos las filas vacias del detalle objDetalle.RemoveAll(p => p.DetCantNeta.Equals(0) && p.DetCantBruta.Equals(0)); //Verificamos las validaciones de los campos requeridos if (!varBanValidaciones) { return; } //Modificamos la informacion de los resumentes foreach (clsComEntMercanciasDet objFilaDetalle in objDetalle) { clsComEntMercanciasRes objFilaResumen = objDetalleRes.Where(p => p.IteCodigo == objFilaDetalle.IteCodigo).ToList <clsComEntMercanciasRes>()[0]; objFilaDetalle.DetUnidad = objFilaResumen.DetUnidad; objFilaDetalle.DetCantidad = objFilaResumen.DetCantidad; objFilaDetalle.DetCosto = objFilaResumen.DetCosto; objFilaDetalle.DetTotal = objFilaResumen.DetTotal; } //Refrescamos el detalle despues de eliminar this.grcListado.RefreshDataSource(); var csRegistro = new clsComEntMercanciasCab() { CabCodigo = this.txtCodigo.Text.Equals("") ? 0 : int.Parse(this.txtCodigo.Text), DocCodigo = this.txtCodSerie.Text.Equals("") ? 0 : int.Parse(this.txtCodSerie.Text), DocNombre = this.txtNomSerie.Text, CabNumero = this.txtNumero.Text.Equals("") ? 0 : int.Parse(this.txtNumero.Text), CabLstPrecio = this.txtListaPrecio.Text.Equals("") ? 0 : int.Parse(this.txtListaPrecio.Text), CabEntrySap = 0, CabNumSap = 0, CabFecha = (DateTime)this.datFecha.EditValue, PrvCodigo = this.bedProveedor.EditValue.ToString(), PrvNombre = this.txtNombre.Text, BodCodigo = this.lueBodega.EditValue.ToString(), CabImportacion = this.txtImportacion.Text, CabComentario = this.memObservacion.Text, CabLote = this.txtLote.Text, CabTipCompra = this.cmbTipo.Text, CabTotNeto = decimal.Parse(this.txtTotalNeto.Text), CabTotCamal = this.txtTotalCamal.Text.Equals("") ? 0 : decimal.Parse(this.txtTotalCamal.Text), CabDiferencia = decimal.Parse(this.txtDiferencia.Text), CabTolerancia = this.txtTolerancia.Text.Equals("") ? 0 : decimal.Parse(this.txtTolerancia.Text), }; int varCodigo = csRegistro.funMantenimiento(varOpeCodigo, objDetalle); if (!varCodigo.Equals(0)) { this.txtNumero.EditValue = varCodigo; if (!varBandGuardar) { if (XtraMessageBox.Show("Desea imprimir la tirilla", "Informacion", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { this.impDocumento.Print(); } } if (varOpeCodigo.Equals(1)) { XtraMessageBox.Show(string.Format("El registro actual ha sido grabado con el nro: {0}", varCodigo), "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { XtraMessageBox.Show("Registro grabado con exito", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (!varBandGuardar) { if (this.puertoSerial.IsOpen) { this.puertoSerial.Close(); } this.Close(); } } } catch (Exception ex) { XtraMessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }