async private Task <DCPreviousAddressClient> GetPreviousAddressForInvoice(DCInvoiceClient invClient)
        {
            if (invClient == null || crudApi == null)
            {
                return(null);
            }

            DCPreviousAddressClient selectedDateInvoiceAddr = null;
            var propvaluePairList = new System.Collections.Generic.List <PropValuePair>()
            {
                PropValuePair.GenereteWhereElements("DateChange", invClient.Date, CompareOperator.GreaterThan)
            };
            var previousAddresses = await crudApi.Query <DCPreviousAddressClient>(invClient, propvaluePairList);

            if (previousAddresses != null && previousAddresses.Length > 0)
            {
                selectedDateInvoiceAddr = previousAddresses.FirstOrDefault();
            }

            return(selectedDateInvoiceAddr);
        }
        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);
        }