@open-mercato/core 0.6.7-develop.6862.1.c11a64ce0a → 0.6.7
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/.turbo/turbo-build.log +2 -2
- package/AGENTS.md +3 -3
- package/agentic/standalone-guide.md +0 -13
- package/dist/bootstrap.js +1 -16
- package/dist/bootstrap.js.map +2 -2
- package/dist/generated/entities/customer_deal_person_link/index.js +0 -2
- package/dist/generated/entities/customer_deal_person_link/index.js.map +2 -2
- package/dist/generated/entities/customer_user_invitation/index.js +0 -2
- package/dist/generated/entities/customer_user_invitation/index.js.map +2 -2
- package/dist/generated/entities/gateway_payment_operation/index.js +0 -2
- package/dist/generated/entities/gateway_payment_operation/index.js.map +2 -2
- package/dist/generated/entities/gateway_transaction/index.js +0 -2
- package/dist/generated/entities/gateway_transaction/index.js.map +2 -2
- package/dist/generated/entities/organization/index.js +0 -2
- package/dist/generated/entities/organization/index.js.map +2 -2
- package/dist/generated/entities/resources_resource/index.js +0 -2
- package/dist/generated/entities/resources_resource/index.js.map +2 -2
- package/dist/generated/entities.ids.generated.js +1 -3
- package/dist/generated/entities.ids.generated.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +0 -23
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/helpers/integration/salesFixtures.js +2 -31
- package/dist/helpers/integration/salesFixtures.js.map +2 -2
- package/dist/helpers/integration/salesUi.js +0 -5
- package/dist/helpers/integration/salesUi.js.map +2 -2
- package/dist/modules/api_keys/backend/api-keys/page.js +1 -2
- package/dist/modules/api_keys/backend/api-keys/page.js.map +2 -2
- package/dist/modules/attachments/api/route.js +10 -120
- package/dist/modules/attachments/api/route.js.map +2 -2
- package/dist/modules/attachments/data/entities.js +1 -67
- package/dist/modules/attachments/data/entities.js.map +2 -2
- package/dist/modules/attachments/di.js +1 -7
- package/dist/modules/attachments/di.js.map +2 -2
- package/dist/modules/attachments/fields/attachment.js +1 -1
- package/dist/modules/attachments/fields/attachment.js.map +2 -2
- package/dist/modules/attachments/lib/drivers/index.js.map +1 -1
- package/dist/modules/attachments/lib/drivers/localDriver.js +6 -19
- package/dist/modules/attachments/lib/drivers/localDriver.js.map +2 -2
- package/dist/modules/attachments/lib/upload-limits.js +0 -33
- package/dist/modules/attachments/lib/upload-limits.js.map +2 -2
- package/dist/modules/audit_logs/api/audit-logs/access/route.js +1 -5
- package/dist/modules/audit_logs/api/audit-logs/access/route.js.map +2 -2
- package/dist/modules/audit_logs/api/audit-logs/actions/export/route.js +1 -5
- package/dist/modules/audit_logs/api/audit-logs/actions/export/route.js.map +2 -2
- package/dist/modules/audit_logs/api/audit-logs/actions/route.js +1 -5
- package/dist/modules/audit_logs/api/audit-logs/actions/route.js.map +2 -2
- package/dist/modules/audit_logs/components/AccessLogsTable.js +1 -2
- package/dist/modules/audit_logs/components/AccessLogsTable.js.map +2 -2
- package/dist/modules/audit_logs/components/AuditLogsActions.js +1 -2
- package/dist/modules/audit_logs/components/AuditLogsActions.js.map +2 -2
- package/dist/modules/auth/api/admin/nav.js +4 -17
- package/dist/modules/auth/api/admin/nav.js.map +2 -2
- package/dist/modules/auth/api/profile/route.js +2 -8
- package/dist/modules/auth/api/profile/route.js.map +2 -2
- package/dist/modules/auth/api/users/route.js +19 -8
- package/dist/modules/auth/api/users/route.js.map +2 -2
- package/dist/modules/auth/backend/auth/profile/page.js.map +2 -2
- package/dist/modules/auth/backend/profile/change-password/page.js.map +2 -2
- package/dist/modules/auth/backend/roles/page.js +1 -2
- package/dist/modules/auth/backend/roles/page.js.map +2 -2
- package/dist/modules/auth/backend/settings/page.js +9 -14
- package/dist/modules/auth/backend/settings/page.js.map +2 -2
- package/dist/modules/auth/backend/users/page.js +1 -2
- package/dist/modules/auth/backend/users/page.js.map +2 -2
- package/dist/modules/auth/cli.js +1 -1
- package/dist/modules/auth/cli.js.map +2 -2
- package/dist/modules/auth/components/UserConsentsPanel.js +9 -9
- package/dist/modules/auth/components/UserConsentsPanel.js.map +2 -2
- package/dist/modules/auth/frontend/login.js +5 -6
- package/dist/modules/auth/frontend/login.js.map +2 -2
- package/dist/modules/auth/frontend/reset.js +2 -2
- package/dist/modules/auth/frontend/reset.js.map +2 -2
- package/dist/modules/auth/lib/backendChrome.js +29 -45
- package/dist/modules/auth/lib/backendChrome.js.map +2 -2
- package/dist/modules/auth/lib/setup-app.js +2 -17
- package/dist/modules/auth/lib/setup-app.js.map +2 -2
- package/dist/modules/auth/lib/tenantAccess.js +0 -7
- package/dist/modules/auth/lib/tenantAccess.js.map +2 -2
- package/dist/modules/auth/services/rbacService.js +44 -29
- package/dist/modules/auth/services/rbacService.js.map +2 -2
- package/dist/modules/business_rules/api/rules/route.js +4 -71
- package/dist/modules/business_rules/api/rules/route.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/page.js +1 -2
- package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
- package/dist/modules/business_rules/components/ActionBuilder.js +4 -47
- package/dist/modules/business_rules/components/ActionBuilder.js.map +3 -3
- package/dist/modules/business_rules/components/ActionRow.js +16 -106
- package/dist/modules/business_rules/components/ActionRow.js.map +2 -2
- package/dist/modules/business_rules/components/ConditionRow.js +4 -8
- package/dist/modules/business_rules/components/ConditionRow.js.map +2 -2
- package/dist/modules/business_rules/components/utils/actionValidation.js +0 -6
- package/dist/modules/business_rules/components/utils/actionValidation.js.map +2 -2
- package/dist/modules/business_rules/lib/action-executor.js +0 -148
- package/dist/modules/business_rules/lib/action-executor.js.map +2 -2
- package/dist/modules/business_rules/lib/rule-engine.js +1 -5
- package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js +5 -6
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/create/page.js +6 -7
- package/dist/modules/catalog/backend/catalog/products/create/page.js.map +2 -2
- package/dist/modules/catalog/components/PriceKindSettings.js +3 -3
- package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js +1 -2
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductCategorizeSection.js +3 -3
- package/dist/modules/catalog/components/products/ProductCategorizeSection.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductMediaManager.js +1 -1
- package/dist/modules/catalog/components/products/ProductMediaManager.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductsDataTable.js +2 -3
- package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
- package/dist/modules/catalog/components/products/VariantBuilder.js +5 -5
- package/dist/modules/catalog/components/products/VariantBuilder.js.map +2 -2
- package/dist/modules/catalog/events.js +0 -1
- package/dist/modules/catalog/events.js.map +2 -2
- package/dist/modules/catalog/widgets/injection/product-seo/widget.js +1 -1
- package/dist/modules/catalog/widgets/injection/product-seo/widget.js.map +2 -2
- package/dist/modules/communication_channels/api/post/test-seed/route.js +2 -52
- package/dist/modules/communication_channels/api/post/test-seed/route.js.map +2 -2
- package/dist/modules/communication_channels/api/post/webhook/[provider]/route.js +1 -11
- package/dist/modules/communication_channels/api/post/webhook/[provider]/route.js.map +2 -2
- package/dist/modules/communication_channels/api/post/webhooks/gmail/route.js +6 -11
- package/dist/modules/communication_channels/api/post/webhooks/gmail/route.js.map +2 -2
- package/dist/modules/communication_channels/backend/communication_channels/channels/page.js +1 -2
- package/dist/modules/communication_channels/backend/communication_channels/channels/page.js.map +2 -2
- package/dist/modules/communication_channels/backend/profile/communication-channels/page.js +3 -4
- package/dist/modules/communication_channels/backend/profile/communication-channels/page.js.map +2 -2
- package/dist/modules/communication_channels/data/enrichers.js +4 -4
- package/dist/modules/communication_channels/data/enrichers.js.map +2 -2
- package/dist/modules/communication_channels/lib/access-control.js +2 -2
- package/dist/modules/communication_channels/lib/access-control.js.map +2 -2
- package/dist/modules/configs/backend/config/system-status/page.js +1 -2
- package/dist/modules/configs/backend/config/system-status/page.js.map +2 -2
- package/dist/modules/configs/lib/upgrade-actions.js +0 -12
- package/dist/modules/configs/lib/upgrade-actions.js.map +2 -2
- package/dist/modules/currencies/backend/currencies/page.js +1 -2
- package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
- package/dist/modules/currencies/backend/exchange-rates/page.js +1 -2
- package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
- package/dist/modules/currencies/di.js +0 -4
- package/dist/modules/currencies/di.js.map +2 -2
- package/dist/modules/customer_accounts/api/admin/users/[id].js +1 -10
- package/dist/modules/customer_accounts/api/admin/users/[id].js.map +2 -2
- package/dist/modules/customer_accounts/api/admin/users-invite.js +4 -63
- package/dist/modules/customer_accounts/api/admin/users-invite.js.map +2 -2
- package/dist/modules/customer_accounts/api/invitations/accept.js +2 -1
- package/dist/modules/customer_accounts/api/invitations/accept.js.map +2 -2
- package/dist/modules/customer_accounts/api/login.js +2 -4
- package/dist/modules/customer_accounts/api/login.js.map +2 -2
- package/dist/modules/customer_accounts/api/magic-link/verify.js +2 -4
- package/dist/modules/customer_accounts/api/magic-link/verify.js.map +2 -2
- package/dist/modules/customer_accounts/api/portal/feature-check.js +4 -5
- package/dist/modules/customer_accounts/api/portal/feature-check.js.map +2 -2
- package/dist/modules/customer_accounts/api/portal/nav.js +4 -6
- package/dist/modules/customer_accounts/api/portal/nav.js.map +2 -2
- package/dist/modules/customer_accounts/api/portal/profile.js +1 -5
- package/dist/modules/customer_accounts/api/portal/profile.js.map +2 -2
- package/dist/modules/customer_accounts/api/portal/sessions-refresh.js +3 -3
- package/dist/modules/customer_accounts/api/portal/sessions-refresh.js.map +2 -2
- package/dist/modules/customer_accounts/api/portal/users-invite.js +2 -22
- package/dist/modules/customer_accounts/api/portal/users-invite.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/page.js +1 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +1 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
- package/dist/modules/customer_accounts/data/entities.js +0 -3
- package/dist/modules/customer_accounts/data/entities.js.map +2 -2
- package/dist/modules/customer_accounts/data/validators.js +0 -1
- package/dist/modules/customer_accounts/data/validators.js.map +2 -2
- package/dist/modules/customer_accounts/lib/customerAuth.js +2 -7
- package/dist/modules/customer_accounts/lib/customerAuth.js.map +2 -2
- package/dist/modules/customer_accounts/lib/customerAuthServer.js +1 -2
- package/dist/modules/customer_accounts/lib/customerAuthServer.js.map +2 -2
- package/dist/modules/customer_accounts/lib/customerEntityOwnership.js +3 -29
- package/dist/modules/customer_accounts/lib/customerEntityOwnership.js.map +2 -2
- package/dist/modules/customer_accounts/lib/customerUrl.js +10 -19
- package/dist/modules/customer_accounts/lib/customerUrl.js.map +2 -2
- package/dist/modules/customer_accounts/services/customerInvitationService.js +2 -32
- package/dist/modules/customer_accounts/services/customerInvitationService.js.map +2 -2
- package/dist/modules/customer_accounts/services/customerRbacService.js +3 -12
- package/dist/modules/customer_accounts/services/customerRbacService.js.map +2 -2
- package/dist/modules/customer_accounts/setup.js +0 -6
- package/dist/modules/customer_accounts/setup.js.map +2 -2
- package/dist/modules/customer_accounts/subscribers/autoLinkCrm.js +7 -47
- package/dist/modules/customer_accounts/subscribers/autoLinkCrm.js.map +2 -2
- package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js +2 -2
- package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js.map +2 -2
- package/dist/modules/customer_accounts/widgets/injection/portal-ai-assistant-trigger/widget.client.js +1 -1
- package/dist/modules/customer_accounts/widgets/injection/portal-ai-assistant-trigger/widget.client.js.map +2 -2
- package/dist/modules/customer_accounts/widgets/injection-table.js +1 -1
- package/dist/modules/customer_accounts/widgets/injection-table.js.map +2 -2
- package/dist/modules/customers/analytics.js +1 -4
- package/dist/modules/customers/analytics.js.map +2 -2
- package/dist/modules/customers/api/companies/[id]/route.js +4 -3
- package/dist/modules/customers/api/companies/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/people/route.js +2 -4
- package/dist/modules/customers/api/deals/[id]/people/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/route.js +3 -7
- package/dist/modules/customers/api/deals/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/deals/aggregate/route.js +4 -5
- package/dist/modules/customers/api/deals/aggregate/route.js.map +2 -2
- package/dist/modules/customers/api/deals/summary/route.js +119 -14
- package/dist/modules/customers/api/deals/summary/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js +2 -3
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js.map +2 -2
- package/dist/modules/customers/api/utils.js +18 -12
- package/dist/modules/customers/api/utils.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies/[id]/page.js +1 -2
- package/dist/modules/customers/backend/customers/companies/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies/page.js +1 -2
- package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js +5 -16
- package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/[id]/page.js +11 -18
- package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/page.js +1 -2
- package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/components/QuickDealDialog.js +3 -17
- package/dist/modules/customers/backend/customers/deals/pipeline/components/QuickDealDialog.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/page.js +1 -7
- package/dist/modules/customers/backend/customers/deals/pipeline/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people/[id]/page.js +1 -2
- package/dist/modules/customers/backend/customers/people/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people/page.js +1 -2
- package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people-v2/[id]/page.js +10 -26
- package/dist/modules/customers/backend/customers/people-v2/[id]/page.js.map +2 -2
- package/dist/modules/customers/cli.js +11 -28
- package/dist/modules/customers/cli.js.map +2 -2
- package/dist/modules/customers/commands/deals.js +10 -48
- package/dist/modules/customers/commands/deals.js.map +2 -2
- package/dist/modules/customers/commands/people.js +0 -2
- package/dist/modules/customers/commands/people.js.map +2 -2
- package/dist/modules/customers/components/CustomerTodosTable.js +1 -2
- package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
- package/dist/modules/customers/components/detail/ActiveDealCard.js +1 -2
- package/dist/modules/customers/components/detail/ActiveDealCard.js.map +2 -2
- package/dist/modules/customers/components/detail/ActivitiesDayStrip.js +3 -2
- package/dist/modules/customers/components/detail/ActivitiesDayStrip.js.map +2 -2
- package/dist/modules/customers/components/detail/CompanyDetailTabs.js +6 -26
- package/dist/modules/customers/components/detail/CompanyDetailTabs.js.map +2 -2
- package/dist/modules/customers/components/detail/CompanyKpiBar.js +5 -6
- package/dist/modules/customers/components/detail/CompanyKpiBar.js.map +2 -2
- package/dist/modules/customers/components/detail/ConfirmDealLostDialog.js +1 -1
- package/dist/modules/customers/components/detail/ConfirmDealLostDialog.js.map +1 -1
- package/dist/modules/customers/components/detail/DealDetailTabs.js +8 -30
- package/dist/modules/customers/components/detail/DealDetailTabs.js.map +2 -2
- package/dist/modules/customers/components/detail/DealForm.js +1 -2
- package/dist/modules/customers/components/detail/DealForm.js.map +2 -2
- package/dist/modules/customers/components/detail/DealsSection.js +1 -1
- package/dist/modules/customers/components/detail/DealsSection.js.map +2 -2
- package/dist/modules/customers/components/detail/PersonDetailTabs.js +8 -30
- package/dist/modules/customers/components/detail/PersonDetailTabs.js.map +2 -2
- package/dist/modules/customers/components/detail/ScheduleActivityDialog.js +216 -231
- package/dist/modules/customers/components/detail/ScheduleActivityDialog.js.map +2 -2
- package/dist/modules/customers/components/detail/dashboard/helpers.js +3 -4
- package/dist/modules/customers/components/detail/dashboard/helpers.js.map +2 -2
- package/dist/modules/customers/components/formConfig.js +10 -14
- package/dist/modules/customers/components/formConfig.js.map +2 -2
- package/dist/modules/customers/data/entities.js +0 -8
- package/dist/modules/customers/data/entities.js.map +2 -2
- package/dist/modules/customers/data/validators.js +2 -5
- package/dist/modules/customers/data/validators.js.map +2 -2
- package/dist/modules/customers/lib/calendar/format.js +4 -8
- package/dist/modules/customers/lib/calendar/format.js.map +2 -2
- package/dist/modules/customers/lib/visibilityFilter.js +4 -6
- package/dist/modules/customers/lib/visibilityFilter.js.map +2 -2
- package/dist/modules/customers/search.js +29 -50
- package/dist/modules/customers/search.js.map +2 -2
- package/dist/modules/dashboards/api/layout/[itemId]/route.js +3 -6
- package/dist/modules/dashboards/api/layout/[itemId]/route.js.map +2 -2
- package/dist/modules/dashboards/api/layout/route.js +9 -22
- package/dist/modules/dashboards/api/layout/route.js.map +2 -2
- package/dist/modules/dashboards/api/roles/widgets/route.js +3 -9
- package/dist/modules/dashboards/api/roles/widgets/route.js.map +2 -2
- package/dist/modules/dashboards/api/users/widgets/route.js +3 -9
- package/dist/modules/dashboards/api/users/widgets/route.js.map +2 -2
- package/dist/modules/dashboards/api/widgets/catalog.js +3 -6
- package/dist/modules/dashboards/api/widgets/catalog.js.map +2 -2
- package/dist/modules/dashboards/api/widgets/data/batch/route.js +3 -12
- package/dist/modules/dashboards/api/widgets/data/batch/route.js.map +2 -2
- package/dist/modules/dashboards/api/widgets/data/route.js +3 -28
- package/dist/modules/dashboards/api/widgets/data/route.js.map +2 -2
- package/dist/modules/dashboards/api/widgets/data/schema.js +18 -28
- package/dist/modules/dashboards/api/widgets/data/schema.js.map +2 -2
- package/dist/modules/dashboards/lib/access.js +3 -5
- package/dist/modules/dashboards/lib/access.js.map +2 -2
- package/dist/modules/dashboards/lib/aggregations.js +46 -113
- package/dist/modules/dashboards/lib/aggregations.js.map +2 -2
- package/dist/modules/dashboards/lib/formatters.js +11 -84
- package/dist/modules/dashboards/lib/formatters.js.map +2 -2
- package/dist/modules/dashboards/services/widgetDataService.js +14 -316
- package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.client.js +3 -9
- package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/config.js +2 -52
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/config.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.client.js +30 -52
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js +2 -2
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.client.js +3 -9
- package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.js +3 -8
- package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.js +18 -26
- package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.client.js +14 -22
- package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/top-products/widget.client.js +4 -10
- package/dist/modules/dashboards/widgets/dashboard/top-products/widget.client.js.map +2 -2
- package/dist/modules/data_sync/api/mappings/[id]/route.js +9 -22
- package/dist/modules/data_sync/api/mappings/[id]/route.js.map +2 -2
- package/dist/modules/data_sync/api/mappings/route.js +4 -13
- package/dist/modules/data_sync/api/mappings/route.js.map +2 -2
- package/dist/modules/data_sync/api/options.js +2 -7
- package/dist/modules/data_sync/api/options.js.map +2 -2
- package/dist/modules/data_sync/api/run.js +2 -7
- package/dist/modules/data_sync/api/run.js.map +2 -2
- package/dist/modules/data_sync/api/runs/[id]/cancel.js +3 -8
- package/dist/modules/data_sync/api/runs/[id]/cancel.js.map +2 -2
- package/dist/modules/data_sync/api/runs/[id]/retry.js +2 -7
- package/dist/modules/data_sync/api/runs/[id]/retry.js.map +2 -2
- package/dist/modules/data_sync/api/runs/[id]/route.js +3 -8
- package/dist/modules/data_sync/api/runs/[id]/route.js.map +2 -2
- package/dist/modules/data_sync/api/runs.js +2 -7
- package/dist/modules/data_sync/api/runs.js.map +2 -2
- package/dist/modules/data_sync/api/schedules/[id]/route.js +6 -19
- package/dist/modules/data_sync/api/schedules/[id]/route.js.map +2 -2
- package/dist/modules/data_sync/api/schedules/route.js +4 -13
- package/dist/modules/data_sync/api/schedules/route.js.map +2 -2
- package/dist/modules/data_sync/api/validate.js +4 -9
- package/dist/modules/data_sync/api/validate.js.map +2 -2
- package/dist/modules/data_sync/backend/data-sync/page.js +1 -2
- package/dist/modules/data_sync/backend/data-sync/page.js.map +2 -2
- package/dist/modules/data_sync/lib/queue.js +1 -16
- package/dist/modules/data_sync/lib/queue.js.map +2 -2
- package/dist/modules/data_sync/lib/start-run.js +1 -2
- package/dist/modules/data_sync/lib/start-run.js.map +2 -2
- package/dist/modules/data_sync/lib/sync-engine.js +2 -35
- package/dist/modules/data_sync/lib/sync-engine.js.map +2 -2
- package/dist/modules/data_sync/lib/sync-run-service.js +2 -70
- package/dist/modules/data_sync/lib/sync-run-service.js.map +2 -2
- package/dist/modules/data_sync/workers/sync-export.js +2 -9
- package/dist/modules/data_sync/workers/sync-export.js.map +2 -2
- package/dist/modules/data_sync/workers/sync-import.js +2 -9
- package/dist/modules/data_sync/workers/sync-import.js.map +2 -2
- package/dist/modules/dictionaries/api/[dictionaryId]/entries/route.js +12 -34
- package/dist/modules/dictionaries/api/[dictionaryId]/entries/route.js.map +2 -2
- package/dist/modules/dictionaries/api/openapi.js +2 -15
- package/dist/modules/dictionaries/api/openapi.js.map +2 -2
- package/dist/modules/dictionaries/components/DictionaryEntrySelect.js +1 -1
- package/dist/modules/dictionaries/components/DictionaryEntrySelect.js.map +2 -2
- package/dist/modules/dictionaries/components/hooks/useDictionaryEntries.js +29 -30
- package/dist/modules/dictionaries/components/hooks/useDictionaryEntries.js.map +2 -2
- package/dist/modules/dictionaries/data/validators.js +0 -7
- package/dist/modules/dictionaries/data/validators.js.map +2 -2
- package/dist/modules/dictionaries/lib/clientEntries.js +3 -4
- package/dist/modules/dictionaries/lib/clientEntries.js.map +2 -2
- package/dist/modules/directory/api/organization-branding/route.js +3 -10
- package/dist/modules/directory/api/organization-branding/route.js.map +2 -2
- package/dist/modules/directory/api/organization-switcher/route.js +20 -84
- package/dist/modules/directory/api/organization-switcher/route.js.map +2 -2
- package/dist/modules/directory/api/organizations/route.js +0 -7
- package/dist/modules/directory/api/organizations/route.js.map +3 -3
- package/dist/modules/directory/api/tenants/route.js +2 -8
- package/dist/modules/directory/api/tenants/route.js.map +2 -2
- package/dist/modules/directory/backend/directory/branding/page.js +8 -31
- package/dist/modules/directory/backend/directory/branding/page.js.map +2 -2
- package/dist/modules/directory/backend/directory/organizations/[id]/edit/page.js +16 -7
- package/dist/modules/directory/backend/directory/organizations/[id]/edit/page.js.map +2 -2
- package/dist/modules/directory/backend/directory/organizations/page.js +1 -2
- package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
- package/dist/modules/directory/backend/directory/tenants/page.js +1 -2
- package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
- package/dist/modules/directory/commands/organizations.js +1 -8
- package/dist/modules/directory/commands/organizations.js.map +2 -2
- package/dist/modules/directory/commands/tenants.js +0 -6
- package/dist/modules/directory/commands/tenants.js.map +2 -2
- package/dist/modules/directory/data/entities.js +0 -4
- package/dist/modules/directory/data/entities.js.map +2 -2
- package/dist/modules/directory/data/validators.js +0 -2
- package/dist/modules/directory/data/validators.js.map +2 -2
- package/dist/modules/directory/subscribers/invalidateOrgScopeCache.js +1 -5
- package/dist/modules/directory/subscribers/invalidateOrgScopeCache.js.map +2 -2
- package/dist/modules/directory/utils/organizationScope.js +3 -11
- package/dist/modules/directory/utils/organizationScope.js.map +2 -2
- package/dist/modules/entities/api/definitions.js +3 -53
- package/dist/modules/entities/api/definitions.js.map +2 -2
- package/dist/modules/entities/api/entities.js +2 -21
- package/dist/modules/entities/api/entities.js.map +2 -2
- package/dist/modules/entities/api/entity-settings.js +9 -59
- package/dist/modules/entities/api/entity-settings.js.map +2 -2
- package/dist/modules/entities/api/records.js +24 -3
- package/dist/modules/entities/api/records.js.map +2 -2
- package/dist/modules/entities/api/relations/options.js +16 -11
- package/dist/modules/entities/api/relations/options.js.map +2 -2
- package/dist/modules/entities/api/sidebar-entities.js +12 -34
- package/dist/modules/entities/api/sidebar-entities.js.map +2 -2
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +4 -23
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
- package/dist/modules/entities/backend/entities/user/create/page.js +7 -16
- package/dist/modules/entities/backend/entities/user/create/page.js.map +2 -2
- package/dist/modules/entities/cli.js +19 -193
- package/dist/modules/entities/cli.js.map +2 -2
- package/dist/modules/entities/components/SystemEntitiesTable.js +1 -2
- package/dist/modules/entities/components/SystemEntitiesTable.js.map +2 -2
- package/dist/modules/entities/components/UserEntitiesTable.js +1 -2
- package/dist/modules/entities/components/UserEntitiesTable.js.map +2 -2
- package/dist/modules/entities/lib/entityAcl.js +9 -87
- package/dist/modules/entities/lib/entityAcl.js.map +3 -3
- package/dist/modules/feature_toggles/components/FeatureGuard.js +2 -3
- package/dist/modules/feature_toggles/components/FeatureGuard.js.map +2 -2
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagBoolean.js +2 -5
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagBoolean.js.map +2 -2
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagJson.js +2 -5
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagJson.js.map +2 -2
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagNumber.js +2 -5
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagNumber.js.map +2 -2
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagString.js +2 -5
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagString.js.map +2 -2
- package/dist/modules/inbox_ops/ai-tools.js +2 -5
- package/dist/modules/inbox_ops/ai-tools.js.map +2 -2
- package/dist/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/route.js +1 -14
- package/dist/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/route.js.map +2 -2
- package/dist/modules/inbox_ops/api/proposals/route.js +1 -16
- package/dist/modules/inbox_ops/api/proposals/route.js.map +2 -2
- package/dist/modules/inbox_ops/api/webhook/inbound.js +10 -14
- package/dist/modules/inbox_ops/api/webhook/inbound.js.map +2 -2
- package/dist/modules/inbox_ops/backend/inbox-ops/log/page.js +6 -6
- package/dist/modules/inbox_ops/backend/inbox-ops/log/page.js.map +2 -2
- package/dist/modules/inbox_ops/components/proposals/EditActionDialog.js +20 -25
- package/dist/modules/inbox_ops/components/proposals/EditActionDialog.js.map +2 -2
- package/dist/modules/inbox_ops/search.js +4 -15
- package/dist/modules/inbox_ops/search.js.map +2 -2
- package/dist/modules/integrations/api/[id]/credentials/route.js +5 -11
- package/dist/modules/integrations/api/[id]/credentials/route.js.map +2 -2
- package/dist/modules/integrations/api/[id]/health/route.js +3 -6
- package/dist/modules/integrations/api/[id]/health/route.js.map +2 -2
- package/dist/modules/integrations/api/[id]/route.js +3 -6
- package/dist/modules/integrations/api/[id]/route.js.map +2 -2
- package/dist/modules/integrations/api/[id]/state/route.js +3 -6
- package/dist/modules/integrations/api/[id]/state/route.js.map +2 -2
- package/dist/modules/integrations/api/[id]/version/route.js +3 -6
- package/dist/modules/integrations/api/[id]/version/route.js.map +2 -2
- package/dist/modules/integrations/api/logs/route.js +3 -6
- package/dist/modules/integrations/api/logs/route.js.map +2 -2
- package/dist/modules/integrations/api/route.js +3 -6
- package/dist/modules/integrations/api/route.js.map +2 -2
- package/dist/modules/integrations/api/umes-read.js +2 -2
- package/dist/modules/integrations/api/umes-read.js.map +2 -2
- package/dist/modules/integrations/backend/integrations/[id]/page.js +4 -2
- package/dist/modules/integrations/backend/integrations/[id]/page.js.map +2 -2
- package/dist/modules/integrations/lib/organization-scope.js +9 -2
- package/dist/modules/integrations/lib/organization-scope.js.map +2 -2
- package/dist/modules/integrations/widgets/injection/external-ids/widget.client.js +5 -0
- package/dist/modules/integrations/widgets/injection/external-ids/widget.client.js.map +2 -2
- package/dist/modules/messages/api/[id]/route.js +0 -15
- package/dist/modules/messages/api/[id]/route.js.map +2 -2
- package/dist/modules/messages/api/route.js +8 -77
- package/dist/modules/messages/api/route.js.map +2 -2
- package/dist/modules/messages/components/ComposeMessagePageClient.js +1 -2
- package/dist/modules/messages/components/ComposeMessagePageClient.js.map +2 -2
- package/dist/modules/messages/components/MessageDetailPageClient.js +2 -3
- package/dist/modules/messages/components/MessageDetailPageClient.js.map +2 -2
- package/dist/modules/messages/components/MessagesInboxPageClient.js +1 -2
- package/dist/modules/messages/components/MessagesInboxPageClient.js.map +2 -2
- package/dist/modules/messages/components/message-detail/panels/dialogs.js +1 -1
- package/dist/modules/messages/components/message-detail/panels/dialogs.js.map +1 -1
- package/dist/modules/messages/lib/routeHelpers.js +3 -1
- package/dist/modules/messages/lib/routeHelpers.js.map +2 -2
- package/dist/modules/messages/lib/searchLookup.js +16 -8
- package/dist/modules/messages/lib/searchLookup.js.map +2 -2
- package/dist/modules/messages/search.js +5 -10
- package/dist/modules/messages/search.js.map +2 -2
- package/dist/modules/notifications/api/route.js +4 -83
- package/dist/modules/notifications/api/route.js.map +2 -2
- package/dist/modules/notifications/api/unread-count/route.js +6 -25
- package/dist/modules/notifications/api/unread-count/route.js.map +2 -2
- package/dist/modules/notifications/di.js +1 -1
- package/dist/modules/notifications/di.js.map +2 -2
- package/dist/modules/notifications/events.js +2 -4
- package/dist/modules/notifications/events.js.map +2 -2
- package/dist/modules/notifications/lib/notificationRecipients.js +7 -6
- package/dist/modules/notifications/lib/notificationRecipients.js.map +2 -2
- package/dist/modules/notifications/lib/notificationService.js +4 -48
- package/dist/modules/notifications/lib/notificationService.js.map +2 -2
- package/dist/modules/notifications/lib/routeHelpers.js +2 -16
- package/dist/modules/notifications/lib/routeHelpers.js.map +2 -2
- package/dist/modules/payment_gateways/api/capture/route.js +1 -1
- package/dist/modules/payment_gateways/api/capture/route.js.map +2 -2
- package/dist/modules/payment_gateways/api/sessions/route.js +3 -6
- package/dist/modules/payment_gateways/api/sessions/route.js.map +2 -2
- package/dist/modules/payment_gateways/api/webhook/[provider]/route.js +1 -11
- package/dist/modules/payment_gateways/api/webhook/[provider]/route.js.map +2 -2
- package/dist/modules/payment_gateways/backend/payment-gateways/page.js +2 -3
- package/dist/modules/payment_gateways/backend/payment-gateways/page.js.map +2 -2
- package/dist/modules/payment_gateways/data/entities.js +0 -11
- package/dist/modules/payment_gateways/data/entities.js.map +2 -2
- package/dist/modules/payment_gateways/di.js +1 -17
- package/dist/modules/payment_gateways/di.js.map +2 -2
- package/dist/modules/payment_gateways/lib/gateway-service.js +14 -93
- package/dist/modules/payment_gateways/lib/gateway-service.js.map +2 -2
- package/dist/modules/payment_gateways/lib/payment-operation-idempotency.js +0 -1
- package/dist/modules/payment_gateways/lib/payment-operation-idempotency.js.map +2 -2
- package/dist/modules/payment_gateways/lib/session-idempotency.js +0 -33
- package/dist/modules/payment_gateways/lib/session-idempotency.js.map +2 -2
- package/dist/modules/payment_gateways/setup.js +0 -47
- package/dist/modules/payment_gateways/setup.js.map +2 -2
- package/dist/modules/planner/components/AvailabilityRulesEditor.js +4 -4
- package/dist/modules/planner/components/AvailabilityRulesEditor.js.map +2 -2
- package/dist/modules/planner/components/unavailabilityReasons.js +3 -3
- package/dist/modules/planner/components/unavailabilityReasons.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/dashboard/page.js +3 -3
- package/dist/modules/portal/frontend/[orgSlug]/portal/dashboard/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/login/page.js +3 -3
- package/dist/modules/portal/frontend/[orgSlug]/portal/login/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/page.js +3 -3
- package/dist/modules/portal/frontend/[orgSlug]/portal/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/profile/page.js +3 -3
- package/dist/modules/portal/frontend/[orgSlug]/portal/profile/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/reset-password/page.js +3 -3
- package/dist/modules/portal/frontend/[orgSlug]/portal/reset-password/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/signup/page.js +3 -3
- package/dist/modules/portal/frontend/[orgSlug]/portal/signup/page.js.map +2 -2
- package/dist/modules/progress/lib/progressService.js +0 -2
- package/dist/modules/progress/lib/progressService.js.map +2 -2
- package/dist/modules/progress/lib/progressServiceImpl.js +104 -322
- package/dist/modules/progress/lib/progressServiceImpl.js.map +2 -2
- package/dist/modules/query_index/api/openapi.js +1 -13
- package/dist/modules/query_index/api/openapi.js.map +2 -2
- package/dist/modules/query_index/api/reindex.js +0 -10
- package/dist/modules/query_index/api/reindex.js.map +2 -2
- package/dist/modules/query_index/api/status.js +105 -165
- package/dist/modules/query_index/api/status.js.map +2 -2
- package/dist/modules/query_index/cli.js +1 -125
- package/dist/modules/query_index/cli.js.map +2 -2
- package/dist/modules/query_index/components/QueryIndexesTable.js +42 -130
- package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
- package/dist/modules/query_index/data/entities.js +1 -2
- package/dist/modules/query_index/data/entities.js.map +2 -2
- package/dist/modules/query_index/di.js +0 -3
- package/dist/modules/query_index/di.js.map +2 -2
- package/dist/modules/query_index/lib/batch.js +4 -11
- package/dist/modules/query_index/lib/batch.js.map +2 -2
- package/dist/modules/query_index/lib/coverage.js +9 -21
- package/dist/modules/query_index/lib/coverage.js.map +2 -2
- package/dist/modules/query_index/lib/document.js +5 -12
- package/dist/modules/query_index/lib/document.js.map +2 -2
- package/dist/modules/query_index/lib/engine.js +48 -105
- package/dist/modules/query_index/lib/engine.js.map +2 -2
- package/dist/modules/query_index/lib/indexer.js +19 -95
- package/dist/modules/query_index/lib/indexer.js.map +2 -2
- package/dist/modules/query_index/lib/reindexer.js +37 -43
- package/dist/modules/query_index/lib/reindexer.js.map +2 -2
- package/dist/modules/query_index/lib/search-tokens.js +15 -34
- package/dist/modules/query_index/lib/search-tokens.js.map +2 -2
- package/dist/modules/query_index/lib/subscriber-scope.js +3 -2
- package/dist/modules/query_index/lib/subscriber-scope.js.map +2 -2
- package/dist/modules/query_index/subscribers/coverage_refresh.js +0 -4
- package/dist/modules/query_index/subscribers/coverage_refresh.js.map +2 -2
- package/dist/modules/query_index/subscribers/delete_one.js +1 -53
- package/dist/modules/query_index/subscribers/delete_one.js.map +3 -3
- package/dist/modules/query_index/subscribers/upsert_one.js +0 -60
- package/dist/modules/query_index/subscribers/upsert_one.js.map +3 -3
- package/dist/modules/resources/api/resources.js +0 -2
- package/dist/modules/resources/api/resources.js.map +2 -2
- package/dist/modules/resources/backend/resources/resource-types/page.js +1 -2
- package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
- package/dist/modules/resources/backend/resources/resources/[id]/page.js +2 -3
- package/dist/modules/resources/backend/resources/resources/[id]/page.js.map +2 -2
- package/dist/modules/resources/backend/resources/resources/page.js +1 -2
- package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
- package/dist/modules/resources/commands/resources.js +0 -9
- package/dist/modules/resources/commands/resources.js.map +2 -2
- package/dist/modules/resources/components/detail/dictionaries.js +3 -3
- package/dist/modules/resources/components/detail/dictionaries.js.map +2 -2
- package/dist/modules/resources/data/entities.js +0 -3
- package/dist/modules/resources/data/entities.js.map +2 -2
- package/dist/modules/resources/data/validators.js +2 -6
- package/dist/modules/resources/data/validators.js.map +2 -2
- package/dist/modules/resources/lib/seeds.js +9 -16
- package/dist/modules/resources/lib/seeds.js.map +2 -2
- package/dist/modules/sales/analytics.js +3 -7
- package/dist/modules/sales/analytics.js.map +2 -2
- package/dist/modules/sales/api/document-history/route.js +1 -2
- package/dist/modules/sales/api/document-history/route.js.map +2 -2
- package/dist/modules/sales/api/documents/factory.js +3 -14
- package/dist/modules/sales/api/documents/factory.js.map +2 -2
- package/dist/modules/sales/backend/sales/documents/[id]/page.js +3 -11
- package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/documents/create/page.js +14 -11
- package/dist/modules/sales/backend/sales/documents/create/page.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +23 -184
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/sales/components/documents/ItemsSection.js +10 -20
- package/dist/modules/sales/components/documents/ItemsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/LineItemDialog.js +5 -12
- package/dist/modules/sales/components/documents/LineItemDialog.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesDocumentForm.js +2 -48
- package/dist/modules/sales/components/documents/SalesDocumentForm.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js +1 -4
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
- package/dist/modules/sales/components/useSalesChannelsEnabled.js +35 -2
- package/dist/modules/sales/components/useSalesChannelsEnabled.js.map +2 -2
- package/dist/modules/sales/data/validators.js +5 -32
- package/dist/modules/sales/data/validators.js.map +2 -2
- package/dist/modules/sales/di.js +0 -7
- package/dist/modules/sales/di.js.map +2 -2
- package/dist/modules/sales/events.js +0 -1
- package/dist/modules/sales/events.js.map +2 -2
- package/dist/modules/sales/lib/historyHelpers.js +1 -69
- package/dist/modules/sales/lib/historyHelpers.js.map +2 -2
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js +2 -51
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js.map +2 -2
- package/dist/modules/sales/workflows.js +7 -10
- package/dist/modules/sales/workflows.js.map +2 -2
- package/dist/modules/shipping_carriers/api/webhook/[provider]/route.js +1 -11
- package/dist/modules/shipping_carriers/api/webhook/[provider]/route.js.map +2 -2
- package/dist/modules/shipping_carriers/lib/shipment-wizard/components/PackageEditor.js +1 -1
- package/dist/modules/shipping_carriers/lib/shipment-wizard/components/PackageEditor.js.map +1 -1
- package/dist/modules/staff/api/interceptors.js +3 -5
- package/dist/modules/staff/api/interceptors.js.map +2 -2
- package/dist/modules/staff/api/leave-requests.js +42 -45
- package/dist/modules/staff/api/leave-requests.js.map +2 -2
- package/dist/modules/staff/components/detail/dictionaries.js +3 -3
- package/dist/modules/staff/components/detail/dictionaries.js.map +2 -2
- package/dist/modules/sync_excel/api/upload/route.js +2 -15
- package/dist/modules/sync_excel/api/upload/route.js.map +2 -2
- package/dist/modules/wms/components/backend/ReleaseReservationDialog.js +1 -1
- package/dist/modules/wms/components/backend/ReleaseReservationDialog.js.map +1 -1
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js +4 -5
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js +3 -4
- package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLocationDetailPage.js +2 -3
- package/dist/modules/wms/components/backend/WmsLocationDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLotDetailPage.js +2 -3
- package/dist/modules/wms/components/backend/WmsLotDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLotsListPage.js +1 -2
- package/dist/modules/wms/components/backend/WmsLotsListPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsSkuDetailPage.js +2 -3
- package/dist/modules/wms/components/backend/WmsSkuDetailPage.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/page.js +2 -3
- package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js +3 -6
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
- package/dist/modules/workflows/backend/instances/page.js +9 -10
- package/dist/modules/workflows/backend/instances/page.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/page.js +7 -8
- package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
- package/dist/modules/workflows/components/ActivitiesEditor.js +13 -69
- package/dist/modules/workflows/components/ActivitiesEditor.js.map +2 -2
- package/dist/modules/workflows/components/BusinessRulesSelector.js +1 -1
- package/dist/modules/workflows/components/BusinessRulesSelector.js.map +2 -2
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js +2 -2
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +2 -2
- package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js +2 -1
- package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js.map +2 -2
- package/dist/modules/workflows/components/NodeEditDialogCrudForm.js +2 -1
- package/dist/modules/workflows/components/NodeEditDialogCrudForm.js.map +2 -2
- package/dist/modules/workflows/components/StepsEditor.js +2 -2
- package/dist/modules/workflows/components/StepsEditor.js.map +2 -2
- package/dist/modules/workflows/components/TransitionsEditor.js +165 -207
- package/dist/modules/workflows/components/TransitionsEditor.js.map +2 -2
- package/dist/modules/workflows/components/WorkflowLegend.js +1 -1
- package/dist/modules/workflows/components/WorkflowLegend.js.map +2 -2
- package/dist/modules/workflows/components/WorkflowSelector.js +1 -1
- package/dist/modules/workflows/components/WorkflowSelector.js.map +2 -2
- package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js +1 -1
- package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js +1 -1
- package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/MappingArrayEditor.js +1 -1
- package/dist/modules/workflows/components/fields/MappingArrayEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js +1 -1
- package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/WorkflowSelectorField.js +4 -4
- package/dist/modules/workflows/components/fields/WorkflowSelectorField.js.map +2 -2
- package/dist/modules/workflows/data/validators.js +1 -34
- package/dist/modules/workflows/data/validators.js.map +3 -3
- package/dist/modules/workflows/events.js +0 -1
- package/dist/modules/workflows/events.js.map +2 -2
- package/dist/modules/workflows/lib/activity-executor.js +14 -59
- package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
- package/dist/modules/workflows/lib/format-validation-error.js +1 -46
- package/dist/modules/workflows/lib/format-validation-error.js.map +2 -2
- package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +10 -21
- package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +2 -2
- package/generated/entities/customer_deal_person_link/index.ts +0 -1
- package/generated/entities/customer_user_invitation/index.ts +0 -1
- package/generated/entities/gateway_payment_operation/index.ts +0 -1
- package/generated/entities/gateway_transaction/index.ts +0 -1
- package/generated/entities/organization/index.ts +0 -1
- package/generated/entities/resources_resource/index.ts +0 -1
- package/generated/entities.ids.generated.ts +1 -3
- package/generated/entity-fields-registry.ts +0 -23
- package/package.json +18 -19
- package/src/bootstrap.ts +2 -17
- package/src/helpers/integration/salesFixtures.ts +2 -34
- package/src/helpers/integration/salesUi.ts +0 -8
- package/src/modules/api_keys/backend/api-keys/page.tsx +1 -2
- package/src/modules/attachments/api/route.ts +9 -130
- package/src/modules/attachments/data/entities.ts +0 -59
- package/src/modules/attachments/di.ts +1 -9
- package/src/modules/attachments/fields/attachment.tsx +1 -1
- package/src/modules/attachments/i18n/de.json +0 -15
- package/src/modules/attachments/i18n/en.json +0 -15
- package/src/modules/attachments/i18n/es.json +0 -15
- package/src/modules/attachments/i18n/pl.json +0 -15
- package/src/modules/attachments/lib/drivers/index.ts +1 -1
- package/src/modules/attachments/lib/drivers/localDriver.ts +8 -23
- package/src/modules/attachments/lib/drivers/types.ts +0 -5
- package/src/modules/attachments/lib/upload-limits.ts +0 -35
- package/src/modules/attachments/migrations/.snapshot-open-mercato.json +120 -648
- package/src/modules/audit_logs/api/audit-logs/access/route.ts +0 -5
- package/src/modules/audit_logs/api/audit-logs/actions/export/route.ts +0 -5
- package/src/modules/audit_logs/api/audit-logs/actions/route.ts +0 -5
- package/src/modules/audit_logs/components/AccessLogsTable.tsx +1 -2
- package/src/modules/audit_logs/components/AuditLogsActions.tsx +1 -2
- package/src/modules/auth/AGENTS.md +8 -12
- package/src/modules/auth/api/admin/nav.ts +4 -28
- package/src/modules/auth/api/profile/route.ts +2 -8
- package/src/modules/auth/api/users/route.ts +28 -8
- package/src/modules/auth/backend/auth/profile/page.tsx +0 -1
- package/src/modules/auth/backend/profile/change-password/page.tsx +0 -1
- package/src/modules/auth/backend/roles/page.tsx +1 -2
- package/src/modules/auth/backend/settings/page.tsx +8 -17
- package/src/modules/auth/backend/users/page.tsx +1 -2
- package/src/modules/auth/cli.ts +1 -1
- package/src/modules/auth/components/UserConsentsPanel.tsx +9 -9
- package/src/modules/auth/frontend/login.tsx +4 -5
- package/src/modules/auth/frontend/reset.tsx +2 -2
- package/src/modules/auth/i18n/de.json +0 -1
- package/src/modules/auth/i18n/en.json +0 -1
- package/src/modules/auth/i18n/es.json +0 -1
- package/src/modules/auth/i18n/pl.json +0 -1
- package/src/modules/auth/lib/backendChrome.tsx +33 -71
- package/src/modules/auth/lib/setup-app.ts +2 -21
- package/src/modules/auth/lib/tenantAccess.ts +0 -8
- package/src/modules/auth/services/rbacService.ts +46 -41
- package/src/modules/business_rules/api/rules/route.ts +4 -92
- package/src/modules/business_rules/backend/rules/page.tsx +1 -2
- package/src/modules/business_rules/components/ActionBuilder.tsx +5 -54
- package/src/modules/business_rules/components/ActionRow.tsx +18 -156
- package/src/modules/business_rules/components/ConditionRow.tsx +6 -9
- package/src/modules/business_rules/components/utils/actionValidation.ts +0 -6
- package/src/modules/business_rules/i18n/de.json +0 -12
- package/src/modules/business_rules/i18n/en.json +0 -12
- package/src/modules/business_rules/i18n/es.json +0 -12
- package/src/modules/business_rules/i18n/pl.json +0 -12
- package/src/modules/business_rules/lib/action-executor.ts +0 -198
- package/src/modules/business_rules/lib/rule-engine.ts +0 -4
- package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +5 -6
- package/src/modules/catalog/backend/catalog/products/create/page.tsx +6 -7
- package/src/modules/catalog/components/PriceKindSettings.tsx +3 -3
- package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +1 -2
- package/src/modules/catalog/components/products/ProductCategorizeSection.tsx +3 -3
- package/src/modules/catalog/components/products/ProductMediaManager.tsx +1 -1
- package/src/modules/catalog/components/products/ProductsDataTable.tsx +2 -3
- package/src/modules/catalog/components/products/VariantBuilder.tsx +5 -5
- package/src/modules/catalog/events.ts +0 -1
- package/src/modules/catalog/i18n/de.json +0 -18
- package/src/modules/catalog/i18n/en.json +0 -18
- package/src/modules/catalog/i18n/es.json +0 -18
- package/src/modules/catalog/i18n/pl.json +0 -18
- package/src/modules/catalog/widgets/injection/product-seo/widget.ts +1 -1
- package/src/modules/communication_channels/api/post/test-seed/route.ts +2 -69
- package/src/modules/communication_channels/api/post/webhook/[provider]/route.ts +1 -11
- package/src/modules/communication_channels/api/post/webhooks/gmail/route.ts +11 -17
- package/src/modules/communication_channels/backend/communication_channels/channels/page.tsx +1 -2
- package/src/modules/communication_channels/backend/profile/communication-channels/page.tsx +3 -4
- package/src/modules/communication_channels/data/enrichers.ts +26 -6
- package/src/modules/communication_channels/lib/access-control.ts +3 -3
- package/src/modules/configs/backend/config/system-status/page.tsx +1 -2
- package/src/modules/configs/lib/upgrade-actions.ts +0 -14
- package/src/modules/currencies/backend/currencies/page.tsx +1 -2
- package/src/modules/currencies/backend/exchange-rates/page.tsx +1 -2
- package/src/modules/currencies/di.ts +1 -4
- package/src/modules/currencies/i18n/de.json +0 -1
- package/src/modules/currencies/i18n/en.json +0 -1
- package/src/modules/currencies/i18n/es.json +0 -1
- package/src/modules/currencies/i18n/pl.json +0 -1
- package/src/modules/customer_accounts/AGENTS.md +3 -3
- package/src/modules/customer_accounts/api/admin/users/[id].ts +1 -16
- package/src/modules/customer_accounts/api/admin/users-invite.ts +3 -81
- package/src/modules/customer_accounts/api/invitations/accept.ts +2 -1
- package/src/modules/customer_accounts/api/login.ts +2 -4
- package/src/modules/customer_accounts/api/magic-link/verify.ts +2 -4
- package/src/modules/customer_accounts/api/portal/feature-check.ts +7 -5
- package/src/modules/customer_accounts/api/portal/nav.ts +3 -5
- package/src/modules/customer_accounts/api/portal/profile.ts +1 -5
- package/src/modules/customer_accounts/api/portal/sessions-refresh.ts +3 -3
- package/src/modules/customer_accounts/api/portal/users-invite.ts +1 -25
- package/src/modules/customer_accounts/backend/customer_accounts/roles/page.tsx +1 -2
- package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +1 -2
- package/src/modules/customer_accounts/data/entities.ts +0 -3
- package/src/modules/customer_accounts/data/validators.ts +0 -1
- package/src/modules/customer_accounts/i18n/de.json +0 -6
- package/src/modules/customer_accounts/i18n/en.json +0 -6
- package/src/modules/customer_accounts/i18n/es.json +0 -6
- package/src/modules/customer_accounts/i18n/pl.json +0 -6
- package/src/modules/customer_accounts/lib/customerAuth.ts +2 -8
- package/src/modules/customer_accounts/lib/customerAuthServer.ts +0 -1
- package/src/modules/customer_accounts/lib/customerEntityOwnership.ts +2 -68
- package/src/modules/customer_accounts/lib/customerUrl.ts +11 -27
- package/src/modules/customer_accounts/migrations/.snapshot-open-mercato.json +0 -16
- package/src/modules/customer_accounts/services/customerInvitationService.ts +3 -56
- package/src/modules/customer_accounts/services/customerRbacService.ts +3 -16
- package/src/modules/customer_accounts/setup.ts +0 -7
- package/src/modules/customer_accounts/subscribers/autoLinkCrm.ts +8 -75
- package/src/modules/customer_accounts/widgets/injection/account-status/widget.client.tsx +2 -2
- package/src/modules/customer_accounts/widgets/injection/portal-ai-assistant-trigger/widget.client.tsx +3 -1
- package/src/modules/customer_accounts/widgets/injection-table.ts +1 -4
- package/src/modules/customers/analytics.ts +0 -3
- package/src/modules/customers/api/companies/[id]/route.ts +4 -3
- package/src/modules/customers/api/deals/[id]/people/route.ts +0 -3
- package/src/modules/customers/api/deals/[id]/route.ts +2 -10
- package/src/modules/customers/api/deals/aggregate/route.ts +4 -5
- package/src/modules/customers/api/deals/summary/route.ts +162 -15
- package/src/modules/customers/api/people/[id]/companies/enriched/route.ts +2 -3
- package/src/modules/customers/api/utils.ts +31 -12
- package/src/modules/customers/backend/customers/companies/[id]/page.tsx +1 -2
- package/src/modules/customers/backend/customers/companies/page.tsx +1 -2
- package/src/modules/customers/backend/customers/companies-v2/[id]/page.tsx +5 -17
- package/src/modules/customers/backend/customers/deals/[id]/hooks/types.ts +0 -1
- package/src/modules/customers/backend/customers/deals/[id]/page.tsx +12 -19
- package/src/modules/customers/backend/customers/deals/page.tsx +1 -2
- package/src/modules/customers/backend/customers/deals/pipeline/components/QuickDealDialog.tsx +3 -35
- package/src/modules/customers/backend/customers/deals/pipeline/page.tsx +1 -10
- package/src/modules/customers/backend/customers/people/[id]/page.tsx +1 -2
- package/src/modules/customers/backend/customers/people/page.tsx +1 -2
- package/src/modules/customers/backend/customers/people-v2/[id]/page.tsx +10 -29
- package/src/modules/customers/cli.ts +11 -28
- package/src/modules/customers/commands/deals.ts +9 -50
- package/src/modules/customers/commands/people.ts +0 -3
- package/src/modules/customers/components/CustomerTodosTable.tsx +1 -2
- package/src/modules/customers/components/detail/ActiveDealCard.tsx +1 -2
- package/src/modules/customers/components/detail/ActivitiesDayStrip.tsx +3 -2
- package/src/modules/customers/components/detail/CompanyDetailTabs.tsx +7 -30
- package/src/modules/customers/components/detail/CompanyKpiBar.tsx +5 -6
- package/src/modules/customers/components/detail/ConfirmDealLostDialog.tsx +1 -1
- package/src/modules/customers/components/detail/DealDetailTabs.tsx +9 -34
- package/src/modules/customers/components/detail/DealForm.tsx +1 -5
- package/src/modules/customers/components/detail/DealsSection.tsx +1 -1
- package/src/modules/customers/components/detail/PersonDetailTabs.tsx +9 -34
- package/src/modules/customers/components/detail/ScheduleActivityDialog.tsx +13 -28
- package/src/modules/customers/components/detail/dashboard/helpers.ts +3 -4
- package/src/modules/customers/components/formConfig.tsx +8 -12
- package/src/modules/customers/data/entities.ts +1 -9
- package/src/modules/customers/data/validators.ts +1 -6
- package/src/modules/customers/i18n/de.json +0 -72
- package/src/modules/customers/i18n/en.json +0 -72
- package/src/modules/customers/i18n/es.json +0 -72
- package/src/modules/customers/i18n/pl.json +0 -72
- package/src/modules/customers/lib/calendar/format.ts +4 -10
- package/src/modules/customers/lib/visibilityFilter.ts +5 -7
- package/src/modules/customers/migrations/.snapshot-open-mercato.json +1 -27
- package/src/modules/customers/search.ts +27 -59
- package/src/modules/dashboards/api/layout/[itemId]/route.ts +3 -6
- package/src/modules/dashboards/api/layout/route.ts +9 -22
- package/src/modules/dashboards/api/roles/widgets/route.ts +3 -9
- package/src/modules/dashboards/api/users/widgets/route.ts +3 -9
- package/src/modules/dashboards/api/widgets/catalog.ts +3 -6
- package/src/modules/dashboards/api/widgets/data/batch/route.ts +1 -12
- package/src/modules/dashboards/api/widgets/data/route.ts +1 -29
- package/src/modules/dashboards/api/widgets/data/schema.ts +19 -49
- package/src/modules/dashboards/i18n/de.json +0 -5
- package/src/modules/dashboards/i18n/en.json +0 -5
- package/src/modules/dashboards/i18n/es.json +0 -5
- package/src/modules/dashboards/i18n/pl.json +0 -5
- package/src/modules/dashboards/lib/access.ts +3 -5
- package/src/modules/dashboards/lib/aggregations.ts +48 -198
- package/src/modules/dashboards/lib/formatters.ts +12 -137
- package/src/modules/dashboards/services/widgetDataService.ts +12 -453
- package/src/modules/dashboards/widgets/dashboard/aov-kpi/widget.client.tsx +3 -9
- package/src/modules/dashboards/widgets/dashboard/pipeline-summary/config.ts +0 -86
- package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.client.tsx +21 -42
- package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.ts +2 -2
- package/src/modules/dashboards/widgets/dashboard/revenue-kpi/widget.client.tsx +3 -9
- package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.tsx +2 -7
- package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.tsx +15 -25
- package/src/modules/dashboards/widgets/dashboard/top-customers/widget.client.tsx +11 -21
- package/src/modules/dashboards/widgets/dashboard/top-products/widget.client.tsx +3 -9
- package/src/modules/data_sync/AGENTS.md +0 -1
- package/src/modules/data_sync/api/mappings/[id]/route.ts +9 -22
- package/src/modules/data_sync/api/mappings/route.ts +4 -13
- package/src/modules/data_sync/api/options.ts +2 -7
- package/src/modules/data_sync/api/run.ts +2 -7
- package/src/modules/data_sync/api/runs/[id]/cancel.ts +3 -8
- package/src/modules/data_sync/api/runs/[id]/retry.ts +2 -7
- package/src/modules/data_sync/api/runs/[id]/route.ts +3 -8
- package/src/modules/data_sync/api/runs.ts +2 -7
- package/src/modules/data_sync/api/schedules/[id]/route.ts +6 -19
- package/src/modules/data_sync/api/schedules/route.ts +4 -13
- package/src/modules/data_sync/api/validate.ts +4 -9
- package/src/modules/data_sync/backend/data-sync/page.tsx +1 -2
- package/src/modules/data_sync/lib/adapter.ts +0 -18
- package/src/modules/data_sync/lib/queue.ts +1 -19
- package/src/modules/data_sync/lib/start-run.ts +1 -2
- package/src/modules/data_sync/lib/sync-engine.ts +0 -46
- package/src/modules/data_sync/lib/sync-run-service.ts +1 -82
- package/src/modules/data_sync/workers/sync-export.ts +1 -8
- package/src/modules/data_sync/workers/sync-import.ts +1 -8
- package/src/modules/dictionaries/api/[dictionaryId]/entries/route.ts +11 -39
- package/src/modules/dictionaries/api/openapi.ts +0 -19
- package/src/modules/dictionaries/components/DictionaryEntrySelect.tsx +1 -1
- package/src/modules/dictionaries/components/hooks/useDictionaryEntries.ts +36 -35
- package/src/modules/dictionaries/data/validators.ts +0 -14
- package/src/modules/dictionaries/lib/clientEntries.ts +3 -4
- package/src/modules/directory/api/organization-branding/route.ts +1 -12
- package/src/modules/directory/api/organization-switcher/route.ts +26 -97
- package/src/modules/directory/api/organizations/route.ts +0 -7
- package/src/modules/directory/api/tenants/route.ts +1 -9
- package/src/modules/directory/backend/directory/branding/page.tsx +9 -34
- package/src/modules/directory/backend/directory/organizations/[id]/edit/page.tsx +14 -10
- package/src/modules/directory/backend/directory/organizations/page.tsx +1 -2
- package/src/modules/directory/backend/directory/tenants/page.tsx +1 -2
- package/src/modules/directory/commands/organizations.ts +1 -9
- package/src/modules/directory/commands/tenants.ts +0 -6
- package/src/modules/directory/data/entities.ts +0 -3
- package/src/modules/directory/data/validators.ts +0 -2
- package/src/modules/directory/i18n/de.json +1 -4
- package/src/modules/directory/i18n/en.json +1 -4
- package/src/modules/directory/i18n/es.json +1 -4
- package/src/modules/directory/i18n/pl.json +1 -4
- package/src/modules/directory/migrations/.snapshot-open-mercato.json +1 -18
- package/src/modules/directory/subscribers/invalidateOrgScopeCache.ts +1 -4
- package/src/modules/directory/utils/organizationScope.ts +3 -9
- package/src/modules/entities/api/definitions.ts +3 -55
- package/src/modules/entities/api/entities.ts +2 -30
- package/src/modules/entities/api/entity-settings.ts +22 -66
- package/src/modules/entities/api/records.ts +27 -3
- package/src/modules/entities/api/relations/options.ts +25 -11
- package/src/modules/entities/api/sidebar-entities.ts +14 -43
- package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +75 -96
- package/src/modules/entities/backend/entities/user/create/page.tsx +7 -16
- package/src/modules/entities/cli.ts +21 -238
- package/src/modules/entities/components/SystemEntitiesTable.tsx +1 -2
- package/src/modules/entities/components/UserEntitiesTable.tsx +1 -2
- package/src/modules/entities/i18n/de.json +0 -9
- package/src/modules/entities/i18n/en.json +0 -9
- package/src/modules/entities/i18n/es.json +0 -9
- package/src/modules/entities/i18n/pl.json +0 -9
- package/src/modules/entities/lib/entityAcl.ts +11 -98
- package/src/modules/feature_toggles/components/FeatureGuard.tsx +2 -9
- package/src/modules/feature_toggles/components/hooks/useFeatureFlagBoolean.ts +1 -13
- package/src/modules/feature_toggles/components/hooks/useFeatureFlagJson.ts +3 -12
- package/src/modules/feature_toggles/components/hooks/useFeatureFlagNumber.ts +1 -10
- package/src/modules/feature_toggles/components/hooks/useFeatureFlagString.ts +1 -10
- package/src/modules/inbox_ops/ai-tools.ts +3 -5
- package/src/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/route.ts +1 -17
- package/src/modules/inbox_ops/api/proposals/route.ts +1 -20
- package/src/modules/inbox_ops/api/webhook/inbound.ts +12 -14
- package/src/modules/inbox_ops/backend/inbox-ops/log/page.tsx +6 -6
- package/src/modules/inbox_ops/components/proposals/EditActionDialog.tsx +19 -24
- package/src/modules/inbox_ops/components/proposals/types.ts +0 -1
- package/src/modules/inbox_ops/i18n/de.json +0 -3
- package/src/modules/inbox_ops/i18n/en.json +0 -3
- package/src/modules/inbox_ops/i18n/es.json +0 -3
- package/src/modules/inbox_ops/i18n/pl.json +0 -3
- package/src/modules/inbox_ops/search.ts +4 -20
- package/src/modules/integrations/api/[id]/credentials/route.ts +5 -11
- package/src/modules/integrations/api/[id]/health/route.ts +3 -6
- package/src/modules/integrations/api/[id]/route.ts +3 -6
- package/src/modules/integrations/api/[id]/state/route.ts +3 -6
- package/src/modules/integrations/api/[id]/version/route.ts +3 -6
- package/src/modules/integrations/api/logs/route.ts +3 -6
- package/src/modules/integrations/api/route.ts +3 -6
- package/src/modules/integrations/api/umes-read.ts +2 -2
- package/src/modules/integrations/backend/integrations/[id]/page.tsx +2 -2
- package/src/modules/integrations/lib/organization-scope.ts +25 -5
- package/src/modules/integrations/widgets/injection/external-ids/widget.client.tsx +5 -0
- package/src/modules/messages/api/[id]/route.ts +0 -21
- package/src/modules/messages/api/route.ts +9 -109
- package/src/modules/messages/components/ComposeMessagePageClient.tsx +1 -2
- package/src/modules/messages/components/MessageDetailPageClient.tsx +2 -3
- package/src/modules/messages/components/MessagesInboxPageClient.tsx +1 -2
- package/src/modules/messages/components/message-detail/panels/dialogs.tsx +1 -1
- package/src/modules/messages/i18n/de.json +0 -2
- package/src/modules/messages/i18n/en.json +0 -2
- package/src/modules/messages/i18n/es.json +0 -2
- package/src/modules/messages/i18n/pl.json +0 -2
- package/src/modules/messages/lib/routeHelpers.ts +6 -4
- package/src/modules/messages/lib/searchLookup.ts +34 -11
- package/src/modules/messages/search.ts +5 -11
- package/src/modules/notifications/api/route.ts +3 -123
- package/src/modules/notifications/api/unread-count/route.ts +5 -42
- package/src/modules/notifications/di.ts +1 -1
- package/src/modules/notifications/events.ts +0 -2
- package/src/modules/notifications/lib/notificationRecipients.ts +8 -6
- package/src/modules/notifications/lib/notificationService.ts +1 -63
- package/src/modules/notifications/lib/routeHelpers.ts +2 -19
- package/src/modules/payment_gateways/api/capture/route.ts +1 -1
- package/src/modules/payment_gateways/api/sessions/route.ts +3 -6
- package/src/modules/payment_gateways/api/webhook/[provider]/route.ts +1 -13
- package/src/modules/payment_gateways/backend/payment-gateways/page.tsx +2 -3
- package/src/modules/payment_gateways/data/entities.ts +2 -13
- package/src/modules/payment_gateways/di.ts +2 -28
- package/src/modules/payment_gateways/i18n/de.json +1 -8
- package/src/modules/payment_gateways/i18n/en.json +1 -8
- package/src/modules/payment_gateways/i18n/es.json +1 -8
- package/src/modules/payment_gateways/i18n/pl.json +1 -8
- package/src/modules/payment_gateways/lib/gateway-service.ts +18 -114
- package/src/modules/payment_gateways/lib/payment-operation-idempotency.ts +0 -1
- package/src/modules/payment_gateways/lib/session-idempotency.ts +0 -36
- package/src/modules/payment_gateways/migrations/.snapshot-open-mercato.json +1 -44
- package/src/modules/payment_gateways/setup.ts +0 -62
- package/src/modules/planner/components/AvailabilityRulesEditor.tsx +4 -4
- package/src/modules/planner/components/unavailabilityReasons.ts +3 -3
- package/src/modules/portal/frontend/[orgSlug]/portal/dashboard/page.tsx +3 -3
- package/src/modules/portal/frontend/[orgSlug]/portal/login/page.tsx +3 -3
- package/src/modules/portal/frontend/[orgSlug]/portal/page.tsx +3 -3
- package/src/modules/portal/frontend/[orgSlug]/portal/profile/page.tsx +3 -3
- package/src/modules/portal/frontend/[orgSlug]/portal/reset-password/page.tsx +4 -4
- package/src/modules/portal/frontend/[orgSlug]/portal/signup/page.tsx +3 -3
- package/src/modules/portal/i18n/de.json +0 -18
- package/src/modules/portal/i18n/en.json +0 -18
- package/src/modules/portal/i18n/es.json +0 -18
- package/src/modules/portal/i18n/pl.json +0 -18
- package/src/modules/progress/AGENTS.md +1 -11
- package/src/modules/progress/lib/progressService.ts +0 -1
- package/src/modules/progress/lib/progressServiceImpl.ts +117 -385
- package/src/modules/query_index/api/openapi.ts +0 -12
- package/src/modules/query_index/api/reindex.ts +0 -15
- package/src/modules/query_index/api/status.ts +136 -238
- package/src/modules/query_index/cli.ts +1 -180
- package/src/modules/query_index/components/QueryIndexesTable.tsx +47 -194
- package/src/modules/query_index/data/entities.ts +0 -7
- package/src/modules/query_index/di.ts +0 -6
- package/src/modules/query_index/i18n/de.json +3 -5
- package/src/modules/query_index/i18n/en.json +3 -5
- package/src/modules/query_index/i18n/es.json +3 -5
- package/src/modules/query_index/i18n/pl.json +3 -5
- package/src/modules/query_index/lib/batch.ts +4 -11
- package/src/modules/query_index/lib/coverage.ts +14 -47
- package/src/modules/query_index/lib/document.ts +4 -35
- package/src/modules/query_index/lib/engine.ts +59 -136
- package/src/modules/query_index/lib/indexer.ts +21 -130
- package/src/modules/query_index/lib/reindexer.ts +40 -62
- package/src/modules/query_index/lib/search-tokens.ts +16 -48
- package/src/modules/query_index/lib/subscriber-scope.ts +7 -2
- package/src/modules/query_index/migrations/.snapshot-open-mercato.json +0 -12
- package/src/modules/query_index/subscribers/coverage_refresh.ts +0 -4
- package/src/modules/query_index/subscribers/delete_one.ts +1 -65
- package/src/modules/query_index/subscribers/upsert_one.ts +1 -68
- package/src/modules/resources/api/resources.ts +0 -2
- package/src/modules/resources/backend/resources/resource-types/page.tsx +1 -2
- package/src/modules/resources/backend/resources/resources/[id]/page.tsx +3 -9
- package/src/modules/resources/backend/resources/resources/page.tsx +1 -2
- package/src/modules/resources/commands/resources.ts +0 -10
- package/src/modules/resources/components/detail/dictionaries.ts +3 -3
- package/src/modules/resources/data/entities.ts +0 -3
- package/src/modules/resources/data/validators.ts +0 -5
- package/src/modules/resources/lib/seeds.ts +9 -16
- package/src/modules/resources/migrations/.snapshot-open-mercato.json +1 -17
- package/src/modules/sales/analytics.ts +0 -4
- package/src/modules/sales/api/document-history/route.ts +0 -1
- package/src/modules/sales/api/documents/factory.ts +3 -28
- package/src/modules/sales/backend/sales/documents/[id]/page.tsx +3 -11
- package/src/modules/sales/backend/sales/documents/create/page.tsx +4 -2
- package/src/modules/sales/commands/documents.ts +31 -298
- package/src/modules/sales/components/documents/ItemsSection.tsx +11 -21
- package/src/modules/sales/components/documents/LineItemDialog.tsx +5 -13
- package/src/modules/sales/components/documents/SalesDocumentForm.tsx +6 -48
- package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +1 -6
- package/src/modules/sales/components/useSalesChannelsEnabled.ts +48 -2
- package/src/modules/sales/data/validators.ts +6 -59
- package/src/modules/sales/di.ts +0 -9
- package/src/modules/sales/events.ts +0 -1
- package/src/modules/sales/i18n/de.json +0 -22
- package/src/modules/sales/i18n/en.json +0 -22
- package/src/modules/sales/i18n/es.json +0 -22
- package/src/modules/sales/i18n/pl.json +0 -22
- package/src/modules/sales/lib/historyHelpers.ts +1 -88
- package/src/modules/sales/widgets/injection/document-history/widget.client.tsx +3 -64
- package/src/modules/sales/workflows.ts +7 -10
- package/src/modules/shipping_carriers/api/webhook/[provider]/route.ts +1 -11
- package/src/modules/shipping_carriers/lib/shipment-wizard/components/PackageEditor.tsx +1 -1
- package/src/modules/staff/api/interceptors.ts +4 -6
- package/src/modules/staff/api/leave-requests.ts +47 -54
- package/src/modules/staff/components/detail/dictionaries.ts +3 -3
- package/src/modules/sync_excel/api/upload/route.ts +2 -15
- package/src/modules/wms/components/backend/ReleaseReservationDialog.tsx +1 -1
- package/src/modules/wms/components/backend/WmsConfigurationPage.tsx +4 -5
- package/src/modules/wms/components/backend/WmsInventoryConsolePage.tsx +3 -4
- package/src/modules/wms/components/backend/WmsLocationDetailPage.tsx +2 -3
- package/src/modules/wms/components/backend/WmsLotDetailPage.tsx +2 -3
- package/src/modules/wms/components/backend/WmsLotsListPage.tsx +1 -2
- package/src/modules/wms/components/backend/WmsSkuDetailPage.tsx +2 -3
- package/src/modules/wms/i18n/de.json +0 -2
- package/src/modules/wms/i18n/en.json +0 -2
- package/src/modules/wms/i18n/es.json +0 -2
- package/src/modules/wms/i18n/pl.json +0 -2
- package/src/modules/workflows/backend/definitions/page.tsx +2 -3
- package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +4 -13
- package/src/modules/workflows/backend/instances/page.tsx +9 -10
- package/src/modules/workflows/backend/tasks/page.tsx +7 -8
- package/src/modules/workflows/components/ActivitiesEditor.tsx +14 -98
- package/src/modules/workflows/components/BusinessRulesSelector.tsx +1 -1
- package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +2 -2
- package/src/modules/workflows/components/EdgeEditDialogCrudForm.tsx +2 -1
- package/src/modules/workflows/components/NodeEditDialogCrudForm.tsx +2 -1
- package/src/modules/workflows/components/StepsEditor.tsx +2 -2
- package/src/modules/workflows/components/TransitionsEditor.tsx +20 -78
- package/src/modules/workflows/components/WorkflowLegend.tsx +1 -1
- package/src/modules/workflows/components/WorkflowSelector.tsx +1 -1
- package/src/modules/workflows/components/fields/BusinessRuleConditionsEditor.tsx +1 -1
- package/src/modules/workflows/components/fields/FormFieldArrayEditor.tsx +1 -1
- package/src/modules/workflows/components/fields/MappingArrayEditor.tsx +1 -1
- package/src/modules/workflows/components/fields/StartPreConditionsEditor.tsx +1 -1
- package/src/modules/workflows/components/fields/WorkflowSelectorField.tsx +4 -4
- package/src/modules/workflows/data/validators.ts +1 -52
- package/src/modules/workflows/events.ts +0 -1
- package/src/modules/workflows/i18n/de.json +0 -3
- package/src/modules/workflows/i18n/en.json +0 -3
- package/src/modules/workflows/i18n/es.json +0 -3
- package/src/modules/workflows/i18n/pl.json +0 -3
- package/src/modules/workflows/lib/activity-executor.ts +20 -99
- package/src/modules/workflows/lib/format-validation-error.ts +0 -60
- package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +11 -27
- package/dist/generated/entities/attachment_quota_reservation/index.js +0 -33
- package/dist/generated/entities/attachment_quota_reservation/index.js.map +0 -7
- package/dist/modules/api_keys/extension-points.js +0 -16
- package/dist/modules/api_keys/extension-points.js.map +0 -7
- package/dist/modules/attachments/lib/quota-recovery-queue.js +0 -9
- package/dist/modules/attachments/lib/quota-recovery-queue.js.map +0 -7
- package/dist/modules/attachments/lib/quota-service.js +0 -224
- package/dist/modules/attachments/lib/quota-service.js.map +0 -7
- package/dist/modules/attachments/migrations/Migration20260709234741_attachments.js +0 -13
- package/dist/modules/attachments/migrations/Migration20260709234741_attachments.js.map +0 -7
- package/dist/modules/attachments/workers/quota-recovery.js +0 -45
- package/dist/modules/attachments/workers/quota-recovery.js.map +0 -7
- package/dist/modules/audit_logs/api/audit-logs/readScope.js +0 -12
- package/dist/modules/audit_logs/api/audit-logs/readScope.js.map +0 -7
- package/dist/modules/audit_logs/extension-points.js +0 -14
- package/dist/modules/audit_logs/extension-points.js.map +0 -7
- package/dist/modules/auth/extension-points.js +0 -21
- package/dist/modules/auth/extension-points.js.map +0 -7
- package/dist/modules/business_rules/api/openmercato-call-options/route.js +0 -85
- package/dist/modules/business_rules/api/openmercato-call-options/route.js.map +0 -7
- package/dist/modules/business_rules/events.js +0 -13
- package/dist/modules/business_rules/events.js.map +0 -7
- package/dist/modules/business_rules/extension-points.js +0 -13
- package/dist/modules/business_rules/extension-points.js.map +0 -7
- package/dist/modules/business_rules/lib/openmercato-call-options-types.js +0 -5
- package/dist/modules/business_rules/lib/openmercato-call-options-types.js.map +0 -7
- package/dist/modules/business_rules/lib/openmercato-call-options.js +0 -231
- package/dist/modules/business_rules/lib/openmercato-call-options.js.map +0 -7
- package/dist/modules/catalog/extension-points.js +0 -27
- package/dist/modules/catalog/extension-points.js.map +0 -7
- package/dist/modules/communication_channels/extension-points.js +0 -20
- package/dist/modules/communication_channels/extension-points.js.map +0 -7
- package/dist/modules/configs/extension-points.js +0 -18
- package/dist/modules/configs/extension-points.js.map +0 -7
- package/dist/modules/currencies/extension-points.js +0 -14
- package/dist/modules/currencies/extension-points.js.map +0 -7
- package/dist/modules/currencies/services/baseCurrencyService.js +0 -42
- package/dist/modules/currencies/services/baseCurrencyService.js.map +0 -7
- package/dist/modules/customer_accounts/emails/CustomerInvitationEmail.js +0 -26
- package/dist/modules/customer_accounts/emails/CustomerInvitationEmail.js.map +0 -7
- package/dist/modules/customer_accounts/extension-points.js +0 -14
- package/dist/modules/customer_accounts/extension-points.js.map +0 -7
- package/dist/modules/customer_accounts/lib/invitationEmail.js +0 -35
- package/dist/modules/customer_accounts/lib/invitationEmail.js.map +0 -7
- package/dist/modules/customer_accounts/migrations/Migration20260723120000_customer_accounts.js +0 -13
- package/dist/modules/customer_accounts/migrations/Migration20260723120000_customer_accounts.js.map +0 -7
- package/dist/modules/customers/extension-points.js +0 -42
- package/dist/modules/customers/extension-points.js.map +0 -7
- package/dist/modules/customers/lib/dealStatus.js +0 -38
- package/dist/modules/customers/lib/dealStatus.js.map +0 -7
- package/dist/modules/customers/lib/dealsSummaryQueries.js +0 -144
- package/dist/modules/customers/lib/dealsSummaryQueries.js.map +0 -7
- package/dist/modules/customers/lib/optionalBaseCurrency.js +0 -19
- package/dist/modules/customers/lib/optionalBaseCurrency.js.map +0 -7
- package/dist/modules/customers/migrations/Migration20260723210000_customers.js +0 -15
- package/dist/modules/customers/migrations/Migration20260723210000_customers.js.map +0 -7
- package/dist/modules/dashboards/components/UnlabelledAmountNotice.js +0 -33
- package/dist/modules/dashboards/components/UnlabelledAmountNotice.js.map +0 -7
- package/dist/modules/dashboards/lib/exactDecimal.js +0 -69
- package/dist/modules/dashboards/lib/exactDecimal.js.map +0 -7
- package/dist/modules/dashboards/lib/optionalBaseCurrency.js +0 -11
- package/dist/modules/dashboards/lib/optionalBaseCurrency.js.map +0 -7
- package/dist/modules/dashboards/subscribers/invalidateWidgetDataCache.js +0 -26
- package/dist/modules/dashboards/subscribers/invalidateWidgetDataCache.js.map +0 -7
- package/dist/modules/data_sync/extension-points.js +0 -13
- package/dist/modules/data_sync/extension-points.js.map +0 -7
- package/dist/modules/data_sync/lib/queue-policy.js +0 -15
- package/dist/modules/data_sync/lib/queue-policy.js.map +0 -7
- package/dist/modules/design_system/acl.js +0 -9
- package/dist/modules/design_system/acl.js.map +0 -7
- package/dist/modules/design_system/backend/design-system/page.js +0 -11
- package/dist/modules/design_system/backend/design-system/page.js.map +0 -7
- package/dist/modules/design_system/backend/design-system/page.meta.js +0 -15
- package/dist/modules/design_system/backend/design-system/page.meta.js.map +0 -7
- package/dist/modules/design_system/gallery/components/CodeSnippet.js +0 -52
- package/dist/modules/design_system/gallery/components/CodeSnippet.js.map +0 -7
- package/dist/modules/design_system/gallery/components/EntryCard.js +0 -63
- package/dist/modules/design_system/gallery/components/EntryCard.js.map +0 -7
- package/dist/modules/design_system/gallery/components/GalleryShell.js +0 -163
- package/dist/modules/design_system/gallery/components/GalleryShell.js.map +0 -7
- package/dist/modules/design_system/gallery/components/VariantPreview.js +0 -9
- package/dist/modules/design_system/gallery/components/VariantPreview.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/banners.js +0 -186
- package/dist/modules/design_system/gallery/entries/banners.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/buttons.js +0 -361
- package/dist/modules/design_system/gallery/entries/buttons.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/charts.js +0 -457
- package/dist/modules/design_system/gallery/entries/charts.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/dates.js +0 -306
- package/dist/modules/design_system/gallery/entries/dates.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/detail.js +0 -358
- package/dist/modules/design_system/gallery/entries/detail.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/display.js +0 -785
- package/dist/modules/design_system/gallery/entries/display.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/feedback.js +0 -658
- package/dist/modules/design_system/gallery/entries/feedback.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/filters.js +0 -505
- package/dist/modules/design_system/gallery/entries/filters.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/foundations.js +0 -453
- package/dist/modules/design_system/gallery/entries/foundations.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/icons.js +0 -140
- package/dist/modules/design_system/gallery/entries/icons.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/inputs.js +0 -1217
- package/dist/modules/design_system/gallery/entries/inputs.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/messages.js +0 -334
- package/dist/modules/design_system/gallery/entries/messages.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/navigation.js +0 -475
- package/dist/modules/design_system/gallery/entries/navigation.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/notifications.js +0 -257
- package/dist/modules/design_system/gallery/entries/notifications.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/overlays.js +0 -576
- package/dist/modules/design_system/gallery/entries/overlays.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/scaffolding.js +0 -378
- package/dist/modules/design_system/gallery/entries/scaffolding.js.map +0 -7
- package/dist/modules/design_system/gallery/entries/schedule.js +0 -297
- package/dist/modules/design_system/gallery/entries/schedule.js.map +0 -7
- package/dist/modules/design_system/gallery/registry.js +0 -139
- package/dist/modules/design_system/gallery/registry.js.map +0 -7
- package/dist/modules/design_system/gallery/types.js +0 -1
- package/dist/modules/design_system/gallery/types.js.map +0 -7
- package/dist/modules/design_system/index.js +0 -9
- package/dist/modules/design_system/index.js.map +0 -7
- package/dist/modules/design_system/setup.js +0 -14
- package/dist/modules/design_system/setup.js.map +0 -7
- package/dist/modules/dictionaries/lib/fetchAllEntries.js +0 -43
- package/dist/modules/dictionaries/lib/fetchAllEntries.js.map +0 -7
- package/dist/modules/directory/extension-points.js +0 -14
- package/dist/modules/directory/extension-points.js.map +0 -7
- package/dist/modules/directory/migrations/Migration20260626145500_directory_logo_preserve_aspect_ratio.js +0 -13
- package/dist/modules/directory/migrations/Migration20260626145500_directory_logo_preserve_aspect_ratio.js.map +0 -7
- package/dist/modules/entities/backend/config/settings/page.js +0 -10
- package/dist/modules/entities/backend/config/settings/page.js.map +0 -7
- package/dist/modules/entities/backend/config/settings/page.meta.js +0 -36
- package/dist/modules/entities/backend/config/settings/page.meta.js.map +0 -7
- package/dist/modules/entities/components/EntitySettingsManager.js +0 -136
- package/dist/modules/entities/components/EntitySettingsManager.js.map +0 -7
- package/dist/modules/entities/components/RecordListRelationCell.js +0 -63
- package/dist/modules/entities/components/RecordListRelationCell.js.map +0 -7
- package/dist/modules/entities/components/recordListRelationDisplays.js +0 -80
- package/dist/modules/entities/components/recordListRelationDisplays.js.map +0 -7
- package/dist/modules/entities/extension-points.js +0 -21
- package/dist/modules/entities/extension-points.js.map +0 -7
- package/dist/modules/feature_toggles/components/hooks/staleTime.js +0 -5
- package/dist/modules/feature_toggles/components/hooks/staleTime.js.map +0 -7
- package/dist/modules/inbox_ops/subscribers/search-reindex-proposal-created.js +0 -32
- package/dist/modules/inbox_ops/subscribers/search-reindex-proposal-created.js.map +0 -7
- package/dist/modules/integrations/extension-points.js +0 -30
- package/dist/modules/integrations/extension-points.js.map +0 -7
- package/dist/modules/integrations/widgets/injection/external-ids/widget.js +0 -14
- package/dist/modules/integrations/widgets/injection/external-ids/widget.js.map +0 -7
- package/dist/modules/messages/extension-points.js +0 -16
- package/dist/modules/messages/extension-points.js.map +0 -7
- package/dist/modules/messages/lib/participantScope.js +0 -15
- package/dist/modules/messages/lib/participantScope.js.map +0 -7
- package/dist/modules/notifications/lib/notificationScope.js +0 -26
- package/dist/modules/notifications/lib/notificationScope.js.map +0 -7
- package/dist/modules/payment_gateways/extension-points.js +0 -19
- package/dist/modules/payment_gateways/extension-points.js.map +0 -7
- package/dist/modules/payment_gateways/lib/capture-ledger.js +0 -183
- package/dist/modules/payment_gateways/lib/capture-ledger.js.map +0 -7
- package/dist/modules/payment_gateways/lib/order-amount-reconciliation.js +0 -58
- package/dist/modules/payment_gateways/lib/order-amount-reconciliation.js.map +0 -7
- package/dist/modules/payment_gateways/migrations/Migration20260725101500_payment_gateways.js +0 -16
- package/dist/modules/payment_gateways/migrations/Migration20260725101500_payment_gateways.js.map +0 -7
- package/dist/modules/payment_gateways/migrations/Migration20260803103035_payment_gateways.js +0 -18
- package/dist/modules/payment_gateways/migrations/Migration20260803103035_payment_gateways.js.map +0 -7
- package/dist/modules/payment_gateways/workers/session-initialization-prune.js +0 -50
- package/dist/modules/payment_gateways/workers/session-initialization-prune.js.map +0 -7
- package/dist/modules/portal/extension-points.js +0 -32
- package/dist/modules/portal/extension-points.js.map +0 -7
- package/dist/modules/portal/frontend/[orgSlug]/portal/invite/page.js +0 -134
- package/dist/modules/portal/frontend/[orgSlug]/portal/invite/page.js.map +0 -7
- package/dist/modules/portal/frontend/[orgSlug]/portal/invite/page.meta.js +0 -11
- package/dist/modules/portal/frontend/[orgSlug]/portal/invite/page.meta.js.map +0 -7
- package/dist/modules/portal/lib/navigation.js +0 -7
- package/dist/modules/portal/lib/navigation.js.map +0 -7
- package/dist/modules/query_index/events.js +0 -20
- package/dist/modules/query_index/events.js.map +0 -7
- package/dist/modules/query_index/extension-points.js +0 -13
- package/dist/modules/query_index/extension-points.js.map +0 -7
- package/dist/modules/query_index/migrations/Migration20260731105052_query_index.js +0 -17
- package/dist/modules/query_index/migrations/Migration20260731105052_query_index.js.map +0 -7
- package/dist/modules/resources/extension-points.js +0 -14
- package/dist/modules/resources/extension-points.js.map +0 -7
- package/dist/modules/resources/migrations/Migration20260608231000.js +0 -13
- package/dist/modules/resources/migrations/Migration20260608231000.js.map +0 -7
- package/dist/modules/sales/components/documents/SalesOrderDraftLines.js +0 -167
- package/dist/modules/sales/components/documents/SalesOrderDraftLines.js.map +0 -7
- package/dist/modules/sales/extension-points.js +0 -36
- package/dist/modules/sales/extension-points.js.map +0 -7
- package/dist/modules/sales/services/paymentOrderTotalResolver.js +0 -52
- package/dist/modules/sales/services/paymentOrderTotalResolver.js.map +0 -7
- package/dist/modules/wms/extension-points.js +0 -26
- package/dist/modules/wms/extension-points.js.map +0 -7
- package/dist/modules/workflows/extension-points.js +0 -15
- package/dist/modules/workflows/extension-points.js.map +0 -7
- package/dist/modules/workflows/widgets/injection/order-approval/context-keys.js +0 -10
- package/dist/modules/workflows/widgets/injection/order-approval/context-keys.js.map +0 -7
- package/generated/entities/attachment_quota_reservation/index.ts +0 -15
- package/src/modules/api_keys/extension-points.ts +0 -13
- package/src/modules/api_keys/i18n/ko.json +0 -42
- package/src/modules/attachments/i18n/ko.json +0 -175
- package/src/modules/attachments/lib/quota-recovery-queue.ts +0 -16
- package/src/modules/attachments/lib/quota-service.ts +0 -442
- package/src/modules/attachments/migrations/Migration20260709234741_attachments.ts +0 -12
- package/src/modules/attachments/workers/quota-recovery.ts +0 -68
- package/src/modules/audit_logs/api/audit-logs/readScope.ts +0 -28
- package/src/modules/audit_logs/extension-points.ts +0 -11
- package/src/modules/audit_logs/i18n/ko.json +0 -66
- package/src/modules/auth/extension-points.ts +0 -18
- package/src/modules/auth/i18n/ko.json +0 -255
- package/src/modules/business_rules/api/openmercato-call-options/route.ts +0 -94
- package/src/modules/business_rules/events.ts +0 -10
- package/src/modules/business_rules/extension-points.ts +0 -10
- package/src/modules/business_rules/i18n/ko.json +0 -396
- package/src/modules/business_rules/lib/openmercato-call-options-types.ts +0 -31
- package/src/modules/business_rules/lib/openmercato-call-options.ts +0 -297
- package/src/modules/catalog/extension-points.ts +0 -24
- package/src/modules/catalog/i18n/ko.json +0 -723
- package/src/modules/communication_channels/extension-points.ts +0 -17
- package/src/modules/communication_channels/i18n/ko.json +0 -138
- package/src/modules/configs/extension-points.ts +0 -15
- package/src/modules/configs/i18n/ko.json +0 -197
- package/src/modules/currencies/extension-points.ts +0 -11
- package/src/modules/currencies/i18n/ko.json +0 -160
- package/src/modules/currencies/services/baseCurrencyService.ts +0 -59
- package/src/modules/customer_accounts/emails/CustomerInvitationEmail.tsx +0 -45
- package/src/modules/customer_accounts/extension-points.ts +0 -11
- package/src/modules/customer_accounts/i18n/ko.json +0 -354
- package/src/modules/customer_accounts/lib/invitationEmail.ts +0 -42
- package/src/modules/customer_accounts/migrations/Migration20260723120000_customer_accounts.ts +0 -13
- package/src/modules/customers/extension-points.ts +0 -40
- package/src/modules/customers/i18n/ko.json +0 -2855
- package/src/modules/customers/lib/dealStatus.ts +0 -48
- package/src/modules/customers/lib/dealsSummaryQueries.ts +0 -211
- package/src/modules/customers/lib/optionalBaseCurrency.ts +0 -34
- package/src/modules/customers/migrations/Migration20260723210000_customers.ts +0 -15
- package/src/modules/dashboards/components/UnlabelledAmountNotice.tsx +0 -43
- package/src/modules/dashboards/i18n/ko.json +0 -118
- package/src/modules/dashboards/lib/exactDecimal.ts +0 -96
- package/src/modules/dashboards/lib/optionalBaseCurrency.ts +0 -22
- package/src/modules/dashboards/subscribers/invalidateWidgetDataCache.ts +0 -32
- package/src/modules/data_sync/extension-points.ts +0 -10
- package/src/modules/data_sync/i18n/ko.json +0 -125
- package/src/modules/data_sync/lib/queue-policy.ts +0 -30
- package/src/modules/design_system/AGENTS.md +0 -34
- package/src/modules/design_system/acl.ts +0 -5
- package/src/modules/design_system/backend/design-system/page.meta.ts +0 -11
- package/src/modules/design_system/backend/design-system/page.tsx +0 -14
- package/src/modules/design_system/gallery/components/CodeSnippet.tsx +0 -55
- package/src/modules/design_system/gallery/components/EntryCard.tsx +0 -95
- package/src/modules/design_system/gallery/components/GalleryShell.tsx +0 -206
- package/src/modules/design_system/gallery/components/VariantPreview.tsx +0 -15
- package/src/modules/design_system/gallery/entries/banners.tsx +0 -226
- package/src/modules/design_system/gallery/entries/buttons.tsx +0 -422
- package/src/modules/design_system/gallery/entries/charts.tsx +0 -518
- package/src/modules/design_system/gallery/entries/dates.tsx +0 -325
- package/src/modules/design_system/gallery/entries/detail.tsx +0 -403
- package/src/modules/design_system/gallery/entries/display.tsx +0 -893
- package/src/modules/design_system/gallery/entries/feedback.tsx +0 -746
- package/src/modules/design_system/gallery/entries/filters.tsx +0 -570
- package/src/modules/design_system/gallery/entries/foundations.tsx +0 -529
- package/src/modules/design_system/gallery/entries/icons.tsx +0 -168
- package/src/modules/design_system/gallery/entries/inputs.tsx +0 -1516
- package/src/modules/design_system/gallery/entries/messages.tsx +0 -339
- package/src/modules/design_system/gallery/entries/navigation.tsx +0 -573
- package/src/modules/design_system/gallery/entries/notifications.tsx +0 -285
- package/src/modules/design_system/gallery/entries/overlays.tsx +0 -677
- package/src/modules/design_system/gallery/entries/scaffolding.tsx +0 -430
- package/src/modules/design_system/gallery/entries/schedule.tsx +0 -307
- package/src/modules/design_system/gallery/registry.ts +0 -152
- package/src/modules/design_system/gallery/types.ts +0 -32
- package/src/modules/design_system/i18n/.hardcoded-allowlist.json +0 -71
- package/src/modules/design_system/i18n/de.json +0 -58
- package/src/modules/design_system/i18n/en.json +0 -58
- package/src/modules/design_system/i18n/es.json +0 -58
- package/src/modules/design_system/i18n/ko.json +0 -58
- package/src/modules/design_system/i18n/pl.json +0 -58
- package/src/modules/design_system/index.ts +0 -7
- package/src/modules/design_system/setup.ts +0 -12
- package/src/modules/dictionaries/i18n/ko.json +0 -130
- package/src/modules/dictionaries/lib/fetchAllEntries.ts +0 -72
- package/src/modules/directory/extension-points.ts +0 -11
- package/src/modules/directory/i18n/ko.json +0 -105
- package/src/modules/directory/migrations/Migration20260626145500_directory_logo_preserve_aspect_ratio.ts +0 -13
- package/src/modules/entities/backend/config/settings/page.meta.ts +0 -34
- package/src/modules/entities/backend/config/settings/page.tsx +0 -12
- package/src/modules/entities/components/EntitySettingsManager.tsx +0 -160
- package/src/modules/entities/components/RecordListRelationCell.tsx +0 -90
- package/src/modules/entities/components/recordListRelationDisplays.ts +0 -109
- package/src/modules/entities/extension-points.ts +0 -18
- package/src/modules/entities/i18n/ko.json +0 -260
- package/src/modules/feature_toggles/components/hooks/staleTime.ts +0 -5
- package/src/modules/feature_toggles/i18n/ko.json +0 -96
- package/src/modules/inbox_ops/i18n/ko.json +0 -196
- package/src/modules/inbox_ops/subscribers/search-reindex-proposal-created.ts +0 -39
- package/src/modules/integrations/extension-points.ts +0 -27
- package/src/modules/integrations/i18n/ko.json +0 -129
- package/src/modules/integrations/widgets/injection/external-ids/widget.ts +0 -13
- package/src/modules/messages/extension-points.ts +0 -13
- package/src/modules/messages/i18n/ko.json +0 -263
- package/src/modules/messages/lib/participantScope.ts +0 -64
- package/src/modules/notifications/i18n/ko.json +0 -55
- package/src/modules/notifications/lib/notificationScope.ts +0 -40
- package/src/modules/payment_gateways/extension-points.ts +0 -16
- package/src/modules/payment_gateways/i18n/ko.json +0 -87
- package/src/modules/payment_gateways/lib/capture-ledger.ts +0 -260
- package/src/modules/payment_gateways/lib/order-amount-reconciliation.ts +0 -93
- package/src/modules/payment_gateways/migrations/Migration20260725101500_payment_gateways.ts +0 -21
- package/src/modules/payment_gateways/migrations/Migration20260803103035_payment_gateways.ts +0 -17
- package/src/modules/payment_gateways/workers/session-initialization-prune.ts +0 -63
- package/src/modules/planner/i18n/ko.json +0 -565
- package/src/modules/portal/extension-points.ts +0 -30
- package/src/modules/portal/frontend/[orgSlug]/portal/invite/page.meta.ts +0 -9
- package/src/modules/portal/frontend/[orgSlug]/portal/invite/page.tsx +0 -164
- package/src/modules/portal/i18n/ko.json +0 -143
- package/src/modules/portal/lib/navigation.ts +0 -3
- package/src/modules/progress/i18n/ko.json +0 -20
- package/src/modules/query_index/events.ts +0 -17
- package/src/modules/query_index/extension-points.ts +0 -10
- package/src/modules/query_index/i18n/ko.json +0 -69
- package/src/modules/query_index/migrations/Migration20260731105052_query_index.ts +0 -35
- package/src/modules/resources/extension-points.ts +0 -11
- package/src/modules/resources/i18n/ko.json +0 -770
- package/src/modules/resources/migrations/Migration20260608231000.ts +0 -13
- package/src/modules/sales/components/documents/SalesOrderDraftLines.tsx +0 -198
- package/src/modules/sales/extension-points.ts +0 -33
- package/src/modules/sales/i18n/ko.json +0 -1442
- package/src/modules/sales/services/paymentOrderTotalResolver.ts +0 -67
- package/src/modules/shipping_carriers/i18n/ko.json +0 -85
- package/src/modules/staff/i18n/ko.json +0 -1162
- package/src/modules/sync_excel/i18n/ko.json +0 -107
- package/src/modules/translations/i18n/ko.json +0 -45
- package/src/modules/wms/extension-points.ts +0 -23
- package/src/modules/wms/i18n/ko.json +0 -1053
- package/src/modules/workflows/extension-points.ts +0 -12
- package/src/modules/workflows/i18n/ko.json +0 -1204
- package/src/modules/workflows/widgets/injection/order-approval/context-keys.ts +0 -18
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import { extensionPoints } from "@open-mercato/core/modules/sales/extension-points";
|
|
5
4
|
import Link from "next/link";
|
|
6
5
|
import { useRouter } from "next/navigation";
|
|
7
6
|
import { Page, PageBody } from "@open-mercato/ui/backend/Page";
|
|
@@ -578,9 +577,7 @@ function SalesDocumentsTable({ kind }) {
|
|
|
578
577
|
]
|
|
579
578
|
}
|
|
580
579
|
),
|
|
581
|
-
perspective: {
|
|
582
|
-
tableId: kind === "order" ? extensionPoints.hosts.ordersTable.tableId : extensionPoints.hosts.quotesTable.tableId
|
|
583
|
-
},
|
|
580
|
+
perspective: { tableId: kind === "order" ? "sales.orders" : "sales.quotes" },
|
|
584
581
|
onRowClick: handleRowClick,
|
|
585
582
|
emptyState: /* @__PURE__ */ jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: emptyLabel })
|
|
586
583
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/modules/sales/components/documents/SalesDocumentsTable.tsx"],
|
|
4
|
-
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { extensionPoints } from '@open-mercato/core/modules/sales/extension-points'\nimport Link from 'next/link'\nimport { useRouter } from 'next/navigation'\nimport type { ColumnDef, SortingState } from '@tanstack/react-table'\nimport { Page, PageBody } from '@open-mercato/ui/backend/Page'\nimport { DataTable, type DataTableExportFormat, withDataTableNamespaces } from '@open-mercato/ui/backend/DataTable'\nimport type { FilterDef, FilterValues } from '@open-mercato/ui/backend/FilterBar'\nimport { RowActions } from '@open-mercato/ui/backend/RowActions'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { apiCall, withScopedApiRequestHeaders } from '@open-mercato/ui/backend/utils/apiCall'\nimport { buildOptimisticLockHeader } from '@open-mercato/ui/backend/utils/optimisticLock'\nimport { buildCrudExportUrl, deleteCrud } from '@open-mercato/ui/backend/utils/crud'\nimport { flash } from '@open-mercato/ui/backend/FlashMessages'\nimport { useOrganizationScopeVersion } from '@open-mercato/shared/lib/frontend/useOrganizationScope'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { useConfirmDialog } from '@open-mercato/ui/backend/confirm-dialog'\nimport { E } from '#generated/entities.ids.generated'\nimport {\n DictionaryValue,\n type DictionaryMap,\n createDictionaryMap,\n normalizeDictionaryEntries,\n} from '@open-mercato/core/modules/dictionaries/components/dictionaryAppearance'\nimport { SALES_DOCUMENT_NUMBER_COLUMN_META } from './salesDocumentsColumns'\nimport { useSalesChannelsEnabled } from '../useSalesChannelsEnabled'\nimport { createLogger } from '@open-mercato/shared/lib/logger'\n\nconst logger = createLogger('sales')\n\ntype SalesDocumentKind = 'order' | 'quote'\n\ntype FilterOption = { value: string; label: string; description?: string | null }\n\ntype CustomerSnapshot = {\n customer?: {\n displayName?: string | null\n primaryEmail?: string | null\n } | null\n contact?: {\n firstName?: string | null\n lastName?: string | null\n preferredName?: string | null\n } | null\n}\n\ntype ApiDocument = {\n id: string\n orderNumber?: string | null\n quoteNumber?: string | null\n status?: string | null\n customerEntityId?: string | null\n customerSnapshot?: Record<string, unknown> | null\n channelId?: string | null\n lineItemCount?: number | null\n grandTotalNetAmount?: number | null\n grandTotalGrossAmount?: number | null\n currencyCode?: string | null\n placedAt?: string | null\n validUntil?: string | null\n validFrom?: string | null\n createdAt?: string | null\n updatedAt?: string | null\n}\n\ntype DocumentsResponse = {\n items?: Array<Record<string, unknown>>\n total?: number\n totalPages?: number\n}\n\ntype SalesDocumentRow = {\n id: string\n number: string\n status?: string | null\n customerName?: string | null\n customerEmail?: string | null\n channelId?: string | null\n lineItemCount?: number | null\n totalNet?: number | null\n totalGross?: number | null\n currency?: string | null\n date?: string | null\n updatedAt?: string | null\n}\n\nconst PAGE_SIZE = 20\n\nfunction resolveCustomerName(snapshot: CustomerSnapshot | null | undefined, fallback?: string | null) {\n if (!snapshot) return fallback ?? null\n const base = snapshot.customer?.displayName ?? null\n if (base) return base\n const contact = snapshot.contact\n if (contact) {\n const parts = [contact.preferredName, contact.firstName, contact.lastName].filter(\n (part) => part && part.trim().length\n ) as string[]\n if (parts.length) return parts.join(' ')\n }\n return fallback ?? null\n}\n\nfunction resolveCustomerEmail(snapshot: CustomerSnapshot | null | undefined) {\n if (!snapshot) return null\n if (snapshot.customer?.primaryEmail) return snapshot.customer.primaryEmail\n return null\n}\n\nfunction toNumber(value: unknown): number | null {\n if (typeof value === 'number') return Number.isNaN(value) ? null : value\n if (typeof value === 'string' && value.trim().length) {\n const parsed = Number(value)\n return Number.isNaN(parsed) ? null : parsed\n }\n return null\n}\n\nfunction formatCurrency(amount: number | null | undefined, currency: string | null | undefined, fallback = '\u2014') {\n if (amount == null || Number.isNaN(amount)) return fallback\n try {\n if (currency && currency.trim().length) {\n const formatter = new Intl.NumberFormat(undefined, { style: 'currency', currency })\n return formatter.format(amount)\n }\n return new Intl.NumberFormat(undefined, { style: 'decimal', maximumFractionDigits: 2 }).format(amount)\n } catch {\n return String(amount)\n }\n}\n\nfunction mergeOptions(existing: FilterOption[], next: FilterOption[]): FilterOption[] {\n const map = new Map<string, FilterOption>()\n existing.forEach((opt) => map.set(opt.value, opt))\n next.forEach((opt) => map.set(opt.value, opt))\n return Array.from(map.values()).sort((a, b) => a.label.localeCompare(b.label))\n}\n\nfunction normalizeNumberInput(value: unknown): number | null {\n if (typeof value === 'number') return Number.isNaN(value) ? null : value\n if (typeof value === 'string' && value.trim().length) {\n const parsed = Number(value)\n return Number.isNaN(parsed) ? null : parsed\n }\n return null\n}\n\nexport function SalesDocumentsTable({ kind }: { kind: SalesDocumentKind }) {\n const t = useT()\n const { enabled: channelsEnabled } = useSalesChannelsEnabled()\n const router = useRouter()\n const scopeVersion = useOrganizationScopeVersion()\n const { confirm, ConfirmDialogElement } = useConfirmDialog()\n const [rows, setRows] = React.useState<SalesDocumentRow[]>([])\n const [page, setPage] = React.useState(1)\n const [total, setTotal] = React.useState(0)\n const [totalPages, setTotalPages] = React.useState(1)\n const [sorting, setSorting] = React.useState<SortingState>([{ id: 'createdAt', desc: true }])\n const [search, setSearch] = React.useState('')\n const [filterValues, setFilterValues] = React.useState<FilterValues>({})\n const [isLoading, setLoading] = React.useState(false)\n const [cacheStatus, setCacheStatus] = React.useState<'hit' | 'miss' | null>(null)\n const [reloadToken, setReloadToken] = React.useState(0)\n const [channelOptions, setChannelOptions] = React.useState<FilterOption[]>([])\n const [tagOptions, setTagOptions] = React.useState<FilterOption[]>([])\n const [customerOptions, setCustomerOptions] = React.useState<FilterOption[]>([])\n const [statusMap, setStatusMap] = React.useState<DictionaryMap>({})\n\n const resource = kind === 'order' ? 'orders' : 'quotes'\n const entityId = kind === 'order' ? E.sales.sales_order : E.sales.sales_quote\n const title = kind === 'order'\n ? t('sales.documents.list.ordersTitle', 'Sales orders')\n : t('sales.documents.list.quotesTitle', 'Sales quotes')\n const subtitle = t(\n 'sales.documents.list.subtitle',\n 'Review documents with customer context, totals, and channels.'\n )\n\n const fetchChannelOptions = React.useCallback(async (query?: string): Promise<FilterOption[]> => {\n const params = new URLSearchParams({ page: '1', pageSize: '50' })\n if (query && query.trim()) params.set('search', query.trim())\n try {\n const call = await apiCall<{ items?: unknown[] }>(`/api/sales/channels?${params.toString()}`)\n if (!call.ok) return []\n const items = Array.isArray(call.result?.items) ? call.result!.items : []\n return items\n .map((item: any): FilterOption | null => {\n const id = typeof item?.id === 'string' ? item.id : null\n const name = typeof item?.name === 'string' ? item.name : null\n if (!id || !name) return null\n return { value: id, label: name }\n })\n .filter((opt): opt is FilterOption => opt !== null)\n } catch {\n return []\n }\n }, [])\n\n const fetchTagOptions = React.useCallback(async (query?: string): Promise<FilterOption[]> => {\n const params = new URLSearchParams({ page: '1', pageSize: '50' })\n if (query && query.trim()) params.set('search', query.trim())\n try {\n const call = await apiCall<{ items?: unknown[] }>(`/api/sales/tags?${params.toString()}`)\n if (!call.ok) return []\n const items = Array.isArray(call.result?.items) ? call.result!.items : []\n return items\n .map((item: any): FilterOption | null => {\n const id = typeof item?.id === 'string' ? item.id : null\n const label = typeof item?.label === 'string' ? item.label : null\n if (!id || !label) return null\n const description = typeof item?.description === 'string' ? item.description : null\n return { value: id, label, description }\n })\n .filter((opt): opt is FilterOption => opt !== null)\n } catch {\n return []\n }\n }, [])\n\n const fetchCustomerOptions = React.useCallback(async (query?: string): Promise<FilterOption[]> => {\n const params = new URLSearchParams({ page: '1', pageSize: '20' })\n if (query && query.trim().length) params.set('search', query.trim())\n try {\n const [people, companies] = await Promise.all([\n apiCall<{ items?: unknown[] }>(`/api/customers/people?${params.toString()}`),\n apiCall<{ items?: unknown[] }>(`/api/customers/companies?${params.toString()}`),\n ])\n const peopleItems = Array.isArray(people.result?.items) ? people.result?.items ?? [] : []\n const companyItems = Array.isArray(companies.result?.items) ? companies.result?.items ?? [] : []\n const parseOption = (item: any, kind: 'person' | 'company'): FilterOption | null => {\n const id = typeof item?.id === 'string' ? item.id : null\n if (!id) return null\n const name =\n typeof item?.display_name === 'string' && item.display_name.trim().length\n ? item.display_name\n : typeof item?.name === 'string' && item.name.trim().length\n ? item.name\n : id\n const email =\n typeof item?.primary_email === 'string' && item.primary_email.trim().length\n ? item.primary_email.trim()\n : null\n const label = email ? `${name} (${email})` : name\n return { value: id, label }\n }\n const options = [...peopleItems.map((i) => parseOption(i, 'person')), ...companyItems.map((i) => parseOption(i, 'company'))]\n .filter((opt): opt is FilterOption => !!opt)\n return options\n } catch {\n return []\n }\n }, [])\n\n const loadStatusMap = React.useCallback(async () => {\n try {\n const params = new URLSearchParams({ page: '1', pageSize: '100' })\n const response = await apiCall<{ items?: Array<Record<string, unknown>> }>(\n `/api/sales/order-statuses?${params.toString()}`,\n undefined,\n { fallback: { items: [] } }\n )\n const entries = normalizeDictionaryEntries(response.result?.items ?? [], { sort: false })\n setStatusMap(createDictionaryMap(entries))\n } catch (err) {\n logger.error('sales.documents.statuses.load', { err })\n setStatusMap({})\n }\n }, [])\n\n const loadChannelOptions = React.useCallback(\n async (query?: string) => {\n const opts = await fetchChannelOptions(query)\n if (opts.length) setChannelOptions((prev) => mergeOptions(prev, opts))\n return opts\n },\n [fetchChannelOptions]\n )\n\n const loadTagOptions = React.useCallback(\n async (query?: string) => {\n const opts = await fetchTagOptions(query)\n if (opts.length) setTagOptions((prev) => mergeOptions(prev, opts))\n return opts\n },\n [fetchTagOptions]\n )\n\n const loadCustomerOptions = React.useCallback(\n async (query?: string) => {\n const opts = await fetchCustomerOptions(query)\n if (opts.length) setCustomerOptions((prev) => mergeOptions(prev, opts))\n return opts\n },\n [fetchCustomerOptions]\n )\n\n React.useEffect(() => {\n if (channelsEnabled) loadChannelOptions().catch(() => {})\n loadTagOptions().catch(() => {})\n loadCustomerOptions().catch(() => {})\n loadStatusMap().catch(() => setStatusMap({}))\n }, [channelsEnabled, loadChannelOptions, loadCustomerOptions, loadStatusMap, loadTagOptions, scopeVersion])\n\n const filters = React.useMemo<FilterDef[]>(() => [\n ...(channelsEnabled ? [{\n id: 'channelId',\n label: t('sales.documents.list.filters.channel', 'Channel'),\n type: 'select',\n options: channelOptions,\n loadOptions: loadChannelOptions,\n } satisfies FilterDef] : []),\n {\n id: 'date',\n label: t('sales.documents.list.filters.date', 'Date'),\n type: 'dateRange',\n },\n {\n id: 'lineItemCountMin',\n label: t('sales.documents.list.filters.itemsMin', 'Min items'),\n type: 'text',\n },\n {\n id: 'lineItemCountMax',\n label: t('sales.documents.list.filters.itemsMax', 'Max items'),\n type: 'text',\n },\n {\n id: 'totalNetMin',\n label: t('sales.documents.list.filters.totalNetMin', 'Min total (net)'),\n type: 'text',\n },\n {\n id: 'totalNetMax',\n label: t('sales.documents.list.filters.totalNetMax', 'Max total (net)'),\n type: 'text',\n },\n {\n id: 'totalGrossMin',\n label: t('sales.documents.list.filters.totalGrossMin', 'Min total (gross)'),\n type: 'text',\n },\n {\n id: 'totalGrossMax',\n label: t('sales.documents.list.filters.totalGrossMax', 'Max total (gross)'),\n type: 'text',\n },\n {\n id: 'customerId',\n label: t('sales.documents.list.filters.customer', 'Customer'),\n type: 'tags',\n options: customerOptions,\n loadOptions: loadCustomerOptions,\n placeholder: t('sales.documents.list.filters.customerPlaceholder', 'Search customers'),\n formatValue: (val: string) => {\n const match = customerOptions.find((opt) => opt.value === val)\n return match?.label ?? val\n },\n },\n {\n id: 'tagIds',\n label: t('sales.documents.list.filters.tags', 'Tags'),\n type: 'tags',\n options: tagOptions,\n loadOptions: loadTagOptions,\n formatValue: (val: string) => tagOptions.find((o) => o.value === val)?.label ?? val,\n formatDescription: (val: string) => tagOptions.find((o) => o.value === val)?.description ?? null,\n },\n ], [channelsEnabled, channelOptions, loadChannelOptions, customerOptions, loadCustomerOptions, loadTagOptions, tagOptions, t])\n\n const queryParams = React.useMemo(() => {\n const params = new URLSearchParams()\n params.set('page', String(page))\n params.set('pageSize', String(PAGE_SIZE))\n if (search.trim()) params.set('search', search.trim())\n const sort = sorting[0]\n if (sort?.id) {\n params.set('sortField', sort.id)\n params.set('sortDir', sort.desc ? 'desc' : 'asc')\n }\n const channelId = typeof filterValues.channelId === 'string' ? filterValues.channelId : ''\n if (channelId) params.set('channelId', channelId)\n const customerIds = Array.isArray(filterValues.customerId)\n ? filterValues.customerId\n .map((value) => (typeof value === 'string' ? value.trim() : String(value || '').trim()))\n .filter((value) => value.length > 0)\n : []\n if (customerIds.length > 0) {\n params.set('customerId', customerIds[0])\n }\n const date = filterValues.date\n if (date && typeof date === 'object') {\n if (date.from) params.set('dateFrom', date.from)\n if (date.to) params.set('dateTo', date.to)\n }\n const numberFilters: Array<[keyof FilterValues, string]> = [\n ['lineItemCountMin', 'lineItemCountMin'],\n ['lineItemCountMax', 'lineItemCountMax'],\n ['totalNetMin', 'totalNetMin'],\n ['totalNetMax', 'totalNetMax'],\n ['totalGrossMin', 'totalGrossMin'],\n ['totalGrossMax', 'totalGrossMax'],\n ]\n numberFilters.forEach(([key, queryKey]) => {\n const value = normalizeNumberInput((filterValues as any)[key])\n if (value != null) params.set(queryKey, String(value))\n })\n const tagIds = Array.isArray(filterValues.tagIds)\n ? filterValues.tagIds.map((value) => (typeof value === 'string' ? value.trim() : String(value || '').trim())).filter((v) => v.length > 0)\n : []\n if (tagIds.length > 0) {\n params.set('tagIds', tagIds.join(','))\n }\n Object.entries(filterValues).forEach(([key, value]) => {\n if (!key.startsWith('cf_') || value == null) return\n if (Array.isArray(value)) {\n const normalized = value\n .map((item) => {\n if (item == null) return ''\n if (typeof item === 'string') return item.trim()\n return String(item).trim()\n })\n .filter((item) => item.length > 0)\n if (normalized.length) params.set(key, normalized.join(','))\n } else if (typeof value === 'object') {\n return\n } else if (value !== '') {\n const stringValue = typeof value === 'string' ? value.trim() : String(value)\n if (stringValue) params.set(key, stringValue)\n }\n })\n return params.toString()\n }, [filterValues, page, search, sorting])\n\n const currentParams = React.useMemo(() => Object.fromEntries(new URLSearchParams(queryParams)), [queryParams])\n\n const exportConfig = React.useMemo(() => ({\n view: {\n getUrl: (format: DataTableExportFormat) =>\n buildCrudExportUrl(`sales/${resource}`, { ...currentParams, exportScope: 'view' }, format),\n },\n full: {\n getUrl: (format: DataTableExportFormat) =>\n buildCrudExportUrl(`sales/${resource}`, { ...currentParams, exportScope: 'full', all: 'true' }, format),\n },\n }), [currentParams, resource])\n\n const mapApiDocument = React.useCallback(\n (item: Record<string, unknown>): SalesDocumentRow => {\n const doc = item as ApiDocument\n const id = typeof doc.id === 'string' ? doc.id : ''\n const number = kind === 'order'\n ? doc.orderNumber ?? (item as any)?.order_number ?? id\n : doc.quoteNumber ?? (item as any)?.quote_number ?? id\n const customerSnapshot = (doc.customerSnapshot ?? null) as CustomerSnapshot | null\n const customerName = resolveCustomerName(customerSnapshot, doc.customerEntityId ?? null)\n const customerEmail = resolveCustomerEmail(customerSnapshot)\n const totalNet = toNumber(doc.grandTotalNetAmount)\n const totalGross = toNumber(doc.grandTotalGrossAmount)\n const placedAt = doc.placedAt ?? null\n const validUntil = doc.validUntil ?? null\n const createdAt = doc.createdAt ?? null\n const date = placedAt ?? validUntil ?? createdAt ?? null\n return withDataTableNamespaces({\n id,\n number,\n status: doc.status ?? null,\n customerName,\n customerEmail,\n channelId: doc.channelId ?? null,\n lineItemCount: doc.lineItemCount ?? null,\n totalNet,\n totalGross,\n currency: doc.currencyCode ?? null,\n date,\n updatedAt: doc.updatedAt ?? null,\n }, item)\n },\n [kind]\n )\n\n const loadDocuments = React.useCallback(async () => {\n setLoading(true)\n setCacheStatus(null)\n try {\n const call = await apiCall<DocumentsResponse>(`/api/sales/${resource}?${queryParams}`)\n if (!call.ok) {\n flash(t('sales.documents.list.errors.load', 'Failed to load documents.'), 'error')\n setRows([])\n setTotal(0)\n setTotalPages(1)\n return\n }\n const payload = call.result ?? {}\n const items = Array.isArray(payload.items) ? payload.items : []\n setRows(items.map((item) => mapApiDocument(item)))\n const count = typeof payload.total === 'number' ? payload.total : items.length\n setTotal(count)\n const pages = typeof payload.totalPages === 'number'\n ? payload.totalPages\n : Math.max(1, Math.ceil(count / PAGE_SIZE))\n setTotalPages(pages)\n setCacheStatus(call.cacheStatus ?? null)\n } catch (err) {\n logger.error('sales.documents.list', { err })\n flash(t('sales.documents.list.errors.load', 'Failed to load documents.'), 'error')\n } finally {\n setLoading(false)\n }\n }, [mapApiDocument, queryParams, resource, t])\n\n React.useEffect(() => {\n void loadDocuments()\n }, [loadDocuments, reloadToken, scopeVersion])\n\n const handleFiltersApply = React.useCallback((values: FilterValues) => {\n setFilterValues(values)\n setPage(1)\n }, [])\n\n const handleFiltersClear = React.useCallback(() => {\n setFilterValues({})\n setPage(1)\n }, [])\n\n const handleSearchChange = React.useCallback((value: string) => {\n setSearch(value)\n setPage(1)\n }, [])\n\n const handleRefresh = React.useCallback(() => {\n setReloadToken((token) => token + 1)\n }, [])\n\n const handleDelete = React.useCallback(\n async (row: SalesDocumentRow) => {\n const confirmMessage =\n kind === 'order'\n ? t(\n 'sales.documents.list.table.deleteOrderConfirm',\n 'Delete this sales order? Related shipments, payments, addresses, and items will be removed.'\n )\n : t(\n 'sales.documents.list.table.deleteQuoteConfirm',\n 'Delete this sales quote? Related addresses, comments, and items will be removed.'\n )\n const confirmed = await confirm({\n title: confirmMessage,\n variant: 'destructive',\n })\n if (!confirmed) return\n try {\n const result = await withScopedApiRequestHeaders(\n buildOptimisticLockHeader(row.updatedAt),\n () =>\n deleteCrud(`sales/${resource}`, row.id, {\n errorMessage: t('sales.documents.list.table.deleteError', 'Failed to delete document.'),\n }),\n )\n if (result.ok) {\n flash(\n kind === 'order'\n ? t('sales.documents.list.table.orderDeleted', 'Sales order deleted.')\n : t('sales.documents.list.table.quoteDeleted', 'Sales quote deleted.'),\n 'success'\n )\n handleRefresh()\n }\n } catch (err) {\n logger.error('sales.documents.delete', { err })\n flash(t('sales.documents.list.table.deleteError', 'Failed to delete document.'), 'error')\n }\n },\n [confirm, handleRefresh, kind, resource, t]\n )\n\n const handleRowClick = React.useCallback((row: SalesDocumentRow) => {\n router.push(`/backend/sales/${resource}/${row.id}?kind=${kind}`)\n }, [kind, resource, router])\n\n const columns = React.useMemo<ColumnDef<SalesDocumentRow>[]>(() => [\n {\n id: 'number',\n accessorKey: 'number',\n header: kind === 'order'\n ? t('sales.documents.list.table.order', 'Order')\n : t('sales.documents.list.table.quote', 'Quote'),\n cell: ({ row }) => (\n <div className=\"flex flex-col\">\n <span className=\"font-semibold\">{row.original.number}</span>\n {row.original.status ? (\n <DictionaryValue\n value={row.original.status}\n map={statusMap}\n fallback={<span className=\"text-xs text-muted-foreground\">{row.original.status}</span>}\n className=\"text-xs text-muted-foreground font-medium\"\n iconWrapperClassName=\"inline-flex h-5 w-5 items-center justify-center rounded bg-muted text-muted-foreground\"\n iconClassName=\"h-3.5 w-3.5\"\n colorClassName=\"h-3 w-3 rounded-full border border-border/70\"\n />\n ) : null}\n </div>\n ),\n meta: SALES_DOCUMENT_NUMBER_COLUMN_META,\n },\n {\n accessorKey: 'customerName',\n header: t('sales.documents.list.table.customer', 'Customer'),\n cell: ({ row }) => (\n <div className=\"flex flex-col\">\n <span className=\"text-sm font-medium\">\n {row.original.customerName ?? t('sales.documents.list.table.noCustomer', 'No customer')}\n </span>\n <span className=\"text-xs text-muted-foreground\">\n {row.original.customerEmail ?? t('sales.documents.list.table.noEmail', 'No email')}\n </span>\n </div>\n ),\n enableSorting: false,\n },\n ...(channelsEnabled ? [{\n accessorKey: 'channelId',\n header: t('sales.documents.list.table.channel', 'Channel'),\n cell: ({ row }) => {\n const channelId = row.original.channelId\n if (!channelId) return <span className=\"text-xs text-muted-foreground\">{t('sales.documents.list.table.unassigned', 'Unassigned')}</span>\n const channel = channelOptions.find((opt) => opt.value === channelId)\n return (\n <span className=\"text-sm\">{channel?.label ?? channelId}</span>\n )\n },\n enableSorting: false,\n } satisfies ColumnDef<SalesDocumentRow>] : []),\n {\n id: 'lineItemCount',\n accessorKey: 'lineItemCount',\n header: t('sales.documents.list.table.items', 'Items'),\n cell: ({ row }) => (\n <span className=\"text-sm font-semibold\">{typeof row.original.lineItemCount === 'number' ? row.original.lineItemCount : '\u2014'}</span>\n ),\n },\n {\n id: 'grandTotalNetAmount',\n accessorKey: 'totalNet',\n header: t('sales.documents.list.table.totalNet', 'Total (net)'),\n cell: ({ row }) => (\n <span className=\"text-sm\">{formatCurrency(row.original.totalNet ?? null, row.original.currency)}</span>\n ),\n },\n {\n id: 'grandTotalGrossAmount',\n accessorKey: 'totalGross',\n header: t('sales.documents.list.table.totalGross', 'Total (gross)'),\n cell: ({ row }) => (\n <span className=\"text-sm\">{formatCurrency(row.original.totalGross ?? null, row.original.currency)}</span>\n ),\n },\n {\n id: 'createdAt',\n accessorKey: 'date',\n header: t('sales.documents.list.table.date', 'Date'),\n cell: ({ row }) =>\n row.original.date\n ? <span className=\"text-xs text-muted-foreground\">{new Date(row.original.date).toLocaleString()}</span>\n : <span className=\"text-xs text-muted-foreground\">\u2014</span>,\n },\n ], [channelsEnabled, channelOptions, kind, statusMap, t])\n\n const emptyLabel = kind === 'order'\n ? t('sales.documents.list.table.emptyOrders', 'No orders yet.')\n : t('sales.documents.list.table.emptyQuotes', 'No quotes yet.')\n\n return (\n <Page>\n <PageBody>\n <DataTable<SalesDocumentRow>\n stickyFirstColumn\n stickyActionsColumn\n title={(\n <div className=\"flex flex-col\">\n <span>{title}</span>\n <span className=\"text-sm font-normal text-muted-foreground\">{subtitle}</span>\n </div>\n )}\n actions={(\n <Button asChild>\n <Link href={`/backend/sales/documents/create?kind=${kind}`}>\n {t('sales.documents.create.title', 'Create sales document')}\n </Link>\n </Button>\n )}\n columns={columns}\n data={rows}\n sorting={sorting}\n onSortingChange={setSorting}\n isLoading={isLoading}\n searchValue={search}\n onSearchChange={handleSearchChange}\n searchPlaceholder={\n kind === 'order'\n ? t('sales.documents.list.search.orders', 'Search orders\u2026')\n : t('sales.documents.list.search.quotes', 'Search quotes\u2026')\n }\n filters={filters}\n filterValues={filterValues}\n onFiltersApply={handleFiltersApply}\n onFiltersClear={handleFiltersClear}\n entityId={entityId}\n exporter={exportConfig}\n pagination={{\n page,\n pageSize: PAGE_SIZE,\n total,\n totalPages,\n onPageChange: setPage,\n cacheStatus,\n }}\n refreshButton={{\n label: t('sales.documents.list.table.refresh', 'Refresh'),\n onRefresh: handleRefresh,\n isRefreshing: isLoading,\n }}\n rowActions={(row) => (\n <RowActions\n items={[\n {\n id: 'open',\n label: t('sales.documents.list.table.open', 'Open'),\n href: `/backend/sales/${resource}/${row.id}?kind=${kind}`,\n },\n {\n id: 'delete',\n label:\n kind === 'order'\n ? t('sales.documents.list.table.deleteOrder', 'Delete order')\n : t('sales.documents.list.table.deleteQuote', 'Delete quote'),\n onSelect: () => handleDelete(row),\n },\n ]}\n />\n )}\n perspective={{\n tableId: kind === 'order'\n ? extensionPoints.hosts.ordersTable.tableId\n : extensionPoints.hosts.quotesTable.tableId,\n }}\n onRowClick={handleRowClick}\n emptyState={\n <div className=\"py-10 text-center text-sm text-muted-foreground\">\n {emptyLabel}\n </div>\n }\n />\n </PageBody>\n {ConfirmDialogElement}\n </Page>\n )\n}\n\nexport default SalesDocumentsTable\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport Link from 'next/link'\nimport { useRouter } from 'next/navigation'\nimport type { ColumnDef, SortingState } from '@tanstack/react-table'\nimport { Page, PageBody } from '@open-mercato/ui/backend/Page'\nimport { DataTable, type DataTableExportFormat, withDataTableNamespaces } from '@open-mercato/ui/backend/DataTable'\nimport type { FilterDef, FilterValues } from '@open-mercato/ui/backend/FilterBar'\nimport { RowActions } from '@open-mercato/ui/backend/RowActions'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { apiCall, withScopedApiRequestHeaders } from '@open-mercato/ui/backend/utils/apiCall'\nimport { buildOptimisticLockHeader } from '@open-mercato/ui/backend/utils/optimisticLock'\nimport { buildCrudExportUrl, deleteCrud } from '@open-mercato/ui/backend/utils/crud'\nimport { flash } from '@open-mercato/ui/backend/FlashMessages'\nimport { useOrganizationScopeVersion } from '@open-mercato/shared/lib/frontend/useOrganizationScope'\nimport { useT } from '@open-mercato/shared/lib/i18n/context'\nimport { useConfirmDialog } from '@open-mercato/ui/backend/confirm-dialog'\nimport { E } from '#generated/entities.ids.generated'\nimport {\n DictionaryValue,\n type DictionaryMap,\n createDictionaryMap,\n normalizeDictionaryEntries,\n} from '@open-mercato/core/modules/dictionaries/components/dictionaryAppearance'\nimport { SALES_DOCUMENT_NUMBER_COLUMN_META } from './salesDocumentsColumns'\nimport { useSalesChannelsEnabled } from '../useSalesChannelsEnabled'\nimport { createLogger } from '@open-mercato/shared/lib/logger'\n\nconst logger = createLogger('sales')\n\ntype SalesDocumentKind = 'order' | 'quote'\n\ntype FilterOption = { value: string; label: string; description?: string | null }\n\ntype CustomerSnapshot = {\n customer?: {\n displayName?: string | null\n primaryEmail?: string | null\n } | null\n contact?: {\n firstName?: string | null\n lastName?: string | null\n preferredName?: string | null\n } | null\n}\n\ntype ApiDocument = {\n id: string\n orderNumber?: string | null\n quoteNumber?: string | null\n status?: string | null\n customerEntityId?: string | null\n customerSnapshot?: Record<string, unknown> | null\n channelId?: string | null\n lineItemCount?: number | null\n grandTotalNetAmount?: number | null\n grandTotalGrossAmount?: number | null\n currencyCode?: string | null\n placedAt?: string | null\n validUntil?: string | null\n validFrom?: string | null\n createdAt?: string | null\n updatedAt?: string | null\n}\n\ntype DocumentsResponse = {\n items?: Array<Record<string, unknown>>\n total?: number\n totalPages?: number\n}\n\ntype SalesDocumentRow = {\n id: string\n number: string\n status?: string | null\n customerName?: string | null\n customerEmail?: string | null\n channelId?: string | null\n lineItemCount?: number | null\n totalNet?: number | null\n totalGross?: number | null\n currency?: string | null\n date?: string | null\n updatedAt?: string | null\n}\n\nconst PAGE_SIZE = 20\n\nfunction resolveCustomerName(snapshot: CustomerSnapshot | null | undefined, fallback?: string | null) {\n if (!snapshot) return fallback ?? null\n const base = snapshot.customer?.displayName ?? null\n if (base) return base\n const contact = snapshot.contact\n if (contact) {\n const parts = [contact.preferredName, contact.firstName, contact.lastName].filter(\n (part) => part && part.trim().length\n ) as string[]\n if (parts.length) return parts.join(' ')\n }\n return fallback ?? null\n}\n\nfunction resolveCustomerEmail(snapshot: CustomerSnapshot | null | undefined) {\n if (!snapshot) return null\n if (snapshot.customer?.primaryEmail) return snapshot.customer.primaryEmail\n return null\n}\n\nfunction toNumber(value: unknown): number | null {\n if (typeof value === 'number') return Number.isNaN(value) ? null : value\n if (typeof value === 'string' && value.trim().length) {\n const parsed = Number(value)\n return Number.isNaN(parsed) ? null : parsed\n }\n return null\n}\n\nfunction formatCurrency(amount: number | null | undefined, currency: string | null | undefined, fallback = '\u2014') {\n if (amount == null || Number.isNaN(amount)) return fallback\n try {\n if (currency && currency.trim().length) {\n const formatter = new Intl.NumberFormat(undefined, { style: 'currency', currency })\n return formatter.format(amount)\n }\n return new Intl.NumberFormat(undefined, { style: 'decimal', maximumFractionDigits: 2 }).format(amount)\n } catch {\n return String(amount)\n }\n}\n\nfunction mergeOptions(existing: FilterOption[], next: FilterOption[]): FilterOption[] {\n const map = new Map<string, FilterOption>()\n existing.forEach((opt) => map.set(opt.value, opt))\n next.forEach((opt) => map.set(opt.value, opt))\n return Array.from(map.values()).sort((a, b) => a.label.localeCompare(b.label))\n}\n\nfunction normalizeNumberInput(value: unknown): number | null {\n if (typeof value === 'number') return Number.isNaN(value) ? null : value\n if (typeof value === 'string' && value.trim().length) {\n const parsed = Number(value)\n return Number.isNaN(parsed) ? null : parsed\n }\n return null\n}\n\nexport function SalesDocumentsTable({ kind }: { kind: SalesDocumentKind }) {\n const t = useT()\n const { enabled: channelsEnabled } = useSalesChannelsEnabled()\n const router = useRouter()\n const scopeVersion = useOrganizationScopeVersion()\n const { confirm, ConfirmDialogElement } = useConfirmDialog()\n const [rows, setRows] = React.useState<SalesDocumentRow[]>([])\n const [page, setPage] = React.useState(1)\n const [total, setTotal] = React.useState(0)\n const [totalPages, setTotalPages] = React.useState(1)\n const [sorting, setSorting] = React.useState<SortingState>([{ id: 'createdAt', desc: true }])\n const [search, setSearch] = React.useState('')\n const [filterValues, setFilterValues] = React.useState<FilterValues>({})\n const [isLoading, setLoading] = React.useState(false)\n const [cacheStatus, setCacheStatus] = React.useState<'hit' | 'miss' | null>(null)\n const [reloadToken, setReloadToken] = React.useState(0)\n const [channelOptions, setChannelOptions] = React.useState<FilterOption[]>([])\n const [tagOptions, setTagOptions] = React.useState<FilterOption[]>([])\n const [customerOptions, setCustomerOptions] = React.useState<FilterOption[]>([])\n const [statusMap, setStatusMap] = React.useState<DictionaryMap>({})\n\n const resource = kind === 'order' ? 'orders' : 'quotes'\n const entityId = kind === 'order' ? E.sales.sales_order : E.sales.sales_quote\n const title = kind === 'order'\n ? t('sales.documents.list.ordersTitle', 'Sales orders')\n : t('sales.documents.list.quotesTitle', 'Sales quotes')\n const subtitle = t(\n 'sales.documents.list.subtitle',\n 'Review documents with customer context, totals, and channels.'\n )\n\n const fetchChannelOptions = React.useCallback(async (query?: string): Promise<FilterOption[]> => {\n const params = new URLSearchParams({ page: '1', pageSize: '50' })\n if (query && query.trim()) params.set('search', query.trim())\n try {\n const call = await apiCall<{ items?: unknown[] }>(`/api/sales/channels?${params.toString()}`)\n if (!call.ok) return []\n const items = Array.isArray(call.result?.items) ? call.result!.items : []\n return items\n .map((item: any): FilterOption | null => {\n const id = typeof item?.id === 'string' ? item.id : null\n const name = typeof item?.name === 'string' ? item.name : null\n if (!id || !name) return null\n return { value: id, label: name }\n })\n .filter((opt): opt is FilterOption => opt !== null)\n } catch {\n return []\n }\n }, [])\n\n const fetchTagOptions = React.useCallback(async (query?: string): Promise<FilterOption[]> => {\n const params = new URLSearchParams({ page: '1', pageSize: '50' })\n if (query && query.trim()) params.set('search', query.trim())\n try {\n const call = await apiCall<{ items?: unknown[] }>(`/api/sales/tags?${params.toString()}`)\n if (!call.ok) return []\n const items = Array.isArray(call.result?.items) ? call.result!.items : []\n return items\n .map((item: any): FilterOption | null => {\n const id = typeof item?.id === 'string' ? item.id : null\n const label = typeof item?.label === 'string' ? item.label : null\n if (!id || !label) return null\n const description = typeof item?.description === 'string' ? item.description : null\n return { value: id, label, description }\n })\n .filter((opt): opt is FilterOption => opt !== null)\n } catch {\n return []\n }\n }, [])\n\n const fetchCustomerOptions = React.useCallback(async (query?: string): Promise<FilterOption[]> => {\n const params = new URLSearchParams({ page: '1', pageSize: '20' })\n if (query && query.trim().length) params.set('search', query.trim())\n try {\n const [people, companies] = await Promise.all([\n apiCall<{ items?: unknown[] }>(`/api/customers/people?${params.toString()}`),\n apiCall<{ items?: unknown[] }>(`/api/customers/companies?${params.toString()}`),\n ])\n const peopleItems = Array.isArray(people.result?.items) ? people.result?.items ?? [] : []\n const companyItems = Array.isArray(companies.result?.items) ? companies.result?.items ?? [] : []\n const parseOption = (item: any, kind: 'person' | 'company'): FilterOption | null => {\n const id = typeof item?.id === 'string' ? item.id : null\n if (!id) return null\n const name =\n typeof item?.display_name === 'string' && item.display_name.trim().length\n ? item.display_name\n : typeof item?.name === 'string' && item.name.trim().length\n ? item.name\n : id\n const email =\n typeof item?.primary_email === 'string' && item.primary_email.trim().length\n ? item.primary_email.trim()\n : null\n const label = email ? `${name} (${email})` : name\n return { value: id, label }\n }\n const options = [...peopleItems.map((i) => parseOption(i, 'person')), ...companyItems.map((i) => parseOption(i, 'company'))]\n .filter((opt): opt is FilterOption => !!opt)\n return options\n } catch {\n return []\n }\n }, [])\n\n const loadStatusMap = React.useCallback(async () => {\n try {\n const params = new URLSearchParams({ page: '1', pageSize: '100' })\n const response = await apiCall<{ items?: Array<Record<string, unknown>> }>(\n `/api/sales/order-statuses?${params.toString()}`,\n undefined,\n { fallback: { items: [] } }\n )\n const entries = normalizeDictionaryEntries(response.result?.items ?? [], { sort: false })\n setStatusMap(createDictionaryMap(entries))\n } catch (err) {\n logger.error('sales.documents.statuses.load', { err })\n setStatusMap({})\n }\n }, [])\n\n const loadChannelOptions = React.useCallback(\n async (query?: string) => {\n const opts = await fetchChannelOptions(query)\n if (opts.length) setChannelOptions((prev) => mergeOptions(prev, opts))\n return opts\n },\n [fetchChannelOptions]\n )\n\n const loadTagOptions = React.useCallback(\n async (query?: string) => {\n const opts = await fetchTagOptions(query)\n if (opts.length) setTagOptions((prev) => mergeOptions(prev, opts))\n return opts\n },\n [fetchTagOptions]\n )\n\n const loadCustomerOptions = React.useCallback(\n async (query?: string) => {\n const opts = await fetchCustomerOptions(query)\n if (opts.length) setCustomerOptions((prev) => mergeOptions(prev, opts))\n return opts\n },\n [fetchCustomerOptions]\n )\n\n React.useEffect(() => {\n if (channelsEnabled) loadChannelOptions().catch(() => {})\n loadTagOptions().catch(() => {})\n loadCustomerOptions().catch(() => {})\n loadStatusMap().catch(() => setStatusMap({}))\n }, [channelsEnabled, loadChannelOptions, loadCustomerOptions, loadStatusMap, loadTagOptions, scopeVersion])\n\n const filters = React.useMemo<FilterDef[]>(() => [\n ...(channelsEnabled ? [{\n id: 'channelId',\n label: t('sales.documents.list.filters.channel', 'Channel'),\n type: 'select',\n options: channelOptions,\n loadOptions: loadChannelOptions,\n } satisfies FilterDef] : []),\n {\n id: 'date',\n label: t('sales.documents.list.filters.date', 'Date'),\n type: 'dateRange',\n },\n {\n id: 'lineItemCountMin',\n label: t('sales.documents.list.filters.itemsMin', 'Min items'),\n type: 'text',\n },\n {\n id: 'lineItemCountMax',\n label: t('sales.documents.list.filters.itemsMax', 'Max items'),\n type: 'text',\n },\n {\n id: 'totalNetMin',\n label: t('sales.documents.list.filters.totalNetMin', 'Min total (net)'),\n type: 'text',\n },\n {\n id: 'totalNetMax',\n label: t('sales.documents.list.filters.totalNetMax', 'Max total (net)'),\n type: 'text',\n },\n {\n id: 'totalGrossMin',\n label: t('sales.documents.list.filters.totalGrossMin', 'Min total (gross)'),\n type: 'text',\n },\n {\n id: 'totalGrossMax',\n label: t('sales.documents.list.filters.totalGrossMax', 'Max total (gross)'),\n type: 'text',\n },\n {\n id: 'customerId',\n label: t('sales.documents.list.filters.customer', 'Customer'),\n type: 'tags',\n options: customerOptions,\n loadOptions: loadCustomerOptions,\n placeholder: t('sales.documents.list.filters.customerPlaceholder', 'Search customers'),\n formatValue: (val: string) => {\n const match = customerOptions.find((opt) => opt.value === val)\n return match?.label ?? val\n },\n },\n {\n id: 'tagIds',\n label: t('sales.documents.list.filters.tags', 'Tags'),\n type: 'tags',\n options: tagOptions,\n loadOptions: loadTagOptions,\n formatValue: (val: string) => tagOptions.find((o) => o.value === val)?.label ?? val,\n formatDescription: (val: string) => tagOptions.find((o) => o.value === val)?.description ?? null,\n },\n ], [channelsEnabled, channelOptions, loadChannelOptions, customerOptions, loadCustomerOptions, loadTagOptions, tagOptions, t])\n\n const queryParams = React.useMemo(() => {\n const params = new URLSearchParams()\n params.set('page', String(page))\n params.set('pageSize', String(PAGE_SIZE))\n if (search.trim()) params.set('search', search.trim())\n const sort = sorting[0]\n if (sort?.id) {\n params.set('sortField', sort.id)\n params.set('sortDir', sort.desc ? 'desc' : 'asc')\n }\n const channelId = typeof filterValues.channelId === 'string' ? filterValues.channelId : ''\n if (channelId) params.set('channelId', channelId)\n const customerIds = Array.isArray(filterValues.customerId)\n ? filterValues.customerId\n .map((value) => (typeof value === 'string' ? value.trim() : String(value || '').trim()))\n .filter((value) => value.length > 0)\n : []\n if (customerIds.length > 0) {\n params.set('customerId', customerIds[0])\n }\n const date = filterValues.date\n if (date && typeof date === 'object') {\n if (date.from) params.set('dateFrom', date.from)\n if (date.to) params.set('dateTo', date.to)\n }\n const numberFilters: Array<[keyof FilterValues, string]> = [\n ['lineItemCountMin', 'lineItemCountMin'],\n ['lineItemCountMax', 'lineItemCountMax'],\n ['totalNetMin', 'totalNetMin'],\n ['totalNetMax', 'totalNetMax'],\n ['totalGrossMin', 'totalGrossMin'],\n ['totalGrossMax', 'totalGrossMax'],\n ]\n numberFilters.forEach(([key, queryKey]) => {\n const value = normalizeNumberInput((filterValues as any)[key])\n if (value != null) params.set(queryKey, String(value))\n })\n const tagIds = Array.isArray(filterValues.tagIds)\n ? filterValues.tagIds.map((value) => (typeof value === 'string' ? value.trim() : String(value || '').trim())).filter((v) => v.length > 0)\n : []\n if (tagIds.length > 0) {\n params.set('tagIds', tagIds.join(','))\n }\n Object.entries(filterValues).forEach(([key, value]) => {\n if (!key.startsWith('cf_') || value == null) return\n if (Array.isArray(value)) {\n const normalized = value\n .map((item) => {\n if (item == null) return ''\n if (typeof item === 'string') return item.trim()\n return String(item).trim()\n })\n .filter((item) => item.length > 0)\n if (normalized.length) params.set(key, normalized.join(','))\n } else if (typeof value === 'object') {\n return\n } else if (value !== '') {\n const stringValue = typeof value === 'string' ? value.trim() : String(value)\n if (stringValue) params.set(key, stringValue)\n }\n })\n return params.toString()\n }, [filterValues, page, search, sorting])\n\n const currentParams = React.useMemo(() => Object.fromEntries(new URLSearchParams(queryParams)), [queryParams])\n\n const exportConfig = React.useMemo(() => ({\n view: {\n getUrl: (format: DataTableExportFormat) =>\n buildCrudExportUrl(`sales/${resource}`, { ...currentParams, exportScope: 'view' }, format),\n },\n full: {\n getUrl: (format: DataTableExportFormat) =>\n buildCrudExportUrl(`sales/${resource}`, { ...currentParams, exportScope: 'full', all: 'true' }, format),\n },\n }), [currentParams, resource])\n\n const mapApiDocument = React.useCallback(\n (item: Record<string, unknown>): SalesDocumentRow => {\n const doc = item as ApiDocument\n const id = typeof doc.id === 'string' ? doc.id : ''\n const number = kind === 'order'\n ? doc.orderNumber ?? (item as any)?.order_number ?? id\n : doc.quoteNumber ?? (item as any)?.quote_number ?? id\n const customerSnapshot = (doc.customerSnapshot ?? null) as CustomerSnapshot | null\n const customerName = resolveCustomerName(customerSnapshot, doc.customerEntityId ?? null)\n const customerEmail = resolveCustomerEmail(customerSnapshot)\n const totalNet = toNumber(doc.grandTotalNetAmount)\n const totalGross = toNumber(doc.grandTotalGrossAmount)\n const placedAt = doc.placedAt ?? null\n const validUntil = doc.validUntil ?? null\n const createdAt = doc.createdAt ?? null\n const date = placedAt ?? validUntil ?? createdAt ?? null\n return withDataTableNamespaces({\n id,\n number,\n status: doc.status ?? null,\n customerName,\n customerEmail,\n channelId: doc.channelId ?? null,\n lineItemCount: doc.lineItemCount ?? null,\n totalNet,\n totalGross,\n currency: doc.currencyCode ?? null,\n date,\n updatedAt: doc.updatedAt ?? null,\n }, item)\n },\n [kind]\n )\n\n const loadDocuments = React.useCallback(async () => {\n setLoading(true)\n setCacheStatus(null)\n try {\n const call = await apiCall<DocumentsResponse>(`/api/sales/${resource}?${queryParams}`)\n if (!call.ok) {\n flash(t('sales.documents.list.errors.load', 'Failed to load documents.'), 'error')\n setRows([])\n setTotal(0)\n setTotalPages(1)\n return\n }\n const payload = call.result ?? {}\n const items = Array.isArray(payload.items) ? payload.items : []\n setRows(items.map((item) => mapApiDocument(item)))\n const count = typeof payload.total === 'number' ? payload.total : items.length\n setTotal(count)\n const pages = typeof payload.totalPages === 'number'\n ? payload.totalPages\n : Math.max(1, Math.ceil(count / PAGE_SIZE))\n setTotalPages(pages)\n setCacheStatus(call.cacheStatus ?? null)\n } catch (err) {\n logger.error('sales.documents.list', { err })\n flash(t('sales.documents.list.errors.load', 'Failed to load documents.'), 'error')\n } finally {\n setLoading(false)\n }\n }, [mapApiDocument, queryParams, resource, t])\n\n React.useEffect(() => {\n void loadDocuments()\n }, [loadDocuments, reloadToken, scopeVersion])\n\n const handleFiltersApply = React.useCallback((values: FilterValues) => {\n setFilterValues(values)\n setPage(1)\n }, [])\n\n const handleFiltersClear = React.useCallback(() => {\n setFilterValues({})\n setPage(1)\n }, [])\n\n const handleSearchChange = React.useCallback((value: string) => {\n setSearch(value)\n setPage(1)\n }, [])\n\n const handleRefresh = React.useCallback(() => {\n setReloadToken((token) => token + 1)\n }, [])\n\n const handleDelete = React.useCallback(\n async (row: SalesDocumentRow) => {\n const confirmMessage =\n kind === 'order'\n ? t(\n 'sales.documents.list.table.deleteOrderConfirm',\n 'Delete this sales order? Related shipments, payments, addresses, and items will be removed.'\n )\n : t(\n 'sales.documents.list.table.deleteQuoteConfirm',\n 'Delete this sales quote? Related addresses, comments, and items will be removed.'\n )\n const confirmed = await confirm({\n title: confirmMessage,\n variant: 'destructive',\n })\n if (!confirmed) return\n try {\n const result = await withScopedApiRequestHeaders(\n buildOptimisticLockHeader(row.updatedAt),\n () =>\n deleteCrud(`sales/${resource}`, row.id, {\n errorMessage: t('sales.documents.list.table.deleteError', 'Failed to delete document.'),\n }),\n )\n if (result.ok) {\n flash(\n kind === 'order'\n ? t('sales.documents.list.table.orderDeleted', 'Sales order deleted.')\n : t('sales.documents.list.table.quoteDeleted', 'Sales quote deleted.'),\n 'success'\n )\n handleRefresh()\n }\n } catch (err) {\n logger.error('sales.documents.delete', { err })\n flash(t('sales.documents.list.table.deleteError', 'Failed to delete document.'), 'error')\n }\n },\n [confirm, handleRefresh, kind, resource, t]\n )\n\n const handleRowClick = React.useCallback((row: SalesDocumentRow) => {\n router.push(`/backend/sales/${resource}/${row.id}?kind=${kind}`)\n }, [kind, resource, router])\n\n const columns = React.useMemo<ColumnDef<SalesDocumentRow>[]>(() => [\n {\n id: 'number',\n accessorKey: 'number',\n header: kind === 'order'\n ? t('sales.documents.list.table.order', 'Order')\n : t('sales.documents.list.table.quote', 'Quote'),\n cell: ({ row }) => (\n <div className=\"flex flex-col\">\n <span className=\"font-semibold\">{row.original.number}</span>\n {row.original.status ? (\n <DictionaryValue\n value={row.original.status}\n map={statusMap}\n fallback={<span className=\"text-xs text-muted-foreground\">{row.original.status}</span>}\n className=\"text-xs text-muted-foreground font-medium\"\n iconWrapperClassName=\"inline-flex h-5 w-5 items-center justify-center rounded bg-muted text-muted-foreground\"\n iconClassName=\"h-3.5 w-3.5\"\n colorClassName=\"h-3 w-3 rounded-full border border-border/70\"\n />\n ) : null}\n </div>\n ),\n meta: SALES_DOCUMENT_NUMBER_COLUMN_META,\n },\n {\n accessorKey: 'customerName',\n header: t('sales.documents.list.table.customer', 'Customer'),\n cell: ({ row }) => (\n <div className=\"flex flex-col\">\n <span className=\"text-sm font-medium\">\n {row.original.customerName ?? t('sales.documents.list.table.noCustomer', 'No customer')}\n </span>\n <span className=\"text-xs text-muted-foreground\">\n {row.original.customerEmail ?? t('sales.documents.list.table.noEmail', 'No email')}\n </span>\n </div>\n ),\n enableSorting: false,\n },\n ...(channelsEnabled ? [{\n accessorKey: 'channelId',\n header: t('sales.documents.list.table.channel', 'Channel'),\n cell: ({ row }) => {\n const channelId = row.original.channelId\n if (!channelId) return <span className=\"text-xs text-muted-foreground\">{t('sales.documents.list.table.unassigned', 'Unassigned')}</span>\n const channel = channelOptions.find((opt) => opt.value === channelId)\n return (\n <span className=\"text-sm\">{channel?.label ?? channelId}</span>\n )\n },\n enableSorting: false,\n } satisfies ColumnDef<SalesDocumentRow>] : []),\n {\n id: 'lineItemCount',\n accessorKey: 'lineItemCount',\n header: t('sales.documents.list.table.items', 'Items'),\n cell: ({ row }) => (\n <span className=\"text-sm font-semibold\">{typeof row.original.lineItemCount === 'number' ? row.original.lineItemCount : '\u2014'}</span>\n ),\n },\n {\n id: 'grandTotalNetAmount',\n accessorKey: 'totalNet',\n header: t('sales.documents.list.table.totalNet', 'Total (net)'),\n cell: ({ row }) => (\n <span className=\"text-sm\">{formatCurrency(row.original.totalNet ?? null, row.original.currency)}</span>\n ),\n },\n {\n id: 'grandTotalGrossAmount',\n accessorKey: 'totalGross',\n header: t('sales.documents.list.table.totalGross', 'Total (gross)'),\n cell: ({ row }) => (\n <span className=\"text-sm\">{formatCurrency(row.original.totalGross ?? null, row.original.currency)}</span>\n ),\n },\n {\n id: 'createdAt',\n accessorKey: 'date',\n header: t('sales.documents.list.table.date', 'Date'),\n cell: ({ row }) =>\n row.original.date\n ? <span className=\"text-xs text-muted-foreground\">{new Date(row.original.date).toLocaleString()}</span>\n : <span className=\"text-xs text-muted-foreground\">\u2014</span>,\n },\n ], [channelsEnabled, channelOptions, kind, statusMap, t])\n\n const emptyLabel = kind === 'order'\n ? t('sales.documents.list.table.emptyOrders', 'No orders yet.')\n : t('sales.documents.list.table.emptyQuotes', 'No quotes yet.')\n\n return (\n <Page>\n <PageBody>\n <DataTable<SalesDocumentRow>\n stickyFirstColumn\n stickyActionsColumn\n title={(\n <div className=\"flex flex-col\">\n <span>{title}</span>\n <span className=\"text-sm font-normal text-muted-foreground\">{subtitle}</span>\n </div>\n )}\n actions={(\n <Button asChild>\n <Link href={`/backend/sales/documents/create?kind=${kind}`}>\n {t('sales.documents.create.title', 'Create sales document')}\n </Link>\n </Button>\n )}\n columns={columns}\n data={rows}\n sorting={sorting}\n onSortingChange={setSorting}\n isLoading={isLoading}\n searchValue={search}\n onSearchChange={handleSearchChange}\n searchPlaceholder={\n kind === 'order'\n ? t('sales.documents.list.search.orders', 'Search orders\u2026')\n : t('sales.documents.list.search.quotes', 'Search quotes\u2026')\n }\n filters={filters}\n filterValues={filterValues}\n onFiltersApply={handleFiltersApply}\n onFiltersClear={handleFiltersClear}\n entityId={entityId}\n exporter={exportConfig}\n pagination={{\n page,\n pageSize: PAGE_SIZE,\n total,\n totalPages,\n onPageChange: setPage,\n cacheStatus,\n }}\n refreshButton={{\n label: t('sales.documents.list.table.refresh', 'Refresh'),\n onRefresh: handleRefresh,\n isRefreshing: isLoading,\n }}\n rowActions={(row) => (\n <RowActions\n items={[\n {\n id: 'open',\n label: t('sales.documents.list.table.open', 'Open'),\n href: `/backend/sales/${resource}/${row.id}?kind=${kind}`,\n },\n {\n id: 'delete',\n label:\n kind === 'order'\n ? t('sales.documents.list.table.deleteOrder', 'Delete order')\n : t('sales.documents.list.table.deleteQuote', 'Delete quote'),\n onSelect: () => handleDelete(row),\n },\n ]}\n />\n )}\n perspective={{ tableId: kind === 'order' ? 'sales.orders' : 'sales.quotes' }}\n onRowClick={handleRowClick}\n emptyState={\n <div className=\"py-10 text-center text-sm text-muted-foreground\">\n {emptyLabel}\n </div>\n }\n />\n </PageBody>\n {ConfirmDialogElement}\n </Page>\n )\n}\n\nexport default SalesDocumentsTable\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["kind"]
|
|
7
7
|
}
|
|
@@ -1,8 +1,41 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { apiCall } from "@open-mercato/ui/backend/utils/apiCall";
|
|
3
4
|
import { SALES_CHANNELS_TOGGLE_ID } from "../lib/salesChannelsToggleId.js";
|
|
5
|
+
const CACHE_TTL_MS = 6e4;
|
|
6
|
+
async function fetchSalesChannelsEnabled() {
|
|
7
|
+
try {
|
|
8
|
+
const call = await apiCall(
|
|
9
|
+
`/api/feature_toggles/check/boolean?identifier=${SALES_CHANNELS_TOGGLE_ID}`
|
|
10
|
+
);
|
|
11
|
+
if (!call.ok) return true;
|
|
12
|
+
return !(call.result?.ok === true && call.result.value === false);
|
|
13
|
+
} catch {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
let cache = null;
|
|
18
|
+
function getSalesChannelsEnabled() {
|
|
19
|
+
const now = Date.now();
|
|
20
|
+
if (!cache || now - cache.at > CACHE_TTL_MS) {
|
|
21
|
+
cache = { value: fetchSalesChannelsEnabled(), at: now };
|
|
22
|
+
}
|
|
23
|
+
return cache.value;
|
|
24
|
+
}
|
|
4
25
|
function useSalesChannelsEnabled() {
|
|
5
|
-
|
|
26
|
+
const [resolved, setResolved] = React.useState(null);
|
|
27
|
+
React.useEffect(() => {
|
|
28
|
+
let active = true;
|
|
29
|
+
getSalesChannelsEnabled().then((value) => {
|
|
30
|
+
if (active) setResolved(value);
|
|
31
|
+
}).catch(() => {
|
|
32
|
+
if (active) setResolved(true);
|
|
33
|
+
});
|
|
34
|
+
return () => {
|
|
35
|
+
active = false;
|
|
36
|
+
};
|
|
37
|
+
}, []);
|
|
38
|
+
return { enabled: resolved !== false, isLoading: resolved === null };
|
|
6
39
|
}
|
|
7
40
|
export {
|
|
8
41
|
SALES_CHANNELS_TOGGLE_ID,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/modules/sales/components/useSalesChannelsEnabled.ts"],
|
|
4
|
-
"sourcesContent": ["\"use client\"\n\nimport {
|
|
5
|
-
"mappings": ";AAEA,SAAS,
|
|
4
|
+
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { apiCall } from '@open-mercato/ui/backend/utils/apiCall'\nimport { SALES_CHANNELS_TOGGLE_ID } from '../lib/salesChannelsToggleId'\n\nexport { SALES_CHANNELS_TOGGLE_ID }\n\nconst CACHE_TTL_MS = 60_000\n\ntype FeatureToggleCheckResponse = {\n ok?: boolean\n value?: unknown\n}\n\n// Fails open: channels stay visible unless the toggle explicitly resolves to\n// false. A missing toggle definition (404) or an absent feature_toggles module\n// must not hide sales channel UI.\nasync function fetchSalesChannelsEnabled(): Promise<boolean> {\n try {\n const call = await apiCall<FeatureToggleCheckResponse>(\n `/api/feature_toggles/check/boolean?identifier=${SALES_CHANNELS_TOGGLE_ID}`,\n )\n if (!call.ok) return true\n return !(call.result?.ok === true && call.result.value === false)\n } catch {\n return true\n }\n}\n\nlet cache: { value: Promise<boolean>; at: number } | null = null\n\nfunction getSalesChannelsEnabled(): Promise<boolean> {\n const now = Date.now()\n if (!cache || now - cache.at > CACHE_TTL_MS) {\n cache = { value: fetchSalesChannelsEnabled(), at: now }\n }\n return cache.value\n}\n\nexport function useSalesChannelsEnabled(): { enabled: boolean; isLoading: boolean } {\n const [resolved, setResolved] = React.useState<boolean | null>(null)\n\n React.useEffect(() => {\n let active = true\n getSalesChannelsEnabled()\n .then((value) => {\n if (active) setResolved(value)\n })\n .catch(() => {\n if (active) setResolved(true)\n })\n return () => {\n active = false\n }\n }, [])\n\n return { enabled: resolved !== false, isLoading: resolved === null }\n}\n"],
|
|
5
|
+
"mappings": ";AAEA,YAAY,WAAW;AACvB,SAAS,eAAe;AACxB,SAAS,gCAAgC;AAIzC,MAAM,eAAe;AAUrB,eAAe,4BAA8C;AAC3D,MAAI;AACF,UAAM,OAAO,MAAM;AAAA,MACjB,iDAAiD,wBAAwB;AAAA,IAC3E;AACA,QAAI,CAAC,KAAK,GAAI,QAAO;AACrB,WAAO,EAAE,KAAK,QAAQ,OAAO,QAAQ,KAAK,OAAO,UAAU;AAAA,EAC7D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,IAAI,QAAwD;AAE5D,SAAS,0BAA4C;AACnD,QAAM,MAAM,KAAK,IAAI;AACrB,MAAI,CAAC,SAAS,MAAM,MAAM,KAAK,cAAc;AAC3C,YAAQ,EAAE,OAAO,0BAA0B,GAAG,IAAI,IAAI;AAAA,EACxD;AACA,SAAO,MAAM;AACf;AAEO,SAAS,0BAAoE;AAClF,QAAM,CAAC,UAAU,WAAW,IAAI,MAAM,SAAyB,IAAI;AAEnE,QAAM,UAAU,MAAM;AACpB,QAAI,SAAS;AACb,4BAAwB,EACrB,KAAK,CAAC,UAAU;AACf,UAAI,OAAQ,aAAY,KAAK;AAAA,IAC/B,CAAC,EACA,MAAM,MAAM;AACX,UAAI,OAAQ,aAAY,IAAI;AAAA,IAC9B,CAAC;AACH,WAAO,MAAM;AACX,eAAS;AAAA,IACX;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO,EAAE,SAAS,aAAa,OAAO,WAAW,aAAa,KAAK;AACrE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -419,26 +419,6 @@ const quoteAdjustmentCreateSchema = scoped.extend({
|
|
|
419
419
|
const quoteAdjustmentUpdateSchema = z.object({
|
|
420
420
|
id: uuid()
|
|
421
421
|
}).merge(quoteAdjustmentCreateSchema.partial());
|
|
422
|
-
const ORDER_PAYMENT_LEDGER_FIELDS = [
|
|
423
|
-
"paidTotalAmount",
|
|
424
|
-
"refundedTotalAmount",
|
|
425
|
-
"outstandingAmount"
|
|
426
|
-
];
|
|
427
|
-
const ORDER_PAYMENT_LEDGER_WARNING_CODE = "sales.order.payment_ledger_input_deprecated";
|
|
428
|
-
function resolveSuppliedOrderPaymentLedgerFields(value) {
|
|
429
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return [];
|
|
430
|
-
return ORDER_PAYMENT_LEDGER_FIELDS.filter(
|
|
431
|
-
(field) => Object.prototype.hasOwnProperty.call(value, field)
|
|
432
|
-
);
|
|
433
|
-
}
|
|
434
|
-
const orderPaymentLedgerShape = {
|
|
435
|
-
/** @deprecated Derived from recorded payments. Use sales.payments.create or POST /api/sales/payments. */
|
|
436
|
-
paidTotalAmount: decimal({ min: 0 }).optional(),
|
|
437
|
-
/** @deprecated Derived from recorded payments. Use sales.payments.create or POST /api/sales/payments. */
|
|
438
|
-
refundedTotalAmount: decimal({ min: 0 }).optional(),
|
|
439
|
-
/** @deprecated Derived from recorded payments. Use sales.payments.create or POST /api/sales/payments. */
|
|
440
|
-
outstandingAmount: decimal().optional()
|
|
441
|
-
};
|
|
442
422
|
const orderTotalsSchema = z.object({
|
|
443
423
|
subtotalNetAmount: decimal({ min: 0 }).optional(),
|
|
444
424
|
subtotalGrossAmount: decimal({ min: 0 }).optional(),
|
|
@@ -449,6 +429,9 @@ const orderTotalsSchema = z.object({
|
|
|
449
429
|
surchargeTotalAmount: decimal({ min: 0 }).optional(),
|
|
450
430
|
grandTotalNetAmount: decimal({ min: 0 }).optional(),
|
|
451
431
|
grandTotalGrossAmount: decimal({ min: 0 }).optional(),
|
|
432
|
+
paidTotalAmount: decimal({ min: 0 }).optional(),
|
|
433
|
+
refundedTotalAmount: decimal({ min: 0 }).optional(),
|
|
434
|
+
outstandingAmount: decimal().optional(),
|
|
452
435
|
lineItemCount: z.coerce.number().int().min(0).optional()
|
|
453
436
|
});
|
|
454
437
|
const quoteTotalsSchema = z.object({
|
|
@@ -460,7 +443,6 @@ const quoteTotalsSchema = z.object({
|
|
|
460
443
|
grandTotalGrossAmount: decimal({ min: 0 }).optional(),
|
|
461
444
|
lineItemCount: z.coerce.number().int().min(0).optional()
|
|
462
445
|
});
|
|
463
|
-
const SALES_ORDER_LINES_REQUIRED_MESSAGE_KEY = "sales.orders.linesRequired";
|
|
464
446
|
const orderCreateSchema = scoped.extend({
|
|
465
447
|
orderNumber: z.string().trim().min(1).max(191).optional(),
|
|
466
448
|
externalReference: z.string().trim().max(191).optional(),
|
|
@@ -497,14 +479,10 @@ const orderCreateSchema = scoped.extend({
|
|
|
497
479
|
paymentMethodSnapshot: jsonRecord.optional(),
|
|
498
480
|
metadata,
|
|
499
481
|
customFieldSetId: uuid().optional(),
|
|
500
|
-
|
|
501
|
-
lines: z.array(orderLineCreateSchema.omit({ organizationId: true, tenantId: true, orderId: true }), {
|
|
502
|
-
error: SALES_ORDER_LINES_REQUIRED_MESSAGE_KEY
|
|
503
|
-
}).min(1, SALES_ORDER_LINES_REQUIRED_MESSAGE_KEY),
|
|
482
|
+
lines: z.array(orderLineCreateSchema.omit({ organizationId: true, tenantId: true, orderId: true })).optional(),
|
|
504
483
|
adjustments: z.array(orderAdjustmentCreateSchema.omit({ organizationId: true, tenantId: true, orderId: true })).optional(),
|
|
505
484
|
tags: z.array(uuid()).optional(),
|
|
506
|
-
...orderTotalsSchema.shape
|
|
507
|
-
...orderPaymentLedgerShape
|
|
485
|
+
...orderTotalsSchema.shape
|
|
508
486
|
});
|
|
509
487
|
const orderUpdateSchema = z.object({
|
|
510
488
|
id: uuid()
|
|
@@ -536,7 +514,6 @@ const quoteCreateSchema = scoped.extend({
|
|
|
536
514
|
paymentMethodSnapshot: jsonRecord.optional(),
|
|
537
515
|
metadata,
|
|
538
516
|
customFieldSetId: uuid().optional(),
|
|
539
|
-
customFields: z.record(z.string(), z.unknown()).optional(),
|
|
540
517
|
lines: z.array(quoteLineCreateSchema.omit({ organizationId: true, tenantId: true, quoteId: true })).optional(),
|
|
541
518
|
adjustments: z.array(quoteAdjustmentCreateSchema.omit({ organizationId: true, tenantId: true, quoteId: true })).optional(),
|
|
542
519
|
tags: z.array(uuid()).optional(),
|
|
@@ -784,15 +761,12 @@ const quoteAcceptSchema = z.object({
|
|
|
784
761
|
export {
|
|
785
762
|
DISCOUNT_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,
|
|
786
763
|
DISCOUNT_ADJUSTMENT_NEGATIVE_NET_MESSAGE,
|
|
787
|
-
ORDER_PAYMENT_LEDGER_FIELDS,
|
|
788
|
-
ORDER_PAYMENT_LEDGER_WARNING_CODE,
|
|
789
764
|
RETURN_ADJUSTMENT_EXCEEDS_REMAINING_GROSS_MESSAGE,
|
|
790
765
|
RETURN_ADJUSTMENT_EXCEEDS_REMAINING_NET_MESSAGE,
|
|
791
766
|
RETURN_ADJUSTMENT_POSITIVE_GROSS_MESSAGE,
|
|
792
767
|
RETURN_ADJUSTMENT_POSITIVE_NET_MESSAGE,
|
|
793
768
|
RETURN_ADJUSTMENT_ZERO_MESSAGE,
|
|
794
769
|
RETURN_DATE_IN_FUTURE_MESSAGE,
|
|
795
|
-
SALES_ORDER_LINES_REQUIRED_MESSAGE_KEY,
|
|
796
770
|
SALES_PHONE_INVALID_MESSAGE_KEY,
|
|
797
771
|
SHIPPING_ADJUSTMENT_NEGATIVE_GROSS_MESSAGE,
|
|
798
772
|
SHIPPING_ADJUSTMENT_NEGATIVE_NET_MESSAGE,
|
|
@@ -835,7 +809,6 @@ export {
|
|
|
835
809
|
quoteLineUpdateSchema,
|
|
836
810
|
quoteSendSchema,
|
|
837
811
|
quoteUpdateSchema,
|
|
838
|
-
resolveSuppliedOrderPaymentLedgerFields,
|
|
839
812
|
returnCreateSchema,
|
|
840
813
|
returnDeleteSchema,
|
|
841
814
|
returnUpdateSchema,
|