コード例 #1
0
        public async Task <IActionResult> GetGoodsDeliveryAuthorizationById(Int64 GoodsDeliveryAuthorizationId)
        {
            GoodsDeliveryAuthorization Items = new GoodsDeliveryAuthorization();

            try
            {
                Items = await _context.GoodsDeliveryAuthorization.Include(q => q.GoodsDeliveryAuthorizationLine)
                        .Where(q => q.GoodsDeliveryAuthorizationId == GoodsDeliveryAuthorizationId).FirstOrDefaultAsync();
            }
            catch (Exception ex)
            {
                _logger.LogError($"Ocurrio un error: { ex.ToString() }");
                return(BadRequest($"Ocurrio un error:{ex.Message}"));
            }


            return(await Task.Run(() => Ok(Items)));
        }
コード例 #2
0
        public async Task <IActionResult> Delete([FromBody] GoodsDeliveryAuthorization _GoodsDeliveryAuthorization)
        {
            GoodsDeliveryAuthorization _GoodsDeliveryAuthorizationq = new GoodsDeliveryAuthorization();

            try
            {
                _GoodsDeliveryAuthorizationq = _context.GoodsDeliveryAuthorization
                                               .Where(x => x.GoodsDeliveryAuthorizationId == (Int64)_GoodsDeliveryAuthorization.GoodsDeliveryAuthorizationId)
                                               .FirstOrDefault();

                _context.GoodsDeliveryAuthorization.Remove(_GoodsDeliveryAuthorizationq);
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                _logger.LogError($"Ocurrio un error: { ex.ToString() }");
                return(BadRequest($"Ocurrio un error:{ex.Message}"));
            }

            return(await Task.Run(() => Ok(_GoodsDeliveryAuthorizationq)));
        }
コード例 #3
0
        public async Task <ActionResult <GoodsDeliveryAuthorization> > Update([FromBody] GoodsDeliveryAuthorization _GoodsDeliveryAuthorization)
        {
            GoodsDeliveryAuthorization _GoodsDeliveryAuthorizationq = _GoodsDeliveryAuthorization;

            try
            {
                _GoodsDeliveryAuthorizationq = await(from c in _context.GoodsDeliveryAuthorization
                                                     .Where(q => q.GoodsDeliveryAuthorizationId == _GoodsDeliveryAuthorization.GoodsDeliveryAuthorizationId)
                                                     select c
                                                     ).FirstOrDefaultAsync();

                _context.Entry(_GoodsDeliveryAuthorizationq).CurrentValues.SetValues((_GoodsDeliveryAuthorization));

                //_context.GoodsDeliveryAuthorization.Update(_GoodsDeliveryAuthorizationq);
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                _logger.LogError($"Ocurrio un error: { ex.ToString() }");
                return(BadRequest($"Ocurrio un error:{ex.Message}"));
            }

            return(await Task.Run(() => Ok(_GoodsDeliveryAuthorizationq)));
        }
