Sfoglia il codice sorgente

docs(core): Add StockLocationService documentation (#3959)

Guilherme Almeida 2 mesi fa
parent
commit
e0a708b56b

+ 8 - 2
docs/docs/reference/typescript-api/products-stock/product-variant-price-calculation-strategy.md

@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
 
 
 ## ProductVariantPriceCalculationStrategy
 ## ProductVariantPriceCalculationStrategy
 
 
-<GenerationInfo sourceFile="packages/core/src/config/catalog/product-variant-price-calculation-strategy.ts" sourceLine="22" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/catalog/product-variant-price-calculation-strategy.ts" sourceLine="23" packageName="@vendure/core" />
 
 
 Defines how ProductVariant are calculated based on the input price, tax zone and current request context.
 Defines how ProductVariant are calculated based on the input price, tax zone and current request context.
 
 
@@ -45,7 +45,7 @@ interface ProductVariantPriceCalculationStrategy extends InjectableStrategy {
 
 
 ## ProductVariantPriceCalculationArgs
 ## ProductVariantPriceCalculationArgs
 
 
-<GenerationInfo sourceFile="packages/core/src/config/catalog/product-variant-price-calculation-strategy.ts" sourceLine="35" packageName="@vendure/core" />
+<GenerationInfo sourceFile="packages/core/src/config/catalog/product-variant-price-calculation-strategy.ts" sourceLine="36" packageName="@vendure/core" />
 
 
 The arguments passed the `calculate` method of the configured <a href='/reference/typescript-api/products-stock/product-variant-price-calculation-strategy#productvariantpricecalculationstrategy'>ProductVariantPriceCalculationStrategy</a>.
 The arguments passed the `calculate` method of the configured <a href='/reference/typescript-api/products-stock/product-variant-price-calculation-strategy#productvariantpricecalculationstrategy'>ProductVariantPriceCalculationStrategy</a>.
 
 
@@ -54,6 +54,7 @@ The `productVariant` argument was added in v2.1.0.
 ```ts title="Signature"
 ```ts title="Signature"
 interface ProductVariantPriceCalculationArgs {
 interface ProductVariantPriceCalculationArgs {
     inputPrice: number;
     inputPrice: number;
+    productVariantPrice?: ProductVariantPrice;
     productVariant: ProductVariant;
     productVariant: ProductVariant;
     taxCategory: TaxCategory;
     taxCategory: TaxCategory;
     activeTaxZone: Zone;
     activeTaxZone: Zone;
@@ -68,6 +69,11 @@ interface ProductVariantPriceCalculationArgs {
 <MemberInfo kind="property" type={`number`}   />
 <MemberInfo kind="property" type={`number`}   />
 
 
 
 
+### productVariantPrice
+
+<MemberInfo kind="property" type={`<a href='/reference/typescript-api/entities/product-variant-price#productvariantprice'>ProductVariantPrice</a>`}   />
+
+
 ### productVariant
 ### productVariant
 
 
 <MemberInfo kind="property" type={`<a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>`}   />
 <MemberInfo kind="property" type={`<a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>`}   />

+ 1 - 1
docs/docs/reference/typescript-api/services/initializer-service.md

@@ -27,7 +27,7 @@ class InitializerService {
 
 
 ### constructor
 ### constructor
 
 
-<MemberInfo kind="method" type={`(connection: <a href='/reference/typescript-api/data-access/transactional-connection#transactionalconnection'>TransactionalConnection</a>, zoneService: <a href='/reference/typescript-api/services/zone-service#zoneservice'>ZoneService</a>, channelService: <a href='/reference/typescript-api/services/channel-service#channelservice'>ChannelService</a>, roleService: <a href='/reference/typescript-api/services/role-service#roleservice'>RoleService</a>, administratorService: <a href='/reference/typescript-api/services/administrator-service#administratorservice'>AdministratorService</a>, shippingMethodService: <a href='/reference/typescript-api/services/shipping-method-service#shippingmethodservice'>ShippingMethodService</a>, globalSettingsService: <a href='/reference/typescript-api/services/global-settings-service#globalsettingsservice'>GlobalSettingsService</a>, taxRateService: <a href='/reference/typescript-api/services/tax-rate-service#taxrateservice'>TaxRateService</a>, sellerService: <a href='/reference/typescript-api/services/seller-service#sellerservice'>SellerService</a>, eventBus: <a href='/reference/typescript-api/events/event-bus#eventbus'>EventBus</a>, stockLocationService: StockLocationService) => InitializerService`}   />
+<MemberInfo kind="method" type={`(connection: <a href='/reference/typescript-api/data-access/transactional-connection#transactionalconnection'>TransactionalConnection</a>, zoneService: <a href='/reference/typescript-api/services/zone-service#zoneservice'>ZoneService</a>, channelService: <a href='/reference/typescript-api/services/channel-service#channelservice'>ChannelService</a>, roleService: <a href='/reference/typescript-api/services/role-service#roleservice'>RoleService</a>, administratorService: <a href='/reference/typescript-api/services/administrator-service#administratorservice'>AdministratorService</a>, shippingMethodService: <a href='/reference/typescript-api/services/shipping-method-service#shippingmethodservice'>ShippingMethodService</a>, globalSettingsService: <a href='/reference/typescript-api/services/global-settings-service#globalsettingsservice'>GlobalSettingsService</a>, taxRateService: <a href='/reference/typescript-api/services/tax-rate-service#taxrateservice'>TaxRateService</a>, sellerService: <a href='/reference/typescript-api/services/seller-service#sellerservice'>SellerService</a>, eventBus: <a href='/reference/typescript-api/events/event-bus#eventbus'>EventBus</a>, stockLocationService: <a href='/reference/typescript-api/services/stock-location-service#stocklocationservice'>StockLocationService</a>) => InitializerService`}   />
 
 
 
 
 ### onModuleInit
 ### onModuleInit

+ 1 - 1
docs/docs/reference/typescript-api/services/stock-level-service.md

@@ -32,7 +32,7 @@ class StockLevelService {
 
 
 ### constructor
 ### constructor
 
 
-<MemberInfo kind="method" type={`(connection: <a href='/reference/typescript-api/data-access/transactional-connection#transactionalconnection'>TransactionalConnection</a>, stockLocationService: StockLocationService, configService: ConfigService) => StockLevelService`}   />
+<MemberInfo kind="method" type={`(connection: <a href='/reference/typescript-api/data-access/transactional-connection#transactionalconnection'>TransactionalConnection</a>, stockLocationService: <a href='/reference/typescript-api/services/stock-location-service#stocklocationservice'>StockLocationService</a>, configService: ConfigService) => StockLevelService`}   />
 
 
 
 
 ### getStockLevel
 ### getStockLevel

+ 119 - 0
docs/docs/reference/typescript-api/services/stock-location-service.md

@@ -0,0 +1,119 @@
+---
+title: "StockLocationService"
+isDefaultIndex: false
+generated: true
+---
+<!-- This file was generated from the Vendure source. Do not modify. Instead, re-run the "docs:build" script -->
+import MemberInfo from '@site/src/components/MemberInfo';
+import GenerationInfo from '@site/src/components/GenerationInfo';
+import MemberDescription from '@site/src/components/MemberDescription';
+
+
+## StockLocationService
+
+<GenerationInfo sourceFile="packages/core/src/service/services/stock-location.service.ts" sourceLine="41" packageName="@vendure/core" />
+
+Contains methods relating to <a href='/reference/typescript-api/entities/stock-location#stocklocation'>StockLocation</a> entities.
+
+```ts title="Signature"
+class StockLocationService {
+    constructor(requestContextService: RequestContextService, connection: TransactionalConnection, channelService: ChannelService, roleService: RoleService, listQueryBuilder: ListQueryBuilder, configService: ConfigService, requestContextCache: RequestContextCacheService, customFieldRelationService: CustomFieldRelationService, eventBus: EventBus)
+    initStockLocations() => ;
+    findOne(ctx: RequestContext, stockLocationId: ID) => Promise<StockLocation | undefined>;
+    findAll(ctx: RequestContext, options?: ListQueryOptions<StockLocation>, relations?: RelationPaths<StockLocation>) => Promise<PaginatedList<StockLocation>>;
+    create(ctx: RequestContext, input: CreateStockLocationInput) => Promise<StockLocation>;
+    update(ctx: RequestContext, input: UpdateStockLocationInput) => Promise<StockLocation>;
+    delete(ctx: RequestContext, input: DeleteStockLocationInput) => Promise<DeletionResponse>;
+    assignStockLocationsToChannel(ctx: RequestContext, input: AssignStockLocationsToChannelInput) => Promise<StockLocation[]>;
+    removeStockLocationsFromChannel(ctx: RequestContext, input: RemoveStockLocationsFromChannelInput) => Promise<StockLocation[]>;
+    defaultStockLocation(ctx: RequestContext) => ;
+    getAllocationLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) => ;
+    getReleaseLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) => ;
+    getSaleLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) => ;
+    getCancellationLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) => ;
+}
+```
+
+<div className="members-wrapper">
+
+### constructor
+
+<MemberInfo kind="method" type={`(requestContextService: <a href='/reference/typescript-api/request/request-context-service#requestcontextservice'>RequestContextService</a>, connection: <a href='/reference/typescript-api/data-access/transactional-connection#transactionalconnection'>TransactionalConnection</a>, channelService: <a href='/reference/typescript-api/services/channel-service#channelservice'>ChannelService</a>, roleService: <a href='/reference/typescript-api/services/role-service#roleservice'>RoleService</a>, listQueryBuilder: <a href='/reference/typescript-api/data-access/list-query-builder#listquerybuilder'>ListQueryBuilder</a>, configService: ConfigService, requestContextCache: <a href='/reference/typescript-api/cache/request-context-cache-service#requestcontextcacheservice'>RequestContextCacheService</a>, customFieldRelationService: CustomFieldRelationService, eventBus: <a href='/reference/typescript-api/events/event-bus#eventbus'>EventBus</a>) => StockLocationService`}   />
+
+
+### initStockLocations
+
+<MemberInfo kind="method" type={`() => `}   />
+
+
+### findOne
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, stockLocationId: <a href='/reference/typescript-api/common/id#id'>ID</a>) => Promise&#60;<a href='/reference/typescript-api/entities/stock-location#stocklocation'>StockLocation</a> | undefined&#62;`}   />
+
+
+### findAll
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, options?: ListQueryOptions&#60;<a href='/reference/typescript-api/entities/stock-location#stocklocation'>StockLocation</a>&#62;, relations?: RelationPaths&#60;<a href='/reference/typescript-api/entities/stock-location#stocklocation'>StockLocation</a>&#62;) => Promise&#60;<a href='/reference/typescript-api/common/paginated-list#paginatedlist'>PaginatedList</a>&#60;<a href='/reference/typescript-api/entities/stock-location#stocklocation'>StockLocation</a>&#62;&#62;`}   />
+
+
+### create
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, input: CreateStockLocationInput) => Promise&#60;<a href='/reference/typescript-api/entities/stock-location#stocklocation'>StockLocation</a>&#62;`}   />
+
+
+### update
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, input: UpdateStockLocationInput) => Promise&#60;<a href='/reference/typescript-api/entities/stock-location#stocklocation'>StockLocation</a>&#62;`}   />
+
+
+### delete
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, input: DeleteStockLocationInput) => Promise&#60;DeletionResponse&#62;`}   />
+
+Deletes a StockLocation. If `transferToLocationId` is specified in the input, all stock levels
+from the deleted location will be transferred to the target location. The last StockLocation
+cannot be deleted.
+### assignStockLocationsToChannel
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, input: AssignStockLocationsToChannelInput) => Promise&#60;<a href='/reference/typescript-api/entities/stock-location#stocklocation'>StockLocation</a>[]&#62;`}   />
+
+Assigns multiple StockLocations to the specified Channel. Requires the `UpdateStockLocation`
+permission on the target channel.
+### removeStockLocationsFromChannel
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, input: RemoveStockLocationsFromChannelInput) => Promise&#60;<a href='/reference/typescript-api/entities/stock-location#stocklocation'>StockLocation</a>[]&#62;`}   />
+
+Removes multiple StockLocations from the specified Channel. Requires the `DeleteStockLocation`
+permission on the target channel. StockLocations cannot be removed from the default channel.
+### defaultStockLocation
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>) => `}   />
+
+
+### getAllocationLocations
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, orderLine: <a href='/reference/typescript-api/entities/order-line#orderline'>OrderLine</a>, quantity: number) => `}   />
+
+Returns the locations and quantities to use for allocating stock when an OrderLine is created.
+This uses the configured <a href='/reference/typescript-api/products-stock/stock-location-strategy#stocklocationstrategy'>StockLocationStrategy</a>.
+### getReleaseLocations
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, orderLine: <a href='/reference/typescript-api/entities/order-line#orderline'>OrderLine</a>, quantity: number) => `}   />
+
+Returns the locations and quantities to use for releasing allocated stock when an OrderLine is cancelled
+or modified. This uses the configured <a href='/reference/typescript-api/products-stock/stock-location-strategy#stocklocationstrategy'>StockLocationStrategy</a>.
+### getSaleLocations
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, orderLine: <a href='/reference/typescript-api/entities/order-line#orderline'>OrderLine</a>, quantity: number) => `}   />
+
+Returns the locations and quantities to use for creating sales when an Order is fulfilled.
+This uses the configured <a href='/reference/typescript-api/products-stock/stock-location-strategy#stocklocationstrategy'>StockLocationStrategy</a>.
+### getCancellationLocations
+
+<MemberInfo kind="method" type={`(ctx: <a href='/reference/typescript-api/request/request-context#requestcontext'>RequestContext</a>, orderLine: <a href='/reference/typescript-api/entities/order-line#orderline'>OrderLine</a>, quantity: number) => `}   />
+
+Returns the locations and quantities to use for cancelling sales when an OrderLine is cancelled
+after fulfillment. This uses the configured <a href='/reference/typescript-api/products-stock/stock-location-strategy#stocklocationstrategy'>StockLocationStrategy</a>.
+
+
+</div>

