Esempio n. 1
0
        public async Task <AjaxResult> Add([FromBody] OutboundReceiptInputDto 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.OutboundReceiptId = dto.Id;
                }

                var isSuccess = await _outboundReceiptContract.AddOutboundReceiptAsync(dto, ServiceProvider);
                result.Type = isSuccess? AjaxResultType.Success:AjaxResultType.Error;
            }));
        }
Esempio n. 2
0
        public async Task <AjaxResult> Update([FromBody] OutboundReceiptInputDto 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.OutboundReceiptId = dto.Id;
                }
                await _outboundReceiptContract.UpdateOutboundReceiptAsync(dto);
                result.Type = AjaxResultType.Success;
                if (dto == null)
                {
                    result.Error("找不到指定的出库单信息");
                }
                else
                {
                    result.Success(dto);
                }
            }));
        }
Esempio n. 3
0
        public async Task <bool> UpdateOutboundReceiptAsync(OutboundReceiptInputDto dto)
        {
            var outboundReceipt = dto.MapTo <OutboundReceipt>();
            await _outboundReceiptRepo.UpdateAsync(outboundReceipt);

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

            return(true);
        }
Esempio n. 4
0
        public async Task <bool> AddOutboundReceiptAsync(OutboundReceiptInputDto dto, IServiceProvider serviceProvider)
        {
            if (dto.Items == null || dto.Items.Length <= 0)
            {
                return(false);
            }

            var outboundReceipt = dto.MapTo <OutboundReceipt>();
            var items           = dto.Items.Select(d => d.MapTo <OutboundReceiptItem>()).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;
                    if (inventory.Amount < 0)
                    {
                        throw new BussinessException("库存数不能少于0");
                    }
                    updateInventories.Add(inventory);
                }
                else
                {
                    var inventory = new Inventory()
                    {
                        Id            = Guid.NewGuid(),
                        WarehouseId   = warehouse.Id,
                        GoodsCategory = item.GoodsCategory,
                        Number        = item.Number,
                        Amount        = item.Amount,
                        DateTime      = dt
                    };

                    addInventories.Add(inventory);
                }
            }

            await _outboundReceiptRepo.InsertAsync(outboundReceipt);

            await _outboundReceiptItemRepo.InsertAsync(items);

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