@bisondesk/core-sdk 1.0.494 → 1.0.495

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/lib/constants.d.ts +2 -2
  2. package/lib/constants.d.ts.map +1 -1
  3. package/lib/constants.js +2 -2
  4. package/lib/constants.js.map +1 -1
  5. package/lib/types/activities.d.ts +5 -15
  6. package/lib/types/activities.d.ts.map +1 -1
  7. package/lib/types/activities.js +0 -1
  8. package/lib/types/activities.js.map +1 -1
  9. package/lib/types/comparables.d.ts +2 -0
  10. package/lib/types/comparables.d.ts.map +1 -1
  11. package/lib/types/comparables.js.map +1 -1
  12. package/lib/types/crm.d.ts +8 -0
  13. package/lib/types/crm.d.ts.map +1 -1
  14. package/lib/types/crm.js.map +1 -1
  15. package/lib/types/interests.d.ts +8 -0
  16. package/lib/types/interests.d.ts.map +1 -1
  17. package/lib/types/interests.js +2 -0
  18. package/lib/types/interests.js.map +1 -1
  19. package/lib/types/internal-events.d.ts +1 -2
  20. package/lib/types/internal-events.d.ts.map +1 -1
  21. package/lib/types/internal-events.js +0 -1
  22. package/lib/types/internal-events.js.map +1 -1
  23. package/lib/types/journeys.d.ts +0 -6
  24. package/lib/types/journeys.d.ts.map +1 -1
  25. package/lib/types/journeys.js.map +1 -1
  26. package/lib/types/leasing-debtors.d.ts +0 -202
  27. package/lib/types/leasing-debtors.d.ts.map +1 -1
  28. package/lib/types/leasing-debtors.js +1 -58
  29. package/lib/types/leasing-debtors.js.map +1 -1
  30. package/lib/types/leasing.d.ts +22 -1
  31. package/lib/types/leasing.d.ts.map +1 -1
  32. package/lib/types/leasing.js.map +1 -1
  33. package/lib/types/marketing-emails.d.ts +57 -0
  34. package/lib/types/marketing-emails.d.ts.map +1 -0
  35. package/lib/types/marketing-emails.js +2 -0
  36. package/lib/types/marketing-emails.js.map +1 -0
  37. package/lib/types/tenants.d.ts +1 -0
  38. package/lib/types/tenants.d.ts.map +1 -1
  39. package/lib/types/tenants.js +1 -0
  40. package/lib/types/tenants.js.map +1 -1
  41. package/lib/utils/interests.d.ts +4 -0
  42. package/lib/utils/interests.d.ts.map +1 -0
  43. package/lib/utils/interests.js +110 -0
  44. package/lib/utils/interests.js.map +1 -0
  45. package/lib/utils/search.d.ts +2 -3
  46. package/lib/utils/search.d.ts.map +1 -1
  47. package/lib/utils/search.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/constants.ts +2 -2
  50. package/src/types/activities.ts +4 -49
  51. package/src/types/comparables.ts +2 -0
  52. package/src/types/crm.ts +11 -0
  53. package/src/types/interests.ts +14 -0
  54. package/src/types/internal-events.ts +0 -1
  55. package/src/types/journeys.ts +0 -7
  56. package/src/types/leasing-debtors.ts +0 -309
  57. package/src/types/leasing.ts +20 -0
  58. package/src/types/marketing-emails.ts +67 -0
  59. package/src/types/tenants.ts +1 -0
  60. package/src/utils/interests.ts +150 -0
  61. package/src/utils/search.ts +2 -9
  62. package/tsconfig.tsbuildinfo +1 -1
  63. package/lib/utils/debtors-dossiers.d.ts +0 -15
  64. package/lib/utils/debtors-dossiers.d.ts.map +0 -1
  65. package/lib/utils/debtors-dossiers.js +0 -51
  66. package/lib/utils/debtors-dossiers.js.map +0 -1
  67. package/src/utils/debtors-dossiers.ts +0 -73
