コード例 #1
0
            /// <summary>
            /// Gets a default logistics postal address for India.
            /// </summary>
            /// <param name="request">The get warehouse address India data request.</param>
            /// <returns>Matching address.</returns>
            /// <remarks>
            /// Search address as warehouse -> site -> legal entity.
            /// </remarks>
            private SingleEntityDataServiceResponse <Address> GetWarehouseAddressIndia(GetWarehouseAddressIndiaDataRequest request)
            {
                ThrowIf.Null(request, "request");
                ThrowIf.NullOrWhiteSpace(request.WarehouseId, "request.WarehouseId");

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

                bool    found;
                bool    updateL2Cache;
                Address result = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetWarehouseAddressIndia(request.WarehouseId), out found, out updateL2Cache);

                if (!found)
                {
                    ParameterSet parameters = new ParameterSet();
                    parameters["@nv_InventLocationId"]         = request.WarehouseId;
                    parameters["@nv_InventLocationDataAreaId"] = request.RequestContext.GetChannelConfiguration().InventLocationDataAreaId;

                    using (SqlServerDatabaseContext sqlServerDatabaseContext = new SqlServerDatabaseContext(request))
                    {
                        result = sqlServerDatabaseContext.ExecuteStoredProcedure <Address>(GetWarehouseAddressIndiaName, parameters).SingleOrDefault();
                    }

                    updateL2Cache &= result != null;
                }

                if (updateL2Cache)
                {
                    level2CacheDataAccessor.PutWarehouseAddressIndia(request.WarehouseId, result);
                }

                return(new SingleEntityDataServiceResponse <Address>(result));
            }
コード例 #2
0
            /// <summary>
            /// Gets Receipt Header tax information for India.
            /// </summary>
            /// <param name="request">The get receipt header tax info India data request.</param>
            /// <returns>Receipt Header tax info.</returns>
            private SingleEntityDataServiceResponse <ReceiptHeaderTaxInfoIndia> GetReceiptHeaderTaxInfoIndia(GetReceiptHeaderTaxInfoIndiaDataRequest request)
            {
                ThrowIf.Null(request, "request");

                IndiaTaxL2CacheDataStoreAccessor level2CacheDataAccessor = this.GetIndiaTaxL2CacheDataStoreAccessor(request.RequestContext);
                bool found;
                bool updateL2Cache;
                ReceiptHeaderTaxInfoIndia result = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetReceiptHeaderTaxInfoIndia(request.QueryResultSettings.ColumnSet), out found, out updateL2Cache);

                if (!found)
                {
                    ParameterSet parameters = new ParameterSet();

                    parameters["@bi_ChannelId"] = request.RequestContext.GetPrincipal().ChannelId;

                    using (SqlServerDatabaseContext sqlServerDatabaseContext = new SqlServerDatabaseContext(request))
                    {
                        result = sqlServerDatabaseContext.ExecuteStoredProcedure <ReceiptHeaderTaxInfoIndia>(GetReceiptHeaderTaxInfoIndiaName, parameters).SingleOrDefault();
                    }

                    updateL2Cache &= result != null;
                }

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

                return(new SingleEntityDataServiceResponse <ReceiptHeaderTaxInfoIndia>(result));
            }
コード例 #3
0
            /// <summary>
            /// Gets the setting that shows whether to apply inter-state tax for India or not.
            /// </summary>
            /// <param name="request">The get apply interstate tax India data request.</param>
            /// <returns>The setting that shows whether to apply inter-state tax for India or not.</returns>
            private SingleEntityDataServiceResponse <ApplyInterStateTaxIndia> GetApplyInterstateTaxIndia(GetApplyInterstateTaxIndiaDataRequest request)
            {
                ThrowIf.Null(request, "request");

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

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

                if (!found)
                {
                    // Fetches it from database if no setting was cached.
                    // Input parameters
                    ParameterSet parameters = new ParameterSet();
                    parameters["@bi_ChannelId"] = request.RequestContext.GetPrincipal().ChannelId;

                    using (SqlServerDatabaseContext sqlServerDatabaseContext = new SqlServerDatabaseContext(request))
                    {
                        result = sqlServerDatabaseContext.ExecuteStoredProcedure <ApplyInterStateTaxIndia>(GetApplyInterStateTaxIndiaName, parameters).SingleOrDefault();
                    }

                    updateL2Cache &= result != null;
                }

                if (updateL2Cache)
                {
                    // Caches the result if it is fetched from database.
                    level2CacheDataAccessor.PutApplyInterStateTaxIndia(request.QueryResultSettings.ColumnSet, result);
                }

                return(new SingleEntityDataServiceResponse <ApplyInterStateTaxIndia>(result));
            }
コード例 #4
0
            /// <summary>
            /// Gets Receipt Header information for India.
            /// </summary>
            /// <param name="request">The get receipt header info India data request.</param>
            /// <returns>Receipt Header information.</returns>
            private SingleEntityDataServiceResponse <ReceiptHeaderInfoIndia> GetReceiptHeaderInfoIndia(GetReceiptHeaderInfoIndiaDataRequest request)
            {
                ThrowIf.Null(request, "request");

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

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

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

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

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

                    updateL2Cache &= result != null;
                }

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

                return(new SingleEntityDataServiceResponse <ReceiptHeaderInfoIndia>(result));
            }
