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