@bisondesk/core-sdk 1.0.635 → 1.0.636

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 (89) hide show
  1. package/lib/types/activities.d.ts +5 -3
  2. package/lib/types/activities.d.ts.map +1 -1
  3. package/lib/types/activities.js.map +1 -1
  4. package/lib/types/reports-sales.d.ts +8 -0
  5. package/lib/types/reports-sales.d.ts.map +1 -1
  6. package/lib/types/reports-sales.js.map +1 -1
  7. package/lib/types/user-performance.d.ts +0 -1
  8. package/lib/types/user-performance.d.ts.map +1 -1
  9. package/lib/types/user-performance.js.map +1 -1
  10. package/lib/types/whatsapp.d.ts +37 -0
  11. package/lib/types/whatsapp.d.ts.map +1 -0
  12. package/lib/types/whatsapp.js +2 -0
  13. package/lib/types/whatsapp.js.map +1 -0
  14. package/package.json +1 -1
  15. package/src/types/activities.js +13 -0
  16. package/src/types/activities.js.map +1 -0
  17. package/src/types/activities.ts +6 -4
  18. package/src/types/comparables.js +2 -0
  19. package/src/types/comparables.js.map +1 -0
  20. package/src/types/crm.js +58 -0
  21. package/src/types/crm.js.map +1 -0
  22. package/src/types/dashboard.js +2 -0
  23. package/src/types/dashboard.js.map +1 -0
  24. package/src/types/definitions.js +2 -0
  25. package/src/types/definitions.js.map +1 -0
  26. package/src/types/fields.js +2 -0
  27. package/src/types/fields.js.map +1 -0
  28. package/src/types/insights.js +2 -0
  29. package/src/types/insights.js.map +1 -0
  30. package/src/types/interests.js +6 -0
  31. package/src/types/interests.js.map +1 -0
  32. package/src/types/internal-events.js +18 -0
  33. package/src/types/internal-events.js.map +1 -0
  34. package/src/types/internet-opportunities.js +2 -0
  35. package/src/types/internet-opportunities.js.map +1 -0
  36. package/src/types/internet-vehicles.js +2 -0
  37. package/src/types/internet-vehicles.js.map +1 -0
  38. package/src/types/leasing-administration.js +2 -0
  39. package/src/types/leasing-administration.js.map +1 -0
  40. package/src/types/leasing-debtors.js +2 -0
  41. package/src/types/leasing-debtors.js.map +1 -0
  42. package/src/types/leasing-search.js +2 -0
  43. package/src/types/leasing-search.js.map +1 -0
  44. package/src/types/leasing-settings.js +7 -0
  45. package/src/types/leasing-settings.js.map +1 -0
  46. package/src/types/leasing.js +38 -0
  47. package/src/types/leasing.js.map +1 -0
  48. package/src/types/marketing.js +35 -0
  49. package/src/types/marketing.js.map +1 -0
  50. package/src/types/offers.js +56 -0
  51. package/src/types/opportunities.js +107 -0
  52. package/src/types/opportunities.js.map +1 -0
  53. package/src/types/payments.js +7 -0
  54. package/src/types/picklists.js +2 -0
  55. package/src/types/picklists.js.map +1 -0
  56. package/src/types/quotes.js +42 -0
  57. package/src/types/recently-viewed.js +2 -0
  58. package/src/types/recently-viewed.js.map +1 -0
  59. package/src/types/reports-sales.ts +34 -7
  60. package/src/types/reservations.js +5 -0
  61. package/src/types/reservations.js.map +1 -0
  62. package/src/types/roi-ratings.js +5 -0
  63. package/src/types/roi-ratings.js.map +1 -0
  64. package/src/types/saved-filters.js +9 -0
  65. package/src/types/saved-filters.js.map +1 -0
  66. package/src/types/search.js +2 -0
  67. package/src/types/search.js.map +1 -0
  68. package/src/types/settings.js +2 -0
  69. package/src/types/settings.js.map +1 -0
  70. package/src/types/templates.js +2 -0
  71. package/src/types/templates.js.map +1 -0
  72. package/src/types/tenants.js +21 -0
  73. package/src/types/tenants.js.map +1 -0
  74. package/src/types/user-performance.js +7 -0
  75. package/src/types/user-performance.js.map +1 -0
  76. package/src/types/user-performance.ts +0 -1
  77. package/src/types/utils.js +2 -0
  78. package/src/types/validation.js +2 -0
  79. package/src/types/validation.js.map +1 -0
  80. package/src/types/vehicle-sales.js +6 -0
  81. package/src/types/vehicle-sales.js.map +1 -0
  82. package/src/types/vehicles.js +98 -0
  83. package/src/types/vehicles.js.map +1 -0
  84. package/src/types/whatsapp.ts +49 -0
  85. package/src/utils/leasing.js +6 -0
  86. package/src/utils/leasing.js.map +1 -0
  87. package/src/utils/opportunities.js +48 -0
  88. package/src/utils/opportunities.js.map +1 -0
  89. package/tsconfig.tsbuildinfo +1 -1
@@ -71,16 +71,18 @@ export type ActivityDeleteEvent = BaseActivityEvent & {
71
71
  data: undefined;
72
72
  previousData: Activity;
73
73
  };
74
- export type ActivityV2Meta = EmailDebtorsDossierActivityPayload | CallActivityPayload | MeetingDebtorsDossierActivityPayload | ChatDebtorsDossierActivityPayload;
74
+ export type ActivityV2Meta = EmailDebtorsDossierActivityPayload | CallActivityPayload | MeetingActivityPayload | ChatActivityPayload;
75
75
  export type EmailDebtorsDossierActivityPayload = {};
76
76
  export type CallActivityPayload = {
77
77
  didNotAnswer: boolean;
78
78
  durationSeconds?: number;
79
79
  };
