Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }