public async Task <IEnumerable <AsycudaSalesAllocations> > GetAsycudaSalesAllocations(string FilterExpression)
        {
            try
            {
                // create dictionary map and run replace
                var map = new Dictionary <string, string>()
                {
                    { "InvoiceDate", "EntryDataDetails.Sales.EntryDataDate" },
                    { "InvoiceNo", "EntryDataDetails.EntryDataId" },
                    { "TaxAmount", "EntryDataDetails.Sales.TaxAmount" },
                    { "ItemNumber", "EntryDataDetails.ItemNumber" },
                    { "ItemDescription", "EntryDataDetails.ItemDescription" },
                    { "TariffCode", "EntryDataDetails.InventoryItem.TariffCode" },
                    { "pCNumber", "PreviousDocumentItem.AsycudaDocument.CNumber" },
                    { "pLineNumber", "PreviousDocumentItem.LineNumber" }
                };


                var exp = map.Aggregate(FilterExpression, (current, m) => current.Replace(m.Key, m.Value));


                using (var ctx = new AsycudaSalesAllocationsService())
                {
                    var res = await ctx.GetAsycudaSalesAllocationsByExpression(exp,
                                                                               new List <string>()
                    {
                        "xbondEntry",
                        // "EntryDataDetails",
                        // "EntryDataDetails.EntryDataDetailsEx",
                        // "EntryDataDetails.InventoryItem",
                        "EntryDataDetails.InventoryItem.TariffCodes.TariffCategory.TariffSupUnitLkps",
                        "EntryDataDetails.Sales",
                        // "PreviousDocumentItem",
                        //"PreviousDocumentItem.EX",
                        "PreviousDocumentItem.xcuda_Goods_description",
                        "PreviousDocumentItem.xcuda_Tarification.xcuda_HScode",
                        "PreviousDocumentItem.xcuda_Tarification.xcuda_Supplementary_unit",
                        "PreviousDocumentItem.xcuda_Taxation.xcuda_Taxation_line",
                        "PreviousDocumentItem.xcuda_Valuation_item.xcuda_Item_Invoice",
                        "PreviousDocumentItem.xcuda_Valuation_item.xcuda_Weight_itm",
                        "PreviousDocumentItem.AsycudaDocument",
                        //"PreviousDocumentItem.xcuda_PreviousItems",
                        "PreviousDocumentItem.xcuda_PreviousItems.xcuda_Item.AsycudaDocument"
                        // "PreviousDocumentItem.xcuda_PreviousItems.xcuda_Item"
                    }).ConfigureAwait(false);

                    return(res);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        public async Task <IEnumerable <AsycudaSalesAllocations> > GetAsycudaSalesAllocations(string FilterExpression)
        {
            try
            {
                // create dictionary map and run replace
                var exp = TranslateAllocationWhereExpression(FilterExpression);


                using (var ctx = new AsycudaSalesAllocationsService())
                {
                    var res = await ctx.GetAsycudaSalesAllocationsByExpression(exp,
                                                                               new List <string>()
                    {
                        "xBondAllocations",
                        // "EntryDataDetails",
                        // "EntryDataDetails.EntryDataDetailsEx",
                        // "EntryDataDetails.InventoryItem",
                        "EntryDataDetails.InventoryItem.TariffCodes.TariffCategory.TariffSupUnitLkps",
                        "EntryDataDetails.Sales",
                        // "PreviousDocumentItem",
                        //"PreviousDocumentItem.EX",
                        "PreviousDocumentItem.xcuda_Goods_description",
                        "PreviousDocumentItem.xcuda_Tarification.xcuda_HScode",
                        "PreviousDocumentItem.xcuda_Tarification.xcuda_Supplementary_unit",
                        "PreviousDocumentItem.xcuda_Taxation.xcuda_Taxation_line",
                        "PreviousDocumentItem.xcuda_Valuation_item.xcuda_Item_Invoice",
                        "PreviousDocumentItem.xcuda_Valuation_item.xcuda_Weight_itm",
                        "PreviousDocumentItem.AsycudaDocument",
                        //"PreviousDocumentItem.xcuda_PreviousItems",
                        "PreviousDocumentItem.EntryPreviousItems.xcuda_PreviousItem.xcuda_Item.AsycudaDocument"
                        // "PreviousDocumentItem.xcuda_PreviousItems.xcuda_Item"
                    }).ConfigureAwait(false);

                    return(res);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }