public IActionResult AjustarInventario(TomaViewModel viewModel)
        {
            try
            {
                viewModel.Borrador = false;
                var toma = GestionaToma(viewModel);

                var ajuste = map.AjustarInventario(toma.Id);

                var kardex = kardexMap.CreateKardexAM(ajuste, (int)ajuste.Id);

                return(Json(new { success = true, idAjuste = ajuste.Id }));
            }
            catch (Exception ex)
            {
                AltivaLog.Log.Insertar(ex.ToString(), "Error");
                throw;
            }
        }
Beispiel #2
0
        public ActionResult CrearEditarAjuste(AjusteViewModel viewModel, IList <AjusteInventarioViewModel> detalle, IList <long> eliminadas)
        {
            try
            {
                if (viewModel.Id != 0)
                {
                    var ajuste = map.Update(viewModel);

                    var ajusteKardex = map.ViewModelToDomain(map.DomainToViewModel(ajuste));



                    if (detalle.Count() > 0 || eliminadas.Count() > 0)
                    {
                        IList <TbPrAjusteInventario> ajusteInventario = new List <TbPrAjusteInventario>();

                        //va a contener todos los id de los detalles eliminados, actualizados y creados para despues consultarlos con todos sus datos
                        IList <long> detallesId = new List <long>();

                        //va a contener solo los detalles creados
                        IList <long> delKardex = new List <long>();

                        if (eliminadas.Count() > 0)
                        {
                            foreach (var item in eliminadas)
                            {
                                detallesId.Add(item);
                                ///lista para revesar cambios en kardex
                                //delKardex.Add(item);
                            }
                        }



                        if (detalle.Count() > 0)
                        {
                            foreach (var item in detalle)
                            {
                                item.IdAjuste = ajuste.Id;
                                if (item.Id != 0)
                                {
                                    eliminadas.Add(item.Id);
                                    detallesId.Add(item.Id);
                                    item.Id = 0;
                                }
                            }

                            ajusteInventario = map.CreateOrUpdateAI(detalle);

                            foreach (var i in ajusteInventario)
                            {
                                delKardex.Add(i.Id);
                                detallesId.Add(i.Id);
                            }
                        }

                        if (detallesId.Count() > 0)
                        {
                            ////obtiene lineas con todos los datos para insertar en el kardex
                            var ajusteTemp = service.GetAjusteForKardex((int)ajuste.Id, detallesId);

                            if (detalle.Count() > 0)
                            {
                                ////lista sin lineas eliminadas .Where(d => idDetalles.Any(idD => idD == d.Id)).ToList(),
                                ///

                                ajusteKardex.TbPrAjusteInventario = ajusteTemp.TbPrAjusteInventario.Where(d => delKardex.Any(idD => idD == d.Id)).ToList();

                                var kardex = kardexMap.CreateKardexAM(ajusteKardex, (int)ajuste.Id);
                            }



                            if (eliminadas.Count() > 0)
                            {
                                ajusteKardex.TbPrAjusteInventario = ajusteTemp.TbPrAjusteInventario.Where(d => eliminadas.Any(id => id == d.Id)).ToList();
                                kardexMap.CreateKardexDeletedAM(ajusteKardex);

                                service.DeleteAjusteInventario(eliminadas);
                            }
                        }
                    }
                }
                else
                {
                    viewModel.IdUsuario     = int.Parse(User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value);
                    viewModel.FechaCreacion = DateTime.Now;
                    var ajuste = map.Create(viewModel);
                    foreach (var item in detalle)
                    {
                        item.IdAjuste = ajuste.Id;
                    }

                    ajuste.TbPrAjusteInventario = map.CreateOrUpdateAI(detalle);

                    ////obtiene lineas con todos los datos para insertar en el kardex
                    var ajusteKardex = service.GetAjusteForKardex((int)ajuste.Id, ajuste.TbPrAjusteInventario.Select(d => d.Id).ToList());
                    var kardex       = kardexMap.CreateKardexAM(ajusteKardex, (int)ajuste.Id);
                }
                return(Json(new { success = true }));
            }
            catch (Exception ex)
            {
                AltivaLog.Log.Insertar(ex.ToString(), "Error");
                throw;
            }
        }