Пример #1
0
        public async Task Handle(CreateGoodsReceiptNoteCommand goodsReceiptNoteCommand, CancellationToken cancellationToken)
        {
            var goodsReceiptNoteDetails =
                await _goodsReceiptNoteDetailRepository.GetsByGoodsReceiptNoteId(goodsReceiptNoteCommand.TenantId, goodsReceiptNoteCommand.GoodsReceiptNoteId);

            if (goodsReceiptNoteDetails != null && goodsReceiptNoteDetails.Any())
            {
                var products = goodsReceiptNoteDetails.ToList();
                foreach (var product in products)
                {
                    // Thêm tồn kho cho ngày nhập.
                    await _inventoryReportService.Insert(new InventoryReport
                    {
                        TenantId  = goodsReceiptNoteCommand.TenantId,
                        ProductId = product.ProductId,
                        Date      = goodsReceiptNoteCommand.EntryDate,
                        Quantity  = product.Quantity,
                        //Price = product.Price,
                        WarehouseId = goodsReceiptNoteCommand.WarehouseId,
                        ReceiptId   = goodsReceiptNoteCommand.GoodsReceiptNoteId,
                        IsReceived  = true
                    });
                }
            }
        }
Пример #2
0
        public async Task <ActionResultResponse> UpdateEntryDate(string tenantId, string warehouseId, string receiptNoteId,
                                                                 DateTime oldEntryDate, DateTime newEntryDate)
        {
            // Lấy về danh sách sản phẩm theo phiếu nhập.
            var goodsReceiptNoteDetails =
                await _goodsReceiptNoteDetailRepository.GetsByGoodsReceiptNoteId(tenantId, receiptNoteId);

            if (goodsReceiptNoteDetails == null || !goodsReceiptNoteDetails.Any())
            {
                return(new ActionResultResponse(-1,
                                                _resourceService.GetString(
                                                    "Goods receipt note item does not exists. Please contact with administrator.")));
            }

            foreach (var goodsReceiptNoteDetail in goodsReceiptNoteDetails)
            {
                await ExecuteUpdateEntryDate(tenantId, warehouseId, goodsReceiptNoteDetail.ProductId, oldEntryDate,
                                             newEntryDate);
            }
            return(new ActionResultResponse(1, _resourceService.GetString("Update inventory daily report successful.")));
        }
Пример #3
0
        public async Task Handle(UpdateGoodsReceiptNoteCommand updateGoodsReceiptNoteCommand, CancellationToken cancellationToken)
        {
            var fromDate =
                DateTime.Compare(updateGoodsReceiptNoteCommand.OldEntryDate, updateGoodsReceiptNoteCommand.NewEntryDate) < 0
                    ? updateGoodsReceiptNoteCommand.OldEntryDate
                    : updateGoodsReceiptNoteCommand.NewEntryDate;

            // Trường hợp đổi kho sẽ cập nhật lại kho mới cho chi tiết phiếu nhập.
            if (updateGoodsReceiptNoteCommand.OldWarehouseId != updateGoodsReceiptNoteCommand.NewWarehouseId ||
                DateTime.Compare(updateGoodsReceiptNoteCommand.OldEntryDate,
                                 updateGoodsReceiptNoteCommand.NewEntryDate) != 0)
            {
                var result = await _goodsReceiptNoteDetailService.ChangeWarehouse(
                    updateGoodsReceiptNoteCommand.TenantId,
                    updateGoodsReceiptNoteCommand.GoodsReceiptNoteId, updateGoodsReceiptNoteCommand.NewWarehouseId,
                    updateGoodsReceiptNoteCommand.UserId, updateGoodsReceiptNoteCommand.FullName);

                await _inventoryReportService.UpdateInventory(updateGoodsReceiptNoteCommand.TenantId,
                                                              updateGoodsReceiptNoteCommand.GoodsReceiptNoteId, updateGoodsReceiptNoteCommand.OldWarehouseId,
                                                              updateGoodsReceiptNoteCommand.NewEntryDate, true);
            }

            // Lấy về danh sách sản phẩm theo phiếu nhập chi tiết.
            var goodsReceiptNoteDetails =
                await _goodsReceiptNoteDetailRepository.GetsByGoodsReceiptNoteId(updateGoodsReceiptNoteCommand.TenantId,
                                                                                 updateGoodsReceiptNoteCommand.GoodsReceiptNoteId);

            if (goodsReceiptNoteDetails.Any())
            {
                foreach (var goodsReceiptNoteDetail in goodsReceiptNoteDetails)
                {
                    await _inventoryReportService.SynchronizeAllInventory(updateGoodsReceiptNoteCommand.TenantId,
                                                                          updateGoodsReceiptNoteCommand.OldWarehouseId,
                                                                          goodsReceiptNoteDetail.ProductId, goodsReceiptNoteDetail.LotId, fromDate);

                    // Trường hợp thay đổi kho. Cập nhật lại tồn kho của kho mới.
                    if (updateGoodsReceiptNoteCommand.OldWarehouseId != updateGoodsReceiptNoteCommand.NewWarehouseId)
                    {
                        await _inventoryReportService.SynchronizeAllInventory(updateGoodsReceiptNoteCommand.TenantId,
                                                                              updateGoodsReceiptNoteCommand.NewWarehouseId,
                                                                              goodsReceiptNoteDetail.ProductId, goodsReceiptNoteDetail.LotId, fromDate);
                    }
                }
            }
        }