wiil-core-js 0.0.82
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.
- package/LICENSE +21 -0
- package/README.md +174 -0
- package/dist/core/account/index.d.ts +7 -0
- package/dist/core/account/index.js +23 -0
- package/dist/core/account/organization.schema.d.ts +118 -0
- package/dist/core/account/organization.schema.js +91 -0
- package/dist/core/account/project.schema.d.ts +121 -0
- package/dist/core/account/project.schema.js +102 -0
- package/dist/core/account/supported-business-verticals.d.ts +8 -0
- package/dist/core/account/supported-business-verticals.js +23 -0
- package/dist/core/assistant-setups/assistant-setup-result.schema.d.ts +115 -0
- package/dist/core/assistant-setups/assistant-setup-result.schema.js +17 -0
- package/dist/core/assistant-setups/base-assistant-setup.schema.d.ts +61 -0
- package/dist/core/assistant-setups/base-assistant-setup.schema.js +29 -0
- package/dist/core/assistant-setups/index.d.ts +4 -0
- package/dist/core/assistant-setups/index.js +21 -0
- package/dist/core/assistant-setups/phone-assistant-setup.schema.d.ts +63 -0
- package/dist/core/assistant-setups/phone-assistant-setup.schema.js +14 -0
- package/dist/core/assistant-setups/web-assitant-setup.schema.d.ts +56 -0
- package/dist/core/assistant-setups/web-assitant-setup.schema.js +17 -0
- package/dist/core/base.schema.d.ts +34 -0
- package/dist/core/base.schema.js +36 -0
- package/dist/core/business-mgt/appointment-additional-info.schema.d.ts +63 -0
- package/dist/core/business-mgt/appointment-additional-info.schema.js +53 -0
- package/dist/core/business-mgt/appointment-field-config.schema.d.ts +251 -0
- package/dist/core/business-mgt/appointment-field-config.schema.js +49 -0
- package/dist/core/business-mgt/bookings.shared.schema.d.ts +47 -0
- package/dist/core/business-mgt/bookings.shared.schema.js +60 -0
- package/dist/core/business-mgt/business-location.schema.d.ts +327 -0
- package/dist/core/business-mgt/business-location.schema.js +176 -0
- package/dist/core/business-mgt/customer-management/customer-group.schema.d.ts +87 -0
- package/dist/core/business-mgt/customer-management/customer-group.schema.js +53 -0
- package/dist/core/business-mgt/customer-management/customer.schema.d.ts +156 -0
- package/dist/core/business-mgt/customer-management/customer.schema.js +93 -0
- package/dist/core/business-mgt/customer-management/index.d.ts +7 -0
- package/dist/core/business-mgt/customer-management/index.js +23 -0
- package/dist/core/business-mgt/customer-management/shipping-address.schema.d.ts +112 -0
- package/dist/core/business-mgt/customer-management/shipping-address.schema.js +79 -0
- package/dist/core/business-mgt/customer.schema.d.ts +111 -0
- package/dist/core/business-mgt/customer.schema.js +73 -0
- package/dist/core/business-mgt/discount-rule.schema.d.ts +183 -0
- package/dist/core/business-mgt/discount-rule.schema.js +108 -0
- package/dist/core/business-mgt/index.d.ts +16 -0
- package/dist/core/business-mgt/index.js +38 -0
- package/dist/core/business-mgt/menu-config.schema.d.ts +165 -0
- package/dist/core/business-mgt/menu-config.schema.js +86 -0
- package/dist/core/business-mgt/menu-management/index.d.ts +11 -0
- package/dist/core/business-mgt/menu-management/index.js +27 -0
- package/dist/core/business-mgt/menu-management/menu-catalog.schema.d.ts +386 -0
- package/dist/core/business-mgt/menu-management/menu-catalog.schema.js +58 -0
- package/dist/core/business-mgt/menu-management/menu-config.schema.d.ts +301 -0
- package/dist/core/business-mgt/menu-management/menu-config.schema.js +169 -0
- package/dist/core/business-mgt/menu-management/menu-item-variant.schema.d.ts +143 -0
- package/dist/core/business-mgt/menu-management/menu-item-variant.schema.js +86 -0
- package/dist/core/business-mgt/menu-management/menu-pricing-rule.schema.d.ts +239 -0
- package/dist/core/business-mgt/menu-management/menu-pricing-rule.schema.js +117 -0
- package/dist/core/business-mgt/menu-management/menu-set.schema.d.ts +420 -0
- package/dist/core/business-mgt/menu-management/menu-set.schema.js +283 -0
- package/dist/core/business-mgt/menu-management/menu.order.schema.d.ts +654 -0
- package/dist/core/business-mgt/menu-management/menu.order.schema.js +204 -0
- package/dist/core/business-mgt/menu-management/modifier.schema.d.ts +585 -0
- package/dist/core/business-mgt/menu-management/modifier.schema.js +341 -0
- package/dist/core/business-mgt/menu.order.schema.d.ts +335 -0
- package/dist/core/business-mgt/menu.order.schema.js +149 -0
- package/dist/core/business-mgt/order.schema.d.ts +222 -0
- package/dist/core/business-mgt/order.schema.js +205 -0
- package/dist/core/business-mgt/pricing-rule.shared.schema.d.ts +56 -0
- package/dist/core/business-mgt/pricing-rule.shared.schema.js +68 -0
- package/dist/core/business-mgt/product-config.schema.d.ts +177 -0
- package/dist/core/business-mgt/product-config.schema.js +106 -0
- package/dist/core/business-mgt/product-management/index.d.ts +12 -0
- package/dist/core/business-mgt/product-management/index.js +28 -0
- package/dist/core/business-mgt/product-management/product-axis-binding.schema.d.ts +54 -0
- package/dist/core/business-mgt/product-management/product-axis-binding.schema.js +54 -0
- package/dist/core/business-mgt/product-management/product-config.schema.d.ts +1042 -0
- package/dist/core/business-mgt/product-management/product-config.schema.js +392 -0
- package/dist/core/business-mgt/product-management/product-display.schema.d.ts +548 -0
- package/dist/core/business-mgt/product-management/product-display.schema.js +80 -0
- package/dist/core/business-mgt/product-management/product-order.schema.d.ts +493 -0
- package/dist/core/business-mgt/product-management/product-order.schema.js +158 -0
- package/dist/core/business-mgt/product-management/product-pricing-rule.schema.d.ts +167 -0
- package/dist/core/business-mgt/product-management/product-pricing-rule.schema.js +68 -0
- package/dist/core/business-mgt/product-management/product-set.schema.d.ts +488 -0
- package/dist/core/business-mgt/product-management/product-set.schema.js +273 -0
- package/dist/core/business-mgt/product-management/product-variant-axis.schema.d.ts +156 -0
- package/dist/core/business-mgt/product-management/product-variant-axis.schema.js +98 -0
- package/dist/core/business-mgt/product-management/product-variant.schema.d.ts +219 -0
- package/dist/core/business-mgt/product-management/product-variant.schema.js +130 -0
- package/dist/core/business-mgt/product-order.schema.d.ts +326 -0
- package/dist/core/business-mgt/product-order.schema.js +153 -0
- package/dist/core/business-mgt/property-config.schema.d.ts +621 -0
- package/dist/core/business-mgt/property-config.schema.js +224 -0
- package/dist/core/business-mgt/property-inquiry.schema.d.ts +222 -0
- package/dist/core/business-mgt/property-inquiry.schema.js +112 -0
- package/dist/core/business-mgt/property-management/index.d.ts +6 -0
- package/dist/core/business-mgt/property-management/index.js +22 -0
- package/dist/core/business-mgt/property-management/property-config.schema.d.ts +1306 -0
- package/dist/core/business-mgt/property-management/property-config.schema.js +367 -0
- package/dist/core/business-mgt/property-management/property-inquiry.schema.d.ts +254 -0
- package/dist/core/business-mgt/property-management/property-inquiry.schema.js +131 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/index.d.ts +3 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/index.js +19 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-rental-assignment.schema.d.ts +139 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-rental-assignment.schema.js +90 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-room-assignment.schema.d.ts +104 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-room-assignment.schema.js +70 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-table-assignment.schema.d.ts +104 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-table-assignment.schema.js +72 -0
- package/dist/core/business-mgt/reservation-mgt/index.d.ts +14 -0
- package/dist/core/business-mgt/reservation-mgt/index.js +31 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-floor-plan-definition.schema.d.ts +180 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-floor-plan-definition.schema.js +75 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-maintenance-block.schema.d.ts +91 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-maintenance-block.schema.js +57 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-rental.schema.d.ts +334 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-rental.schema.js +179 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-room.schema.d.ts +195 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-room.schema.js +106 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-section.schema.d.ts +402 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-section.schema.js +198 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-settings.schema.d.ts +229 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-settings.schema.js +127 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-slot-query.schema.d.ts +382 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-slot-query.schema.js +322 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-table-layout.schema.d.ts +123 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-table-layout.schema.js +83 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-table.schema.d.ts +167 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-table.schema.js +84 -0
- package/dist/core/business-mgt/reservation-mgt/reservation.schema.d.ts +0 -0
- package/dist/core/business-mgt/reservation-mgt/reservation.schema.js +153 -0
- package/dist/core/business-mgt/reservation-mgt/resource/index.d.ts +4 -0
- package/dist/core/business-mgt/reservation-mgt/resource/index.js +20 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-category.schema.d.ts +157 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-category.schema.js +76 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-instance.schema.d.ts +137 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-instance.schema.js +94 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource.schema.d.ts +713 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource.schema.js +363 -0
- package/dist/core/business-mgt/reservation-mgt/resource/resource-versioning.schema.d.ts +151 -0
- package/dist/core/business-mgt/reservation-mgt/resource/resource-versioning.schema.js +147 -0
- package/dist/core/business-mgt/reservation-resource.schema.d.ts +154 -0
- package/dist/core/business-mgt/reservation-resource.schema.js +100 -0
- package/dist/core/business-mgt/reservation.schema.d.ts +119 -0
- package/dist/core/business-mgt/reservation.schema.js +89 -0
- package/dist/core/business-mgt/service-appointment.schema.d.ts +105 -0
- package/dist/core/business-mgt/service-appointment.schema.js +69 -0
- package/dist/core/business-mgt/service-config.schema.d.ts +453 -0
- package/dist/core/business-mgt/service-config.schema.js +102 -0
- package/dist/core/business-mgt/service-management/appointment-additional-info.schema.d.ts +110 -0
- package/dist/core/business-mgt/service-management/appointment-additional-info.schema.js +78 -0
- package/dist/core/business-mgt/service-management/appointment-field-config.schema.d.ts +304 -0
- package/dist/core/business-mgt/service-management/appointment-field-config.schema.js +75 -0
- package/dist/core/business-mgt/service-management/business-service-config.schema.d.ts +1226 -0
- package/dist/core/business-mgt/service-management/business-service-config.schema.js +317 -0
- package/dist/core/business-mgt/service-management/index.d.ts +13 -0
- package/dist/core/business-mgt/service-management/index.js +29 -0
- package/dist/core/business-mgt/service-management/service-appointment.schema.d.ts +531 -0
- package/dist/core/business-mgt/service-management/service-appointment.schema.js +116 -0
- package/dist/core/business-mgt/service-management/service-person.schema.d.ts +122 -0
- package/dist/core/business-mgt/service-management/service-person.schema.js +66 -0
- package/dist/core/business-mgt/service-management/service-pricing-rule.schema.d.ts +221 -0
- package/dist/core/business-mgt/service-management/service-pricing-rule.schema.js +118 -0
- package/dist/core/business-mgt/service-management/service-provider.schema.d.ts +90 -0
- package/dist/core/business-mgt/service-management/service-provider.schema.js +54 -0
- package/dist/core/business-mgt/service-management/service-slot-query.schema.d.ts +90 -0
- package/dist/core/business-mgt/service-management/service-slot-query.schema.js +113 -0
- package/dist/core/business-mgt/service-management/service-time-off.schema.d.ts +121 -0
- package/dist/core/business-mgt/service-management/service-time-off.schema.js +95 -0
- package/dist/core/business-mgt/service-person.schema.d.ts +43 -0
- package/dist/core/business-mgt/service-person.schema.js +38 -0
- package/dist/core/business-mgt/tax-rule.schema.d.ts +161 -0
- package/dist/core/business-mgt/tax-rule.schema.js +90 -0
- package/dist/core/conversation/conversation-config.schema.d.ts +644 -0
- package/dist/core/conversation/conversation-config.schema.js +351 -0
- package/dist/core/conversation/conversation-message.schema.d.ts +307 -0
- package/dist/core/conversation/conversation-message.schema.js +275 -0
- package/dist/core/conversation/index.d.ts +12 -0
- package/dist/core/conversation/index.js +28 -0
- package/dist/core/conversation/outbound-call.schema.d.ts +209 -0
- package/dist/core/conversation/outbound-call.schema.js +116 -0
- package/dist/core/conversation/outbound-email.schema.d.ts +338 -0
- package/dist/core/conversation/outbound-email.schema.js +150 -0
- package/dist/core/conversation/outbound-sms.schema.d.ts +163 -0
- package/dist/core/conversation/outbound-sms.schema.js +85 -0
- package/dist/core/conversation/outbound-template.schema.d.ts +375 -0
- package/dist/core/conversation/outbound-template.schema.js +160 -0
- package/dist/core/conversation/translation-config.schema.d.ts +92 -0
- package/dist/core/conversation/translation-config.schema.js +88 -0
- package/dist/core/conversation/translation-conversation.schema.d.ts +469 -0
- package/dist/core/conversation/translation-conversation.schema.js +175 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.js +30 -0
- package/dist/core/service-configuration/agent-config.schema.d.ts +236 -0
- package/dist/core/service-configuration/agent-config.schema.js +152 -0
- package/dist/core/service-configuration/base-agent-setup.d.ts +147 -0
- package/dist/core/service-configuration/base-agent-setup.js +123 -0
- package/dist/core/service-configuration/call-transfer-config.schema.d.ts +60 -0
- package/dist/core/service-configuration/call-transfer-config.schema.js +53 -0
- package/dist/core/service-configuration/deployment-config.schema.d.ts +522 -0
- package/dist/core/service-configuration/deployment-config.schema.js +271 -0
- package/dist/core/service-configuration/dynamic_setup/base-agent-setup.d.ts +130 -0
- package/dist/core/service-configuration/dynamic_setup/base-agent-setup.js +110 -0
- package/dist/core/service-configuration/dynamic_setup/index.d.ts +10 -0
- package/dist/core/service-configuration/dynamic_setup/index.js +26 -0
- package/dist/core/service-configuration/dynamic_setup/phone-agent-setup.d.ts +111 -0
- package/dist/core/service-configuration/dynamic_setup/phone-agent-setup.js +56 -0
- package/dist/core/service-configuration/dynamic_setup/web-agent-setup.d.ts +113 -0
- package/dist/core/service-configuration/dynamic_setup/web-agent-setup.js +55 -0
- package/dist/core/service-configuration/index.d.ts +17 -0
- package/dist/core/service-configuration/index.js +33 -0
- package/dist/core/service-configuration/instruction-config.schema.d.ts +183 -0
- package/dist/core/service-configuration/instruction-config.schema.js +139 -0
- package/dist/core/service-configuration/interaction-channels.schema.d.ts +469 -0
- package/dist/core/service-configuration/interaction-channels.schema.js +390 -0
- package/dist/core/service-configuration/knowledge.schema.d.ts +107 -0
- package/dist/core/service-configuration/knowledge.schema.js +106 -0
- package/dist/core/service-configuration/phone-config.schema.d.ts +206 -0
- package/dist/core/service-configuration/phone-config.schema.js +121 -0
- package/dist/core/service-configuration/phone-number.schema.d.ts +236 -0
- package/dist/core/service-configuration/phone-number.schema.js +211 -0
- package/dist/core/service-configuration/provisioning-config.d.ts +429 -0
- package/dist/core/service-configuration/provisioning-config.js +307 -0
- package/dist/core/service-configuration/support-llm.d.ts +95 -0
- package/dist/core/service-configuration/support-llm.js +76 -0
- package/dist/core/service-configuration/voice-language.schema.d.ts +200 -0
- package/dist/core/service-configuration/voice-language.schema.js +166 -0
- package/dist/core/type-definitions/account-definitions.d.ts +82 -0
- package/dist/core/type-definitions/account-definitions.js +88 -0
- package/dist/core/type-definitions/business-definitions.d.ts +394 -0
- package/dist/core/type-definitions/business-definitions.js +447 -0
- package/dist/core/type-definitions/conversation.type.definition.d.ts +223 -0
- package/dist/core/type-definitions/conversation.type.definition.js +236 -0
- package/dist/core/type-definitions/display-order.d.ts +154 -0
- package/dist/core/type-definitions/display-order.js +154 -0
- package/dist/core/type-definitions/dynamic-fields/field-definition.schema.d.ts +165 -0
- package/dist/core/type-definitions/dynamic-fields/field-definition.schema.js +97 -0
- package/dist/core/type-definitions/dynamic-fields/field-types.d.ts +49 -0
- package/dist/core/type-definitions/dynamic-fields/field-types.js +104 -0
- package/dist/core/type-definitions/dynamic-fields/index.d.ts +9 -0
- package/dist/core/type-definitions/dynamic-fields/index.js +25 -0
- package/dist/core/type-definitions/index.d.ts +10 -0
- package/dist/core/type-definitions/index.js +26 -0
- package/dist/core/type-definitions/knowledge-definitions.d.ts +30 -0
- package/dist/core/type-definitions/knowledge-definitions.js +37 -0
- package/dist/core/type-definitions/service-config.definitions.d.ts +112 -0
- package/dist/core/type-definitions/service-config.definitions.js +135 -0
- package/dist/core/validators/channel-validation.d.ts +19 -0
- package/dist/core/validators/channel-validation.js +40 -0
- package/dist/core/validators/index.d.ts +5 -0
- package/dist/core/validators/index.js +21 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +24 -0
- package/dist/request/index.d.ts +5 -0
- package/dist/request/index.js +21 -0
- package/dist/request/models/index.d.ts +6 -0
- package/dist/request/models/index.js +22 -0
- package/dist/request/models/paginated-quest.schema.d.ts +33 -0
- package/dist/request/models/paginated-quest.schema.js +35 -0
- package/dist/request/models/paginated-result.schema.d.ts +124 -0
- package/dist/request/models/paginated-result.schema.js +94 -0
- package/package.json +43 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdateMenuItemVariantSchema = exports.CreateMenuItemVariantSchema = exports.MenuItemVariantSchema = exports.MenuItemVariantChannelMappingSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const base_schema_1 = require("../../base.schema");
|
|
6
|
+
/**
|
|
7
|
+
* @fileoverview Menu item variant schema definitions for business management.
|
|
8
|
+
* @module business-mgt/menu-item-variant
|
|
9
|
+
*
|
|
10
|
+
* Includes menu item variants for different sizes/options of the same
|
|
11
|
+
* menu item (e.g., Small, Medium, Large).
|
|
12
|
+
*/
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// CHANNEL MAPPING SCHEMAS
|
|
15
|
+
// ============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Menu item variant channel mapping schema.
|
|
18
|
+
* Maps menu item variants to external platform identifiers.
|
|
19
|
+
*
|
|
20
|
+
* @typedef {Object} MenuItemVariantChannelMapping
|
|
21
|
+
* @property {string} channelId - Channel identifier (e.g., doordash, uber-eats)
|
|
22
|
+
* @property {string} externalVariantId - External variant ID for synchronization
|
|
23
|
+
* @property {string} [externalMenuItemId] - Optional external parent menu item ID
|
|
24
|
+
*/
|
|
25
|
+
exports.MenuItemVariantChannelMappingSchema = zod_1.z.object({
|
|
26
|
+
channelId: zod_1.z.string().describe("Channel ID (e.g., doordash, uber-eats)"),
|
|
27
|
+
externalVariantId: zod_1.z.string().describe("External variant ID for this specific channel"),
|
|
28
|
+
externalMenuItemId: zod_1.z.string().nullable().optional().describe("Optional external parent menu item ID in this channel"),
|
|
29
|
+
}).describe("Per-channel external menu variant ID mapping");
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// MENU ITEM VARIANT SCHEMA
|
|
32
|
+
// ============================================================================
|
|
33
|
+
/**
|
|
34
|
+
* Menu item variant schema.
|
|
35
|
+
* Different sizes/options for the same menu item.
|
|
36
|
+
*
|
|
37
|
+
* @typedef {Object} MenuItemVariant
|
|
38
|
+
* @property {string} menuItemId - Parent menu item ID
|
|
39
|
+
* @property {string} name - Variant name (e.g., Small, Medium, Large)
|
|
40
|
+
* @property {string} [description] - Variant description
|
|
41
|
+
* @property {number} price - Variant price
|
|
42
|
+
* @property {boolean} isAvailable - Whether variant is currently available
|
|
43
|
+
* @property {boolean} isActive - Whether variant is active in menu
|
|
44
|
+
* @property {boolean} isDefault - Whether this is the default variant
|
|
45
|
+
* @property {MenuItemVariantChannelMapping[]} [variantChannelMappings] - Per-channel mappings
|
|
46
|
+
* @property {number} [orderCount] - Total orders for this variant (read-only)
|
|
47
|
+
* @property {number} [recentOrderCount] - Orders in last 30 days (read-only)
|
|
48
|
+
* @property {number} [lastOrderedAt] - Unix timestamp of last order (read-only)
|
|
49
|
+
*/
|
|
50
|
+
exports.MenuItemVariantSchema = base_schema_1.BaseModelSchema.safeExtend({
|
|
51
|
+
menuItemId: zod_1.z.string().describe("Parent menu item ID this variant belongs to"),
|
|
52
|
+
name: zod_1.z.string().min(1, "Variant name is required").describe("Variant name (e.g., Small, Medium, Large, Regular, Family Size)"),
|
|
53
|
+
description: zod_1.z.string().nullable().optional().describe("Variant description with additional details"),
|
|
54
|
+
price: zod_1.z.number().nonnegative().describe("Variant price in the account's currency"),
|
|
55
|
+
isAvailable: zod_1.z.boolean().default(true).describe("Whether variant is currently available for ordering"),
|
|
56
|
+
isActive: zod_1.z.boolean().default(true).describe("Whether variant is active in the menu catalog"),
|
|
57
|
+
isDefault: zod_1.z.boolean().default(false).describe("Whether this is the default variant for the menu item"),
|
|
58
|
+
variantChannelMappings: zod_1.z.array(exports.MenuItemVariantChannelMappingSchema).nullable().optional().describe("Per-channel variant ID mappings for external platform integrations"),
|
|
59
|
+
// Ordering analytics (View Model only - not set on create/update)
|
|
60
|
+
orderCount: zod_1.z.number().int().nonnegative().nullable().optional().describe("Total orders for this variant (all time)"),
|
|
61
|
+
recentOrderCount: zod_1.z.number().int().nonnegative().nullable().optional().describe("Orders for this variant in the last 30 days"),
|
|
62
|
+
lastOrderedAt: zod_1.z.number().int().positive().nullable().optional().describe("Unix timestamp of the last order for this variant"),
|
|
63
|
+
});
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// CREATE/UPDATE SCHEMAS
|
|
66
|
+
// ============================================================================
|
|
67
|
+
/**
|
|
68
|
+
* Schema for creating a new menu item variant.
|
|
69
|
+
* Omits auto-generated fields.
|
|
70
|
+
*/
|
|
71
|
+
exports.CreateMenuItemVariantSchema = exports.MenuItemVariantSchema.omit({
|
|
72
|
+
id: true,
|
|
73
|
+
createdAt: true,
|
|
74
|
+
updatedAt: true,
|
|
75
|
+
// Omit analytics fields (view model only)
|
|
76
|
+
orderCount: true,
|
|
77
|
+
recentOrderCount: true,
|
|
78
|
+
lastOrderedAt: true,
|
|
79
|
+
});
|
|
80
|
+
/**
|
|
81
|
+
* Schema for updating an existing menu item variant.
|
|
82
|
+
* All fields are optional except id.
|
|
83
|
+
*/
|
|
84
|
+
exports.UpdateMenuItemVariantSchema = exports.CreateMenuItemVariantSchema.partial().safeExtend({
|
|
85
|
+
id: zod_1.z.string(),
|
|
86
|
+
});
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PricingChannel } from "../../type-definitions";
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview Menu pricing rule schema definitions for menu-specific discounts and promotions.
|
|
5
|
+
* @module business-mgt/menu-pricing-rule
|
|
6
|
+
*
|
|
7
|
+
* Includes pricing rules, conditions, and channel mappings for
|
|
8
|
+
* menu-specific discounts and promotional pricing.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Menu pricing rule base condition schema.
|
|
12
|
+
* Base conditions for menu pricing rules including time and amount restrictions.
|
|
13
|
+
*
|
|
14
|
+
* @typedef {Object} MenuPricingRuleBaseCondition
|
|
15
|
+
* @property {PricingChannel} channel - Target channel for this rule
|
|
16
|
+
* @property {number} [minOrderAmount] - Minimum order amount to apply rule
|
|
17
|
+
* @property {number} [maxOrderAmount] - Maximum order amount to apply rule
|
|
18
|
+
* @property {string[]} [customerGroupIds] - Target customer group IDs
|
|
19
|
+
* @property {number[]} [dayOfWeek] - Days of week (0=Sunday, 6=Saturday)
|
|
20
|
+
* @property {string} [timeStart] - Start time (HH:mm format)
|
|
21
|
+
* @property {string} [timeEnd] - End time (HH:mm format)
|
|
22
|
+
*/
|
|
23
|
+
export declare const MenuPricingRuleBaseConditionSchema: z.ZodObject<{
|
|
24
|
+
channel: z.ZodDefault<z.ZodEnum<typeof PricingChannel>>;
|
|
25
|
+
minOrderAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
26
|
+
maxOrderAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
27
|
+
customerGroupIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
28
|
+
dayOfWeek: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodNumber>>>;
|
|
29
|
+
timeStart: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
30
|
+
timeEnd: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
/**
|
|
33
|
+
* Menu pricing rule condition schema.
|
|
34
|
+
* Menu-specific conditions for pricing rule application.
|
|
35
|
+
*
|
|
36
|
+
* @typedef {Object} MenuPricingRuleCondition
|
|
37
|
+
* @property {string} menuSetId - Menu set ID this rule applies to
|
|
38
|
+
* @property {string[]} [menuItemIds] - Specific menu item IDs to target
|
|
39
|
+
* @property {string[]} [categoryIds] - Menu category IDs to target
|
|
40
|
+
*/
|
|
41
|
+
export declare const MenuPricingRuleConditionSchema: z.ZodObject<{
|
|
42
|
+
channel: z.ZodDefault<z.ZodEnum<typeof PricingChannel>>;
|
|
43
|
+
minOrderAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
44
|
+
maxOrderAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
45
|
+
customerGroupIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
46
|
+
dayOfWeek: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodNumber>>>;
|
|
47
|
+
timeStart: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
48
|
+
timeEnd: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
49
|
+
menuSetId: z.ZodString;
|
|
50
|
+
menuItemIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
51
|
+
categoryIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
52
|
+
}, z.core.$strip>;
|
|
53
|
+
/**
|
|
54
|
+
* Menu pricing rule schema.
|
|
55
|
+
* Defines pricing rules for menu-specific discounts and promotions.
|
|
56
|
+
*
|
|
57
|
+
* @typedef {Object} MenuPricingRule
|
|
58
|
+
* @property {string} [locationId] - Location ID for location-specific rules
|
|
59
|
+
* @property {string} name - Pricing rule name
|
|
60
|
+
* @property {string} [description] - Pricing rule description
|
|
61
|
+
* @property {PricingRuleChannelMapping[]} [channelMappings] - Per-channel mappings
|
|
62
|
+
* @property {string} discountId - Associated discount ID
|
|
63
|
+
* @property {string} [menuSetRevisionId] - Menu set revision ID for version-scoped rules
|
|
64
|
+
* @property {MenuPricingRuleCondition} condition - Conditions for rule application
|
|
65
|
+
* @property {number} [effectiveFrom] - Start timestamp for rule validity
|
|
66
|
+
* @property {number} [effectiveTo] - End timestamp for rule validity
|
|
67
|
+
* @property {number} displayOrder - Display order in rule list
|
|
68
|
+
* @property {boolean} isActive - Whether this rule is active
|
|
69
|
+
*/
|
|
70
|
+
export declare const MenuPricingRuleSchema: z.ZodObject<{
|
|
71
|
+
id: z.ZodString;
|
|
72
|
+
createdAt: z.ZodOptional<z.ZodNumber>;
|
|
73
|
+
updatedAt: z.ZodOptional<z.ZodNumber>;
|
|
74
|
+
locationId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
75
|
+
name: z.ZodString;
|
|
76
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
77
|
+
channelMappings: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
78
|
+
channelId: z.ZodString;
|
|
79
|
+
externalPricingRuleId: z.ZodString;
|
|
80
|
+
}, z.core.$strip>>>>;
|
|
81
|
+
discountId: z.ZodString;
|
|
82
|
+
menuSetRevisionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
83
|
+
condition: z.ZodObject<{
|
|
84
|
+
channel: z.ZodDefault<z.ZodEnum<typeof PricingChannel>>;
|
|
85
|
+
minOrderAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
86
|
+
maxOrderAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
87
|
+
customerGroupIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
88
|
+
dayOfWeek: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodNumber>>>;
|
|
89
|
+
timeStart: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
90
|
+
timeEnd: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
91
|
+
menuSetId: z.ZodString;
|
|
92
|
+
menuItemIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
93
|
+
categoryIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
94
|
+
}, z.core.$strip>;
|
|
95
|
+
effectiveFrom: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
96
|
+
effectiveTo: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
97
|
+
displayOrder: z.ZodDefault<z.ZodNumber>;
|
|
98
|
+
isActive: z.ZodDefault<z.ZodBoolean>;
|
|
99
|
+
}, z.core.$strip>;
|
|
100
|
+
/**
|
|
101
|
+
* Schema for creating a new menu pricing rule.
|
|
102
|
+
* Omits auto-generated fields.
|
|
103
|
+
*/
|
|
104
|
+
export declare const CreateMenuPricingRuleSchema: z.ZodObject<{
|
|
105
|
+
displayOrder: z.ZodDefault<z.ZodNumber>;
|
|
106
|
+
name: z.ZodString;
|
|
107
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
108
|
+
isActive: z.ZodDefault<z.ZodBoolean>;
|
|
109
|
+
locationId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
110
|
+
effectiveFrom: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
111
|
+
effectiveTo: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
112
|
+
channelMappings: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
113
|
+
channelId: z.ZodString;
|
|
114
|
+
externalPricingRuleId: z.ZodString;
|
|
115
|
+
}, z.core.$strip>>>>;
|
|
116
|
+
discountId: z.ZodString;
|
|
117
|
+
menuSetRevisionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
118
|
+
condition: z.ZodObject<{
|
|
119
|
+
channel: z.ZodDefault<z.ZodEnum<typeof PricingChannel>>;
|
|
120
|
+
minOrderAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
121
|
+
maxOrderAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
122
|
+
customerGroupIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
123
|
+
dayOfWeek: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodNumber>>>;
|
|
124
|
+
timeStart: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
125
|
+
timeEnd: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
126
|
+
menuSetId: z.ZodString;
|
|
127
|
+
menuItemIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
128
|
+
categoryIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
129
|
+
}, z.core.$strip>;
|
|
130
|
+
placement: z.ZodOptional<z.ZodObject<{
|
|
131
|
+
placementIntent: z.ZodObject<{
|
|
132
|
+
mode: z.ZodEnum<{
|
|
133
|
+
BEGINNING: "BEGINNING";
|
|
134
|
+
END: "END";
|
|
135
|
+
KEEP_CURRENT: "KEEP_CURRENT";
|
|
136
|
+
BEFORE_ITEM: "BEFORE_ITEM";
|
|
137
|
+
AFTER_ITEM: "AFTER_ITEM";
|
|
138
|
+
ABSOLUTE_INDEX: "ABSOLUTE_INDEX";
|
|
139
|
+
}>;
|
|
140
|
+
}, z.core.$strip>;
|
|
141
|
+
anchorItemId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
142
|
+
absoluteIndex: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
143
|
+
}, z.core.$strip>>;
|
|
144
|
+
}, z.core.$strip>;
|
|
145
|
+
/**
|
|
146
|
+
* Schema for updating an existing menu pricing rule.
|
|
147
|
+
* All fields optional except id (required).
|
|
148
|
+
*/
|
|
149
|
+
export declare const UpdateMenuPricingRuleSchema: z.ZodObject<{
|
|
150
|
+
displayOrder: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
151
|
+
name: z.ZodOptional<z.ZodString>;
|
|
152
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
153
|
+
isActive: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
154
|
+
locationId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
155
|
+
effectiveFrom: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
|
|
156
|
+
effectiveTo: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
|
|
157
|
+
channelMappings: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
158
|
+
channelId: z.ZodString;
|
|
159
|
+
externalPricingRuleId: z.ZodString;
|
|
160
|
+
}, z.core.$strip>>>>>;
|
|
161
|
+
discountId: z.ZodOptional<z.ZodString>;
|
|
162
|
+
menuSetRevisionId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
163
|
+
condition: z.ZodOptional<z.ZodObject<{
|
|
164
|
+
channel: z.ZodDefault<z.ZodEnum<typeof PricingChannel>>;
|
|
165
|
+
minOrderAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
166
|
+
maxOrderAmount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
167
|
+
customerGroupIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
168
|
+
dayOfWeek: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodNumber>>>;
|
|
169
|
+
timeStart: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
170
|
+
timeEnd: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
171
|
+
menuSetId: z.ZodString;
|
|
172
|
+
menuItemIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
173
|
+
categoryIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
174
|
+
}, z.core.$strip>>;
|
|
175
|
+
placement: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
176
|
+
placementIntent: z.ZodObject<{
|
|
177
|
+
mode: z.ZodEnum<{
|
|
178
|
+
BEGINNING: "BEGINNING";
|
|
179
|
+
END: "END";
|
|
180
|
+
KEEP_CURRENT: "KEEP_CURRENT";
|
|
181
|
+
BEFORE_ITEM: "BEFORE_ITEM";
|
|
182
|
+
AFTER_ITEM: "AFTER_ITEM";
|
|
183
|
+
ABSOLUTE_INDEX: "ABSOLUTE_INDEX";
|
|
184
|
+
}>;
|
|
185
|
+
}, z.core.$strip>;
|
|
186
|
+
anchorItemId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
187
|
+
absoluteIndex: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
188
|
+
}, z.core.$strip>>>;
|
|
189
|
+
id: z.ZodString;
|
|
190
|
+
}, z.core.$strip>;
|
|
191
|
+
export type MenuPricingRuleBaseCondition = z.infer<typeof MenuPricingRuleBaseConditionSchema>;
|
|
192
|
+
export type MenuPricingRuleCondition = z.infer<typeof MenuPricingRuleConditionSchema>;
|
|
193
|
+
export type MenuPricingRule = z.infer<typeof MenuPricingRuleSchema>;
|
|
194
|
+
export type CreateMenuPricingRule = z.infer<typeof CreateMenuPricingRuleSchema>;
|
|
195
|
+
export type UpdateMenuPricingRule = z.infer<typeof UpdateMenuPricingRuleSchema>;
|
|
196
|
+
/**
|
|
197
|
+
* Menu pricing rule filter options.
|
|
198
|
+
* @interface MenuPricingRuleFilters
|
|
199
|
+
*/
|
|
200
|
+
export interface MenuPricingRuleFilters {
|
|
201
|
+
/** Text search across name/description */
|
|
202
|
+
search?: string;
|
|
203
|
+
/** Filter by location ID */
|
|
204
|
+
locationId?: string;
|
|
205
|
+
/** Filter by pricing channel */
|
|
206
|
+
channel?: PricingChannel;
|
|
207
|
+
/** Filter by menu set ID */
|
|
208
|
+
menuSetId?: string;
|
|
209
|
+
/** Filter by discount ID */
|
|
210
|
+
discountId?: string;
|
|
211
|
+
/** Filter by active status */
|
|
212
|
+
isActive?: boolean;
|
|
213
|
+
/** Filter by effective timestamp */
|
|
214
|
+
effectiveAt?: number;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Menu pricing rule sorting options.
|
|
218
|
+
* @interface MenuPricingRuleSorting
|
|
219
|
+
*/
|
|
220
|
+
export interface MenuPricingRuleSorting {
|
|
221
|
+
/** Field to sort by */
|
|
222
|
+
field: "name" | "createdAt" | "displayOrder";
|
|
223
|
+
/** Sort direction */
|
|
224
|
+
direction: "asc" | "desc";
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Menu pricing rule query options.
|
|
228
|
+
* @interface MenuPricingRuleQueryOptions
|
|
229
|
+
*/
|
|
230
|
+
export interface MenuPricingRuleQueryOptions {
|
|
231
|
+
/** Page number (1-indexed) */
|
|
232
|
+
page: number;
|
|
233
|
+
/** Items per page */
|
|
234
|
+
pageSize: number;
|
|
235
|
+
/** Optional filters */
|
|
236
|
+
filters?: MenuPricingRuleFilters;
|
|
237
|
+
/** Optional sorting */
|
|
238
|
+
sorting?: MenuPricingRuleSorting;
|
|
239
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdateMenuPricingRuleSchema = exports.CreateMenuPricingRuleSchema = exports.MenuPricingRuleSchema = exports.MenuPricingRuleConditionSchema = exports.MenuPricingRuleBaseConditionSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const base_schema_1 = require("../../base.schema");
|
|
6
|
+
const type_definitions_1 = require("../../type-definitions");
|
|
7
|
+
const pricing_rule_shared_schema_1 = require("../pricing-rule.shared.schema");
|
|
8
|
+
/**
|
|
9
|
+
* @fileoverview Menu pricing rule schema definitions for menu-specific discounts and promotions.
|
|
10
|
+
* @module business-mgt/menu-pricing-rule
|
|
11
|
+
*
|
|
12
|
+
* Includes pricing rules, conditions, and channel mappings for
|
|
13
|
+
* menu-specific discounts and promotional pricing.
|
|
14
|
+
*/
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// CONDITION SCHEMAS
|
|
17
|
+
// ============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Menu pricing rule base condition schema.
|
|
20
|
+
* Base conditions for menu pricing rules including time and amount restrictions.
|
|
21
|
+
*
|
|
22
|
+
* @typedef {Object} MenuPricingRuleBaseCondition
|
|
23
|
+
* @property {PricingChannel} channel - Target channel for this rule
|
|
24
|
+
* @property {number} [minOrderAmount] - Minimum order amount to apply rule
|
|
25
|
+
* @property {number} [maxOrderAmount] - Maximum order amount to apply rule
|
|
26
|
+
* @property {string[]} [customerGroupIds] - Target customer group IDs
|
|
27
|
+
* @property {number[]} [dayOfWeek] - Days of week (0=Sunday, 6=Saturday)
|
|
28
|
+
* @property {string} [timeStart] - Start time (HH:mm format)
|
|
29
|
+
* @property {string} [timeEnd] - End time (HH:mm format)
|
|
30
|
+
*/
|
|
31
|
+
exports.MenuPricingRuleBaseConditionSchema = zod_1.z.object({
|
|
32
|
+
channel: zod_1.z.enum(type_definitions_1.PricingChannel).default(type_definitions_1.PricingChannel.ALL).describe("Target channel for this rule"),
|
|
33
|
+
minOrderAmount: zod_1.z.number().nonnegative().nullable().optional().describe("Minimum order amount to apply rule"),
|
|
34
|
+
maxOrderAmount: zod_1.z.number().nonnegative().nullable().optional().describe("Maximum order amount to apply rule"),
|
|
35
|
+
customerGroupIds: zod_1.z.array(zod_1.z.string()).nullable().optional().describe("Target customer group IDs"),
|
|
36
|
+
dayOfWeek: zod_1.z.array(zod_1.z.number().int().min(0).max(6)).nullable().optional().describe("Days of week (0=Sunday, 6=Saturday)"),
|
|
37
|
+
timeStart: zod_1.z.string().nullable().optional().describe("Start time (HH:mm format)"),
|
|
38
|
+
timeEnd: zod_1.z.string().nullable().optional().describe("End time (HH:mm format)"),
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* Menu pricing rule condition schema.
|
|
42
|
+
* Menu-specific conditions for pricing rule application.
|
|
43
|
+
*
|
|
44
|
+
* @typedef {Object} MenuPricingRuleCondition
|
|
45
|
+
* @property {string} menuSetId - Menu set ID this rule applies to
|
|
46
|
+
* @property {string[]} [menuItemIds] - Specific menu item IDs to target
|
|
47
|
+
* @property {string[]} [categoryIds] - Menu category IDs to target
|
|
48
|
+
*/
|
|
49
|
+
exports.MenuPricingRuleConditionSchema = exports.MenuPricingRuleBaseConditionSchema.extend({
|
|
50
|
+
menuSetId: zod_1.z.string().min(1).describe("Menu set ID this rule applies to"),
|
|
51
|
+
menuItemIds: zod_1.z.array(zod_1.z.string()).nullable().optional().describe("Specific menu item IDs to target"),
|
|
52
|
+
categoryIds: zod_1.z.array(zod_1.z.string()).nullable().optional().describe("Menu category IDs to target"),
|
|
53
|
+
});
|
|
54
|
+
// ============================================================================
|
|
55
|
+
// MENU PRICING RULE SCHEMA
|
|
56
|
+
// ============================================================================
|
|
57
|
+
/**
|
|
58
|
+
* Menu pricing rule schema.
|
|
59
|
+
* Defines pricing rules for menu-specific discounts and promotions.
|
|
60
|
+
*
|
|
61
|
+
* @typedef {Object} MenuPricingRule
|
|
62
|
+
* @property {string} [locationId] - Location ID for location-specific rules
|
|
63
|
+
* @property {string} name - Pricing rule name
|
|
64
|
+
* @property {string} [description] - Pricing rule description
|
|
65
|
+
* @property {PricingRuleChannelMapping[]} [channelMappings] - Per-channel mappings
|
|
66
|
+
* @property {string} discountId - Associated discount ID
|
|
67
|
+
* @property {string} [menuSetRevisionId] - Menu set revision ID for version-scoped rules
|
|
68
|
+
* @property {MenuPricingRuleCondition} condition - Conditions for rule application
|
|
69
|
+
* @property {number} [effectiveFrom] - Start timestamp for rule validity
|
|
70
|
+
* @property {number} [effectiveTo] - End timestamp for rule validity
|
|
71
|
+
* @property {number} displayOrder - Display order in rule list
|
|
72
|
+
* @property {boolean} isActive - Whether this rule is active
|
|
73
|
+
*/
|
|
74
|
+
exports.MenuPricingRuleSchema = base_schema_1.BaseModelSchema.safeExtend({
|
|
75
|
+
locationId: zod_1.z.string().nullable().optional().describe("Location ID for location-specific rules"),
|
|
76
|
+
name: zod_1.z.string().min(1).max(120).describe("Pricing rule name"),
|
|
77
|
+
description: zod_1.z.string().nullable().optional().describe("Pricing rule description"),
|
|
78
|
+
channelMappings: zod_1.z.array(pricing_rule_shared_schema_1.PricingRuleChannelMappingSchema).nullable().optional().describe("Per-channel pricing rule ID mappings"),
|
|
79
|
+
discountId: zod_1.z.string().min(1).describe("Associated discount ID"),
|
|
80
|
+
menuSetRevisionId: zod_1.z.string().nullable().optional().describe("Menu set revision ID for version-scoped rules"),
|
|
81
|
+
condition: exports.MenuPricingRuleConditionSchema.describe("Conditions for rule application"),
|
|
82
|
+
effectiveFrom: zod_1.z.number().int().nonnegative().nullable().optional().describe("Start timestamp for rule validity"),
|
|
83
|
+
effectiveTo: zod_1.z.number().int().nonnegative().nullable().optional().describe("End timestamp for rule validity"),
|
|
84
|
+
displayOrder: zod_1.z.number().int().nonnegative().default(0).describe("Display order in rule list"),
|
|
85
|
+
isActive: zod_1.z.boolean().default(true).describe("Whether this rule is active"),
|
|
86
|
+
}).superRefine((data, ctx) => {
|
|
87
|
+
if (data.effectiveFrom !== undefined && data.effectiveFrom !== null &&
|
|
88
|
+
data.effectiveTo !== undefined && data.effectiveTo !== null &&
|
|
89
|
+
data.effectiveTo < data.effectiveFrom) {
|
|
90
|
+
ctx.addIssue({
|
|
91
|
+
code: "custom",
|
|
92
|
+
path: ["effectiveTo"],
|
|
93
|
+
message: "effectiveTo must be greater than or equal to effectiveFrom",
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// CREATE/UPDATE SCHEMAS
|
|
99
|
+
// ============================================================================
|
|
100
|
+
/**
|
|
101
|
+
* Schema for creating a new menu pricing rule.
|
|
102
|
+
* Omits auto-generated fields.
|
|
103
|
+
*/
|
|
104
|
+
exports.CreateMenuPricingRuleSchema = exports.MenuPricingRuleSchema.omit({
|
|
105
|
+
id: true,
|
|
106
|
+
createdAt: true,
|
|
107
|
+
updatedAt: true,
|
|
108
|
+
}).extend({
|
|
109
|
+
placement: type_definitions_1.CreateDisplayOrderPlacementSchema.optional().describe("Placement for display ordering"),
|
|
110
|
+
});
|
|
111
|
+
/**
|
|
112
|
+
* Schema for updating an existing menu pricing rule.
|
|
113
|
+
* All fields optional except id (required).
|
|
114
|
+
*/
|
|
115
|
+
exports.UpdateMenuPricingRuleSchema = exports.CreateMenuPricingRuleSchema.partial().extend({
|
|
116
|
+
id: zod_1.z.string(),
|
|
117
|
+
});
|