public async Task <InventarioGeneral> ActualizarInventario(InventarioForEdit command)
        {
            InventarioGeneral dominio        = null;
            AjusteInventario  dominio_ajuste = new AjusteInventario();
            InvLod            dominio_invlod = null;
            DateTime          Fecha_out;

            dominio        = _context.InventarioGeneral.SingleOrDefaultAsync(x => x.Id == command.Id).Result;
            dominio_invlod = _context.InvLod.SingleOrDefaultAsync(x => x.Id == dominio.LodId).Result;


            #region validar Fechas

            if (command.FechaExpire == "" || command.FechaExpire == null)
            {
                dominio.FechaExpire = null;
            }
            else
            if (!DateTime.TryParse(command.FechaExpire, out Fecha_out))
            {
                throw new ArgumentException("Fecha de Expiración incorrecta");
            }
            else
            {
                dominio.FechaExpire = Convert.ToDateTime(command.FechaExpire);
            }

            #endregion

            dominio_ajuste.Almacenado = dominio.Almacenado;
            dominio_ajuste.ClienteId  = dominio.ClienteId;
            dominio_ajuste.EstadoId   = command.EstadoId;
            if (command.FechaExpire != null)
            {
                dominio_ajuste.FechaExpire = Convert.ToDateTime(command.FechaExpire);
            }
            dominio_ajuste.FechaHoraAjuste = DateTime.Now;
            dominio_ajuste.FechaIngreso    = dominio.FechaRegistro;
            if (command.FechaManufactura != null)
            {
                dominio_ajuste.FechaManufactura = Convert.ToDateTime(command.FechaManufactura);
            }
            dominio_ajuste.HuellaId          = dominio.HuellaId;
            dominio_ajuste.InventarioId      = dominio.Id;
            dominio_ajuste.LineaId           = dominio.LineaId;
            dominio_ajuste.LodNum            = dominio_invlod.LodNum;
            dominio_ajuste.LotNum            = command.LotNum;
            dominio_ajuste.OrdenReciboId     = dominio.OrdenReciboId;
            dominio_ajuste.ProductoId        = dominio.ProductoId;
            dominio_ajuste.UbicacionId       = dominio_invlod.UbicacionId;
            dominio_ajuste.UntQty            = command.UntQty;
            dominio_ajuste.UsuarioRegistroId = command.UsuarioActualizar;



            dominio.LotNum = command.LotNum;
            dominio.UntQty = command.UntQty;
            if (command.FechaExpire != null)
            {
                dominio.FechaExpire = Convert.ToDateTime(command.FechaExpire);
            }
            if (command.FechaManufactura != null)
            {
                dominio.FechaManufactura = Convert.ToDateTime(command.FechaManufactura);
            }
            dominio.EstadoId = command.EstadoId;


            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    await _context.AddAsync <AjusteInventario>(dominio_ajuste);

                    await _context.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
                return(dominio);
            }
        }
Exemplo n.º 2
0
        public async Task <long> identifyDetail(OrdenReciboDetalleForIdentifyDto command)
        {
            InventarioGeneral dominio = null;

            //Agrupación...
            InvLod invLod = null;


            DateTime Fecha_out;

            var huelladetalle = await _context.HuellaDetalle.SingleOrDefaultAsync(x => x.HuellaId == command.HuellaId &&
                                                                                  x.UnidadMedidaId == command.UnidadMedidaId);

            var huelladetalle_aux = await _context.HuellaDetalle.Where(x => x.HuellaId == command.HuellaId).ToListAsync();

            int interacciones = 0;
            int cantidadTotal = 0;


            if (huelladetalle.Pallet) // pallet
            {
                cantidadTotal            = huelladetalle.UntQty * command.CantidadRecibida;
                interacciones            = cantidadTotal / huelladetalle.UntQty;
                command.CantidadRecibida = huelladetalle.UntQty;
            }
            else
            {
                cantidadTotal = huelladetalle.UntQty * command.CantidadRecibida;
                interacciones = 1;
            }
            var linea = await _context.OrdenesReciboDetalle.SingleOrDefaultAsync(x => x.Id == command.Id);

            var cab = await _context.OrdenesRecibo.SingleOrDefaultAsync(x => x.Id == linea.OrdenReciboId);

            var ubicacion = await _context.Ubicacion.Where(x => x.Id == cab.UbicacionId).SingleAsync();


            if (linea.CantidadRecibida == null)
            {
                linea.CantidadRecibida = 0;
            }

            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    for (int i = 0; i < interacciones; i++)
                    {
                        invLod = new InvLod();
                        invLod.FechaHoraRegistro = DateTime.Now;
                        invLod.LodNum            = "";
                        //En el origen, Stage de entrada.
                        invLod.UbicacionId = cab.UbicacionId;
                        await _context.AddAsync <InvLod>(invLod);

                        await _context.SaveChangesAsync();

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



                        dominio = new InventarioGeneral();
                        //Vinculo INVLOD
                        dominio.LodId          = invLod.Id;
                        dominio.FechaRegistro  = DateTime.Now;
                        dominio.HuellaId       = huelladetalle_aux.Where(x => x.Cas == true).SingleOrDefault().Id;        //command.HuellaId;
                        dominio.LotNum         = command.Lote;
                        dominio.ProductoId     = linea.ProductoId;
                        dominio.UsuarioIngreso = 1;
                        dominio.LineaId        = linea.Id;
                        dominio.OrdenReciboId  = linea.OrdenReciboId;
                        dominio.EstadoId       = command.EstadoID;
                        dominio.UntCas         = huelladetalle_aux.Where(x => x.Cas == true).SingleOrDefault().UntQty;
                        linea.EstadoID         = command.EstadoID;
                        dominio.ClienteId      = cab.PropietarioId;
                        linea.Lote             = command.Lote;

                        #region validar Fechas

                        if (command.FechaExpire == "" || command.FechaExpire == null)
                        {
                            dominio.FechaExpire = null;
                        }
                        else
                        if (!DateTime.TryParse(command.FechaExpire, out Fecha_out))
                        {
                            throw new ArgumentException("Fecha de Expiración incorrecta");
                        }
                        else
                        {
                            dominio.FechaExpire = Convert.ToDateTime(command.FechaExpire);
                        }


                        if (command.FechaManufactura == "" || command.FechaManufactura == null)
                        {
                            dominio.FechaManufactura = null;
                        }
                        else
                        if (!DateTime.TryParse(command.FechaExpire, out Fecha_out))
                        {
                            throw new ArgumentException("Fecha de Expiración incorrecta");
                        }
                        else
                        {
                            dominio.FechaManufactura = Convert.ToDateTime(command.FechaManufactura);
                        }

                        #endregion


                        linea.CantidadRecibida = linea.CantidadRecibida + command.CantidadRecibida;

                        if (linea.Cantidad < linea.CantidadRecibida)
                        {
                            throw new ArgumentException("err010");
                        }
                        else if (linea.Cantidad == linea.CantidadRecibida)
                        {
                            linea.Completo = true;
                        }
                        dominio.UntQty = command.CantidadRecibida;
                        await _context.AddAsync <InventarioGeneral>(dominio);
                    }
                    cab.EstadoId       = (Int16)Constantes.EstadoOrdenIngreso.Recibiendo;
                    ubicacion.EstadoId = 10;         // Libre
                    await _context.SaveChangesAsync();



                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
                finally
                {
                    transaction.Dispose();
                }
            }

            return(interacciones);
        }
        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);
            }
        }