@cmssy/ai-tools 0.88.0 → 0.90.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/index.d.ts +9 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +8 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/registry.d.ts.map +1 -1
  6. package/dist/registry.js +14 -0
  7. package/dist/registry.js.map +1 -1
  8. package/dist/schemas.d.ts +11 -0
  9. package/dist/schemas.d.ts.map +1 -1
  10. package/dist/schemas.js +18 -1
  11. package/dist/schemas.js.map +1 -1
  12. package/dist/tools/create-price-list.tool.d.ts +1 -0
  13. package/dist/tools/create-price-list.tool.d.ts.map +1 -1
  14. package/dist/tools/create-price-list.tool.js +4 -3
  15. package/dist/tools/create-price-list.tool.js.map +1 -1
  16. package/dist/tools/create-sales-channel.tool.d.ts +19 -0
  17. package/dist/tools/create-sales-channel.tool.d.ts.map +1 -0
  18. package/dist/tools/create-sales-channel.tool.js +22 -0
  19. package/dist/tools/create-sales-channel.tool.js.map +1 -0
  20. package/dist/tools/delete-price-list.tool.js +1 -1
  21. package/dist/tools/delete-price-list.tool.js.map +1 -1
  22. package/dist/tools/delete-sales-channel.tool.d.ts +13 -0
  23. package/dist/tools/delete-sales-channel.tool.d.ts.map +1 -0
  24. package/dist/tools/delete-sales-channel.tool.js +19 -0
  25. package/dist/tools/delete-sales-channel.tool.js.map +1 -0
  26. package/dist/tools/get-order.tool.d.ts.map +1 -1
  27. package/dist/tools/get-order.tool.js +11 -2
  28. package/dist/tools/get-order.tool.js.map +1 -1
  29. package/dist/tools/get-sales-channel.tool.d.ts +15 -0
  30. package/dist/tools/get-sales-channel.tool.d.ts.map +1 -0
  31. package/dist/tools/get-sales-channel.tool.js +21 -0
  32. package/dist/tools/get-sales-channel.tool.js.map +1 -0
  33. package/dist/tools/list-carts.tool.js +1 -1
  34. package/dist/tools/list-carts.tool.js.map +1 -1
  35. package/dist/tools/list-price-lists.tool.js +1 -1
  36. package/dist/tools/list-price-lists.tool.js.map +1 -1
  37. package/dist/tools/list-sales-channels.tool.d.ts +11 -0
  38. package/dist/tools/list-sales-channels.tool.d.ts.map +1 -0
  39. package/dist/tools/list-sales-channels.tool.js +13 -0
  40. package/dist/tools/list-sales-channels.tool.js.map +1 -0
  41. package/dist/tools/set-company-price-display-mode.tool.d.ts +13 -0
  42. package/dist/tools/set-company-price-display-mode.tool.d.ts.map +1 -0
  43. package/dist/tools/set-company-price-display-mode.tool.js +19 -0
  44. package/dist/tools/set-company-price-display-mode.tool.js.map +1 -0
  45. package/dist/tools/set-company-tax-rounding.tool.d.ts +13 -0
  46. package/dist/tools/set-company-tax-rounding.tool.d.ts.map +1 -0
  47. package/dist/tools/set-company-tax-rounding.tool.js +19 -0
  48. package/dist/tools/set-company-tax-rounding.tool.js.map +1 -0
  49. package/dist/tools/update-cart-config.tool.d.ts +4 -0
  50. package/dist/tools/update-cart-config.tool.d.ts.map +1 -1
  51. package/dist/tools/update-cart-config.tool.js +5 -1
  52. package/dist/tools/update-cart-config.tool.js.map +1 -1
  53. package/dist/tools/update-price-list.tool.d.ts +1 -0
  54. package/dist/tools/update-price-list.tool.d.ts.map +1 -1
  55. package/dist/tools/update-price-list.tool.js +14 -6
  56. package/dist/tools/update-price-list.tool.js.map +1 -1
  57. package/dist/tools/update-sales-channel.tool.d.ts +19 -0
  58. package/dist/tools/update-sales-channel.tool.d.ts.map +1 -0
  59. package/dist/tools/update-sales-channel.tool.js +33 -0
  60. package/dist/tools/update-sales-channel.tool.js.map +1 -0
  61. package/dist/types.d.ts +95 -2
  62. package/dist/types.d.ts.map +1 -1
  63. package/package.json +2 -2
