public void Update(DCOrder dCOrder) { if (dCOrder != null) { _repository.Entry <Sql.DCOrder>(dCOrder).State = System.Data.Entity.EntityState.Modified; } }
public ItemVariantAddPage(DCOrderLineClient line, DCOrder master) : base(null) { this.master = master; this.line = line; this.invItem = line.InvItem; InitPage(); }
public static DCOrderDTO ConvertToDCOrderDto(DCOrder dCOrder, string path) { DCOrderDTO dCOrderDTO = new DCOrderDTO(); dCOrderDTO.DCId = dCOrder.DCId; dCOrderDTO.DCOrderId = dCOrder.DCOrderId; dCOrderDTO.DCOrderNumber = dCOrder.DCOrderNumber; dCOrderDTO.DeliveryExpectedDate = dCOrder.DeliveryExpectedDate.HasValue ? dCOrder.DeliveryExpectedDate : DateTime.Now.Date; dCOrderDTO.DeliveredDate = dCOrder.DeliveredDate.HasValue ? dCOrder.DeliveredDate : DateTime.Now.Date; dCOrderDTO.DeliveredBy = dCOrder.DeliveredBy; dCOrderDTO.OrderComments = dCOrder.OrderComments; dCOrderDTO.OrderDate = dCOrder.OrderDate; dCOrderDTO.OrderTotalPrice = dCOrder.OrderTotalPrice; dCOrderDTO.TotalOrderQuantity = dCOrder.TotalOrderQuantity; dCOrderDTO.TotalActualQuantity = dCOrder.TotalActualQuantity.GetValueOrDefault(); OrderStatus status; Enum.TryParse <OrderStatus>(dCOrder.OrderStatusId.ToString(), out status); dCOrderDTO.OrderStatus = status; dCOrderDTO.DCName = dCOrder.DistributionCenter != null ? dCOrder.DistributionCenter.DCName : string.Empty; if (dCOrder.DCAddress != null) { dCOrderDTO.dCAddressDTO = DCAddressConvertor.ConvertToDCAddressDTO(dCOrder.DCAddress); } if (dCOrder.DCOrderDtls != null) { dCOrderDTO.dcOrderDtlList = new List <DCOrderDtlDTO>(); foreach (var dcorderDtl in dCOrder.DCOrderDtls) { dCOrderDTO.dcOrderDtlList.Add(ConvertToDCOrderDtlDto(dcorderDtl, path)); } } return(dCOrderDTO); }
public AddMultipleInventoryItemPage(SQLCacheFilter cache, Type tp, DCOrder master) : base(null) { DataContext = this; InitializeComponent(); localMenu.dataGrid = dgMultipleInventoryItems; SetRibbonControl(localMenu, dgMultipleInventoryItems); dgMultipleInventoryItems.api = api; dgMultipleInventoryItems.BusyIndicator = busyIndicator; recordType = tp; this.master = master; itemList = new List <InventoryItem>(); foreach (var rec in cache) { itemList.Add(new InventoryItem((InvItem)rec)); } dgMultipleInventoryItems.ItemsSource = itemList; dgMultipleInventoryItems.Visibility = Visibility.Visible; dgMultipleInventoryItems.Loaded += DgMultipleInventoryItems_Loaded; localMenu.OnItemClicked += localMenu_OnItemClicked; GetMenuItem(); #if SILVERLIGHT Application.Current.RootVisual.KeyDown += AddMultipleInventoryItemPage_KeyDown; #else this.KeyDown += AddMultipleInventoryItemPage_KeyDown; #endif DXSerializerHandler.AvoidSaveHeader(false); }
public void Add(DCOrder dCOrder) { if (dCOrder != null) { _repository.DCOrders.Add(dCOrder); } }
static public void Updatedata(DCOrder dbOrder, CompanyLayoutType doctype) { string prop; if (doctype == CompanyLayoutType.Packnote) { dbOrder._PackNotePrinted = BasePage.GetSystemDefaultDate(); prop = "PackNotePrinted"; } else if (doctype == CompanyLayoutType.OrderConfirmation) { dbOrder._ConfirmPrinted = BasePage.GetSystemDefaultDate(); prop = "ConfirmPrinted"; } else if (doctype == CompanyLayoutType.PickingList) { dbOrder._PicklistPrinted = BasePage.GetSystemDefaultDate(); prop = "PicklistPrinted"; } else { return; } dbOrder.NotifyPropertyChanged(prop); //we just update client, since server update was done in posting. }
private void ShowOrderLines(DCOrder order) { var confrimationText = string.Format(" {0}. {1}:{2},{3}:{4}\r\n{5}", Uniconta.ClientTools.Localization.lookup("SalesOrderCreated"), Uniconta.ClientTools.Localization.lookup("OrderNumber"), order._OrderNumber, Uniconta.ClientTools.Localization.lookup("Account"), order._DCAccount, string.Concat(string.Format(Uniconta.ClientTools.Localization.lookup("GoTo"), Uniconta.ClientTools.Localization.lookup("Orderline")), " ?")); var confirmationBox = new CWConfirmationBox(confrimationText, string.Empty, false); confirmationBox.Closing += delegate { if (confirmationBox.DialogResult == null) { return; } switch (confirmationBox.ConfirmationResult) { case CWConfirmationBox.ConfirmationResultEnum.Yes: AddDockItem(order.__DCType() == 1 ? TabControls.DebtorOrderLines : TabControls.DebtorOfferLines, order, string.Format("{0}:{1},{2}", Uniconta.ClientTools.Localization.lookup("OrdersLine"), order._OrderNumber, order._DCAccount)); break; case CWConfirmationBox.ConfirmationResultEnum.No: break; } }; confirmationBox.Show(); }
public ResponseDTO AddDCOrder(CreateDCOrderDTO dCOrderDTO) { ResponseDTO responseDTO = new ResponseDTO(); DistributionCenter distributionCenter = unitOfWork.DistributionCenterRepository.GetById(dCOrderDTO.DCId); if (distributionCenter == null) { throw new PlatformModuleException("DC Details Not Found"); } else if (distributionCenter.DCAddresses != null && distributionCenter.DCAddresses.Count() == 0) { throw new PlatformModuleException("DC Address details Not Found"); } else { DCOrder dcOrder = new DCOrder(); dcOrder.DCOrderId = unitOfWork.DashboardRepository.NextNumberGenerator("DCOrder"); dcOrder.DCOrderNumber = distributionCenter.DCCode + "OD" + dcOrder.DCOrderId.ToString(); dcOrder.DCId = dCOrderDTO.DCId; dcOrder.OrderAddressId = distributionCenter.DCAddresses.FirstOrDefault().DCAddressId; dcOrder.OrderDate = DateTimeHelper.GetISTDateTime(); dcOrder.CreatedDate = DateTimeHelper.GetISTDateTime(); dcOrder.ModifiedDate = DateTimeHelper.GetISTDateTime(); dcOrder.CreatedBy = dcOrder.ModifiedBy = distributionCenter.AgentName; dcOrder.IsDeleted = false; dcOrder.OrderStatusId = (int)OrderStatus.Placed; dcOrder.DeliveryExpectedDate = DateTimeHelper.GetISTDateTime().AddDays(1); dcOrder.OrderComments = dCOrderDTO.OrderComments; if (dCOrderDTO.CreateDCOrderDtlList != null) { foreach (var dcOrderDtlDTO in dCOrderDTO.CreateDCOrderDtlList) { // this.CheckForExistingCollectionDetailByDateShiftProduct(vLCMilkCollection.CollectionDateTime.Value.Date, vLCMilkCollectionDTO.ShiftId, vlcCollectionDtlDTO.ProductId, vLCMilkCollectionDTO.CustomerId); DCOrderDtl dCOrderDtl = new DCOrderDtl(); dCOrderDtl.DCOrderDtlId = unitOfWork.DashboardRepository.NextNumberGenerator("DCOrderDtl"); dCOrderDtl.DCOrderId = dcOrder.DCOrderId; DCOrderConvertor.ConvertToDCOrderDtlEntity(ref dCOrderDtl, dcOrderDtlDTO, false); unitOfWork.DCOrderDtlRepository.Add(dCOrderDtl); } dcOrder.OrderTotalPrice = dCOrderDTO.CreateDCOrderDtlList.Sum(s => s.TotalPrice); dcOrder.TotalOrderQuantity = dCOrderDTO.CreateDCOrderDtlList.Sum(s => s.QuantityOrdered); dcOrder.TotalActualQuantity = dcOrder.TotalOrderQuantity; } else { throw new PlatformModuleException("DC Order Detail Not Found"); } unitOfWork.DCOrderRepository.Add(dcOrder); // UpdateOrderPaymentDetailsForOrder(distributionCenter, dcOrder); unitOfWork.SaveChanges(); responseDTO.Status = true; responseDTO.Message = String.Format("DC Order Placed Successfully "); responseDTO.Data = this.GetOrderDetailsByOrderId(dcOrder.DCOrderId); return(responseDTO); } }
public CWCreateOrderFromQuickInvoice(CrudAPI _api, string account, bool _isOrder, DCOrder _dcOrder) { api = _api; this.Account = account; dcOrder = _dcOrder; isOrder = _isOrder; InitPage(); }
protected override void SyncEntityMasterRowChanged(UnicontaBaseEntity args) { dgDebtorOrderProjectLineGrid.UpdateMaster(args); debtorOrder = dgDebtorOrderProjectLineGrid.masterRecord as Uniconta.DataModel.DCOrder; if (debtorOrder != null) { api.Read((UnicontaBaseEntity)debtorOrder); SetHeader(string.Concat(Uniconta.ClientTools.Localization.lookup("ProjectAdjustments"), ": ", NumberConvert.ToString(debtorOrder._OrderNumber))); } InitQuery(); }
static public void ShowOrderLines(byte thisDCType, DCOrder order, GridBasePage page, CorasauDataGrid grid) { string orderMsg, lineMsg, ctrl; var DCType = order.__DCType(); switch (DCType) { case 2: orderMsg = "PurchaseOrderCreated"; lineMsg = "PurchaseLines"; ctrl = TabControls.CreditorOrderLines; break; case 3: orderMsg = "OfferOrderCreated"; lineMsg = "OfferLine"; ctrl = TabControls.DebtorOfferLines; break; case 4: orderMsg = "ProductionOrderCreated"; lineMsg = "ProductionLines"; ctrl = TabControls.ProductionOrderLines; break; default: orderMsg = "SalesOrderCreated"; lineMsg = "OrdersLine"; ctrl = TabControls.DebtorOrderLines; break; } var confrimationText = string.Format(" {0}. {1}:{2},{3}:{4}\r\n{5}", Uniconta.ClientTools.Localization.lookup(orderMsg), Uniconta.ClientTools.Localization.lookup("OrderNumber"), order._OrderNumber, Uniconta.ClientTools.Localization.lookup("Account"), order._DCAccount, string.Concat(string.Format(Uniconta.ClientTools.Localization.lookup("GoTo"), Uniconta.ClientTools.Localization.lookup(lineMsg)), " ?")); var confirmationBox = new CWConfirmationBox(confrimationText, string.Empty, false); confirmationBox.Closing += delegate { if (DCType == thisDCType) { grid.UpdateItemSource(1, order as UnicontaBaseEntity); } if (confirmationBox.DialogResult == null) { return; } if (confirmationBox.ConfirmationResult == CWConfirmationBox.ConfirmationResultEnum.Yes) { page.AddDockItem(ctrl, order, string.Format("{0}:{1},{2}", Uniconta.ClientTools.Localization.lookup(lineMsg), order._OrderNumber, order._DCAccount)); } }; confirmationBox.Show(); }
public static async void FindItemFromCustomerItem(DCOrderLineClient rec, DCOrder order, QueryAPI api, string CustomerItemNumber) { var ap = new Uniconta.API.Inventory.ReportAPI(api); var variant = await ap.FindItemFromCustomerItem(order, CustomerItemNumber); if (variant != null) { rec.Item = variant._Item; rec.Variant1 = variant._Variant1; rec.Variant2 = variant._Variant2; rec.Variant3 = variant._Variant3; rec.Variant4 = variant._Variant4; rec.Variant5 = variant._Variant5; } }
private void InitPage(UnicontaBaseEntity master) { InitializeComponent(); localMenu.dataGrid = dgDebtorOrderProjectLineGrid; SetRibbonControl(localMenu, dgDebtorOrderProjectLineGrid); dgDebtorOrderProjectLineGrid.api = api; dgDebtorOrderProjectLineGrid.UpdateMaster(master); dgDebtorOrderProjectLineGrid.BusyIndicator = busyIndicator; localMenu.OnItemClicked += localMenu_OnItemClicked; dgDebtorOrderProjectLineGrid.View.DataControl.CurrentItemChanged += DataControl_CurrentItemChanged; dictPriceLookup = new Dictionary <string, Uniconta.API.DebtorCreditor.FindPrices>(); debtorOrder = master as DCOrder; RibbonBase rb = (RibbonBase)localMenu.DataContext; if (rb != null) { UtilDisplay.RemoveMenuCommand(rb, "Adjustment"); } }
void CallJoinTwoOrder(DCOrder fromOrder, DCOrder toOrder) { DeletePostedJournal delDialog = new DeletePostedJournal(true); delDialog.Closed += async delegate { if (delDialog.DialogResult == true) { OrderAPI orderApi = new OrderAPI(api); ErrorCodes res = await orderApi.JoinTwoOrders(fromOrder, toOrder); if (res == ErrorCodes.Succes) { this.DialogResult = true; } UtilDisplay.ShowErrorCode(res); } }; delDialog.Show(); }
public ItemVariantAddPage(DCOrderLineClient line, DCOrder master) : base(null) { DataContext = this; InitializeComponent(); localMenu.dataGrid = dgItemVariant; dgItemVariant.api = api; SetRibbonControl(localMenu, dgItemVariant); dgItemVariant.BusyIndicator = busyIndicator; this.master = master; this.line = line; this.invItem = line.InvItem; var standardVariants = api.GetCache(typeof(Uniconta.DataModel.InvStandardVariant)); stdVariant = (InvStandardVariant)standardVariants?.Get(invItem._StandardVariant); if (stdVariant != null) { VariantSetup(colVariant1, colVariant2, colVariant3, colVariant4, colVariant5, stdVariant); } localMenu.OnItemClicked += localMenu_OnItemClicked; }
public FindPrices(DCOrder order, QueryAPI api) { this.order = order; this.api = api; LoadingTask = LoadBaseData(api); }
public void UpdateOrderPaymentDetailsForOrder(DistributionCenter distributionCenter, DCOrder dCOrder) { DCPaymentDetail dCPaymentDetail = new DCPaymentDetail(); dCPaymentDetail.DCPaymentId = unitOfWork.DashboardRepository.NextNumberGenerator("DCPaymentDetail"); dCPaymentDetail.CreatedDate = dCPaymentDetail.ModifiedDate = DateTimeHelper.GetISTDateTime(); dCPaymentDetail.CreatedBy = dCPaymentDetail.ModifiedBy = distributionCenter.AgentName; dCPaymentDetail.DCId = distributionCenter.DCId; dCPaymentDetail.DCOrderId = dCOrder.DCOrderId; dCPaymentDetail.IsDeleted = false; dCPaymentDetail.PaymentComments = "Initial Order Amount"; dCPaymentDetail.PaymentDate = DateTimeHelper.GetISTDateTime(); dCPaymentDetail.PaymentDrAmount = dCOrder.OrderTotalPrice; unitOfWork.DCPaymentDetailRepository.Add(dCPaymentDetail); UpdateDCWalletForOrder(distributionCenter.DCId, dCOrder.OrderTotalPrice, false); }
private void GenerateInvoice(DCOrder dbOrder) { InvoiceAPI Invapi = new InvoiceAPI(api); bool showSendByMail = false; var debtor = ClientHelper.GetRef(dbOrder.CompanyId, typeof(Debtor), dbOrder._DCAccount) as Debtor; if (debtor != null) { var InvoiceAccount = dbOrder._InvoiceAccount ?? debtor._InvoiceAccount; if (InvoiceAccount != null) { debtor = ClientHelper.GetRef(dbOrder.CompanyId, typeof(Debtor), InvoiceAccount) as Debtor; } if (debtor != null) { if (debtor._PricesInclVat != dbOrder._PricesInclVat) { var confirmationMsgBox = UnicontaMessageBox.Show(string.Format("{0}.\n{1}", string.Format(Uniconta.ClientTools.Localization.lookup("DebtorAndOrderMix"), Uniconta.ClientTools.Localization.lookup("InclVat")), Uniconta.ClientTools.Localization.lookup("ProceedConfirmation")), Uniconta.ClientTools.Localization.lookup("Confirmation"), MessageBoxButton.OKCancel); if (confirmationMsgBox != MessageBoxResult.OK) { return; } } if (!api.CompanyEntity.SameCurrency(dbOrder._Currency, debtor._Currency)) { var confirmationMsgBox = UnicontaMessageBox.Show(string.Format("{0}.\n{1}", string.Format(Uniconta.ClientTools.Localization.lookup("CurrencyMismatch"), AppEnums.Currencies.ToString((int)debtor._Currency), dbOrder.Currency), Uniconta.ClientTools.Localization.lookup("ProceedConfirmation")), Uniconta.ClientTools.Localization.lookup("Confirmation"), MessageBoxButton.OKCancel); if (confirmationMsgBox != MessageBoxResult.OK) { return; } } showSendByMail = !string.IsNullOrEmpty(debtor._InvoiceEmail); } } else { api.CompanyEntity.LoadCache(typeof(Debtor), api, true); } string debtorName = debtor?._Name ?? dbOrder._DCAccount; bool invoiceInXML = debtor?._InvoiceInXML ?? false; CWGenerateInvoice GenrateInvoiceDialog = new CWGenerateInvoice(true, string.Empty, false, true, true, showNoEmailMsg: !showSendByMail, debtorName: debtorName, isOrderOrQuickInv: true, isDebtorOrder: true, InvoiceInXML: invoiceInXML); #if !SILVERLIGHT GenrateInvoiceDialog.DialogTableId = 2000000010; #endif GenrateInvoiceDialog.Closed += async delegate { if (GenrateInvoiceDialog.DialogResult == true) { busyIndicator.BusyContent = Uniconta.ClientTools.Localization.lookup("SendingWait"); busyIndicator.IsBusy = true; var showOrPrint = GenrateInvoiceDialog.ShowInvoice || GenrateInvoiceDialog.InvoiceQuickPrint; var invoicePostingResult = new InvoicePostingPrintGenerator(api, this, dbOrder, null, GenrateInvoiceDialog.GenrateDate, 0, GenrateInvoiceDialog.IsSimulation, CompanyLayoutType.Invoice, showOrPrint, GenrateInvoiceDialog.InvoiceQuickPrint, GenrateInvoiceDialog.NumberOfPages, GenrateInvoiceDialog.SendByEmail, GenrateInvoiceDialog.Emails, GenrateInvoiceDialog.sendOnlyToThisEmail, GenrateInvoiceDialog.GenerateOIOUBLClicked, GenrateInvoiceDialog.PostOnlyDelivered, null); busyIndicator.BusyContent = Uniconta.ClientTools.Localization.lookup("GeneratingPage"); busyIndicator.IsBusy = true; var result = await invoicePostingResult.Execute(); busyIndicator.IsBusy = false; if (result) { Task reloadTask = null; if (!GenrateInvoiceDialog.IsSimulation && dbOrder._DeleteLines) { reloadTask = BindGrid(); } if (invoicePostingResult.PostingResult.Header._InvoiceNumber != 0) { var msg = string.Format(Uniconta.ClientTools.Localization.lookup("InvoiceHasBeenGenerated"), invoicePostingResult.PostingResult.Header._InvoiceNumber); msg = string.Format("{0}{1}{2} {3}", msg, Environment.NewLine, Uniconta.ClientTools.Localization.lookup("LedgerVoucher"), invoicePostingResult.PostingResult.Header._Voucher); UnicontaMessageBox.Show(msg, Uniconta.ClientTools.Localization.lookup("Message"), MessageBoxButton.OK); #if !SILVERLIGHT if (GenrateInvoiceDialog.GenerateOIOUBLClicked && !GenrateInvoiceDialog.IsSimulation) { GenerateOIOXml(this.api, invoicePostingResult.PostingResult); } #endif } } else { Utility.ShowJournalError(invoicePostingResult.PostingResult.ledgerRes, dgDebtorOrdersGrid); } } }; GenrateInvoiceDialog.Show(); }
/// <summary> /// Initialization for Post Invoice and DebtorOrder Client /// </summary> /// <param name="postingResult">PostInvoice result</param> /// <param name="api">Current api instance</param> /// <param name="companyLayoutType">Layout type</param> /// <param name="orderClient">DebtorOrder/DebtorOffer client</param> public DebtorInvoicePrintReport(InvoicePostingResult postingResult, CrudAPI api, CompanyLayoutType companyLayoutType, DCOrder orderClient) : this(postingResult, api, companyLayoutType) { DebtorOrder = orderClient; }
async private Task <IEnumerable <DCOrderLineClient> > CreateDCOrderLinesFromInvoice(DCOrder dcOrder, DCInvoiceClient dcInvoiceClient, bool checkIfCreditNote) { var lstOrderlines = new List <DCOrderLineClient>(); var invoiceLines = await api.Query <DebtorInvoiceLines>(dcInvoiceClient); if (invoiceLines == null || invoiceLines.Length == 0) { return(null); } Array.Sort(invoiceLines, new InvLineSort()); lstOrderlines.Capacity = invoiceLines.Length; int lineNo = 0; double sign = checkIfCreditNote ? -1d : 1d; foreach (var invoiceline in invoiceLines) { DCOrderLineClient line; switch (dcOrder.__DCType()) { case 1: line = api.CompanyEntity.CreateUserType <DebtorOrderLineClient>(); break; case 3: line = api.CompanyEntity.CreateUserType <DebtorOfferLineClient>(); break; case 6: line = api.CompanyEntity.CreateUserType <ProjectInvoiceProposalLineClient>(); break; default: line = api.CompanyEntity.CreateUserType <DebtorOrderLineClient>(); break; } line.SetMaster((UnicontaBaseEntity)dcOrder); line._LineNumber = ++lineNo; line._Item = invoiceline._Item; line._DiscountPct = invoiceline._DiscountPct; line._Discount = invoiceline._Discount; line._Qty = invoiceline.InvoiceQty * sign; line._Price = invoiceline.CurrencyEnum != null ? invoiceline._PriceCur : invoiceline._Price; if (line._Price != 0) { line._Price += invoiceline._PriceVatPart; } if (line._Qty * line._Price == 0) { line._AmountEntered = ((invoiceline.CurrencyEnum != null ? invoiceline._AmountCur : invoiceline._Amount) + invoiceline._PriceVatPart) * sign; } line._Dim1 = invoiceline._Dim1; line._Dim2 = invoiceline._Dim2; line._Dim3 = invoiceline._Dim3; line._Dim4 = invoiceline._Dim4; line._Dim5 = invoiceline._Dim5; line._Employee = invoiceline._Employee; line._Note = invoiceline._Note; line._Text = invoiceline._Text; line._Unit = invoiceline._Unit; line._Variant1 = invoiceline._Variant1; line._Variant2 = invoiceline._Variant2; line._Variant3 = invoiceline._Variant3; line._Variant4 = invoiceline._Variant4; line._Variant5 = invoiceline._Variant5; line._Warehouse = invoiceline._Warehouse; line._Location = invoiceline._Location; var selectedItem = (InvItem)items?.Get(invoiceline._Item); if (selectedItem != null) { line._Item = selectedItem._Item; line._CostPriceLine = selectedItem._CostPrice; if (selectedItem._Unit != 0) { line._Unit = selectedItem._Unit; } } lstOrderlines.Add(line); } return(lstOrderlines); }
public Task OrderChanged(DCOrder order) { this.order = order; return(LoadingTask = LoadBaseData(api)); }
static public Tuple <double, double, double> RecalculateLineSum(DCOrder order, IEnumerable <DCOrderLineClient> source, double exRate) { double lastTotal = 0d, lastCost = 0d; double Amountsum = 0d; double Costsum = 0d; double vat = 0d; string VatCode = null; var inclVat = (order != null) ? order._PricesInclVat : false; if (source != null) { if (inclVat) { var dct = order.__DCType(); if (dct == 1 || dct == 3) { VatCode = ((Debtor)ClientHelper.GetRef(order.CompanyId, typeof(Debtor), order._DCAccount))?._Vat; } else { inclVat = false; } } foreach (var lin in source) { var orderLine = (DCOrderLineClient)lin; if (!orderLine._Subtotal) { var cost = orderLine.costvalue(); Costsum += cost; var sales = orderLine._Amount; Amountsum += sales; if (exRate != 0) { orderLine._ExchangeRate = exRate; } else { exRate = orderLine._ExchangeRate; } if (inclVat && VatCode == null) { VatCode = orderLine._Vat; if (VatCode == null && orderLine._Item != null) { VatCode = orderLine.InvItem?.InventoryGroup?.SalesVat; } } } else { var subtotal = Amountsum - lastTotal; if (subtotal != orderLine._AmountEntered) { orderLine._AmountEntered = subtotal; orderLine._CostPrice = Costsum - lastCost; if (orderLine._Price != 0d) { orderLine.Price = 0d; // this will redraw screen } else { orderLine.NotifyPropertyChanged(nameof(orderLine.Total)); } } lastTotal = Amountsum; lastCost = Costsum; } } } double AmountsumCur = exRate == 0d ? Amountsum : Math.Round(Amountsum / exRate, 2); if (inclVat && VatCode != null) { var vatRef = (GLVat)ClientHelper.GetRef(order.CompanyId, typeof(GLVat), VatCode); if (vatRef != null && vatRef._Rate != 0d) { AmountsumCur = Math.Round(AmountsumCur * 100 / (100 + vatRef._Rate), 2); } } Costsum = Math.Round(Costsum, 2); return(Tuple.Create(Amountsum, Costsum, AmountsumCur)); }