/// <summary> /// Проведение накладной /// </summary> /// <param name="invoiceId"></param> /// <returns></returns> public string FixInvoice(Guid invoiceId, Guid userId) { string result; var invoice = _unitOfWork.InvoiceRepository.GetByID(invoiceId); var registers = _unitOfWork.RegisterRepository.GetByInvoiceId(invoiceId); // Взаимодействие с регистром накопления registers.ToList().ForEach(register => { var storageRegister = _unitOfWork.StorageRegisterRepository.GetByItemIdAndCost(register.ItemId, register.Cost); if (storageRegister != null) { storageRegister.Amount += register.Amount * invoice.Factor; } else { var newStorageRegister = new StorageRegister() { Id = Guid.NewGuid(), Date = DateConverter.ConvertToRTS(DateTime.UtcNow.ToLocalTime()), Amount = register.Amount, Cost = register.Cost, ItemId = register.ItemId }; _unitOfWork.StorageRegisterRepository.Insert(newStorageRegister); } if (storageRegister != null) { if (storageRegister.Amount == 0) { _unitOfWork.StorageRegisterRepository.Delete(storageRegister); } } }); // Изменение свойств существующей накладной invoice.IsTemporary = false; invoice.IsFixed = true; _unitOfWork.Save(); //UpdateInvoice(invoiceId, invoice); // Проверка сохраненных изменений invoice = _unitOfWork.InvoiceRepository.GetByID(invoiceId); if (invoice != null && invoice.IsFixed == true) { var invoiceType = _unitOfWork.InvoiceRepository.GetTypeById(invoice.TypeId); AddLog("UPDATED", string.Format("{0} {1}", invoiceType.Name, invoice.Name), userId); result = "Накладная " + invoice.Name + " успешно проведена!"; } else { result = "Накладная не проведена."; } return(result); }
async void UpdateLines(ProductionOrderClient productionOrder, StorageRegister Storage, bool OverwriteLines, bool goToLines, int prodTime = 0) { var prodAPI = new ProductionAPI(api); var result = await prodAPI.CreateProductionLines(productionOrder, Storage, OverwriteLines, prodTime); if (result == ErrorCodes.Succes) { prodQty = productionOrder._ProdQty; if (goToLines) { GoToLines(productionOrder); } } else { if (productionOrder.RowId != 0) { productionOrder.ProdQty = prodQty; api.UpdateNoResponse(productionOrder); } UtilDisplay.ShowErrorCode(result); } }