@@ -0,0 +1,21 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ id: z
4
+ .string()
5
+ .min(1)
6
+ .describe("The sales channel's id (from list_sales_channels)"),
7
+ });
8
+ export const getSalesChannelTool = {
9
+ name: "get_sales_channel",
10
+ description: "Get one sales channel by id: key, name, displayMode, priceAccess, activePriceList (the dated list whose window holds now, else the base list), priceLists published to it with their windows, nextChangeAt and activeCartCount (open carts a delete would abandon). Read-only.",
11
+ inputSchema,
12
+ requiredPermissions: ["models:view"],
13
+ execute: async ({ id }, ops) => {
14
+ const channel = await ops.salesChannels.get(id);
15
+ if (!channel) {
16
+ return { found: false, id };
17
+ }
18
+ return { found: true, ...channel };
19
+ },
20
+ };
21
+ //# sourceMappingURL=get-sales-channel.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-sales-channel.tool.js","sourceRoot":"","sources":["../../src/tools/get-sales-channel.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,mDAAmD,CAAC;CACjE,CAAC,CAAC;AAOH,MAAM,CAAC,MAAM,mBAAmB,GAA0B;IACxD,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,gRAAgR;IAClR,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IACrC,CAAC;CACF,CAAC"}
@@ -7,7 +7,7 @@ const inputSchema = z.object({
7
7
  });
