Esempio n. 1
0
            /// <summary>
            /// Gets tax summary setting.
            /// </summary>
            /// <param name="request">The get tax summary setting India data request.</param>
            /// <returns>Tax summary setting.</returns>
            private SingleEntityDataServiceResponse <TaxSummarySettingIndia> GetTaxSummarySettingIndia(GetTaxSummarySettingIndiaDataRequest request)
            {
                ThrowIf.Null(request, "request");

                IndiaTaxL2CacheDataStoreAccessor level2CacheDataAccessor = this.GetIndiaTaxL2CacheDataStoreAccessor(request.RequestContext);

                bool found;
                bool updateL2Cache;
                TaxSummarySettingIndia result = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetTaxSummarySettingIndia(request.QueryResultSettings.ColumnSet), out found, out updateL2Cache);

                if (!found)
                {
                    var query = new SqlPagedQuery(QueryResultSettings.SingleRecord)
                    {
                        Select = request.QueryResultSettings.ColumnSet,
                        From   = RetailStoreTableIndiaViewName,
                        Where  = "CHANNELID = @channelId",
                    };

                    query.Parameters["@channelId"] = request.RequestContext.GetPrincipal().ChannelId;

                    using (DatabaseContext databaseContext = new DatabaseContext(request.RequestContext))
                    {
                        result = databaseContext.ReadEntity <TaxSummarySettingIndia>(query).SingleOrDefault();
                    }

                    updateL2Cache &= result != null;
                }

                if (updateL2Cache)
                {
                    level2CacheDataAccessor.PutTaxSummarySettingIndia(request.QueryResultSettings.ColumnSet, result);
                }

                return(new SingleEntityDataServiceResponse <TaxSummarySettingIndia>(result));
            }
            /// <summary>
            /// Populate tax summary for India.
            /// </summary>
            /// <param name="salesTransaction">The transaction.</param>
            /// <param name="taxSummarySettingIndia">Tax summary setting.</param>
            internal static void PopulateTaxSummaryForIndia(SalesTransaction salesTransaction, TaxSummarySettingIndia taxSummarySettingIndia)
            {
                if (salesTransaction == null)
                {
                    throw new ArgumentNullException("salesTransaction");
                }

                if (taxSummarySettingIndia == null)
                {
                    throw new ArgumentNullException("taxSummarySettingIndia");
                }

                if (taxSummarySettingIndia.TaxDetailsType == ReceiptTaxDetailsTypeIndia.PerTaxComponent)
                {
                    IList <TaxLineIndia> indiaTaxItems = new List <TaxLineIndia>();

                    foreach (SalesLine saleLine in salesTransaction.ActiveSalesLines)
                    {
                        foreach (TaxLine taxLine in saleLine.TaxLines)
                        {
                            TaxLineIndia taxLineIndia = taxLine as TaxLineIndia;
                            if (taxLineIndia != null)
                            {
                                indiaTaxItems.Add(taxLineIndia);
                            }
                        }
                    }

                    if (taxSummarySettingIndia.ShowTaxonTax)
                    {
                        salesTransaction.TaxLines.Clear();
                        salesTransaction.TaxLines.AddRange(BuildIndiaTaxSummaryPerComponentShowTaxonTax(indiaTaxItems));
                    }
                    else
                    {
                        salesTransaction.TaxLines.Clear();
                        salesTransaction.TaxLines.AddRange(BuildIndiaTaxSummaryPerComponentNotShowTaxonTax(indiaTaxItems));
                    }
                }
                else if (taxSummarySettingIndia.TaxDetailsType == ReceiptTaxDetailsTypeIndia.PerLine)
                {
                    salesTransaction.TaxLines.Clear();
                    salesTransaction.TaxLines.AddRange(BuildIndiaTaxSummaryPerLine(salesTransaction));
                }
            }