void UpdatePrice(DebtorOrderLineClient rec)
        {
            var priceLookup = SetPriceLookup(rec);

            if (priceLookup != null && priceLookup.UseCustomerPrices)
            {
                priceLookup.GetCustomerPrice(rec, false);
            }
        }
 public CreditorOrderLineMarkedPage(UnicontaBaseEntity orderLine) : base(null)
 {
     InitializeComponent();
     ((TableView)dgCreditorOrderLineGrid.View).RowStyle = Application.Current.Resources["StyleRow"] as Style;
     debtorOrderLine = orderLine as DebtorOrderLineClient;
     orderRefLine    = debtorOrderLine.OrderRefLine;
     SetHeader();
     dgCreditorOrderLineGrid.api = api;
     localMenu.dataGrid          = dgCreditorOrderLineGrid;
     SetRibbonControl(localMenu, dgCreditorOrderLineGrid);
     dgCreditorOrderLineGrid.BusyIndicator = busyIndicator;
     dgCreditorOrderLineGrid.Readonly      = true;
     localMenu.OnItemClicked += LocalMenu_OnItemClicked;
 }
 async void setLocation(InvWarehouse master, DebtorOrderLineClient rec)
 {
     if (api.CompanyEntity.Location)
     {
         if (master != null)
         {
             rec.locationSource = master.Locations ?? await master.LoadLocations(api);
         }
         else
         {
             rec.locationSource = null;
             rec.Location       = null;
         }
         rec.NotifyPropertyChanged("LocationSource");
     }
 }
        private void DataControl_CurrentItemChanged(object sender, DevExpress.Xpf.Grid.CurrentItemChangedEventArgs e)
        {
            DebtorOrderLineClient oldselectedItem = e.OldItem as DebtorOrderLineClient;

            if (oldselectedItem != null)
            {
                oldselectedItem.PropertyChanged -= CreditorOrderLineGrid_PropertyChanged;
            }

            DebtorOrderLineClient selectedItem = e.NewItem as DebtorOrderLineClient;

            if (selectedItem != null)
            {
                selectedItem.PropertyChanged += CreditorOrderLineGrid_PropertyChanged;
            }
        }
        private void Location_GotFocus(object sender, RoutedEventArgs e)
        {
            DebtorOrderLineClient selectedItem = dgDebtorOrderlineGrid.SelectedItem as DebtorOrderLineClient;

            if (selectedItem != null && selectedItem._Warehouse != null && warehouse != null)
            {
                var selected = (InvWarehouse)warehouse.Get(selectedItem._Warehouse);
                setLocation(selected, selectedItem);
                if (prevLocation != null)
                {
                    prevLocation.isValidate = false;
                }
                var editor = (CorasauGridLookupEditorClient)sender;
                prevLocation      = editor;
                editor.isValidate = true;
            }
        }
Beispiel #6
0
        async void MarkedOrderLine(ProductionOrderClient selectedItem)
        {
            busyIndicator.IsBusy = true;
            var      orderLineMarked = new DebtorOrderLineClient();
            OrderAPI orderApi        = new OrderAPI(api);
            var      res             = await orderApi.GetMarkedOrderLine(selectedItem, orderLineMarked);

            busyIndicator.IsBusy = false;
            if (res == ErrorCodes.Succes)
            {
                object[] paramArr = new object[] { api, orderLineMarked };
                AddDockItem(TabControls.OrderLineMarkedPage, paramArr, string.Format("{0}: {1}", Uniconta.ClientTools.Localization.lookup("OrderLine"), orderLineMarked._OrderNumber));
            }
            else
            {
                UtilDisplay.ShowErrorCode(res);
            }
        }
        void InitPage(UnicontaBaseEntity line)
        {
            InitializeComponent();
            UnicontaBaseEntity[] lines;
            if (line is DebtorOrderLineClient)
            {
                lines = new DebtorOrderLineClient[] { (DebtorOrderLineClient)line }
            }
            ;
            else
            {
                lines = new CreditorOrderLineClient[] { (CreditorOrderLineClient)line }
            };

            dgCreditorOrderLineGrid.SetSource(lines);
            dgCreditorOrderLineGrid.api = this.api;
            SetRibbonControl(localMenu, dgCreditorOrderLineGrid);
            dgCreditorOrderLineGrid.BusyIndicator = busyIndicator;
            dgCreditorOrderLineGrid.Readonly      = true;
        }