8
8
  export const listCartsTool = {
9
9
  name: "list_carts",
10
- description: "List shopping carts (admin view) with optional status filter and pagination. totalValue is in minor units.",
10
+ description: "List shopping carts (admin view) with optional status filter and pagination. totalValue is in minor units. channel is the key of the sales channel the cart was started on (null for none): a buyer has one active cart per channel.",
11
11
  inputSchema,
12
12
  requiredPermissions: ["carts:view"],
13
13
  execute: async ({ status, skip, limit }, ops) => {
@@ -1 +1 @@
1
- {"version":3,"file":"list-carts.tool.js","sourceRoot":"","sources":["../../src/tools/list-carts.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,4GAA4G;IAC9G,WAAW;IACX,mBAAmB,EAAE,CAAC,YAAY,CAAC;IACnC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;QAC9C,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"list-carts.tool.js","sourceRoot":"","sources":["../../src/tools/list-carts.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,sOAAsO;IACxO,WAAW;IACX,mBAAmB,EAAE,CAAC,YAAY,CAAC;IACnC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;QAC9C,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  const inputSchema = z.object({});
3
3
  export const listPriceListsTool = {
4
4
  name: "list_price_lists",
5
- description: "List the workspace's price lists (Gold, Silver, dealer tiers ...), by name: each with percentOff (percent off the catalogue, 2 decimals; negative = a markup), startsAt / endsAt and active (false outside that window: the list prices nobody and its buyers pay catalogue prices), overrideCount (fixed prices it holds) and assignedCount (companies and customers it prices). A list prices a buyer from a fixed price per product or variant where it has one, else the catalogue price minus percentOff. Read-only; entries are in get_price_list.",
5
+ description: "List the workspace's price lists (Gold, Silver, dealer tiers ...), by name: each with percentOff (percent off the catalogue, 2 decimals; negative = a markup), startsAt / endsAt and active (false outside that window: the list prices nobody and its buyers pay catalogue prices), overrideCount (fixed prices it holds), assignedCount (companies and customers it prices) and channels (the sales channels it is published to, with key and priceAccess). A list prices a buyer from a fixed price per product or variant where it has one, else the catalogue price minus percentOff. Read-only; entries are in get_price_list.",
6
6
  inputSchema,
7
7
  requiredPermissions: ["models:view"],
8
8
  execute: async (_input, ops) => {
@@ -1 +1 @@
1
- {"version":3,"file":"list-price-lists.tool.js","sourceRoot":"","sources":["../../src/tools/list-price-lists.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AASjC,MAAM,CAAC,MAAM,kBAAkB,GAA0B;IACvD,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,0hBAA0hB;IAC5hB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"list-price-lists.tool.js","sourceRoot":"","sources":["../../src/tools/list-price-lists.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AASjC,MAAM,CAAC,MAAM,kBAAkB,GAA0B;IACvD,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,smBAAsmB;IACxmB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, SalesChannelSummary } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{}, z.core.$strip>;
4
+ type Input = z.infer<typeof inputSchema>;
5
+ interface Output {
6
+ count: number;
7
+ items: SalesChannelSummary[];
8
+ }
9
+ export declare const listSalesChannelsTool: AiTool<Input, Output>;
10
+ export {};
11
+ //# sourceMappingURL=list-sales-channels.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sales-channels.tool.d.ts","sourceRoot":"","sources":["../../src/tools/list-sales-channels.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE/D,QAAA,MAAM,WAAW,gCAAe,CAAC;AAEjC,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAUvD,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({});
3
+ export const listSalesChannelsTool = {
4
+ name: "list_sales_channels",
5
+ description: "List the workspace's sales channels (retail, horeca, b2b ...), by key. A storefront sends a channel's key to be priced from the price lists published to it: per product the buyer's own or company list wins, then the channel's dated list whose window holds now, then its base (undated) list, then the catalogue. Each channel has key (what the storefront sends, fixed once created), name, displayMode (net or gross prices for visitors and customers without a company), priceAccess (PUBLIC - anyone; MEMBERS - signed-in customers, registration is open; COMPANY_MEMBERS - buyers of an approved company), activePriceList (the list pricing it now), priceLists (every list published to it), nextChangeAt (when its prices next change) and activeCartCount (open carts on it). Read-only.",
6
+ inputSchema,
7
+ requiredPermissions: ["models:view"],
8
+ execute: async (_input, ops) => {
9
+ const items = await ops.salesChannels.list();
10
+ return { count: items.length, items };
11
+ },
12
+ };
13
+ //# sourceMappingURL=list-sales-channels.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sales-channels.tool.js","sourceRoot":"","sources":["../../src/tools/list-sales-channels.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AASjC,MAAM,CAAC,MAAM,qBAAqB,GAA0B;IAC1D,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,2wBAA2wB;IAC7wB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, CompanyTaxPreferences } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ recordId: z.ZodString;
5
+ displayMode: z.ZodNullable<z.ZodEnum<{
6
+ net: "net";
7
+ gross: "gross";
8
+ }>>;
9
+ }, z.core.$strip>;
10
+ type Input = z.infer<typeof inputSchema>;
11
+ export declare const setCompanyPriceDisplayModeTool: AiTool<Input, CompanyTaxPreferences>;
12
+ export {};
13
+ //# sourceMappingURL=set-company-price-display-mode.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-company-price-display-mode.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-company-price-display-mode.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEjE,QAAA,MAAM,WAAW;;;;;;iBAaf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,8BAA8B,EAAE,MAAM,CACjD,KAAK,EACL,qBAAqB,CAStB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ recordId: z
4
+ .string()
5
+ .min(1)
6
+ .describe("The company record's id (a record of a model with the Company capability; a customer's company.id)"),
7
+ displayMode: z
8
+ .enum(["net", "gross"])
9
+ .nullable()
10
+ .describe("net or gross; null falls back to the default, net for a company buyer"),
11
+ });
12
+ export const setCompanyPriceDisplayModeTool = {
13
+ name: "set_company_price_display_mode",
14
+ description: "Set how the buyers of a company record read prices: net (VAT added on top) or gross (VAT inside); null falls back to the default, net for a company buyer. Applies to carts started after the change; existing carts and orders keep the mode they were priced in. Refused for a record that is not a company (a model with the Company capability). Returns the record id with its priceDisplayMode and taxRoundingMethod.",
15
+ inputSchema,
16
+ requiredPermissions: ["customers:manage"],
17
+ execute: async ({ recordId, displayMode }, ops) => ops.priceLists.setRecordPriceDisplayMode(recordId, displayMode),
18
+ };
19
+ //# sourceMappingURL=set-company-price-display-mode.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-company-price-display-mode.tool.js","sourceRoot":"","sources":["../../src/tools/set-company-price-display-mode.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,oGAAoG,CACrG;IACH,WAAW,EAAE,CAAC;SACX,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACtB,QAAQ,EAAE;SACV,QAAQ,CACP,uEAAuE,CACxE;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,8BAA8B,GAGvC;IACF,IAAI,EAAE,gCAAgC;IACtC,WAAW,EACT,6ZAA6Z;IAC/Z,WAAW;IACX,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,CAChD,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC;CAClE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, CompanyTaxPreferences } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ recordId: z.ZodString;
5
+ method: z.ZodNullable<z.ZodEnum<{
6
+ per_line: "per_line";
7
+ per_rate: "per_rate";
8
+ }>>;
9
+ }, z.core.$strip>;
10
+ type Input = z.infer<typeof inputSchema>;
11
+ export declare const setCompanyTaxRoundingTool: AiTool<Input, CompanyTaxPreferences>;
12
+ export {};
13
+ //# sourceMappingURL=set-company-tax-rounding.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-company-tax-rounding.tool.d.ts","sourceRoot":"","sources":["../../src/tools/set-company-tax-rounding.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEjE,QAAA,MAAM,WAAW;;;;;;iBAaf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAQ1E,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ recordId: z
4
+ .string()
5
+ .min(1)
6
+ .describe("The company record's id (a record of a model with the Company capability; a customer's company.id)"),
7
+ method: z
8
+ .enum(["per_line", "per_rate"])
9
+ .nullable()
10
+ .describe("per_line rounds VAT on each line, per_rate once per rate; null falls back to the workspace's companyTaxRounding"),
11
+ });
12
+ export const setCompanyTaxRoundingTool = {
13
+ name: "set_company_tax_rounding",
14
+ description: "Set how VAT is rounded for the net-price buyers of a company record: per_line or per_rate; null falls back to the workspace's companyTaxRounding (update_cart_config). Gross-price buyers and consumers are always rounded per_line. Applies to carts started after the change; existing carts and orders keep the method they were priced with. Refused for a record that is not a company (a model with the Company capability). Returns the record id with its priceDisplayMode and taxRoundingMethod.",
15
+ inputSchema,
16
+ requiredPermissions: ["customers:manage"],
17
+ execute: async ({ recordId, method }, ops) => ops.priceLists.setRecordTaxRoundingMethod(recordId, method),
18
+ };
19
+ //# sourceMappingURL=set-company-tax-rounding.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-company-tax-rounding.tool.js","sourceRoot":"","sources":["../../src/tools/set-company-tax-rounding.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,oGAAoG,CACrG;IACH,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SAC9B,QAAQ,EAAE;SACV,QAAQ,CACP,iHAAiH,CAClH;CACJ,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,yBAAyB,GAAyC;IAC7E,IAAI,EAAE,0BAA0B;IAChC,WAAW,EACT,2eAA2e;IAC7e,WAAW;IACX,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,CAC3C,GAAG,CAAC,UAAU,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC9D,CAAC"}
@@ -56,6 +56,10 @@ declare const inputSchema: z.ZodObject<{
56
56
  enableSavedCarts: z.ZodOptional<z.ZodBoolean>;
57
57
  enableQuoteRequests: z.ZodOptional<z.ZodBoolean>;
58
58
  autoCloseOrders: z.ZodOptional<z.ZodBoolean>;
59
+ companyTaxRounding: z.ZodOptional<z.ZodEnum<{
60
+ per_line: "per_line";
61
+ per_rate: "per_rate";
62
+ }>>;
59
63
  returnWindowDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
60
64
  }, z.core.$strict>;
61
65
  type Input = z.infer<typeof inputSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"update-cart-config.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-cart-config.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;AAO3D,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAgFN,CAAC;AAEZ,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CASvD,CAAC"}
