private void Init() { Filter = new InvoicesFilterModel(); QtyList = new ObservableCollection <int> { 50, 100, 150, 200 }; InvoiceStatusList = new ObservableCollection <KeyValuePair <InvoicesQueryContextStatus, string> > { new KeyValuePair <InvoicesQueryContextStatus, string>(InvoicesQueryContextStatus.None, nameof(AppResources.All).Translate()), new KeyValuePair <InvoicesQueryContextStatus, string>(InvoicesQueryContextStatus.NotPaid, nameof(AppResources.NotPaid).Translate()), new KeyValuePair <InvoicesQueryContextStatus, string>(InvoicesQueryContextStatus.Paid, nameof(AppResources.Paid).Translate()), }; Filter.SelectedQty = _qtyList.First(); Filter.StartDate = (Mode == InvoicePageDefaultMode.All) ? DateTime.Today.AddDays(-365) : default(DateTime?); Filter.EndDate = (Mode == InvoicePageDefaultMode.All) ? DateTime.Today : default(DateTime?); Children[0].BindingContext = this; SortColumns = new ObservableCollection <SortColumnItem> { new SortColumnItem(InvoiceSortableColumns.AccountNumber, nameof(AppResources.AccountNumber).Translate()), new SortColumnItem(InvoiceSortableColumns.Account, nameof(AppResources.Account).Translate()), new SortColumnItem(InvoiceSortableColumns.PurchaseOrder, nameof(AppResources.PurchaseOrder).Translate()), new SortColumnItem(InvoiceSortableColumns.JobName, nameof(AppResources.JobName).Translate()), new SortColumnItem(InvoiceSortableColumns.OrderNumber, nameof(AppResources.OrderNumber).Translate()), new SortColumnItem(InvoiceSortableColumns.Plant, nameof(AppResources.TrulitePlant).Translate()), new SortColumnItem(InvoiceSortableColumns.Invoice, nameof(AppResources.Invoice).Translate()), new SortColumnItem(InvoiceSortableColumns.InvoiceDate, nameof(AppResources.InvoiceDate).Translate()), new SortColumnItem(InvoiceSortableColumns.DueDate, nameof(AppResources.DueDate).Translate()), new SortColumnItem(InvoiceSortableColumns.Amount, nameof(AppResources.OpenAmount).Translate()), new SortColumnItem(InvoiceSortableColumns.TotalInvoiceAmount, nameof(AppResources.TotalInvoiceAmount).Translate()), new SortColumnItem(InvoiceSortableColumns.Status, nameof(AppResources.Status).Translate()), new SortColumnItem(InvoiceSortableColumns.SalesPerson, nameof(AppResources.SalesPerson).Translate()), new SortColumnItem(InvoiceSortableColumns.Terms, nameof(AppResources.Terms).Translate()), new SortColumnItem(InvoiceSortableColumns.Weight, nameof(AppResources.Weight).Translate()), new SortColumnItem(InvoiceSortableColumns.Sqft, nameof(AppResources.SquareFoot).Translate()), }; SelectedSortColumn = _sortColumns[7]; Ascending = true; switch (Mode) { case InvoicePageDefaultMode.All: Filter.Status = _invoiceStatusList[0]; break; case InvoicePageDefaultMode.Open: Filter.Status = _invoiceStatusList[1]; break; default: throw new ArgumentOutOfRangeException(); } }
private bool IsFilterDifferentFromLast(InvoicesFilterModel currentFilter) { if (_previousFilter == null) { return(true); } if (_previousFilter.Number != currentFilter.Number) { return(true); } if (_previousFilter.SalesOrderNumber != currentFilter.SalesOrderNumber) { return(true); } if (_previousFilter.EndDueDate != currentFilter.EndDueDate) { return(true); } if (_previousFilter.StartDueDate != currentFilter.StartDueDate) { return(true); } if (_previousFilter.EndDate != currentFilter.EndDate) { return(true); } if (_previousFilter.StartDate != currentFilter.StartDate) { return(true); } if (_previousFilter.PONumber != currentFilter.PONumber) { return(true); } if (_previousFilter.SelectedQty != currentFilter.SelectedQty) { return(true); } return(false); }
public async Task Load() { try { IsBusy = true; if (_loadFromServer) { InvoicesFilterModel filter = new InvoicesFilterModel { Number = _invoice.Key, Status = new KeyValuePair <InvoicesQueryContextStatus, string>(InvoicesQueryContextStatus.None, null) }; var result = await Api.GetInvoiceList(filter); if (!result.Successful.GetValueOrDefault()) { await Alert.DisplayApiCallError(result.ExceptionMessage, result.ValidationErrors); return; } if ((!result.Data?.Any()) ?? true) { await Alert.ShowMessage("Server did not return an invoice"); return; } var invoice = result.Data.First().CloneToType <InvoiceModel, Invoice>(); Invoice = invoice; } var listResponse = await Api.GetInvoiceLines(_invoice); Invoice.Lines = listResponse.Data; long.TryParse(_invoice.RecId, out var invoiceLongId); InvoiceSettlementsQueryContext settlementContext = new InvoiceSettlementsQueryContext { CustomerInfo = Api.GetCustomerContext(), InvoiceRecId = invoiceLongId }; var settlementResult = await Api.GetInvoiceSettlements(settlementContext); if (!settlementResult.Successful.GetValueOrDefault()) { await Alert.DisplayApiCallError(settlementResult.ExceptionMessage, settlementResult.ValidationErrors); return; } Settlements = new ObservableCollection <InvoiceSettlement>(settlementResult.Data); NoResults = !_settlements.Any(); } catch (Exception e) { await Alert.DisplayError(e); } finally { IsBusy = false; } }
private async Task OnSearch(InvoicesFilterModel arg) { ShowFilter = false; await Load(arg); }
public async Task Load(InvoicesFilterModel filter = null, SortColumnItem sortColumnItem = null) { try { IsBusy = true; filter = filter ?? GetDefaultFilter(); if (sortColumnItem == null) { sortColumnItem = new SortColumnItem(InvoiceSortableColumns.InvoiceDate, null) { Ascending = true }; } IEnumerable <InvoiceModel> lines; if (IsFilterDifferentFromLast(filter)) { var result = await Api.GetInvoiceList(filter); if (!result.Successful.GetValueOrDefault()) { await Alert.ShowMessage(result.ExceptionMessage); return; } lines = new List <InvoiceModel>(result.Data.Select(p => p.CloneToType <InvoiceModel, Invoice>())); } else { lines = _list; } var sortedLines = SortList(sortColumnItem, lines.ToList()) .Take(filter.SelectedQty); _previousFilter = filter; if (_list != null) { foreach (var invoiceModel in _list) { invoiceModel.PropertyChanged -= InvoiceModel_PropertyChanged; } } List = new ObservableCollection <InvoiceModel>(sortedLines); if (_list != null) { foreach (var invoiceModel in _list) { invoiceModel.PropertyChanged += InvoiceModel_PropertyChanged; } } NoResults = !(_list?.Any() ?? false); //TotalAmount = (decimal)sortedLines.Sum(p => p.Amount.GetValueOrDefault()); } catch (Exception e) { await Alert.DisplayError(e); } finally { IsBusy = false; } }
public async Task <ApiResponseOfListOfInvoice> GetInvoiceList(InvoicesFilterModel filter) { var result = await AXClient.Instance.GetInvoicesAsync(filter.ToInvoicesQueryContext()); return(result); }