Beispiel #8
0
        private ErrorCodes CreateLines(List <string[]> lines, DebtorClient debtorClient)
        {
            var ols   = new List <DebtorOrderLineClient>();
            var items = _crudAPI.Query <InvItemClient>().Result;

            var order = new DebtorOrderClient();

            order.SetMaster(debtorClient);
            var orderres = _crudAPI.Insert(order).Result;

            foreach (string[] s in lines)
            {
                var item = items.First(i => i.Item == s[1]);

                var fp = new FindPrices(order, _crudAPI);
                fp.UseCustomerPrices = true;
                fp.loadPriceList();

                var ol = new DebtorOrderLineClient
                {
                    Qty  = double.Parse(s[2]),
                    Item = item.Item,
                    //Date = DateTime.Parse(s[3]),
                };
                ol.SetMaster(order);

                fp.SetPriceFromItem(ol, item);

                ols.Add(ol);
            }

            var result = _crudAPI.Insert(ols).Result;

            if (result == ErrorCodes.Succes)
            {
                openOrderLines(order);
            }

            return(result);
        }
        async void setSerieBatchSource(DebtorOrderLineClient row)
        {
            var cache         = api.CompanyEntity.GetCache(typeof(InvItem));
            var invItemMaster = cache.Get(row._Item) as InvItem;

            if (invItemMaster == null)
            {
                return;
            }
            if (row.SerieBatches != null && row.SerieBatches.First()._Item == row._Item)/*Bind if Item changed*/
            {
                return;
            }
            List <UnicontaBaseEntity> masters = null;

            if (row._Qty < 0)
            {
                masters = new List <UnicontaBaseEntity>()
                {
                    invItemMaster
                };
            }
            else
            {
                // We only select opens
                var mast = new InvSerieBatchOpen();
                mast.SetMaster(invItemMaster);
                masters = new List <UnicontaBaseEntity>()
                {
                    mast
                };
            }
            var res = await api.Query <SerialToOrderLineClient>(masters, null);

            if (res != null && res.Length > 0)
            {
                row.SerieBatches = res;
                row.NotifyPropertyChanged("SerieBatches");
            }
        }
Beispiel #10
0
        private async void createLines(List <string[]> lines)
        {
            var orders = new List <DebtorOrderClient>();
            var ols    = new List <DebtorOrderLineClient>();
            var items  = await crudAPI.Query <InvItemClient>();

            var debtors = await crudAPI.Query <DebtorClient>();

            foreach (string[] s in lines)
            {
                DebtorOrderClient order;
                order = orders.Where(o => o.Account == s[0]).FirstOrDefault();
                if (order == null)
                {
                    order = new DebtorOrderClient();
                    order.SetMaster(debtors.Where(d => d.Account == s[0]).First());
                    orders.Add(order);
                    var orderres = await crudAPI.Insert(order);
                }

                var item = items.Where(i => i.Item == s[1]).First();

                var fp = new FindPrices(order, crudAPI);
                fp.UseCustomerPrices = true;
                fp.loadPriceList();

                var ol = new DebtorOrderLineClient
                {
                    Qty  = double.Parse(s[2]),
                    Item = item.Item,
                    Date = DateTime.Parse(s[3]),
                };
                ol.SetMaster(order);

                fp.SetPriceFromItem(ol, item);

                await crudAPI.Insert(ol);
            }
        }
        Uniconta.API.DebtorCreditor.FindPrices SetPriceLookup(DebtorOrderLineClient rec)
        {
            var OrderNumber = rec.OrderRowId;

            if (OrderNumber != 0)
            {
                if (dictPriceLookup.ContainsKey(OrderNumber))
                {
                    return(dictPriceLookup[OrderNumber]);
                }

                var order = (DebtorOrder)debtorOrders.Get(OrderNumber);
                if (order != null)
                {
                    var priceLookup = new Uniconta.API.DebtorCreditor.FindPrices(order, api);
                    dictPriceLookup.Add(OrderNumber, priceLookup);
                    return(priceLookup);
                }
                return(dictPriceLookup[OrderNumber]);
            }
            return(null);
        }
