예제 #1
0
        public ActionResult Delete(int id)
        {
            ViewBag.Loc = (int)HttpContext.Application["Locacion"];
            BarroMovimientos bm = tsvc.getBarroMovimiento(id);

            ViewBag.Provedores      = tsvc.obtenerProvedores(bm.OrigenTransferencia);
            ViewBag.ProveedorNombre = ViewBag.Provedores[0].Text;
            return(View(bm));
        }
예제 #2
0
        public ActionResult Delete(int id)
        {
            ViewBag.Loc            = (int)HttpContext.Application["Locacion"];
            ViewBag.NombreLocacion = tsvc.getNombreSucursal(ViewBag.Loc);
            BarroMovimientos bm = tsvc.getBarroMovimiento(id);

            ViewBag.Provedores      = tsvc.obtenerSucursales(2);
            ViewBag.ProveedorNombre = ViewBag.Provedores[0].Text;
            return(View(bm));
        }
예제 #3
0
        public ActionResult SolicitarBarroGranel()
        {
            ViewBag.Productos  = tsvc.obtenerProductos(1);
            ViewBag.Provedores = tsvc.obtenerProvedores();
            ViewBag.Locaciones = tsvc.obtenerSucursales(2);
            BarroMovimientos bm = new BarroMovimientos();

            bm.FechaMovimiento = DateTime.Today;
            return(View(bm));
        }
예제 #4
0
        public ActionResult Delete(int id, BarroMovimientos pPrePell)
        {
            int res = tsvc.deleteBarroMovimiento(id);

            if (res >= 1)
            {
                return(RedirectToAction("Index"));
            }
            return(new HttpStatusCodeResult(404, "No se pudo borrar el elemento, vuelva a interntar mas tarde."));
        }
예제 #5
0
        public ActionResult SolicitarBarroEmpaque(string[] Tipo, int[] Capacidad, string[] CodigoProducto, string[] barroSolicitado)
        {
            List <BarroMovimientos> lst = new List <BarroMovimientos>();

            for (int i = 0; i < Tipo.Length; i++)
            {
                if (barroSolicitado[i] != null && barroSolicitado[i] != "")
                {
                    int    PesoEmpaque  = int.Parse(CodigoProducto[i].Replace("N", "").Replace("B", ""));
                    string codigoGranel = tsvc.obtenerCodigoDeProducto(Tipo[i], 1);

                    BarroMovimientos bmEg = new BarroMovimientos()
                    {
                        CodigoProducto      = codigoGranel, //Tipo[i].Substring(0, 1) + Capacidad[i],
                        FechaMovimiento     = DateTime.Today,
                        TipoMovimiento      = "Eg",
                        Unidades            = PesoEmpaque * int.Parse(barroSolicitado[i]),
                        Locacion            = 2,
                        OrigenTransferencia = 2,
                        OrigenTabla         = "Sucursales",
                        PesoTotal           = PesoEmpaque * int.Parse(barroSolicitado[i]),
                        Editor       = User.Identity.Name,
                        FechaEdicion = DateTime.Now
                    };
                    lst.Add(bmEg);

                    BarroMovimientos bmIn = new BarroMovimientos()
                    {
                        CodigoProducto      = CodigoProducto[i], //Tipo[i].Substring(0, 1) + Capacidad[i],
                        FechaMovimiento     = DateTime.Today,
                        TipoMovimiento      = "In",
                        Unidades            = int.Parse(barroSolicitado[i]),
                        Locacion            = 2,
                        OrigenTransferencia = 2,
                        OrigenTabla         = "Sucursales",
                        PesoTotal           = PesoEmpaque * int.Parse(barroSolicitado[i]),
                        Editor       = User.Identity.Name,
                        FechaEdicion = DateTime.Now
                    };
                    lst.Add(bmIn);
                }
            }

            int res = tsvc.addMovimientosBarro(lst);

            if (res > 1)
            {
                return(RedirectToAction("Index"));
            }
            else
            {
                return(View(new HttpStatusCodeResult(201, "No fue posible realizar la peticion.")));
            }
        }
