Example #1
0
        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);
        }
Example #2
0
 /// <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;
 }
Example #3
0
        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);
        }
Example #5
0
        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;
        }
Example #8
0
        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;
        }