Beispiel #12
0
        private async void AddSpeakerItem(InvItemClientUser speakerItem)
        {
            // Creating new order line
            var orderLine = new DebtorOrderLineClient
            {
                _Item  = speakerItem.Item,
                _Qty   = 1,
                _Price = speakerItem.SalesPrice1
            };

            orderLine.SetMaster(this.order);

            // Calling insert API
            if (await crudAPI.Insert(orderLine) != ErrorCodes.Succes)
            {
                MessageBox.Show("ERROR: Failed to insert order line.");
                return;
            }

            // Opens another uniconta tab
            UnicontaTabs.OpenTab(UnicontaTabs.DebtorOrders, null);
        }
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            var debtor     = this.CB_Customer.SelectedItem as DebtorClient;
            var invoiceAPI = UnicontaAPIManager.GetInvoiceAPI();

            // Creating DebtorOrder
            var debtorOrder = new DebtorOrderClient
            {
                _Currency = Currencies.DKK,
            };

            debtorOrder.SetMaster(debtor);

            // Creating DebtorOrderLine's
            var debtorOrderLines = new List <DebtorOrderLineClient>();
            var debtorOrderLine  = new DebtorOrderLineClient
            {
                _Item  = "OnSiteSupport",
                _Qty   = 2.0,
                _Price = 890,
            };

            debtorOrderLine.SetMaster(debtorOrder);
            debtorOrderLines.Add(debtorOrderLine);

            // Calling Invoice API.
            var invoiceResult = await invoiceAPI.PostInvoice(debtorOrder, debtorOrderLines, DateTime.Now, 0, false, SendEmail : true, Emails : "*****@*****.**", OnlyToThisEmail : true);

            if (invoiceResult.Err != ErrorCodes.Succes)
            {
                MessageBox.Show($"Failed to send invoice: {invoiceResult.Err.ToString()}");
                return;
            }

            MessageBox.Show($"Invoice has been send InvoiceNumber:{invoiceResult.Header._InvoiceNumber}");
        }
        ////summary
        //// The Execute method to execute on the basis of parameter passed
        ////summary
        ////Params UnicontaBaseEntity master :- To pass the master table
        ////Params UnicontaBaseEntity currentRow :- To pass the current row
        ////Params IEnumerable<UnicontaBaseEntity> source :- To pass List of UnicontaBaseEntity
        ////Params String Command :- pass the command
        ////Params String args :- pass the argument
        ////Returns ErrorCodes
        public ErrorCodes Execute(UnicontaBaseEntity master, UnicontaBaseEntity currentRow, IEnumerable <UnicontaBaseEntity> source, string command, string args)
        {
            if (currentRow == null || !(currentRow is DebtorOrderClient))
            {
                MessageBox.Show("ERROR: No row or wrong type");
                return(ErrorCodes.Exception);
            }

            // Parse currentRow
            var order = currentRow as DebtorOrderClient;

            // Parse args
            var itemList = args.Split(',').Select(x => x.Split(':')).ToList();

            if (itemList == null)
            {
                MessageBox.Show("No Args");
                return(ErrorCodes.Exception);
            }

            // Getting Items
            var itemFilter = "";

            itemList.ForEach(item => itemFilter += $"{item[0]};");

            var itemFilters = new List <PropValuePair> {
                PropValuePair.GenereteWhereElements("KeyName", typeof(string), itemFilter)
            };
            var items = crudAPI.Query <InvItemClient>(itemFilters).Result.ToList();

            // Creating new order lines
            var newOrderLines = new List <DebtorOrderLineClient>();

            foreach (var item in items)
            {
                var itemQty = itemList.FirstOrDefault(x => x[0] == item.KeyName);
                if (itemQty == null)
                {
                    continue;
                }

                var orderLine = new DebtorOrderLineClient
                {
                    _Item  = item.Item,
                    _Qty   = double.Parse(itemQty[1]),
                    _Price = item.SalesPrice1
                };
                orderLine.SetMaster(order);

                newOrderLines.Add(orderLine);
            }

            // Call insert API
            var insertError = crudAPI.Insert(newOrderLines).Result;

            if (insertError != ErrorCodes.Succes)
            {
                MessageBox.Show("ERROR: Failed to insert order lines");
                return(ErrorCodes.Exception);
            }

            // Attacting UserDocument to order.
            var            imageFile  = File.ReadAllBytes(@"C:\src\Uniconta\Technical-Training-Cases-master\TrainingData\LIGHT-FLOORPANEL.jpg");
            UserDocsClient newUserDoc = new UserDocsClient
            {
                Created      = DateTime.Now,
                DocumentType = FileextensionsTypes.JPEG,
                Text         = "LIGHT-FLOORPANEL.jpg",
                _Data        = imageFile,
            };

            newUserDoc.SetMaster(order);

            // Calling insert API
            if (crudAPI.Insert(newUserDoc).Result != ErrorCodes.Succes)
            {
                MessageBox.Show("ERROR: Failed to insert UserDocument");
                return(ErrorCodes.Exception);
            }

            // Writes file to disk
            var orderDocuments = crudAPI.Query <UserDocsClient>(order).Result;

            if (orderDocuments.Length != 0)
            {
                var readResult = crudAPI.Read(orderDocuments[0]).Result;
                var fileBytes  = orderDocuments[0]._Data;

                if (orderDocuments[0].DocumentType == FileextensionsTypes.JPEG)
                {
                    File.WriteAllBytes(@"C:\src\Uniconta\Technical-Training-Cases-master\TrainingData\LIGHT-FLOORPANEL-return.jpg", fileBytes);
                }
            }

            // Refresh Grid View
            if (OnExecute != null)
            {
                PluginEventArgs arg = new PluginEventArgs();
                arg.EventType = PluginEvent.RefreshGrid;
                OnExecute(null, arg);
            }

            return(ErrorCodes.Succes);
        }
        void GenerateOrderLines()
        {
            var source = (ICollection <ProjectTransInvoiceClient>)dgProjectTransClientInvoiceGrid.GetVisibleRows();

            if (source == null)
            {
                return;
            }

            var orderLines = new DebtorOrderLineClient[source.Count];
            int i          = 0;

            foreach (var line in source)
            {
                if (!line._canInvoice)
                {
                    continue;
                }

                var ol = new DebtorOrderLineClient();
                orderLines[i] = ol;

                ol._LineNumber = ++i;
                ol._Unit       = (ItemUnit)line._Unit;
                ol._Date       = line._Date;
                ol._CostPrice  = line._CostPrice;
                ol._Text       = line._Text;
                ol._Item       = line._Item;
                ol._Variant1   = line._Variant1;
                ol._Variant2   = line._Variant2;
                ol._Variant3   = line._Variant3;
                ol._Variant4   = line._Variant4;
                ol._Variant5   = line._Variant5;
                var itm = (InvItem)ItemCache.Get(line._Item);
                if (itm != null)
                {
                    if (ol._Text == null)
                    {
                        ol._Text = itm._Name;
                    }
                    ol._Dim1 = itm._Dim1;
                    ol._Dim2 = itm._Dim2;
                    ol._Dim3 = itm._Dim3;
                    ol._Dim4 = itm._Dim4;
                    ol._Dim5 = itm._Dim5;
                    if (ol._Unit == 0)
                    {
                        ol._Unit = itm._Unit;
                    }
                }
                if (line._Dim1 != null)
                {
                    ol._Dim1 = line._Dim1;
                }
                if (line._Dim2 != null)
                {
                    ol._Dim2 = line._Dim2;
                }
                if (line._Dim3 != null)
                {
                    ol._Dim3 = line._Dim3;
                }
                if (line._Dim4 != null)
                {
                    ol._Dim4 = line._Dim4;
                }
                if (line._Dim5 != null)
                {
                    ol._Dim5 = line._Dim5;
                }

                ol._Employee = line._Employee;
                ol._Qty      = line._Qty != 0d ? line._Qty : 1d;
                if (line._SalesPrice != 0)
                {
                    ol._Price       = line._SalesPrice;
                    ol._DiscountPct = line._DiscountPct;
                }
                else
                {
                    ol._AmountEntered = line._SalesAmountAgr;
                }
                if (ol._Unit == 0 && line._PrCategory != null)
                {
                    var cat = (PrCategory)CategoryCache.Get(line._PrCategory);
                    if (cat != null)
                    {
                        ol._Unit = cat._Unit;
                    }
                }
            }

            if (i != orderLines.Length)
            {
                Array.Resize(ref orderLines, i);
            }

            var order = new DebtorOrder();

            order.SetMaster(master);
            order._NoItemUpdate = true;

            string ValueFound = null;

            foreach (var cat in (Uniconta.DataModel.PrCategory[])CategoryCache.GetNotNullArray)
            {
                if (cat._CatType == CategoryType.Revenue)
                {
                    ValueFound = cat._Number;
                    if (cat._Default)
                    {
                        break;
                    }
                }
            }

            order._PrCategory = ValueFound;

            var paramArr = new object[] { order, orderLines };

            AddDockItem(TabControls.CreateInvoicePage, paramArr);
        }
