Example #1
0
        public async Task <long> Almacenamiento(InventarioForStorage command)
        {
            var dominio = await _context.InventarioGeneral.Where(x => x.Id == command.Id).SingleOrDefaultAsync();

            var invlod = await _context.InvLod.Where(x => x.Id == dominio.LodId).SingleOrDefaultAsync();



            /// Lógica para cerrar pedido

            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    invlod.UbicacionId     = invlod.UbicacionProxId.Value;
                    invlod.UbicacionProxId = null;

                    await _context.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
                return(command.Id);
            }
        }
        public async Task <long> Almacenamiento(InventarioForStorage command)
        {
            var dominio = await _context.InventarioGeneral.Where(x => x.Id == command.Id).SingleOrDefaultAsync();

            var invlod = await _context.InvLod.Where(x => x.Id == dominio.LodId).SingleOrDefaultAsync();

            // dominio.UbicacionId = dominio.UbicacionIdProx;
            // dominio.UbicacionIdProx = null;
            dominio.Almacenado = true;

            var lineas = _context.InventarioGeneral.Where(x => x.OrdenReciboId == dominio.OrdenReciboId).ToList();
            var cab    = _context.OrdenesRecibo.Where(x => x.Id == dominio.OrdenReciboId).Single();
            var Equipo = _context.EquipoTransporte.Where(x => x.Id == cab.EquipoTransporteId).Single();

            foreach (var item in lineas)
            {
                if (item.Almacenado.HasValue)
                {
                    if (!item.Almacenado.Value)
                    {
                        cab.EstadoId = (Int16)Constantes.EstadoOrdenIngreso.PendienteAlmacenamiento;
                        break;
                    }
                    else
                    {
                        cab.EstadoId    = (Int16)Constantes.EstadoOrdenIngreso.Terminado;
                        Equipo.EstadoId = (Int16)Constantes.EstadoEquipoTransporte.Cerrado;
                    }
                }
                else
                {
                    cab.EstadoId = (Int16)Constantes.EstadoOrdenIngreso.PendienteAlmacenamiento;
                    break;
                }
            }


            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    invlod.UbicacionId     = invlod.UbicacionProxId;
                    invlod.UbicacionProxId = null;

                    await _context.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
                return(command.Id);
            }
        }
        public async Task <long> MovimientoSalida(InventarioForStorage command)
        {
            KardexGeneral kardex;

            using (var transaction = _context.Database.BeginTransaction())
            {
                var pckrk = await _context.Pckwrk.Where(x => x.Id == command.Id).SingleOrDefaultAsync();

                var wrk = await _context.Wrk.Where(x => x.Id == pckrk.WrkId).SingleOrDefaultAsync();

                var dominio = await _context.InventarioGeneral.Where(x => x.Id == pckrk.InventarioId).Include(z => z.InvLod).SingleOrDefaultAsync();

                try
                {
                    pckrk.Confirmado               = true;
                    dominio.InvLod.UbicacionId     = wrk.DestinoId.Value;
                    dominio.InvLod.UbicacionProxId = null;

                    pckrk.DestinoId   = null;
                    pckrk.UbicacionId = wrk.DestinoId.Value;


                    /// Lógica para cerrar pedido
                    var detalles = await _context.Pckwrk.Where(x => x.WrkId == wrk.Id).ToListAsync();

                    if (detalles.Where(x => x.Confirmado == true).ToList().Count > 0)
                    {
                        wrk.FechaInicio = DateTime.Now;
                    }

                    foreach (var item in detalles)
                    {
                        if (item.Confirmado == false)
                        {
                            wrk.EstadoId = (Int32)Constantes.EstadoWrk.Iniciado;
                        }
                        else
                        {
                            wrk.EstadoId = (Int32)Constantes.EstadoWrk.Terminado;
                        }
                    }

                    await _context.SaveChangesAsync();


                    //Registrar el movimiento en el kardex
                    kardex                  = new KardexGeneral();
                    kardex.Almacenado       = false;
                    kardex.EstadoId         = dominio.EstadoId;
                    kardex.FechaExpire      = dominio.FechaExpire;
                    kardex.FechaManufactura = dominio.FechaManufactura;
                    kardex.FechaRegistro    = DateTime.Now;
                    kardex.HuellaId         = dominio.HuellaId;
                    kardex.LineaId          = dominio.LineaId;
                    kardex.LodId            = dominio.LodId;
                    kardex.LotNum           = dominio.LotNum;
                    kardex.Movimiento       = "S";
                    kardex.OrdenReciboId    = dominio.OrdenReciboId;
                    kardex.Peso             = dominio.Peso;
                    kardex.ProductoId       = dominio.ProductoId;
                    kardex.PropietarioId    = dominio.ClienteId;
                    kardex.ShipmentLine     = pckrk.ShipmentLineId;
                    kardex.UntQty           = pckrk.CantidadRetiro * -1; //dominio.UntQty * -1;
                    kardex.UsuarioIngreso   = 1;
                    kardex.InventarioId     = dominio.Id;

                    _context.KardexGeneral.Add(kardex);

                    //Eliminar el inventario

                    if (pckrk.CantidadRetiro == pckrk.CantidadPallet)
                    {
                        var eliminar = await _context.InventarioGeneral.Where(x => x.Id == dominio.Id).SingleAsync();

                        _context.InventarioGeneral.Remove(eliminar);
                    }
                    else
                    {
                        dominio.Almacenado = true;
                        dominio.UntQty     = pckrk.CantidadPallet - pckrk.CantidadRetiro;
                    }

                    await _context.SaveChangesAsync();


                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
                return(command.Id);
            }
        }
Example #4
0
        public async Task <IActionResult> almacenamiento(InventarioForStorage inventarioForFinish)
        {
            var createdInventario = await _repoInventario.Almacenamiento(inventarioForFinish);

            return(Ok());
        }