예제 #6
0
        public List <BarroMovimientos> calculaMovimientosPorMerma(BarroMovimientosConMerma pBMCM)
        {
            List <BarroMovimientos> lstTemp = new List <BarroMovimientos>();
            string codigoEnGranel           = pBMCM.CodigoProducto.Substring(0, 1) + "1";
            double pesoCostal = double.Parse(pBMCM.CodigoProducto.Remove(0, 1));

            double entero = 0;

            if (pBMCM.Merma > pesoCostal)
            {
                entero = (int)(pBMCM.Merma / pesoCostal);
            }
            entero = entero + 1;   //se suma 1 pues es el costal que se debe descontar debido al residuo, osea el barro en granel que se descuenta a la carga.

            double residuo = pBMCM.Merma;

            residuo %= pesoCostal;

            BarroMovimientos mermaEncostalada = new BarroMovimientos();

            mermaEncostalada.CodigoProducto      = pBMCM.CodigoProducto;
            mermaEncostalada.FechaMovimiento     = DateTime.Now;
            mermaEncostalada.TipoMovimiento      = "Eg";
            mermaEncostalada.Unidades            = entero;
            mermaEncostalada.Locacion            = 1;
            mermaEncostalada.PesoTotal           = entero * pesoCostal;
            mermaEncostalada.OrigenTransferencia = pBMCM.Id;
            mermaEncostalada.OrigenTabla         = "BarroMovimiento";
            mermaEncostalada.OrigenVariacion     = "Merma";
            mermaEncostalada.Editor       = User.Identity.Name;
            mermaEncostalada.FechaEdicion = DateTime.Now;
            lstTemp.Add(mermaEncostalada);

            //pesoCostal - residuo => se hace esta resta debido a que el residuo es lo que se le restara a un costal completo para saber cuanto se tiene en realidad.
            BarroMovimientos merma = new BarroMovimientos();

            merma.CodigoProducto      = codigoEnGranel;
            merma.FechaMovimiento     = DateTime.Now;
            merma.TipoMovimiento      = "In";
            merma.Unidades            = pesoCostal - residuo;
            merma.Locacion            = 1;
            merma.PesoTotal           = pesoCostal - residuo;
            merma.OrigenTransferencia = pBMCM.Id;
            merma.OrigenTabla         = "BarroMovimiento";
            merma.OrigenVariacion     = "Merma";
            merma.Editor       = User.Identity.Name;
            merma.FechaEdicion = DateTime.Now;
            lstTemp.Add(merma);

            return(lstTemp);
        }
예제 #7
0
        public ActionResult Edit(BarroMovimientos bm)
        {
            bm.PesoTotal    = bm.Unidades;
            bm.Editor       = User.Identity.Name;
            bm.FechaEdicion = DateTime.Now;

            int res = tsvc.editMovimientoBarro(bm);

            if (res > 0)
            {
                return(RedirectToAction("Index"));
            }
            return(new HttpStatusCodeResult(404, "No se pudo actualizar el registro, vuelva a intentarlo mas tarde"));
        }
 public void setBarroMovimientos(BarroMovimientos pBM)
 {
     this.Id                  = pBM.Id;
     this.CodigoProducto      = pBM.CodigoProducto;
     this.FechaMovimiento     = pBM.FechaMovimiento;
     this.TipoMovimiento      = pBM.TipoMovimiento;
     this.Unidades            = pBM.Unidades;
     this.Locacion            = pBM.Locacion;
     this.OrigenTabla         = pBM.OrigenTabla;
     this.OrigenTransferencia = pBM.OrigenTransferencia;
     this.OrigenVariacion     = pBM.OrigenVariacion;
     this.PesoTotal           = pBM.PesoTotal;
     this.Editor              = pBM.Editor;
     this.FechaEdicion        = pBM.FechaEdicion;
 }
예제 #9
0
        public ActionResult Edit(int id)
        {
            BarroMovimientos bm = tsvc.getBarroMovimiento(id);

            ViewBag.Productos = tsvc.obtenerProductos(1);
            foreach (var item in ViewBag.Productos)
            {
                item.Selected = false;
                if (item.Value == bm.CodigoProducto)
                {
                    item.Selected = true;
                }
            }
            ViewBag.Provedores = tsvc.obtenerProvedores(bm.OrigenTransferencia);
            return(View(bm));
        }
예제 #10
0
        public ActionResult SolicitarBarroGranel(BarroMovimientos pMovB)
        {
            if (ModelState.IsValid)
            {
                pMovB.TipoMovimiento = "In";
                pMovB.PesoTotal      = pMovB.Unidades;
                pMovB.OrigenTabla    = "Provedores";
                pMovB.Editor         = User.Identity.Name;
                pMovB.FechaEdicion   = DateTime.Now;

                int res = tsvc.addMovimientosBarro(pMovB);
                if (res == 1)
                {
                    return(RedirectToAction("Index"));
                }
            }
            return(View(new HttpStatusCodeResult(202, "No pudo ser generada la solicitud.")));
        }
        public BarroMovimientos getBarroMovimientos()
        {
            BarroMovimientos bm = new BarroMovimientos()
            {
                Id                  = this.Id,
                CodigoProducto      = this.CodigoProducto,
                FechaMovimiento     = this.FechaMovimiento,
                TipoMovimiento      = this.TipoMovimiento,
                Unidades            = this.Unidades,
                Locacion            = this.Locacion,
                OrigenTabla         = this.OrigenTabla,
                OrigenTransferencia = this.OrigenTransferencia,
                OrigenVariacion     = this.OrigenVariacion,
                PesoTotal           = this.PesoTotal,
                Editor              = this.Editor,
                FechaEdicion        = this.FechaEdicion,
            };

            return(bm);
        }