Beispiel #16
0
        private async void B_Orders_Click(object sender, RoutedEventArgs e)
        {
            // Getting CrudAPI
            var crudAPI = UnicontaAPIManager.GetCrudAPI();

            crudAPI.RunInTransaction = false;

            // Parsing CSV
            var orders = CSVUtils.ParseOrders(@"C:\src\Uniconta\Technical-Training-Cases-master\TrainingData\CompanyData\Finace-Orders.csv");

            // Creating SQLCache's
            SQLCache customerCache = crudAPI.CompanyEntity.GetCache(typeof(DebtorClient));

            if (customerCache == null)
            {
                customerCache = await crudAPI.CompanyEntity.LoadCache(typeof(DebtorClient), crudAPI);
            }

            SQLCache inventoryCache = crudAPI.CompanyEntity.GetCache(typeof(InvItemClient));

            if (inventoryCache == null)
            {
                inventoryCache = await crudAPI.CompanyEntity.LoadCache(typeof(InvItemClient), crudAPI);
            }

            // Creating Insert List
            var newDebtorOrderClients = new List <DebtorOrderClient>();

            foreach (var order in orders)
            {
                // Parsing Account Number
                var accountNumber = (int.Parse(order.AccountNumber) + 20000).ToString();

                // Finding customer in cache
                var customer = customerCache.Get(accountNumber) as DebtorClient;

                var newDebtorOrderClient = new DebtorOrderClient
                {
                    _Created = order.CreatedDate
                };
                newDebtorOrderClient.SetMaster(customer);
                newDebtorOrderClients.Add(newDebtorOrderClient);
            }
            ;

            // Calling insert API
            var errorCode = await crudAPI.Insert(newDebtorOrderClients);

            if (errorCode != ErrorCodes.Succes)
            {
                MessageBox.Show($"ERROR: Failed to import orders {errorCode.ToString()}");
            }

            // Creating order lines
            var newDebtorOrderLineClients = new List <DebtorOrderLineClient>();
            var inventoryList             = inventoryCache.GetRecords as InvItemClient[];

            var index = 0;

            foreach (var debtorOrder in newDebtorOrderClients)
            {
                var orderItems = orders[index].Items;
                foreach (var item in orderItems)
                {
                    var inventoryItem = inventoryList.FirstOrDefault(i => i.Name == item.ItemName);

                    var orderLine = new DebtorOrderLineClient
                    {
                        _Item  = inventoryItem.Item,
                        _Qty   = 1,
                        _Price = inventoryItem.SalesPrice1
                    };
                    orderLine.SetMaster(debtorOrder);
                    newDebtorOrderLineClients.Add(orderLine);
                }
                ;

                index++;
            }
            ;

            // Calling insert API
            var errorCode2 = await crudAPI.Insert(newDebtorOrderLineClients);

            if (errorCode2 != ErrorCodes.Succes)
            {
                MessageBox.Show($"ERROR: Failed to import order lines {errorCode2.ToString()}");
            }
            else
            {
                MessageBox.Show("Import Completed");
            }
        }
 public OrderLineMarkedPage(BaseAPI api, DebtorOrderLineClient line)
     : base(api, null)
 {
     InitPage(line);
 }
