private void CargarDatos(int op, int nroparcial) { OrdenCompraWCFClient objOrdenCompraWCF = new OrdenCompraWCFClient(); List <USP_Sel_OC_OpResult> lst_OcOp = new List <USP_Sel_OC_OpResult>(); List <USP_Sel_OC_OpLineaResult> lst_OcOplinea = new List <USP_Sel_OC_OpLineaResult>(); //List<USP_Sel_Genesys_OC_ImpLineaResult> lst_OcOpParcial = new List<USP_Sel_Genesys_OC_ImpLineaResult>(); List <USP_Sel_OC_OpParcialResult> lst_OcOpParcialLinea = new List <USP_Sel_OC_OpParcialResult>(); List <USP_Sel_Genesys_OC_ImpResult> lst_OCParcialOp = new List <USP_Sel_Genesys_OC_ImpResult>(); lst_OcOp = objOrdenCompraWCF.Seleccionar_OC_OP(((Usuario_LoginResult)Session["Usuario"]).idEmpresa, ((Usuario_LoginResult)Session["Usuario"]).codigoUsuario, op).ToList(); lst_OcOplinea = objOrdenCompraWCF.Seleccionar_OC_OPLinea(((Usuario_LoginResult)Session["Usuario"]).idEmpresa, ((Usuario_LoginResult)Session["Usuario"]).codigoUsuario, op).ToList(); lst_OcOpParcialLinea = objOrdenCompraWCF.Seleccionar_OC_OpParcial(((Usuario_LoginResult)Session["Usuario"]).idEmpresa, ((Usuario_LoginResult)Session["Usuario"]).codigoUsuario, op).ToList(); gvwoc.DataSource = lst_OcOplinea; gvwoc.DataBind(); gvwparcial.DataSource = lst_OcOpParcialLinea.Where(x => x.NroParcial == nroparcial && x.Op_OC == op).ToList(); gvwparcial.DataBind(); //var lstkardex = from x in lst_OcOplinea // select new // { // ValueField = x.Kardex, // TextField = x.Nombre // }; //cbokardex.DataSource = lstkardex; //cbokardex.DataTextField = "TextField"; //cbokardex.DataValueField = "ValueField"; //cbokardex.DataBind(); txtop.Text = lst_OcOp.Select(x => x.Op.ToString()).First(); txtagendanombre.Text = lst_OcOp.Select(x => x.AgendaNombre).First(); txtidagenda.Text = lst_OcOp.Select(x => x.ID_Agenda).First(); txtnrooc.Text = lst_OcOp.Select(x => x.NoRegistro).First(); txtobservaciones.Text = lst_OcOp.Select(x => x.Observaciones).First(); txtnroimpparcial.Text = lst_OcOp.Select(x => x.NoRegistro).First(); dtpfechaoc.SelectedDate = lst_OcOp.Select(x => x.FechaOrden).First(); USP_Sel_Genesys_OC_ImpResult eCab; foreach (int?det in lst_OcOpParcialLinea.Select(x => x.NroParcial).Distinct().ToList()) { eCab = new USP_Sel_Genesys_OC_ImpResult(); eCab.Op_OC = Convert.ToDecimal(txtop.Text); eCab.No_Registro = txtnroimpparcial.Text; eCab.NroParcial = det; eCab.OpParcial_OC = 0; eCab.No_RegistroParcial = txtnroimpparcial.Text + "." + det.ToString(); eCab.EsParcial = 1; eCab.Neto = lst_OcOpParcialLinea.Where(x => x.NroParcial == det && x.Op_OC == op).ToList().Sum(x => x.Cantidad * x.Precio); eCab.Subtotal = lst_OcOpParcialLinea.Where(x => x.NroParcial == det && x.Op_OC == op).ToList().Sum(x => x.Cantidad * x.Precio); eCab.Impuestos = 0; eCab.Total = 0; eCab.Observaciones = txtobservaciones.Text; eCab.FechaIngresoAlm = (DateTime?)null; eCab.FlgOcProcesada = 0; eCab.Id_SegImp = 0; lst_OCParcialOp.Add(eCab); } CargarComboParcial(lst_OCParcialOp); Session["lstoc"] = JsonHelper.JsonSerializer(lst_OcOplinea); Session["lstparcial"] = JsonHelper.JsonSerializer(lst_OcOpParcialLinea); Session["lstparcialOp"] = JsonHelper.JsonSerializer(lst_OCParcialOp); }
private void AgregarItemParcial(int op) { List <USP_Sel_OC_OpParcialResult> lstparcial = new List <USP_Sel_OC_OpParcialResult>(); List <USP_Sel_OC_OpLineaResult> lst_OcOplinea = new List <USP_Sel_OC_OpLineaResult>(); List <USP_Sel_Genesys_OC_ImpResult> lst_OCParcialOp = new List <USP_Sel_Genesys_OC_ImpResult>(); OrdenCompraWCFClient objOrdenCompraWCF = new OrdenCompraWCFClient(); //List<USP_Sel_OC_OpParcialResult> lst_OcOpParcialLinea = new List<USP_Sel_OC_OpParcialResult>(); USP_Sel_OC_OpParcialResult ItemParcial = new USP_Sel_OC_OpParcialResult(); double CantidadTotalKardex, PrecioUnitario; lst_OcOplinea = objOrdenCompraWCF.Seleccionar_OC_OPLinea(((Usuario_LoginResult)Session["Usuario"]).idEmpresa, ((Usuario_LoginResult)Session["Usuario"]).codigoUsuario, op).ToList(); Int32 kardex = Convert.ToInt32(cbokardex.SelectedValue.ToString() == string.Empty ? "0" : cbokardex.SelectedValue.ToString()); double CantidadParcial = (Convert.ToDouble(txtcantidad2.Text.Trim() == string.Empty ? "0" : txtcantidad2.Text)); if (Convert.ToInt32(hvid.Value.ToString() == string.Empty ? "0" : hvid.Value.ToString()) == 0) { CantidadTotalKardex = Convert.ToDouble(lst_OcOplinea.Where(x => x.Kardex == kardex).Sum(x => x.Cantidad)); } else { CantidadTotalKardex = Convert.ToDouble(lst_OcOplinea.Where(x => x.Kardex == kardex).Sum(x => x.Cantidad)); } PrecioUnitario = Convert.ToDouble(txtprecio2.Text == string.Empty ? "0" : txtprecio2.Text); //obtencion de lista de parciales lstparcial = JsonHelper.JsonDeserialize <List <USP_Sel_OC_OpParcialResult> >((string)Session["lstparcial"]); if (lstparcial.Where(x => x.Kardex == kardex && x.NroParcial == Convert.ToInt32(cbonroparcial.Text)).Any()) { throw new ArgumentException("ERROR: Solo puede existir un tipo de kardex por Parcial."); } if (CantidadParcial > CantidadTotalKardex) { throw new ArgumentException("ERROR: La cantidad que esta ingresando es superior a la cantidad disponible"); } else if (PrecioUnitario < 0) { throw new ArgumentException("ERROR: El precio unitario debe ser positivo."); } else if (CantidadParcial <= 0) { throw new ArgumentException("ERROR: La cantidad debe ser mayor a 0"); } else if (Math.Round(CantidadTotalKardex, 2) < Math.Round(Convert.ToDouble(lstparcial.Where(x => x.Kardex == kardex).Sum(x => x.Cantidad)))) { throw new ArgumentException("ERROR: La cantidad total del kardex la OC no puede ser a la cantidad total del kardex de los parciales"); } else { ItemParcial = JsonHelper.JsonDeserialize <USP_Sel_OC_OpParcialResult>((string)Session["lstparcial"]); ItemParcial.Op_OC = Convert.ToInt32(txtop.Text); ItemParcial.NroParcial = Convert.ToInt32(cbonroparcial.Text); ItemParcial.No_RegistroParcial = txtnroimpparcial.Text + "." + cbonroparcial.Text; ItemParcial.Id = Convert.ToInt32(hvid.Value.ToString() == string.Empty ? "0" : hvid.Value.ToString()); ItemParcial.ItemCodigo = lst_OcOplinea.Where(x => x.Kardex == kardex).Select(x => x.ItemCodigo).First(); ItemParcial.Kardex = kardex; ItemParcial.NombreKardex = cbokardex.Text; ItemParcial.Id_UnidadInv = lst_OcOplinea.Where(x => x.Kardex == kardex).Select(x => x.ID_UnidadInv).First(); ItemParcial.Cantidad = Convert.ToDecimal(txtcantidad2.Text); ItemParcial.Precio = Convert.ToDecimal(txtprecio2.Text); ItemParcial.Importe = ItemParcial.Cantidad * ItemParcial.Precio; if (ItemParcial.Id == 0) { lstparcial.Add(ItemParcial); } else { lstparcial.Where(x => x.Id == ItemParcial.Id).ToList().ForEach(x => x.Cantidad = ItemParcial.Cantidad); lstparcial.Where(x => x.Id == ItemParcial.Id).ToList().ForEach(x => x.Precio = ItemParcial.Precio); lstparcial.Where(x => x.Id == ItemParcial.Id).ToList().ForEach(x => x.Importe = ItemParcial.Cantidad * ItemParcial.Precio); } lst_OCParcialOp = JsonHelper.JsonDeserialize <List <USP_Sel_Genesys_OC_ImpResult> >((string)Session["lstparcialOp"]); decimal?neto = lstparcial.Where(x => x.NroParcial == ItemParcial.NroParcial && x.Op_OC == op).ToList().Sum(x => x.Cantidad * x.Precio); if (lst_OCParcialOp.Where(x => x.NroParcial == Convert.ToInt32(ItemParcial.NroParcial)).ToList().Any()) { lst_OCParcialOp.Where(x => x.NroParcial == ItemParcial.NroParcial).ToList().ForEach(x => x.Neto = neto); lst_OCParcialOp.Where(x => x.NroParcial == ItemParcial.NroParcial).ToList().ForEach(x => x.Subtotal = neto); } else { USP_Sel_Genesys_OC_ImpResult eCab; eCab = new USP_Sel_Genesys_OC_ImpResult(); eCab.Op_OC = Convert.ToDecimal(txtop.Text); eCab.No_Registro = txtnroimpparcial.Text; eCab.OpParcial_OC = 0; eCab.NroParcial = Convert.ToInt32(cbonroparcial.Text); eCab.No_RegistroParcial = txtnroimpparcial.Text + "." + cbonroparcial.Text; eCab.EsParcial = 1; eCab.Neto = neto; eCab.Subtotal = neto; eCab.Impuestos = 0; eCab.Total = 0; eCab.Observaciones = txtobservaciones.Text; eCab.FechaIngresoAlm = (DateTime?)null; eCab.FlgOcProcesada = 0; eCab.Id_SegImp = 0; lst_OCParcialOp.Add(eCab); CargarComboParcial(lst_OCParcialOp); } //gvwparcial.DataSource = lstparcial.Where(x => x.NroParcial == Convert.ToInt32(cbonroparcial.Text == string.Empty ? "0" : cbonroparcial.Text)).ToList(); gvwparcial.DataSource = lstparcial.Where(x => x.NroParcial == ItemParcial.NroParcial).ToList(); gvwparcial.DataBind(); Session["lstparcial"] = JsonHelper.JsonSerializer(lstparcial); Session["lstparcialOp"] = JsonHelper.JsonSerializer(lst_OCParcialOp); //CargarComboParcial(lstparcial); hvid.Value = "0"; } CargarCantidadDisponible(); }