Exemplo n.º 1
0
        /// <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);
            }
        }