@open-mercato/core 0.4.5-develop-3ce83a8b24 → 0.4.5-develop-4849712ccb
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/dist/generated/entities/catalog_product/index.js +16 -0
- package/dist/generated/entities/catalog_product/index.js.map +2 -2
- package/dist/generated/entities/catalog_product_unit_conversion/index.js +27 -0
- package/dist/generated/entities/catalog_product_unit_conversion/index.js.map +7 -0
- package/dist/generated/entities/sales_credit_memo_line/index.js +7 -1
- package/dist/generated/entities/sales_credit_memo_line/index.js.map +2 -2
- package/dist/generated/entities/sales_invoice_line/index.js +7 -1
- package/dist/generated/entities/sales_invoice_line/index.js.map +2 -2
- package/dist/generated/entities/sales_order_line/index.js +6 -0
- package/dist/generated/entities/sales_order_line/index.js.map +2 -2
- package/dist/generated/entities/sales_quote_line/index.js +6 -0
- package/dist/generated/entities/sales_quote_line/index.js.map +2 -2
- package/dist/generated/entities.ids.generated.js +1 -0
- package/dist/generated/entities.ids.generated.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +2 -0
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/modules/catalog/api/prices/route.js +123 -8
- package/dist/modules/catalog/api/prices/route.js.map +2 -2
- package/dist/modules/catalog/api/product-unit-conversions/route.js +194 -0
- package/dist/modules/catalog/api/product-unit-conversions/route.js.map +7 -0
- package/dist/modules/catalog/api/products/route.js +351 -201
- package/dist/modules/catalog/api/products/route.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js +1267 -497
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/create/page.js +733 -210
- package/dist/modules/catalog/backend/catalog/products/create/page.js.map +2 -2
- package/dist/modules/catalog/commands/index.js +1 -0
- package/dist/modules/catalog/commands/index.js.map +2 -2
- package/dist/modules/catalog/commands/productUnitConversions.js +503 -0
- package/dist/modules/catalog/commands/productUnitConversions.js.map +7 -0
- package/dist/modules/catalog/commands/products.js +355 -73
- package/dist/modules/catalog/commands/products.js.map +2 -2
- package/dist/modules/catalog/commands/shared.js +18 -4
- package/dist/modules/catalog/commands/shared.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductUomSection.js +591 -0
- package/dist/modules/catalog/components/products/ProductUomSection.js.map +7 -0
- package/dist/modules/catalog/components/products/productForm.js +66 -5
- package/dist/modules/catalog/components/products/productForm.js.map +2 -2
- package/dist/modules/catalog/components/products/productFormUtils.js +68 -0
- package/dist/modules/catalog/components/products/productFormUtils.js.map +7 -0
- package/dist/modules/catalog/data/entities.js +86 -0
- package/dist/modules/catalog/data/entities.js.map +2 -2
- package/dist/modules/catalog/data/validators.js +65 -3
- package/dist/modules/catalog/data/validators.js.map +2 -2
- package/dist/modules/catalog/events.js +3 -0
- package/dist/modules/catalog/events.js.map +2 -2
- package/dist/modules/catalog/lib/unitCodes.js +7 -0
- package/dist/modules/catalog/lib/unitCodes.js.map +7 -0
- package/dist/modules/catalog/lib/unitResolution.js +53 -0
- package/dist/modules/catalog/lib/unitResolution.js.map +7 -0
- package/dist/modules/catalog/migrations/Migration20260218225422.js +19 -0
- package/dist/modules/catalog/migrations/Migration20260218225422.js.map +7 -0
- package/dist/modules/catalog/migrations/Migration20260219084500.js +27 -0
- package/dist/modules/catalog/migrations/Migration20260219084500.js.map +7 -0
- package/dist/modules/catalog/search.js +69 -1
- package/dist/modules/catalog/search.js.map +2 -2
- package/dist/modules/catalog/seed/examples.js +91 -42
- package/dist/modules/catalog/seed/examples.js.map +2 -2
- package/dist/modules/dashboards/seed/analytics.js +3 -0
- package/dist/modules/dashboards/seed/analytics.js.map +2 -2
- package/dist/modules/sales/api/order-lines/route.js +98 -15
- package/dist/modules/sales/api/order-lines/route.js.map +2 -2
- package/dist/modules/sales/api/quote-lines/route.js +101 -14
- package/dist/modules/sales/api/quote-lines/route.js.map +2 -2
- package/dist/modules/sales/api/quotes/public/[token]/route.js +87 -12
- package/dist/modules/sales/api/quotes/public/[token]/route.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +1424 -260
- package/dist/modules/sales/commands/documents.js.map +3 -3
- package/dist/modules/sales/commands/shared.js +6 -2
- package/dist/modules/sales/commands/shared.js.map +2 -2
- package/dist/modules/sales/components/documents/ItemsSection.js +216 -86
- package/dist/modules/sales/components/documents/ItemsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/LineItemDialog.js +913 -241
- package/dist/modules/sales/components/documents/LineItemDialog.js.map +3 -3
- package/dist/modules/sales/components/documents/ShipmentsSection.js +15 -3
- package/dist/modules/sales/components/documents/ShipmentsSection.js.map +2 -2
- package/dist/modules/sales/data/entities.js +59 -3
- package/dist/modules/sales/data/entities.js.map +2 -2
- package/dist/modules/sales/data/validators.js +35 -0
- package/dist/modules/sales/data/validators.js.map +2 -2
- package/dist/modules/sales/frontend/quote/[token]/page.js +15 -1
- package/dist/modules/sales/frontend/quote/[token]/page.js.map +2 -2
- package/dist/modules/sales/migrations/Migration20260218225423.js +31 -0
- package/dist/modules/sales/migrations/Migration20260218225423.js.map +7 -0
- package/dist/modules/sales/migrations/Migration20260219084501.js +71 -0
- package/dist/modules/sales/migrations/Migration20260219084501.js.map +7 -0
- package/dist/modules/sales/search.js +28 -0
- package/dist/modules/sales/search.js.map +2 -2
- package/dist/modules/sales/seed/examples.js +14 -1
- package/dist/modules/sales/seed/examples.js.map +2 -2
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js +1 -1
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js.map +2 -2
- package/generated/entities/catalog_product/index.ts +8 -0
- package/generated/entities/catalog_product_unit_conversion/index.ts +12 -0
- package/generated/entities/sales_credit_memo_line/index.ts +3 -0
- package/generated/entities/sales_invoice_line/index.ts +3 -0
- package/generated/entities/sales_order_line/index.ts +3 -0
- package/generated/entities/sales_quote_line/index.ts +3 -0
- package/generated/entities.ids.generated.ts +1 -0
- package/generated/entity-fields-registry.ts +2 -0
- package/package.json +2 -2
- package/src/modules/auth/i18n/de.json +1 -1
- package/src/modules/auth/i18n/en.json +1 -1
- package/src/modules/auth/i18n/es.json +1 -1
- package/src/modules/auth/i18n/pl.json +1 -1
- package/src/modules/catalog/api/prices/route.ts +213 -81
- package/src/modules/catalog/api/product-unit-conversions/route.ts +195 -0
- package/src/modules/catalog/api/products/route.ts +638 -402
- package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +2085 -1072
- package/src/modules/catalog/backend/catalog/products/create/page.tsx +1288 -593
- package/src/modules/catalog/commands/index.ts +1 -0
- package/src/modules/catalog/commands/productUnitConversions.ts +626 -0
- package/src/modules/catalog/commands/products.ts +1151 -693
- package/src/modules/catalog/commands/shared.ts +19 -5
- package/src/modules/catalog/components/products/ProductUomSection.tsx +745 -0
- package/src/modules/catalog/components/products/productForm.ts +369 -256
- package/src/modules/catalog/components/products/productFormUtils.ts +82 -0
- package/src/modules/catalog/data/entities.ts +82 -1
- package/src/modules/catalog/data/validators.ts +118 -34
- package/src/modules/catalog/events.ts +3 -0
- package/src/modules/catalog/i18n/de.json +56 -0
- package/src/modules/catalog/i18n/en.json +56 -0
- package/src/modules/catalog/i18n/es.json +56 -0
- package/src/modules/catalog/i18n/pl.json +56 -0
- package/src/modules/catalog/lib/unitCodes.ts +1 -0
- package/src/modules/catalog/lib/unitResolution.ts +62 -0
- package/src/modules/catalog/migrations/.snapshot-open-mercato.json +245 -0
- package/src/modules/catalog/migrations/Migration20260218225422.ts +21 -0
- package/src/modules/catalog/migrations/Migration20260219084500.ts +26 -0
- package/src/modules/catalog/search.ts +73 -1
- package/src/modules/catalog/seed/examples.ts +552 -479
- package/src/modules/dashboards/i18n/de.json +1 -1
- package/src/modules/dashboards/i18n/en.json +1 -1
- package/src/modules/dashboards/i18n/es.json +1 -1
- package/src/modules/dashboards/i18n/pl.json +1 -1
- package/src/modules/dashboards/seed/analytics.ts +3 -0
- package/src/modules/sales/api/order-lines/route.ts +158 -68
- package/src/modules/sales/api/quote-lines/route.ts +161 -67
- package/src/modules/sales/api/quotes/public/[token]/route.ts +122 -36
- package/src/modules/sales/commands/documents.ts +4250 -2424
- package/src/modules/sales/commands/shared.ts +7 -2
- package/src/modules/sales/components/documents/ItemsSection.tsx +580 -310
- package/src/modules/sales/components/documents/LineItemDialog.tsx +1988 -833
- package/src/modules/sales/components/documents/ShipmentsSection.tsx +17 -3
- package/src/modules/sales/components/documents/lineItemTypes.ts +6 -0
- package/src/modules/sales/data/entities.ts +53 -0
- package/src/modules/sales/data/validators.ts +36 -0
- package/src/modules/sales/frontend/quote/[token]/page.tsx +25 -1
- package/src/modules/sales/i18n/de.json +23 -3
- package/src/modules/sales/i18n/en.json +23 -3
- package/src/modules/sales/i18n/es.json +23 -3
- package/src/modules/sales/i18n/pl.json +23 -3
- package/src/modules/sales/lib/types.ts +30 -0
- package/src/modules/sales/migrations/.snapshot-open-mercato.json +172 -0
- package/src/modules/sales/migrations/Migration20260218225423.ts +37 -0
- package/src/modules/sales/migrations/Migration20260219084501.ts +73 -0
- package/src/modules/sales/search.ts +28 -0
- package/src/modules/sales/seed/examples.ts +20 -1
- package/src/modules/sales/widgets/injection/document-history/widget.client.tsx +1 -1
- package/src/modules/workflows/i18n/de.json +4 -4
- package/src/modules/workflows/i18n/en.json +4 -4
- package/src/modules/workflows/i18n/es.json +4 -4
- package/src/modules/workflows/i18n/pl.json +4 -4
|
@@ -403,6 +403,10 @@ const searchConfig = {
|
|
|
403
403
|
entityId: "sales:sales_order_line",
|
|
404
404
|
enabled: true,
|
|
405
405
|
priority: 7,
|
|
406
|
+
fieldPolicy: {
|
|
407
|
+
searchable: ["name", "description", "quantity_unit", "normalized_unit"],
|
|
408
|
+
excluded: ["uom_snapshot", "metadata", "catalog_snapshot", "configuration", "promotion_snapshot"]
|
|
409
|
+
},
|
|
406
410
|
buildSource: async (ctx) => {
|
|
407
411
|
const { t: translate } = await resolveTranslations();
|
|
408
412
|
const record = ctx.record;
|
|
@@ -411,6 +415,9 @@ const searchConfig = {
|
|
|
411
415
|
appendLine(lines, "Description", record.description);
|
|
412
416
|
appendLine(lines, "Kind", record.kind);
|
|
413
417
|
appendLine(lines, "Quantity", record.quantity);
|
|
418
|
+
appendLine(lines, "Quantity unit", record.quantity_unit ?? record.quantityUnit);
|
|
419
|
+
appendLine(lines, "Normalized quantity", record.normalized_quantity ?? record.normalizedQuantity);
|
|
420
|
+
appendLine(lines, "Normalized unit", record.normalized_unit ?? record.normalizedUnit);
|
|
414
421
|
appendLine(lines, "Status", record.status);
|
|
415
422
|
return buildIndexSource(ctx, buildOrderLinePresenter(translate, record), lines);
|
|
416
423
|
},
|
|
@@ -424,6 +431,10 @@ const searchConfig = {
|
|
|
424
431
|
entityId: "sales:sales_quote_line",
|
|
425
432
|
enabled: true,
|
|
426
433
|
priority: 7,
|
|
434
|
+
fieldPolicy: {
|
|
435
|
+
searchable: ["name", "description", "quantity_unit", "normalized_unit"],
|
|
436
|
+
excluded: ["uom_snapshot", "metadata", "catalog_snapshot", "configuration", "promotion_snapshot"]
|
|
437
|
+
},
|
|
427
438
|
buildSource: async (ctx) => {
|
|
428
439
|
const { t: translate } = await resolveTranslations();
|
|
429
440
|
const record = ctx.record;
|
|
@@ -432,6 +443,9 @@ const searchConfig = {
|
|
|
432
443
|
appendLine(lines, "Description", record.description);
|
|
433
444
|
appendLine(lines, "Kind", record.kind);
|
|
434
445
|
appendLine(lines, "Quantity", record.quantity);
|
|
446
|
+
appendLine(lines, "Quantity unit", record.quantity_unit ?? record.quantityUnit);
|
|
447
|
+
appendLine(lines, "Normalized quantity", record.normalized_quantity ?? record.normalizedQuantity);
|
|
448
|
+
appendLine(lines, "Normalized unit", record.normalized_unit ?? record.normalizedUnit);
|
|
435
449
|
appendLine(lines, "Status", record.status);
|
|
436
450
|
return buildIndexSource(ctx, buildQuoteLinePresenter(translate, record), lines);
|
|
437
451
|
},
|
|
@@ -543,6 +557,10 @@ const searchConfig = {
|
|
|
543
557
|
entityId: "sales:sales_invoice_line",
|
|
544
558
|
enabled: true,
|
|
545
559
|
priority: 5,
|
|
560
|
+
fieldPolicy: {
|
|
561
|
+
searchable: ["description", "quantity_unit", "normalized_unit"],
|
|
562
|
+
excluded: ["uom_snapshot", "metadata"]
|
|
563
|
+
},
|
|
546
564
|
buildSource: async (ctx) => {
|
|
547
565
|
const { t: translate } = await resolveTranslations();
|
|
548
566
|
const record = ctx.record;
|
|
@@ -550,6 +568,9 @@ const searchConfig = {
|
|
|
550
568
|
appendLine(lines, "Description", record.description);
|
|
551
569
|
appendLine(lines, "Kind", record.kind);
|
|
552
570
|
appendLine(lines, "Quantity", record.quantity);
|
|
571
|
+
appendLine(lines, "Quantity unit", record.quantity_unit ?? record.quantityUnit);
|
|
572
|
+
appendLine(lines, "Normalized quantity", record.normalized_quantity ?? record.normalizedQuantity);
|
|
573
|
+
appendLine(lines, "Normalized unit", record.normalized_unit ?? record.normalizedUnit);
|
|
553
574
|
return buildIndexSource(ctx, buildInvoiceLinePresenter(translate, record), lines);
|
|
554
575
|
},
|
|
555
576
|
formatResult: async (ctx) => {
|
|
@@ -582,6 +603,10 @@ const searchConfig = {
|
|
|
582
603
|
entityId: "sales:sales_credit_memo_line",
|
|
583
604
|
enabled: true,
|
|
584
605
|
priority: 5,
|
|
606
|
+
fieldPolicy: {
|
|
607
|
+
searchable: ["description", "quantity_unit", "normalized_unit"],
|
|
608
|
+
excluded: ["uom_snapshot", "metadata"]
|
|
609
|
+
},
|
|
585
610
|
buildSource: async (ctx) => {
|
|
586
611
|
const { t: translate } = await resolveTranslations();
|
|
587
612
|
const record = ctx.record;
|
|
@@ -589,6 +614,9 @@ const searchConfig = {
|
|
|
589
614
|
appendLine(lines, "Description", record.description);
|
|
590
615
|
appendLine(lines, "Kind", record.kind);
|
|
591
616
|
appendLine(lines, "Quantity", record.quantity);
|
|
617
|
+
appendLine(lines, "Quantity unit", record.quantity_unit ?? record.quantityUnit);
|
|
618
|
+
appendLine(lines, "Normalized quantity", record.normalized_quantity ?? record.normalizedQuantity);
|
|
619
|
+
appendLine(lines, "Normalized unit", record.normalized_unit ?? record.normalizedUnit);
|
|
592
620
|
return buildIndexSource(ctx, buildCreditMemoLinePresenter(translate, record), lines);
|
|
593
621
|
},
|
|
594
622
|
formatResult: async (ctx) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/modules/sales/search.ts"],
|
|
4
|
-
"sourcesContent": ["import type { SearchBuildContext, SearchIndexSource, SearchModuleConfig, SearchResultPresenter } from '@open-mercato/shared/modules/search'\nimport type { TranslateFn } from '@open-mercato/shared/lib/i18n/context'\nimport { resolveTranslations } from '@open-mercato/shared/lib/i18n/server'\n\ntype SalesDocumentKind = 'order' | 'quote' | 'invoice' | 'credit_memo'\n\nconst SALES_CONFIG_URL = '/backend/config/sales'\nconst SALES_CHANNELS_URL = '/backend/sales/channels'\nconst SALES_ORDERS_URL = '/backend/sales/orders'\nconst SALES_QUOTES_URL = '/backend/sales/quotes'\n\nfunction normalizeText(value: unknown): string | null {\n if (value === null || value === undefined) return null\n if (typeof value === 'string') {\n const trimmed = value.trim()\n return trimmed.length > 0 ? trimmed : null\n }\n if (value instanceof Date) return value.toISOString()\n if (typeof value === 'number' || typeof value === 'boolean') return String(value)\n return null\n}\n\nfunction pickText(...candidates: Array<unknown>): string | null {\n for (const candidate of candidates) {\n const text = normalizeText(candidate)\n if (text) return text\n }\n return null\n}\n\nfunction readRecordText(record: Record<string, unknown>, ...keys: string[]): string | null {\n for (const key of keys) {\n const text = normalizeText(record[key])\n if (text) return text\n }\n return null\n}\n\nfunction readObjectText(source: unknown, ...keys: string[]): string | null {\n if (!source || typeof source !== 'object') return null\n const record = source as Record<string, unknown>\n return readRecordText(record, ...keys)\n}\n\nfunction formatSubtitle(...parts: Array<unknown>): string | undefined {\n const text = parts\n .map((part) => normalizeText(part))\n .filter((value): value is string => Boolean(value))\n if (!text.length) return undefined\n return text.join(' \u00B7 ')\n}\n\nfunction snippet(value: unknown, maxLength = 140): string | undefined {\n const text = normalizeText(value)\n if (!text) return undefined\n if (text.length <= maxLength) return text\n return `${text.slice(0, maxLength - 3)}...`\n}\n\nfunction appendLine(lines: string[], label: string, value: unknown) {\n if (value === null || value === undefined) return\n const text = Array.isArray(value)\n ? value.map((item) => normalizeText(item)).filter(Boolean).join(', ')\n : typeof value === 'object'\n ? JSON.stringify(value)\n : String(value)\n if (!text.trim()) return\n lines.push(`${label}: ${text}`)\n}\n\nfunction friendlyLabel(input: string): string {\n return input\n .replace(/^cf:/, '')\n .replace(/_/g, ' ')\n .replace(/([a-z])([A-Z])/g, (_match, firstChar, secondChar) => `${firstChar} ${secondChar}`)\n .replace(/\\b\\w/g, (character) => character.toUpperCase())\n}\n\nfunction appendCustomFieldLines(lines: string[], customFields: Record<string, unknown>) {\n for (const [key, value] of Object.entries(customFields)) {\n if (value === null || value === undefined) continue\n appendLine(lines, friendlyLabel(key), value)\n }\n}\n\nfunction buildIndexSource(\n ctx: SearchBuildContext,\n presenter: SearchResultPresenter,\n lines: string[],\n): SearchIndexSource | null {\n appendCustomFieldLines(lines, ctx.customFields)\n if (!lines.length) return null\n return {\n text: lines,\n presenter,\n checksumSource: { record: ctx.record, customFields: ctx.customFields },\n }\n}\n\nfunction buildOrderUrl(orderId: string | null): string | null {\n if (!orderId) return null\n return `${SALES_ORDERS_URL}/${encodeURIComponent(orderId)}`\n}\n\nfunction buildQuoteUrl(quoteId: string | null): string | null {\n if (!quoteId) return null\n return `${SALES_QUOTES_URL}/${encodeURIComponent(quoteId)}`\n}\n\nfunction resolveDocumentKind(record: Record<string, unknown>): SalesDocumentKind | null {\n const kind = readRecordText(record, 'document_kind', 'documentKind', 'context_type', 'contextType', 'kind')\n if (!kind) return null\n if (kind === 'order' || kind === 'quote' || kind === 'invoice' || kind === 'credit_memo') return kind\n return null\n}\n\nfunction resolveDocumentId(record: Record<string, unknown>): string | null {\n return readRecordText(record, 'document_id', 'documentId', 'context_id', 'contextId')\n}\n\nfunction resolveOrderId(record: Record<string, unknown>): string | null {\n return readRecordText(record, 'order_id', 'orderId')\n}\n\nfunction resolveQuoteId(record: Record<string, unknown>): string | null {\n return readRecordText(record, 'quote_id', 'quoteId')\n}\n\nfunction resolveDocumentUrl(kind: SalesDocumentKind | null, documentId: string | null): string | null {\n if (!documentId) return null\n if (kind === 'quote') return buildQuoteUrl(documentId)\n if (kind === 'order') return buildOrderUrl(documentId)\n return null\n}\n\nfunction resolveCustomerName(record: Record<string, unknown>): string | null {\n const snapshot = record.customer_snapshot ?? record.customerSnapshot\n const snapshotName = readObjectText(\n snapshot,\n 'display_name',\n 'displayName',\n 'company_name',\n 'companyName',\n 'legal_name',\n 'legalName',\n 'name',\n )\n if (snapshotName) return snapshotName\n const firstName = readObjectText(snapshot, 'first_name', 'firstName')\n const lastName = readObjectText(snapshot, 'last_name', 'lastName')\n if (firstName || lastName) return `${firstName ?? ''} ${lastName ?? ''}`.trim()\n return readRecordText(record, 'customer_name', 'customerName')\n}\n\nfunction formatAmount(amount: unknown, currency: unknown): string | null {\n const amountText = normalizeText(amount)\n if (!amountText) return null\n const currencyText = normalizeText(currency)\n return currencyText ? `${amountText} ${currencyText}` : amountText\n}\n\nfunction buildDocumentTitle(label: string, number: string | null, fallbackId: string | null): string {\n if (number) return `${label} ${number}`\n if (fallbackId) return `${label} ${fallbackId}`\n return label\n}\n\nfunction buildOrderPresenter(\n translate: TranslateFn,\n record: Record<string, unknown>,\n customFields: Record<string, unknown>,\n): SearchResultPresenter {\n const label = translate('sales.search.badge.order', 'Order')\n const title = buildDocumentTitle(\n label,\n readRecordText(record, 'order_number', 'orderNumber') ?? readRecordText(customFields, 'order_number', 'orderNumber'),\n readRecordText(record, 'id'),\n )\n const subtitle = formatSubtitle(\n resolveCustomerName(record),\n readRecordText(record, 'status'),\n readRecordText(record, 'fulfillment_status', 'fulfillmentStatus'),\n readRecordText(record, 'payment_status', 'paymentStatus'),\n )\n return { title, subtitle, icon: 'shopping-cart', badge: label }\n}\n\nfunction buildQuotePresenter(\n translate: TranslateFn,\n record: Record<string, unknown>,\n customFields: Record<string, unknown>,\n): SearchResultPresenter {\n const label = translate('sales.search.badge.quote', 'Quote')\n const title = buildDocumentTitle(\n label,\n readRecordText(record, 'quote_number', 'quoteNumber') ?? readRecordText(customFields, 'quote_number', 'quoteNumber'),\n readRecordText(record, 'id'),\n )\n const subtitle = formatSubtitle(\n resolveCustomerName(record),\n readRecordText(record, 'status'),\n readRecordText(record, 'valid_until', 'validUntil'),\n )\n return { title, subtitle, icon: 'file-text', badge: label }\n}\n\nfunction buildInvoicePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.invoice', 'Invoice')\n const title = buildDocumentTitle(label, readRecordText(record, 'invoice_number', 'invoiceNumber'), readRecordText(record, 'id'))\n const subtitle = formatSubtitle(\n readRecordText(record, 'status'),\n readRecordText(record, 'due_date', 'dueDate'),\n formatAmount(readRecordText(record, 'grand_total_gross_amount', 'grandTotalGrossAmount'), record.currency_code ?? record.currencyCode),\n )\n return { title, subtitle, icon: 'receipt', badge: label }\n}\n\nfunction buildCreditMemoPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.creditMemo', 'Credit memo')\n const title = buildDocumentTitle(\n label,\n readRecordText(record, 'credit_memo_number', 'creditMemoNumber'),\n readRecordText(record, 'id'),\n )\n const subtitle = formatSubtitle(\n readRecordText(record, 'status'),\n formatAmount(readRecordText(record, 'grand_total_gross_amount', 'grandTotalGrossAmount'), record.currency_code ?? record.currencyCode),\n )\n return { title, subtitle, icon: 'file-minus', badge: label }\n}\n\nfunction buildShipmentPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.shipment', 'Shipment')\n const title = buildDocumentTitle(label, readRecordText(record, 'shipment_number', 'shipmentNumber'), readRecordText(record, 'id'))\n const tracking = record.tracking_numbers ?? record.trackingNumbers\n const subtitle = formatSubtitle(readRecordText(record, 'status'), Array.isArray(tracking) ? tracking.join(', ') : tracking)\n return { title, subtitle, icon: 'truck', badge: label }\n}\n\nfunction buildPaymentPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.payment', 'Payment')\n const title = buildDocumentTitle(label, readRecordText(record, 'payment_reference', 'paymentReference'), readRecordText(record, 'id'))\n const subtitle = formatSubtitle(\n formatAmount(readRecordText(record, 'amount'), record.currency_code ?? record.currencyCode),\n readRecordText(record, 'status'),\n )\n return { title, subtitle, icon: 'credit-card', badge: label }\n}\n\nfunction buildPaymentAllocationPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.paymentAllocation', 'Payment allocation')\n const title = buildDocumentTitle(label, null, readRecordText(record, 'id'))\n const subtitle = formatSubtitle(formatAmount(readRecordText(record, 'amount'), record.currency_code ?? record.currencyCode))\n return { title, subtitle, icon: 'layers', badge: label }\n}\n\nfunction buildDocumentAddressPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.address', 'Address')\n const title = pickText(\n readRecordText(record, 'name'),\n readRecordText(record, 'company_name', 'companyName'),\n readRecordText(record, 'address_line1', 'addressLine1'),\n readRecordText(record, 'id'),\n )\n const subtitle = formatSubtitle(\n readRecordText(record, 'address_line1', 'addressLine1'),\n readRecordText(record, 'city'),\n readRecordText(record, 'region'),\n readRecordText(record, 'country'),\n )\n return { title: title ?? label, subtitle, icon: 'map-pin', badge: label }\n}\n\nfunction buildNotePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.note', 'Note')\n const title = snippet(readRecordText(record, 'body'), 120) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'author_user_id', 'authorUserId'))\n return { title, subtitle, icon: 'sticky-note', badge: label }\n}\n\nfunction buildOrderLinePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.orderLine', 'Order line')\n const lineTitle = pickText(\n readRecordText(record, 'name'),\n readRecordText(record, 'description'),\n readRecordText(record, 'line_number', 'lineNumber'),\n )\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'total_gross_amount', 'totalGrossAmount'), record.currency_code ?? record.currencyCode),\n readRecordText(record, 'status'),\n )\n return { title: lineTitle ? `${label} ${lineTitle}` : label, subtitle, icon: 'list', badge: label }\n}\n\nfunction buildQuoteLinePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.quoteLine', 'Quote line')\n const lineTitle = pickText(\n readRecordText(record, 'name'),\n readRecordText(record, 'description'),\n readRecordText(record, 'line_number', 'lineNumber'),\n )\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'total_gross_amount', 'totalGrossAmount'), record.currency_code ?? record.currencyCode),\n readRecordText(record, 'status'),\n )\n return { title: lineTitle ? `${label} ${lineTitle}` : label, subtitle, icon: 'list', badge: label }\n}\n\nfunction buildInvoiceLinePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.invoiceLine', 'Invoice line')\n const lineTitle = pickText(readRecordText(record, 'description'), readRecordText(record, 'line_number', 'lineNumber'))\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'total_gross_amount', 'totalGrossAmount'), record.currency_code ?? record.currencyCode),\n )\n return { title: lineTitle ? `${label} ${lineTitle}` : label, subtitle, icon: 'list', badge: label }\n}\n\nfunction buildCreditMemoLinePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.creditMemoLine', 'Credit memo line')\n const lineTitle = pickText(readRecordText(record, 'description'), readRecordText(record, 'line_number', 'lineNumber'))\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'total_gross_amount', 'totalGrossAmount'), record.currency_code ?? record.currencyCode),\n )\n return { title: lineTitle ? `${label} ${lineTitle}` : label, subtitle, icon: 'list', badge: label }\n}\n\nfunction buildShipmentItemPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.shipmentItem', 'Shipment item')\n const subtitle = formatSubtitle(readRecordText(record, 'quantity'))\n return { title: label, subtitle, icon: 'package', badge: label }\n}\n\nfunction buildOrderAdjustmentPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.orderAdjustment', 'Order adjustment')\n const title = pickText(readRecordText(record, 'label'), readRecordText(record, 'code'), readRecordText(record, 'id'))\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'amount_gross', 'amountGross'), record.currency_code ?? record.currencyCode),\n )\n return { title: title ? `${label} ${title}` : label, subtitle, icon: 'sliders', badge: label }\n}\n\nfunction buildQuoteAdjustmentPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.quoteAdjustment', 'Quote adjustment')\n const title = pickText(readRecordText(record, 'label'), readRecordText(record, 'code'), readRecordText(record, 'id'))\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'amount_gross', 'amountGross'), record.currency_code ?? record.currencyCode),\n )\n return { title: title ? `${label} ${title}` : label, subtitle, icon: 'sliders', badge: label }\n}\n\nfunction buildChannelPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.channel', 'Channel')\n const title = pickText(readRecordText(record, 'name'), readRecordText(record, 'code'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'code'), readRecordText(record, 'status'))\n return { title, subtitle, icon: 'store', badge: label }\n}\n\nfunction buildShippingMethodPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.shippingMethod', 'Shipping method')\n const title = pickText(readRecordText(record, 'name'), readRecordText(record, 'code'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'carrier_code', 'carrierCode'), readRecordText(record, 'service_level', 'serviceLevel'))\n return { title, subtitle, icon: 'truck', badge: label }\n}\n\nfunction buildDeliveryWindowPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.deliveryWindow', 'Delivery window')\n const title = pickText(readRecordText(record, 'name'), readRecordText(record, 'code'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'lead_time_days', 'leadTimeDays'), readRecordText(record, 'timezone'))\n return { title, subtitle, icon: 'clock', badge: label }\n}\n\nfunction buildPaymentMethodPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.paymentMethod', 'Payment method')\n const title = pickText(readRecordText(record, 'name'), readRecordText(record, 'code'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'provider_key', 'providerKey'))\n return { title, subtitle, icon: 'credit-card', badge: label }\n}\n\nfunction buildTaxRatePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.taxRate', 'Tax rate')\n const title = pickText(readRecordText(record, 'name'), readRecordText(record, 'code'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'rate'), readRecordText(record, 'country_code', 'countryCode'))\n return { title, subtitle, icon: 'percent', badge: label }\n}\n\nfunction buildDocumentTagPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.documentTag', 'Document tag')\n const title = pickText(readRecordText(record, 'label'), readRecordText(record, 'slug'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'description'))\n return { title, subtitle, icon: 'tag', badge: label }\n}\n\nexport const searchConfig: SearchModuleConfig = {\n entities: [\n {\n entityId: 'sales:sales_channel',\n enabled: true,\n priority: 7,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name ?? ctx.customFields.name)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Description', record.description)\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Website', record.website_url ?? record.websiteUrl)\n appendLine(lines, 'Contact email', record.contact_email ?? record.contactEmail)\n appendLine(lines, 'Contact phone', record.contact_phone ?? record.contactPhone)\n return buildIndexSource(ctx, buildChannelPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildChannelPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => {\n const channelId = readRecordText(ctx.record, 'id')\n return channelId ? `${SALES_CHANNELS_URL}/${encodeURIComponent(channelId)}/edit` : SALES_CHANNELS_URL\n },\n },\n {\n entityId: 'sales:sales_order',\n enabled: true,\n priority: 10,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Order number', record.order_number ?? record.orderNumber)\n appendLine(lines, 'Customer', resolveCustomerName(record))\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Fulfillment status', record.fulfillment_status ?? record.fulfillmentStatus)\n appendLine(lines, 'Payment status', record.payment_status ?? record.paymentStatus)\n appendLine(lines, 'External reference', record.external_reference ?? record.externalReference)\n appendLine(lines, 'Customer reference', record.customer_reference ?? record.customerReference)\n return buildIndexSource(ctx, buildOrderPresenter(translate, record, ctx.customFields), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildOrderPresenter(translate, ctx.record, ctx.customFields)\n },\n resolveUrl: async (ctx) => buildOrderUrl(readRecordText(ctx.record, 'id')),\n },\n {\n entityId: 'sales:sales_quote',\n enabled: true,\n priority: 10,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Quote number', record.quote_number ?? record.quoteNumber)\n appendLine(lines, 'Customer', resolveCustomerName(record))\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Valid until', record.valid_until ?? record.validUntil)\n appendLine(lines, 'External reference', record.external_reference ?? record.externalReference)\n appendLine(lines, 'Customer reference', record.customer_reference ?? record.customerReference)\n return buildIndexSource(ctx, buildQuotePresenter(translate, record, ctx.customFields), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildQuotePresenter(translate, ctx.record, ctx.customFields)\n },\n resolveUrl: async (ctx) => buildQuoteUrl(readRecordText(ctx.record, 'id')),\n },\n {\n entityId: 'sales:sales_order_line',\n enabled: true,\n priority: 7,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Description', record.description)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Quantity', record.quantity)\n appendLine(lines, 'Status', record.status)\n return buildIndexSource(ctx, buildOrderLinePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildOrderLinePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_quote_line',\n enabled: true,\n priority: 7,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Description', record.description)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Quantity', record.quantity)\n appendLine(lines, 'Status', record.status)\n return buildIndexSource(ctx, buildQuoteLinePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildQuoteLinePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildQuoteUrl(resolveQuoteId(ctx.record)),\n },\n {\n entityId: 'sales:sales_order_adjustment',\n enabled: true,\n priority: 6,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Label', record.label)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Amount gross', record.amount_gross ?? record.amountGross)\n return buildIndexSource(ctx, buildOrderAdjustmentPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildOrderAdjustmentPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_quote_adjustment',\n enabled: true,\n priority: 6,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Label', record.label)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Amount gross', record.amount_gross ?? record.amountGross)\n return buildIndexSource(ctx, buildQuoteAdjustmentPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildQuoteAdjustmentPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildQuoteUrl(resolveQuoteId(ctx.record)),\n },\n {\n entityId: 'sales:sales_shipment',\n enabled: true,\n priority: 6,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Shipment number', record.shipment_number ?? record.shipmentNumber)\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Carrier', record.carrier_name ?? record.carrierName)\n appendLine(lines, 'Tracking numbers', record.tracking_numbers ?? record.trackingNumbers)\n return buildIndexSource(ctx, buildShipmentPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildShipmentPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_shipment_item',\n enabled: true,\n priority: 5,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Quantity', record.quantity)\n appendLine(lines, 'Shipment', record.shipment_id ?? record.shipmentId)\n return buildIndexSource(ctx, buildShipmentItemPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildShipmentItemPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_invoice',\n enabled: true,\n priority: 6,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Invoice number', record.invoice_number ?? record.invoiceNumber)\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Due date', record.due_date ?? record.dueDate)\n appendLine(lines, 'Total gross', record.grand_total_gross_amount ?? record.grandTotalGrossAmount)\n return buildIndexSource(ctx, buildInvoicePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildInvoicePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_invoice_line',\n enabled: true,\n priority: 5,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Description', record.description)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Quantity', record.quantity)\n return buildIndexSource(ctx, buildInvoiceLinePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildInvoiceLinePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_credit_memo',\n enabled: true,\n priority: 6,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Credit memo number', record.credit_memo_number ?? record.creditMemoNumber)\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Issue date', record.issue_date ?? record.issueDate)\n appendLine(lines, 'Total gross', record.grand_total_gross_amount ?? record.grandTotalGrossAmount)\n return buildIndexSource(ctx, buildCreditMemoPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildCreditMemoPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_credit_memo_line',\n enabled: true,\n priority: 5,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Description', record.description)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Quantity', record.quantity)\n return buildIndexSource(ctx, buildCreditMemoLinePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildCreditMemoLinePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_payment',\n enabled: true,\n priority: 8,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Payment reference', record.payment_reference ?? record.paymentReference)\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Amount', record.amount)\n appendLine(lines, 'Currency', record.currency_code ?? record.currencyCode)\n return buildIndexSource(ctx, buildPaymentPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildPaymentPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_payment_allocation',\n enabled: true,\n priority: 5,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Amount', record.amount)\n appendLine(lines, 'Currency', record.currency_code ?? record.currencyCode)\n appendLine(lines, 'Order', record.order_id ?? record.orderId)\n appendLine(lines, 'Invoice', record.invoice_id ?? record.invoiceId)\n return buildIndexSource(ctx, buildPaymentAllocationPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildPaymentAllocationPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_note',\n enabled: true,\n priority: 7,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Body', record.body)\n appendLine(lines, 'Author', record.author_user_id ?? record.authorUserId)\n appendLine(lines, 'Context type', record.context_type ?? record.contextType)\n return buildIndexSource(ctx, buildNotePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildNotePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => {\n const kind = resolveDocumentKind(ctx.record)\n const documentId = resolveDocumentId(ctx.record)\n return resolveDocumentUrl(kind, documentId)\n },\n },\n {\n entityId: 'sales:sales_document_address',\n enabled: true,\n priority: 7,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Company', record.company_name ?? record.companyName)\n appendLine(lines, 'Address', record.address_line1 ?? record.addressLine1)\n appendLine(lines, 'City', record.city)\n appendLine(lines, 'Region', record.region)\n appendLine(lines, 'Country', record.country)\n return buildIndexSource(ctx, buildDocumentAddressPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildDocumentAddressPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => {\n const kind = resolveDocumentKind(ctx.record)\n const documentId = resolveDocumentId(ctx.record)\n return resolveDocumentUrl(kind, documentId)\n },\n },\n {\n entityId: 'sales:sales_shipping_method',\n enabled: true,\n priority: 4,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Carrier', record.carrier_code ?? record.carrierCode)\n appendLine(lines, 'Service level', record.service_level ?? record.serviceLevel)\n return buildIndexSource(ctx, buildShippingMethodPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildShippingMethodPresenter(translate, ctx.record)\n },\n resolveUrl: async () => SALES_CONFIG_URL,\n },\n {\n entityId: 'sales:sales_delivery_window',\n enabled: true,\n priority: 4,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Lead time', record.lead_time_days ?? record.leadTimeDays)\n appendLine(lines, 'Timezone', record.timezone)\n return buildIndexSource(ctx, buildDeliveryWindowPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildDeliveryWindowPresenter(translate, ctx.record)\n },\n resolveUrl: async () => SALES_CONFIG_URL,\n },\n {\n entityId: 'sales:sales_payment_method',\n enabled: true,\n priority: 4,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Provider', record.provider_key ?? record.providerKey)\n appendLine(lines, 'Terms', record.terms)\n return buildIndexSource(ctx, buildPaymentMethodPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildPaymentMethodPresenter(translate, ctx.record)\n },\n resolveUrl: async () => SALES_CONFIG_URL,\n },\n {\n entityId: 'sales:sales_tax_rate',\n enabled: true,\n priority: 4,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Rate', record.rate)\n appendLine(lines, 'Country', record.country_code ?? record.countryCode)\n return buildIndexSource(ctx, buildTaxRatePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildTaxRatePresenter(translate, ctx.record)\n },\n resolveUrl: async () => SALES_CONFIG_URL,\n },\n {\n entityId: 'sales:sales_document_tag',\n enabled: true,\n priority: 3,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Label', record.label)\n appendLine(lines, 'Slug', record.slug)\n appendLine(lines, 'Description', record.description)\n return buildIndexSource(ctx, buildDocumentTagPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildDocumentTagPresenter(translate, ctx.record)\n },\n resolveUrl: async () => SALES_ORDERS_URL,\n },\n ],\n}\n\nexport default searchConfig\nexport const config = searchConfig\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import type { SearchBuildContext, SearchIndexSource, SearchModuleConfig, SearchResultPresenter } from '@open-mercato/shared/modules/search'\nimport type { TranslateFn } from '@open-mercato/shared/lib/i18n/context'\nimport { resolveTranslations } from '@open-mercato/shared/lib/i18n/server'\n\ntype SalesDocumentKind = 'order' | 'quote' | 'invoice' | 'credit_memo'\n\nconst SALES_CONFIG_URL = '/backend/config/sales'\nconst SALES_CHANNELS_URL = '/backend/sales/channels'\nconst SALES_ORDERS_URL = '/backend/sales/orders'\nconst SALES_QUOTES_URL = '/backend/sales/quotes'\n\nfunction normalizeText(value: unknown): string | null {\n if (value === null || value === undefined) return null\n if (typeof value === 'string') {\n const trimmed = value.trim()\n return trimmed.length > 0 ? trimmed : null\n }\n if (value instanceof Date) return value.toISOString()\n if (typeof value === 'number' || typeof value === 'boolean') return String(value)\n return null\n}\n\nfunction pickText(...candidates: Array<unknown>): string | null {\n for (const candidate of candidates) {\n const text = normalizeText(candidate)\n if (text) return text\n }\n return null\n}\n\nfunction readRecordText(record: Record<string, unknown>, ...keys: string[]): string | null {\n for (const key of keys) {\n const text = normalizeText(record[key])\n if (text) return text\n }\n return null\n}\n\nfunction readObjectText(source: unknown, ...keys: string[]): string | null {\n if (!source || typeof source !== 'object') return null\n const record = source as Record<string, unknown>\n return readRecordText(record, ...keys)\n}\n\nfunction formatSubtitle(...parts: Array<unknown>): string | undefined {\n const text = parts\n .map((part) => normalizeText(part))\n .filter((value): value is string => Boolean(value))\n if (!text.length) return undefined\n return text.join(' \u00B7 ')\n}\n\nfunction snippet(value: unknown, maxLength = 140): string | undefined {\n const text = normalizeText(value)\n if (!text) return undefined\n if (text.length <= maxLength) return text\n return `${text.slice(0, maxLength - 3)}...`\n}\n\nfunction appendLine(lines: string[], label: string, value: unknown) {\n if (value === null || value === undefined) return\n const text = Array.isArray(value)\n ? value.map((item) => normalizeText(item)).filter(Boolean).join(', ')\n : typeof value === 'object'\n ? JSON.stringify(value)\n : String(value)\n if (!text.trim()) return\n lines.push(`${label}: ${text}`)\n}\n\nfunction friendlyLabel(input: string): string {\n return input\n .replace(/^cf:/, '')\n .replace(/_/g, ' ')\n .replace(/([a-z])([A-Z])/g, (_match, firstChar, secondChar) => `${firstChar} ${secondChar}`)\n .replace(/\\b\\w/g, (character) => character.toUpperCase())\n}\n\nfunction appendCustomFieldLines(lines: string[], customFields: Record<string, unknown>) {\n for (const [key, value] of Object.entries(customFields)) {\n if (value === null || value === undefined) continue\n appendLine(lines, friendlyLabel(key), value)\n }\n}\n\nfunction buildIndexSource(\n ctx: SearchBuildContext,\n presenter: SearchResultPresenter,\n lines: string[],\n): SearchIndexSource | null {\n appendCustomFieldLines(lines, ctx.customFields)\n if (!lines.length) return null\n return {\n text: lines,\n presenter,\n checksumSource: { record: ctx.record, customFields: ctx.customFields },\n }\n}\n\nfunction buildOrderUrl(orderId: string | null): string | null {\n if (!orderId) return null\n return `${SALES_ORDERS_URL}/${encodeURIComponent(orderId)}`\n}\n\nfunction buildQuoteUrl(quoteId: string | null): string | null {\n if (!quoteId) return null\n return `${SALES_QUOTES_URL}/${encodeURIComponent(quoteId)}`\n}\n\nfunction resolveDocumentKind(record: Record<string, unknown>): SalesDocumentKind | null {\n const kind = readRecordText(record, 'document_kind', 'documentKind', 'context_type', 'contextType', 'kind')\n if (!kind) return null\n if (kind === 'order' || kind === 'quote' || kind === 'invoice' || kind === 'credit_memo') return kind\n return null\n}\n\nfunction resolveDocumentId(record: Record<string, unknown>): string | null {\n return readRecordText(record, 'document_id', 'documentId', 'context_id', 'contextId')\n}\n\nfunction resolveOrderId(record: Record<string, unknown>): string | null {\n return readRecordText(record, 'order_id', 'orderId')\n}\n\nfunction resolveQuoteId(record: Record<string, unknown>): string | null {\n return readRecordText(record, 'quote_id', 'quoteId')\n}\n\nfunction resolveDocumentUrl(kind: SalesDocumentKind | null, documentId: string | null): string | null {\n if (!documentId) return null\n if (kind === 'quote') return buildQuoteUrl(documentId)\n if (kind === 'order') return buildOrderUrl(documentId)\n return null\n}\n\nfunction resolveCustomerName(record: Record<string, unknown>): string | null {\n const snapshot = record.customer_snapshot ?? record.customerSnapshot\n const snapshotName = readObjectText(\n snapshot,\n 'display_name',\n 'displayName',\n 'company_name',\n 'companyName',\n 'legal_name',\n 'legalName',\n 'name',\n )\n if (snapshotName) return snapshotName\n const firstName = readObjectText(snapshot, 'first_name', 'firstName')\n const lastName = readObjectText(snapshot, 'last_name', 'lastName')\n if (firstName || lastName) return `${firstName ?? ''} ${lastName ?? ''}`.trim()\n return readRecordText(record, 'customer_name', 'customerName')\n}\n\nfunction formatAmount(amount: unknown, currency: unknown): string | null {\n const amountText = normalizeText(amount)\n if (!amountText) return null\n const currencyText = normalizeText(currency)\n return currencyText ? `${amountText} ${currencyText}` : amountText\n}\n\nfunction buildDocumentTitle(label: string, number: string | null, fallbackId: string | null): string {\n if (number) return `${label} ${number}`\n if (fallbackId) return `${label} ${fallbackId}`\n return label\n}\n\nfunction buildOrderPresenter(\n translate: TranslateFn,\n record: Record<string, unknown>,\n customFields: Record<string, unknown>,\n): SearchResultPresenter {\n const label = translate('sales.search.badge.order', 'Order')\n const title = buildDocumentTitle(\n label,\n readRecordText(record, 'order_number', 'orderNumber') ?? readRecordText(customFields, 'order_number', 'orderNumber'),\n readRecordText(record, 'id'),\n )\n const subtitle = formatSubtitle(\n resolveCustomerName(record),\n readRecordText(record, 'status'),\n readRecordText(record, 'fulfillment_status', 'fulfillmentStatus'),\n readRecordText(record, 'payment_status', 'paymentStatus'),\n )\n return { title, subtitle, icon: 'shopping-cart', badge: label }\n}\n\nfunction buildQuotePresenter(\n translate: TranslateFn,\n record: Record<string, unknown>,\n customFields: Record<string, unknown>,\n): SearchResultPresenter {\n const label = translate('sales.search.badge.quote', 'Quote')\n const title = buildDocumentTitle(\n label,\n readRecordText(record, 'quote_number', 'quoteNumber') ?? readRecordText(customFields, 'quote_number', 'quoteNumber'),\n readRecordText(record, 'id'),\n )\n const subtitle = formatSubtitle(\n resolveCustomerName(record),\n readRecordText(record, 'status'),\n readRecordText(record, 'valid_until', 'validUntil'),\n )\n return { title, subtitle, icon: 'file-text', badge: label }\n}\n\nfunction buildInvoicePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.invoice', 'Invoice')\n const title = buildDocumentTitle(label, readRecordText(record, 'invoice_number', 'invoiceNumber'), readRecordText(record, 'id'))\n const subtitle = formatSubtitle(\n readRecordText(record, 'status'),\n readRecordText(record, 'due_date', 'dueDate'),\n formatAmount(readRecordText(record, 'grand_total_gross_amount', 'grandTotalGrossAmount'), record.currency_code ?? record.currencyCode),\n )\n return { title, subtitle, icon: 'receipt', badge: label }\n}\n\nfunction buildCreditMemoPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.creditMemo', 'Credit memo')\n const title = buildDocumentTitle(\n label,\n readRecordText(record, 'credit_memo_number', 'creditMemoNumber'),\n readRecordText(record, 'id'),\n )\n const subtitle = formatSubtitle(\n readRecordText(record, 'status'),\n formatAmount(readRecordText(record, 'grand_total_gross_amount', 'grandTotalGrossAmount'), record.currency_code ?? record.currencyCode),\n )\n return { title, subtitle, icon: 'file-minus', badge: label }\n}\n\nfunction buildShipmentPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.shipment', 'Shipment')\n const title = buildDocumentTitle(label, readRecordText(record, 'shipment_number', 'shipmentNumber'), readRecordText(record, 'id'))\n const tracking = record.tracking_numbers ?? record.trackingNumbers\n const subtitle = formatSubtitle(readRecordText(record, 'status'), Array.isArray(tracking) ? tracking.join(', ') : tracking)\n return { title, subtitle, icon: 'truck', badge: label }\n}\n\nfunction buildPaymentPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.payment', 'Payment')\n const title = buildDocumentTitle(label, readRecordText(record, 'payment_reference', 'paymentReference'), readRecordText(record, 'id'))\n const subtitle = formatSubtitle(\n formatAmount(readRecordText(record, 'amount'), record.currency_code ?? record.currencyCode),\n readRecordText(record, 'status'),\n )\n return { title, subtitle, icon: 'credit-card', badge: label }\n}\n\nfunction buildPaymentAllocationPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.paymentAllocation', 'Payment allocation')\n const title = buildDocumentTitle(label, null, readRecordText(record, 'id'))\n const subtitle = formatSubtitle(formatAmount(readRecordText(record, 'amount'), record.currency_code ?? record.currencyCode))\n return { title, subtitle, icon: 'layers', badge: label }\n}\n\nfunction buildDocumentAddressPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.address', 'Address')\n const title = pickText(\n readRecordText(record, 'name'),\n readRecordText(record, 'company_name', 'companyName'),\n readRecordText(record, 'address_line1', 'addressLine1'),\n readRecordText(record, 'id'),\n )\n const subtitle = formatSubtitle(\n readRecordText(record, 'address_line1', 'addressLine1'),\n readRecordText(record, 'city'),\n readRecordText(record, 'region'),\n readRecordText(record, 'country'),\n )\n return { title: title ?? label, subtitle, icon: 'map-pin', badge: label }\n}\n\nfunction buildNotePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.note', 'Note')\n const title = snippet(readRecordText(record, 'body'), 120) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'author_user_id', 'authorUserId'))\n return { title, subtitle, icon: 'sticky-note', badge: label }\n}\n\nfunction buildOrderLinePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.orderLine', 'Order line')\n const lineTitle = pickText(\n readRecordText(record, 'name'),\n readRecordText(record, 'description'),\n readRecordText(record, 'line_number', 'lineNumber'),\n )\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'total_gross_amount', 'totalGrossAmount'), record.currency_code ?? record.currencyCode),\n readRecordText(record, 'status'),\n )\n return { title: lineTitle ? `${label} ${lineTitle}` : label, subtitle, icon: 'list', badge: label }\n}\n\nfunction buildQuoteLinePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.quoteLine', 'Quote line')\n const lineTitle = pickText(\n readRecordText(record, 'name'),\n readRecordText(record, 'description'),\n readRecordText(record, 'line_number', 'lineNumber'),\n )\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'total_gross_amount', 'totalGrossAmount'), record.currency_code ?? record.currencyCode),\n readRecordText(record, 'status'),\n )\n return { title: lineTitle ? `${label} ${lineTitle}` : label, subtitle, icon: 'list', badge: label }\n}\n\nfunction buildInvoiceLinePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.invoiceLine', 'Invoice line')\n const lineTitle = pickText(readRecordText(record, 'description'), readRecordText(record, 'line_number', 'lineNumber'))\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'total_gross_amount', 'totalGrossAmount'), record.currency_code ?? record.currencyCode),\n )\n return { title: lineTitle ? `${label} ${lineTitle}` : label, subtitle, icon: 'list', badge: label }\n}\n\nfunction buildCreditMemoLinePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.creditMemoLine', 'Credit memo line')\n const lineTitle = pickText(readRecordText(record, 'description'), readRecordText(record, 'line_number', 'lineNumber'))\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'total_gross_amount', 'totalGrossAmount'), record.currency_code ?? record.currencyCode),\n )\n return { title: lineTitle ? `${label} ${lineTitle}` : label, subtitle, icon: 'list', badge: label }\n}\n\nfunction buildShipmentItemPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.shipmentItem', 'Shipment item')\n const subtitle = formatSubtitle(readRecordText(record, 'quantity'))\n return { title: label, subtitle, icon: 'package', badge: label }\n}\n\nfunction buildOrderAdjustmentPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.orderAdjustment', 'Order adjustment')\n const title = pickText(readRecordText(record, 'label'), readRecordText(record, 'code'), readRecordText(record, 'id'))\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'amount_gross', 'amountGross'), record.currency_code ?? record.currencyCode),\n )\n return { title: title ? `${label} ${title}` : label, subtitle, icon: 'sliders', badge: label }\n}\n\nfunction buildQuoteAdjustmentPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.quoteAdjustment', 'Quote adjustment')\n const title = pickText(readRecordText(record, 'label'), readRecordText(record, 'code'), readRecordText(record, 'id'))\n const subtitle = formatSubtitle(\n readRecordText(record, 'kind'),\n formatAmount(readRecordText(record, 'amount_gross', 'amountGross'), record.currency_code ?? record.currencyCode),\n )\n return { title: title ? `${label} ${title}` : label, subtitle, icon: 'sliders', badge: label }\n}\n\nfunction buildChannelPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.channel', 'Channel')\n const title = pickText(readRecordText(record, 'name'), readRecordText(record, 'code'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'code'), readRecordText(record, 'status'))\n return { title, subtitle, icon: 'store', badge: label }\n}\n\nfunction buildShippingMethodPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.shippingMethod', 'Shipping method')\n const title = pickText(readRecordText(record, 'name'), readRecordText(record, 'code'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'carrier_code', 'carrierCode'), readRecordText(record, 'service_level', 'serviceLevel'))\n return { title, subtitle, icon: 'truck', badge: label }\n}\n\nfunction buildDeliveryWindowPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.deliveryWindow', 'Delivery window')\n const title = pickText(readRecordText(record, 'name'), readRecordText(record, 'code'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'lead_time_days', 'leadTimeDays'), readRecordText(record, 'timezone'))\n return { title, subtitle, icon: 'clock', badge: label }\n}\n\nfunction buildPaymentMethodPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.paymentMethod', 'Payment method')\n const title = pickText(readRecordText(record, 'name'), readRecordText(record, 'code'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'provider_key', 'providerKey'))\n return { title, subtitle, icon: 'credit-card', badge: label }\n}\n\nfunction buildTaxRatePresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.taxRate', 'Tax rate')\n const title = pickText(readRecordText(record, 'name'), readRecordText(record, 'code'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'rate'), readRecordText(record, 'country_code', 'countryCode'))\n return { title, subtitle, icon: 'percent', badge: label }\n}\n\nfunction buildDocumentTagPresenter(translate: TranslateFn, record: Record<string, unknown>): SearchResultPresenter {\n const label = translate('sales.search.badge.documentTag', 'Document tag')\n const title = pickText(readRecordText(record, 'label'), readRecordText(record, 'slug'), readRecordText(record, 'id')) ?? label\n const subtitle = formatSubtitle(readRecordText(record, 'description'))\n return { title, subtitle, icon: 'tag', badge: label }\n}\n\nexport const searchConfig: SearchModuleConfig = {\n entities: [\n {\n entityId: 'sales:sales_channel',\n enabled: true,\n priority: 7,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name ?? ctx.customFields.name)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Description', record.description)\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Website', record.website_url ?? record.websiteUrl)\n appendLine(lines, 'Contact email', record.contact_email ?? record.contactEmail)\n appendLine(lines, 'Contact phone', record.contact_phone ?? record.contactPhone)\n return buildIndexSource(ctx, buildChannelPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildChannelPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => {\n const channelId = readRecordText(ctx.record, 'id')\n return channelId ? `${SALES_CHANNELS_URL}/${encodeURIComponent(channelId)}/edit` : SALES_CHANNELS_URL\n },\n },\n {\n entityId: 'sales:sales_order',\n enabled: true,\n priority: 10,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Order number', record.order_number ?? record.orderNumber)\n appendLine(lines, 'Customer', resolveCustomerName(record))\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Fulfillment status', record.fulfillment_status ?? record.fulfillmentStatus)\n appendLine(lines, 'Payment status', record.payment_status ?? record.paymentStatus)\n appendLine(lines, 'External reference', record.external_reference ?? record.externalReference)\n appendLine(lines, 'Customer reference', record.customer_reference ?? record.customerReference)\n return buildIndexSource(ctx, buildOrderPresenter(translate, record, ctx.customFields), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildOrderPresenter(translate, ctx.record, ctx.customFields)\n },\n resolveUrl: async (ctx) => buildOrderUrl(readRecordText(ctx.record, 'id')),\n },\n {\n entityId: 'sales:sales_quote',\n enabled: true,\n priority: 10,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Quote number', record.quote_number ?? record.quoteNumber)\n appendLine(lines, 'Customer', resolveCustomerName(record))\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Valid until', record.valid_until ?? record.validUntil)\n appendLine(lines, 'External reference', record.external_reference ?? record.externalReference)\n appendLine(lines, 'Customer reference', record.customer_reference ?? record.customerReference)\n return buildIndexSource(ctx, buildQuotePresenter(translate, record, ctx.customFields), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildQuotePresenter(translate, ctx.record, ctx.customFields)\n },\n resolveUrl: async (ctx) => buildQuoteUrl(readRecordText(ctx.record, 'id')),\n },\n {\n entityId: 'sales:sales_order_line',\n enabled: true,\n priority: 7,\n fieldPolicy: {\n searchable: ['name', 'description', 'quantity_unit', 'normalized_unit'],\n excluded: ['uom_snapshot', 'metadata', 'catalog_snapshot', 'configuration', 'promotion_snapshot'],\n },\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Description', record.description)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Quantity', record.quantity)\n appendLine(lines, 'Quantity unit', record.quantity_unit ?? record.quantityUnit)\n appendLine(lines, 'Normalized quantity', record.normalized_quantity ?? record.normalizedQuantity)\n appendLine(lines, 'Normalized unit', record.normalized_unit ?? record.normalizedUnit)\n appendLine(lines, 'Status', record.status)\n return buildIndexSource(ctx, buildOrderLinePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildOrderLinePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_quote_line',\n enabled: true,\n priority: 7,\n fieldPolicy: {\n searchable: ['name', 'description', 'quantity_unit', 'normalized_unit'],\n excluded: ['uom_snapshot', 'metadata', 'catalog_snapshot', 'configuration', 'promotion_snapshot'],\n },\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Description', record.description)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Quantity', record.quantity)\n appendLine(lines, 'Quantity unit', record.quantity_unit ?? record.quantityUnit)\n appendLine(lines, 'Normalized quantity', record.normalized_quantity ?? record.normalizedQuantity)\n appendLine(lines, 'Normalized unit', record.normalized_unit ?? record.normalizedUnit)\n appendLine(lines, 'Status', record.status)\n return buildIndexSource(ctx, buildQuoteLinePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildQuoteLinePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildQuoteUrl(resolveQuoteId(ctx.record)),\n },\n {\n entityId: 'sales:sales_order_adjustment',\n enabled: true,\n priority: 6,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Label', record.label)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Amount gross', record.amount_gross ?? record.amountGross)\n return buildIndexSource(ctx, buildOrderAdjustmentPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildOrderAdjustmentPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_quote_adjustment',\n enabled: true,\n priority: 6,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Label', record.label)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Amount gross', record.amount_gross ?? record.amountGross)\n return buildIndexSource(ctx, buildQuoteAdjustmentPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildQuoteAdjustmentPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildQuoteUrl(resolveQuoteId(ctx.record)),\n },\n {\n entityId: 'sales:sales_shipment',\n enabled: true,\n priority: 6,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Shipment number', record.shipment_number ?? record.shipmentNumber)\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Carrier', record.carrier_name ?? record.carrierName)\n appendLine(lines, 'Tracking numbers', record.tracking_numbers ?? record.trackingNumbers)\n return buildIndexSource(ctx, buildShipmentPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildShipmentPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_shipment_item',\n enabled: true,\n priority: 5,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Quantity', record.quantity)\n appendLine(lines, 'Shipment', record.shipment_id ?? record.shipmentId)\n return buildIndexSource(ctx, buildShipmentItemPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildShipmentItemPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_invoice',\n enabled: true,\n priority: 6,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Invoice number', record.invoice_number ?? record.invoiceNumber)\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Due date', record.due_date ?? record.dueDate)\n appendLine(lines, 'Total gross', record.grand_total_gross_amount ?? record.grandTotalGrossAmount)\n return buildIndexSource(ctx, buildInvoicePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildInvoicePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_invoice_line',\n enabled: true,\n priority: 5,\n fieldPolicy: {\n searchable: ['description', 'quantity_unit', 'normalized_unit'],\n excluded: ['uom_snapshot', 'metadata'],\n },\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Description', record.description)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Quantity', record.quantity)\n appendLine(lines, 'Quantity unit', record.quantity_unit ?? record.quantityUnit)\n appendLine(lines, 'Normalized quantity', record.normalized_quantity ?? record.normalizedQuantity)\n appendLine(lines, 'Normalized unit', record.normalized_unit ?? record.normalizedUnit)\n return buildIndexSource(ctx, buildInvoiceLinePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildInvoiceLinePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_credit_memo',\n enabled: true,\n priority: 6,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Credit memo number', record.credit_memo_number ?? record.creditMemoNumber)\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Issue date', record.issue_date ?? record.issueDate)\n appendLine(lines, 'Total gross', record.grand_total_gross_amount ?? record.grandTotalGrossAmount)\n return buildIndexSource(ctx, buildCreditMemoPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildCreditMemoPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_credit_memo_line',\n enabled: true,\n priority: 5,\n fieldPolicy: {\n searchable: ['description', 'quantity_unit', 'normalized_unit'],\n excluded: ['uom_snapshot', 'metadata'],\n },\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Description', record.description)\n appendLine(lines, 'Kind', record.kind)\n appendLine(lines, 'Quantity', record.quantity)\n appendLine(lines, 'Quantity unit', record.quantity_unit ?? record.quantityUnit)\n appendLine(lines, 'Normalized quantity', record.normalized_quantity ?? record.normalizedQuantity)\n appendLine(lines, 'Normalized unit', record.normalized_unit ?? record.normalizedUnit)\n return buildIndexSource(ctx, buildCreditMemoLinePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildCreditMemoLinePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_payment',\n enabled: true,\n priority: 8,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Payment reference', record.payment_reference ?? record.paymentReference)\n appendLine(lines, 'Status', record.status)\n appendLine(lines, 'Amount', record.amount)\n appendLine(lines, 'Currency', record.currency_code ?? record.currencyCode)\n return buildIndexSource(ctx, buildPaymentPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildPaymentPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_payment_allocation',\n enabled: true,\n priority: 5,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Amount', record.amount)\n appendLine(lines, 'Currency', record.currency_code ?? record.currencyCode)\n appendLine(lines, 'Order', record.order_id ?? record.orderId)\n appendLine(lines, 'Invoice', record.invoice_id ?? record.invoiceId)\n return buildIndexSource(ctx, buildPaymentAllocationPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildPaymentAllocationPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => buildOrderUrl(resolveOrderId(ctx.record)),\n },\n {\n entityId: 'sales:sales_note',\n enabled: true,\n priority: 7,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Body', record.body)\n appendLine(lines, 'Author', record.author_user_id ?? record.authorUserId)\n appendLine(lines, 'Context type', record.context_type ?? record.contextType)\n return buildIndexSource(ctx, buildNotePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildNotePresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => {\n const kind = resolveDocumentKind(ctx.record)\n const documentId = resolveDocumentId(ctx.record)\n return resolveDocumentUrl(kind, documentId)\n },\n },\n {\n entityId: 'sales:sales_document_address',\n enabled: true,\n priority: 7,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Company', record.company_name ?? record.companyName)\n appendLine(lines, 'Address', record.address_line1 ?? record.addressLine1)\n appendLine(lines, 'City', record.city)\n appendLine(lines, 'Region', record.region)\n appendLine(lines, 'Country', record.country)\n return buildIndexSource(ctx, buildDocumentAddressPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildDocumentAddressPresenter(translate, ctx.record)\n },\n resolveUrl: async (ctx) => {\n const kind = resolveDocumentKind(ctx.record)\n const documentId = resolveDocumentId(ctx.record)\n return resolveDocumentUrl(kind, documentId)\n },\n },\n {\n entityId: 'sales:sales_shipping_method',\n enabled: true,\n priority: 4,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Carrier', record.carrier_code ?? record.carrierCode)\n appendLine(lines, 'Service level', record.service_level ?? record.serviceLevel)\n return buildIndexSource(ctx, buildShippingMethodPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildShippingMethodPresenter(translate, ctx.record)\n },\n resolveUrl: async () => SALES_CONFIG_URL,\n },\n {\n entityId: 'sales:sales_delivery_window',\n enabled: true,\n priority: 4,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Lead time', record.lead_time_days ?? record.leadTimeDays)\n appendLine(lines, 'Timezone', record.timezone)\n return buildIndexSource(ctx, buildDeliveryWindowPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildDeliveryWindowPresenter(translate, ctx.record)\n },\n resolveUrl: async () => SALES_CONFIG_URL,\n },\n {\n entityId: 'sales:sales_payment_method',\n enabled: true,\n priority: 4,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Provider', record.provider_key ?? record.providerKey)\n appendLine(lines, 'Terms', record.terms)\n return buildIndexSource(ctx, buildPaymentMethodPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildPaymentMethodPresenter(translate, ctx.record)\n },\n resolveUrl: async () => SALES_CONFIG_URL,\n },\n {\n entityId: 'sales:sales_tax_rate',\n enabled: true,\n priority: 4,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Name', record.name)\n appendLine(lines, 'Code', record.code)\n appendLine(lines, 'Rate', record.rate)\n appendLine(lines, 'Country', record.country_code ?? record.countryCode)\n return buildIndexSource(ctx, buildTaxRatePresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildTaxRatePresenter(translate, ctx.record)\n },\n resolveUrl: async () => SALES_CONFIG_URL,\n },\n {\n entityId: 'sales:sales_document_tag',\n enabled: true,\n priority: 3,\n buildSource: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n const record = ctx.record\n const lines: string[] = []\n appendLine(lines, 'Label', record.label)\n appendLine(lines, 'Slug', record.slug)\n appendLine(lines, 'Description', record.description)\n return buildIndexSource(ctx, buildDocumentTagPresenter(translate, record), lines)\n },\n formatResult: async (ctx) => {\n const { t: translate } = await resolveTranslations()\n return buildDocumentTagPresenter(translate, ctx.record)\n },\n resolveUrl: async () => SALES_ORDERS_URL,\n },\n ],\n}\n\nexport default searchConfig\nexport const config = searchConfig\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1027,6 +1027,9 @@ async function seedSalesExamples(em, container, scope) {
|
|
|
1027
1027
|
comment: line.comment ?? null,
|
|
1028
1028
|
quantity: line.quantity,
|
|
1029
1029
|
quantityUnit: line.quantityUnit ?? null,
|
|
1030
|
+
normalizedQuantity: line.quantity,
|
|
1031
|
+
normalizedUnit: line.quantityUnit ?? null,
|
|
1032
|
+
uomSnapshot: null,
|
|
1030
1033
|
currencyCode,
|
|
1031
1034
|
unitPriceNet,
|
|
1032
1035
|
unitPriceGross,
|
|
@@ -1110,6 +1113,9 @@ async function seedSalesExamples(em, container, scope) {
|
|
|
1110
1113
|
comment: source.comment,
|
|
1111
1114
|
quantity: toAmount(source.quantity),
|
|
1112
1115
|
quantityUnit: source.quantityUnit ?? null,
|
|
1116
|
+
normalizedQuantity: toAmount(source.normalizedQuantity ?? source.quantity),
|
|
1117
|
+
normalizedUnit: source.normalizedUnit ?? source.quantityUnit ?? null,
|
|
1118
|
+
uomSnapshot: source.uomSnapshot && typeof source.uomSnapshot === "object" ? toSnapshot(source.uomSnapshot) : null,
|
|
1113
1119
|
currencyCode: source.currencyCode,
|
|
1114
1120
|
unitPriceNet: toAmount(source.unitPriceNet ?? 0),
|
|
1115
1121
|
unitPriceGross: toAmount(source.unitPriceGross ?? source.unitPriceNet ?? 0),
|
|
@@ -1129,7 +1135,8 @@ async function seedSalesExamples(em, container, scope) {
|
|
|
1129
1135
|
em.persist(line);
|
|
1130
1136
|
});
|
|
1131
1137
|
calculation.adjustments.forEach((adj, idx) => {
|
|
1132
|
-
const
|
|
1138
|
+
const adjMeta = adj.metadata && typeof adj.metadata === "object" ? adj.metadata : null;
|
|
1139
|
+
const lineIndex = adjMeta ? adjMeta.lineIndex : null;
|
|
1133
1140
|
const lineRef = typeof lineIndex === "number" && lineIndex >= 0 && lineIndex < seed.lines.length ? lineSnapshots[lineIndex]?.id ?? null : null;
|
|
1134
1141
|
const adjustment = em.create(SalesQuoteAdjustment, {
|
|
1135
1142
|
id: adj.id ?? randomUUID(),
|
|
@@ -1217,6 +1224,9 @@ async function seedSalesExamples(em, container, scope) {
|
|
|
1217
1224
|
comment: line.comment ?? null,
|
|
1218
1225
|
quantity: line.quantity,
|
|
1219
1226
|
quantityUnit: line.quantityUnit ?? null,
|
|
1227
|
+
normalizedQuantity: line.quantity,
|
|
1228
|
+
normalizedUnit: line.quantityUnit ?? null,
|
|
1229
|
+
uomSnapshot: null,
|
|
1220
1230
|
currencyCode,
|
|
1221
1231
|
unitPriceNet,
|
|
1222
1232
|
unitPriceGross,
|
|
@@ -1309,6 +1319,9 @@ async function seedSalesExamples(em, container, scope) {
|
|
|
1309
1319
|
comment: source.comment,
|
|
1310
1320
|
quantity: toAmount(source.quantity),
|
|
1311
1321
|
quantityUnit: source.quantityUnit ?? null,
|
|
1322
|
+
normalizedQuantity: toAmount(source.normalizedQuantity ?? source.quantity),
|
|
1323
|
+
normalizedUnit: source.normalizedUnit ?? source.quantityUnit ?? null,
|
|
1324
|
+
uomSnapshot: source.uomSnapshot && typeof source.uomSnapshot === "object" ? toSnapshot(source.uomSnapshot) : null,
|
|
1312
1325
|
reservedQuantity: "0",
|
|
1313
1326
|
fulfilledQuantity: "0",
|
|
1314
1327
|
invoicedQuantity: "0",
|