コード例 #4
0
        public async Task <ActionResult <GoodsDeliveryAuthorization> > Insert([FromBody] GoodsDeliveryAuthorizationDTO _GoodsDeliveryAuthorization)
        {
            GoodsDeliveryAuthorization _GoodsDeliveryAuthorizationq = new GoodsDeliveryAuthorization();

            try
            {
                using (var transaction = _context.Database.BeginTransaction())
                {
                    try
                    {
                        _GoodsDeliveryAuthorizationq = _GoodsDeliveryAuthorization;
                        _context.GoodsDeliveryAuthorization.Add(_GoodsDeliveryAuthorizationq);

                        foreach (var item in _GoodsDeliveryAuthorizationq.GoodsDeliveryAuthorizationLine)
                        {
                            item.GoodsDeliveryAuthorizationId = _GoodsDeliveryAuthorizationq.GoodsDeliveryAuthorizationId;
                            _context.GoodsDeliveryAuthorizationLine.Add(item);

                            Int64 IdCD = await _context.CertificadoDeposito.Where(q => q.NoCD == item.NoCertificadoDeposito).Select(q => q.IdCD).FirstOrDefaultAsync();

                            //Kardex _kardexmax = await (from kdx in _context.Kardex
                            //      .Where(q => q.CustomerId == _GoodsDeliveryAuthorization.CustomerId)
                            //                           from kdxline in _context.KardexLine
                            //                             .Where(q => q.KardexId == kdx.KardexId)
                            //                               .Where(o => o.SubProducId == item.SubProductId)
                            //                               .OrderByDescending(o => o.DocumentDate).Take(1)
                            //                           select kdx).FirstOrDefaultAsync();

                            Kardex _kardexmax = await(from c in _context.Kardex
                                                      .OrderByDescending(q => q.DocumentDate)
                                                      // .Take(1)
                                                      join d in _context.KardexLine on c.KardexId equals d.KardexId
                                                      where c.CustomerId == _GoodsDeliveryAuthorization.CustomerId && d.SubProducId == item.SubProductId &&
                                                      c.DocumentId == IdCD && c.DocumentName == "CD"
                                                      select c
                                                      )
                                                .FirstOrDefaultAsync();

                            if (_kardexmax == null)
                            {
                                _kardexmax = new Kardex();
                            }



                            KardexLine _KardexLine = await _context.KardexLine
                                                     .Where(q => q.KardexId == _kardexmax.KardexId)
                                                     .Where(q => q.SubProducId == item.SubProductId)
                                                     // .Where(q => q.WareHouseId == item.WarehouseId)
                                                     // .Where(q => q.BranchId == _GoodsDeliveryAuthorizationq.BranchId)
                                                     .OrderByDescending(q => q.KardexLineId)
                                                     .Take(1)
                                                     .FirstOrDefaultAsync();

                            SubProduct _subproduct = await(from c in _context.SubProduct
                                                           .Where(q => q.SubproductId == item.SubProductId)
                                                           select c
                                                           ).FirstOrDefaultAsync();

                            if (_KardexLine.TotalCD < item.Quantity)
                            {
                                return(await Task.Run(() => BadRequest($"La cantidad a retirar no puede ser superior al total del ciertificado")));
                            }

                            //  _context.GoodsReceivedLine.Add(item);
                            //item. = item.Quantity + _KardexLine.Total;

                            //Por cada linea de certificado , se agrega un Kardex de salida del tipo CD
                            _GoodsDeliveryAuthorization.Kardex._KardexLine.Add(new KardexLine
                            {
                                DocumentDate = _GoodsDeliveryAuthorization.DocumentDate,
                                // ProducId = _CertificadoDeposito.,
                                // ProductName = _GoodsReceivedq.ProductName,
                                SubProducId       = item.SubProductId,
                                SubProductName    = item.SubProductName,
                                QuantityEntry     = 0,
                                QuantityOut       = item.Quantity,
                                QuantityEntryBags = 0,
                                BranchId          = _GoodsDeliveryAuthorization.BranchId,
                                BranchName        = _GoodsDeliveryAuthorization.BranchName,
                                WareHouseId       = item.WarehouseId,
                                WareHouseName     = item.WarehouseName,
                                UnitOfMeasureId   = item.UnitOfMeasureId,
                                UnitOfMeasureName = item.UnitOfMeasureName,
                                TypeOperationId   = 1,
                                TypeOperationName = "Salida",
                                //Total = item.valorcertificado,
                                //TotalBags = item.QuantitySacos + _KardexLine.TotalBags,
                                //QuantityEntryCD = item.Quantity / (1 + _subproduct.Merma),
                                QuantityOutCD = item.Quantity,
                                TotalCD       = _KardexLine.TotalCD - (item.Quantity),
                            });


                            _GoodsDeliveryAuthorization.Kardex.DocType           = 0;
                            _GoodsDeliveryAuthorization.Kardex.DocName           = "SolicitudAutorizacion/GoodsDeliveryAuthorization";
                            _GoodsDeliveryAuthorization.Kardex.DocumentDate      = _GoodsDeliveryAuthorization.DocumentDate;
                            _GoodsDeliveryAuthorization.Kardex.FechaCreacion     = DateTime.Now;
                            _GoodsDeliveryAuthorization.Kardex.FechaModificacion = DateTime.Now;
                            _GoodsDeliveryAuthorization.Kardex.TypeOperationId   = 1;
                            _GoodsDeliveryAuthorization.Kardex.TypeOperationName = "Salida";
                            _GoodsDeliveryAuthorization.Kardex.KardexDate        = DateTime.Now;
                            _GoodsDeliveryAuthorization.Kardex.DocumentName      = "CD";

                            _GoodsDeliveryAuthorization.Kardex.CustomerId   = _GoodsDeliveryAuthorization.CustomerId;
                            _GoodsDeliveryAuthorization.Kardex.CustomerName = _GoodsDeliveryAuthorization.CustomerName;
                            //_CertificadoDeposito.Kardex.CurrencyId = _CertificadoDeposito.CurrencyId;
                            _GoodsDeliveryAuthorization.Kardex.CurrencyName        = _GoodsDeliveryAuthorization.CurrencyName;
                            _GoodsDeliveryAuthorization.Kardex.DocumentId          = IdCD;
                            _GoodsDeliveryAuthorization.Kardex.UsuarioCreacion     = _GoodsDeliveryAuthorization.UsuarioCreacion;
                            _GoodsDeliveryAuthorization.Kardex.UsuarioModificacion = _GoodsDeliveryAuthorization.UsuarioModificacion;

                            _context.Kardex.Add(_GoodsDeliveryAuthorization.Kardex);
                        }



                        //await _context.SaveChangesAsync();
                        //foreach (var item in _GoodsDeliveryAuthorization.CertificadosAsociados)
                        //{
                        //    CDGoodsDeliveryAuthorization _certificadoauthorization =
                        //        new CDGoodsDeliveryAuthorization
                        //        {
                        //            CD = item,
                        //            GoodsDeliveryAuthorizationId = _GoodsDeliveryAuthorizationq.GoodsDeliveryAuthorizationId,
                        //        };

                        //    _context.CDGoodsDeliveryAuthorization.Add(_certificadoauthorization);
                        //}


                        BitacoraWrite _write = new BitacoraWrite(_context, new Bitacora
                        {
                            IdOperacion  = _GoodsDeliveryAuthorization.GoodsDeliveryAuthorizationId,
                            DocType      = "GoodsDeliveryAuthorization",
                            ClaseInicial =
                                Newtonsoft.Json.JsonConvert.SerializeObject(_GoodsDeliveryAuthorization, new JsonSerializerSettings {
                                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                            }),
                            ResultadoSerializado = Newtonsoft.Json.JsonConvert.SerializeObject(_GoodsDeliveryAuthorization, new JsonSerializerSettings {
                                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                            }),
                            Accion              = "Insert",
                            FechaCreacion       = DateTime.Now,
                            FechaModificacion   = DateTime.Now,
                            UsuarioCreacion     = _GoodsDeliveryAuthorization.UsuarioCreacion,
                            UsuarioModificacion = _GoodsDeliveryAuthorization.UsuarioModificacion,
                            UsuarioEjecucion    = _GoodsDeliveryAuthorization.UsuarioModificacion,
                        });

                        await _context.SaveChangesAsync();


                        await _context.SaveChangesAsync();

                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw ex;
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Ocurrio un error: { ex.ToString() }");
                return(await Task.Run(() => BadRequest($"Ocurrio un error:{ex.Message}")));
            }

            return(Ok(_GoodsDeliveryAuthorizationq));
        }