예제 #12
0
        public ActionResult SolicitarReserva(SolicitarReserva pSR)
        {
            if (ModelState.IsValid)
            {
                //SelectListItem item = pSR.lstTipoCapacidad.Where(x => x.Selected).FirstOrDefault();
                BarroMovimientos tmpMovB_in = new BarroMovimientos()
                {
                    FechaMovimiento = DateTime.Today,
                    TipoMovimiento  = "In",
                    CodigoProducto  = pSR.CodigoBarro, //item.Value,
                    Unidades        = (int)pSR.Unidades,
                    Editor          = User.Identity.Name,
                    FechaEdicion    = DateTime.Now
                                      ////Locacion = "La Luz",
                                      ////OrigenTranferencia = "34 pte"
                };

                BarroMovimientos tmpMovB_eg = new BarroMovimientos()
                {
                    FechaMovimiento = DateTime.Today,
                    TipoMovimiento  = "Eg",
                    CodigoProducto  = pSR.CodigoBarro, //item.Value,
                    Editor          = User.Identity.Name,
                    FechaEdicion    = DateTime.Now
                                      //Unidades = pSR.Unidades,
                                      //Locacion = "34 pte"
                };

                List <BarroMovimientos> lst = new List <BarroMovimientos>();
                lst.Add(tmpMovB_in);
                lst.Add(tmpMovB_eg);

                int res = tsvc.addMovimientosBarro(lst);
                if (res == 2)
                {
                    return(RedirectToAction("Index"));
                }
            }
            //return HttpStatusCodeResult(201, "No se pudo realizar la consulta");
            return(View(new HttpStatusCodeResult(201, "No se pudo realizar la consulta")));
        }
예제 #13
0
        public ActionResult EditarRegitro(int id)
        {
            BarroMovimientos bm = tsvc.getBarroMovimiento(id);

            ViewBag.Productos = tsvc.obtenerProductos(1);
            foreach (var item in ViewBag.Productos)
            {
                item.Selected = false;
                if (item.Value == bm.CodigoProducto)
                {
                    item.Selected = true;
                }
            }
            ViewBag.Provedores = tsvc.getNombreSucursal((int)bm.OrigenTransferencia);

            double merma = tsvc.obtenerMermaDePedido(bm);

            BarroMovimientosConMerma BMCM = new BarroMovimientosConMerma();

            BMCM.Merma = merma;
            BMCM.setBarroMovimientos(bm);
            return(View(BMCM));
        }