+ 1 - 1
docs/docs/reference/typescript-api/services/stock-movement-service.md

@@ -44,7 +44,7 @@ class StockMovementService {
 
 
 ### constructor
 ### constructor
 
 
-<MemberInfo kind="method" type={`(connection: <a href='/reference/typescript-api/data-access/transactional-connection#transactionalconnection'>TransactionalConnection</a>, listQueryBuilder: <a href='/reference/typescript-api/data-access/list-query-builder#listquerybuilder'>ListQueryBuilder</a>, globalSettingsService: <a href='/reference/typescript-api/services/global-settings-service#globalsettingsservice'>GlobalSettingsService</a>, stockLevelService: <a href='/reference/typescript-api/services/stock-level-service#stocklevelservice'>StockLevelService</a>, eventBus: <a href='/reference/typescript-api/events/event-bus#eventbus'>EventBus</a>, stockLocationService: StockLocationService) => StockMovementService`}   />
+<MemberInfo kind="method" type={`(connection: <a href='/reference/typescript-api/data-access/transactional-connection#transactionalconnection'>TransactionalConnection</a>, listQueryBuilder: <a href='/reference/typescript-api/data-access/list-query-builder#listquerybuilder'>ListQueryBuilder</a>, globalSettingsService: <a href='/reference/typescript-api/services/global-settings-service#globalsettingsservice'>GlobalSettingsService</a>, stockLevelService: <a href='/reference/typescript-api/services/stock-level-service#stocklevelservice'>StockLevelService</a>, eventBus: <a href='/reference/typescript-api/events/event-bus#eventbus'>EventBus</a>, stockLocationService: <a href='/reference/typescript-api/services/stock-location-service#stocklocationservice'>StockLocationService</a>) => StockMovementService`}   />
 
 
 
 
 ### getStockMovementsByProductVariantId
 ### getStockMovementsByProductVariantId

+ 1 - 1
package-lock.json

@@ -52132,7 +52132,7 @@
         "@radix-ui/react-toggle": "^1.1.9",
         "@radix-ui/react-toggle": "^1.1.9",
         "@radix-ui/react-toggle-group": "^1.1.10",
         "@radix-ui/react-toggle-group": "^1.1.10",
         "@radix-ui/react-tooltip": "^1.2.7",
         "@radix-ui/react-tooltip": "^1.2.7",
-        "@swc/core": "^1.13.5",
+        "@swc/core": "1.13.5",
         "@tailwindcss/vite": "^4.1.5",
         "@tailwindcss/vite": "^4.1.5",
         "@tanstack/eslint-plugin-query": "^5.66.1",
         "@tanstack/eslint-plugin-query": "^5.66.1",
         "@tanstack/react-query": "^5.66.7",
         "@tanstack/react-query": "^5.66.7",

+ 43 - 1
packages/core/src/service/services/stock-location.service.ts

@@ -32,6 +32,12 @@ import { patchEntity } from '../helpers/utils/patch-entity';
 import { ChannelService } from './channel.service';
 import { ChannelService } from './channel.service';
 import { RoleService } from './role.service';
 import { RoleService } from './role.service';
 
 
+/**
+ * @description
+ * Contains methods relating to {@link StockLocation} entities.
+ *
+ * @docsCategory services
+ */
 @Injectable()
 @Injectable()
 @Instrument()
 @Instrument()
 export class StockLocationService {
 export class StockLocationService {
@@ -103,6 +109,12 @@ export class StockLocationService {
         return assertFound(this.findOne(ctx, updatedStockLocation.id));
         return assertFound(this.findOne(ctx, updatedStockLocation.id));
     }
     }
 
 
+    /**
+     * @description
+     * Deletes a StockLocation. If `transferToLocationId` is specified in the input, all stock levels
+     * from the deleted location will be transferred to the target location. The last StockLocation
+     * cannot be deleted.
+     */
     async delete(ctx: RequestContext, input: DeleteStockLocationInput): Promise<DeletionResponse> {
     async delete(ctx: RequestContext, input: DeleteStockLocationInput): Promise<DeletionResponse> {
         const stockLocation = await this.connection.findOneInChannel(
         const stockLocation = await this.connection.findOneInChannel(
             ctx,
             ctx,
@@ -169,6 +181,11 @@ export class StockLocationService {
         };
         };
     }
     }
 
 
+    /**
+     * @description
+     * Assigns multiple StockLocations to the specified Channel. Requires the `UpdateStockLocation`
+     * permission on the target channel.
+     */
     async assignStockLocationsToChannel(
     async assignStockLocationsToChannel(
         ctx: RequestContext,
         ctx: RequestContext,
         input: AssignStockLocationsToChannelInput,
         input: AssignStockLocationsToChannelInput,
@@ -199,6 +216,11 @@ export class StockLocationService {
         );
         );
     }
     }
 
 
+    /**
+     * @description
+     * Removes multiple StockLocations from the specified Channel. Requires the `DeleteStockLocation`
+     * permission on the target channel. StockLocations cannot be removed from the default channel.
+     */
     async removeStockLocationsFromChannel(
     async removeStockLocationsFromChannel(
         ctx: RequestContext,
         ctx: RequestContext,
         input: RemoveStockLocationsFromChannelInput,
         input: RemoveStockLocationsFromChannelInput,
@@ -228,7 +250,7 @@ export class StockLocationService {
         );
         );
     }
     }
 
 
-    getAllStockLocations(ctx: RequestContext) {
+    private getAllStockLocations(ctx: RequestContext) {
         return this.requestContextCache.get(ctx, 'StockLocationService.getAllStockLocations', () =>
         return this.requestContextCache.get(ctx, 'StockLocationService.getAllStockLocations', () =>
             this.connection.getRepository(ctx, StockLocation).find(),
             this.connection.getRepository(ctx, StockLocation).find(),
         );
         );
@@ -241,6 +263,11 @@ export class StockLocationService {
             .then(items => items[0]);
             .then(items => items[0]);
     }
     }
 
 
+    /**
+     * @description
+     * Returns the locations and quantities to use for allocating stock when an OrderLine is created.
+     * This uses the configured {@link StockLocationStrategy}.
+     */
     async getAllocationLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) {
     async getAllocationLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) {
         const { stockLocationStrategy } = this.configService.catalogOptions;
         const { stockLocationStrategy } = this.configService.catalogOptions;
         const stockLocations = await this.getAllStockLocations(ctx);
         const stockLocations = await this.getAllStockLocations(ctx);
@@ -253,6 +280,11 @@ export class StockLocationService {
         return allocationLocations;
         return allocationLocations;
     }
     }
 
 
+    /**
+     * @description
+     * Returns the locations and quantities to use for releasing allocated stock when an OrderLine is cancelled
+     * or modified. This uses the configured {@link StockLocationStrategy}.
+     */
     async getReleaseLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) {
     async getReleaseLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) {
         const { stockLocationStrategy } = this.configService.catalogOptions;
         const { stockLocationStrategy } = this.configService.catalogOptions;
         const stockLocations = await this.getAllStockLocations(ctx);
         const stockLocations = await this.getAllStockLocations(ctx);
@@ -265,6 +297,11 @@ export class StockLocationService {
         return releaseLocations;
         return releaseLocations;
     }
     }
 
 
+    /**
+     * @description
+     * Returns the locations and quantities to use for creating sales when an Order is fulfilled.
+     * This uses the configured {@link StockLocationStrategy}.
+     */
     async getSaleLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) {
     async getSaleLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) {
         const { stockLocationStrategy } = this.configService.catalogOptions;
         const { stockLocationStrategy } = this.configService.catalogOptions;
         const stockLocations = await this.getAllStockLocations(ctx);
         const stockLocations = await this.getAllStockLocations(ctx);
@@ -272,6 +309,11 @@ export class StockLocationService {
         return saleLocations;
         return saleLocations;
     }
     }
 
 
+    /**
+     * @description
+     * Returns the locations and quantities to use for cancelling sales when an OrderLine is cancelled
+     * after fulfillment. This uses the configured {@link StockLocationStrategy}.
+     */
     async getCancellationLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) {
     async getCancellationLocations(ctx: RequestContext, orderLine: OrderLine, quantity: number) {
         const { stockLocationStrategy } = this.configService.catalogOptions;
         const { stockLocationStrategy } = this.configService.catalogOptions;
         const stockLocations = await this.getAllStockLocations(ctx);
         const stockLocations = await this.getAllStockLocations(ctx);