private CalCommissionClient CalculateCommissionDebInvoice(DebtorInvoiceClient dic, EmployeeCommission commission) { double amount; if (commission._FixedPrice != 0) { amount = commission._FixedPrice; } else if (commission._IsRevenue) { amount = dic._NetAmountCur * commission._Rate / 100d; } else { amount = dic._Margin * commission._Rate / 100d; } if (amount == 0) { return(null); } var calCom = new CalCommissionClient(); calCom._CompanyId = dic.CompanyId; calCom._Employee = dic._Employee; calCom._Account = dic._DCAccount; calCom._InvoiceNumber = (int)dic._InvoiceNumber; calCom._Commission = Math.Round(amount, 2); return(calCom); }
/// <summary> /// Initialization for Debtor Invoice Client /// </summary> /// <param name="debtorInvoiceClient">Invoice Client</param> /// <param name="api">Current api instance</param> /// <param name="companyLayoutType">Layout type</param> public DebtorInvoicePrintReport(DebtorInvoiceClient debtorInvoiceClient, CrudAPI api, CompanyLayoutType companyLayoutType = CompanyLayoutType.Invoice) { debtorInvoice = debtorInvoiceClient; crudApi = api; isRePrint = false; layoutType = companyLayoutType; }
public static async Task <IPrintReport> StandardPrint(DebtorInvoiceClient debtorInvoice, CrudAPI crudapi) { var debtorInvoicePrint = new UnicontaClient.Pages.DebtorInvoicePrintReport(debtorInvoice, crudapi); var isInitializedSuccess = await debtorInvoicePrint.InstantiateFields(); if (isInitializedSuccess) { var standardDebtorInvoice = new DebtorInvoiceReportClient(debtorInvoicePrint.Company, debtorInvoicePrint.Debtor, debtorInvoicePrint.DebtorInvoice, debtorInvoicePrint.InvTransInvoiceLines, debtorInvoicePrint.DebtorOrder, debtorInvoicePrint.CompanyLogo, debtorInvoicePrint.ReportName, isCreditNote: debtorInvoicePrint.IsCreditNote, messageClient: debtorInvoicePrint.MessageClient); var iprintReport = new StandardPrintReport(crudapi, new[] { standardDebtorInvoice }, (byte)Uniconta.ClientTools.Controls.Reporting.StandardReports.Invoice) { UseReportCache = true }; await iprintReport.InitializePrint(); if (iprintReport.Report != null) { return(iprintReport); } //Call LayoutInvoice var layoutReport = new LayoutPrintReport(crudapi, debtorInvoice); layoutReport.SetupLayoutPrintFields(debtorInvoicePrint); await layoutReport.InitializePrint(); return(layoutReport); } return(null); }
public static async Task <IPrintReport> StandardPrint(DebtorInvoiceClient debtorInvoice, CrudAPI crudapi) { IPrintReport iprintReport = null; var debtorInvoicePrint = new UnicontaClient.Pages.DebtorInvoicePrintReport(debtorInvoice, crudapi); var isInitializedSuccess = await debtorInvoicePrint.InstantiateFields(); if (isInitializedSuccess) { var standardDebtorInvoice = new DebtorInvoiceReportClient(debtorInvoicePrint.Company, debtorInvoicePrint.Debtor, debtorInvoicePrint.DebtorInvoice, debtorInvoicePrint.InvTransInvoiceLines, null, debtorInvoicePrint.CompanyLogo, debtorInvoicePrint.ReportName, isCreditNote: debtorInvoicePrint.IsCreditNote, messageClient: debtorInvoicePrint.MessageClient); var standardReports = new IDebtorStandardReport[1] { standardDebtorInvoice }; iprintReport = new StandardPrintReport(crudapi, standardReports, (byte)Uniconta.ClientTools.Controls.Reporting.StandardReports.Invoice); await iprintReport.InitializePrint(); if (iprintReport?.Report == null) { iprintReport = new LayoutPrintReport(crudapi, debtorInvoice); await iprintReport.InitializePrint(); } } return(iprintReport); }
async private void JournalPosted(DebtorInvoiceClient selectedItem) { var result = await api.Query(new GLDailyJournalPostedClient(), new UnicontaBaseEntity[] { selectedItem }, null); if (result != null && result.Length == 1) { CWGLPostedClientFormView cwPostedClient = new CWGLPostedClientFormView(result[0]); cwPostedClient.Show(); } }
async void LoadOrderlines(DebtorInvoiceClient selectedItem) { busyIndicator.IsBusy = true; if (isOrder) { await CreateOrderLinesFromInvoice(dcOrder as DebtorOrderClient, selectedItem, (bool)chkIfCreditNote.IsChecked); } else { await CreateOfferLinesFromInvoice(dcOrder as DebtorOfferClient, selectedItem, (bool)chkIfCreditNote.IsChecked); } busyIndicator.IsBusy = false; }
async void LoadOrderlines(DebtorInvoiceClient selectedItem) { dcOrderlineGrid.ItemsSource = null; busyIndicator.IsBusy = true; var lines = await CreateDCOrderLinesFromInvoice(dcOrder, selectedItem, (bool)chkIfCreditNote.IsChecked); if (lines != null) { DCOrderLines = lines.Cast <UnicontaBaseEntity>(); } busyIndicator.IsBusy = false; dcOrderlineGrid.ItemsSource = lines; dcOrderlineGrid.Visibility = Visibility.Visible; }
async void calc(DateTime fromDate, DateTime toDate) { SetBusy(); var employee = (master as Uniconta.DataModel.Employee)?._Number; var propValuePairList = new List <PropValuePair>() { PropValuePair.GenereteWhereElements("Date", typeof(DateTime), string.Concat(fromDate.ToShortDateString(), "..", toDate.ToShortDateString())), PropValuePair.GenereteWhereElements("Deleted", typeof(int), "0") }; var invoiceHeaders = await api.Query <DebtorInvoiceClient>(dgEmployeeCommissionGrid.masterRecords, propValuePairList); var commlstLine = new List <EmployeeCommissionClient>(1000); var commlstHead = new List <EmployeeCommissionClient>(1000); var commAll = (IEnumerable <EmployeeCommissionClient>)dgEmployeeCommissionGrid.ItemsSource; foreach (var rec in commAll) { if (rec._Disabled) { continue; } if (rec._FromDate != DateTime.MinValue && rec._FromDate > toDate) { continue; } if (rec._ToDate != DateTime.MinValue && rec._ToDate < fromDate) { continue; } if (employee != null && employee != rec._Employee) { continue; } if (rec._PerLine) { commlstLine.Add(rec); } else { commlstHead.Add(rec); } } var sort = new EmployeeCommissionClientSort(); commlstLine.Sort(sort); commlstHead.Sort(sort); var debtors = api.GetCache(typeof(Uniconta.DataModel.Debtor)); var calComs = new List <CalCommissionClient>(); if (commlstLine.Count > 0) { propValuePairList.RemoveAt(1); // remove Deleted propValuePairList.Add(PropValuePair.GenereteWhereElements("MovementType", typeof(int), "1")); var trans = await api.Query <InvTransClient>(dgEmployeeCommissionGrid.masterRecords, propValuePairList); //sandt if (trans != null) { var invItems = api.GetCache(typeof(Uniconta.DataModel.InvItem)); // lets sort invoices so we can find employee on invoice header var invSort = new InvoiceSort(); DebtorInvoiceClient invKey = null; if (invoiceHeaders != null && invoiceHeaders.Length > 0) { Array.Sort(invoiceHeaders, invSort); invKey = new DebtorInvoiceClient(); } foreach (var tran in trans) { var item = tran._Item; var acc = tran._DCAccount; var emp = tran._Employee; string debGroup = null; string itemGroup = null; if (item != null) { var inv = (InvItem)invItems.Get(item); itemGroup = inv?._Group; } if (acc != null) { var deb = (Debtor)debtors.Get(acc); debGroup = deb?._Group; } if (emp == null && invKey != null) { invKey._InvoiceNumber = tran._InvoiceNumber; invKey._DCAccount = tran._DCAccount; invKey._Date = tran._Date; var pos = Array.BinarySearch(invoiceHeaders, invKey, invSort); if (pos >= 0 && pos < invoiceHeaders.Length) { var rec = invoiceHeaders[pos]; emp = tran._Employee = rec._Employee; } } foreach (var c in commlstLine) { var cmp = string.Compare(c._Employee, emp); if (cmp > 0) { break; } if (cmp == 0 && CompareKey(c._Item, item) && CompareKey(c._Account, acc) && CompareKey(c._ItemGroup, itemGroup) && CompareKey(c._DebGroup, debGroup)) { var calculatedCommission = CalculateCommissionInvTran(tran, c); if (calculatedCommission == null || calculatedCommission._Commission == 0) { continue; } calComs.Add(calculatedCommission); if (!c._KeepLooking) { break; } } } } } } if (commlstHead.Count > 0 && invoiceHeaders != null) { foreach (var it in invoiceHeaders) { string debGroup = null; var emp = it._Employee; var acc = it._DCAccount; if (acc != null) { var deb = (Debtor)debtors.Get(acc); debGroup = deb?._Group; } foreach (var c in commlstHead) { var cmp = string.Compare(c._Employee, emp); if (cmp > 0) { break; } if (cmp == 0 && CompareKey(c._Account, acc) && CompareKey(c._DebGroup, debGroup)) { var calculatedCommission = CalculateCommissionDebInvoice(it, c); if (calculatedCommission == null || calculatedCommission._Commission == 0) { continue; } calComs.Add(calculatedCommission); if (!c._KeepLooking) { break; } } } } } ClearBusy(); if (calComs.Count == 0) { UnicontaMessageBox.Show(Localization.lookup("NoRecordExport"), Uniconta.ClientTools.Localization.lookup("Message")); return; } var arr = calComs.ToArray(); Array.Sort(arr, new CalCommissionClientSort()); AddDockItem(TabControls.CalculatedCommissionPage, new object[] { arr }, Uniconta.ClientTools.Localization.lookup("CalculateCommission"), null, true); }
async Task CreateOrderLinesFromInvoice(DebtorOrderClient order, DebtorInvoiceClient invoice, bool checkIfCreditNote) { var orderlines = new List <DebtorOrderLineClient>(); order.Lines = orderlines; var invoiceLines = await api.Query <DebtorInvoiceLines>(invoice); if (invoiceLines == null || invoiceLines.Length == 0) { return; } Array.Sort(invoiceLines, new InvLineSort()); orderlines.Capacity = invoiceLines.Length; int lineNo = 0; double sign = checkIfCreditNote ? -1d : 1d; foreach (var invoiceline in invoiceLines) { var line = new DebtorOrderLineClient(); line.SetMaster(order); 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; } } orderlines.Add(line); } dcOrderlineGrid.ItemsSource = debtorOrderLines = null; dcOrderlineGrid.ItemsSource = debtorOrderLines = orderlines; dcOrderlineGrid.Visibility = Visibility.Visible; }