@open-mercato/core 0.6.8-develop.7099.1.7ba2771d06 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/dist/helpers/integration/api.js +1 -13
- package/dist/helpers/integration/api.js.map +2 -2
- package/dist/helpers/integration/communicationChannelsFixtures.js +0 -19
- package/dist/helpers/integration/communicationChannelsFixtures.js.map +2 -2
- package/dist/modules/api_keys/api/keys/route.js +1 -1
- package/dist/modules/api_keys/api/keys/route.js.map +2 -2
- package/dist/modules/api_keys/backend/api-keys/page.js +1 -3
- package/dist/modules/api_keys/backend/api-keys/page.js.map +2 -2
- package/dist/modules/attachments/api/route.js +2 -2
- package/dist/modules/attachments/api/route.js.map +2 -2
- package/dist/modules/attachments/components/AttachmentLibrary.js +0 -2
- package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
- package/dist/modules/attachments/di.js +1 -11
- package/dist/modules/attachments/di.js.map +2 -2
- package/dist/modules/attachments/index.js.map +1 -1
- package/dist/modules/attachments/lib/scoped-upload-service.js +2 -15
- package/dist/modules/attachments/lib/scoped-upload-service.js.map +2 -2
- package/dist/modules/attachments/lib/upload-limits.js +2 -6
- package/dist/modules/attachments/lib/upload-limits.js.map +2 -2
- package/dist/modules/audit_logs/backend/audit-logs/page.js +0 -6
- package/dist/modules/audit_logs/backend/audit-logs/page.js.map +2 -2
- package/dist/modules/audit_logs/lib/display-helpers.js +11 -19
- package/dist/modules/audit_logs/lib/display-helpers.js.map +2 -2
- package/dist/modules/audit_logs/services/actionLogService.js +12 -57
- package/dist/modules/audit_logs/services/actionLogService.js.map +3 -3
- package/dist/modules/auth/acl.js +5 -30
- package/dist/modules/auth/acl.js.map +2 -2
- package/dist/modules/auth/api/feature-check.js +2 -8
- package/dist/modules/auth/api/feature-check.js.map +2 -2
- package/dist/modules/auth/api/login.js +20 -4
- package/dist/modules/auth/api/login.js.map +2 -2
- package/dist/modules/auth/api/roles/acl/route.js +33 -28
- package/dist/modules/auth/api/roles/acl/route.js.map +2 -2
- package/dist/modules/auth/api/routeError.js +11 -0
- package/dist/modules/auth/api/routeError.js.map +7 -0
- package/dist/modules/auth/api/session/refresh.js +1 -25
- package/dist/modules/auth/api/session/refresh.js.map +2 -2
- package/dist/modules/auth/api/users/acl/route.js +73 -102
- package/dist/modules/auth/api/users/acl/route.js.map +2 -2
- package/dist/modules/auth/backend/roles/[id]/edit/page.meta.js +1 -5
- package/dist/modules/auth/backend/roles/[id]/edit/page.meta.js.map +2 -2
- package/dist/modules/auth/backend/roles/page.js +1 -3
- package/dist/modules/auth/backend/roles/page.js.map +2 -2
- package/dist/modules/auth/backend/users/[id]/edit/page.meta.js +1 -5
- package/dist/modules/auth/backend/users/[id]/edit/page.meta.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/components/AclEditor.js +30 -39
- package/dist/modules/auth/components/AclEditor.js.map +2 -2
- package/dist/modules/auth/data/entities.js.map +2 -2
- package/dist/modules/auth/data/validators.js +1 -5
- package/dist/modules/auth/data/validators.js.map +2 -2
- package/dist/modules/auth/di.js +9 -35
- package/dist/modules/auth/di.js.map +2 -2
- package/dist/modules/auth/frontend/reset/[token]/page.js +0 -46
- package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
- package/dist/modules/auth/lib/grantChecks.js.map +2 -2
- package/dist/modules/auth/services/authService.js +2 -16
- package/dist/modules/auth/services/authService.js.map +2 -2
- package/dist/modules/auth/services/rbacService.js +24 -67
- package/dist/modules/auth/services/rbacService.js.map +3 -3
- package/dist/modules/business_rules/backend/logs/page.js +1 -3
- package/dist/modules/business_rules/backend/logs/page.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/[id]/page.meta.js +6 -1
- package/dist/modules/business_rules/backend/rules/[id]/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/create/page.meta.js +5 -1
- package/dist/modules/business_rules/backend/rules/create/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/page.js +1 -3
- package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
- package/dist/modules/business_rules/backend/sets/[id]/page.meta.js +6 -1
- package/dist/modules/business_rules/backend/sets/[id]/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/sets/create/page.meta.js +5 -1
- package/dist/modules/business_rules/backend/sets/create/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/sets/page.js +1 -3
- package/dist/modules/business_rules/backend/sets/page.js.map +2 -2
- package/dist/modules/business_rules/lib/expression-evaluator.js +9 -9
- package/dist/modules/business_rules/lib/expression-evaluator.js.map +2 -2
- package/dist/modules/business_rules/lib/rule-evaluator.js +9 -10
- package/dist/modules/business_rules/lib/rule-evaluator.js.map +2 -2
- package/dist/modules/catalog/ai-agents.js +1 -1
- package/dist/modules/catalog/ai-agents.js.map +1 -1
- package/dist/modules/catalog/ai-tools/merchandising-pack.js +2 -2
- package/dist/modules/catalog/ai-tools/merchandising-pack.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.js +2 -5
- package/dist/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.js.map +2 -2
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js +0 -2
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductsDataTable.js +1 -7
- package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
- package/dist/modules/catalog/widgets/injection/merchandising-assistant-trigger/widget.client.js +0 -2
- package/dist/modules/catalog/widgets/injection/merchandising-assistant-trigger/widget.client.js.map +2 -2
- package/dist/modules/communication_channels/api/post/channels/[id]/test-send/route.js +1 -9
- package/dist/modules/communication_channels/api/post/channels/[id]/test-send/route.js.map +2 -2
- package/dist/modules/communication_channels/api/post/test-seed/route.js +10 -95
- package/dist/modules/communication_channels/api/post/test-seed/route.js.map +2 -2
- package/dist/modules/communication_channels/backend/communication_channels/channels/page.js +0 -3
- package/dist/modules/communication_channels/backend/communication_channels/channels/page.js.map +2 -2
- package/dist/modules/communication_channels/commands/ingest-inbound-message.js +1 -14
- package/dist/modules/communication_channels/commands/ingest-inbound-message.js.map +2 -2
- package/dist/modules/communication_channels/di.js +1 -7
- package/dist/modules/communication_channels/di.js.map +2 -2
- package/dist/modules/communication_channels/lib/email-capabilities.js +1 -4
- package/dist/modules/communication_channels/lib/email-capabilities.js.map +2 -2
- package/dist/modules/communication_channels/lib/test-seed.js +2 -41
- package/dist/modules/communication_channels/lib/test-seed.js.map +2 -2
- package/dist/modules/configs/lib/system-status.js +0 -9
- package/dist/modules/configs/lib/system-status.js.map +2 -2
- package/dist/modules/currencies/backend/currencies/page.js +1 -3
- package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
- package/dist/modules/currencies/backend/exchange-rates/page.js +1 -3
- package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
- package/dist/modules/customer_accounts/api/admin/domain-mappings.js +0 -9
- package/dist/modules/customer_accounts/api/admin/domain-mappings.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/page.js +1 -3
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/CustomerAccountsSettingsPageClient.js +84 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/CustomerAccountsSettingsPageClient.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/page.js +7 -81
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/PortalUsersPageClient.js +523 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/PortalUsersPageClient.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/PortalUserDetailPageClient.js +731 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/PortalUserDetailPageClient.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js +7 -727
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +7 -521
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
- package/dist/modules/customer_accounts/extension-points.js +1 -1
- package/dist/modules/customer_accounts/extension-points.js.map +2 -2
- package/dist/modules/customer_accounts/lib/portalUrl.js +69 -0
- package/dist/modules/customer_accounts/lib/portalUrl.js.map +7 -0
- package/dist/modules/customer_accounts/services/domainMappingService.js +0 -10
- package/dist/modules/customer_accounts/services/domainMappingService.js.map +2 -2
- package/dist/modules/customers/ai-tools/companies-pack.js +1 -4
- package/dist/modules/customers/ai-tools/companies-pack.js.map +2 -2
- package/dist/modules/customers/ai-tools/deal-analyzer-pack.js +2 -13
- package/dist/modules/customers/ai-tools/deal-analyzer-pack.js.map +2 -2
- package/dist/modules/customers/ai-tools/deals-pack.js +6 -52
- package/dist/modules/customers/ai-tools/deals-pack.js.map +2 -2
- package/dist/modules/customers/ai-tools/people-pack.js +1 -4
- package/dist/modules/customers/ai-tools/people-pack.js.map +2 -2
- package/dist/modules/customers/api/activities/route.js +6 -48
- package/dist/modules/customers/api/activities/route.js.map +2 -2
- package/dist/modules/customers/api/companies/[id]/people/route.js +64 -20
- package/dist/modules/customers/api/companies/[id]/people/route.js.map +2 -2
- package/dist/modules/customers/api/companies/[id]/route.js +94 -17
- package/dist/modules/customers/api/companies/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/dashboard/widgets/customer-todos/route.js +5 -8
- package/dist/modules/customers/api/dashboard/widgets/customer-todos/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/companies/route.js +1 -1
- package/dist/modules/customers/api/deals/[id]/companies/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/people/route.js +1 -1
- package/dist/modules/customers/api/deals/[id]/people/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/route.js +25 -8
- package/dist/modules/customers/api/deals/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/stats/route.js +22 -3
- package/dist/modules/customers/api/deals/[id]/stats/route.js.map +2 -2
- package/dist/modules/customers/api/deals/aggregate/route.js +4 -11
- package/dist/modules/customers/api/deals/aggregate/route.js.map +2 -2
- package/dist/modules/customers/api/deals/map/route.js +1 -2
- package/dist/modules/customers/api/deals/map/route.js.map +2 -2
- package/dist/modules/customers/api/deals/route.js +1 -38
- package/dist/modules/customers/api/deals/route.js.map +2 -2
- package/dist/modules/customers/api/entity-roles-factory.js +4 -4
- package/dist/modules/customers/api/entity-roles-factory.js.map +2 -2
- package/dist/modules/customers/api/interactions/route.js +1 -3
- package/dist/modules/customers/api/interactions/route.js.map +2 -2
- package/dist/modules/customers/api/interactions/tasks/route.js +4 -27
- package/dist/modules/customers/api/interactions/tasks/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/[linkId]/route.js +3 -4
- package/dist/modules/customers/api/people/[id]/companies/[linkId]/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/context.js +1 -1
- package/dist/modules/customers/api/people/[id]/companies/context.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js +1 -1
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/route.js +10 -11
- package/dist/modules/customers/api/people/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/people/check-phone/route.js +9 -51
- package/dist/modules/customers/api/people/check-phone/route.js.map +2 -2
- package/dist/modules/customers/api/todos/route.js +5 -30
- package/dist/modules/customers/api/todos/route.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies/page.js +4 -6
- package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/[id]/page.js +1 -6
- package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/page.js +4 -7
- package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/components/Lane.js +13 -4
- package/dist/modules/customers/backend/customers/deals/pipeline/components/Lane.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/components/StatusFilterPopover.js +14 -85
- package/dist/modules/customers/backend/customers/deals/pipeline/components/StatusFilterPopover.js.map +2 -2
- package/dist/modules/customers/backend/customers/people/page.js +4 -6
- package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
- package/dist/modules/customers/backend/hooks/useEmailDuplicateCheck.js +3 -9
- package/dist/modules/customers/backend/hooks/useEmailDuplicateCheck.js.map +2 -2
- package/dist/modules/customers/commands/deals.js +34 -21
- package/dist/modules/customers/commands/deals.js.map +2 -2
- package/dist/modules/customers/commands/interactions.js.map +1 -1
- package/dist/modules/customers/commands/personCompanyLinks.js +2 -131
- package/dist/modules/customers/commands/personCompanyLinks.js.map +2 -2
- package/dist/modules/customers/components/CustomerTodosTable.js +0 -1
- package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
- package/dist/modules/customers/components/DealsKpiStrip.js +6 -7
- package/dist/modules/customers/components/DealsKpiStrip.js.map +2 -2
- package/dist/modules/customers/components/calendar/AgendaList.js +2 -2
- package/dist/modules/customers/components/calendar/AgendaList.js.map +2 -2
- package/dist/modules/customers/components/calendar/CalendarEventEditor.js +1 -1
- package/dist/modules/customers/components/calendar/CalendarEventEditor.js.map +2 -2
- package/dist/modules/customers/components/calendar/CalendarScreen.js +1 -1
- package/dist/modules/customers/components/calendar/CalendarScreen.js.map +2 -2
- package/dist/modules/customers/components/calendar/CalendarSettingsModal.js +1 -1
- package/dist/modules/customers/components/calendar/CalendarSettingsModal.js.map +2 -2
- package/dist/modules/customers/components/calendar/EventBlock.js +1 -1
- package/dist/modules/customers/components/calendar/EventBlock.js.map +2 -2
- package/dist/modules/customers/components/calendar/EventPeekPopover.js +2 -3
- package/dist/modules/customers/components/calendar/EventPeekPopover.js.map +2 -2
- package/dist/modules/customers/components/calendar/editor/PeopleField.js +5 -40
- package/dist/modules/customers/components/calendar/editor/PeopleField.js.map +2 -2
- package/dist/modules/customers/components/calendar/editor/hooks.js +1 -2
- package/dist/modules/customers/components/calendar/editor/hooks.js.map +2 -2
- package/dist/modules/customers/components/calendar/types.js +1 -1
- package/dist/modules/customers/components/calendar/types.js.map +2 -2
- package/dist/modules/customers/components/detail/AssignRoleDialog.js +33 -28
- package/dist/modules/customers/components/detail/AssignRoleDialog.js.map +2 -2
- package/dist/modules/customers/components/detail/CompanyKpiBar.js +4 -5
- package/dist/modules/customers/components/detail/CompanyKpiBar.js.map +2 -2
- package/dist/modules/customers/components/detail/CompanyPeopleSection.js +1 -3
- package/dist/modules/customers/components/detail/CompanyPeopleSection.js.map +2 -2
- package/dist/modules/customers/components/detail/DealForm.js +7 -19
- package/dist/modules/customers/components/detail/DealForm.js.map +2 -2
- package/dist/modules/customers/components/detail/DealsSection.js +5 -6
- package/dist/modules/customers/components/detail/DealsSection.js.map +2 -2
- package/dist/modules/customers/components/detail/EntityTagsDialog.js +11 -35
- package/dist/modules/customers/components/detail/EntityTagsDialog.js.map +2 -2
- package/dist/modules/customers/components/detail/PersonCompaniesSection.js +1 -3
- package/dist/modules/customers/components/detail/PersonCompaniesSection.js.map +2 -2
- package/dist/modules/customers/components/detail/hooks/usePersonTasks.js +13 -19
- package/dist/modules/customers/components/detail/hooks/usePersonTasks.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/ParticipantsField.js +4 -4
- package/dist/modules/customers/components/detail/schedule/ParticipantsField.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/useScheduleFormState.js +3 -3
- package/dist/modules/customers/components/detail/schedule/useScheduleFormState.js.map +2 -2
- package/dist/modules/customers/components/detail/utils.js +5 -5
- package/dist/modules/customers/components/detail/utils.js.map +2 -2
- package/dist/modules/customers/data/entities.js.map +1 -1
- package/dist/modules/customers/data/validators.js +3 -32
- package/dist/modules/customers/data/validators.js.map +2 -2
- package/dist/modules/customers/events.js +0 -5
- package/dist/modules/customers/events.js.map +2 -2
- package/dist/modules/customers/lib/calendar/conflicts.js +2 -8
- package/dist/modules/customers/lib/calendar/conflicts.js.map +2 -2
- package/dist/modules/customers/lib/calendar/editorPayload.js +2 -3
- package/dist/modules/customers/lib/calendar/editorPayload.js.map +2 -2
- package/dist/modules/customers/lib/calendar/mapItem.js +3 -8
- package/dist/modules/customers/lib/calendar/mapItem.js.map +2 -2
- package/dist/modules/customers/lib/dealStatus.js +0 -30
- package/dist/modules/customers/lib/dealStatus.js.map +2 -2
- package/dist/modules/customers/lib/findPeopleByAddresses.js +0 -1
- package/dist/modules/customers/lib/findPeopleByAddresses.js.map +2 -2
- package/dist/modules/customers/lib/personCompanies.js +2 -100
- package/dist/modules/customers/lib/personCompanies.js.map +2 -2
- package/dist/modules/customers/lib/todoCompatibility.js +0 -12
- package/dist/modules/customers/lib/todoCompatibility.js.map +2 -2
- package/dist/modules/dashboards/lib/widgetScope.js +1 -6
- package/dist/modules/dashboards/lib/widgetScope.js.map +2 -2
- package/dist/modules/data_sync/backend/data-sync/page.js +1 -3
- package/dist/modules/data_sync/backend/data-sync/page.js.map +2 -2
- package/dist/modules/data_sync/lib/sync-engine.js +6 -72
- package/dist/modules/data_sync/lib/sync-engine.js.map +2 -2
- package/dist/modules/data_sync/workers/sync-export.js +1 -5
- package/dist/modules/data_sync/workers/sync-export.js.map +2 -2
- package/dist/modules/data_sync/workers/sync-import.js +1 -5
- package/dist/modules/data_sync/workers/sync-import.js.map +2 -2
- package/dist/modules/devices/api/admin/devices/[id]/route.js +32 -5
- package/dist/modules/devices/api/admin/devices/[id]/route.js.map +2 -2
- package/dist/modules/devices/api/admin/devices/route.js +1 -14
- package/dist/modules/devices/api/admin/devices/route.js.map +2 -2
- package/dist/modules/devices/api/deviceList.js +12 -99
- package/dist/modules/devices/api/deviceList.js.map +2 -2
- package/dist/modules/devices/api/openapi.js +1 -3
- package/dist/modules/devices/api/openapi.js.map +2 -2
- package/dist/modules/devices/api/route.js +1 -9
- package/dist/modules/devices/api/route.js.map +2 -2
- package/dist/modules/devices/backend/devices/[id]/page.js +8 -8
- package/dist/modules/devices/backend/devices/[id]/page.js.map +2 -2
- package/dist/modules/devices/backend/devices/page.js +13 -15
- package/dist/modules/devices/backend/devices/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/di.js +0 -9
- package/dist/modules/directory/di.js.map +2 -2
- package/dist/modules/directory/utils/organizationScope.js.map +2 -2
- package/dist/modules/entities/api/records.js +2 -4
- package/dist/modules/entities/api/records.js.map +2 -2
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +1 -3
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
- package/dist/modules/eudr/api/plots/route.js +1 -5
- package/dist/modules/eudr/api/plots/route.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/page.meta.js +2 -2
- package/dist/modules/eudr/backend/eudr/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.js +8 -2
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/create/page.js +8 -2
- package/dist/modules/eudr/backend/eudr/plots/create/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/plots/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/plots/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/plots/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/product-mappings/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/product-mappings/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/product-mappings/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/risk-assessments/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.js +2 -0
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/statements/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/page.js +30 -28
- package/dist/modules/eudr/backend/eudr/statements/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/statements/page.meta.js.map +2 -2
- package/dist/modules/eudr/commands/statements.js +8 -3
- package/dist/modules/eudr/commands/statements.js.map +2 -2
- package/dist/modules/eudr/components/crudErrorI18n.js +21 -1
- package/dist/modules/eudr/components/crudErrorI18n.js.map +2 -2
- package/dist/modules/eudr/components/formConfig.js +6 -2
- package/dist/modules/eudr/components/formConfig.js.map +2 -2
- package/dist/modules/eudr/data/validators.js +1 -4
- package/dist/modules/eudr/data/validators.js.map +2 -2
- package/dist/modules/eudr/lib/statement-lifecycle.js +9 -1
- package/dist/modules/eudr/lib/statement-lifecycle.js.map +2 -2
- package/dist/modules/feature_toggles/components/FeatureTogglesTable.js +0 -1
- package/dist/modules/feature_toggles/components/FeatureTogglesTable.js.map +2 -2
- package/dist/modules/feature_toggles/components/OverridesTable.js +0 -1
- package/dist/modules/feature_toggles/components/OverridesTable.js.map +2 -2
- package/dist/modules/feature_toggles/defaults.json +8 -0
- package/dist/modules/inbox_ops/backend/inbox-ops/log/page.js +0 -3
- package/dist/modules/inbox_ops/backend/inbox-ops/log/page.js.map +2 -2
- package/dist/modules/inbox_ops/backend/inbox-ops/page.js +0 -3
- package/dist/modules/inbox_ops/backend/inbox-ops/page.js.map +2 -2
- package/dist/modules/inbox_ops/lib/htmlToPlainText.js +12 -1
- package/dist/modules/inbox_ops/lib/htmlToPlainText.js.map +2 -2
- package/dist/modules/integrations/api/[id]/credentials/route.js +1 -6
- package/dist/modules/integrations/api/[id]/credentials/route.js.map +2 -2
- package/dist/modules/integrations/backend/integrations/[id]/page.js +29 -38
- package/dist/modules/integrations/backend/integrations/[id]/page.js.map +2 -2
- package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js +9 -36
- package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js.map +2 -2
- package/dist/modules/integrations/data/validators.js +3 -11
- package/dist/modules/integrations/data/validators.js.map +2 -2
- package/dist/modules/integrations/lib/credentials-masking.js +2 -6
- package/dist/modules/integrations/lib/credentials-masking.js.map +2 -2
- package/dist/modules/messages/api/[id]/route.js +1 -29
- package/dist/modules/messages/api/[id]/route.js.map +2 -2
- package/dist/modules/messages/api/openapi.js +2 -17
- package/dist/modules/messages/api/openapi.js.map +2 -2
- package/dist/modules/messages/api/route.js +2 -17
- package/dist/modules/messages/api/route.js.map +2 -2
- package/dist/modules/messages/components/MessagesInboxPageClient.js +14 -7
- package/dist/modules/messages/components/MessagesInboxPageClient.js.map +2 -2
- package/dist/modules/messages/components/inboxFilters.js +0 -15
- package/dist/modules/messages/components/inboxFilters.js.map +2 -2
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js +1 -11
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js.map +2 -2
- package/dist/modules/messages/components/message-detail/panels/MessageHeader.js +1 -3
- package/dist/modules/messages/components/message-detail/panels/MessageHeader.js.map +2 -2
- package/dist/modules/messages/components/message-detail/panels/thread-panel.js +1 -2
- package/dist/modules/messages/components/message-detail/panels/thread-panel.js.map +2 -2
- package/dist/modules/messages/components/messageListLabels.js +2 -14
- package/dist/modules/messages/components/messageListLabels.js.map +2 -2
- package/dist/modules/messages/data/validators.js +4 -18
- package/dist/modules/messages/data/validators.js.map +2 -2
- package/dist/modules/payment_gateways/api/webhook/[provider]/route.js +6 -4
- package/dist/modules/payment_gateways/api/webhook/[provider]/route.js.map +2 -2
- package/dist/modules/payment_gateways/backend/payment-gateways/page.js +1 -3
- package/dist/modules/payment_gateways/backend/payment-gateways/page.js.map +2 -2
- package/dist/modules/payment_gateways/lib/webhook-processor.js +0 -7
- package/dist/modules/payment_gateways/lib/webhook-processor.js.map +2 -2
- package/dist/modules/planner/backend/planner/availability-rulesets/page.js +0 -3
- package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
- package/dist/modules/push_notifications/backend/push_notifications/page.js +1 -3
- package/dist/modules/push_notifications/backend/push_notifications/page.js.map +2 -2
- package/dist/modules/push_notifications/backend/push_notifications/send/page.js +1 -1
- package/dist/modules/push_notifications/backend/push_notifications/send/page.js.map +2 -2
- package/dist/modules/query_index/lib/engine.js +51 -150
- package/dist/modules/query_index/lib/engine.js.map +2 -2
- package/dist/modules/query_index/lib/search-tokens.js +3 -79
- package/dist/modules/query_index/lib/search-tokens.js.map +2 -2
- package/dist/modules/resources/backend/resources/resource-types/page.js +1 -3
- package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
- package/dist/modules/resources/backend/resources/resources/page.js +1 -3
- package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/channels/offers/page.js +0 -3
- package/dist/modules/sales/backend/sales/channels/offers/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/channels/page.js +0 -3
- package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/documents/[id]/page.js +8 -10
- package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +1 -79
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/sales/components/PriceWithCurrency.js +5 -7
- package/dist/modules/sales/components/PriceWithCurrency.js.map +2 -2
- package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js +0 -3
- package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js.map +2 -2
- package/dist/modules/sales/components/documents/AdjustmentsSection.js +6 -8
- package/dist/modules/sales/components/documents/AdjustmentsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/ItemsSection.js +22 -51
- package/dist/modules/sales/components/documents/ItemsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/LineItemDialog.js +19 -84
- package/dist/modules/sales/components/documents/LineItemDialog.js.map +2 -2
- package/dist/modules/sales/components/documents/PaymentsSection.js +9 -23
- package/dist/modules/sales/components/documents/PaymentsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/ReturnsSection.js +6 -8
- package/dist/modules/sales/components/documents/ReturnsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js +14 -68
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesOrderDraftLines.js +5 -6
- package/dist/modules/sales/components/documents/SalesOrderDraftLines.js.map +2 -2
- package/dist/modules/sales/components/documents/ShipmentDialog.js +4 -5
- package/dist/modules/sales/components/documents/ShipmentDialog.js.map +2 -2
- package/dist/modules/sales/components/documents/ShipmentsSection.js +6 -8
- package/dist/modules/sales/components/documents/ShipmentsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/lineItemUtils.js +2 -2
- package/dist/modules/sales/components/documents/lineItemUtils.js.map +2 -2
- package/dist/modules/sales/data/entities.js +2 -8
- package/dist/modules/sales/data/entities.js.map +2 -2
- package/dist/modules/sales/extension-points.js +0 -1
- package/dist/modules/sales/extension-points.js.map +2 -2
- package/dist/modules/sales/setup.js +0 -2
- package/dist/modules/sales/setup.js.map +2 -2
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js +44 -2
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js.map +2 -2
- package/dist/modules/sales/widgets/injection/payment-gateway-status-column/widget.js +2 -10
- package/dist/modules/sales/widgets/injection/payment-gateway-status-column/widget.js.map +2 -2
- package/dist/modules/sales/widgets/injection-table.js +7 -4
- package/dist/modules/sales/widgets/injection-table.js.map +2 -2
- package/dist/modules/staff/backend/staff/leave-requests/page.js +0 -3
- package/dist/modules/staff/backend/staff/leave-requests/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/my-leave-requests/page.js +0 -3
- package/dist/modules/staff/backend/staff/my-leave-requests/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/team-members/page.js +0 -3
- package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/team-roles/page.js +0 -3
- package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +0 -3
- package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/teams/page.js +0 -3
- package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/page.js +18 -29
- package/dist/modules/staff/backend/staff/timesheets/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/projects/page.js +0 -3
- package/dist/modules/staff/backend/staff/timesheets/projects/page.js.map +2 -2
- package/dist/modules/sync_excel/lib/adapters/customers.js +0 -1
- package/dist/modules/sync_excel/lib/adapters/customers.js.map +2 -2
- package/dist/modules/warranty_claims/api/assignees/route.js +3 -3
- package/dist/modules/warranty_claims/api/assignees/route.js.map +2 -2
- package/dist/modules/warranty_claims/api/portal/attachments/route.js +2 -2
- package/dist/modules/warranty_claims/api/portal/attachments/route.js.map +2 -2
- package/dist/modules/warranty_claims/api/portal/claims/route.js +9 -12
- package/dist/modules/warranty_claims/api/portal/claims/route.js.map +2 -2
- package/dist/modules/warranty_claims/backend/page.js +0 -3
- package/dist/modules/warranty_claims/backend/page.js.map +2 -2
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/page.js +0 -3
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/page.js.map +2 -2
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.js +0 -3
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.js.map +2 -2
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.js +0 -3
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.js.map +2 -2
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.js +0 -3
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.js.map +2 -2
- package/dist/modules/wms/api/warehouses/route.js +9 -13
- package/dist/modules/wms/api/warehouses/route.js.map +2 -2
- package/dist/modules/wms/api/zones/route.js +2 -15
- package/dist/modules/wms/api/zones/route.js.map +2 -2
- package/dist/modules/wms/commands/configuration.js +9 -121
- package/dist/modules/wms/commands/configuration.js.map +2 -2
- package/dist/modules/wms/commands/inventory-actions.js +0 -3
- package/dist/modules/wms/commands/inventory-actions.js.map +2 -2
- package/dist/modules/wms/commands/shared.js +1 -9
- package/dist/modules/wms/commands/shared.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js +111 -76
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js.map +3 -3
- package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js +0 -1
- package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLocationDetailPage.js +20 -16
- package/dist/modules/wms/components/backend/WmsLocationDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLotDetailPage.js +10 -6
- package/dist/modules/wms/components/backend/WmsLotDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLotsListPage.js +0 -1
- package/dist/modules/wms/components/backend/WmsLotsListPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsOperationalDashboardPage.js +11 -7
- package/dist/modules/wms/components/backend/WmsOperationalDashboardPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsSkuDetailPage.js +10 -6
- package/dist/modules/wms/components/backend/WmsSkuDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/inventoryMutationLoaders.js +20 -27
- package/dist/modules/wms/components/backend/inventoryMutationLoaders.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/page.js +1 -3
- package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
- package/dist/modules/workflows/backend/events/page.js +1 -3
- package/dist/modules/workflows/backend/events/page.js.map +2 -2
- package/dist/modules/workflows/backend/instances/page.js +1 -3
- package/dist/modules/workflows/backend/instances/page.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/page.js +1 -3
- package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
- package/dist/modules/workflows/lib/activity-executor.js +0 -4
- package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
- package/package.json +10 -9
- package/src/helpers/integration/api.ts +1 -33
- package/src/helpers/integration/communicationChannelsFixtures.ts +1 -69
- package/src/modules/api_keys/api/keys/route.ts +1 -3
- package/src/modules/api_keys/backend/api-keys/page.tsx +1 -4
- package/src/modules/attachments/AGENTS.md +0 -15
- package/src/modules/attachments/api/route.ts +2 -2
- package/src/modules/attachments/components/AttachmentLibrary.tsx +0 -3
- package/src/modules/attachments/di.ts +0 -16
- package/src/modules/attachments/i18n/de.json +0 -5
- package/src/modules/attachments/i18n/en.json +0 -5
- package/src/modules/attachments/i18n/es.json +0 -5
- package/src/modules/attachments/i18n/ko.json +0 -5
- package/src/modules/attachments/i18n/pl.json +0 -5
- package/src/modules/attachments/index.ts +0 -10
- package/src/modules/attachments/lib/scoped-upload-service.ts +0 -46
- package/src/modules/attachments/lib/upload-limits.ts +2 -6
- package/src/modules/audit_logs/backend/audit-logs/page.tsx +0 -8
- package/src/modules/audit_logs/lib/display-helpers.tsx +32 -42
- package/src/modules/audit_logs/services/actionLogService.ts +11 -74
- package/src/modules/auth/acl.ts +6 -30
- package/src/modules/auth/api/feature-check.ts +3 -10
- package/src/modules/auth/api/login.ts +24 -9
- package/src/modules/auth/api/roles/acl/route.ts +39 -42
- package/src/modules/auth/api/routeError.ts +30 -0
- package/src/modules/auth/api/session/refresh.ts +1 -32
- package/src/modules/auth/api/users/acl/route.ts +101 -185
- package/src/modules/auth/backend/roles/[id]/edit/page.meta.ts +2 -5
- package/src/modules/auth/backend/roles/page.tsx +2 -4
- package/src/modules/auth/backend/users/[id]/edit/page.meta.ts +2 -5
- package/src/modules/auth/backend/users/page.tsx +2 -3
- package/src/modules/auth/components/AclEditor.tsx +33 -63
- package/src/modules/auth/data/entities.ts +1 -4
- package/src/modules/auth/data/validators.ts +0 -5
- package/src/modules/auth/di.ts +16 -46
- package/src/modules/auth/frontend/reset/[token]/page.tsx +0 -74
- package/src/modules/auth/i18n/de.json +0 -389
- package/src/modules/auth/i18n/en.json +0 -389
- package/src/modules/auth/i18n/es.json +0 -389
- package/src/modules/auth/i18n/ko.json +0 -389
- package/src/modules/auth/i18n/pl.json +2 -391
- package/src/modules/auth/lib/grantChecks.ts +0 -6
- package/src/modules/auth/services/authService.ts +2 -18
- package/src/modules/auth/services/rbacService.ts +24 -110
- package/src/modules/business_rules/backend/logs/page.tsx +1 -4
- package/src/modules/business_rules/backend/rules/[id]/page.meta.ts +5 -0
- package/src/modules/business_rules/backend/rules/create/page.meta.ts +5 -1
- package/src/modules/business_rules/backend/rules/page.tsx +1 -4
- package/src/modules/business_rules/backend/sets/[id]/page.meta.ts +5 -0
- package/src/modules/business_rules/backend/sets/create/page.meta.ts +5 -1
- package/src/modules/business_rules/backend/sets/page.tsx +1 -4
- package/src/modules/business_rules/lib/expression-evaluator.ts +9 -9
- package/src/modules/business_rules/lib/rule-evaluator.ts +9 -10
- package/src/modules/catalog/ai-agents.ts +1 -1
- package/src/modules/catalog/ai-tools/merchandising-pack.ts +2 -2
- package/src/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.tsx +5 -12
- package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +0 -3
- package/src/modules/catalog/components/products/ProductsDataTable.tsx +0 -7
- package/src/modules/catalog/i18n/de.json +0 -1
- package/src/modules/catalog/i18n/en.json +0 -1
- package/src/modules/catalog/i18n/es.json +0 -1
- package/src/modules/catalog/i18n/ko.json +0 -1
- package/src/modules/catalog/i18n/pl.json +0 -1
- package/src/modules/catalog/widgets/injection/merchandising-assistant-trigger/widget.client.tsx +0 -4
- package/src/modules/communication_channels/api/post/channels/[id]/test-send/route.ts +1 -17
- package/src/modules/communication_channels/api/post/test-seed/route.ts +16 -155
- package/src/modules/communication_channels/backend/communication_channels/channels/page.tsx +0 -4
- package/src/modules/communication_channels/commands/ingest-inbound-message.ts +1 -38
- package/src/modules/communication_channels/di.ts +0 -7
- package/src/modules/communication_channels/lib/adapter.ts +0 -14
- package/src/modules/communication_channels/lib/email-capabilities.ts +0 -4
- package/src/modules/communication_channels/lib/test-seed.ts +4 -64
- package/src/modules/configs/i18n/de.json +0 -2
- package/src/modules/configs/i18n/en.json +0 -2
- package/src/modules/configs/i18n/es.json +0 -2
- package/src/modules/configs/i18n/ko.json +0 -2
- package/src/modules/configs/i18n/pl.json +0 -2
- package/src/modules/configs/lib/system-status.ts +0 -9
- package/src/modules/currencies/backend/currencies/page.tsx +1 -4
- package/src/modules/currencies/backend/exchange-rates/page.tsx +1 -4
- package/src/modules/customer_accounts/api/admin/domain-mappings.ts +0 -7
- package/src/modules/customer_accounts/backend/customer_accounts/roles/page.tsx +1 -4
- package/src/modules/customer_accounts/backend/customer_accounts/settings/CustomerAccountsSettingsPageClient.tsx +138 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/page.tsx +8 -132
- package/src/modules/customer_accounts/backend/customer_accounts/users/PortalUsersPageClient.tsx +598 -0
- package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/PortalUserDetailPageClient.tsx +838 -0
- package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/page.tsx +6 -838
- package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +6 -590
- package/src/modules/customer_accounts/extension-points.ts +1 -1
- package/src/modules/customer_accounts/lib/portalUrl.ts +112 -0
- package/src/modules/customer_accounts/services/domainMappingService.ts +0 -10
- package/src/modules/customers/ai-tools/companies-pack.ts +1 -4
- package/src/modules/customers/ai-tools/deal-analyzer-pack.ts +2 -17
- package/src/modules/customers/ai-tools/deals-pack.ts +1 -66
- package/src/modules/customers/ai-tools/people-pack.ts +1 -4
- package/src/modules/customers/api/activities/route.ts +0 -45
- package/src/modules/customers/api/companies/[id]/people/route.ts +73 -24
- package/src/modules/customers/api/companies/[id]/route.ts +107 -24
- package/src/modules/customers/api/dashboard/widgets/customer-todos/route.ts +8 -16
- package/src/modules/customers/api/deals/[id]/companies/route.ts +1 -4
- package/src/modules/customers/api/deals/[id]/people/route.ts +1 -4
- package/src/modules/customers/api/deals/[id]/route.ts +28 -17
- package/src/modules/customers/api/deals/[id]/stats/route.ts +25 -10
- package/src/modules/customers/api/deals/aggregate/route.ts +4 -14
- package/src/modules/customers/api/deals/map/route.ts +0 -1
- package/src/modules/customers/api/deals/route.ts +1 -50
- package/src/modules/customers/api/entity-roles-factory.ts +4 -8
- package/src/modules/customers/api/interactions/route.ts +2 -8
- package/src/modules/customers/api/interactions/tasks/route.ts +1 -24
- package/src/modules/customers/api/people/[id]/companies/[linkId]/route.ts +4 -12
- package/src/modules/customers/api/people/[id]/companies/context.ts +1 -4
- package/src/modules/customers/api/people/[id]/companies/enriched/route.ts +1 -4
- package/src/modules/customers/api/people/[id]/route.ts +11 -16
- package/src/modules/customers/api/people/check-phone/route.ts +10 -75
- package/src/modules/customers/api/todos/route.ts +2 -27
- package/src/modules/customers/backend/customers/companies/page.tsx +4 -7
- package/src/modules/customers/backend/customers/deals/[id]/page.tsx +2 -7
- package/src/modules/customers/backend/customers/deals/page.tsx +4 -10
- package/src/modules/customers/backend/customers/deals/pipeline/components/Lane.tsx +14 -5
- package/src/modules/customers/backend/customers/deals/pipeline/components/StatusFilterPopover.tsx +27 -109
- package/src/modules/customers/backend/customers/people/page.tsx +4 -7
- package/src/modules/customers/backend/hooks/useEmailDuplicateCheck.ts +4 -12
- package/src/modules/customers/commands/deals.ts +59 -34
- package/src/modules/customers/commands/interactions.ts +1 -1
- package/src/modules/customers/commands/personCompanyLinks.ts +8 -224
- package/src/modules/customers/components/CustomerTodosTable.tsx +0 -2
- package/src/modules/customers/components/DealsKpiStrip.tsx +7 -7
- package/src/modules/customers/components/calendar/AgendaList.tsx +3 -3
- package/src/modules/customers/components/calendar/CalendarEventEditor.tsx +1 -1
- package/src/modules/customers/components/calendar/CalendarScreen.tsx +1 -1
- package/src/modules/customers/components/calendar/CalendarSettingsModal.tsx +1 -1
- package/src/modules/customers/components/calendar/EventBlock.tsx +2 -2
- package/src/modules/customers/components/calendar/EventPeekPopover.tsx +2 -4
- package/src/modules/customers/components/calendar/editor/PeopleField.tsx +5 -61
- package/src/modules/customers/components/calendar/editor/hooks.ts +1 -7
- package/src/modules/customers/components/calendar/types.ts +2 -2
- package/src/modules/customers/components/detail/AssignRoleDialog.tsx +12 -7
- package/src/modules/customers/components/detail/CompanyKpiBar.tsx +4 -5
- package/src/modules/customers/components/detail/CompanyPeopleSection.tsx +1 -8
- package/src/modules/customers/components/detail/DealForm.tsx +2 -22
- package/src/modules/customers/components/detail/DealsSection.tsx +5 -11
- package/src/modules/customers/components/detail/EntityTagsDialog.tsx +12 -58
- package/src/modules/customers/components/detail/PersonCompaniesSection.tsx +1 -8
- package/src/modules/customers/components/detail/hooks/usePersonTasks.ts +14 -23
- package/src/modules/customers/components/detail/schedule/ParticipantsField.tsx +5 -5
- package/src/modules/customers/components/detail/schedule/useScheduleFormState.ts +5 -5
- package/src/modules/customers/components/detail/types.ts +1 -1
- package/src/modules/customers/components/detail/utils.ts +5 -15
- package/src/modules/customers/data/entities.ts +1 -1
- package/src/modules/customers/data/validators.ts +9 -50
- package/src/modules/customers/events.ts +0 -5
- package/src/modules/customers/i18n/de.json +1 -9
- package/src/modules/customers/i18n/en.json +1 -9
- package/src/modules/customers/i18n/es.json +1 -9
- package/src/modules/customers/i18n/ko.json +1 -9
- package/src/modules/customers/i18n/pl.json +1 -9
- package/src/modules/customers/lib/calendar/conflicts.ts +2 -10
- package/src/modules/customers/lib/calendar/editorPayload.ts +3 -4
- package/src/modules/customers/lib/calendar/mapItem.ts +3 -8
- package/src/modules/customers/lib/dealStatus.ts +0 -42
- package/src/modules/customers/lib/findPeopleByAddresses.ts +6 -8
- package/src/modules/customers/lib/personCompanies.ts +1 -136
- package/src/modules/customers/lib/todoCompatibility.ts +1 -19
- package/src/modules/dashboards/i18n/es.json +4 -4
- package/src/modules/dashboards/i18n/pl.json +7 -7
- package/src/modules/dashboards/lib/widgetScope.ts +0 -6
- package/src/modules/data_sync/AGENTS.md +1 -1
- package/src/modules/data_sync/backend/data-sync/page.tsx +1 -4
- package/src/modules/data_sync/lib/adapter.ts +0 -36
- package/src/modules/data_sync/lib/sync-engine.ts +5 -113
- package/src/modules/data_sync/workers/sync-export.ts +0 -4
- package/src/modules/data_sync/workers/sync-import.ts +0 -4
- package/src/modules/devices/AGENTS.md +0 -8
- package/src/modules/devices/api/admin/devices/[id]/route.ts +34 -5
- package/src/modules/devices/api/admin/devices/route.ts +1 -14
- package/src/modules/devices/api/deviceList.ts +11 -135
- package/src/modules/devices/api/openapi.ts +1 -9
- package/src/modules/devices/api/route.ts +1 -9
- package/src/modules/devices/backend/devices/[id]/page.tsx +15 -15
- package/src/modules/devices/backend/devices/page.tsx +21 -24
- package/src/modules/directory/backend/directory/organizations/page.tsx +1 -3
- package/src/modules/directory/backend/directory/tenants/page.tsx +1 -3
- package/src/modules/directory/di.ts +2 -14
- package/src/modules/directory/utils/organizationScope.ts +15 -4
- package/src/modules/entities/api/records.ts +0 -2
- package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +1 -4
- package/src/modules/eudr/api/plots/route.ts +0 -4
- package/src/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/evidence-submissions/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/evidence-submissions/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/page.meta.ts +2 -2
- package/src/modules/eudr/backend/eudr/plots/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/plots/[id]/page.tsx +8 -2
- package/src/modules/eudr/backend/eudr/plots/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/plots/create/page.tsx +8 -2
- package/src/modules/eudr/backend/eudr/plots/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/plots/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/product-mappings/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/product-mappings/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/product-mappings/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/risk-assessments/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/risk-assessments/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/risk-assessments/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/statements/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/statements/[id]/page.tsx +2 -0
- package/src/modules/eudr/backend/eudr/statements/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/statements/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/statements/page.tsx +32 -30
- package/src/modules/eudr/commands/statements.ts +7 -2
- package/src/modules/eudr/components/crudErrorI18n.ts +31 -0
- package/src/modules/eudr/components/formConfig.tsx +9 -1
- package/src/modules/eudr/data/validators.ts +1 -16
- package/src/modules/eudr/i18n/de.json +3 -2
- package/src/modules/eudr/i18n/en.json +3 -2
- package/src/modules/eudr/i18n/es.json +3 -2
- package/src/modules/eudr/i18n/ko.json +3 -2
- package/src/modules/eudr/i18n/pl.json +3 -2
- package/src/modules/eudr/lib/statement-lifecycle.ts +8 -0
- package/src/modules/feature_toggles/components/FeatureTogglesTable.tsx +1 -2
- package/src/modules/feature_toggles/components/OverridesTable.tsx +1 -2
- package/src/modules/feature_toggles/defaults.json +8 -0
- package/src/modules/inbox_ops/backend/inbox-ops/log/page.tsx +0 -4
- package/src/modules/inbox_ops/backend/inbox-ops/page.tsx +0 -4
- package/src/modules/inbox_ops/lib/htmlToPlainText.ts +17 -1
- package/src/modules/integrations/api/[id]/credentials/route.ts +4 -6
- package/src/modules/integrations/backend/integrations/[id]/page.tsx +31 -61
- package/src/modules/integrations/backend/integrations/bundle/[id]/page.tsx +9 -44
- package/src/modules/integrations/data/validators.ts +2 -12
- package/src/modules/integrations/i18n/de.json +0 -1
- package/src/modules/integrations/i18n/en.json +0 -1
- package/src/modules/integrations/i18n/es.json +0 -1
- package/src/modules/integrations/i18n/ko.json +0 -1
- package/src/modules/integrations/i18n/pl.json +0 -1
- package/src/modules/integrations/lib/credentials-masking.ts +6 -10
- package/src/modules/messages/api/[id]/route.ts +1 -55
- package/src/modules/messages/api/openapi.ts +0 -20
- package/src/modules/messages/api/route.ts +2 -31
- package/src/modules/messages/components/MessagesInboxPageClient.tsx +16 -9
- package/src/modules/messages/components/inboxFilters.ts +0 -36
- package/src/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.ts +1 -14
- package/src/modules/messages/components/message-detail/panels/MessageHeader.tsx +1 -3
- package/src/modules/messages/components/message-detail/panels/thread-panel.tsx +1 -2
- package/src/modules/messages/components/message-detail/types.ts +0 -3
- package/src/modules/messages/components/messageListLabels.ts +3 -52
- package/src/modules/messages/data/validators.ts +4 -43
- package/src/modules/payment_gateways/api/webhook/[provider]/route.ts +6 -4
- package/src/modules/payment_gateways/backend/payment-gateways/page.tsx +1 -4
- package/src/modules/payment_gateways/lib/webhook-processor.ts +0 -11
- package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +0 -4
- package/src/modules/push_notifications/backend/push_notifications/page.tsx +1 -4
- package/src/modules/push_notifications/backend/push_notifications/send/page.tsx +4 -4
- package/src/modules/query_index/lib/engine.ts +61 -249
- package/src/modules/query_index/lib/search-tokens.ts +3 -135
- package/src/modules/resources/backend/resources/resource-types/page.tsx +1 -4
- package/src/modules/resources/backend/resources/resources/page.tsx +1 -4
- package/src/modules/sales/backend/sales/channels/offers/page.tsx +0 -4
- package/src/modules/sales/backend/sales/channels/page.tsx +0 -4
- package/src/modules/sales/backend/sales/documents/[id]/page.tsx +8 -14
- package/src/modules/sales/commands/documents.ts +0 -93
- package/src/modules/sales/components/PriceWithCurrency.tsx +5 -17
- package/src/modules/sales/components/channels/SalesChannelOffersPanel.tsx +0 -4
- package/src/modules/sales/components/documents/AdjustmentsSection.tsx +5 -6
- package/src/modules/sales/components/documents/ItemsSection.tsx +18 -56
- package/src/modules/sales/components/documents/LineItemDialog.tsx +21 -138
- package/src/modules/sales/components/documents/PaymentsSection.tsx +9 -20
- package/src/modules/sales/components/documents/ReturnsSection.tsx +5 -6
- package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +14 -106
- package/src/modules/sales/components/documents/SalesOrderDraftLines.tsx +5 -6
- package/src/modules/sales/components/documents/ShipmentDialog.tsx +4 -5
- package/src/modules/sales/components/documents/ShipmentsSection.tsx +5 -6
- package/src/modules/sales/components/documents/lineItemUtils.ts +2 -7
- package/src/modules/sales/data/entities.ts +0 -6
- package/src/modules/sales/extension-points.ts +0 -1
- package/src/modules/sales/i18n/de.json +37 -8
- package/src/modules/sales/i18n/en.json +37 -8
- package/src/modules/sales/i18n/es.json +37 -8
- package/src/modules/sales/i18n/ko.json +37 -8
- package/src/modules/sales/i18n/pl.json +37 -8
- package/src/modules/sales/migrations/.snapshot-open-mercato.json +0 -60
- package/src/modules/sales/setup.ts +0 -2
- package/src/modules/sales/widgets/injection/document-history/widget.client.tsx +42 -2
- package/src/modules/sales/widgets/injection/payment-gateway-status-column/widget.ts +1 -9
- package/src/modules/sales/widgets/injection-table.ts +7 -4
- package/src/modules/staff/backend/staff/leave-requests/page.tsx +0 -4
- package/src/modules/staff/backend/staff/my-leave-requests/page.tsx +0 -4
- package/src/modules/staff/backend/staff/team-members/page.tsx +0 -6
- package/src/modules/staff/backend/staff/team-roles/page.tsx +0 -4
- package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +0 -4
- package/src/modules/staff/backend/staff/teams/page.tsx +0 -4
- package/src/modules/staff/backend/staff/timesheets/page.tsx +1 -12
- package/src/modules/staff/backend/staff/timesheets/projects/page.tsx +0 -4
- package/src/modules/sync_excel/lib/adapters/customers.ts +0 -5
- package/src/modules/warranty_claims/api/assignees/route.ts +3 -3
- package/src/modules/warranty_claims/api/portal/attachments/route.ts +2 -2
- package/src/modules/warranty_claims/api/portal/claims/route.ts +9 -12
- package/src/modules/warranty_claims/backend/page.tsx +0 -4
- package/src/modules/warranty_claims/backend/warranty_claims/registrations/page.tsx +0 -4
- package/src/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.tsx +0 -4
- package/src/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.tsx +0 -4
- package/src/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.tsx +0 -4
- package/src/modules/wms/api/warehouses/route.ts +9 -13
- package/src/modules/wms/api/zones/route.ts +0 -16
- package/src/modules/wms/commands/configuration.ts +10 -159
- package/src/modules/wms/commands/inventory-actions.ts +0 -3
- package/src/modules/wms/commands/shared.ts +0 -17
- package/src/modules/wms/components/backend/WmsConfigurationPage.tsx +141 -95
- package/src/modules/wms/components/backend/WmsInventoryConsolePage.tsx +0 -2
- package/src/modules/wms/components/backend/WmsLocationDetailPage.tsx +30 -26
- package/src/modules/wms/components/backend/WmsLotDetailPage.tsx +21 -17
- package/src/modules/wms/components/backend/WmsLotsListPage.tsx +0 -2
- package/src/modules/wms/components/backend/WmsOperationalDashboardPage.tsx +17 -13
- package/src/modules/wms/components/backend/WmsSkuDetailPage.tsx +16 -12
- package/src/modules/wms/components/backend/inventoryMutationLoaders.ts +20 -36
- 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/ko.json +0 -2
- package/src/modules/wms/i18n/pl.json +0 -2
- package/src/modules/workflows/backend/definitions/page.tsx +1 -4
- package/src/modules/workflows/backend/events/page.tsx +1 -4
- package/src/modules/workflows/backend/instances/page.tsx +1 -4
- package/src/modules/workflows/backend/tasks/page.tsx +1 -4
- package/src/modules/workflows/lib/activity-executor.ts +0 -9
- package/dist/modules/api_keys/di.js +0 -9
- package/dist/modules/api_keys/di.js.map +0 -7
- package/dist/modules/api_keys/services/principalService.js +0 -31
- package/dist/modules/api_keys/services/principalService.js.map +0 -7
- package/dist/modules/attachments/lib/attachment-service.js +0 -313
- package/dist/modules/attachments/lib/attachment-service.js.map +0 -7
- package/dist/modules/auth/api/reset/validate.js +0 -55
- package/dist/modules/auth/api/reset/validate.js.map +0 -7
- package/dist/modules/auth/commands/acl.js +0 -254
- package/dist/modules/auth/commands/acl.js.map +0 -7
- package/dist/modules/auth/services/principalService.js +0 -200
- package/dist/modules/auth/services/principalService.js.map +0 -7
- package/dist/modules/auth/services/roleOrganizationScope.js +0 -41
- package/dist/modules/auth/services/roleOrganizationScope.js.map +0 -7
- package/dist/modules/communication_channels/lib/outbound-recipient.js +0 -33
- package/dist/modules/communication_channels/lib/outbound-recipient.js.map +0 -7
- package/dist/modules/communication_channels/lib/resolve-channel-type.js +0 -51
- package/dist/modules/communication_channels/lib/resolve-channel-type.js.map +0 -7
- package/dist/modules/customers/backend/customers/deals/pipeline/components/toneClasses.js +0 -18
- package/dist/modules/customers/backend/customers/deals/pipeline/components/toneClasses.js.map +0 -7
- package/dist/modules/customers/lib/calendar/participantIdentity.js +0 -9
- package/dist/modules/customers/lib/calendar/participantIdentity.js.map +0 -7
- package/dist/modules/customers/lib/closureStage.js +0 -45
- package/dist/modules/customers/lib/closureStage.js.map +0 -7
- package/dist/modules/customers/lib/detailReadAccess.js +0 -12
- package/dist/modules/customers/lib/detailReadAccess.js.map +0 -7
- package/dist/modules/data_sync/lib/abandoned-run.js +0 -19
- package/dist/modules/data_sync/lib/abandoned-run.js.map +0 -7
- package/dist/modules/devices/api/deviceSerialization.js +0 -46
- package/dist/modules/devices/api/deviceSerialization.js.map +0 -7
- package/dist/modules/directory/services/organizationHierarchyService.js +0 -29
- package/dist/modules/directory/services/organizationHierarchyService.js.map +0 -7
- package/dist/modules/directory/services/organizationScopeService.js +0 -56
- package/dist/modules/directory/services/organizationScopeService.js.map +0 -7
- package/dist/modules/integrations/backend/integrations/credential-secret-fields.js +0 -55
- package/dist/modules/integrations/backend/integrations/credential-secret-fields.js.map +0 -7
- package/dist/modules/messages/lib/channel-sender-identity.js +0 -26
- package/dist/modules/messages/lib/channel-sender-identity.js.map +0 -7
- package/dist/modules/messages/lib/composeSourceChannelType.js +0 -41
- package/dist/modules/messages/lib/composeSourceChannelType.js.map +0 -7
- package/dist/modules/query_index/lib/search-entity-policy.js +0 -14
- package/dist/modules/query_index/lib/search-entity-policy.js.map +0 -7
- package/dist/modules/sales/components/documents/lineItemShipmentLock.js +0 -54
- package/dist/modules/sales/components/documents/lineItemShipmentLock.js.map +0 -7
- package/dist/modules/sales/lib/salesChannelsToggleSeed.js +0 -33
- package/dist/modules/sales/lib/salesChannelsToggleSeed.js.map +0 -7
- package/dist/modules/sales/migrations/Migration20260821120000_sales_notes_addresses_context_idx.js +0 -32
- package/dist/modules/sales/migrations/Migration20260821120000_sales_notes_addresses_context_idx.js.map +0 -7
- package/dist/modules/wms/api/warehouseSearch.js +0 -21
- package/dist/modules/wms/api/warehouseSearch.js.map +0 -7
- package/dist/modules/wms/components/backend/WarehouseEditDialog.js +0 -158
- package/dist/modules/wms/components/backend/WarehouseEditDialog.js.map +0 -7
- package/dist/modules/wms/components/backend/warehouseFormOptions.js +0 -66
- package/dist/modules/wms/components/backend/warehouseFormOptions.js.map +0 -7
- package/src/modules/api_keys/di.ts +0 -7
- package/src/modules/api_keys/services/principalService.ts +0 -33
- package/src/modules/attachments/lib/attachment-service.ts +0 -468
- package/src/modules/auth/api/reset/validate.ts +0 -57
- package/src/modules/auth/commands/acl.ts +0 -495
- package/src/modules/auth/services/principalService.ts +0 -266
- package/src/modules/auth/services/roleOrganizationScope.ts +0 -70
- package/src/modules/communication_channels/lib/outbound-recipient.ts +0 -71
- package/src/modules/communication_channels/lib/resolve-channel-type.ts +0 -99
- package/src/modules/customers/backend/customers/deals/pipeline/components/toneClasses.ts +0 -21
- package/src/modules/customers/lib/calendar/participantIdentity.ts +0 -17
- package/src/modules/customers/lib/closureStage.ts +0 -76
- package/src/modules/customers/lib/detailReadAccess.ts +0 -35
- package/src/modules/data_sync/lib/abandoned-run.ts +0 -56
- package/src/modules/devices/api/deviceSerialization.ts +0 -50
- package/src/modules/directory/services/organizationHierarchyService.ts +0 -34
- package/src/modules/directory/services/organizationScopeService.ts +0 -85
- package/src/modules/integrations/backend/integrations/credential-secret-fields.ts +0 -84
- package/src/modules/messages/lib/channel-sender-identity.ts +0 -55
- package/src/modules/messages/lib/composeSourceChannelType.ts +0 -95
- package/src/modules/query_index/lib/search-entity-policy.ts +0 -46
- package/src/modules/sales/components/documents/lineItemShipmentLock.ts +0 -74
- package/src/modules/sales/lib/salesChannelsToggleSeed.ts +0 -42
- package/src/modules/sales/migrations/Migration20260821120000_sales_notes_addresses_context_idx.ts +0 -87
- package/src/modules/wms/api/warehouseSearch.ts +0 -23
- package/src/modules/wms/components/backend/WarehouseEditDialog.tsx +0 -216
- package/src/modules/wms/components/backend/warehouseFormOptions.ts +0 -72
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/modules/sales/components/documents/ShipmentsSection.tsx"],
|
|
4
|
-
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { Pencil, Plus, Trash2, Truck } from 'lucide-react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\nimport { ErrorMessage, LoadingMessage, TabEmptyState } from '@open-mercato/ui/backend/detail'\nimport { flash } from '@open-mercato/ui/backend/FlashMessages'\nimport { apiCall, withScopedApiRequestHeaders } from '@open-mercato/ui/backend/utils/apiCall'\nimport { buildOptimisticLockHeader } from '@open-mercato/ui/backend/utils/optimisticLock'\nimport { deleteCrud } from '@open-mercato/ui/backend/utils/crud'\nimport { useOrganizationScopeDetail } from '@open-mercato/shared/lib/frontend/useOrganizationScope'\nimport { useT, useLocale } from '@open-mercato/shared/lib/i18n/context'\nimport { useConfirmDialog } from '@open-mercato/ui/backend/confirm-dialog'\nimport {\n emitSalesDocumentTotalsRefresh,\n subscribeSalesDocumentTotalsRefresh,\n} from '@open-mercato/core/modules/sales/lib/frontend/documentTotalsEvents'\nimport type { SectionAction } from '@open-mercato/core/modules/customers/components/detail/types'\nimport { generateTempId } from '@open-mercato/core/modules/customers/lib/detailHelpers'\nimport { formatAddressString, type AddressValue } from '@open-mercato/core/modules/customers/utils/addressFormat'\nimport { ShipmentDialog } from './ShipmentDialog'\nimport { handleSectionMutationError, readRowUpdatedAt } from './optimisticLock'\nimport { extractCustomFieldValues } from './customFieldHelpers'\nimport type { OrderLine, ShipmentRow, ShipmentItem } from './shipmentTypes'\nimport { createLogger } from '@open-mercato/shared/lib/logger'\n\nconst logger = createLogger('sales')\n\nconst ADDRESS_SNAPSHOT_KEY = 'shipmentAddressSnapshot'\nconst ADDRESS_FORMAT: 'line_first' = 'line_first'\n\ntype SalesShipmentsSectionProps = {\n orderId: string\n currencyCode?: string | null\n shippingAddressSnapshot?: Record<string, unknown> | null\n organizationId?: string | null\n tenantId?: string | null\n documentUpdatedAt?: string | null\n onActionChange?: (action: SectionAction | null) => void\n onAddComment?: (body: string) => Promise<void>\n}\n\nexport function formatDisplayDate(value: string | null | undefined, locale?: string): string | null {\n if (!value) return null\n const date = new Date(value)\n if (Number.isNaN(date.getTime())) return null\n return new Intl.DateTimeFormat(locale, { dateStyle: 'medium' }).format(date)\n}\n\nconst formatShipmentAddress = (metadata?: Record<string, unknown> | null): string | null => {\n if (!metadata || typeof metadata !== 'object') return null\n const snapshot = (metadata as any)[ADDRESS_SNAPSHOT_KEY]\n if (!snapshot || typeof snapshot !== 'object' || Array.isArray(snapshot)) return null\n const read = (key: string): string | null => {\n const value = (snapshot as any)[key]\n return typeof value === 'string' && value.trim().length ? value.trim() : null\n }\n const addressValue: AddressValue = {\n addressLine1: read('addressLine1') ?? read('address_line1'),\n addressLine2: read('addressLine2') ?? read('address_line2'),\n buildingNumber: read('buildingNumber') ?? read('building_number'),\n flatNumber: read('flatNumber') ?? read('flat_number'),\n city: read('city'),\n region: read('region'),\n postalCode: read('postalCode') ?? read('postal_code'),\n country: read('country'),\n companyName: read('companyName') ?? read('company_name'),\n }\n const summary = formatAddressString(addressValue, ADDRESS_FORMAT)\n return summary && summary.trim().length ? summary : null\n}\n\nconst resolveLineThumbnail = (item: Record<string, unknown>): string | null => {\n const pickThumbnail = (...candidates: Array<unknown>): string | null => {\n const found = candidates.find(\n (candidate): candidate is string =>\n typeof candidate === 'string' && candidate.trim().length > 0,\n )\n return found ?? null\n }\n\n const metadata =\n typeof (item as any).metadata === 'object' && (item as any).metadata !== null\n ? ((item as any).metadata as Record<string, unknown>)\n : null\n const snapshot =\n typeof (item as any).catalog_snapshot === 'object' && (item as any).catalog_snapshot !== null\n ? ((item as any).catalog_snapshot as Record<string, unknown>)\n : null\n const productSnapshot =\n snapshot && typeof (snapshot as any).product === 'object' ? ((snapshot as any).product as Record<string, unknown>) : null\n const variantSnapshot =\n snapshot && typeof (snapshot as any).variant === 'object' ? ((snapshot as any).variant as Record<string, unknown>) : null\n\n const productThumb = pickThumbnail(\n metadata ? (metadata as any).productThumbnail : null,\n productSnapshot ? (productSnapshot as any).thumbnailUrl : null,\n productSnapshot ? (productSnapshot as any).thumbnail_url : null,\n )\n const variantThumb = pickThumbnail(\n metadata ? (metadata as any).variantThumbnail : null,\n variantSnapshot ? (variantSnapshot as any).thumbnailUrl : null,\n variantSnapshot ? (variantSnapshot as any).thumbnail_url : null,\n )\n\n const snapshotThumb = pickThumbnail(\n snapshot ? (snapshot as any).thumbnailUrl : null,\n snapshot ? (snapshot as any).thumbnail_url : null,\n )\n\n return variantThumb ?? productThumb ?? snapshotThumb ?? null\n}\n\nexport function SalesShipmentsSection({\n orderId,\n currencyCode,\n shippingAddressSnapshot,\n organizationId: organizationIdProp,\n tenantId: tenantIdProp,\n documentUpdatedAt,\n onActionChange,\n onAddComment,\n}: SalesShipmentsSectionProps) {\n const t = useT()\n const locale = useLocale()\n const { organizationId, tenantId } = useOrganizationScopeDetail()\n const { confirm, ConfirmDialogElement } = useConfirmDialog()\n const resolvedOrganizationId = organizationIdProp ?? organizationId ?? null\n const resolvedTenantId = tenantIdProp ?? tenantId ?? null\n const addShipmentLabel = React.useMemo(\n () => t('sales.documents.shipments.add', 'Add shipment'),\n [t]\n )\n const [shipments, setShipments] = React.useState<ShipmentRow[]>([])\n const [lines, setLines] = React.useState<OrderLine[]>([])\n const [loading, setLoading] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n const [dialogState, setDialogState] = React.useState<{ mode: 'create' | 'edit'; shipment: ShipmentRow | null } | null>(null)\n\n const lineMap = React.useMemo(() => new Map(lines.map((line) => [line.id, line])), [lines])\n\n const shippedTotals = React.useMemo(() => {\n const totals = new Map<string, number>()\n shipments.forEach((shipment) => {\n shipment.items.forEach((item) => {\n const current = totals.get(item.orderLineId) ?? 0\n totals.set(item.orderLineId, current + (Number.isFinite(item.quantity) ? item.quantity : 0))\n })\n })\n return totals\n }, [shipments])\n\n const computeAvailable = React.useCallback(\n (lineId: string, excludeShipmentId?: string | null) => {\n const line = lineMap.get(lineId)\n if (!line) return 0\n const shipped = shippedTotals.get(lineId) ?? 0\n const editingShipment = excludeShipmentId ? shipments.find((entry) => entry.id === excludeShipmentId) : null\n const editingQty =\n editingShipment?.items\n .filter((item) => item.orderLineId === lineId)\n .reduce((acc, item) => acc + (Number.isFinite(item.quantity) ? item.quantity : 0), 0) ?? 0\n const remaining = line.quantity - (shipped - editingQty)\n return remaining < 0 ? 0 : remaining\n },\n [lineMap, shipments, shippedTotals]\n )\n\n const loadLines = React.useCallback(async () => {\n const params = new URLSearchParams({ page: '1', pageSize: '100', orderId })\n const response = await apiCall<{ items?: Array<Record<string, unknown>> }>(\n `/api/sales/order-lines?${params.toString()}`,\n undefined,\n { fallback: { items: [] } }\n )\n const items = Array.isArray(response.result?.items) ? response.result?.items ?? [] : []\n const mapped: OrderLine[] = items\n .map((item) => {\n const id = typeof item.id === 'string' ? item.id : null\n if (!id) return null\n const name =\n typeof item.name === 'string'\n ? item.name\n : typeof (item as any).catalog_snapshot === 'object' &&\n (item as any).catalog_snapshot &&\n typeof (item as any).catalog_snapshot.name === 'string'\n ? (item as any).catalog_snapshot.name\n : null\n const lineNumber =\n typeof (item as any).line_number === 'number'\n ? (item as any).line_number\n : typeof (item as any).lineNumber === 'number'\n ? (item as any).lineNumber\n : null\n const quantity =\n typeof item.quantity === 'number'\n ? item.quantity\n : typeof (item as any).quantity === 'string'\n ? Number((item as any).quantity)\n : 0\n return {\n id,\n title: name ?? id,\n lineNumber,\n quantity: Number.isFinite(quantity) ? quantity : 0,\n thumbnail: resolveLineThumbnail(item as Record<string, unknown>),\n }\n })\n .filter((entry): entry is OrderLine => Boolean(entry?.id))\n setLines(mapped)\n }, [orderId])\n\n const loadShipments = React.useCallback(async () => {\n setLoading(true)\n setError(null)\n try {\n const params = new URLSearchParams({ page: '1', pageSize: '100', orderId })\n const response = await apiCall<{ items?: Array<Record<string, unknown>> }>(\n `/api/sales/shipments?${params.toString()}`,\n undefined,\n { fallback: { items: [] } }\n )\n const items = Array.isArray(response.result?.items) ? response.result?.items ?? [] : []\n const mapped: ShipmentRow[] = items\n .map((item) => {\n const id = typeof item.id === 'string' ? item.id : null\n if (!id) return null\n const snapshotItemsRaw = Array.isArray((item as any).items_snapshot)\n ? ((item as any).items_snapshot as Array<Record<string, unknown>>)\n : []\n const responseItems = Array.isArray((item as any).items)\n ? ((item as any).items as Array<Record<string, unknown>>)\n : []\n const itemsRaw = responseItems.length ? responseItems : snapshotItemsRaw\n const shipmentItems: ShipmentItem[] = itemsRaw\n .map((entry) => {\n const lineId =\n typeof entry.orderLineId === 'string'\n ? entry.orderLineId\n : typeof (entry as any).order_line_id === 'string'\n ? (entry as any).order_line_id\n : null\n if (!lineId) return null\n const quantity =\n typeof entry.quantity === 'number'\n ? entry.quantity\n : typeof (entry as any).quantity === 'string'\n ? Number((entry as any).quantity)\n : 0\n return {\n id: typeof entry.id === 'string' ? entry.id : generateTempId(),\n orderLineId: lineId,\n orderLineName:\n typeof entry.orderLineName === 'string'\n ? entry.orderLineName\n : typeof (entry as any).order_line_name === 'string'\n ? (entry as any).order_line_name\n : null,\n orderLineNumber:\n typeof entry.orderLineNumber === 'number'\n ? entry.orderLineNumber\n : typeof (entry as any).order_line_number === 'number'\n ? (entry as any).order_line_number\n : null,\n quantity: Number.isFinite(quantity) ? quantity : 0,\n metadata: (entry.metadata as Record<string, unknown> | undefined | null) ?? null,\n }\n })\n .filter((entry): entry is ShipmentItem => Boolean(entry))\n const tracking =\n Array.isArray((item as any).tracking_numbers) && (item as any).tracking_numbers.length\n ? ((item as any).tracking_numbers as string[])\n : []\n const customValues = extractCustomFieldValues(item as Record<string, unknown>)\n return {\n id,\n updatedAt: readRowUpdatedAt(item),\n shipmentNumber:\n typeof (item as any).shipment_number === 'string'\n ? (item as any).shipment_number\n : typeof (item as any).shipmentNumber === 'string'\n ? (item as any).shipmentNumber\n : null,\n shippingMethodId:\n typeof (item as any).shipping_method_id === 'string'\n ? (item as any).shipping_method_id\n : typeof (item as any).shippingMethodId === 'string'\n ? (item as any).shippingMethodId\n : null,\n shippingMethodCode:\n typeof (item as any).shipping_method_code === 'string'\n ? (item as any).shipping_method_code\n : typeof (item as any).shippingMethodCode === 'string'\n ? (item as any).shippingMethodCode\n : null,\n shippingMethodName:\n typeof (item as any).shipping_method_name === 'string'\n ? (item as any).shipping_method_name\n : typeof (item as any).shippingMethodName === 'string'\n ? (item as any).shippingMethodName\n : null,\n status:\n typeof item.status === 'string'\n ? item.status\n : typeof (item as any).status === 'string'\n ? (item as any).status\n : null,\n statusLabel:\n typeof (item as any).status_label === 'string'\n ? (item as any).status_label\n : typeof (item as any).statusLabel === 'string'\n ? (item as any).statusLabel\n : null,\n statusEntryId:\n typeof (item as any).status_entry_id === 'string'\n ? (item as any).status_entry_id\n : typeof (item as any).statusEntryId === 'string'\n ? (item as any).statusEntryId\n : null,\n carrierName:\n typeof (item as any).carrier_name === 'string'\n ? (item as any).carrier_name\n : typeof (item as any).carrierName === 'string'\n ? (item as any).carrierName\n : null,\n trackingNumbers: tracking,\n shippedAt:\n typeof (item as any).shipped_at === 'string'\n ? (item as any).shipped_at\n : typeof (item as any).shippedAt === 'string'\n ? (item as any).shippedAt\n : null,\n deliveredAt:\n typeof (item as any).delivered_at === 'string'\n ? (item as any).delivered_at\n : typeof (item as any).deliveredAt === 'string'\n ? (item as any).deliveredAt\n : null,\n notes:\n typeof (item as any).notes === 'string'\n ? (item as any).notes\n : typeof (item as any).notesText === 'string'\n ? (item as any).notesText\n : null,\n metadata: (item as Record<string, unknown> | null | undefined)?.metadata ?? null,\n customValues: Object.keys(customValues).length ? customValues : null,\n items: shipmentItems,\n createdAt:\n typeof (item as any).created_at === 'string'\n ? (item as any).created_at\n : typeof (item as any).createdAt === 'string'\n ? (item as any).createdAt\n : null,\n }\n })\n .filter((entry): entry is ShipmentRow => Boolean(entry))\n setShipments(mapped)\n } catch (err) {\n logger.error('sales.shipments.load', { err })\n setError(t('sales.documents.shipments.errorLoad', 'Failed to load shipments.'))\n } finally {\n setLoading(false)\n }\n }, [orderId, t])\n\n React.useEffect(() => {\n void loadLines()\n void loadShipments()\n }, [loadLines, loadShipments])\n\n React.useEffect(\n () =>\n subscribeSalesDocumentTotalsRefresh((detail) => {\n if (detail.documentId !== orderId) return\n if (detail.kind && detail.kind !== 'order') return\n void loadLines()\n void loadShipments()\n }),\n [loadLines, loadShipments, orderId],\n )\n\n const handleOpenCreate = React.useCallback(() => {\n setDialogState({ mode: 'create', shipment: null })\n }, [])\n\n React.useEffect(() => {\n if (!onActionChange) return\n onActionChange({\n label: addShipmentLabel,\n onClick: handleOpenCreate,\n disabled: false,\n })\n return () => onActionChange(null)\n }, [addShipmentLabel, handleOpenCreate, onActionChange])\n\n const handleEdit = React.useCallback((shipment: ShipmentRow) => {\n setDialogState({ mode: 'edit', shipment })\n }, [])\n\n const handleDelete = React.useCallback(\n async (shipment: ShipmentRow) => {\n const confirmed = await confirm({\n title: t('sales.documents.shipments.confirmDelete', 'Delete this shipment?'),\n variant: 'default',\n })\n if (!confirmed) return\n try {\n const result = await withScopedApiRequestHeaders(\n // The server guards the PARENT order's aggregate version (Gap B), so\n // send the order's `updated_at`, not the shipment row's.\n buildOptimisticLockHeader(documentUpdatedAt ?? undefined),\n () =>\n deleteCrud('sales/shipments', {\n body: {\n id: shipment.id,\n orderId,\n organizationId: resolvedOrganizationId,\n tenantId: resolvedTenantId,\n },\n errorMessage: t('sales.documents.shipments.errorDelete', 'Failed to delete shipment.'),\n })\n )\n if (result.ok) {\n await loadShipments()\n emitSalesDocumentTotalsRefresh({ documentId: orderId, kind: 'order' })\n }\n } catch (err) {\n if (handleSectionMutationError(err, t, () => void loadShipments())) {\n return\n }\n logger.error('sales.shipments.delete', { err })\n flash(t('sales.documents.shipments.errorDelete', 'Failed to delete shipment.'), 'error')\n }\n },\n [confirm, documentUpdatedAt, loadShipments, orderId, resolvedOrganizationId, resolvedTenantId, t]\n )\n\n const renderItemList = (items: ShipmentItem[]) => (\n <ul className=\"space-y-1 text-sm text-muted-foreground\">\n {items.map((item) => {\n const label = item.orderLineNumber ? `#${item.orderLineNumber}` : ''\n return (\n <li key={item.id} className=\"flex items-center justify-between gap-2\">\n <span className=\"truncate\">\n {label ? `${label} \u00B7 ` : null}\n {item.orderLineName ?? item.orderLineId}\n </span>\n <Badge variant=\"secondary\">{item.quantity}</Badge>\n </li>\n )\n })}\n </ul>\n )\n\n if (loading) {\n return (\n <LoadingMessage\n label={t('sales.documents.shipments.loading', 'Loading shipments\u2026')}\n className=\"border-0 bg-transparent p-0 py-8 justify-center\"\n />\n )\n }\n\n if (error) {\n return <ErrorMessage label={error} />\n }\n\n const empty = !shipments.length\n\n return (\n <div className=\"space-y-4\">\n {empty ? (\n <TabEmptyState\n title={t('sales.documents.shipments.empty.title', 'No shipments yet.')}\n description={t(\n 'sales.documents.shipments.empty.description',\n 'Add shipments for this document to let the user track the order.'\n )}\n action={{\n label: addShipmentLabel,\n onClick: handleOpenCreate,\n icon: <Plus className=\"h-4 w-4\" aria-hidden />,\n disabled: loading,\n }}\n />\n ) : (\n <div className=\"grid gap-3 md:grid-cols-2\">\n {shipments.map((shipment) => {\n const shippedAt = formatDisplayDate(shipment.shippedAt, locale)\n const deliveredAt = formatDisplayDate(shipment.deliveredAt, locale)\n const addressSummary = formatShipmentAddress(shipment.metadata)\n const statusLabel =\n shipment.statusLabel ??\n shipment.status ??\n t('sales.documents.shipments.statusMissing', 'Status pending')\n return (\n <div key={shipment.id} className=\"rounded-lg border bg-card p-4 shadow-sm\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex h-9 w-9 items-center justify-center rounded-full bg-primary/10 text-primary\">\n <Truck className=\"h-5 w-5\" />\n </div>\n <div>\n <p className=\"text-sm font-semibold\">\n {shipment.shipmentNumber\n ? t('sales.documents.shipments.numberLabel', 'Shipment {{number}}', {\n number: shipment.shipmentNumber,\n })\n : t('sales.documents.shipments.fallbackNumber', 'Shipment {{id}}', {\n id: shipment.id.slice(0, 6),\n })}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {statusLabel}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => handleEdit(shipment)}\n >\n <Pencil className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-destructive\"\n onClick={() => void handleDelete(shipment)}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n <div className=\"mt-3 space-y-2 text-sm\">\n <div className=\"flex flex-wrap items-center gap-2 text-muted-foreground\">\n {shipment.carrierName ? (\n <Badge variant=\"outline\">{shipment.carrierName}</Badge>\n ) : null}\n {shipment.trackingNumbers.length ? (\n <span className=\"truncate\">\n {t('sales.documents.shipments.tracking', 'Tracking')}: {shipment.trackingNumbers.join(', ')}\n </span>\n ) : null}\n </div>\n {shippedAt ? (\n <p className=\"text-muted-foreground\">\n {t('sales.documents.shipments.shippedOn', 'Shipped on {{date}}', { date: shippedAt })}\n </p>\n ) : null}\n {deliveredAt ? (\n <p className=\"text-muted-foreground\">\n {t('sales.documents.shipments.deliveredOn', 'Delivered on {{date}}', { date: deliveredAt })}\n </p>\n ) : null}\n {addressSummary ? (\n <p className=\"text-xs text-muted-foreground\">{addressSummary}</p>\n ) : null}\n {shipment.notes ? (\n <p className=\"rounded-md bg-muted px-3 py-2 text-muted-foreground\">\n {shipment.notes}\n </p>\n ) : null}\n {renderItemList(shipment.items)}\n </div>\n </div>\n )\n })}\n </div>\n )}\n\n <ShipmentDialog\n open={dialogState !== null}\n mode={dialogState?.mode ?? 'create'}\n shipment={dialogState?.shipment ?? null}\n lines={lines}\n orderId={orderId}\n currencyCode={currencyCode}\n organizationId={resolvedOrganizationId}\n tenantId={resolvedTenantId}\n documentUpdatedAt={documentUpdatedAt ?? null}\n computeAvailable={computeAvailable}\n shippingAddressSnapshot={shippingAddressSnapshot}\n onClose={() => setDialogState(null)}\n onSaved={async () => {\n setDialogState(null)\n await loadShipments()\n emitSalesDocumentTotalsRefresh({ documentId: orderId, kind: 'order' })\n }}\n onAddComment={onAddComment}\n />\n {ConfirmDialogElement}\n </div>\n )\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["\"use client\"\n\nimport * as React from 'react'\nimport { Pencil, Plus, Trash2, Truck } from 'lucide-react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport { Badge } from '@open-mercato/ui/primitives/badge'\nimport { ErrorMessage, LoadingMessage, TabEmptyState } from '@open-mercato/ui/backend/detail'\nimport { flash } from '@open-mercato/ui/backend/FlashMessages'\nimport { apiCall, withScopedApiRequestHeaders } from '@open-mercato/ui/backend/utils/apiCall'\nimport { buildOptimisticLockHeader } from '@open-mercato/ui/backend/utils/optimisticLock'\nimport { deleteCrud } from '@open-mercato/ui/backend/utils/crud'\nimport { useOrganizationScopeDetail } 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 {\n emitSalesDocumentTotalsRefresh,\n subscribeSalesDocumentTotalsRefresh,\n} from '@open-mercato/core/modules/sales/lib/frontend/documentTotalsEvents'\nimport type { SectionAction } from '@open-mercato/core/modules/customers/components/detail/types'\nimport { generateTempId } from '@open-mercato/core/modules/customers/lib/detailHelpers'\nimport { formatAddressString, type AddressValue } from '@open-mercato/core/modules/customers/utils/addressFormat'\nimport { ShipmentDialog } from './ShipmentDialog'\nimport { handleSectionMutationError, readRowUpdatedAt } from './optimisticLock'\nimport { extractCustomFieldValues } from './customFieldHelpers'\nimport type { OrderLine, ShipmentRow, ShipmentItem } from './shipmentTypes'\nimport { createLogger } from '@open-mercato/shared/lib/logger'\n\nconst logger = createLogger('sales')\n\nconst ADDRESS_SNAPSHOT_KEY = 'shipmentAddressSnapshot'\nconst ADDRESS_FORMAT: 'line_first' = 'line_first'\n\ntype SalesShipmentsSectionProps = {\n orderId: string\n currencyCode?: string | null\n shippingAddressSnapshot?: Record<string, unknown> | null\n organizationId?: string | null\n tenantId?: string | null\n documentUpdatedAt?: string | null\n onActionChange?: (action: SectionAction | null) => void\n onAddComment?: (body: string) => Promise<void>\n}\n\nfunction formatDisplayDate(value: string | null | undefined): string | null {\n if (!value) return null\n const date = new Date(value)\n if (Number.isNaN(date.getTime())) return null\n return new Intl.DateTimeFormat(undefined, { dateStyle: 'medium' }).format(date)\n}\n\nconst formatShipmentAddress = (metadata?: Record<string, unknown> | null): string | null => {\n if (!metadata || typeof metadata !== 'object') return null\n const snapshot = (metadata as any)[ADDRESS_SNAPSHOT_KEY]\n if (!snapshot || typeof snapshot !== 'object' || Array.isArray(snapshot)) return null\n const read = (key: string): string | null => {\n const value = (snapshot as any)[key]\n return typeof value === 'string' && value.trim().length ? value.trim() : null\n }\n const addressValue: AddressValue = {\n addressLine1: read('addressLine1') ?? read('address_line1'),\n addressLine2: read('addressLine2') ?? read('address_line2'),\n buildingNumber: read('buildingNumber') ?? read('building_number'),\n flatNumber: read('flatNumber') ?? read('flat_number'),\n city: read('city'),\n region: read('region'),\n postalCode: read('postalCode') ?? read('postal_code'),\n country: read('country'),\n companyName: read('companyName') ?? read('company_name'),\n }\n const summary = formatAddressString(addressValue, ADDRESS_FORMAT)\n return summary && summary.trim().length ? summary : null\n}\n\nconst resolveLineThumbnail = (item: Record<string, unknown>): string | null => {\n const pickThumbnail = (...candidates: Array<unknown>): string | null => {\n const found = candidates.find(\n (candidate): candidate is string =>\n typeof candidate === 'string' && candidate.trim().length > 0,\n )\n return found ?? null\n }\n\n const metadata =\n typeof (item as any).metadata === 'object' && (item as any).metadata !== null\n ? ((item as any).metadata as Record<string, unknown>)\n : null\n const snapshot =\n typeof (item as any).catalog_snapshot === 'object' && (item as any).catalog_snapshot !== null\n ? ((item as any).catalog_snapshot as Record<string, unknown>)\n : null\n const productSnapshot =\n snapshot && typeof (snapshot as any).product === 'object' ? ((snapshot as any).product as Record<string, unknown>) : null\n const variantSnapshot =\n snapshot && typeof (snapshot as any).variant === 'object' ? ((snapshot as any).variant as Record<string, unknown>) : null\n\n const productThumb = pickThumbnail(\n metadata ? (metadata as any).productThumbnail : null,\n productSnapshot ? (productSnapshot as any).thumbnailUrl : null,\n productSnapshot ? (productSnapshot as any).thumbnail_url : null,\n )\n const variantThumb = pickThumbnail(\n metadata ? (metadata as any).variantThumbnail : null,\n variantSnapshot ? (variantSnapshot as any).thumbnailUrl : null,\n variantSnapshot ? (variantSnapshot as any).thumbnail_url : null,\n )\n\n const snapshotThumb = pickThumbnail(\n snapshot ? (snapshot as any).thumbnailUrl : null,\n snapshot ? (snapshot as any).thumbnail_url : null,\n )\n\n return variantThumb ?? productThumb ?? snapshotThumb ?? null\n}\n\nexport function SalesShipmentsSection({\n orderId,\n currencyCode,\n shippingAddressSnapshot,\n organizationId: organizationIdProp,\n tenantId: tenantIdProp,\n documentUpdatedAt,\n onActionChange,\n onAddComment,\n}: SalesShipmentsSectionProps) {\n const t = useT()\n const { organizationId, tenantId } = useOrganizationScopeDetail()\n const { confirm, ConfirmDialogElement } = useConfirmDialog()\n const resolvedOrganizationId = organizationIdProp ?? organizationId ?? null\n const resolvedTenantId = tenantIdProp ?? tenantId ?? null\n const addShipmentLabel = React.useMemo(\n () => t('sales.documents.shipments.add', 'Add shipment'),\n [t]\n )\n const [shipments, setShipments] = React.useState<ShipmentRow[]>([])\n const [lines, setLines] = React.useState<OrderLine[]>([])\n const [loading, setLoading] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n const [dialogState, setDialogState] = React.useState<{ mode: 'create' | 'edit'; shipment: ShipmentRow | null } | null>(null)\n\n const lineMap = React.useMemo(() => new Map(lines.map((line) => [line.id, line])), [lines])\n\n const shippedTotals = React.useMemo(() => {\n const totals = new Map<string, number>()\n shipments.forEach((shipment) => {\n shipment.items.forEach((item) => {\n const current = totals.get(item.orderLineId) ?? 0\n totals.set(item.orderLineId, current + (Number.isFinite(item.quantity) ? item.quantity : 0))\n })\n })\n return totals\n }, [shipments])\n\n const computeAvailable = React.useCallback(\n (lineId: string, excludeShipmentId?: string | null) => {\n const line = lineMap.get(lineId)\n if (!line) return 0\n const shipped = shippedTotals.get(lineId) ?? 0\n const editingShipment = excludeShipmentId ? shipments.find((entry) => entry.id === excludeShipmentId) : null\n const editingQty =\n editingShipment?.items\n .filter((item) => item.orderLineId === lineId)\n .reduce((acc, item) => acc + (Number.isFinite(item.quantity) ? item.quantity : 0), 0) ?? 0\n const remaining = line.quantity - (shipped - editingQty)\n return remaining < 0 ? 0 : remaining\n },\n [lineMap, shipments, shippedTotals]\n )\n\n const loadLines = React.useCallback(async () => {\n const params = new URLSearchParams({ page: '1', pageSize: '100', orderId })\n const response = await apiCall<{ items?: Array<Record<string, unknown>> }>(\n `/api/sales/order-lines?${params.toString()}`,\n undefined,\n { fallback: { items: [] } }\n )\n const items = Array.isArray(response.result?.items) ? response.result?.items ?? [] : []\n const mapped: OrderLine[] = items\n .map((item) => {\n const id = typeof item.id === 'string' ? item.id : null\n if (!id) return null\n const name =\n typeof item.name === 'string'\n ? item.name\n : typeof (item as any).catalog_snapshot === 'object' &&\n (item as any).catalog_snapshot &&\n typeof (item as any).catalog_snapshot.name === 'string'\n ? (item as any).catalog_snapshot.name\n : null\n const lineNumber =\n typeof (item as any).line_number === 'number'\n ? (item as any).line_number\n : typeof (item as any).lineNumber === 'number'\n ? (item as any).lineNumber\n : null\n const quantity =\n typeof item.quantity === 'number'\n ? item.quantity\n : typeof (item as any).quantity === 'string'\n ? Number((item as any).quantity)\n : 0\n return {\n id,\n title: name ?? id,\n lineNumber,\n quantity: Number.isFinite(quantity) ? quantity : 0,\n thumbnail: resolveLineThumbnail(item as Record<string, unknown>),\n }\n })\n .filter((entry): entry is OrderLine => Boolean(entry?.id))\n setLines(mapped)\n }, [orderId])\n\n const loadShipments = React.useCallback(async () => {\n setLoading(true)\n setError(null)\n try {\n const params = new URLSearchParams({ page: '1', pageSize: '100', orderId })\n const response = await apiCall<{ items?: Array<Record<string, unknown>> }>(\n `/api/sales/shipments?${params.toString()}`,\n undefined,\n { fallback: { items: [] } }\n )\n const items = Array.isArray(response.result?.items) ? response.result?.items ?? [] : []\n const mapped: ShipmentRow[] = items\n .map((item) => {\n const id = typeof item.id === 'string' ? item.id : null\n if (!id) return null\n const snapshotItemsRaw = Array.isArray((item as any).items_snapshot)\n ? ((item as any).items_snapshot as Array<Record<string, unknown>>)\n : []\n const responseItems = Array.isArray((item as any).items)\n ? ((item as any).items as Array<Record<string, unknown>>)\n : []\n const itemsRaw = responseItems.length ? responseItems : snapshotItemsRaw\n const shipmentItems: ShipmentItem[] = itemsRaw\n .map((entry) => {\n const lineId =\n typeof entry.orderLineId === 'string'\n ? entry.orderLineId\n : typeof (entry as any).order_line_id === 'string'\n ? (entry as any).order_line_id\n : null\n if (!lineId) return null\n const quantity =\n typeof entry.quantity === 'number'\n ? entry.quantity\n : typeof (entry as any).quantity === 'string'\n ? Number((entry as any).quantity)\n : 0\n return {\n id: typeof entry.id === 'string' ? entry.id : generateTempId(),\n orderLineId: lineId,\n orderLineName:\n typeof entry.orderLineName === 'string'\n ? entry.orderLineName\n : typeof (entry as any).order_line_name === 'string'\n ? (entry as any).order_line_name\n : null,\n orderLineNumber:\n typeof entry.orderLineNumber === 'number'\n ? entry.orderLineNumber\n : typeof (entry as any).order_line_number === 'number'\n ? (entry as any).order_line_number\n : null,\n quantity: Number.isFinite(quantity) ? quantity : 0,\n metadata: (entry.metadata as Record<string, unknown> | undefined | null) ?? null,\n }\n })\n .filter((entry): entry is ShipmentItem => Boolean(entry))\n const tracking =\n Array.isArray((item as any).tracking_numbers) && (item as any).tracking_numbers.length\n ? ((item as any).tracking_numbers as string[])\n : []\n const customValues = extractCustomFieldValues(item as Record<string, unknown>)\n return {\n id,\n updatedAt: readRowUpdatedAt(item),\n shipmentNumber:\n typeof (item as any).shipment_number === 'string'\n ? (item as any).shipment_number\n : typeof (item as any).shipmentNumber === 'string'\n ? (item as any).shipmentNumber\n : null,\n shippingMethodId:\n typeof (item as any).shipping_method_id === 'string'\n ? (item as any).shipping_method_id\n : typeof (item as any).shippingMethodId === 'string'\n ? (item as any).shippingMethodId\n : null,\n shippingMethodCode:\n typeof (item as any).shipping_method_code === 'string'\n ? (item as any).shipping_method_code\n : typeof (item as any).shippingMethodCode === 'string'\n ? (item as any).shippingMethodCode\n : null,\n shippingMethodName:\n typeof (item as any).shipping_method_name === 'string'\n ? (item as any).shipping_method_name\n : typeof (item as any).shippingMethodName === 'string'\n ? (item as any).shippingMethodName\n : null,\n status:\n typeof item.status === 'string'\n ? item.status\n : typeof (item as any).status === 'string'\n ? (item as any).status\n : null,\n statusLabel:\n typeof (item as any).status_label === 'string'\n ? (item as any).status_label\n : typeof (item as any).statusLabel === 'string'\n ? (item as any).statusLabel\n : null,\n statusEntryId:\n typeof (item as any).status_entry_id === 'string'\n ? (item as any).status_entry_id\n : typeof (item as any).statusEntryId === 'string'\n ? (item as any).statusEntryId\n : null,\n carrierName:\n typeof (item as any).carrier_name === 'string'\n ? (item as any).carrier_name\n : typeof (item as any).carrierName === 'string'\n ? (item as any).carrierName\n : null,\n trackingNumbers: tracking,\n shippedAt:\n typeof (item as any).shipped_at === 'string'\n ? (item as any).shipped_at\n : typeof (item as any).shippedAt === 'string'\n ? (item as any).shippedAt\n : null,\n deliveredAt:\n typeof (item as any).delivered_at === 'string'\n ? (item as any).delivered_at\n : typeof (item as any).deliveredAt === 'string'\n ? (item as any).deliveredAt\n : null,\n notes:\n typeof (item as any).notes === 'string'\n ? (item as any).notes\n : typeof (item as any).notesText === 'string'\n ? (item as any).notesText\n : null,\n metadata: (item as Record<string, unknown> | null | undefined)?.metadata ?? null,\n customValues: Object.keys(customValues).length ? customValues : null,\n items: shipmentItems,\n createdAt:\n typeof (item as any).created_at === 'string'\n ? (item as any).created_at\n : typeof (item as any).createdAt === 'string'\n ? (item as any).createdAt\n : null,\n }\n })\n .filter((entry): entry is ShipmentRow => Boolean(entry))\n setShipments(mapped)\n } catch (err) {\n logger.error('sales.shipments.load', { err })\n setError(t('sales.documents.shipments.errorLoad', 'Failed to load shipments.'))\n } finally {\n setLoading(false)\n }\n }, [orderId, t])\n\n React.useEffect(() => {\n void loadLines()\n void loadShipments()\n }, [loadLines, loadShipments])\n\n React.useEffect(\n () =>\n subscribeSalesDocumentTotalsRefresh((detail) => {\n if (detail.documentId !== orderId) return\n if (detail.kind && detail.kind !== 'order') return\n void loadLines()\n void loadShipments()\n }),\n [loadLines, loadShipments, orderId],\n )\n\n const handleOpenCreate = React.useCallback(() => {\n setDialogState({ mode: 'create', shipment: null })\n }, [])\n\n React.useEffect(() => {\n if (!onActionChange) return\n onActionChange({\n label: addShipmentLabel,\n onClick: handleOpenCreate,\n disabled: false,\n })\n return () => onActionChange(null)\n }, [addShipmentLabel, handleOpenCreate, onActionChange])\n\n const handleEdit = React.useCallback((shipment: ShipmentRow) => {\n setDialogState({ mode: 'edit', shipment })\n }, [])\n\n const handleDelete = React.useCallback(\n async (shipment: ShipmentRow) => {\n const confirmed = await confirm({\n title: t('sales.documents.shipments.confirmDelete', 'Delete this shipment?'),\n variant: 'default',\n })\n if (!confirmed) return\n try {\n const result = await withScopedApiRequestHeaders(\n // The server guards the PARENT order's aggregate version (Gap B), so\n // send the order's `updated_at`, not the shipment row's.\n buildOptimisticLockHeader(documentUpdatedAt ?? undefined),\n () =>\n deleteCrud('sales/shipments', {\n body: {\n id: shipment.id,\n orderId,\n organizationId: resolvedOrganizationId,\n tenantId: resolvedTenantId,\n },\n errorMessage: t('sales.documents.shipments.errorDelete', 'Failed to delete shipment.'),\n })\n )\n if (result.ok) {\n await loadShipments()\n emitSalesDocumentTotalsRefresh({ documentId: orderId, kind: 'order' })\n }\n } catch (err) {\n if (handleSectionMutationError(err, t, () => void loadShipments())) {\n return\n }\n logger.error('sales.shipments.delete', { err })\n flash(t('sales.documents.shipments.errorDelete', 'Failed to delete shipment.'), 'error')\n }\n },\n [confirm, documentUpdatedAt, loadShipments, orderId, resolvedOrganizationId, resolvedTenantId, t]\n )\n\n const renderItemList = (items: ShipmentItem[]) => (\n <ul className=\"space-y-1 text-sm text-muted-foreground\">\n {items.map((item) => {\n const label = item.orderLineNumber ? `#${item.orderLineNumber}` : ''\n return (\n <li key={item.id} className=\"flex items-center justify-between gap-2\">\n <span className=\"truncate\">\n {label ? `${label} \u00B7 ` : null}\n {item.orderLineName ?? item.orderLineId}\n </span>\n <Badge variant=\"secondary\">{item.quantity}</Badge>\n </li>\n )\n })}\n </ul>\n )\n\n if (loading) {\n return (\n <LoadingMessage\n label={t('sales.documents.shipments.loading', 'Loading shipments\u2026')}\n className=\"border-0 bg-transparent p-0 py-8 justify-center\"\n />\n )\n }\n\n if (error) {\n return <ErrorMessage label={error} />\n }\n\n const empty = !shipments.length\n\n return (\n <div className=\"space-y-4\">\n {empty ? (\n <TabEmptyState\n title={t('sales.documents.shipments.empty.title', 'No shipments yet.')}\n description={t(\n 'sales.documents.shipments.empty.description',\n 'Add shipments for this document to let the user track the order.'\n )}\n action={{\n label: addShipmentLabel,\n onClick: handleOpenCreate,\n icon: <Plus className=\"h-4 w-4\" aria-hidden />,\n disabled: loading,\n }}\n />\n ) : (\n <div className=\"grid gap-3 md:grid-cols-2\">\n {shipments.map((shipment) => {\n const shippedAt = formatDisplayDate(shipment.shippedAt)\n const deliveredAt = formatDisplayDate(shipment.deliveredAt)\n const addressSummary = formatShipmentAddress(shipment.metadata)\n const statusLabel =\n shipment.statusLabel ??\n shipment.status ??\n t('sales.documents.shipments.statusMissing', 'Status pending')\n return (\n <div key={shipment.id} className=\"rounded-lg border bg-card p-4 shadow-sm\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex h-9 w-9 items-center justify-center rounded-full bg-primary/10 text-primary\">\n <Truck className=\"h-5 w-5\" />\n </div>\n <div>\n <p className=\"text-sm font-semibold\">\n {shipment.shipmentNumber\n ? t('sales.documents.shipments.numberLabel', 'Shipment {{number}}', {\n number: shipment.shipmentNumber,\n })\n : t('sales.documents.shipments.fallbackNumber', 'Shipment {{id}}', {\n id: shipment.id.slice(0, 6),\n })}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {statusLabel}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => handleEdit(shipment)}\n >\n <Pencil className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-destructive\"\n onClick={() => void handleDelete(shipment)}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n <div className=\"mt-3 space-y-2 text-sm\">\n <div className=\"flex flex-wrap items-center gap-2 text-muted-foreground\">\n {shipment.carrierName ? (\n <Badge variant=\"outline\">{shipment.carrierName}</Badge>\n ) : null}\n {shipment.trackingNumbers.length ? (\n <span className=\"truncate\">\n {t('sales.documents.shipments.tracking', 'Tracking')}: {shipment.trackingNumbers.join(', ')}\n </span>\n ) : null}\n </div>\n {shippedAt ? (\n <p className=\"text-muted-foreground\">\n {t('sales.documents.shipments.shippedOn', 'Shipped on {{date}}', { date: shippedAt })}\n </p>\n ) : null}\n {deliveredAt ? (\n <p className=\"text-muted-foreground\">\n {t('sales.documents.shipments.deliveredOn', 'Delivered on {{date}}', { date: deliveredAt })}\n </p>\n ) : null}\n {addressSummary ? (\n <p className=\"text-xs text-muted-foreground\">{addressSummary}</p>\n ) : null}\n {shipment.notes ? (\n <p className=\"rounded-md bg-muted px-3 py-2 text-muted-foreground\">\n {shipment.notes}\n </p>\n ) : null}\n {renderItemList(shipment.items)}\n </div>\n </div>\n )\n })}\n </div>\n )}\n\n <ShipmentDialog\n open={dialogState !== null}\n mode={dialogState?.mode ?? 'create'}\n shipment={dialogState?.shipment ?? null}\n lines={lines}\n orderId={orderId}\n currencyCode={currencyCode}\n organizationId={resolvedOrganizationId}\n tenantId={resolvedTenantId}\n documentUpdatedAt={documentUpdatedAt ?? null}\n computeAvailable={computeAvailable}\n shippingAddressSnapshot={shippingAddressSnapshot}\n onClose={() => setDialogState(null)}\n onSaved={async () => {\n setDialogState(null)\n await loadShipments()\n emitSalesDocumentTotalsRefresh({ documentId: orderId, kind: 'order' })\n }}\n onAddComment={onAddComment}\n />\n {ConfirmDialogElement}\n </div>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -7,9 +7,9 @@ function normalizeNumber(value, fallback = 0) {
|
|
|
7
7
|
}
|
|
8
8
|
return fallback;
|
|
9
9
|
}
|
|
10
|
-
function formatMoney(value, currency
|
|
10
|
+
function formatMoney(value, currency) {
|
|
11
11
|
if (!currency) return value.toFixed(2);
|
|
12
|
-
return new Intl.NumberFormat(
|
|
12
|
+
return new Intl.NumberFormat(void 0, { style: "currency", currency }).format(value);
|
|
13
13
|
}
|
|
14
14
|
const DISCOUNT_MATCH_TOLERANCE = 0.01;
|
|
15
15
|
const DISCOUNT_MATCH_TOLERANCE_PER_UNIT = 1e-4;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/modules/sales/components/documents/lineItemUtils.ts"],
|
|
4
|
-
"sourcesContent": ["\"use client\"\n\nexport function normalizeNumber(value: unknown, fallback = 0): number {\n if (typeof value === 'number' && Number.isFinite(value)) return value\n if (typeof value === 'string' && value.trim().length) {\n const parsed = Number(value)\n if (!Number.isNaN(parsed)) return parsed\n }\n return fallback\n}\n\
|
|
5
|
-
"mappings": ";AAEO,SAAS,gBAAgB,OAAgB,WAAW,GAAW;AACpE,MAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,EAAG,QAAO;AAChE,MAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,QAAQ;AACpD,UAAM,SAAS,OAAO,KAAK;AAC3B,QAAI,CAAC,OAAO,MAAM,MAAM,EAAG,QAAO;AAAA,EACpC;AACA,SAAO;AACT;
|
|
4
|
+
"sourcesContent": ["\"use client\"\n\nexport function normalizeNumber(value: unknown, fallback = 0): number {\n if (typeof value === 'number' && Number.isFinite(value)) return value\n if (typeof value === 'string' && value.trim().length) {\n const parsed = Number(value)\n if (!Number.isNaN(parsed)) return parsed\n }\n return fallback\n}\n\nexport function formatMoney(value: number, currency: string | null | undefined): string {\n if (!currency) return value.toFixed(2)\n return new Intl.NumberFormat(undefined, { style: 'currency', currency }).format(value)\n}\n\nexport type LineDiscountDisplay = {\n amount: number | null\n percent: number | null\n}\n\ntype LineDiscountSource = {\n discountAmount?: unknown\n discountPercent?: unknown\n unitPriceNet?: unknown\n quantity?: unknown\n}\n\nconst DISCOUNT_MATCH_TOLERANCE = 0.01\nconst DISCOUNT_MATCH_TOLERANCE_PER_UNIT = 0.0001\n\nfunction percentAccountsForAmount(\n line: LineDiscountSource,\n percent: number,\n amount: number,\n): boolean {\n if (percent <= 0) return false\n const quantity = normalizeNumber(line.quantity, 0)\n const netBeforeDiscount = normalizeNumber(line.unitPriceNet, 0) * quantity\n if (netBeforeDiscount <= 0) return false\n const tolerance = Math.max(\n DISCOUNT_MATCH_TOLERANCE,\n quantity * DISCOUNT_MATCH_TOLERANCE_PER_UNIT,\n )\n return Math.abs((percent / 100) * netBeforeDiscount - amount) <= tolerance\n}\n\nexport function resolveLineDiscountDisplay(\n line: LineDiscountSource,\n): LineDiscountDisplay | null {\n const amount = normalizeNumber(line.discountAmount, 0)\n const percent = normalizeNumber(line.discountPercent, 0)\n if (amount > 0) {\n return {\n amount,\n percent: percentAccountsForAmount(line, percent, amount) ? percent : null,\n }\n }\n if (percent > 0) return { amount: null, percent }\n return null\n}\n"],
|
|
5
|
+
"mappings": ";AAEO,SAAS,gBAAgB,OAAgB,WAAW,GAAW;AACpE,MAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,EAAG,QAAO;AAChE,MAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,QAAQ;AACpD,UAAM,SAAS,OAAO,KAAK;AAC3B,QAAI,CAAC,OAAO,MAAM,MAAM,EAAG,QAAO;AAAA,EACpC;AACA,SAAO;AACT;AAEO,SAAS,YAAY,OAAe,UAA6C;AACtF,MAAI,CAAC,SAAU,QAAO,MAAM,QAAQ,CAAC;AACrC,SAAO,IAAI,KAAK,aAAa,QAAW,EAAE,OAAO,YAAY,SAAS,CAAC,EAAE,OAAO,KAAK;AACvF;AAcA,MAAM,2BAA2B;AACjC,MAAM,oCAAoC;AAE1C,SAAS,yBACP,MACA,SACA,QACS;AACT,MAAI,WAAW,EAAG,QAAO;AACzB,QAAM,WAAW,gBAAgB,KAAK,UAAU,CAAC;AACjD,QAAM,oBAAoB,gBAAgB,KAAK,cAAc,CAAC,IAAI;AAClE,MAAI,qBAAqB,EAAG,QAAO;AACnC,QAAM,YAAY,KAAK;AAAA,IACrB;AAAA,IACA,WAAW;AAAA,EACb;AACA,SAAO,KAAK,IAAK,UAAU,MAAO,oBAAoB,MAAM,KAAK;AACnE;AAEO,SAAS,2BACd,MAC4B;AAC5B,QAAM,SAAS,gBAAgB,KAAK,gBAAgB,CAAC;AACrD,QAAM,UAAU,gBAAgB,KAAK,iBAAiB,CAAC;AACvD,MAAI,SAAS,GAAG;AACd,WAAO;AAAA,MACL;AAAA,MACA,SAAS,yBAAyB,MAAM,SAAS,MAAM,IAAI,UAAU;AAAA,IACvE;AAAA,EACF;AACA,MAAI,UAAU,EAAG,QAAO,EAAE,QAAQ,MAAM,QAAQ;AAChD,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2113,10 +2113,7 @@ __decorateClass([
|
|
|
2113
2113
|
], SalesNote.prototype, "deletedAt", 2);
|
|
2114
2114
|
SalesNote = __decorateClass([
|
|
2115
2115
|
Entity({ tableName: "sales_notes" }),
|
|
2116
|
-
Index({ name: "sales_notes_scope_idx", properties: ["organizationId", "tenantId"] })
|
|
2117
|
-
Index({ name: "sales_notes_context_idx", properties: ["contextId"] }),
|
|
2118
|
-
Index({ name: "sales_notes_order_idx", properties: ["order"] }),
|
|
2119
|
-
Index({ name: "sales_notes_quote_idx", properties: ["quote"] })
|
|
2116
|
+
Index({ name: "sales_notes_scope_idx", properties: ["organizationId", "tenantId"] })
|
|
2120
2117
|
], SalesNote);
|
|
2121
2118
|
let SalesDocumentAddress = class {
|
|
2122
2119
|
constructor() {
|
|
@@ -2198,10 +2195,7 @@ __decorateClass([
|
|
|
2198
2195
|
], SalesDocumentAddress.prototype, "deletedAt", 2);
|
|
2199
2196
|
SalesDocumentAddress = __decorateClass([
|
|
2200
2197
|
Entity({ tableName: "sales_document_addresses" }),
|
|
2201
|
-
Index({ name: "sales_document_addresses_scope_idx", properties: ["organizationId", "tenantId"] })
|
|
2202
|
-
Index({ name: "sales_document_addresses_document_idx", properties: ["documentId"] }),
|
|
2203
|
-
Index({ name: "sales_document_addresses_order_idx", properties: ["order"] }),
|
|
2204
|
-
Index({ name: "sales_document_addresses_quote_idx", properties: ["quote"] })
|
|
2198
|
+
Index({ name: "sales_document_addresses_scope_idx", properties: ["organizationId", "tenantId"] })
|
|
2205
2199
|
], SalesDocumentAddress);
|
|
2206
2200
|
let SalesDocumentTag = class {
|
|
2207
2201
|
constructor() {
|