@@ -0,0 +1,110 @@
1
+ import { isoString } from '@bisondesk/commons-sdk/date-utils';
2
+ import { generateId } from '@bisondesk/commons-sdk/ids';
3
+ import { UTCDate } from '@date-fns/utc';
4
+ import { first, range, uniq } from 'lodash-es';
5
+ import { KM_ROUNDING, MAX_AGE, MAX_KM, MAX_PRICE, PRICE_ROUNDING } from '../constants.js';
6
+ export const mapVehicleToInterest = (userId, vehicleExternalInfo, referenceDate = new UTCDate()) => {
7
+ return {
8
+ id: generateId(),
9
+ createdAt: isoString(),
10
+ createdBy: userId,
11
+ modifiedAt: isoString(),
12
+ modifiedBy: userId,
13
+ bodystyle: vehicleExternalInfo.general.bodystyle,
14
+ cabins: toCabins(toArray(vehicleExternalInfo.body?.cabin?.type)),
15
+ category: vehicleExternalInfo.general.category,
16
+ retarderIntarder: vehicleExternalInfo.accessories.retarderIntarder ? true : undefined,
17
+ adr: vehicleExternalInfo.accessories.adr,
18
+ damaged: vehicleExternalInfo.condition?.damaged ?? false,
19
+ extended: toArray(vehicleExternalInfo.superstructure?.dimensions?.extended),
20
+ heightened: toArray(vehicleExternalInfo.superstructure?.dimensions?.heightened),
21
+ used: vehicleExternalInfo.condition?.used,
22
+ crane: vehicleExternalInfo.superstructure?.crane?.present,
23
+ tailgate: vehicleExternalInfo.superstructure?.tailgate?.present,
24
+ axleConfigurations: toArray(vehicleExternalInfo.powertrain?.axles?.configuration),
25
+ suspensions: toSuspensions(toArray(vehicleExternalInfo.powertrain?.axles?.suspension)),
26
+ transmissions: toTransmissions(toArray(vehicleExternalInfo.powertrain?.transmission?.type)),
27
+ euronorms: toEuronorms(vehicleExternalInfo),
28
+ kilometers: vehicleExternalInfo.condition?.used
29
+ ? toRound(KM_ROUNDING, vehicleExternalInfo.condition?.odometer?.km, MAX_KM)
30
+ : undefined,
31
+ horsepower: toMinHorsepower(vehicleExternalInfo, -0.1),
32
+ versions: vehicleExternalInfo.general.make != null
33
+ ? [
34
+ {
35
+ make: vehicleExternalInfo.general.make,
36
+ models: toArray(vehicleExternalInfo.general.model),
37
+ },
38
+ ]
39
+ : undefined,
40
+ price: toMaxPrice(vehicleExternalInfo.salesConditions.price),
41
+ age: vehicleExternalInfo.condition?.used
42
+ ? toAge(referenceDate, vehicleExternalInfo.history?.advertisingYear)
43
+ : undefined,
44
+ autoGenerated: true,
45
+ };
46
+ };
47
+ const isHeavyVehicle = (vehicleExternalInfo) => ['Tractor Head', 'Truck'].includes(vehicleExternalInfo.general.category);
48
+ const toCabins = (values) => {
49
+ if (values == null || values.length === 0) {
50
+ return;
51
+ }
52
+ if (values.some((v) => v.startsWith('Sleep'))) {
53
+ return uniq([...values, 'Sleep / Medium', 'Sleep / Large']);
54
+ }
55
+ return values;
56
+ };
57
+ const toSuspensions = (values) => {
58
+ if (values == null || values.length === 0) {
59
+ return;
60
+ }
61
+ if (values.includes('Air/Steel')) {
62
+ return uniq([...values, 'Air']);
63
+ }
64
+ return values;
65
+ };
66
+ const toTransmissions = (values) => {
67
+ if (values == null || values.length === 0) {
68
+ return;
69
+ }
70
+ if (values.includes('Manual')) {
71
+ return;
72
+ }
73
+ if (values.includes('Semi-Automatic')) {
74
+ return uniq([...values, 'Automatic']);
75
+ }
76
+ return values;
77
+ };
78
+ const toEuronorms = (vehicleExternalInfo) => {
79
+ const values = toArray(vehicleExternalInfo.powertrain?.emissions?.class);
80
+ if (values == null || values.length === 0 || !isHeavyVehicle(vehicleExternalInfo)) {
81
+ return;
82
+ }
83
+ const minEuronorm = 5;
84
+ const maxEuronorm = 6;
85
+ const lowestEuronorm = first(values.map((v) => Number(v.charAt(v.length - 1))).sort());
86
+ if (lowestEuronorm < minEuronorm) {
87
+ return;
88
+ }
89
+ return range(lowestEuronorm, maxEuronorm + 1).map((r) => `Euro ${r}`);
90
+ };
91
+ const toAge = (referenceDate, year) => {
92
+ if (year == null) {
93
+ return;
94
+ }
95
+ if (year > referenceDate.getUTCFullYear()) {
96
+ return;
97
+ }
98
+ return toRound(1, referenceDate.getUTCFullYear() - year, MAX_AGE);
99
+ };
100
+ const toMaxPrice = (value) => value != null ? toRound(PRICE_ROUNDING, Number(value) * 1.15, MAX_PRICE) : undefined;
101
+ const toMinHorsepower = (vehicleExternalInfo, shiftRatio) => {
102
+ const hasHorsepower = vehicleExternalInfo.powertrain?.engine?.power?.hp != null;
103
+ const isHorsepowerImportant = isHeavyVehicle(vehicleExternalInfo);
104
+ if (hasHorsepower && isHorsepowerImportant) {
105
+ return toRound(5, vehicleExternalInfo.powertrain.engine.power.hp * (1 + shiftRatio));
106
+ }
107
+ };
108
+ const toRound = (r, value, max = Infinity) => value != null ? Math.min(Math.ceil(Number(value) / r) * r, max) : undefined;
109
+ const toArray = (value) => (value ? [value] : []);
110
+ //# sourceMappingURL=interests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interests.js","sourceRoot":"/","sources":["utils/interests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAI1F,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,mBAAwC,EACxC,gBAAsB,IAAI,OAAO,EAAE,EACzB,EAAE;IACZ,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,SAAS,EAAE,SAAS,EAAE;QACtB,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,SAAS,EAAE;QACvB,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS;QAChD,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAChE,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ;QAC9C,gBAAgB,EAAE,mBAAmB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACrF,GAAG,EAAE,mBAAmB,CAAC,WAAW,CAAC,GAAG;QACxC,OAAO,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,IAAI,KAAK;QACxD,QAAQ,EAAE,OAAO,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC;QAC3E,UAAU,EAAE,OAAO,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC;QAC/E,IAAI,EAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI;QACzC,KAAK,EAAE,mBAAmB,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO;QACzD,QAAQ,EAAE,mBAAmB,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO;QAC/D,kBAAkB,EAAE,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC;QACjF,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACtF,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAC3F,SAAS,EAAE,WAAW,CAAC,mBAAmB,CAAC;QAC3C,UAAU,EAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI;YAC7C,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC;YAC3E,CAAC,CAAC,SAAS;QACb,UAAU,EAAE,eAAe,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC;QACtD,QAAQ,EACN,mBAAmB,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI;YACtC,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,IAAI;oBACtC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC;iBACnD;aACF;YACH,CAAC,CAAC,SAAS;QACf,KAAK,EAAE,UAAU,CAAC,mBAAmB,CAAC,eAAe,CAAC,KAAK,CAAC;QAC5D,GAAG,EAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI;YACtC,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC;YACpE,CAAC,CAAC,SAAS;QACb,aAAa,EAAE,IAAI;KACpB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,mBAAwC,EAAE,EAAE,CAClE,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE3E,MAAM,QAAQ,GAAG,CAAC,MAA4B,EAAwB,EAAE;IACtE,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAE9C,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAA4B,EAAwB,EAAE;IAC3E,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAEjC,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,MAA4B,EAAwB,EAAE;IAC7E,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAE9B,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAEtC,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,mBAAwC,EAAwB,EAAE;IACrF,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACzE,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAClF,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,CAAC,CAAC;IAEtB,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAE,CAAC;IACxF,IAAI,cAAc,GAAG,WAAW,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,OAAO,KAAK,CAAC,cAAc,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,aAAmB,EAAE,IAAa,EAAE,EAAE;IACnD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,IAAI,IAAI,GAAG,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,cAAc,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAuB,EAAE,EAAE,CAC7C,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAEvF,MAAM,eAAe,GAAG,CACtB,mBAAwC,EACxC,UAAkB,EACE,EAAE;IACtB,MAAM,aAAa,GAAG,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC;IAChF,MAAM,qBAAqB,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAElE,IAAI,aAAa,IAAI,qBAAqB,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC,CAAC,EAAE,mBAAmB,CAAC,UAAW,CAAC,MAAO,CAAC,KAAM,CAAC,EAAG,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,KAAuB,EAAE,MAAc,QAAQ,EAAE,EAAE,CAC7E,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAE9E,MAAM,OAAO,GAAG,CAAC,KAAc,EAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC","sourcesContent":["import { isoString } from '@bisondesk/commons-sdk/date-utils';\nimport { generateId } from '@bisondesk/commons-sdk/ids';\nimport { UTCDate } from '@date-fns/utc';\nimport { first, range, uniq } from 'lodash-es';\nimport { KM_ROUNDING, MAX_AGE, MAX_KM, MAX_PRICE, PRICE_ROUNDING } from '../constants.js';\nimport { Interest } from '../types/interests.js';\nimport { VehicleExternalInfo } from '../types/vehicles.js';\n\nexport const mapVehicleToInterest = (\n userId: string,\n vehicleExternalInfo: VehicleExternalInfo,\n referenceDate: Date = new UTCDate()\n): Interest => {\n return {\n id: generateId(),\n createdAt: isoString(),\n createdBy: userId,\n modifiedAt: isoString(),\n modifiedBy: userId,\n bodystyle: vehicleExternalInfo.general.bodystyle,\n cabins: toCabins(toArray(vehicleExternalInfo.body?.cabin?.type)),\n category: vehicleExternalInfo.general.category,\n retarderIntarder: vehicleExternalInfo.accessories.retarderIntarder ? true : undefined,\n adr: vehicleExternalInfo.accessories.adr,\n damaged: vehicleExternalInfo.condition?.damaged ?? false,\n extended: toArray(vehicleExternalInfo.superstructure?.dimensions?.extended),\n heightened: toArray(vehicleExternalInfo.superstructure?.dimensions?.heightened),\n used: vehicleExternalInfo.condition?.used,\n crane: vehicleExternalInfo.superstructure?.crane?.present,\n tailgate: vehicleExternalInfo.superstructure?.tailgate?.present,\n axleConfigurations: toArray(vehicleExternalInfo.powertrain?.axles?.configuration),\n suspensions: toSuspensions(toArray(vehicleExternalInfo.powertrain?.axles?.suspension)),\n transmissions: toTransmissions(toArray(vehicleExternalInfo.powertrain?.transmission?.type)),\n euronorms: toEuronorms(vehicleExternalInfo),\n kilometers: vehicleExternalInfo.condition?.used\n ? toRound(KM_ROUNDING, vehicleExternalInfo.condition?.odometer?.km, MAX_KM)\n : undefined,\n horsepower: toMinHorsepower(vehicleExternalInfo, -0.1),\n versions:\n vehicleExternalInfo.general.make != null\n ? [\n {\n make: vehicleExternalInfo.general.make,\n models: toArray(vehicleExternalInfo.general.model),\n },\n ]\n : undefined,\n price: toMaxPrice(vehicleExternalInfo.salesConditions.price),\n age: vehicleExternalInfo.condition?.used\n ? toAge(referenceDate, vehicleExternalInfo.history?.advertisingYear)\n : undefined,\n autoGenerated: true,\n };\n};\n\nconst isHeavyVehicle = (vehicleExternalInfo: VehicleExternalInfo) =>\n ['Tractor Head', 'Truck'].includes(vehicleExternalInfo.general.category);\n\nconst toCabins = (values: string[] | undefined): string[] | undefined => {\n if (values == null || values.length === 0) {\n return;\n }\n\n if (values.some((v) => v.startsWith('Sleep'))) {\n // If it allows sleep, then add the two largest sleep options as well\n return uniq([...values, 'Sleep / Medium', 'Sleep / Large']);\n }\n\n return values;\n};\n\nconst toSuspensions = (values: string[] | undefined): string[] | undefined => {\n if (values == null || values.length === 0) {\n return;\n }\n\n if (values.includes('Air/Steel')) {\n // If it allows some axles with air suspension, then allow all\n return uniq([...values, 'Air']);\n }\n\n return values;\n};\n\nconst toTransmissions = (values: string[] | undefined): string[] | undefined => {\n if (values == null || values.length === 0) {\n return;\n }\n\n if (values.includes('Manual')) {\n // ignore transmission restriction\n return;\n }\n\n if (values.includes('Semi-Automatic')) {\n // also consider values that are better\n return uniq([...values, 'Automatic']);\n }\n\n return values;\n};\n\nconst toEuronorms = (vehicleExternalInfo: VehicleExternalInfo): string[] | undefined => {\n const values = toArray(vehicleExternalInfo.powertrain?.emissions?.class);\n if (values == null || values.length === 0 || !isHeavyVehicle(vehicleExternalInfo)) {\n return;\n }\n\n const minEuronorm = 5;\n const maxEuronorm = 6;\n\n const lowestEuronorm = first(values.map((v) => Number(v.charAt(v.length - 1))).sort())!;\n if (lowestEuronorm < minEuronorm) {\n return; // ignore Euronorm restriction\n }\n\n return range(lowestEuronorm, maxEuronorm + 1).map((r) => `Euro ${r}`);\n};\n\nconst toAge = (referenceDate: Date, year?: number) => {\n if (year == null) {\n return;\n }\n\n if (year > referenceDate.getUTCFullYear()) {\n return;\n }\n\n return toRound(1, referenceDate.getUTCFullYear() - year, MAX_AGE);\n};\n\nconst toMaxPrice = (value?: number | string) =>\n value != null ? toRound(PRICE_ROUNDING, Number(value) * 1.15, MAX_PRICE) : undefined;\n\nconst toMinHorsepower = (\n vehicleExternalInfo: VehicleExternalInfo,\n shiftRatio: number\n): number | undefined => {\n const hasHorsepower = vehicleExternalInfo.powertrain?.engine?.power?.hp != null;\n const isHorsepowerImportant = isHeavyVehicle(vehicleExternalInfo);\n\n if (hasHorsepower && isHorsepowerImportant) {\n return toRound(5, vehicleExternalInfo.powertrain!.engine!.power!.hp! * (1 + shiftRatio));\n }\n};\n\nconst toRound = (r: number, value?: number | string, max: number = Infinity) =>\n value != null ? Math.min(Math.ceil(Number(value) / r) * r, max) : undefined;\n\nconst toArray = (value?: string): string[] => (value ? [value] : []);\n"]}
@@ -1,12 +1,11 @@
1
1
  import { BusinessEntityIds } from '../constants.js';