Beispiel #18
0
        public void InsertSalgsfakturaer()
        {
            int?lastFakid = null;
            DebtorOrderClient recOrder = null;

            var rec_regnskab = Program.qryAktivRegnskab();
            var qrySFak      = from sfv in Program.karFakturavarer_s
                               join sf in Program.karFakturaer_s on new { fakid = sfv.Fakid } equals new { fakid = sf.fakid }
            where sf.faknr != 0 && sf.faktype == 0
            orderby sfv.Fakid, sfv.Line
                select new
            {
                Regnskabid  = rec_regnskab.Rid,
                Sk          = "S",
                Fakid       = sfv.Fakid,
                Faknr       = sf.faknr,
                Dato        = sf.dato,
                forfdato    = sf.forfdato,
                debitornr   = sf.debitornr,
                Faklinnr    = sfv.Line,
                Varenr      = sfv.Varenr,
                Tekst       = sfv.VareTekst,
                Konto       = sfv.Bogfkonto,
                Momskode    = KarKontoplan.getMomskode(sfv.Bogfkonto),
                Antal       = sfv.Antal,
                Enhed       = sfv.Enhed,
                Pris        = sfv.Pris,
                Rabat       = sfv.Rabat,
                Moms        = sfv.Moms,
                Nettobelob  = sfv.Nettobelob,
                Bruttobelob = sfv.Bruttobelob,
            };

            int antal = qrySFak.Count();

            var api = UCInitializer.GetBaseAPI;

            //var col3 = await api.Query<DebtorOrderClient>();
            //var col4 = await api.Query<DebtorOrderLineClient>();

            foreach (var s in qrySFak)
            {
                if ((!(s.Fakid == 0)) && (lastFakid != s.Fakid))
                {
                    try
                    {
                        var crit = new List <PropValuePair>();
                        var pair = PropValuePair.GenereteWhereElements("OrderNumber", typeof(int), s.Fakid.ToString());
                        crit.Add(pair);
                        var taskDebtorOrder = api.Query <DebtorOrderClient>(null, crit);
                        taskDebtorOrder.Wait();
                        var col = taskDebtorOrder.Result;
                        if (col.Count() == 0)
                        {
                            recOrder = new DebtorOrderClient()
                            {
                                OrderNumber  = s.Fakid,
                                Account      = s.debitornr.ToString(),
                                InvoiceDate  = s.Dato,
                                DeliveryDate = s.Dato,
                            };
                            var taskInsertDebtorOrder = api.Insert(recOrder);
                            taskInsertDebtorOrder.Wait();
                            var err = taskInsertDebtorOrder.Result;
                        }
                        else
                        {
                            recOrder = col[0];
                        }
                    }
                    catch { }
                }

                DebtorOrderLineClient recOrderLine = new DebtorOrderLineClient()
                {
                    Text           = s.Tekst,
                    Qty            = (double)s.Antal,
                    Price          = (double)s.Pris,
                    PostingAccount = KarNyKontoplan.NytKontonr(s.Konto)
                };
                recOrderLine.SetMaster(recOrder);
                var taskInsertDebtorOrderLine = api.Insert(recOrderLine);
                taskInsertDebtorOrderLine.Wait();
                var err1 = taskInsertDebtorOrderLine.Result;
            }
        }
        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;
        }