예제 #1
0
        public async Task <AjaxResult> Add([FromBody] InboundReceiptInputDto dto)
        {
            return(await AjaxResult.Business(async result =>
            {
                Check.NotNull(dto, nameof(dto));
                dto.Id = Guid.NewGuid();
                if (!ModelState.IsValid)
                {
                    result.Error("提交信息验证失败");
                    return;
                }
                if (dto.Items == null || dto.Items.Length <= 0)
                {
                    result.Error("入库单至少需要一个采购项");
                    return;
                }

                if (String.IsNullOrWhiteSpace(dto.Operator))
                {
                    dto.Operator = User.Identity.Name;
                }
                dto.DateTime = DateTime.Now;
                foreach (var item in dto.Items)
                {
                    item.Id = Guid.NewGuid();
                    item.InboundReceiptId = dto.Id;
                }
                await _inboundReceiptContract.AddInboundReceiptAsync(dto, ServiceProvider);
                result.Type = AjaxResultType.Success;
            }));
        }
예제 #2
0
        public async Task <AjaxResult> Update([FromBody] InboundReceiptInputDto dto)
        {
            return(await AjaxResult.Business(async result =>
            {
                Check.NotNull(dto, nameof(dto));

                if (!ModelState.IsValid)
                {
                    result.Error("提交信息验证失败");
                    return;
                }
                if (String.IsNullOrWhiteSpace(dto.Operator))
                {
                    dto.Operator = User.Identity.Name;
                }
                dto.DateTime = DateTime.Now;
                foreach (var item in dto.Items)
                {
                    item.InboundReceiptId = dto.Id;
                }
                await _inboundReceiptContract.UpdateInboundReceiptAsync(dto);
                result.Type = AjaxResultType.Success;
                if (dto == null)
                {
                    result.Error("找不到指定的入库单信息");
                }
                else
                {
                    result.Success(dto);
                }
            }));
        }
        public async Task <bool> UpdateInboundReceiptAsync(InboundReceiptInputDto dto)
        {
            var inboundReceipt = dto.MapTo <InboundReceipt>();
            await _inboundReceiptRepo.UpdateAsync(inboundReceipt);

            var items = dto.Items.Select(d => d.MapTo <InboundReceiptItem>()).ToArray();
            await _inboundReceiptItemRepo.UpdateAsync(items);

            return(true);
        }
        public async Task <bool> AddInboundReceiptAsync(InboundReceiptInputDto dto, IServiceProvider serviceProvider)
        {
            if (dto.Items == null || dto.Items.Length <= 0)
            {
                return(false);
            }

            var inboundReceipt = dto.MapTo <InboundReceipt>();
            var items          = dto.Items.Select(d => d.MapTo <InboundReceiptItem>()).ToArray();

            var inventoryRepo = serviceProvider.GetService <IRepository <Inventory, Guid> >();
            var warehouseRepo = serviceProvider.GetService <IRepository <Kira.LaconicInvoicing.Warehouse.Entities.Warehouse, Guid> >();
            var warehouse     = await warehouseRepo.GetFirstAsync(w => w.Number == dto.WarehouseNumber);

            var inventories       = inventoryRepo.Query().Where(iv => iv.WarehouseId == warehouse.Id);
            var updateInventories = new List <Inventory>();
            var addInventories    = new List <Inventory>();

            var dt = DateTime.Now;

            foreach (var item in items)
            {
                if (inventories.Any(iv => iv.Number == item.Number))
                {
                    var inventory = await inventories.FirstOrDefaultAsync(iv => iv.Number == item.Number);

                    inventory.Amount  += item.Amount;
                    inventory.DateTime = dt;
                    updateInventories.Add(inventory);
                }
                else
                {
                    var inventory = new Inventory()
                    {
                        Id            = Guid.NewGuid(),
                        WarehouseId   = warehouse.Id,
                        GoodsCategory = item.GoodsCategory,
                        Name          = item.Name,
                        Number        = item.Number,
                        Amount        = item.Amount,
                        DateTime      = dt
                    };

                    addInventories.Add(inventory);
                }
            }

            await _inboundReceiptRepo.InsertAsync(inboundReceipt);

            await _inboundReceiptItemRepo.InsertAsync(items);

            if (updateInventories.Count > 0)
            {
                await inventoryRepo.UpdateAsync(updateInventories.ToArray());
            }
            if (addInventories.Count > 0)
            {
                await inventoryRepo.InsertAsync(addInventories.ToArray());
            }
            return(true);
        }