2
2
  import { Contact, Organization, SearchOrganization } from '../types/crm.js';
3
- import { DebtorsDossier, SearchDebtorsDossier } from '../types/leasing-debtors.js';
4
3
  import { SearchLeasingContract } from '../types/leasing-search.js';
5
4
  import { LeasingContract } from '../types/leasing.js';
6
5
  import { Opportunity, SearchOpportunity } from '../types/opportunities.js';
7
6
  import { SearchVehicle, Vehicle } from '../types/vehicles.js';
8
- export type GlobalBusinessEntity = Opportunity | Vehicle | Organization | LeasingContract | DebtorsDossier;
9
- export type GlobalSearchEntity = SearchOpportunity | SearchVehicle | SearchOrganization | SearchLeasingContract | SearchDebtorsDossier;
7
+ export type GlobalBusinessEntity = Opportunity | Vehicle | Organization | LeasingContract;
8
+ export type GlobalSearchEntity = SearchOpportunity | SearchVehicle | SearchOrganization | SearchLeasingContract;
10
9
  export declare const getCustomerInformation: (org?: Organization, contact?: Contact) => {
11
10
  countryCode: string;
12
11
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"/","sources":["utils/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,OAAO,GACP,YAAY,GACZ,eAAe,GACf,cAAc,CAAC;AACnB,MAAM,MAAM,kBAAkB,GAC1B,iBAAiB,GACjB,aAAa,GACb,kBAAkB,GAClB,qBAAqB,GACrB,oBAAoB,CAAC;AAEzB,eAAO,MAAM,sBAAsB,SAAU,YAAY,YAAY,OAAO;;;;;;;;aAe3E,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE;KACpB,GAAG,IAAI,iBAAiB,CAAC,CAAC,EAAE;QAC3B,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,oBAAoB,CAAC;QACrD,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;QAClC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,CAAC;QACnC,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,CAAC;QACnD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;QACzC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChD;CAyEF,CAAC;AAUF,eAAO,MAAM,wBAAwB,qBACjB,iBAAiB,UAC3B,oBAAoB,KAC3B,MAAM,EAAkD,CAAC;AAE5D,eAAO,MAAM,8BAA8B,qBACvB,iBAAiB,UAC3B,kBAAkB,aAY3B,CAAC;AAEF,eAAO,MAAM,+BAA+B,qBACxB,iBAAiB,UAC3B,oBAAoB,WAC4C,CAAC;AAE3E,eAAO,MAAM,qCAAqC,qBAC9B,iBAAiB,UAC3B,kBAAkB,WAS3B,CAAC;AAEF,eAAO,MAAM,6BAA6B,qBACtB,iBAAiB,UAC3B,kBAAkB,yBAC2B,CAAC;AAExD,eAAO,MAAM,yBAAyB,qBAClB,iBAAiB,UAC3B,oBAAoB,WACoB,CAAC;AAEnD,eAAO,MAAM,+BAA+B,qBACxB,iBAAiB,gBACrB,kBAAkB,WAK/B,CAAC;AAEJ,eAAO,MAAM,wBAAwB,qBACjB,iBAAiB,UAC3B,oBAAoB,oCACqB,CAAC;AAEpD,eAAO,MAAM,8BAA8B,qBACvB,iBAAiB,gBACrB,kBAAkB,oCAK/B,CAAC"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"/","sources":["utils/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,eAAe,CAAC;AAC1F,MAAM,MAAM,kBAAkB,GAC1B,iBAAiB,GACjB,aAAa,GACb,kBAAkB,GAClB,qBAAqB,CAAC;AAE1B,eAAO,MAAM,sBAAsB,SAAU,YAAY,YAAY,OAAO;;;;;;;;aAe3E,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE;KACpB,GAAG,IAAI,iBAAiB,CAAC,CAAC,EAAE;QAC3B,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,oBAAoB,CAAC;QACrD,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;QAClC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,CAAC;QACnC,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,EAAE,CAAC;QACnD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;QACzC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChD;CAyEF,CAAC;AAUF,eAAO,MAAM,wBAAwB,qBACjB,iBAAiB,UAC3B,oBAAoB,KAC3B,MAAM,EAAkD,CAAC;AAE5D,eAAO,MAAM,8BAA8B,qBACvB,iBAAiB,UAC3B,kBAAkB,aAY3B,CAAC;AAEF,eAAO,MAAM,+BAA+B,qBACxB,iBAAiB,UAC3B,oBAAoB,WAC4C,CAAC;AAE3E,eAAO,MAAM,qCAAqC,qBAC9B,iBAAiB,UAC3B,kBAAkB,WAS3B,CAAC;AAEF,eAAO,MAAM,6BAA6B,qBACtB,iBAAiB,UAC3B,kBAAkB,yBAC2B,CAAC;AAExD,eAAO,MAAM,yBAAyB,qBAClB,iBAAiB,UAC3B,oBAAoB,WACoB,CAAC;AAEnD,eAAO,MAAM,+BAA+B,qBACxB,iBAAiB,gBACrB,kBAAkB,WAK/B,CAAC;AAEJ,eAAO,MAAM,wBAAwB,qBACjB,iBAAiB,UAC3B,oBAAoB,oCACqB,CAAC;AAEpD,eAAO,MAAM,8BAA8B,qBACvB,iBAAiB,gBACrB,kBAAkB,oCAK/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"/","sources":["utils/search.ts"],"names":[],"mappings":"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","sourcesContent":["import { joinWithSeparator } from '@bisondesk/commons-sdk/formatting';\nimport { BusinessEntityIds } from '../constants.js';\nimport { Contact, Organization, SearchOrganization } from '../types/crm.js';\nimport { DebtorsDossier, SearchDebtorsDossier } from '../types/leasing-debtors.js';\nimport { SearchLeasingContract } from '../types/leasing-search.js';\nimport { LeasingContract } from '../types/leasing.js';\nimport { Opportunity, SearchOpportunity } from '../types/opportunities.js';\nimport { SearchVehicle, Vehicle } from '../types/vehicles.js';\n\nexport type GlobalBusinessEntity =\n | Opportunity\n | Vehicle\n | Organization\n | LeasingContract\n | DebtorsDossier;\nexport type GlobalSearchEntity =\n | SearchOpportunity\n | SearchVehicle\n | SearchOrganization\n | SearchLeasingContract\n | SearchDebtorsDossier;\n\nexport const getCustomerInformation = (org?: Organization, contact?: Contact) => {\n if (org != null) {\n return {\n countryCode: org.countryCode,\n title: org.name,\n code: org.externalId,\n };\n }\n\n if (contact != null) {\n return {\n countryCode: contact.countryCode,\n title: [contact?.firstName, contact?.lastName].filter(Boolean).join(' '),\n };\n }\n};\n\nexport const mappings: {\n [key in BusinessEntityIds]?: {\n getMainEntity: (entity: any) => GlobalBusinessEntity;\n getTitle: (entity: any) => string;\n getTags: (entity: any) => string[];\n getTagsForSearchEntity?: (entity: any) => string[];\n getDescription?: (entity: any) => string;\n getMeta?: (entity: any) => Record<string, any>;\n };\n} = {\n [BusinessEntityIds.Opportunities]: {\n getMainEntity: (entity: SearchOpportunity) => entity.opportunity,\n getTitle: (opp: Opportunity) => opp.id,\n getDescription: (opp: SearchOpportunity) => {\n const customer = getCustomerInformation(opp.org, opp.contact);\n return joinWithSeparator(\n [customer?.code, customer?.title, opp.vehicle?.external.identification.stockNumber].filter(\n Boolean\n )\n );\n },\n getTags: (opp: Opportunity) => [opp.id],\n getTagsForSearchEntity: (opp: SearchOpportunity) => {\n const vehicleTags =\n opp.vehicle != null\n ? getTagsForBusinessEntity(BusinessEntityIds.Vehicles, opp.vehicle)\n : [];\n return [...vehicleTags, opp.opportunity.id];\n },\n getMeta: (opp: Opportunity) => ({\n status: opp.status,\n wonAt: opp.wonAt,\n lostAt: opp.lostAt,\n }),\n },\n [BusinessEntityIds.Vehicles]: {\n getMainEntity: (entity: SearchVehicle) => entity.vehicle,\n getTitle: (vehicle: Vehicle) => vehicle.internal.description.title,\n getTags: (vehicle: Vehicle) =>\n [\n // the order of the tags here is relevant for exact integration\n // see: packages/exact/src/service/purchase.ts\n vehicle.external.identification?.stockNumber,\n vehicle.internal.identification?.administrativeNumber,\n vehicle.external.identification?.vin,\n ].filter(Boolean) as string[],\n },\n [BusinessEntityIds.ExternalVehicleSale]: {\n getMainEntity: (entity: SearchVehicle) => entity.vehicle,\n getTitle: (vehicle: Vehicle) => vehicle.internal.description.title,\n getTags: (vehicle: Vehicle) =>\n [\n // the order of the tags here is relevant for exact integration\n // see: packages/exact/src/service/purchase.ts\n vehicle.external.identification?.stockNumber,\n vehicle.internal.identification?.administrativeNumber,\n vehicle.external.identification?.vin,\n ].filter(Boolean) as string[],\n },\n [BusinessEntityIds.Organizations]: {\n getMainEntity: (entity: SearchOrganization) => entity.org,\n getTitle: (org: Organization) => org.name,\n getTags: (org: Organization) =>\n [`${org.externalId}`, org.vatNumber].filter(Boolean) as string[],\n },\n [BusinessEntityIds.LeasingContracts]: {\n getMainEntity: (entity: SearchLeasingContract) => entity.contract,\n getTitle: (contract: LeasingContract) => contract.contractNumber ?? contract.id,\n getTags: (contract: LeasingContract) =>\n [contract.id, contract.contractNumber].filter(Boolean) as string[],\n },\n [BusinessEntityIds.FinanceDocuments]: {\n getMainEntity: (entity: any) => entity,\n getTitle: (entity: any) => entity.id,\n getTags: (entity: any) => [entity.id],\n },\n [BusinessEntityIds.AdministrativeDocuments]: {\n getMainEntity: (entity: any) => entity,\n getTitle: (entity: any) => entity.id,\n getTags: (entity: any) => [entity.id],\n },\n};\n\nconst getMapping = (businessEntityId: BusinessEntityIds) => {\n const mapping = mappings[businessEntityId];\n if (!mapping) {\n throw new Error(`Invalid business entity id ${businessEntityId}`);\n }\n return mapping;\n};\n\nexport const getTagsForBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalBusinessEntity\n): string[] => getMapping(businessEntityId).getTags(entity);\n\nexport const getTagsForSearchBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalSearchEntity\n) => {\n const tags = getMapping(businessEntityId).getTagsForSearchEntity?.(entity);\n\n if (tags) {\n return tags;\n }\n\n return getTagsForBusinessEntity(\n businessEntityId,\n getMainEntityFromSearchEntity(businessEntityId, entity)\n );\n};\n\nexport const getDescriptionForBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalBusinessEntity\n) => joinWithSeparator(getTagsForBusinessEntity(businessEntityId, entity));\n\nexport const getDescriptionForSearchBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalSearchEntity\n) => {\n return (\n getMapping(businessEntityId).getDescription?.(entity) ??\n getDescriptionForBusinessEntity(\n businessEntityId,\n getMainEntityFromSearchEntity(businessEntityId, entity)\n )\n );\n};\n\nexport const getMainEntityFromSearchEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalSearchEntity\n) => getMapping(businessEntityId).getMainEntity(entity);\n\nexport const getTitleForBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalBusinessEntity\n) => getMapping(businessEntityId).getTitle(entity);\n\nexport const getTitleForSearchBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n searchEntity: GlobalSearchEntity\n) =>\n getTitleForBusinessEntity(\n businessEntityId,\n getMainEntityFromSearchEntity(businessEntityId, searchEntity)\n );\n\nexport const getMetaForBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalBusinessEntity\n) => getMapping(businessEntityId).getMeta?.(entity);\n\nexport const getMetaForSearchBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n searchEntity: GlobalSearchEntity\n) =>\n getMetaForBusinessEntity(\n businessEntityId,\n getMainEntityFromSearchEntity(businessEntityId, searchEntity)\n );\n"]}
1
+ {"version":3,"file":"search.js","sourceRoot":"/","sources":["utils/search.ts"],"names":[],"mappings":"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","sourcesContent":["import { joinWithSeparator } from '@bisondesk/commons-sdk/formatting';\nimport { BusinessEntityIds } from '../constants.js';\nimport { Contact, Organization, SearchOrganization } from '../types/crm.js';\nimport { SearchLeasingContract } from '../types/leasing-search.js';\nimport { LeasingContract } from '../types/leasing.js';\nimport { Opportunity, SearchOpportunity } from '../types/opportunities.js';\nimport { SearchVehicle, Vehicle } from '../types/vehicles.js';\n\nexport type GlobalBusinessEntity = Opportunity | Vehicle | Organization | LeasingContract;\nexport type GlobalSearchEntity =\n | SearchOpportunity\n | SearchVehicle\n | SearchOrganization\n | SearchLeasingContract;\n\nexport const getCustomerInformation = (org?: Organization, contact?: Contact) => {\n if (org != null) {\n return {\n countryCode: org.countryCode,\n title: org.name,\n code: org.externalId,\n };\n }\n\n if (contact != null) {\n return {\n countryCode: contact.countryCode,\n title: [contact?.firstName, contact?.lastName].filter(Boolean).join(' '),\n };\n }\n};\n\nexport const mappings: {\n [key in BusinessEntityIds]?: {\n getMainEntity: (entity: any) => GlobalBusinessEntity;\n getTitle: (entity: any) => string;\n getTags: (entity: any) => string[];\n getTagsForSearchEntity?: (entity: any) => string[];\n getDescription?: (entity: any) => string;\n getMeta?: (entity: any) => Record<string, any>;\n };\n} = {\n [BusinessEntityIds.Opportunities]: {\n getMainEntity: (entity: SearchOpportunity) => entity.opportunity,\n getTitle: (opp: Opportunity) => opp.id,\n getDescription: (opp: SearchOpportunity) => {\n const customer = getCustomerInformation(opp.org, opp.contact);\n return joinWithSeparator(\n [customer?.code, customer?.title, opp.vehicle?.external.identification.stockNumber].filter(\n Boolean\n )\n );\n },\n getTags: (opp: Opportunity) => [opp.id],\n getTagsForSearchEntity: (opp: SearchOpportunity) => {\n const vehicleTags =\n opp.vehicle != null\n ? getTagsForBusinessEntity(BusinessEntityIds.Vehicles, opp.vehicle)\n : [];\n return [...vehicleTags, opp.opportunity.id];\n },\n getMeta: (opp: Opportunity) => ({\n status: opp.status,\n wonAt: opp.wonAt,\n lostAt: opp.lostAt,\n }),\n },\n [BusinessEntityIds.Vehicles]: {\n getMainEntity: (entity: SearchVehicle) => entity.vehicle,\n getTitle: (vehicle: Vehicle) => vehicle.internal.description.title,\n getTags: (vehicle: Vehicle) =>\n [\n // the order of the tags here is relevant for exact integration\n // see: packages/exact/src/service/purchase.ts\n vehicle.external.identification?.stockNumber,\n vehicle.internal.identification?.administrativeNumber,\n vehicle.external.identification?.vin,\n ].filter(Boolean) as string[],\n },\n [BusinessEntityIds.ExternalVehicleSale]: {\n getMainEntity: (entity: SearchVehicle) => entity.vehicle,\n getTitle: (vehicle: Vehicle) => vehicle.internal.description.title,\n getTags: (vehicle: Vehicle) =>\n [\n // the order of the tags here is relevant for exact integration\n // see: packages/exact/src/service/purchase.ts\n vehicle.external.identification?.stockNumber,\n vehicle.internal.identification?.administrativeNumber,\n vehicle.external.identification?.vin,\n ].filter(Boolean) as string[],\n },\n [BusinessEntityIds.Organizations]: {\n getMainEntity: (entity: SearchOrganization) => entity.org,\n getTitle: (org: Organization) => org.name,\n getTags: (org: Organization) =>\n [`${org.externalId}`, org.vatNumber].filter(Boolean) as string[],\n },\n [BusinessEntityIds.LeasingContracts]: {\n getMainEntity: (entity: SearchLeasingContract) => entity.contract,\n getTitle: (contract: LeasingContract) => contract.contractNumber ?? contract.id,\n getTags: (contract: LeasingContract) =>\n [contract.id, contract.contractNumber].filter(Boolean) as string[],\n },\n [BusinessEntityIds.FinanceDocuments]: {\n getMainEntity: (entity: any) => entity,\n getTitle: (entity: any) => entity.id,\n getTags: (entity: any) => [entity.id],\n },\n [BusinessEntityIds.AdministrativeDocuments]: {\n getMainEntity: (entity: any) => entity,\n getTitle: (entity: any) => entity.id,\n getTags: (entity: any) => [entity.id],\n },\n};\n\nconst getMapping = (businessEntityId: BusinessEntityIds) => {\n const mapping = mappings[businessEntityId];\n if (!mapping) {\n throw new Error(`Invalid business entity id ${businessEntityId}`);\n }\n return mapping;\n};\n\nexport const getTagsForBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalBusinessEntity\n): string[] => getMapping(businessEntityId).getTags(entity);\n\nexport const getTagsForSearchBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalSearchEntity\n) => {\n const tags = getMapping(businessEntityId).getTagsForSearchEntity?.(entity);\n\n if (tags) {\n return tags;\n }\n\n return getTagsForBusinessEntity(\n businessEntityId,\n getMainEntityFromSearchEntity(businessEntityId, entity)\n );\n};\n\nexport const getDescriptionForBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalBusinessEntity\n) => joinWithSeparator(getTagsForBusinessEntity(businessEntityId, entity));\n\nexport const getDescriptionForSearchBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalSearchEntity\n) => {\n return (\n getMapping(businessEntityId).getDescription?.(entity) ??\n getDescriptionForBusinessEntity(\n businessEntityId,\n getMainEntityFromSearchEntity(businessEntityId, entity)\n )\n );\n};\n\nexport const getMainEntityFromSearchEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalSearchEntity\n) => getMapping(businessEntityId).getMainEntity(entity);\n\nexport const getTitleForBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalBusinessEntity\n) => getMapping(businessEntityId).getTitle(entity);\n\nexport const getTitleForSearchBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n searchEntity: GlobalSearchEntity\n) =>\n getTitleForBusinessEntity(\n businessEntityId,\n getMainEntityFromSearchEntity(businessEntityId, searchEntity)\n );\n\nexport const getMetaForBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n entity: GlobalBusinessEntity\n) => getMapping(businessEntityId).getMeta?.(entity);\n\nexport const getMetaForSearchBusinessEntity = (\n businessEntityId: BusinessEntityIds,\n searchEntity: GlobalSearchEntity\n) =>\n getMetaForBusinessEntity(\n businessEntityId,\n getMainEntityFromSearchEntity(businessEntityId, searchEntity)\n );\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bisondesk/core-sdk",
3
- "version": "1.0.494",
3
+ "version": "1.0.495",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "scripts": {
package/src/constants.ts CHANGED
@@ -7,10 +7,10 @@ export { BusinessEntityIds } from '@bisondesk/commons-sdk/constants';
7
7
  //
8
8
  export const APP_LANGUAGES_PICKLIST_ID = 'appLanguages';
9
9
  export const CLIENT_LANGUAGES_PICKLIST_ID = 'clientLanguages';
10
+ export const CRM_CONTACT_TAGS_PICKLIST_ID = 'crmContactTags';
11
+ export const CRM_ORG_TAGS_PICKLIST_ID = 'crmOrganizationTags';
10
12
  export const TIMEZONES_PICKLIST_ID = 'timezones';
11
13
  export const COUNTRIES_PICKLIST_ID = 'countries';
12
- export const DEBTORS_DOSSIER_STATUS_PICKLIST_ID = 'debtorsDossierStatus';
13
- export const LEGAL_DOSSIER_STATUS_PICKLIST_ID = 'legalDossierStatus';
14
14
  export const VEHICLE_MAIN_FEATURES_PICKLIST_ID = 'vehicleMainFeatures';
15
15
  export const VEHICLE_STATE_FILTERS_PICKLIST_ID = 'vehicleStateFilters';
16
16
  export const VEHICLE_SEARCH_SALE_DEAL_STATUS_PICKLIST_ID = 'vehicleSearchSaleDealStatus';
@@ -6,7 +6,6 @@ export enum ActivityType {
6
6
  MEETING = 'meeting',
7
7
  EMAIL = 'email',
8
8
  CHAT = 'chat',
9
- SMS = 'sms',
10
9
  }
11
10
 
12
11
  export enum ActivityActions {
@@ -14,16 +13,15 @@ export enum ActivityActions {
14
13
  EDIT = 'edit',
15
14
  }
16
15
 
17
- export interface BaseActivity<Meta = ActivityV2Meta> {
16
+ type BaseActivity = {
18
17
  type: ActivityType;
19
18
  businessEntityId: BusinessEntityIds;
20
19
  recordId: string;
21
20
  description?: string;
22
21
  readonly?: boolean;
23
- meta?: Meta;
24
- }
22
+ };
25
23
 
26
- export type NewActivity<Meta = ActivityV2Meta> = BaseActivity<Meta> & {
24
+ export type NewActivity = BaseActivity & {
27
25
  id?: undefined;
28
26
  createdAt?: undefined;
29
27
  createdBy?: undefined;
@@ -32,7 +30,7 @@ export type NewActivity<Meta = ActivityV2Meta> = BaseActivity<Meta> & {
32
30
  activityAt?: string;
33
31
  };
34
32
 
35
- export type Activity<Meta = ActivityV2Meta> = BaseActivity<Meta> & {
33
+ export type Activity = BaseActivity & {
36
34
  id: string;
37
35
  createdAt: string;
38
36
  createdBy: string;
@@ -75,46 +73,3 @@ export type ActivityDeleteEvent = BaseActivityEvent & {
75
73
  data: undefined;
76
74
  previousData: Activity;
77
75
  };
78
-
79
- /************
80
- * ActivityV2Meta Types
81
- * These types are used to define the structure of the metadata for different activity types.
82
- ************/
83
-
84
- export type ActivityV2Meta =
85
- | EmailDebtorsDossierActivityPayload
86
- | CallDebtorsDossierActivityPayload
87
- | MeetingDebtorsDossierActivityPayload
88
- | ChatDebtorsDossierActivityPayload;
89
-
90
- export type EmailDebtorsDossierActivityPayload = {
91
- /* from: { email: string; name?: string; external?: boolean };
92
- to: { email: string; name?: string }[];
93
- cc?: { email: string; name?: string }[];
94
- bcc?: { email: string; name?: string }[];
95
- subject?: string;
96
- attachments?: AttachmentValue[]; */
97
- };
98
-
99
- export type CallDebtorsDossierActivityPayload = {
100
- /* from: { phone: string; name?: string; external?: boolean };
101
- to: string;
102
- duration?: number;
103
- recordingUrl?: string;
104
- transcription?: string; */
105
- };
106
-
107
- export type MeetingDebtorsDossierActivityPayload = {
108
- /* organizer: string;
109
- participants: string[];
110
- location?: string;
111
- startTime: string;
112
- endTime: string; */
113
- };
114
-
115
- export type ChatDebtorsDossierActivityPayload = {
116
- /* from: { phone: string; name?: string; external?: boolean };
117
- to: string[]; */
118
- message: string;
119
- platform: 'whatsapp' | 'sms';
120
- };
@@ -10,6 +10,8 @@ export type ComparableSpecRange = {
10
10
 
11
11
  export interface ComparableSpecs {
12
12
  id: string;
13
+ createdAt: string;
14
+ createdBy: string;
13
15
  modifiedAt: string;
14
16
  modifiedBy: string;
15
17
 
package/src/types/crm.ts CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  SearchPermissions,
6
6
  } from '@bisondesk/commons-sdk/types';
7
7
  import { PublicSearchDefinition } from './definitions.js';
8
+ import { Interest } from './interests.js';
8
9
  import { BaseEvent } from './internal-events.js';
9
10
  import { ReferenceData } from './utils.js';
10
11
 
@@ -109,6 +110,8 @@ type BaseOrganization = {
109
110
  trustworthy?: boolean;
110
111
  // meta
111
112
  slbPartner?: boolean;
113
+
114
+ tags?: string[]; // custom tags for the organization
112
115
  };
113
116
 
114
117
  export type NewOrganization = BaseOrganization & {
@@ -165,6 +168,8 @@ export type SearchOrganization = {
165
168
  lastActivityAt: string | undefined; // last activity at this organization
166
169
  lastActivityBy: string | undefined; // user that did the last activity at this organization
167
170
  engagementTypes: OrgEngagementType[] | undefined; // types of engagements this organization has in the tenant
171
+
172
+ accountManagers: string[]; // dynamically determined account managers for this organization
168
173
  };
169
174
  };
170
175
 
@@ -177,6 +182,10 @@ export type InputSearchOrganization = SearchOrganization & {
177
182
  export type SearchContact = {
178
183
  contact: Contact;
179
184
  org?: Organization;
185
+ interests?: Interest[];
186
+ custom: {
187
+ accountManagers: string[]; // dynamically determined account managers for this contact
188
+ };
180
189
  };
181
190
 
182
191
  export type InputSearchContact = SearchContact & {
@@ -229,6 +238,8 @@ type BaseContact = {
229
238
  disabledAt?: string;
230
239
  disabledBy?: string;
231
240
  disabledReason?: string;
241
+
242
+ tags?: string[]; // custom tags for the contact
232
243
  };
233
244
 
234
245
  export type NewContact = BaseContact & {
@@ -23,6 +23,14 @@ export interface OpportunityInterest extends Interest {
23
23
  organizationId?: string;
24
24
  }
25
25
 
26
+ export interface ContactInterest extends Interest {
27
+ contactId: string;
28
+ }
29
+
30
+ export interface OrganizationInterest extends Interest {
31
+ organizationId: string;
32
+ }
33
+
26
34
  export interface HdmsInterest extends Interest {
27
35
  hdmsSaleId: string;
28
36
  }
@@ -30,6 +38,12 @@ export interface HdmsInterest extends Interest {
30
38
  export const isOpportunityInterest = (interest: Interest): interest is OpportunityInterest =>
31
39
  'opportunityId' in interest;
32
40
 
41
+ export const isContactInterest = (interest: Interest): interest is ContactInterest =>
42
+ 'contactId' in interest && !isOpportunityInterest(interest);
43
+
44
+ export const isOrganizationInterest = (interest: Interest): interest is OrganizationInterest =>
45
+ 'organizationId' in interest && !isOpportunityInterest(interest) && !isContactInterest(interest);
46
+
33
47
  export type LeadUpdate =
34
48
  | {
35
49
  dismissed: true;
@@ -12,7 +12,6 @@ export enum EventTypes {
12
12
  ACTIVITY = 'activities',
13
13
  EXTERNAL_VEHICLE_SALE = 'external-vehicle-sales',
14
14
  AMORTIZATION_DOC = 'amortization-docs',
15
- DEBTOR_DOSSIER = 'debtor-dossiers',
16
15
  }
17
16
 
18
17
  export enum InternalNotificationChannels {
@@ -12,7 +12,6 @@ export type JourneyTaskConfig<T> = {
12
12
  priority?: TaskPriority;
13
13
  tag?: string;
14
14
  description?: MultiLangValue;
15
- dueDateInDays?: number; //now + dueDateInDays days
16
15
  completionCriteria: RulesLogic<AdditionalOperation>;
17
16
  prerequisiteTaskIds: string[];
18
17
  requiredAtStatus?: T; //Required at a given status or higher
@@ -27,9 +26,3 @@ export type JourneyConfig<T> = {
27
26
  createdBy: string;
28
27
  disabled: boolean;
29
28
  };
30
-
31
- export type JourneyConfigCustomTasks<T> = Pick<JourneyConfig<T>, 'businessEntityId' | 'tasks'> & {
32
- recordId: string;
33
- createdAt: string;
34
- createdBy: string;
35
- };