Ejemplo n.º 1
0
        public async Task <IActionResult> merge_ajuste(MergeInventarioRegister mergeInventarioRegister)
        {
            var createdInventario = await _repoInventario.MergeInventario(mergeInventarioRegister);

            return(Ok());
        }
        public async Task <long> MergeInventario(MergeInventarioRegister mergeInventarioRegister)
        {
            string[]          prm     = mergeInventarioRegister.ids.Split(',');
            InventarioGeneral dominio = new InventarioGeneral();
            InvLod            invLod  = null;
            int total = 0;
            List <AjusteInventario> ajustes = new List <AjusteInventario>();
            AjusteInventario        ajuste  = null;



            var aux = _context.InventarioGeneral.Where(x => x.Id == Convert.ToInt64(prm[1])).SingleOrDefault();
            var lod = _context.InvLod.Where(x => x.Id == aux.LodId).SingleOrDefault();


            //dominio.UntQty = total;

            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    invLod = new InvLod();
                    invLod.FechaHoraRegistro = DateTime.Now;
                    invLod.LodNum            = "";
                    invLod.UbicacionId       = lod.UbicacionId;

                    await _context.AddAsync <InvLod>(invLod);

                    await _context.SaveChangesAsync();

                    // Secuencia de LPN
                    invLod.LodNum = 'E' + (invLod.Id).ToString().PadLeft(8, '0');

                    foreach (var item in prm)
                    {
                        var inventarios = _context.InventarioGeneral.Where(x => x.LodId == Convert.ToInt64(item)).ToList();
                        foreach (var item2 in inventarios)
                        {
                            //Vinculo INVLOD
                            item2.LodId = invLod.Id;
                            _context.SaveChanges();
                        }
                    }



                    // foreach (var item in prm)
                    // {

                    //      var inventarios = _context.InventarioGeneral.Where(x=>x.LodId == Convert.ToInt64(item)).ToList();
                    //      foreach (var objInventario in inventarios)
                    //      {
                    //             ajuste = new AjusteInventario();
                    //             ajuste.EstadoId = (int) Constantes.EstadoInventario.Eliminado;
                    //             ajuste.FechaExpire= objInventario.FechaExpire;
                    //             ajuste.FechaHoraAjuste = DateTime.Now;
                    //             ajuste.FechaIngreso = objInventario.FechaRegistro;
                    //             ajuste.FechaManufactura = objInventario.FechaManufactura;
                    //             ajuste.LotNum = invLod.LodNum ;
                    //             ajuste.UntQty = objInventario.UntQty;
                    //             ajuste.ProductoId = objInventario.ProductoId;
                    //             ajuste.InventarioId = objInventario.Id;
                    //             ajuste.ClienteId = objInventario.ClienteId;
                    //             ajuste.LineaId = objInventario.LineaId;
                    //             ajuste.OrdenReciboId = objInventario.OrdenReciboId;
                    //             ajuste.Almacenado = objInventario.Almacenado;
                    //             ajuste.HuellaId = objInventario.HuellaId;
                    //             ajuste.UsuarioRegistroId = 1;
                    //             ajustes.Add(ajuste);


                    //      }



                    // }
                    //agregar a ajustes
                    await _context.AddRangeAsync(ajustes);

                    await _context.SaveChangesAsync();


                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
                return(dominio.Id);
            }
        }