80
- export type MeetingDebtorsDossierActivityPayload = {};
81
- export type ChatDebtorsDossierActivityPayload = {
80
+ export type MeetingActivityPayload = {};
81
+ export type ChatActivityPayload = {
82
82
  message: string;
83
83
  platform: 'whatsapp' | 'sms';
84
+ templateName?: string;
85
+ language?: string;
84
86
  };
85
87
  export {};
86
88
  //# sourceMappingURL=activities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"activities.d.ts","sourceRoot":"/","sources":["types/activities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activities.d.ts","sourceRoot":"/","sources":["types/activities.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"activities.js","sourceRoot":"/","sources":["types/activities.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,mCAAmB,CAAA;IACnB,+BAAe,CAAA;IACf,6BAAa,CAAA;IACb,2BAAW,CAAA;AACb,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,gCAAa,CAAA;AACf,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B","sourcesContent":["import { BusinessEntityIds } from '../constants.js';\nimport { BaseEvent } from './internal-events.js';\n\nexport enum ActivityType {\n CALL = 'call',\n MEETING = 'meeting',\n EMAIL = 'email',\n CHAT = 'chat',\n SMS = 'sms',\n}\n\nexport enum ActivityActions {\n DELETE = 'delete',\n EDIT = 'edit',\n}\n\nexport type ActivityContact = {\n id?: string;\n phoneNumber?: string;\n email?: string;\n};\n\nexport interface BaseActivity<Meta = ActivityV2Meta> {\n type: ActivityType;\n businessEntityId: BusinessEntityIds;\n recordId: string;\n organizationId?: string;\n description?: string;\n readonly?: boolean;\n meta?: Meta;\n // The people called/emailed/etc in this activity.\n contacts?: ActivityContact[];\n}\n\nexport type NewActivity<Meta = ActivityV2Meta> = BaseActivity<Meta> & {\n id?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n modifiedAt?: undefined;\n modifiedBy?: undefined;\n activityAt?: string;\n};\n\nexport type Activity<Meta = ActivityV2Meta> = BaseActivity<Meta> & {\n id: string;\n createdAt: string;\n createdBy: string;\n modifiedAt: string;\n modifiedBy: string;\n activityAt: string;\n};\n\nexport type ActivityUpdate = {\n description?: string;\n type?: ActivityType;\n activityAt?: string;\n contacts?: ActivityContact[];\n};\n\nexport type ActivityEvent = BaseEvent &\n (ActivityCreateEvent | ActivityUpdateEvent | ActivityDeleteEvent);\n\ntype BaseActivityEvent = {\n actionAt: string;\n userId: string;\n tenantId: string;\n businessEntityId: BusinessEntityIds;\n recordId: string;\n};\n\nexport type ActivityCreateEvent = BaseActivityEvent & {\n action: 'create';\n data: Activity;\n previousData?: undefined;\n};\n\nexport type ActivityUpdateEvent = BaseActivityEvent & {\n action: 'update';\n data: Activity;\n previousData: Activity;\n};\n\nexport type ActivityDeleteEvent = BaseActivityEvent & {\n action: 'delete';\n data: undefined;\n previousData: Activity;\n};\n\n/************\n * ActivityV2Meta Types\n * These types are used to define the structure of the metadata for different activity types.\n ************/\n\nexport type ActivityV2Meta =\n | EmailDebtorsDossierActivityPayload\n | CallActivityPayload\n | MeetingDebtorsDossierActivityPayload\n | ChatDebtorsDossierActivityPayload;\n\nexport type EmailDebtorsDossierActivityPayload = {\n /* from: { email: string; name?: string; external?: boolean };\n to: { email: string; name?: string }[];\n cc?: { email: string; name?: string }[];\n bcc?: { email: string; name?: string }[];\n subject?: string;\n attachments?: AttachmentValue[]; */\n};\n\nexport type CallActivityPayload = {\n didNotAnswer: boolean;\n durationSeconds?: number;\n /* from: { phone: string; name?: string; external?: boolean };\n to: string;\n recordingUrl?: string;\n transcription?: string; */\n};\n\nexport type MeetingDebtorsDossierActivityPayload = {\n /* organizer: string;\n participants: string[];\n location?: string;\n startTime: string;\n endTime: string; */\n};\n\nexport type ChatDebtorsDossierActivityPayload = {\n /* from: { phone: string; name?: string; external?: boolean };\n to: string[]; */\n message: string;\n platform: 'whatsapp' | 'sms';\n};\n"]}
1
+ {"version":3,"file":"activities.js","sourceRoot":"/","sources":["types/activities.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,mCAAmB,CAAA;IACnB,+BAAe,CAAA;IACf,6BAAa,CAAA;IACb,2BAAW,CAAA;AACb,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,gCAAa,CAAA;AACf,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B","sourcesContent":["import { BusinessEntityIds } from '../constants.js';\nimport { BaseEvent } from './internal-events.js';\n\nexport enum ActivityType {\n CALL = 'call',\n MEETING = 'meeting',\n EMAIL = 'email',\n CHAT = 'chat',\n SMS = 'sms',\n}\n\nexport enum ActivityActions {\n DELETE = 'delete',\n EDIT = 'edit',\n}\n\nexport type ActivityContact = {\n id?: string;\n phoneNumber?: string;\n email?: string;\n};\n\nexport interface BaseActivity<Meta = ActivityV2Meta> {\n type: ActivityType;\n businessEntityId: BusinessEntityIds;\n recordId: string;\n organizationId?: string;\n description?: string;\n readonly?: boolean;\n meta?: Meta;\n // The people called/emailed/etc in this activity.\n contacts?: ActivityContact[];\n}\n\nexport type NewActivity<Meta = ActivityV2Meta> = BaseActivity<Meta> & {\n id?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n modifiedAt?: undefined;\n modifiedBy?: undefined;\n activityAt?: string;\n};\n\nexport type Activity<Meta = ActivityV2Meta> = BaseActivity<Meta> & {\n id: string;\n createdAt: string;\n createdBy: string;\n modifiedAt: string;\n modifiedBy: string;\n activityAt: string;\n};\n\nexport type ActivityUpdate = {\n description?: string;\n type?: ActivityType;\n activityAt?: string;\n contacts?: ActivityContact[];\n};\n\nexport type ActivityEvent = BaseEvent &\n (ActivityCreateEvent | ActivityUpdateEvent | ActivityDeleteEvent);\n\ntype BaseActivityEvent = {\n actionAt: string;\n userId: string;\n tenantId: string;\n businessEntityId: BusinessEntityIds;\n recordId: string;\n};\n\nexport type ActivityCreateEvent = BaseActivityEvent & {\n action: 'create';\n data: Activity;\n previousData?: undefined;\n};\n\nexport type ActivityUpdateEvent = BaseActivityEvent & {\n action: 'update';\n data: Activity;\n previousData: Activity;\n};\n\nexport type ActivityDeleteEvent = BaseActivityEvent & {\n action: 'delete';\n data: undefined;\n previousData: Activity;\n};\n\n/************\n * ActivityV2Meta Types\n * These types are used to define the structure of the metadata for different activity types.\n ************/\n\nexport type ActivityV2Meta =\n | EmailDebtorsDossierActivityPayload\n | CallActivityPayload\n | MeetingActivityPayload\n | ChatActivityPayload;\n\nexport type EmailDebtorsDossierActivityPayload = {\n /* from: { email: string; name?: string; external?: boolean };\n to: { email: string; name?: string }[];\n cc?: { email: string; name?: string }[];\n bcc?: { email: string; name?: string }[];\n subject?: string;\n attachments?: AttachmentValue[]; */\n};\n\nexport type CallActivityPayload = {\n didNotAnswer: boolean;\n durationSeconds?: number;\n /* from: { phone: string; name?: string; external?: boolean };\n to: string;\n recordingUrl?: string;\n transcription?: string; */\n};\n\nexport type MeetingActivityPayload = {\n /* organizer: string;\n participants: string[];\n location?: string;\n startTime: string;\n endTime: string; */\n};\n\nexport type ChatActivityPayload = {\n /* from: { phone: string; name?: string; external?: boolean };\n to: string[]; */\n message: string;\n platform: 'whatsapp' | 'sms';\n templateName?: string;\n language?: string;\n};\n"]}
@@ -58,11 +58,18 @@ export type SalesReportHistogramBucket = {
58
58
  month: string;
59
59
  count: number;
60
60
  };
61
+ export type SalesReportProjection = {
62
+ month: string;
63
+ salesPerBusinessDay: number;
64
+ businessDaysLeft: number;
65
+ projectedRemaining: number;
66
+ };
61
67
  export declare const STOCK_AGE_BANDS: readonly ['0-30', '31-90', '91-180', '180+'];
62
68
  export type StockAgeBand = (typeof STOCK_AGE_BANDS)[number];
63
69
  export type StockAgePoint = {
64
70
  date: string;
65
71
  counts: Record<StockAgeBand, number>;
72
+ purchaseCosts: Record<StockAgeBand, number>;
66
73
  };
67
74
  export type SalesReportResponse = {
68
75
  period: {
@@ -90,6 +97,7 @@ export type SalesReportResponse = {
90
97
  returning: TenureBucket[];
91
98
  conglomerate: SalesReportConglomerate;
92
99
  histogram: SalesReportHistogramBucket[];
100
+ projection: SalesReportProjection;
93
101
  stockAge: StockAgePoint[];
94
102
  concentration: number | null;
95
103
  };
@@ -1 +1 @@
1
- {"version":3,"file":"reports-sales.d.ts","sourceRoot":"/","sources":["types/reports-sales.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reports-sales.d.ts","sourceRoot":"/","sources":["types/reports-sales.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reports-sales.js","sourceRoot":"/","sources":["types/reports-sales.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,WAAW;IACX,KAAK;IACL,KAAK;IACL,UAAU;IACV,KAAK;CACG,CAAC;AAIX,MAAM,CAAC,MAAM,oBAAoB,GAAmB,KAAK,CAAC;AA+F1D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC","sourcesContent":["/**\n * Sales report — the payload for the `Reports → Sales` tab. Sales-side metrics\n * are computed from the per-tenant `opportunities` OpenSearch index, keyed on\n * `opportunity.reviewedAt` (the moment an opportunity ENTERS Preparation — our\n * \"sale\" event; `preparedAt` is when it leaves Preparation into Delivery). The\n * buyer ranking comes from the vehicles index, keyed on `purchase.purchaseAgreedAt`.\n *\n * The API returns raw numbers only; the client formats (€, %, pp, \"younger\") and\n * colors the deltas.\n */\n\n/**\n * Period presets driving every metric except the fixed 18-month histogram, in\n * selector order. Single source of truth — `SalesPeriodKey` is derived from it.\n * `mtd`/`ytd` are to-date ranges (start of month/year → now); `lastMonth`/`lastYear`\n * are the previous complete calendar month/year.\n */\nexport const SALES_PERIOD_KEYS = [\n '30d',\n '45d',\n '60d',\n '90d',\n 'lastMonth',\n 'mtd',\n 'ytd',\n 'lastYear',\n '12m',\n] as const;\n\nexport type SalesPeriodKey = (typeof SALES_PERIOD_KEYS)[number];\n\nexport const DEFAULT_SALES_PERIOD: SalesPeriodKey = 'mtd';\n\nexport type SalesReportRequest = { period: SalesPeriodKey };\n\n/**\n * A metric for the selected window with its year-over-year counterpart.\n * - `value`: current window (null when undefined, e.g. no data / no median).\n * - `prev`: same metric in the window shifted back exactly one year.\n * - `pct`: fractional change `(value - prev) / prev` (null when prev is 0 or\n * either side is undefined). The client renders/colors the delta.\n */\nexport type YoyMetric = { value: number | null; prev: number | null; pct: number | null };\n\n/** Tenure buckets for returning-customer analysis (share of buyers in the window). */\nexport type TenureBucketKey = '2y' | '1-2y' | '<1y' | 'new';\n\nexport type TenureBucket = {\n bucket: TenureBucketKey;\n /** Share of buyers in this bucket, 0–100. */\n sharePct: number;\n /** Year-over-year change in this share, as a fractional relative change (null when no prior data). */\n yoyPct: number | null;\n};\n\nexport type SalesReportCountry = {\n /** ISO country code (lowercase) from `org.countryCode`. */\n code: string;\n units: number;\n yoyPct: number | null;\n};\n\nexport type SalesReportSalesperson = {\n /** User id from `opportunity.accountManager`; the client resolves name + avatar. */\n id: string;\n units: number;\n yoyPct: number | null;\n};\n\nexport type SalesReportBuyer = {\n /** User id from `purchase.purchasedBy`; the client resolves name + avatar. */\n id: string;\n units: number;\n yoyPct: number | null;\n};\n\nexport type SalesReportMake = {\n /** Vehicle make name from `vehicle.external.general.make` (stored verbatim, e.g. \"DAF\"). */\n make: string;\n units: number;\n yoyPct: number | null;\n};\n\n/** A ranked organization row for the top-clients / top-suppliers cards. */\nexport type SalesReportTopOrg = {\n /** Organization id (`org.id` for clients; `purchase.organizationId` for suppliers). */\n id: string;\n /** Organization name (resolved server-side); falls back to the id when missing. */\n name: string;\n /** The org's ISO country code (lowercase); null when not recorded. */\n countryCode: string | null;\n units: number;\n yoyPct: number | null;\n};\n\n/** A conglomerate-flagged organization (there is no group/parent model — each org stands alone). */\nexport type SalesReportConglomerateOrg = {\n /** `org.id`. */\n id: string;\n /** `org.name` (resolved server-side); falls back to the id when missing. */\n name: string;\n units: number;\n yoyPct: number | null;\n};\n\nexport type SalesReportConglomerate = {\n /** Share of units going to conglomerate-flagged customers, 0–100 (null when no sales). */\n sharePct: number | null;\n /** Year-over-year change in that share, as a fractional relative change (null when no prior data). */\n yoyPct: number | null;\n /** The conglomerate share in the year-ago window, 0–100. */\n lastYearPct: number | null;\n /** Top conglomerate-flagged organizations by units in the current window. */\n orgs: SalesReportConglomerateOrg[];\n};\n\nexport type SalesReportHistogramBucket = {\n /** Calendar month, `YYYY-MM`. */\n month: string;\n count: number;\n};\n\n/**\n * Age-of-stock bands, in days of capital tied up. Cut points at 30 / 90 / 180 days,\n * upper bound inclusive; the last band is open-ended, so `180+` means \"181 and over\".\n */\nexport const STOCK_AGE_BANDS = ['0-30', '31-90', '91-180', '180+'] as const;\n\nexport type StockAgeBand = (typeof STOCK_AGE_BANDS)[number];\n\n/**\n * One day on the stock-age chart, measured by capital tied up in inventory. A vehicle\n * counts on `date` when the supplier was fully paid on or before that day and it had not\n * been sold yet; its age is `date − supplierFullyPaidAt` in days. Used vehicles only.\n */\nexport type StockAgePoint = {\n /** Snapshot day, `YYYY-MM-DD` (UTC). */\n date: string;\n /** In-stock vehicle count per age band on that day. */\n counts: Record<StockAgeBand, number>;\n};\n\nexport type SalesReportResponse = {\n period: {\n key: SalesPeriodKey;\n /** Current window, half-open `[start, end)` (ISO strings). */\n start: string;\n end: string;\n /** Number of days in the window (the `salesPerDay` denominator). */\n days: number;\n /** Year-ago window `[yoyStart, yoyEnd)`. */\n yoyStart: string;\n yoyEnd: string;\n };\n /** All-types overview KPIs. `medianAge` is in years (a decrease is good — younger stock). */\n overview: {\n salesPerDay: YoyMetric;\n salesTotal: YoyMetric;\n medianRoi: YoyMetric;\n medianPrice: YoyMetric;\n medianAge: YoyMetric;\n uniqueCustomers: YoyMetric;\n };\n /** Top countries by units in the current window. */\n countries: SalesReportCountry[];\n /** Top vehicle makes by units in the current window (the client slices to its top N). */\n makes: SalesReportMake[];\n /** All sales people with units in either window (capped; the client list scrolls). */\n salespeople: SalesReportSalesperson[];\n /** All purchasers with vehicles bought in the current window (capped; the client list scrolls). */\n buyers: SalesReportBuyer[];\n /** Top client organizations by units bought from us in the current window. */\n topClients: SalesReportTopOrg[];\n /** Top supplier organizations by used vehicles purchased from them in the current window. */\n topSuppliers: SalesReportTopOrg[];\n /** Returning-customer tenure shares (4 buckets). */\n returning: TenureBucket[];\n conglomerate: SalesReportConglomerate;\n /** Fixed last-18-calendar-months histogram of opps into Preparation (period-independent). */\n histogram: SalesReportHistogramBucket[];\n /**\n * Stock-age evolution measured as capital tied up in inventory: one daily snapshot of\n * vehicles by days from supplier-fully-paid to sold (used vehicles). Fixed to the last\n * 6 months, period-independent.\n */\n stockAge: StockAgePoint[];\n /**\n * Customer concentration: the 10 largest customers' share of units in the window, as a\n * fraction (0–1); null when there are no sales. A risk signal — over-reliance on a few\n * buyers.\n */\n concentration: number | null;\n};\n"]}
1
+ {"version":3,"file":"reports-sales.js","sourceRoot":"/","sources":["types/reports-sales.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,WAAW;IACX,KAAK;IACL,KAAK;IACL,UAAU;IACV,KAAK;CACG,CAAC;AAIX,MAAM,CAAC,MAAM,oBAAoB,GAAmB,KAAK,CAAC;AAiH1D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC","sourcesContent":["/**\n * Sales report — the payload for the `Reports → Sales` tab. Sales-side metrics\n * are computed from the per-tenant `opportunities` OpenSearch index, keyed on\n * `opportunity.reviewedAt` (the moment an opportunity ENTERS Preparation — our\n * \"sale\" event; `preparedAt` is when it leaves Preparation into Delivery). The\n * buyer ranking comes from the vehicles index, keyed on `purchase.purchaseAgreedAt`.\n *\n * The API returns raw numbers only; the client formats (€, %, pp, \"younger\") and\n * colors the deltas.\n */\n\n/**\n * Period presets driving every metric except the fixed 18-month histogram, in\n * selector order. Single source of truth — `SalesPeriodKey` is derived from it.\n * `mtd`/`ytd` are to-date ranges (start of month/year → now); `lastMonth`/`lastYear`\n * are the previous complete calendar month/year.\n */\nexport const SALES_PERIOD_KEYS = [\n '30d',\n '45d',\n '60d',\n '90d',\n 'lastMonth',\n 'mtd',\n 'ytd',\n 'lastYear',\n '12m',\n] as const;\n\nexport type SalesPeriodKey = (typeof SALES_PERIOD_KEYS)[number];\n\nexport const DEFAULT_SALES_PERIOD: SalesPeriodKey = 'mtd';\n\nexport type SalesReportRequest = { period: SalesPeriodKey };\n\n/**\n * A metric for the selected window with its year-over-year counterpart.\n * - `value`: current window (null when undefined, e.g. no data / no median).\n * - `prev`: same metric in the window shifted back exactly one year.\n * - `pct`: fractional change `(value - prev) / prev` (null when prev is 0 or\n * either side is undefined). The client renders/colors the delta.\n */\nexport type YoyMetric = { value: number | null; prev: number | null; pct: number | null };\n\n/** Tenure buckets for returning-customer analysis (share of buyers in the window). */\nexport type TenureBucketKey = '2y' | '1-2y' | '<1y' | 'new';\n\nexport type TenureBucket = {\n bucket: TenureBucketKey;\n /** Share of buyers in this bucket, 0–100. */\n sharePct: number;\n /** Year-over-year change in this share, as a fractional relative change (null when no prior data). */\n yoyPct: number | null;\n};\n\nexport type SalesReportCountry = {\n /** ISO country code (lowercase) from `org.countryCode`. */\n code: string;\n units: number;\n yoyPct: number | null;\n};\n\nexport type SalesReportSalesperson = {\n /** User id from `opportunity.accountManager`; the client resolves name + avatar. */\n id: string;\n units: number;\n yoyPct: number | null;\n};\n\nexport type SalesReportBuyer = {\n /** User id from `purchase.purchasedBy`; the client resolves name + avatar. */\n id: string;\n units: number;\n yoyPct: number | null;\n};\n\nexport type SalesReportMake = {\n /** Vehicle make name from `vehicle.external.general.make` (stored verbatim, e.g. \"DAF\"). */\n make: string;\n units: number;\n yoyPct: number | null;\n};\n\n/** A ranked organization row for the top-clients / top-suppliers cards. */\nexport type SalesReportTopOrg = {\n /** Organization id (`org.id` for clients; `purchase.organizationId` for suppliers). */\n id: string;\n /** Organization name (resolved server-side); falls back to the id when missing. */\n name: string;\n /** The org's ISO country code (lowercase); null when not recorded. */\n countryCode: string | null;\n units: number;\n yoyPct: number | null;\n};\n\n/** A conglomerate-flagged organization (there is no group/parent model — each org stands alone). */\nexport type SalesReportConglomerateOrg = {\n /** `org.id`. */\n id: string;\n /** `org.name` (resolved server-side); falls back to the id when missing. */\n name: string;\n units: number;\n yoyPct: number | null;\n};\n\nexport type SalesReportConglomerate = {\n /** Share of units going to conglomerate-flagged customers, 0–100 (null when no sales). */\n sharePct: number | null;\n /** Year-over-year change in that share, as a fractional relative change (null when no prior data). */\n yoyPct: number | null;\n /** The conglomerate share in the year-ago window, 0–100. */\n lastYearPct: number | null;\n /** Top conglomerate-flagged organizations by units in the current window. */\n orgs: SalesReportConglomerateOrg[];\n};\n\nexport type SalesReportHistogramBucket = {\n /** Calendar month, `YYYY-MM`. */\n month: string;\n count: number;\n};\n\n/**\n * Current-month sales projection for the histogram's last bucket: the average sales\n * per business day over the last 5 business days, extended over the business days\n * left in the month. Business days are UTC weekdays (Mon–Fri) — no holiday calendar.\n * Today is excluded on both sides: it is still filling up (its sales land in the\n * month's actual count as they happen).\n */\nexport type SalesReportProjection = {\n /** The projected month, `YYYY-MM` — always the histogram's last bucket. */\n month: string;\n /** Average sales per business day over the last 5 business days. */\n salesPerBusinessDay: number;\n /** Business days (Mon–Fri, UTC) left in the month after today. */\n businessDaysLeft: number;\n /** Expected further sales this month: `salesPerBusinessDay × businessDaysLeft` (unrounded). */\n projectedRemaining: number;\n};\n\n/**\n * Age-of-stock bands, in days of capital tied up. Cut points at 30 / 90 / 180 days,\n * upper bound inclusive; the last band is open-ended, so `180+` means \"181 and over\".\n */\nexport const STOCK_AGE_BANDS = ['0-30', '31-90', '91-180', '180+'] as const;\n\nexport type StockAgeBand = (typeof STOCK_AGE_BANDS)[number];\n\n/**\n * One monthly snapshot on the stock-age charts, measured by capital tied up in\n * inventory. A vehicle counts on `date` when the supplier was fully paid on or before\n * that day and it had not been sold yet; its age is `date − supplierFullyPaidAt` in\n * days. Used vehicles only.\n */\nexport type StockAgePoint = {\n /** Snapshot day — the 1st of a month, `YYYY-MM-DD` (UTC). */\n date: string;\n /** In-stock vehicle count per age band on that day. */\n counts: Record<StockAgeBand, number>;\n /**\n * Sum of those vehicles' purchase costs per age band on that day (`deal.purchase`,\n * excl VAT, tenant currency). A vehicle without a recorded purchase cost still counts\n * in `counts` but contributes 0 here.\n */\n purchaseCosts: Record<StockAgeBand, number>;\n};\n\nexport type SalesReportResponse = {\n period: {\n key: SalesPeriodKey;\n /** Current window, half-open `[start, end)` (ISO strings). */\n start: string;\n end: string;\n /** Number of days in the window (the `salesPerDay` denominator). */\n days: number;\n /** Year-ago window `[yoyStart, yoyEnd)`. */\n yoyStart: string;\n yoyEnd: string;\n };\n /** All-types overview KPIs. `medianAge` is in years (a decrease is good — younger stock). */\n overview: {\n salesPerDay: YoyMetric;\n salesTotal: YoyMetric;\n medianRoi: YoyMetric;\n medianPrice: YoyMetric;\n medianAge: YoyMetric;\n uniqueCustomers: YoyMetric;\n };\n /** Top countries by units in the current window. */\n countries: SalesReportCountry[];\n /** Top vehicle makes by units in the current window (the client slices to its top N). */\n makes: SalesReportMake[];\n /** All sales people with units in either window (capped; the client list scrolls). */\n salespeople: SalesReportSalesperson[];\n /** All purchasers with vehicles bought in the current window (capped; the client list scrolls). */\n buyers: SalesReportBuyer[];\n /** Top client organizations by units bought from us in the current window. */\n topClients: SalesReportTopOrg[];\n /** Top supplier organizations by used vehicles purchased from them in the current window. */\n topSuppliers: SalesReportTopOrg[];\n /** Returning-customer tenure shares (4 buckets). */\n returning: TenureBucket[];\n conglomerate: SalesReportConglomerate;\n /** Fixed last-18-calendar-months histogram of opps into Preparation (period-independent). */\n histogram: SalesReportHistogramBucket[];\n /** Current-month projection, stacked on the histogram's last bucket by the client. */\n projection: SalesReportProjection;\n /**\n * Stock-age evolution measured as capital tied up in inventory: one snapshot per\n * month-1st of vehicles by days from supplier-fully-paid to sold (used vehicles).\n * Fixed to the last 24 months, period-independent.\n */\n stockAge: StockAgePoint[];\n /**\n * Customer concentration: the 10 largest customers' share of units in the window, as a\n * fraction (0–1); null when there are no sales. A risk signal — over-reliance on a few\n * buyers.\n */\n concentration: number | null;\n};\n"]}
@@ -15,7 +15,6 @@ export type MetricConfig = {
15
15
  commissionType: CommissionType;
16
16
  personal: boolean;
17
17
  format?: Intl.NumberFormatOptions;
18
- listVehicles?: boolean;
19
18
  defaultTarget?: number;
20
19
  autoHide?: boolean;
21
20
  manualEntry?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"user-performance.d.ts","sourceRoot":"/","sources":["types/user-performance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-performance.d.ts","sourceRoot":"/","sources":["types/user-performance.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-performance.js","sourceRoot":"/","sources":["types/user-performance.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wEAAmD,CAAA;IACnD,0DAAqC,CAAA;IACrC,4DAAuC,CAAA;AACzC,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,oCAAkB,CAAA;IAClB,oDAAkC,CAAA;IAClC,0CAAwB,CAAA;AAC1B,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AA0CD,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,8BAAW,CAAA;IACX,wCAAqB,CAAA;AACvB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B","sourcesContent":["// The commission can be expressed either as a percentage (for profit-based metrics)\n// or as an amount per unit (for unit-based metrics).\nimport { AttachmentValue } from '@bisondesk/commons-sdk/types';\n\nexport enum CommissionSetting {\n INBOUND_USED_TEAM_USERS = 'inbound_used_team_users',\n TEAM_MEMBERSHIPS = 'team_memberships',\n LEASING_COMPANIES = 'leasing_companies',\n}\n\nexport enum CommissionTeam {\n USED = 'used_team',\n NEW_TRAILERS = 'new_trailers_team',\n LEASING = 'leasing_team',\n}\n\nexport type CommissionType = 'percentage' | 'unit';\n\n// Comprehensive metric configuration\nexport type MetricConfig = {\n id: string;\n commissionType: CommissionType;\n personal: boolean; // if true, this metric is personal to the user\n format?: Intl.NumberFormatOptions;\n listVehicles?: boolean; // should this metric be allowed to list vehicles?\n defaultTarget?: number; // default target for the metric, useful for showing metrics to users w/o a commission plan\n autoHide?: boolean; // hide in UI when annual value is 0\n manualEntry?: boolean; // if true, data comes from manually added entries instead of vehicle_business_overviews\n settings?: CommissionSetting[]; // commission settings this metric depends on\n};\n\n// A tier defines a range of performance (using lower and optional upper bounds)\n// along with the associated commission rate. For example, 0–100 units, then 100–400 units, etc.\nexport type CommissionTier = {\n lowerBound: number; // inclusive\n upperBound?: number; // inclusive (omit for the last tier)\n commissionRate: number;\n default?: boolean; // if true, this tier's upper bound is used as reference for dashboards visualizations\n};\n\n// Each target (metric) has one or more tiers.\n// For example, for UnitsSold you might have three tiers corresponding to bare minimum, normal, and above average.\nexport type TargetCommission = {\n metricId: string;\n tiers: CommissionTier[];\n autoHide?: boolean; // overrides MetricConfig.autoHide for this user\n};\n\nexport type UserCommissionPlan = {\n userId: string;\n year: number;\n startDate?: string; // in case the commission plan is only valid from this date onwards, not the whole year\n targets: TargetCommission[];\n showCommissionToUser?: boolean; // if true, the user can see their own commission amounts\n};\n\nexport enum CommissionGrade {\n TooLow = 'tooLow',\n Low = 'low',\n OnTarget = 'onTarget',\n}\n\nexport type UserCommissionStatus = {\n userId: string;\n createdAt: string; // iso date string\n year: number;\n performance: {\n [metricId: string]: {\n value: string; // actual metric achieved\n estimated?: string; // estimated commission for the metric, based on the current trend\n grade?: CommissionGrade; // grade for the metric\n target?: string; // the upper bound of the default tier\n };\n };\n commission?: {\n total: string;\n potential?: string;\n estimated?: string; // estimated commission for the year, based on the current trend\n grade?: CommissionGrade;\n detailed?: {\n [metricId: string]: {\n earned: string; // commission amount for each target\n potential?: string; // potential commission for the metric, based on the actual metric achieved and the commission tiers\n };\n };\n };\n payments?: {\n total: string;\n yearly?: {\n // details for each year for which the outstanding commission is > 0\n [year: number]: {\n paid: string;\n };\n };\n };\n outstanding?: {\n total: string;\n // details for each year for which the outstanding commission is > 0\n yearly?: {\n [year: number]: {\n outstanding: string;\n };\n };\n };\n};\n\nexport type NewUserCommissionPayment = {\n userId: string; // who was the payment made to\n paidBy: string;\n paidAt: string;\n amount: string;\n comments?: string; // optional comment\n};\n\nexport type UserCommissionPayment = {\n id: string;\n} & NewUserCommissionPayment;\n\nexport type UserCommissionsPaymentRequest = {\n limit?: number;\n nextToken?: string;\n};\n\nexport type UserCommissionInfo = {\n manager?: boolean;\n canViewCommission?: boolean;\n performance: boolean;\n planYears: number[];\n};\n\nexport type UserCommissionListInfo = {\n users: { userId: string }[];\n};\n\nexport type MonthlyPerformanceData = {\n month: number; // 1-12\n metrics: Record<string, number>;\n};\n\nexport type PerformanceVehicle = {\n stockNumber: string;\n profit?: string;\n vehicleId: string;\n title: string;\n year: number;\n km?: number;\n configuration: string;\n euronorm?: string;\n mainPicture?: AttachmentValue;\n saleAt?: string;\n sellerId?: string;\n purchaseAt?: string;\n purchaserId?: string;\n customerName?: string;\n};\n\nexport type PerformanceVehiclesRequest = {\n userId: string;\n targetId: string;\n year?: number;\n offset?: number;\n limit?: number;\n month?: number;\n};\n\nexport type NewManualPerformanceEntry = {\n userId: string;\n metricId: string;\n reference: string;\n year: number;\n};\n\nexport type ManualPerformanceEntry = {\n id: string;\n createdBy: string;\n createdAt: string;\n} & NewManualPerformanceEntry;\n"]}
1
+ {"version":3,"file":"user-performance.js","sourceRoot":"/","sources":["types/user-performance.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wEAAmD,CAAA;IACnD,0DAAqC,CAAA;IACrC,4DAAuC,CAAA;AACzC,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,oCAAkB,CAAA;IAClB,oDAAkC,CAAA;IAClC,0CAAwB,CAAA;AAC1B,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAyCD,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,8BAAW,CAAA;IACX,wCAAqB,CAAA;AACvB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B","sourcesContent":["// The commission can be expressed either as a percentage (for profit-based metrics)\n// or as an amount per unit (for unit-based metrics).\nimport { AttachmentValue } from '@bisondesk/commons-sdk/types';\n\nexport enum CommissionSetting {\n INBOUND_USED_TEAM_USERS = 'inbound_used_team_users',\n TEAM_MEMBERSHIPS = 'team_memberships',\n LEASING_COMPANIES = 'leasing_companies',\n}\n\nexport enum CommissionTeam {\n USED = 'used_team',\n NEW_TRAILERS = 'new_trailers_team',\n LEASING = 'leasing_team',\n}\n\nexport type CommissionType = 'percentage' | 'unit';\n\n// Comprehensive metric configuration\nexport type MetricConfig = {\n id: string;\n commissionType: CommissionType;\n personal: boolean; // if true, this metric is personal to the user\n format?: Intl.NumberFormatOptions;\n defaultTarget?: number; // default target for the metric, useful for showing metrics to users w/o a commission plan\n autoHide?: boolean; // hide in UI when annual value is 0\n manualEntry?: boolean; // if true, data comes from manually added entries instead of vehicle_business_overviews\n settings?: CommissionSetting[]; // commission settings this metric depends on\n};\n\n// A tier defines a range of performance (using lower and optional upper bounds)\n// along with the associated commission rate. For example, 0–100 units, then 100–400 units, etc.\nexport type CommissionTier = {\n lowerBound: number; // inclusive\n upperBound?: number; // inclusive (omit for the last tier)\n commissionRate: number;\n default?: boolean; // if true, this tier's upper bound is used as reference for dashboards visualizations\n};\n\n// Each target (metric) has one or more tiers.\n// For example, for UnitsSold you might have three tiers corresponding to bare minimum, normal, and above average.\nexport type TargetCommission = {\n metricId: string;\n tiers: CommissionTier[];\n autoHide?: boolean; // overrides MetricConfig.autoHide for this user\n};\n\nexport type UserCommissionPlan = {\n userId: string;\n year: number;\n startDate?: string; // in case the commission plan is only valid from this date onwards, not the whole year\n targets: TargetCommission[];\n showCommissionToUser?: boolean; // if true, the user can see their own commission amounts\n};\n\nexport enum CommissionGrade {\n TooLow = 'tooLow',\n Low = 'low',\n OnTarget = 'onTarget',\n}\n\nexport type UserCommissionStatus = {\n userId: string;\n createdAt: string; // iso date string\n year: number;\n performance: {\n [metricId: string]: {\n value: string; // actual metric achieved\n estimated?: string; // estimated commission for the metric, based on the current trend\n grade?: CommissionGrade; // grade for the metric\n target?: string; // the upper bound of the default tier\n };\n };\n commission?: {\n total: string;\n potential?: string;\n estimated?: string; // estimated commission for the year, based on the current trend\n grade?: CommissionGrade;\n detailed?: {\n [metricId: string]: {\n earned: string; // commission amount for each target\n potential?: string; // potential commission for the metric, based on the actual metric achieved and the commission tiers\n };\n };\n };\n payments?: {\n total: string;\n yearly?: {\n // details for each year for which the outstanding commission is > 0\n [year: number]: {\n paid: string;\n };\n };\n };\n outstanding?: {\n total: string;\n // details for each year for which the outstanding commission is > 0\n yearly?: {\n [year: number]: {\n outstanding: string;\n };\n };\n };\n};\n\nexport type NewUserCommissionPayment = {\n userId: string; // who was the payment made to\n paidBy: string;\n paidAt: string;\n amount: string;\n comments?: string; // optional comment\n};\n\nexport type UserCommissionPayment = {\n id: string;\n} & NewUserCommissionPayment;\n\nexport type UserCommissionsPaymentRequest = {\n limit?: number;\n nextToken?: string;\n};\n\nexport type UserCommissionInfo = {\n manager?: boolean;\n canViewCommission?: boolean;\n performance: boolean;\n planYears: number[];\n};\n\nexport type UserCommissionListInfo = {\n users: { userId: string }[];\n};\n\nexport type MonthlyPerformanceData = {\n month: number; // 1-12\n metrics: Record<string, number>;\n};\n\nexport type PerformanceVehicle = {\n stockNumber: string;\n profit?: string;\n vehicleId: string;\n title: string;\n year: number;\n km?: number;\n configuration: string;\n euronorm?: string;\n mainPicture?: AttachmentValue;\n saleAt?: string;\n sellerId?: string;\n purchaseAt?: string;\n purchaserId?: string;\n customerName?: string;\n};\n\nexport type PerformanceVehiclesRequest = {\n userId: string;\n targetId: string;\n year?: number;\n offset?: number;\n limit?: number;\n month?: number;\n};\n\nexport type NewManualPerformanceEntry = {\n userId: string;\n metricId: string;\n reference: string;\n year: number;\n};\n\nexport type ManualPerformanceEntry = {\n id: string;\n createdBy: string;\n createdAt: string;\n} & NewManualPerformanceEntry;\n"]}
@@ -0,0 +1,37 @@
1
+ import { WhatsappActivityTemplateName, WhatsappTemplateTranslation } from '@bisondesk/commons-sdk/notifications-whatsapp';
2
+ import { BusinessEntityIds } from '../constants.js';
3
+ import { Activity } from './activities.js';
4
+ import { DataRecord } from './utils.js';
5
+ export type { WhatsappActivityTemplateName };
6
+ export type WhatsappTemplateLanguage = {
7
+ language: string;
8
+ status: string;
9
+ };
10
+ export type WhatsappTemplateSummary = {
11
+ name: WhatsappActivityTemplateName;
12
+ languages: WhatsappTemplateLanguage[];
13
+ };
14
+ export type WhatsappActivityTemplateTranslation = WhatsappTemplateTranslation<WhatsappActivityTemplateName>;
15
+ export type WhatsappTemplatePreview = {
16
+ sent: WhatsappActivityTemplateTranslation;
17
+ canonical?: WhatsappActivityTemplateTranslation;
18
+ };
19
+ export type WhatsappRecipient = {
20
+ contactId?: string;
21
+ organizationId?: string;
22
+ phone: string;
23
+ countryLanguage?: string;
24
+ };
25
+ export type WhatsappActivityContext = {
26
+ businessEntityId: BusinessEntityIds;
27
+ recordId: string;
28
+ organizationId?: string;
29
+ };
30
+ export type SendWhatsappActivityTemplateRequest = {
31
+ templateName: WhatsappActivityTemplateName;
32
+ language: string;
33
+ recipient: Pick<WhatsappRecipient, 'contactId' | 'phone'>;
34
+ context: WhatsappActivityContext;
35
+ };
36
+ export type SendWhatsappActivityTemplateResponse = DataRecord<Activity>;
37
+ //# sourceMappingURL=whatsapp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp.d.ts","sourceRoot":"/","sources":["types/whatsapp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,YAAY,EAAE,4BAA4B,EAAE,CAAC;AAE7C,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,4BAA4B,CAAC;IACnC,SAAS,EAAE,wBAAwB,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAC7C,2BAA2B,CAAC,4BAA4B,CAAC,CAAC;AAE5D,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,mCAAmC,CAAC;IAC1C,SAAS,CAAC,EAAE,mCAAmC,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,YAAY,EAAE,4BAA4B,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC;IAC1D,OAAO,EAAE,uBAAuB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=whatsapp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp.js","sourceRoot":"/","sources":["types/whatsapp.ts"],"names":[],"mappings":"","sourcesContent":["import {\n WhatsappActivityTemplateName,\n WhatsappTemplateTranslation,\n} from '@bisondesk/commons-sdk/notifications-whatsapp';\nimport { BusinessEntityIds } from '../constants.js';\nimport { Activity } from './activities.js';\nimport { DataRecord } from './utils.js';\n\nexport type { WhatsappActivityTemplateName };\n\nexport type WhatsappTemplateLanguage = {\n language: string;\n status: string;\n};\n\nexport type WhatsappTemplateSummary = {\n name: WhatsappActivityTemplateName;\n languages: WhatsappTemplateLanguage[];\n};\n\nexport type WhatsappActivityTemplateTranslation =\n WhatsappTemplateTranslation<WhatsappActivityTemplateName>;\n\nexport type WhatsappTemplatePreview = {\n sent: WhatsappActivityTemplateTranslation;\n canonical?: WhatsappActivityTemplateTranslation;\n};\n\nexport type WhatsappRecipient = {\n contactId?: string;\n organizationId?: string;\n phone: string;\n countryLanguage?: string;\n};\n\nexport type WhatsappActivityContext = {\n businessEntityId: BusinessEntityIds;\n recordId: string;\n organizationId?: string;\n};\n\nexport type SendWhatsappActivityTemplateRequest = {\n templateName: WhatsappActivityTemplateName;\n language: string;\n recipient: Pick<WhatsappRecipient, 'contactId' | 'phone'>;\n context: WhatsappActivityContext;\n};\n\nexport type SendWhatsappActivityTemplateResponse = DataRecord<Activity>;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bisondesk/core-sdk",
3
- "version": "1.0.635",
3
+ "version": "1.0.636",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "author": "TheTruckCompany",
@@ -0,0 +1,13 @@
1
+ export var ActivityType;
2
+ (function (ActivityType) {
3
+ ActivityType["CALL"] = "call";
4
+ ActivityType["MEETING"] = "meeting";
5
+ ActivityType["EMAIL"] = "email";
6
+ ActivityType["CHAT"] = "chat";
7
+ })(ActivityType || (ActivityType = {}));
8
+ export var ActivityActions;
9
+ (function (ActivityActions) {
10
+ ActivityActions["DELETE"] = "delete";
11
+ ActivityActions["EDIT"] = "edit";
12
+ })(ActivityActions || (ActivityActions = {}));
13
+ //# sourceMappingURL=activities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activities.js","sourceRoot":"","sources":["activities.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,mCAAmB,CAAA;IACnB,+BAAe,CAAA;IACf,6BAAa,CAAA;AACf,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,gCAAa,CAAA;AACf,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B"}
@@ -94,8 +94,8 @@ export type ActivityDeleteEvent = BaseActivityEvent & {
94
94
  export type ActivityV2Meta =
95
95
  | EmailDebtorsDossierActivityPayload
96
96
  | CallActivityPayload
97
- | MeetingDebtorsDossierActivityPayload
98
- | ChatDebtorsDossierActivityPayload;
97
+ | MeetingActivityPayload
98
+ | ChatActivityPayload;
99
99
 
100
100
  export type EmailDebtorsDossierActivityPayload = {
101
101
  /* from: { email: string; name?: string; external?: boolean };
@@ -115,7 +115,7 @@ export type CallActivityPayload = {
115
115
  transcription?: string; */
116
116
  };
117
117
 
118
- export type MeetingDebtorsDossierActivityPayload = {
118
+ export type MeetingActivityPayload = {
119
119
  /* organizer: string;
120
120
  participants: string[];
121
121
  location?: string;
@@ -123,9 +123,11 @@ export type MeetingDebtorsDossierActivityPayload = {
123
123
  endTime: string; */
124
124
  };
125
125
 
126
- export type ChatDebtorsDossierActivityPayload = {
126
+ export type ChatActivityPayload = {
127
127
  /* from: { phone: string; name?: string; external?: boolean };
128
128
  to: string[]; */
129
129
  message: string;
130
130
  platform: 'whatsapp' | 'sms';
131
+ templateName?: string;
132
+ language?: string;
131
133
  };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=comparables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparables.js","sourceRoot":"","sources":["comparables.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ export var OrganizatioRiskTags;
2
+ (function (OrganizatioRiskTags) {
3
+ OrganizatioRiskTags["BAD_FINANCIAL_INFO"] = "BAD_FINANCIAL_INFO";
4
+ OrganizatioRiskTags["VAT_NUMBER_INVALID"] = "VAT_NUMBER_INVALID";
5
+ OrganizatioRiskTags["INSTINCT"] = "INSTINCT";
6
+ OrganizatioRiskTags["NEW_CUSTOMER"] = "NEW_CUSTOMER";
7
+ OrganizatioRiskTags["BANK_ACCOUNT_BLOCKED"] = "BANK_ACCOUNT_BLOCKED";
8
+ OrganizatioRiskTags["NO_GPS"] = "NO_GPS";
9
+ })(OrganizatioRiskTags || (OrganizatioRiskTags = {}));
10
+ export var ContactActions;
11
+ (function (ContactActions) {
12
+ ContactActions["UPSERT"] = "upsert";
13
+ ContactActions["DELETE"] = "delete";
14
+ })(ContactActions || (ContactActions = {}));
15
+ export var OrganizationActions;
16
+ (function (OrganizationActions) {
17
+ OrganizationActions["ADD_ACTIVITY"] = "add_activity";
18
+ OrganizationActions["UPSERT"] = "upsert";
19
+ OrganizationActions["DELETE"] = "delete";
20
+ OrganizationActions["SELL_TO_ORGANIZATION"] = "sell_to_organization";
21
+ })(OrganizationActions || (OrganizationActions = {}));
22
+ export var MarketingChannel;
23
+ (function (MarketingChannel) {
24
+ MarketingChannel["Email"] = "email";
25
+ MarketingChannel["Whatsapp"] = "whatsapp";
26
+ MarketingChannel["Sms"] = "sms";
27
+ MarketingChannel["Phone"] = "phone";
28
+ })(MarketingChannel || (MarketingChannel = {}));
29
+ export var PartnerLevel;
30
+ (function (PartnerLevel) {
31
+ PartnerLevel["Internal"] = "05-internal";
32
+ PartnerLevel["Gold"] = "10-gold";
33
+ PartnerLevel["Silver"] = "20-silver";
34
+ PartnerLevel["Bronze"] = "30-bronze";
35
+ })(PartnerLevel || (PartnerLevel = {}));
36
+ export var SaveContactResolution;
37
+ (function (SaveContactResolution) {
38
+ SaveContactResolution["IgnoreDuplicates"] = "IGNORE_DUPLICATES";
39
+ SaveContactResolution["BlockDuplicates"] = "BLOCK_DUPLICATES";
40
+ })(SaveContactResolution || (SaveContactResolution = {}));
41
+ export var SaveOrgResolution;
42
+ (function (SaveOrgResolution) {
43
+ SaveOrgResolution["IgnoreDuplicates"] = "IGNORE_DUPLICATES";
44
+ SaveOrgResolution["BlockDuplicates"] = "BLOCK_DUPLICATES";
45
+ })(SaveOrgResolution || (SaveOrgResolution = {}));
46
+ export var CrmSearchScope;
47
+ (function (CrmSearchScope) {
48
+ CrmSearchScope["Tenant"] = "tenant";
49
+ CrmSearchScope["Conglomerate"] = "conglomerate";
50
+ })(CrmSearchScope || (CrmSearchScope = {}));
51
+ export var OrgEngagementType;
52
+ (function (OrgEngagementType) {
53
+ OrgEngagementType["offers"] = "offers";
54
+ OrgEngagementType["purchases"] = "purchases";
55
+ OrgEngagementType["opportunities"] = "opportunities";
56
+ OrgEngagementType["sales"] = "sales";
57
+ })(OrgEngagementType || (OrgEngagementType = {}));
58
+ //# sourceMappingURL=crm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crm.js","sourceRoot":"","sources":["crm.ts"],"names":[],"mappings":"AAUA,MAAM,CAAN,IAAY,mBAOX;AAPD,WAAY,mBAAmB;IAC7B,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,4CAAqB,CAAA;IACrB,oDAA6B,CAAA;IAC7B,oEAA6C,CAAA;IAC7C,wCAAiB,CAAA;AACnB,CAAC,EAPW,mBAAmB,KAAnB,mBAAmB,QAO9B;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,oDAA6B,CAAA;IAC7B,wCAAiB,CAAA;IACjB,wCAAiB,CAAA;IACjB,oEAA6C,CAAA;AAC/C,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B;AAgKD,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,yCAAqB,CAAA;IACrB,+BAAW,CAAA;IACX,mCAAe,CAAA;AACjB,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B;AAWD,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,wCAAwB,CAAA;IACxB,gCAAgB,CAAA;IAChB,oCAAoB,CAAA;IACpB,oCAAoB,CAAA;AACtB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AA6CD,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,+DAAsC,CAAA;IACtC,6DAAoC,CAAA;AACtC,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;AAED,MAAM,CAAN,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,2DAAsC,CAAA;IACtC,yDAAoC,CAAA;AACtC,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,+CAA6B,CAAA;AAC/B,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,4CAAuB,CAAA;IACvB,oDAA+B,CAAA;IAC/B,oCAAe,CAAA;AACjB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["dashboard.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from '@bisondesk/commons-sdk/definitions';
2
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["definitions.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@bisondesk/commons-sdk/fields';
2
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["fields.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=insights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights.js","sourceRoot":"","sources":["insights.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export var InterestActions;
2
+ (function (InterestActions) {
3
+ InterestActions["SET_INTEREST"] = "set_interest";
4
+ })(InterestActions || (InterestActions = {}));
5
+ export const isOpportunityInterest = (interest) => 'opportunityId' in interest;
6
+ //# sourceMappingURL=interests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interests.js","sourceRoot":"","sources":["interests.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,gDAA6B,CAAA;AAC/B,CAAC,EAFW,eAAe,KAAf,eAAe,QAE1B;AAwBD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAkB,EAAmC,EAAE,CAC3F,eAAe,IAAI,QAAQ,CAAC"}
@@ -0,0 +1,18 @@
1
+ export var InternalEventTypes;
2
+ (function (InternalEventTypes) {
3
+ InternalEventTypes["VEHICLE_PURCHASE"] = "vehicle-purchases";
4
+ InternalEventTypes["ORGANIZATION"] = "organizations";
5
+ InternalEventTypes["CONTACT"] = "contacts";
6
+ InternalEventTypes["FINANCE_DOCUMENT"] = "finance-documents";
7
+ InternalEventTypes["OPPORTUNITY"] = "opportunities";
8
+ InternalEventTypes["VEHICLE"] = "vehicles";
9
+ InternalEventTypes["SALE_PAYMENT"] = "sale-payments";
10
+ InternalEventTypes["PURCHASE_PAYMENT"] = "vehicle-purchase-payments";
11
+ InternalEventTypes["OFFER"] = "offers";
12
+ })(InternalEventTypes || (InternalEventTypes = {}));
13
+ export var InternalNotificationChannels;
14
+ (function (InternalNotificationChannels) {
15
+ InternalNotificationChannels["APP"] = "app";
16
+ InternalNotificationChannels["EMAIL"] = "email";
17
+ })(InternalNotificationChannels || (InternalNotificationChannels = {}));
18
+ //# sourceMappingURL=internal-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-events.js","sourceRoot":"","sources":["internal-events.ts"],"names":[],"mappings":"AASA,MAAM,CAAN,IAAY,kBAUX;AAVD,WAAY,kBAAkB;IAC5B,4DAAsC,CAAA;IACtC,oDAA8B,CAAA;IAC9B,0CAAoB,CAAA;IACpB,4DAAsC,CAAA;IACtC,mDAA6B,CAAA;IAC7B,0CAAoB,CAAA;IACpB,oDAA8B,CAAA;IAC9B,oEAA8C,CAAA;IAC9C,sCAAgB,CAAA;AAClB,CAAC,EAVW,kBAAkB,KAAlB,kBAAkB,QAU7B;AAED,MAAM,CAAN,IAAY,4BAGX;AAHD,WAAY,4BAA4B;IACtC,2CAAW,CAAA;IACX,+CAAe,CAAA;AACjB,CAAC,EAHW,4BAA4B,KAA5B,4BAA4B,QAGvC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=internet-opportunities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internet-opportunities.js","sourceRoot":"","sources":["internet-opportunities.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=internet-vehicles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internet-vehicles.js","sourceRoot":"","sources":["internet-vehicles.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=leasing-administration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leasing-administration.js","sourceRoot":"","sources":["leasing-administration.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=leasing-debtors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leasing-debtors.js","sourceRoot":"","sources":["leasing-debtors.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=leasing-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leasing-search.js","sourceRoot":"","sources":["leasing-search.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export var LeasingItemsPaymentSplit;
2
+ (function (LeasingItemsPaymentSplit) {
3
+ LeasingItemsPaymentSplit["Customer"] = "customer";
4
+ LeasingItemsPaymentSplit["Split"] = "split";
5
+ LeasingItemsPaymentSplit["Company"] = "company";
6
+ })(LeasingItemsPaymentSplit || (LeasingItemsPaymentSplit = {}));
7
+ //# sourceMappingURL=leasing-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leasing-settings.js","sourceRoot":"","sources":["leasing-settings.ts"],"names":[],"mappings":"AAwCA,MAAM,CAAN,IAAY,wBAIX;AAJD,WAAY,wBAAwB;IAClC,iDAAqB,CAAA;IACrB,2CAAe,CAAA;IACf,+CAAmB,CAAA;AACrB,CAAC,EAJW,wBAAwB,KAAxB,wBAAwB,QAInC"}
@@ -0,0 +1,38 @@
1
+ export var LeasingContractActions;
2
+ (function (LeasingContractActions) {
3
+ LeasingContractActions["CREATE_FINANCE_DOCUMENT"] = "create_finance_document";
4
+ LeasingContractActions["START_RETAKE_VEHICLE"] = "start_retake_vehicle";
5
+ LeasingContractActions["END_RETAKE_VEHICLE"] = "end_retake_vehicle";
6
+ LeasingContractActions["START_CONTRACT_END"] = "start_contract_end";
7
+ LeasingContractActions["END_CONTRACT"] = "end_contract";
8
+ LeasingContractActions["CANCEL_RETAKE_VEHICLE"] = "cancel_retake_vehicle";
9
+ })(LeasingContractActions || (LeasingContractActions = {}));
10
+ export var LeasingContractSource;
11
+ (function (LeasingContractSource) {
12
+ LeasingContractSource["HYPERPORTAL"] = "hyperportal";
13
+ LeasingContractSource["BISONDESK"] = "bisondesk";
14
+ })(LeasingContractSource || (LeasingContractSource = {}));
15
+ export var LeasingContractStatus;
16
+ (function (LeasingContractStatus) {
17
+ LeasingContractStatus["DRAFT"] = "draft";
18
+ LeasingContractStatus["DISCARDED"] = "discarded";
19
+ LeasingContractStatus["PAUSED"] = "paused";
20
+ LeasingContractStatus["ACTIVE"] = "active";
21
+ LeasingContractStatus["LEASING_RETURN"] = "leasing_return";
22
+ LeasingContractStatus["RECOVERED"] = "recovered";
23
+ LeasingContractStatus["ENDING"] = "ending";
24
+ LeasingContractStatus["ENDED"] = "ended";
25
+ })(LeasingContractStatus || (LeasingContractStatus = {}));
26
+ export var LeasingRemindersSortableColumns;
27
+ (function (LeasingRemindersSortableColumns) {
28
+ LeasingRemindersSortableColumns["NextActionAt"] = "next_action_at";
29
+ LeasingRemindersSortableColumns["OrganizationName"] = "organization_name";
30
+ LeasingRemindersSortableColumns["RemindersCount"] = "reminders_count";
31
+ LeasingRemindersSortableColumns["Status"] = "status";
32
+ })(LeasingRemindersSortableColumns || (LeasingRemindersSortableColumns = {}));
33
+ export var LEASING_EXPORT_TYPES;
34
+ (function (LEASING_EXPORT_TYPES) {
35
+ LEASING_EXPORT_TYPES["RENTAL_SOLUTIONS"] = "rental-solutions";
36
+ LEASING_EXPORT_TYPES["DEFAULT"] = "default";
37
+ })(LEASING_EXPORT_TYPES || (LEASING_EXPORT_TYPES = {}));
38
+ //# sourceMappingURL=leasing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leasing.js","sourceRoot":"","sources":["leasing.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,6EAAmD,CAAA;IACnD,uEAA6C,CAAA;IAC7C,mEAAyC,CAAA;IACzC,mEAAyC,CAAA;IACzC,uDAA6B,CAAA;IAC7B,yEAA+C,CAAA;AACjD,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,QAOjC;AA8DD,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,oDAA2B,CAAA;IAC3B,gDAAuB,CAAA;AACzB,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;AAED,MAAM,CAAN,IAAY,qBASX;AATD,WAAY,qBAAqB;IAC/B,wCAAe,CAAA;IACf,gDAAuB,CAAA;IACvB,0CAAiB,CAAA;IACjB,0CAAiB,CAAA;IACjB,0DAAiC,CAAA;IACjC,gDAAuB,CAAA;IACvB,0CAAiB,CAAA;IACjB,wCAAe,CAAA;AACjB,CAAC,EATW,qBAAqB,KAArB,qBAAqB,QAShC;AAuQD,MAAM,CAAN,IAAY,+BAKX;AALD,WAAY,+BAA+B;IACzC,kEAA+B,CAAA;IAC/B,yEAAsC,CAAA;IACtC,qEAAkC,CAAA;IAClC,oDAAiB,CAAA;AACnB,CAAC,EALW,+BAA+B,KAA/B,+BAA+B,QAK1C;AAgGD,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,6DAAqC,CAAA;IACrC,2CAAmB,CAAA;AACrB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B"}
@@ -0,0 +1,35 @@
1
+ export var MarketingPlatform;
2
+ (function (MarketingPlatform) {
3
+ MarketingPlatform["autoscout24"] = "autoscout24";
4
+ MarketingPlatform["autoline"] = "autoline";
5
+ MarketingPlatform["exportseller"] = "exportseller";
6
+ MarketingPlatform["machineryplanet"] = "machineryplanet";
7
+ MarketingPlatform["machinetrack"] = "machinetrack";
8
+ MarketingPlatform["marktnet"] = "marktnet";
9
+ MarketingPlatform["mobile"] = "mobile";
10
+ MarketingPlatform["truck1st"] = "truck1st";
11
+ MarketingPlatform["trucks"] = "trucks";
12
+ MarketingPlatform["truckscout"] = "truckscout24";
13
+ MarketingPlatform["tweedehandsbe"] = "2ehandsbe";
14
+ MarketingPlatform["viamobilis"] = "planettrucks";
15
+ MarketingPlatform["youtube"] = "youtube";
16
+ })(MarketingPlatform || (MarketingPlatform = {}));
17
+ export var MarketingEventStatus;
18
+ (function (MarketingEventStatus) {
19
+ MarketingEventStatus["Scheduled"] = "scheduled";
20
+ MarketingEventStatus["Processing"] = "processing";
21
+ MarketingEventStatus["Skipped"] = "skipped";
22
+ MarketingEventStatus["Error"] = "error";
23
+ MarketingEventStatus["Sent"] = "processed";
24
+ })(MarketingEventStatus || (MarketingEventStatus = {}));
25
+ export var MarketingEventType;
26
+ (function (MarketingEventType) {
27
+ MarketingEventType["PriceDrop"] = "price-drop";
28
+ MarketingEventType["PartnerOffer"] = "partner-offer";
29
+ })(MarketingEventType || (MarketingEventType = {}));
30
+ export var MarketingMessageChannelType;
31
+ (function (MarketingMessageChannelType) {
32
+ MarketingMessageChannelType["Whatsapp"] = "whatsapp";
33
+ MarketingMessageChannelType["Email"] = "email";
34
+ })(MarketingMessageChannelType || (MarketingMessageChannelType = {}));
35
+ //# sourceMappingURL=marketing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketing.js","sourceRoot":"","sources":["marketing.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,iBAcX;AAdD,WAAY,iBAAiB;IAC3B,gDAA2B,CAAA;IAC3B,0CAAqB,CAAA;IACrB,kDAA6B,CAAA;IAC7B,wDAAmC,CAAA;IACnC,kDAA6B,CAAA;IAC7B,0CAAqB,CAAA;IACrB,sCAAiB,CAAA;IACjB,0CAAqB,CAAA;IACrB,sCAAiB,CAAA;IACjB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAC3B,wCAAmB,CAAA;AACrB,CAAC,EAdW,iBAAiB,KAAjB,iBAAiB,QAc5B;AA8DD,MAAM,CAAN,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC9B,+CAAuB,CAAA;IACvB,iDAAyB,CAAA;IACzB,2CAAmB,CAAA;IACnB,uCAAe,CAAA;IACf,0CAAkB,CAAA;AACpB,CAAC,EANW,oBAAoB,KAApB,oBAAoB,QAM/B;AAED,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,8CAAwB,CAAA;IACxB,oDAA8B,CAAA;AAChC,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAED,MAAM,CAAN,IAAY,2BAGX;AAHD,WAAY,2BAA2B;IACrC,oDAAqB,CAAA;IACrB,8CAAe,CAAA;AACjB,CAAC,EAHW,2BAA2B,KAA3B,2BAA2B,QAGtC"}