1
+ {"version":3,"file":"update-cart-config.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-cart-config.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;AAO3D,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsFN,CAAC;AAEZ,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CASvD,CAAC"}
@@ -60,6 +60,10 @@ const inputSchema = z
60
60
  .boolean()
61
61
  .optional()
62
62
  .describe("Close an order once it is paid and fulfilled, reopen it when that stops being true (default on)"),
63
+ companyTaxRounding: z
64
+ .enum(["per_line", "per_rate"])
65
+ .optional()
66
+ .describe("How VAT is rounded for company buyers who read net prices: per_line (default) rounds each line, per_rate rounds once per rate. A company can override it with set_company_tax_rounding; consumers are always per_line"),
63
67
  returnWindowDays: z
64
68
  .number()
65
69
  .int()
@@ -72,7 +76,7 @@ const inputSchema = z
72
76
  .strict();
73
77
  export const updateCartConfigTool = {
74
78
  name: "update_cart_config",
75
- description: "Configure the workspace's commerce settings: currency, whether prices include tax, tax rates, shipping methods, custom order fields, stock thresholds, cart limits, session lifetimes and the B2B toggles. Only provided fields change; arrays replace the whole list. Which models the store sells is not set here: a model is sellable when its product capability is enabled (update_model, product.enabled).",
79
+ description: "Configure the workspace's commerce settings: currency, whether prices include tax, tax rates, shipping methods, custom order fields, stock thresholds, cart limits, session lifetimes and the B2B toggles. Only provided fields change; arrays replace the whole list. companyTaxRounding is the workspace's VAT rounding for company buyers who read net prices (a company can override it with set_company_tax_rounding); consumers are always rounded per_line. Which models the store sells is not set here: a model is sellable when its product capability is enabled (update_model, product.enabled).",
76
80
  inputSchema,
77
81
  requiredPermissions: ["site:config:edit"],
78
82
  execute: async (input, ops) => {
@@ -1 +1 @@
1
- {"version":3,"file":"update-cart-config.tool.js","sourceRoot":"","sources":["../../src/tools/update-cart-config.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-cart-config.tool.js","sourceRoot":"","sources":["../../src/tools/update-cart-config.tool.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import type { AiTool, PriceListSummary } from "../types.js";
3
3
  declare const inputSchema: z.ZodObject<{
4
+ channels: z.ZodOptional<z.ZodArray<z.ZodString>>;
4
5
  startsAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5
6
  endsAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
6
7
  id: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"update-price-list.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-price-list.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAO5D,QAAA,MAAM,WAAW;;;;;;iBAab,CAAC;AAEL,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAiB/D,CAAC"}
1
+ {"version":3,"file":"update-price-list.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-price-list.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQ5D,QAAA,MAAM,WAAW;;;;;;;iBAcb,CAAC;AAEL,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CA6B/D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { percentOffSchema, priceListWindowOrdered, priceListWindowSchema, } from "../schemas.js";
2
+ import { percentOffSchema, priceListChannelsSchema, priceListWindowOrdered, priceListWindowSchema, } from "../schemas.js";
3
3
  const inputSchema = z
4
4
  .object({
5
5
  id: z
@@ -9,6 +9,7 @@ const inputSchema = z
9
9
  name: z.string().trim().min(1).optional().describe("New unique name"),
10
10
  percentOff: percentOffSchema.optional(),
11
11
  ...priceListWindowSchema,
12
+ channels: priceListChannelsSchema.optional(),
12
13
  })
13
14
  .refine(priceListWindowOrdered, {
14
15
  message: "endsAt must be later than startsAt",
@@ -16,17 +17,24 @@ const inputSchema = z
16
17
  });
17
18
  export const updatePriceListTool = {
18
19
  name: "update_price_list",
19
- description: "Rename a price list, change its percentOff (-1000 to 99.99, 2 decimals, negative = a markup; it prices every product the list holds no fixed price for) or its startsAt / endsAt window (null clears a bound). Fixed prices are changed with set_price_list_entry / set_price_list_entries. Carts already priced from the list keep their prices until the buyer adds again; orders keep theirs.",
20
+ description: "Rename a price list, change its percentOff (-1000 to 99.99, 2 decimals, negative = a markup; it prices every product the list holds no fixed price for) its startsAt / endsAt window (null clears a bound), or the sales channels it is published to (channels replaces the whole set, [] unpublishes it from every channel, leave it out to keep). Fixed prices are changed with set_price_list_entry / set_price_list_entries. Carts already priced from the list keep their prices until the buyer adds again; orders keep theirs.",
20
21
  inputSchema,
21
22
  requiredPermissions: ["models:edit"],
22
- execute: async ({ id, name, percentOff, startsAt, endsAt }, ops) => {
23
+ execute: async ({ id, name, percentOff, startsAt, endsAt, channels }, ops) => {
23
24
  if (name === undefined &&
24
25
  percentOff === undefined &&
25
26
  startsAt === undefined &&
26
- endsAt === undefined) {
27
- throw new Error("Provide name, percentOff, startsAt or endsAt to update");
27
+ endsAt === undefined &&
28
+ channels === undefined) {
29
+ throw new Error("Provide name, percentOff, startsAt, endsAt or channels to update");
28
30
  }
29
- return ops.priceLists.update(id, { name, percentOff, startsAt, endsAt });
31
+ return ops.priceLists.update(id, {
32
+ name,
33
+ percentOff,
34
+ startsAt,
35
+ endsAt,
36
+ channels,
37
+ });
30
38
  },
31
39
  };
32
40
  //# sourceMappingURL=update-price-list.tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-price-list.tool.js","sourceRoot":"","sources":["../../src/tools/update-price-list.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACrE,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACvC,GAAG,qBAAqB;CACzB,CAAC;KACD,MAAM,CAAC,sBAAsB,EAAE;IAC9B,OAAO,EAAE,oCAAoC;IAC7C,IAAI,EAAE,CAAC,QAAQ,CAAC;CACjB,CAAC,CAAC;AAIL,MAAM,CAAC,MAAM,mBAAmB,GAAoC;IAClE,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,kYAAkY;IACpY,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;QACjE,IACE,IAAI,KAAK,SAAS;YAClB,UAAU,KAAK,SAAS;YACxB,QAAQ,KAAK,SAAS;YACtB,MAAM,KAAK,SAAS,EACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"update-price-list.tool.js","sourceRoot":"","sources":["../../src/tools/update-price-list.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACrE,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACvC,GAAG,qBAAqB;IACxB,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,MAAM,CAAC,sBAAsB,EAAE;IAC9B,OAAO,EAAE,oCAAoC;IAC7C,IAAI,EAAE,CAAC,QAAQ,CAAC;CACjB,CAAC,CAAC;AAIL,MAAM,CAAC,MAAM,mBAAmB,GAAoC;IAClE,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,ugBAAugB;IACzgB,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EACZ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EACpD,GAAG,EACH,EAAE;QACF,IACE,IAAI,KAAK,SAAS;YAClB,UAAU,KAAK,SAAS;YACxB,QAAQ,KAAK,SAAS;YACtB,MAAM,KAAK,SAAS;YACpB,QAAQ,KAAK,SAAS,EACtB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE;YAC/B,IAAI;YACJ,UAAU;YACV,QAAQ;YACR,MAAM;YACN,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, SalesChannelSummary } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ name: z.ZodOptional<z.ZodString>;
6
+ displayMode: z.ZodOptional<z.ZodEnum<{
7
+ net: "net";
8
+ gross: "gross";
9
+ }>>;
10
+ priceAccess: z.ZodOptional<z.ZodEnum<{
11
+ PUBLIC: "PUBLIC";
12
+ MEMBERS: "MEMBERS";
13
+ COMPANY_MEMBERS: "COMPANY_MEMBERS";
14
+ }>>;
15
+ }, z.core.$strip>;
16
+ type Input = z.infer<typeof inputSchema>;
17
+ export declare const updateSalesChannelTool: AiTool<Input, SalesChannelSummary>;
18
+ export {};
19
+ //# sourceMappingURL=update-sales-channel.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-sales-channel.tool.d.ts","sourceRoot":"","sources":["../../src/tools/update-sales-channel.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAM/D,QAAA,MAAM,WAAW;;;;;;;;;;;;iBAcf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAgBrE,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { SALES_CHANNEL_NAME_MAX_LEN } from "@cmssy/types";
3
+ import { channelPriceAccessSchema, priceDisplayModeSchema, } from "../schemas.js";
4
+ const inputSchema = z.object({
5
+ id: z
6
+ .string()
7
+ .min(1)
8
+ .describe("The sales channel's id (from list_sales_channels)"),
9
+ name: z
10
+ .string()
11
+ .trim()
12
+ .min(1)
13
+ .max(SALES_CHANNEL_NAME_MAX_LEN)
14
+ .optional()
15
+ .describe("New display name"),
16
+ displayMode: priceDisplayModeSchema.optional(),
17
+ priceAccess: channelPriceAccessSchema.optional(),
18
+ });
19
+ export const updateSalesChannelTool = {
20
+ name: "update_sales_channel",
21
+ description: "Rename a sales channel or change its displayMode or priceAccess. The key cannot change. Narrowing priceAccess refuses carts and checkout to buyers who no longer qualify; their carts are kept and come back if access returns. Which lists price the channel is changed on the price list (update_price_list channels).",
22
+ inputSchema,
23
+ requiredPermissions: ["models:edit"],
24
+ execute: async ({ id, name, displayMode, priceAccess }, ops) => {
25
+ if (name === undefined &&
26
+ displayMode === undefined &&
27
+ priceAccess === undefined) {
28
+ throw new Error("Provide name, displayMode or priceAccess to update");
29
+ }
30
+ return ops.salesChannels.update(id, { name, displayMode, priceAccess });
31
+ },
32
+ };
33
+ //# sourceMappingURL=update-sales-channel.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-sales-channel.tool.js","sourceRoot":"","sources":["../../src/tools/update-sales-channel.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,mDAAmD,CAAC;IAChE,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,0BAA0B,CAAC;SAC/B,QAAQ,EAAE;SACV,QAAQ,CAAC,kBAAkB,CAAC;IAC/B,WAAW,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IAC9C,WAAW,EAAE,wBAAwB,CAAC,QAAQ,EAAE;CACjD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAuC;IACxE,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,0TAA0T;IAC5T,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE;QAC7D,IACE,IAAI,KAAK,SAAS;YAClB,WAAW,KAAK,SAAS;YACzB,WAAW,KAAK,SAAS,EACzB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF,CAAC"}
package/dist/types.d.ts CHANGED
@@ -683,6 +683,19 @@ export interface OrderAppliedDiscount {
683
683
  value: number;
684
684
  amount: number;
685
685
  }
686
+ export type PriceDisplayMode = "net" | "gross";
687
+ export type TaxRoundingMethod = "per_line" | "per_rate";
688
+ export interface TaxedAmount {
689
+ net: number;
690
+ tax: number;
691
+ gross: number;
692
+ }
693
+ export interface TaxBreakdown {
694
+ subtotal: TaxedAmount;
695
+ discount: TaxedAmount;
696
+ shipping: TaxedAmount;
697
+ total: TaxedAmount;
698
+ }
686
699
  export interface OrderDetail {
687
700
  id: string;
688
701
  orderNumber: number | null;
@@ -697,7 +710,11 @@ export interface OrderDetail {
697
710
  customerId: string | null;
698
711
  companyId: string | null;
699
712
  companyName: string | null;
713
+ channel: OrderChannel | null;
714
+ priceList: OrderPriceListRef | null;
700
715
  priceListName: string | null;
716
+ priceListSource: PriceListSource | null;
717
+ pricingChain: OrderPricingChain | null;
701
718
  subtotal: number | null;
702
719
  discount: number | null;
703
720
  appliedDiscount: OrderAppliedDiscount | null;
@@ -705,6 +722,9 @@ export interface OrderDetail {
705
722
  shippingMethod: unknown;
706
723
  tax: number | null;
707
724
  total: number | null;
725
+ displayMode: PriceDisplayMode;
726
+ taxRoundingMethod: TaxRoundingMethod;
727
+ amounts: TaxBreakdown;
708
728
  currency: string | null;
709
729
  poNumber: string | null;
710
730
  customerNote: string | null;
@@ -718,6 +738,21 @@ export interface OrderDetail {
718
738
  customFields: Record<string, unknown>;
719
739
  createdAt: string | null;
720
740
  }
741
+ export interface OrderChannel {
742
+ id: string;
743
+ key: string;
744
+ name: string;
745
+ }
746
+ export interface OrderPriceListRef {
747
+ id: string;
748
+ name: string;
749
+ deleted: boolean;
750
+ }
751
+ export interface OrderPricingChain {
752
+ buyer: OrderPriceListRef | null;
753
+ channelDated: OrderPriceListRef | null;
754
+ channelBase: OrderPriceListRef | null;
755
+ }
721
756
  export interface OrderShipmentEvent {
722
757
  status: ShipmentStatusInput;
723
758
  at: string;
@@ -1121,6 +1156,7 @@ export interface CartConfigInput {
1121
1156
  enableSavedCarts?: boolean;
1122
1157
  enableQuoteRequests?: boolean;
1123
1158
  autoCloseOrders?: boolean;
1159
+ companyTaxRounding?: TaxRoundingMethod;
1124
1160
  returnWindowDays?: number | null;
1125
1161
  }
1126
1162
  export interface ProductPatch {
@@ -1187,11 +1223,12 @@ export interface CustomerPriceList {
1187
1223
  id: string;
1188
1224
  name: string;
1189
1225
  }
1190
- export type PriceListSource = "MEMBER" | "COMPANY";
1226
+ export type PriceListSource = "MEMBER" | "COMPANY" | "CHANNEL";
1227
+ export type BuyerPriceListSource = Exclude<PriceListSource, "CHANNEL">;
1191
1228
  export interface CustomerEffectivePriceList {
1192
1229
  id: string;
1193
1230
  name: string;
1194
- source: PriceListSource;
1231
+ source: BuyerPriceListSource;
1195
1232
  companyName: string | null;
1196
1233
  }
1197
1234
  export interface CustomerSummary {
@@ -1256,20 +1293,68 @@ export interface PriceListSummary {
1256
1293
  active: boolean;
1257
1294
  overrideCount: number;
1258
1295
  assignedCount: number;
1296
+ channels: PriceListChannel[];
1259
1297
  createdAt: string | null;
1260
1298
  updatedAt: string | null;
1261
1299
  }
1300
+ export interface PriceListChannel {
1301
+ id: string;
1302
+ key: string;
1303
+ name: string;
1304
+ priceAccess: ChannelPriceAccess;
1305
+ }
1262
1306
  export interface PriceListInput {
1263
1307
  name: string;
1264
1308
  percentOff?: number;
1265
1309
  startsAt?: string | null;
1266
1310
  endsAt?: string | null;
1311
+ channels?: string[];
1267
1312
  }
1268
1313
  export interface PriceListUpdateInput {
1269
1314
  name?: string;
1270
1315
  percentOff?: number;
1271
1316
  startsAt?: string | null;
1272
1317
  endsAt?: string | null;
1318
+ channels?: string[];
1319
+ }
1320
+ export type ChannelPriceAccess = "PUBLIC" | "MEMBERS" | "COMPANY_MEMBERS";
1321
+ export interface SalesChannelPriceList {
1322
+ id: string;
1323
+ name: string;
1324
+ startsAt: string | null;
1325
+ endsAt: string | null;
1326
+ active: boolean;
1327
+ }
1328
+ export interface SalesChannelSummary {
1329
+ id: string;
1330
+ key: string;
1331
+ name: string;
1332
+ displayMode: PriceDisplayMode;
1333
+ priceAccess: ChannelPriceAccess;
1334
+ activeCartCount: number;
1335
+ activePriceList: SalesChannelPriceList | null;
1336
+ priceLists: SalesChannelPriceList[];
1337
+ nextChangeAt: string | null;
1338
+ createdAt: string | null;
1339
+ updatedAt: string | null;
1340
+ }
1341
+ export interface SalesChannelInput {
1342
+ key: string;
1343
+ name: string;
1344
+ displayMode?: PriceDisplayMode;
1345
+ priceAccess?: ChannelPriceAccess;
1346
+ }
1347
+ export interface SalesChannelUpdateInput {
1348
+ name?: string;
1349
+ displayMode?: PriceDisplayMode;
1350
+ priceAccess?: ChannelPriceAccess;
1351
+ }
1352
+ export interface SalesChannelOps {
1353
+ list(): Promise<SalesChannelSummary[]>;
1354
+ get(id: string): Promise<SalesChannelSummary | null>;
1355
+ create(input: SalesChannelInput): Promise<SalesChannelSummary>;
1356
+ update(id: string, input: SalesChannelUpdateInput): Promise<SalesChannelSummary>;
1357
+ delete(id: string): Promise<boolean>;
1273
1358
  }
1274
1359
  export interface PriceListEntry {
1275
1360
  id: string;
@@ -1308,6 +1393,11 @@ export interface PriceListRecordAssignment {
1308
1393
  id: string;
1309
1394
  priceListId: string | null;
1310
1395
  }
1396
+ export interface CompanyTaxPreferences {
1397
+ id: string;
1398
+ priceDisplayMode: PriceDisplayMode | null;
1399
+ taxRoundingMethod: TaxRoundingMethod | null;
1400
+ }
1311
1401
  export interface PriceListOps {
1312
1402
  list(): Promise<PriceListSummary[]>;
1313
1403
  get(id: string): Promise<PriceListSummary | null>;
@@ -1319,6 +1409,8 @@ export interface PriceListOps {
1319
1409
  setEntries(priceListId: string, entries: PriceListEntryInput[]): Promise<number>;
1320
1410
  removeEntries(priceListId: string, keys: PriceListEntryKey[]): Promise<number>;
1321
1411
  setRecordPriceList(recordId: string, priceListId: string | null): Promise<PriceListRecordAssignment>;
1412
+ setRecordPriceDisplayMode(recordId: string, displayMode: PriceDisplayMode | null): Promise<CompanyTaxPreferences>;
1413
+ setRecordTaxRoundingMethod(recordId: string, method: TaxRoundingMethod | null): Promise<CompanyTaxPreferences>;
1322
1414
  }
1323
1415
  export interface WorkspaceOps {
1324
1416
  models: ModelOps;
@@ -1335,6 +1427,7 @@ export interface WorkspaceOps {
1335
1427
  roles: RoleOps;
1336
1428
  customers: CustomerOps;
1337
1429
  priceLists: PriceListOps;
1430
+ salesChannels: SalesChannelOps;
1338
1431
  }
1339
1432
  export interface AiTool<I = unknown, O = unknown> {
1340
1433
  name: string;