private InvoiceItem CreateInvoiceItem(Setting objSetting, Foodics.NetSuite.Shared.Model.InvoiceItem itemDetails)
        {
            RecordRef   taxCode, item, unit, price;
            InvoiceItem invoiceItemObject = new InvoiceItem();

            taxCode = new RecordRef();
            float taxRate = 1 + (objSetting.TaxRate / 100);

            if (objSetting.TaxAlwaysAppliedInItems)
            {
                taxCode.internalId     = objSetting.TaxCode_Netsuite_Id.ToString();
                invoiceItemObject.rate = Convert.ToString(itemDetails.Amount / taxRate);
            }
            else
            {
                //if (itemDetails.FoodicsTax > 0 && itemDetails.Item_Type != nameof(Item_Type.OtherChargeSaleItem))
                //if (itemDetails.FoodicsTax > 0 || itemDetails.Item_Type == nameof(Item_Type.OtherChargeSaleItem))
                //{
                taxCode.internalId = objSetting.TaxCode_Netsuite_Id.ToString();
                if (objSetting.ItemTaxInclusive)//= tax inclusive in item price
                {
                    invoiceItemObject.rate = Convert.ToString(itemDetails.Amount / taxRate);
                }
                else
                {
                    invoiceItemObject.rate = Convert.ToString(itemDetails.Amount);
                }
                //}
                //else
                //{
                //    taxCode.internalId = objSetting.TaxCode_Free_Netsuite_Id.ToString();
                //    invoiceItemObject.rate = Convert.ToString(itemDetails.Amount);
                //}
            }
            taxCode.type = RecordType.taxAcct;
            if (int.Parse(taxCode.internalId) > 0)
            {
                invoiceItemObject.taxCode = taxCode;
            }
            // item
            item                   = new RecordRef();
            item.internalId        = itemDetails.Item_Id.ToString();
            item.type              = (RecordType)Enum.Parse(typeof(RecordType), itemDetails.Item_Type, true);
            invoiceItemObject.item = item;
            if (Utility.ConvertToInt(itemDetails.Units) > 0)
            {
                unit                    = new RecordRef();
                unit.internalId         = itemDetails.Units.ToString();
                unit.type               = RecordType.unitsType;
                invoiceItemObject.units = unit;
            }
            // price level
            #region price level
            price                   = new RecordRef();
            price.type              = RecordType.priceLevel;
            price.internalId        = "-1";
            invoiceItemObject.price = price;
            #endregion
            invoiceItemObject.quantitySpecified = true;
            invoiceItemObject.quantity          = itemDetails.Quantity;
            if (!string.IsNullOrEmpty(itemDetails.Combo_Name))
            {
                StringCustomFieldRef ComboRef = new StringCustomFieldRef();
                ComboRef.scriptId = "custcol_da_foodics_combos";
                ComboRef.value    = itemDetails.Combo_Name.ToString() + " - " + itemDetails.ComboSize_Name.ToString();

                CustomFieldRef[] customFieldRefArray = new CustomFieldRef[1];
                customFieldRefArray[0]            = ComboRef;
                invoiceItemObject.customFieldList = customFieldRefArray;
            }
            return(invoiceItemObject);
        }
        private WriteResponseList CreateCreditMemo(List <Foodics.NetSuite.Shared.Model.Invoice> returnList)
        {
            //Define Array of credit Memo Then Loop
            CreditMemo[]     memoList = new CreditMemo[returnList.Count];
            CreditMemoItem[] memoitemarr;
            CreditMemoItem   invoiceItemObject;

            //add return id + return netsuite id to credit memo table, credit memo netsuite id
            #region Add Credit Memoes to CreditMemo Array

            for (int i = 0; i < returnList.Count; i++)
            {
                Foodics.NetSuite.Shared.Model.Invoice invoiceReturn   = returnList[i];
                Foodics.NetSuite.Shared.Model.Invoice invoiceoriginal = new GenericeDAO <Foodics.NetSuite.Shared.Model.Invoice>().GetWhere(" Foodics_Id = '" + invoiceReturn.Original_Foodics_Id + "'").FirstOrDefault();
                if (invoiceoriginal != null && invoiceoriginal.Netsuite_Id > 0)
                {
                    Setting objSetting = new GenericeDAO <Setting>().GetWhere("Subsidiary_Netsuite_Id=" + invoiceReturn.Subsidiary_Id).FirstOrDefault();
                    StringCustomFieldRef FoodicsRef, FoodicsNumb, orderDiscount;
                    CustomFieldRef[]     customFieldRefArray;
                    CreditMemo           memo = new CreditMemo();
                    // Return
                    RecordRef returnRef = new RecordRef();
                    returnRef.internalId = invoiceoriginal.Netsuite_Id.ToString();
                    returnRef.type       = RecordType.invoice;
                    memo.createdFrom     = returnRef;


                    //Customer

                    RecordRef entity = new RecordRef();
                    entity.internalId = invoiceReturn.Customer_Netsuite_Id > 0 ? invoiceReturn.Customer_Netsuite_Id.ToString() : objSetting.Customer_Netsuite_Id.ToString();
                    entity.type       = RecordType.customer;
                    memo.entity       = entity;

                    //currency
                    RecordRef currency = new RecordRef();
                    currency.internalId = objSetting.Currency_Netsuite_Id.ToString();
                    currency.type       = RecordType.currency;
                    memo.currency       = currency;

                    //date
                    memo.tranDateSpecified = true;
                    memo.tranDate          = TimeZoneInfo.ConvertTimeToUtc(invoiceReturn.Date, TimeZoneInfo.Local);

                    //exchange rate
                    memo.exchangeRate = invoiceReturn.Exchange_Rate;

                    //subsidary
                    RecordRef subsid = new RecordRef();
                    subsid.internalId = invoiceReturn.Subsidiary_Id.ToString();
                    subsid.type       = RecordType.subsidiary;
                    memo.subsidiary   = subsid;


                    #region Item List
                    List <Foodics.NetSuite.Shared.Model.InvoiceItem> itemLst = new GenericeDAO <Foodics.NetSuite.Shared.Model.InvoiceItem>().GetWhere(" ProductStatus =6 and Invoice_Id =" + invoiceReturn.Id + " and isnull(Item_Id,0) >0 ");
                    int DiscountItems = itemLst.Where(x => x.Line_Discount_Amount > 0).Count();
                    //Define Invoice Items List
                    int totalItems = itemLst.Count + DiscountItems;
                    memoitemarr = new CreditMemoItem[totalItems];
                    if (itemLst.Count > 0)
                    {
                        CreditMemoItemList crdtmemoitmlst = new CreditMemoItemList();

                        try
                        {
                            int arr = 0;
                            for (int k = 0; k < totalItems; k++)
                            {
                                Foodics.NetSuite.Shared.Model.InvoiceItem itemDetails = itemLst[arr];
                                invoiceItemObject = CreateCreditItem(objSetting, itemDetails);
                                memoitemarr[k]    = invoiceItemObject;
                                if (itemDetails.Line_Discount_Amount > 0)
                                {
                                    float Discount = itemDetails.Line_Discount_Amount;
                                    k++;
                                    Foodics.NetSuite.Shared.Model.InvoiceItem OtherCharge = new Foodics.NetSuite.Shared.Model.InvoiceItem();
                                    OtherCharge.Item_Id   = objSetting.OtherChargeItem_Netsuite_Id;
                                    OtherCharge.Amount    = Discount * -1;
                                    OtherCharge.Quantity  = 1;
                                    OtherCharge.Item_Type = "OtherChargeResaleItem";
                                    invoiceItemObject     = CreateCreditItem(objSetting, OtherCharge);
                                    memoitemarr[k]        = invoiceItemObject;
                                }
                                arr++;
                            }
                        }
                        catch (Exception ex)
                        {
                            LogDAO.Integration_Exception(LogIntegrationType.Error, this.GetType().FullName + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Error " + ex.Message);
                        }


                        crdtmemoitmlst.item = memoitemarr;
                        memo.itemList       = crdtmemoitmlst;
                    }

                    #endregion

                    #region Discount
                    if (invoiceReturn.Total_Discount > 0)
                    {
                        RecordRef discountitem = new RecordRef();
                        discountitem.type = RecordType.discountItem;
                        memo.discountItem = discountitem;

                        memo.discountRate = (Math.Round((invoiceReturn.Total_Discount / 1.15), 3) * -1).ToString();
                        if (invoiceReturn.Discount_Id > 0)
                        {
                            discountitem.internalId = invoiceReturn.Discount_Id.ToString();
                        }
                        else
                        {
                            discountitem.internalId = objSetting.DiscountItem_Netsuite_Id.ToString();
                        }
                    }
                    else
                    {
                        memo.discountRate = "0";
                    }
                    if (invoiceReturn.Accounting_Discount_Item != 0)
                    {
                        RecordRef discItem = new RecordRef();
                        discItem.internalId = invoiceReturn.Accounting_Discount_Item.ToString();
                        discItem.type       = RecordType.discountItem;
                        memo.discountItem   = discItem;
                    }
                    #region Custom Attributes
                    orderDiscount          = new StringCustomFieldRef();
                    orderDiscount.scriptId = "custbody_da_invoice_discount";
                    orderDiscount.value    = invoiceReturn.Total_Discount.ToString();


                    FoodicsRef          = new StringCustomFieldRef();
                    FoodicsRef.scriptId = "custbody_da_foodics_reference";
                    FoodicsRef.value    = invoiceReturn.BarCode.ToString();

                    FoodicsNumb          = new StringCustomFieldRef();
                    FoodicsNumb.scriptId = "custbody_da_foodics_number";
                    FoodicsNumb.value    = invoiceReturn.Number.ToString();

                    customFieldRefArray    = new CustomFieldRef[3];
                    customFieldRefArray[0] = orderDiscount;
                    customFieldRefArray[1] = FoodicsRef;
                    customFieldRefArray[2] = FoodicsNumb;

                    memo.customFieldList = customFieldRefArray;
                    #endregion

                    #endregion


                    memoList[i] = memo;
                }
            }

            //Post Memos to Netsuite
            WriteResponseList memoWR = Service(true).addList(memoList);
            bool receiptresult       = memoWR.status.isSuccess;

            if (receiptresult)
            {
                UpdatedInvoice(returnList, memoWR);
            }
            #endregion
            return(memoWR);
        }
        public override Int64 Set(string parametersArr)
        {
            try
            {
                bool result = true;
                new CustomDAO().InvoiceRelatedUpdate();
                new CustomDAO().SetItemClass();
                #region Check Correct Invoices

                /*
                 * SELECT      *
                 * FROM            Invoice
                 * WHERE
                 * --(Location_Id = 201) and
                 * Order_Status=4
                 * and Net_Payable + Total_Discount != (select sum( Quantity  * amount) - sum(Line_Discount_Amount) from InvoiceItem where InvoiceItem.Invoice_Id =Invoice.Id and ISNULL(Item_Id,0)>0 and ProductStatus=3 )
                 *
                 * SELECT      *
                 * FROM            Invoice
                 * WHERE
                 *
                 * Order_Status=5
                 * and Net_Payable + Total_Discount != (select sum( Quantity  * amount) - sum(Line_Discount_Amount) from InvoiceItem where InvoiceItem.Invoice_Id =Invoice.Id and ISNULL(Item_Id,0)>0 and ProductStatus=6 )
                 * select * from InvoiceItem where isnull([Item_Id], 0)=0
                 *
                 * Declare @id nvarchar(50)
                 * set @id='007f91e2-a8ad-4dab-a20a-70c90e8db6ce'
                 *              select * from Invoice
                 *              where Foodics_Id =@id
                 *              select Net_Payable,Net_Payable-((Net_Payable*15)/100) from Invoice
                 *              where Foodics_Id =@id
                 *              select * from InvoiceItem
                 *              where Foodics_Id =@id
                 */
                #endregion
                List <Foodics.NetSuite.Shared.Model.Invoice> lstitemsAll = new CustomDAO().SelectInvoice(4);
                int Exe_length = 200;
                int lstend     = Exe_length;
                if (lstitemsAll.Count > 0)
                {
                    for (int Index = 0; Index < lstitemsAll.Count; Index += Exe_length)
                    {
                        if (Index + Exe_length >= lstitemsAll.Count)
                        {
                            lstend = lstitemsAll.Count - Index;
                        }
                        List <Foodics.NetSuite.Shared.Model.Invoice> invoiceLst = lstitemsAll.GetRange(Index, lstend);

                        if (invoiceLst.Count > 0)
                        {
                            #region variables
                            Invoice[] InvoiceArr = new Invoice[invoiceLst.Count];



                            Foodics.NetSuite.Shared.Model.Invoice     invoice_info;
                            Foodics.NetSuite.Shared.Model.InvoiceItem itemDetails;


                            DateTime        invoice_date;
                            Invoice         invoiceObject;
                            InvoiceItem     invoiceItemObject;
                            InvoiceItemList items;

                            RecordRef            subsid, currency, entity, location;
                            StringCustomFieldRef FoodicsRef, FoodicsNumb, CreatedBy, Source, orderDiscount;
                            CustomFieldRef[]     customFieldRefArray;
                            #endregion
                            for (int i = 0; i < invoiceLst.Count; i++)
                            {
                                try
                                {
                                    List <Foodics.NetSuite.Shared.Model.InvoiceItem> itemLst = new List <Foodics.NetSuite.Shared.Model.InvoiceItem>();
                                    List <InvoiceItem> invoiceItems = new List <InvoiceItem>();
                                    invoice_info = invoiceLst[i];
                                    Setting objSetting = new GenericeDAO <Setting>().GetWhere("Subsidiary_Netsuite_Id=" + invoice_info.Subsidiary_Id).FirstOrDefault();
                                    invoiceObject = new Invoice();
                                    #region invoice items
                                    itemLst = new GenericeDAO <Foodics.NetSuite.Shared.Model.InvoiceItem>().GetWhere(" ProductStatus =3 and Invoice_Id =" + invoice_info.Id + " and isnull(Item_Id,0) >0 ");
                                    try
                                    {
                                        for (int k = 0; k < itemLst.Count; k++)
                                        {
                                            itemDetails       = itemLst[k];
                                            invoiceItemObject = CreateInvoiceItem(objSetting, itemDetails);
                                            invoiceItems.Add(invoiceItemObject);
                                            if (itemDetails.Line_Discount_Amount > 0)
                                            {
                                                float Discount = itemDetails.Line_Discount_Amount;
                                                Foodics.NetSuite.Shared.Model.InvoiceItem OtherCharge = new Foodics.NetSuite.Shared.Model.InvoiceItem();
                                                OtherCharge.Item_Id   = objSetting.OtherChargeItem_Netsuite_Id;
                                                OtherCharge.Amount    = Discount * -1;
                                                OtherCharge.Quantity  = 1;
                                                OtherCharge.Item_Type = nameof(Item_Type.OtherChargeSaleItem);
                                                invoiceItemObject     = CreateInvoiceItem(objSetting, OtherCharge);
                                                invoiceItems.Add(invoiceItemObject);
                                            }
                                        }
                                        //if (invoice_info.Total_Discount > 0)
                                        //{
                                        //    float Discount = invoice_info.Total_Discount;
                                        //    Foodics.NetSuite.Shared.Model.InvoiceItem discountItem = new Foodics.NetSuite.Shared.Model.InvoiceItem();
                                        //    if (invoice_info.Discount_Id > 0)
                                        //        discountItem.Item_Id = invoice_info.Discount_Id;
                                        //    else
                                        //        discountItem.Item_Id = objSetting.DiscountItem_Netsuite_Id;

                                        //    discountItem.Amount = Discount * -1;
                                        //    //discountItem.Quantity = 1;
                                        //    discountItem.Item_Type = nameof(Item_Type.DiscountItem);
                                        //    invoiceItemObject = CreateInvoiceItem(objSetting, discountItem);
                                        //    invoiceItems.Add(invoiceItemObject);
                                        //}
                                    }
                                    catch (Exception ex)
                                    {
                                        LogDAO.Integration_Exception(LogIntegrationType.Error, this.GetType().FullName + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Error " + ex.Message);
                                    }
                                    //Assign invoive items
                                    items                  = new InvoiceItemList();
                                    items.item             = invoiceItems.ToArray();
                                    invoiceObject.itemList = items;

                                    //GiftCertRedemption
                                    #endregion


                                    #region Standard Attributes
                                    invoice_date = TimeZoneInfo.ConvertTimeToUtc(invoice_info.Date, TimeZoneInfo.Local);

                                    //invoiceObject.externalId = invoice_info.BarCode;
                                    invoiceObject.tranDateSpecified = true;
                                    invoiceObject.dueDateSpecified  = true;
                                    invoiceObject.tranDate          = invoice_date;
                                    invoiceObject.dueDate           = invoice_date;
                                    invoiceObject.exchangeRate      = invoice_info.Exchange_Rate;


                                    //invoiceObject.memo = invoice_info.Notes;
                                    if (invoice_info.Subsidiary_Id > 0)
                                    {
                                        subsid                   = new RecordRef();
                                        subsid.internalId        = objSetting.Subsidiary_Netsuite_Id.ToString();
                                        subsid.type              = RecordType.subsidiary;
                                        invoiceObject.subsidiary = subsid;
                                    }
                                    currency               = new RecordRef();
                                    currency.internalId    = objSetting.Currency_Netsuite_Id.ToString();
                                    currency.type          = RecordType.currency;
                                    invoiceObject.currency = currency;
                                    entity               = new RecordRef();
                                    entity.internalId    = invoice_info.Customer_Netsuite_Id > 0 ? invoice_info.Customer_Netsuite_Id.ToString() : objSetting.Customer_Netsuite_Id.ToString();
                                    entity.type          = RecordType.customer;
                                    invoiceObject.entity = entity;

                                    location               = new RecordRef();
                                    location.internalId    = invoice_info.Location_Id.ToString(); //objSetting.Location_Netsuite_Id.ToString();
                                    location.type          = RecordType.location;
                                    invoiceObject.location = location;

                                    if (invoice_info.Sales_Rep_Id > 0)
                                    {
                                        RecordRef sales_rep = new RecordRef();
                                        sales_rep.internalId   = invoice_info.Sales_Rep_Id.ToString();
                                        sales_rep.type         = RecordType.employee;
                                        invoiceObject.salesRep = sales_rep;
                                    }
                                    #endregion

                                    #region Discount
                                    if (invoice_info.Total_Discount > 0)
                                    {
                                        RecordRef discountitem = new RecordRef();
                                        discountitem.type          = RecordType.discountItem;
                                        invoiceObject.discountItem = discountitem;
                                        float taxRate = 1 + (objSetting.TaxRate / 100);
                                        if (objSetting.TaxAlwaysAppliedInItems)
                                        {
                                            invoiceObject.discountRate = (Math.Round((invoice_info.Total_Discount / taxRate), 3) * -1).ToString();
                                        }
                                        else
                                        {
                                            //if (objSetting.ItemTaxInclusive)
                                            //    invoiceObject.discountRate = (Math.Round((invoice_info.Total_Discount / taxRate), 3) * -1).ToString();
                                            //else
                                            invoiceObject.discountRate = (Math.Round(invoice_info.Total_Discount, 3) * -1).ToString();
                                        }

                                        if (invoice_info.Discount_Id > 0)
                                        {
                                            discountitem.internalId = invoice_info.Discount_Id.ToString();
                                        }
                                        else
                                        {
                                            discountitem.internalId = objSetting.DiscountItem_Netsuite_Id.ToString();
                                        }
                                    }
                                    else
                                    {
                                        invoiceObject.discountRate = "0";
                                    }
                                    orderDiscount          = new StringCustomFieldRef();
                                    orderDiscount.scriptId = "custbody_da_invoice_discount";
                                    orderDiscount.value    = invoice_info.Total_Discount.ToString();

                                    //if (invoice_info.Accounting_Discount_Item != 0)
                                    //{
                                    //    RecordRef discItem = new RecordRef();
                                    //    discItem.internalId = invoice_info.Accounting_Discount_Item.ToString();
                                    //    discItem.type = RecordType.discountItem;
                                    //    invoiceObject.discountItem = discItem;
                                    //}
                                    #endregion

                                    //RecordRef Approval = new RecordRef();
                                    //Approval.internalId = "2";
                                    ////Approval.type = RecordType.;
                                    //invoiceObject.approvalStatus = Approval;

                                    #region Invoice Custom Attributes
                                    FoodicsRef          = new StringCustomFieldRef();
                                    FoodicsRef.scriptId = "custbody_da_foodics_reference";
                                    FoodicsRef.value    = invoice_info.BarCode.ToString();

                                    FoodicsNumb          = new StringCustomFieldRef();
                                    FoodicsNumb.scriptId = "custbody_da_foodics_number";
                                    FoodicsNumb.value    = invoice_info.Number.ToString();

                                    CreatedBy          = new StringCustomFieldRef();
                                    CreatedBy.scriptId = "custbody_da_foodics_createdby";
                                    CreatedBy.value    = invoice_info.CreatedBy != null?invoice_info.CreatedBy.ToString() : "";

                                    Source          = new StringCustomFieldRef();
                                    Source.scriptId = "custbody_da_foodics_source";
                                    Source.value    = invoice_info.Source.ToString();

                                    customFieldRefArray    = new CustomFieldRef[5];
                                    customFieldRefArray[0] = orderDiscount;
                                    customFieldRefArray[1] = FoodicsRef;
                                    customFieldRefArray[2] = FoodicsNumb;
                                    customFieldRefArray[3] = CreatedBy;
                                    customFieldRefArray[4] = Source;

                                    invoiceObject.customFieldList = customFieldRefArray;
                                    #endregion
                                    InvoiceArr[i] = invoiceObject;
                                }
                                catch (Exception ex)
                                {
                                    //invoiceLst.RemoveAt(i);
                                    LogDAO.Integration_Exception(LogIntegrationType.Error, this.GetType().FullName + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Error " + ex.Message);
                                }
                            }
                            // Send invoice list to netsuite
                            WriteResponseList wr = Service(true).addList(InvoiceArr);
                            result = wr.status.isSuccess;
                            if (result)
                            {
                                //Update database with returned Netsuite ids
                                UpdatedInvoice(invoiceLst, wr);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogDAO.Integration_Exception(LogIntegrationType.Error, this.GetType().FullName + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "Error " + ex.Message);
            }



            return(0);
        }
        private CreditMemoItem CreateCreditItem(Setting objSetting, Foodics.NetSuite.Shared.Model.InvoiceItem itemDetails)
        {
            CreditMemoItem invoiceItemObject = new CreditMemoItem();

            // tax code
            RecordRef taxCode = new RecordRef();

            if (objSetting.TaxAlwaysAppliedInItems)
            {
                taxCode.internalId = objSetting.TaxCode_Netsuite_Id.ToString();
            }
            else
            {
                //if (itemDetails.FoodicsTax > 0 && itemDetails.Item_Type != nameof(Item_Type.OtherChargeSaleItem))
                if (itemDetails.FoodicsTax > 0 || itemDetails.Item_Type == nameof(Item_Type.OtherChargeSaleItem))
                {
                    taxCode.internalId = objSetting.TaxCode_Netsuite_Id.ToString();
                }
                else
                {
                    taxCode.internalId = objSetting.TaxCode_Free_Netsuite_Id.ToString();
                }
            }

            //taxCode.internalId = itemDetails.FoodicsTax > 0 ? objSetting.TaxCode_Netsuite_Id.ToString() : objSetting.TaxCode_Free_Netsuite_Id.ToString();
            taxCode.type = RecordType.taxAcct;
            if (int.Parse(taxCode.internalId) > 0)
            {
                invoiceItemObject.taxCode = taxCode;
            }

            // item
            RecordRef item = new RecordRef();

            item.internalId        = itemDetails.Item_Id.ToString();
            item.type              = (RecordType)Enum.Parse(typeof(RecordType), itemDetails.Item_Type, true);
            invoiceItemObject.item = item;

            if (Utility.ConvertToInt(itemDetails.Units) > 0)
            {
                RecordRef unit = new RecordRef();
                unit.internalId         = itemDetails.Units.ToString();
                unit.type               = RecordType.unitsType;
                invoiceItemObject.units = unit;
            }

            // price level
            #region price level
            RecordRef price = new RecordRef();
            price.type              = RecordType.priceLevel;
            price.internalId        = "-1";
            invoiceItemObject.price = price;
            float taxRate = 1 + (objSetting.TaxRate / 100);
            if (objSetting.TaxAlwaysAppliedInItems)
            {
                invoiceItemObject.rate = Convert.ToString(itemDetails.Amount / taxRate);
            }
            else
            {
                if (itemDetails.FoodicsTax > 0 && itemDetails.Item_Type != nameof(Item_Type.OtherChargeSaleItem))
                {
                    if (objSetting.ItemTaxInclusive)//= tax inclusive in item price
                    {
                        invoiceItemObject.rate = Convert.ToString(itemDetails.Amount / taxRate);
                    }
                    else
                    {
                        invoiceItemObject.rate = Convert.ToString(itemDetails.Amount);
                    }
                }
                else
                {
                    invoiceItemObject.rate = Convert.ToString(itemDetails.Amount);
                }
            }
            #endregion
            invoiceItemObject.quantitySpecified = true;
            invoiceItemObject.quantity          = itemDetails.Quantity;
            return(invoiceItemObject);
        }