コード例 #5
0
            /// <summary>
            /// The data service method to get tax code intervals for India.
            /// </summary>
            /// <param name="request">The data service request.</param>
            /// <returns>The data service response.</returns>
            private EntityDataServiceResponse <TaxCodeInterval> GetTaxCodeIntervalsIndia(GetTaxCodeIntervalsIndiaDataRequest request)
            {
                ThrowIf.Null(request.ItemTaxGroupId, "itemTaxGroupId");

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

                bool found;
                bool updateL2Cache;
                ReadOnlyCollection <TaxCodeInterval> result = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetTaxCodeIntervalsIndia(request.SalesTaxGroupId, request.ItemTaxGroupId, request.TransactionDate), out found, out updateL2Cache);

                if (!found)
                {
                    ParameterSet parameters = new ParameterSet();
                    parameters[DatabaseAccessor.ChannelIdVariableName] = request.RequestContext.GetPrincipal().ChannelId;
                    parameters["@nvc_SalesTaxGroup"]  = request.SalesTaxGroupId ?? string.Empty;
                    parameters["@nvc_ItemTaxGroup"]   = request.ItemTaxGroupId ?? string.Empty;
                    parameters["@dt_TransactionDate"] = request.TransactionDate.DateTime;

                    ReadOnlyCollection <TaxCodeIntervalIndia> taxCodeIntervalsIndia;
                    using (SqlServerDatabaseContext databaseContext = new SqlServerDatabaseContext(request))
                    {
                        taxCodeIntervalsIndia = databaseContext.ExecuteStoredProcedure <TaxCodeIntervalIndia>(GetTaxCodeIntervalsIndiaSprocName, parameters).Results;
                    }

                    result = taxCodeIntervalsIndia.Cast <TaxCodeInterval>().AsReadOnly();

                    updateL2Cache &= result != null &&
                                     result.Count < MaxCachedCollectionSize;
                }

                if (updateL2Cache)
                {
                    level2CacheDataAccessor.PutTaxCodeIntervalsIndia(request.SalesTaxGroupId, request.ItemTaxGroupId, request.TransactionDate, result);
                }

                return(new EntityDataServiceResponse <TaxCodeInterval>(result.AsPagedResult()));
            }
コード例 #6
0
            /// <summary>
            /// Gets inter-state tax group for India.
            /// </summary>
            /// <param name="request">The get tax regime India data request.</param>
            /// <returns>The inter-state tax group.</returns>
            private SingleEntityDataServiceResponse <string> GetTaxRegimeIndia(GetTaxRegimeIndiaDataRequest request)
            {
                ThrowIf.Null(request, "request");

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

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

                if (!found)
                {
                    // Input parameters
                    ParameterSet parameters = new ParameterSet();
                    parameters["@bi_ChannelId"] = request.RequestContext.GetPrincipal().ChannelId;

                    SalesTaxGroup group;
                    using (SqlServerDatabaseContext sqlServerDatabaseContext = new SqlServerDatabaseContext(request))
                    {
                        group = sqlServerDatabaseContext.ExecuteStoredProcedure <SalesTaxGroup>(GetTaxRegimeIndiaName, parameters).SingleOrDefault();
                    }

                    if (group != null)
                    {
                        result = group.TaxGroupName;
                    }

                    updateL2Cache &= result != null;
                }

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

                return(new SingleEntityDataServiceResponse <string>(result));
            }
コード例 #7
0
            /// <summary>
            /// Gets Tax component.
            /// </summary>
            /// <param name="request">The get tax component India data request.</param>
            /// <returns>Tax component.</returns>
            private SingleEntityDataServiceResponse <TaxComponentIndia> GetTaxComponentIndia(GetTaxComponentIndiaDataRequest request)
            {
                ThrowIf.Null(request, "request");
                ThrowIf.NullOrWhiteSpace(request.TaxCode, "request.TaxCode");

                bool found;
                bool updateL2Cache;
                IndiaTaxL2CacheDataStoreAccessor level2CacheDataAccessor = this.GetIndiaTaxL2CacheDataStoreAccessor(request.RequestContext);

                TaxComponentIndia result = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetTaxComponentIndia(request.TaxCode), out found, out updateL2Cache);

                if (!found)
                {
                    var query = new SqlPagedQuery(request.QueryResultSettings)
                    {
                        From  = TaxComponentTableIndiaViewName,
                        Where = "TAXCODE = @id AND CHANNELID = @channelId",
                    };

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

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

                    updateL2Cache &= result != null;
                }

                if (updateL2Cache)
                {
                    level2CacheDataAccessor.PutTaxComponentIndia(request.TaxCode, result);
                }

                return(new SingleEntityDataServiceResponse <TaxComponentIndia>(result));
            }