예제 #14
0
        public ActionResult EditarRegitro(BarroMovimientosConMerma pBMCM)
        {
            pBMCM.Editor       = User.Identity.Name;
            pBMCM.FechaEdicion = DateTime.Now;
            BarroMovimientos bm = pBMCM.getBarroMovimientos();

            int res = tsvc.editMovimientoBarro(bm);

            if (res > 0)
            {
                int res1 = tsvc.deleteMermaExistente(bm);
                if (pBMCM.Merma > 0)
                {
                    List <BarroMovimientos> lst = calculaMovimientosPorMerma(pBMCM);

                    string           codigoEnGranel     = pBMCM.CodigoProducto.Substring(0, 1) + "1";
                    BarroMovimientos exedenteRegistrado = new BarroMovimientos();
                    exedenteRegistrado.CodigoProducto      = codigoEnGranel;
                    exedenteRegistrado.FechaMovimiento     = DateTime.Now;
                    exedenteRegistrado.TipoMovimiento      = "In";
                    exedenteRegistrado.Unidades            = pBMCM.Merma;
                    exedenteRegistrado.Locacion            = pBMCM.OrigenTransferencia;
                    exedenteRegistrado.PesoTotal           = pBMCM.Merma;
                    exedenteRegistrado.OrigenTransferencia = bm.Id;
                    exedenteRegistrado.OrigenTabla         = "BarroMovimiento";
                    exedenteRegistrado.OrigenVariacion     = "Merma";
                    exedenteRegistrado.Editor       = User.Identity.Name;
                    exedenteRegistrado.FechaEdicion = DateTime.Now;

                    int res2 = tsvc.addMovimientosBarro(lst);
                    int res3 = tsvc.addMovimientosBarro(exedenteRegistrado);
                }

                return(RedirectToAction("Index"));
            }
            return(new HttpStatusCodeResult(404, "No se pudo actualizar el registro, vuelva a intentarlo mas tarde"));
        }
        public List <BarroMovimientos> calculaBarroMovimientos(List <ReservaBarroPreparado> plstBarroReservaAsignado, double pBarroSolicitado, PreparacionBarro pPreBar, int idPreparacion)
        {
            List <BarroMovimientos> lst = new List <BarroMovimientos>();
            double?SumBN = plstBarroReservaAsignado.Select(x => new { TotalSolicitado = x.Capacidad * x.BarroUsado }).Sum(x => x.TotalSolicitado);

            //foreach (var item in pPreBar.lstConsumoBarroNegro.OrderBy(x => x.CodigoBarro))
            for (int a = 0; a < plstBarroReservaAsignado.Count; a++)
            {
                var item = plstBarroReservaAsignado[a];
                if (item.BarroUsado > 0)
                {
                    //En caso de ser a granel, se hace una resta directa
                    if (item.Capacidad == 1)
                    {
                        double TotalKgUsados = item.BarroUsado * (double)item.Capacidad;
                        pBarroSolicitado = pBarroSolicitado - TotalKgUsados;

                        //Se hace el egreso de barro a granel.
                        //Nota: en el barro a granel "NO" es nesario hacer un ingreso con el sobrante del barro asignado.
                        BarroMovimientos tmpMovB_egNegro = new BarroMovimientos()
                        {
                            CodigoProducto      = item.CodigoBarro,
                            FechaMovimiento     = DateTime.Today,
                            TipoMovimiento      = "Eg",
                            Unidades            = item.BarroUsado,
                            Locacion            = pPreBar.Locacion,
                            OrigenTransferencia = idPreparacion,
                            OrigenTabla         = "PreparacionBarro",
                            PesoTotal           = TotalKgUsados,
                            Editor       = pPreBar.Editor,
                            FechaEdicion = pPreBar.FechaEdicion
                        };
                        lst.Add(tmpMovB_egNegro);
                    }
                    else  //Para los paquete se va haciendo gradual la resta, para determinar cuantos paquetes son necesrios.
                    {
                        double empaquetadosNecesarios = 0;
                        double TotalKgUsados          = 0;
                        //Se ira sumando paquete a paquete hasta cubrir el barro solicitado o agotar las recervas asignadas(BarroUsado).
                        for (int i = 1; i <= item.BarroUsado; i++)
                        {
                            empaquetadosNecesarios = i;
                            pBarroSolicitado       = pBarroSolicitado - (double)item.Capacidad;
                            if (pBarroSolicitado <= 0)
                            {
                                break;
                            }
                        }
                        TotalKgUsados = empaquetadosNecesarios * (double)item.Capacidad;

                        //Se genera el egreso de estas empaquetados.
                        BarroMovimientos tmpMovB_egNegro = new BarroMovimientos()
                        {
                            CodigoProducto      = item.CodigoBarro,
                            FechaMovimiento     = DateTime.Today,
                            TipoMovimiento      = "Eg",
                            Unidades            = empaquetadosNecesarios,
                            Locacion            = pPreBar.Locacion,
                            OrigenTransferencia = idPreparacion,
                            OrigenTabla         = "PreparacionBarro",
                            PesoTotal           = TotalKgUsados,
                            Editor       = pPreBar.Editor,
                            FechaEdicion = pPreBar.FechaEdicion
                        };
                        lst.Add(tmpMovB_egNegro);

                        //Cuando tmpBarNegro es negativo y dado que estamos en un segmento validador de paquetes
                        //se asume que el restante es debido a que un paquete tubo que ser habierto para cubrir el barro solicitado
                        //por esta razon, el restante sera un ingreso a granel en barromovimientos para no peder el restante del paquete habierto.
                        if (pBarroSolicitado < 0)
                        {
                            BarroMovimientos tmpMovB_inNegro = new BarroMovimientos()
                            {
                                CodigoProducto      = tsvc.obtenerCodigoDeProducto(item.Tipo, 1),
                                FechaMovimiento     = DateTime.Now,
                                TipoMovimiento      = "In",
                                Unidades            = pBarroSolicitado * -1,
                                Locacion            = pPreBar.Locacion,
                                OrigenTransferencia = idPreparacion,
                                OrigenTabla         = "PreparacionBarro",
                                PesoTotal           = pBarroSolicitado * -1,
                                Editor       = pPreBar.Editor,
                                FechaEdicion = pPreBar.FechaEdicion
                            };
                            lst.Add(tmpMovB_inNegro);
                        }
                    }
                }
            }

            return(lst);
        }