示例#1
0
        private void agregarHistoricoFisico(AjusteSIAH ajusteSIAH, int saldo, DetalleAjusteSIAH detalle)
        {
            HistoricoFisico historicoFisico = new HistoricoFisico();

            historicoFisico.insumoId        = detalle.insumoId;
            historicoFisico.fechaMovimiento = ajusteSIAH.fechaGeneracion;
            historicoFisico.descripcion     = "Ajuste de stock: " + detalle.info;
            historicoFisico.saldo           = saldo;
            historicoFisico.isNegative      = detalle.cantidad < 0 ? true : false;
            historicoFisico.cantidad        = detalle.cantidad;

            db.HistoricoFisico.Add(historicoFisico);
        }
示例#2
0
 public ActionResult ActualizarStock(string[] syncData, string userId)
 {
     try
     {
         // TODO: crear un ajuste nuevo y al recorrer los insumos ir agregando los detalles
         // No olvidar crear los historicos para cada insumo
         var ajuste = new AjusteSIAH();
         ajuste.fechaGeneracion = DateTime.UtcNow;
         ajuste.info            = "Sincronización con stock OCASA";
         ajuste.usuarioId       = int.Parse(userId);
         Uri baseUri  = new Uri("http://localhost:3000");
         var detalles = new HashSet <DetalleAjusteSIAH>();
         foreach (var id in syncData)
         {
             var insumoActual      = db.Insumos.Find(int.Parse(id));
             var insumoOcasaActual = db.InsumoOcasa.Find(int.Parse(id));
             if (insumoActual != null)
             {   //Asumimos que el Stock Fisico (entregado) es mayor al stock (comprometido por las autorizaciones)
                 //por lo tanto calculamos la diferencia para mantener la misma respecto al nuevo stock
                 //Ej: Stock fisico = 100; Stock comprometido = 30; Stock Ocasa = 90
                 //Resultado -> Stock fisico 90; Stock comprometido = 20
                 var diferenciaStocks = insumoOcasaActual.stockFisico - insumoActual.stockFisico;
                 var diff             = insumoActual.stockFisico - insumoActual.stock;
                 insumoActual.stockFisico     = insumoOcasaActual.stockFisico <= 0 ? 0 : insumoOcasaActual.stockFisico;
                 insumoActual.stock           = insumoActual.stockFisico - diff <= 0 ? 0 : insumoActual.stockFisico - diff;
                 db.Entry(insumoActual).State = EntityState.Modified;
                 var detalleAjuste = new DetalleAjusteSIAH();
                 detalleAjuste.insumoId = insumoActual.id;
                 detalleAjuste.info     = "Ajuste por sincronizacion con OCASA";
                 detalleAjuste.cantidad = diferenciaStocks;
                 detalles.Add(detalleAjuste);
                 agregarHistoricoSIAH(ajuste, insumoActual.stock, detalleAjuste);
                 agregarHistoricoFisico(ajuste, insumoActual.stockFisico, detalleAjuste);
             }
         }
         ajuste.detallesAjuste = detalles;
         db.AjusteSIAHs.Add(ajuste);
         db.SaveChanges();
         return(RedirectToAction("DirectorArea", "Home", new { param = "Success" }));
     }
     catch (Exception e)
     {
         Console.WriteLine(e.ToString());
         return(RedirectToAction("DirectorArea", "Home", new
         {
             param = e.Message
         }));
     }
 }