@bisondesk/core-sdk 1.0.674 → 1.0.675

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 (102) hide show
  1. package/lib/types/crm.d.ts +13 -8
  2. package/lib/types/crm.d.ts.map +1 -1
  3. package/lib/types/crm.js +8 -2
  4. package/lib/types/crm.js.map +1 -1
  5. package/lib/types/deliveries.d.ts.map +1 -1
  6. package/lib/types/deliveries.js.map +1 -1
  7. package/lib/types/leasing-debtors.d.ts +11 -0
  8. package/lib/types/leasing-debtors.d.ts.map +1 -1
  9. package/lib/types/leasing-debtors.js.map +1 -1
  10. package/lib/types/tenants.d.ts +1 -0
  11. package/lib/types/tenants.d.ts.map +1 -1
  12. package/lib/types/tenants.js +1 -0
  13. package/lib/types/tenants.js.map +1 -1
  14. package/lib/utils/marketing-opt-outs.d.ts +10 -0
  15. package/lib/utils/marketing-opt-outs.d.ts.map +1 -0
  16. package/lib/utils/marketing-opt-outs.js +8 -0
  17. package/lib/utils/marketing-opt-outs.js.map +1 -0
  18. package/lib/utils/marketing-opt-outs.test.d.ts +2 -0
  19. package/lib/utils/marketing-opt-outs.test.d.ts.map +1 -0
  20. package/lib/utils/marketing-opt-outs.test.js +22 -0
  21. package/lib/utils/marketing-opt-outs.test.js.map +1 -0
  22. package/lib/utils/organizations.d.ts.map +1 -1
  23. package/lib/utils/organizations.js.map +1 -1
  24. package/package.json +1 -1
  25. package/src/types/activities.js +13 -0
  26. package/src/types/activities.js.map +1 -0
  27. package/src/types/comparables.js +2 -0
  28. package/src/types/comparables.js.map +1 -0
  29. package/src/types/crm.js +58 -0
  30. package/src/types/crm.js.map +1 -0
  31. package/src/types/crm.ts +30 -9
  32. package/src/types/dashboard.js +2 -0
  33. package/src/types/dashboard.js.map +1 -0
  34. package/src/types/definitions.js +2 -0
  35. package/src/types/definitions.js.map +1 -0
  36. package/src/types/deliveries.ts +2 -2
  37. package/src/types/fields.js +2 -0
  38. package/src/types/fields.js.map +1 -0
  39. package/src/types/insights.js +2 -0
  40. package/src/types/insights.js.map +1 -0
  41. package/src/types/interests.js +6 -0
  42. package/src/types/interests.js.map +1 -0
  43. package/src/types/internal-events.js +18 -0
  44. package/src/types/internal-events.js.map +1 -0
  45. package/src/types/internet-opportunities.js +2 -0
  46. package/src/types/internet-opportunities.js.map +1 -0
  47. package/src/types/internet-vehicles.js +2 -0
  48. package/src/types/internet-vehicles.js.map +1 -0
  49. package/src/types/leasing-administration.js +2 -0
  50. package/src/types/leasing-administration.js.map +1 -0
  51. package/src/types/leasing-debtors.js +2 -0
  52. package/src/types/leasing-debtors.js.map +1 -0
  53. package/src/types/leasing-debtors.ts +14 -0
  54. package/src/types/leasing-search.js +2 -0
  55. package/src/types/leasing-search.js.map +1 -0
  56. package/src/types/leasing-settings.js +7 -0
  57. package/src/types/leasing-settings.js.map +1 -0
  58. package/src/types/leasing.js +38 -0
  59. package/src/types/leasing.js.map +1 -0
  60. package/src/types/marketing.js +35 -0
  61. package/src/types/marketing.js.map +1 -0
  62. package/src/types/offers.js +56 -0
  63. package/src/types/opportunities.js +107 -0
  64. package/src/types/opportunities.js.map +1 -0
  65. package/src/types/payments.js +7 -0
  66. package/src/types/picklists.js +2 -0
  67. package/src/types/picklists.js.map +1 -0
  68. package/src/types/quotes.js +42 -0
  69. package/src/types/recently-viewed.js +2 -0
  70. package/src/types/recently-viewed.js.map +1 -0
  71. package/src/types/reservations.js +5 -0
  72. package/src/types/reservations.js.map +1 -0
  73. package/src/types/roi-ratings.js +5 -0
  74. package/src/types/roi-ratings.js.map +1 -0
  75. package/src/types/saved-filters.js +9 -0
  76. package/src/types/saved-filters.js.map +1 -0
  77. package/src/types/search.js +2 -0
  78. package/src/types/search.js.map +1 -0
  79. package/src/types/settings.js +2 -0
  80. package/src/types/settings.js.map +1 -0
  81. package/src/types/templates.js +2 -0
  82. package/src/types/templates.js.map +1 -0
  83. package/src/types/tenants.js +21 -0
  84. package/src/types/tenants.js.map +1 -0
  85. package/src/types/tenants.ts +6 -0
  86. package/src/types/user-performance.js +7 -0
  87. package/src/types/user-performance.js.map +1 -0
  88. package/src/types/utils.js +2 -0
  89. package/src/types/validation.js +2 -0
  90. package/src/types/validation.js.map +1 -0
  91. package/src/types/vehicle-sales.js +6 -0
  92. package/src/types/vehicle-sales.js.map +1 -0
  93. package/src/types/vehicles.js +98 -0
  94. package/src/types/vehicles.js.map +1 -0
  95. package/src/utils/leasing.js +6 -0
  96. package/src/utils/leasing.js.map +1 -0
  97. package/src/utils/marketing-opt-outs.test.ts +34 -0
  98. package/src/utils/marketing-opt-outs.ts +20 -0
  99. package/src/utils/opportunities.js +48 -0
  100. package/src/utils/opportunities.js.map +1 -0
  101. package/src/utils/organizations.ts +1 -2
  102. package/tsconfig.tsbuildinfo +1 -1
@@ -179,16 +179,22 @@ export type CrmPublicSearchDefinitions = {
179
179
  };
180
180
  export declare enum MarketingChannel {
181
181
  Email = "email",
182
- Whatsapp = "whatsapp",
183
- Sms = "sms",
184
182
  Phone = "phone"
185
183
  }
186
- export type MarketingPreferenceEntry = {
187
- optedOut: boolean;
184
+ export declare enum MarketingOptOutReason {
185
+ Human = "human",
186
+ Unsubscribe = "unsubscribe",
187
+ Complaint = "complaint",
188
+ AutoValidation = "auto-validation",
189
+ WhatsappStop = "whatsapp-stop"
190
+ }
191
+ export type MarketingOptOut = {
192
+ channel: MarketingChannel;
193
+ address: string;
194
+ reason: MarketingOptOutReason;
188
195
  updatedAt: string;
189
- };
190
- export type MarketingPreferences = {
191
- [channel in MarketingChannel]?: MarketingPreferenceEntry;
196
+ updatedBy?: string;
197
+ campaignId?: string;
192
198
  };
193
199
  export declare enum PartnerLevel {
194
200
  Internal = "05-internal",
@@ -209,7 +215,6 @@ type BaseContact = {
209
215
  nationalId?: string;
210
216
  organizationId?: string;
211
217
  orgName?: string;
212
- marketingPreferences?: MarketingPreferences;
213
218
  clientLevel?: PartnerLevel;
214
219
  disabledAt?: string;
215
220
  disabledBy?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"crm.d.ts","sourceRoot":"/","sources":["types/crm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crm.d.ts","sourceRoot":"/","sources":["types/crm.ts"],"names":[],"mappings":"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"}
package/lib/types/crm.js CHANGED
@@ -27,10 +27,16 @@ export var OrganizationActions;
27
27
  export var MarketingChannel;
28
28
  (function (MarketingChannel) {
29
29
  MarketingChannel["Email"] = "email";
30
- MarketingChannel["Whatsapp"] = "whatsapp";
31
- MarketingChannel["Sms"] = "sms";
32
30
  MarketingChannel["Phone"] = "phone";
33
31
  })(MarketingChannel || (MarketingChannel = {}));
32
+ export var MarketingOptOutReason;
33
+ (function (MarketingOptOutReason) {
34
+ MarketingOptOutReason["Human"] = "human";
35
+ MarketingOptOutReason["Unsubscribe"] = "unsubscribe";
36
+ MarketingOptOutReason["Complaint"] = "complaint";
37
+ MarketingOptOutReason["AutoValidation"] = "auto-validation";
38
+ MarketingOptOutReason["WhatsappStop"] = "whatsapp-stop";
39
+ })(MarketingOptOutReason || (MarketingOptOutReason = {}));
34
40
  export var PartnerLevel;
35
41
  (function (PartnerLevel) {
36
42
  PartnerLevel["Internal"] = "05-internal";
@@ -1 +1 @@
1
- {"version":3,"file":"crm.js","sourceRoot":"/","sources":["types/crm.ts"],"names":[],"mappings":"AAWA,MAAM,CAAN,IAAY,mBAYX;AAZD,WAAY,mBAAmB;IAC7B,gEAAyC,CAAA;IACzC,8CAAuB,CAAA;IACvB,gEAAyC,CAAA;IACzC,4CAAqB,CAAA;IACrB,0DAAmC,CAAA;IACnC,oDAA6B,CAAA;IAC7B,oEAA6C,CAAA;IAC7C,wCAAiB,CAAA;IACjB,gDAAyB,CAAA;IACzB,kFAA2D,CAAA;IAC3D,gEAAyC,CAAA;AAC3C,CAAC,EAZW,mBAAmB,KAAnB,mBAAmB,QAY9B;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;AA6MD,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;AA+DD,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","sourcesContent":["import {\n LocationValue,\n PhoneNumberRawValue,\n PhoneNumberValue,\n SearchPermissions,\n} from '@bisondesk/commons-sdk/types';\nimport { PublicSearchDefinition } from './definitions.js';\nimport { Interest } from './interests.js';\nimport { BaseEvent } from './internal-events.js';\nimport { ReferenceData } from './utils.js';\n\nexport enum OrganizatioRiskTags {\n BAD_FINANCIAL_INFO = 'BAD_FINANCIAL_INFO',\n WRITE_OFF = 'WRITE_OFF',\n VAT_NUMBER_INVALID = 'VAT_NUMBER_INVALID',\n INSTINCT = 'INSTINCT',\n INVALID_ADDRESS = 'INVALID_ADDRESS',\n NEW_CUSTOMER = 'NEW_CUSTOMER',\n BANK_ACCOUNT_BLOCKED = 'BANK_ACCOUNT_BLOCKED',\n NO_GPS = 'NO_GPS',\n BANKRUPTCY = 'BANKRUPTCY',\n JUDICIAL_REORGANISATION_WCO = 'JUDICIAL_REORGANISATION_WCO',\n NO_DRIVING_LICENSE = 'NO_DRIVING_LICENSE',\n}\n\nexport enum ContactActions {\n UPSERT = 'upsert',\n DELETE = 'delete',\n}\n\nexport enum OrganizationActions {\n ADD_ACTIVITY = 'add_activity',\n UPSERT = 'upsert',\n DELETE = 'delete',\n SELL_TO_ORGANIZATION = 'sell_to_organization',\n}\n\nexport type CrmEvent = CrmOrganizationEvent | CrmContactEvent;\n\ntype BaseContactEvent = BaseEvent & {\n contactId: string;\n organizationId?: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type ContactCreateEvent = BaseContactEvent & {\n action: 'create';\n contact: Contact;\n previousContact?: undefined;\n};\n\nexport type ContactUpdateEvent = BaseContactEvent & {\n action: 'update';\n contact: Contact;\n previousContact: Contact;\n};\n\nexport type ContactDeleteEvent = BaseContactEvent & {\n action: 'delete';\n contact?: undefined;\n previousContact: Contact;\n};\n\nexport type CrmContactEvent = ContactCreateEvent | ContactUpdateEvent | ContactDeleteEvent;\n\ntype BaseOrgEvent = BaseEvent & {\n organizationId: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type OrgCreateEvent = BaseOrgEvent & {\n action: 'create';\n org: Organization;\n previousOrg?: undefined;\n};\n\nexport type OrgUpdateEvent = BaseOrgEvent & {\n action: 'update';\n org: Organization;\n previousOrg: Organization;\n};\n\nexport type OrgDeleteEvent = BaseOrgEvent & {\n action: 'delete';\n org?: undefined;\n previousOrg: Organization;\n};\n\nexport type CrmOrganizationEvent = OrgCreateEvent | OrgUpdateEvent | OrgDeleteEvent;\n\ntype BaseOrganization = {\n usages: {\n [tenantId: string]: string[]; // branchIds that are using this organization\n };\n countryCode: string;\n name: string;\n segment?: string;\n /**\n * Client sector — Tier 1 of the industry taxonomy (what business the client is in).\n * Free string validated against the `ORG_INDUSTRY_PICKLIST_ID` picklist. Orthogonal to\n * `segment`, which records the client's ROLE (end customer, trader, dealer, …).\n */\n industry?: string;\n /**\n * Sub-industry — Tier 2 of the industry taxonomy: a finer classification within the chosen\n * `industry`. Generic and reusable across industries; each picklist value\n * (`SUB_INDUSTRY_PICKLIST_ID`) declares which parent `industry` it belongs to. Today only\n * `transport-logistics` has sub-values (the cargo type: reefer, tanker, tipper, …).\n */\n subIndustry?: string;\n type?: 'COMPANY' | 'INDIVIDUAL' | 'GOVERNMENT';\n vatNumber?: string;\n /**\n * Registered share capital (capital social), in the currency it was registered in. Registry\n * data like `vatNumber`, kept because the legal documents print it — the Ivory Coast\n * cautionnement names the customer by capital alongside its trade-register number.\n */\n shareCapital?: string;\n /**\n * National business registration number. For FR orgs this is a SIREN (9 digits) or a SIRET\n * (14 digits = SIREN + 5-digit NIC) — whichever is available; needed for annuaire routing of\n * FR B2B e-invoices. A SIREN is derivable from a valid FR VAT (digits 3–11).\n */\n registrationNumber?: string;\n addresses?: {\n legal?: LocationValue;\n transport?: LocationValue;\n };\n conglomerate?: boolean;\n riskTags?: string[];\n\n // general contact — main switchboard / info address, distinct from billing\n generalEmail?: string;\n\n // billing\n billingEmails?: string[];\n skipPaymentReminders?: boolean;\n skipInvoiceEmails?: boolean;\n trustworthy?: boolean;\n // meta\n slbPartner?: boolean;\n\n tags?: string[]; // custom tags for the organization\n};\n\nexport type NewOrganization = BaseOrganization & {\n id?: undefined;\n externalId?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n billingPhone?: PhoneNumberValue | PhoneNumberRawValue;\n generalPhone?: PhoneNumberValue | PhoneNumberRawValue;\n};\n\nexport type ValidatedNewOrganization = Omit<NewOrganization, 'billingPhone' | 'generalPhone'> & {\n billingPhone?: PhoneNumberValue;\n generalPhone?: PhoneNumberValue;\n};\n\nexport type Organization = BaseOrganization & {\n createdAt: string;\n externalId: number;\n createdBy: string;\n id: string;\n\n debt?: OrganizationDebtInfo;\n\n billingPhone?: PhoneNumberValue;\n generalPhone?: PhoneNumberValue;\n\n disabled?: boolean;\n disabledAt?: string;\n disabledBy?: string;\n disabledReason?: string;\n};\n\nexport type OrganizationDebtInfo = {\n overdueSince?: string;\n overdueInvoices: number;\n overdueAmount: string;\n unpaidInvoices: number;\n unpaidAmount: string;\n};\n\nexport type OrgLeasingContract = {\n id: string;\n contractNumber?: string;\n vehicle: {\n id: string;\n stockNumber: string;\n administrativeNumber?: string;\n };\n};\n\nexport type SearchOrganization = {\n org: Organization;\n contract: OrgLeasingContract[]; // important for the logic regarding leasing overdue reminders\n interests?: Interest[];\n custom: {\n inUse: boolean; // is this organization in use by any of the branches of this tenant, or is it an organization from another tenant.\n lastActivityAt: string | undefined; // last activity at this organization\n lastActivityBy: string | undefined; // user that did the last activity at this organization\n engagementTypes: OrgEngagementType[] | undefined; // types of engagements this organization has in the tenant\n\n accountManagers: string[]; // dynamically determined account managers for this organization\n };\n};\n\nexport type PotentialDuplicatesReferenceData = ReferenceData & { blockIgnore?: boolean };\n\nexport type InputSearchOrganization = SearchOrganization & {\n permissions: SearchPermissions | undefined;\n};\n\nexport type SearchContact = {\n contact: Contact;\n org?: Organization;\n interests?: Interest[];\n custom: {\n accountManagers: string[]; // dynamically determined account managers for this contact\n classification: 'prospect' | 'customer';\n hasOrganization: boolean;\n lastActivityAt: string | undefined;\n lastActivityBy: string | undefined;\n };\n};\n\nexport type InputSearchContact = SearchContact & {\n permissions: SearchPermissions | undefined;\n};\n\nexport type CrmPublicSearchDefinitions = {\n searchOrg: PublicSearchDefinition;\n searchContact: PublicSearchDefinition;\n};\n\nexport enum MarketingChannel {\n Email = 'email',\n Whatsapp = 'whatsapp',\n Sms = 'sms',\n Phone = 'phone',\n}\n\nexport type MarketingPreferenceEntry = {\n optedOut: boolean;\n updatedAt: string;\n};\n\nexport type MarketingPreferences = {\n [channel in MarketingChannel]?: MarketingPreferenceEntry;\n};\n\nexport enum PartnerLevel {\n Internal = '05-internal',\n Gold = '10-gold',\n Silver = '20-silver',\n Bronze = '30-bronze',\n}\n\ntype BaseContact = {\n accountManager?: string;\n countryCode?: string; // TODO review if this should be required (UI says it is)\n language?: string;\n emails: string[];\n job?: string;\n /** free-text job title; only meaningful when `job === JOB_CATEGORY_OTHER_ID` */\n jobOther?: string;\n /** either firstName or lastName should be filled in */\n firstName?: string;\n lastName?: string;\n /** yyyy-mm-dd */\n birthDate?: string;\n /** National identity document number (e.g. CNI in Côte d'Ivoire). */\n nationalId?: string;\n organizationId?: string;\n /** will not be filled if organizationId is present */\n orgName?: string;\n marketingPreferences?: MarketingPreferences;\n clientLevel?: PartnerLevel;\n\n disabledAt?: string;\n disabledBy?: string;\n disabledReason?: string;\n\n tags?: string[]; // custom tags for the contact\n\n channels?: {\n telegram?: MessagingChannelEntry;\n whatsapp?: MessagingChannelEntry;\n };\n};\n\nexport type MessagingChannelEntry = {\n id: string;\n sessionId?: string;\n};\n\nexport type NewContact = BaseContact & {\n id?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n phones: Array<PhoneNumberValue | PhoneNumberRawValue>;\n organizationId?: string;\n};\n\nexport type NewContactValidated = BaseContact & {\n id?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n organizationId?: string;\n phones: PhoneNumberValue[];\n};\n\nexport type Contact = BaseContact & {\n id: string;\n createdAt: string;\n createdBy: string;\n phones: PhoneNumberValue[];\n};\n\nexport enum SaveContactResolution {\n IgnoreDuplicates = 'IGNORE_DUPLICATES',\n BlockDuplicates = 'BLOCK_DUPLICATES',\n}\n\nexport enum SaveOrgResolution {\n IgnoreDuplicates = 'IGNORE_DUPLICATES',\n BlockDuplicates = 'BLOCK_DUPLICATES',\n}\n\nexport enum CrmSearchScope {\n Tenant = 'tenant',\n Conglomerate = 'conglomerate',\n}\n\nexport enum OrgEngagementType {\n offers = 'offers',\n purchases = 'purchases',\n opportunities = 'opportunities',\n sales = 'sales',\n}\n"]}
1
+ {"version":3,"file":"crm.js","sourceRoot":"/","sources":["types/crm.ts"],"names":[],"mappings":"AAWA,MAAM,CAAN,IAAY,mBAYX;AAZD,WAAY,mBAAmB;IAC7B,gEAAyC,CAAA;IACzC,8CAAuB,CAAA;IACvB,gEAAyC,CAAA;IACzC,4CAAqB,CAAA;IACrB,0DAAmC,CAAA;IACnC,oDAA6B,CAAA;IAC7B,oEAA6C,CAAA;IAC7C,wCAAiB,CAAA;IACjB,gDAAyB,CAAA;IACzB,kFAA2D,CAAA;IAC3D,gEAAyC,CAAA;AAC3C,CAAC,EAZW,mBAAmB,KAAnB,mBAAmB,QAY9B;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;AA6MD,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IAEf,mCAAe,CAAA;AACjB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAGD,MAAM,CAAN,IAAY,qBAWX;AAXD,WAAY,qBAAqB;IAE/B,wCAAe,CAAA;IAEf,oDAA2B,CAAA;IAE3B,gDAAuB,CAAA;IAEvB,2DAAkC,CAAA;IAElC,uDAA8B,CAAA;AAChC,CAAC,EAXW,qBAAqB,KAArB,qBAAqB,QAWhC;AAoBD,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;AA8DD,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","sourcesContent":["import {\n LocationValue,\n PhoneNumberRawValue,\n PhoneNumberValue,\n SearchPermissions,\n} from '@bisondesk/commons-sdk/types';\nimport { PublicSearchDefinition } from './definitions.js';\nimport { Interest } from './interests.js';\nimport { BaseEvent } from './internal-events.js';\nimport { ReferenceData } from './utils.js';\n\nexport enum OrganizatioRiskTags {\n BAD_FINANCIAL_INFO = 'BAD_FINANCIAL_INFO',\n WRITE_OFF = 'WRITE_OFF',\n VAT_NUMBER_INVALID = 'VAT_NUMBER_INVALID',\n INSTINCT = 'INSTINCT',\n INVALID_ADDRESS = 'INVALID_ADDRESS',\n NEW_CUSTOMER = 'NEW_CUSTOMER',\n BANK_ACCOUNT_BLOCKED = 'BANK_ACCOUNT_BLOCKED',\n NO_GPS = 'NO_GPS',\n BANKRUPTCY = 'BANKRUPTCY',\n JUDICIAL_REORGANISATION_WCO = 'JUDICIAL_REORGANISATION_WCO',\n NO_DRIVING_LICENSE = 'NO_DRIVING_LICENSE',\n}\n\nexport enum ContactActions {\n UPSERT = 'upsert',\n DELETE = 'delete',\n}\n\nexport enum OrganizationActions {\n ADD_ACTIVITY = 'add_activity',\n UPSERT = 'upsert',\n DELETE = 'delete',\n SELL_TO_ORGANIZATION = 'sell_to_organization',\n}\n\nexport type CrmEvent = CrmOrganizationEvent | CrmContactEvent;\n\ntype BaseContactEvent = BaseEvent & {\n contactId: string;\n organizationId?: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type ContactCreateEvent = BaseContactEvent & {\n action: 'create';\n contact: Contact;\n previousContact?: undefined;\n};\n\nexport type ContactUpdateEvent = BaseContactEvent & {\n action: 'update';\n contact: Contact;\n previousContact: Contact;\n};\n\nexport type ContactDeleteEvent = BaseContactEvent & {\n action: 'delete';\n contact?: undefined;\n previousContact: Contact;\n};\n\nexport type CrmContactEvent = ContactCreateEvent | ContactUpdateEvent | ContactDeleteEvent;\n\ntype BaseOrgEvent = BaseEvent & {\n organizationId: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\nexport type OrgCreateEvent = BaseOrgEvent & {\n action: 'create';\n org: Organization;\n previousOrg?: undefined;\n};\n\nexport type OrgUpdateEvent = BaseOrgEvent & {\n action: 'update';\n org: Organization;\n previousOrg: Organization;\n};\n\nexport type OrgDeleteEvent = BaseOrgEvent & {\n action: 'delete';\n org?: undefined;\n previousOrg: Organization;\n};\n\nexport type CrmOrganizationEvent = OrgCreateEvent | OrgUpdateEvent | OrgDeleteEvent;\n\ntype BaseOrganization = {\n usages: {\n [tenantId: string]: string[]; // branchIds that are using this organization\n };\n countryCode: string;\n name: string;\n segment?: string;\n /**\n * Client sector — Tier 1 of the industry taxonomy (what business the client is in).\n * Free string validated against the `ORG_INDUSTRY_PICKLIST_ID` picklist. Orthogonal to\n * `segment`, which records the client's ROLE (end customer, trader, dealer, …).\n */\n industry?: string;\n /**\n * Sub-industry — Tier 2 of the industry taxonomy: a finer classification within the chosen\n * `industry`. Generic and reusable across industries; each picklist value\n * (`SUB_INDUSTRY_PICKLIST_ID`) declares which parent `industry` it belongs to. Today only\n * `transport-logistics` has sub-values (the cargo type: reefer, tanker, tipper, …).\n */\n subIndustry?: string;\n type?: 'COMPANY' | 'INDIVIDUAL' | 'GOVERNMENT';\n vatNumber?: string;\n /**\n * Registered share capital (capital social), in the currency it was registered in. Registry\n * data like `vatNumber`, kept because the legal documents print it — the Ivory Coast\n * cautionnement names the customer by capital alongside its trade-register number.\n */\n shareCapital?: string;\n /**\n * National business registration number. For FR orgs this is a SIREN (9 digits) or a SIRET\n * (14 digits = SIREN + 5-digit NIC) — whichever is available; needed for annuaire routing of\n * FR B2B e-invoices. A SIREN is derivable from a valid FR VAT (digits 3–11).\n */\n registrationNumber?: string;\n addresses?: {\n legal?: LocationValue;\n transport?: LocationValue;\n };\n conglomerate?: boolean;\n riskTags?: string[];\n\n // general contact — main switchboard / info address, distinct from billing\n generalEmail?: string;\n\n // billing\n billingEmails?: string[];\n skipPaymentReminders?: boolean;\n skipInvoiceEmails?: boolean;\n trustworthy?: boolean;\n // meta\n slbPartner?: boolean;\n\n tags?: string[]; // custom tags for the organization\n};\n\nexport type NewOrganization = BaseOrganization & {\n id?: undefined;\n externalId?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n billingPhone?: PhoneNumberValue | PhoneNumberRawValue;\n generalPhone?: PhoneNumberValue | PhoneNumberRawValue;\n};\n\nexport type ValidatedNewOrganization = Omit<NewOrganization, 'billingPhone' | 'generalPhone'> & {\n billingPhone?: PhoneNumberValue;\n generalPhone?: PhoneNumberValue;\n};\n\nexport type Organization = BaseOrganization & {\n createdAt: string;\n externalId: number;\n createdBy: string;\n id: string;\n\n debt?: OrganizationDebtInfo;\n\n billingPhone?: PhoneNumberValue;\n generalPhone?: PhoneNumberValue;\n\n disabled?: boolean;\n disabledAt?: string;\n disabledBy?: string;\n disabledReason?: string;\n};\n\nexport type OrganizationDebtInfo = {\n overdueSince?: string;\n overdueInvoices: number;\n overdueAmount: string;\n unpaidInvoices: number;\n unpaidAmount: string;\n};\n\nexport type OrgLeasingContract = {\n id: string;\n contractNumber?: string;\n vehicle: {\n id: string;\n stockNumber: string;\n administrativeNumber?: string;\n };\n};\n\nexport type SearchOrganization = {\n org: Organization;\n contract: OrgLeasingContract[]; // important for the logic regarding leasing overdue reminders\n interests?: Interest[];\n custom: {\n inUse: boolean; // is this organization in use by any of the branches of this tenant, or is it an organization from another tenant.\n lastActivityAt: string | undefined; // last activity at this organization\n lastActivityBy: string | undefined; // user that did the last activity at this organization\n engagementTypes: OrgEngagementType[] | undefined; // types of engagements this organization has in the tenant\n\n accountManagers: string[]; // dynamically determined account managers for this organization\n };\n};\n\nexport type PotentialDuplicatesReferenceData = ReferenceData & { blockIgnore?: boolean };\n\nexport type InputSearchOrganization = SearchOrganization & {\n permissions: SearchPermissions | undefined;\n};\n\nexport type SearchContact = {\n contact: Contact;\n org?: Organization;\n interests?: Interest[];\n custom: {\n accountManagers: string[]; // dynamically determined account managers for this contact\n classification: 'prospect' | 'customer';\n hasOrganization: boolean;\n lastActivityAt: string | undefined;\n lastActivityBy: string | undefined;\n };\n};\n\nexport type InputSearchContact = SearchContact & {\n permissions: SearchPermissions | undefined;\n};\n\nexport type CrmPublicSearchDefinitions = {\n searchOrg: PublicSearchDefinition;\n searchContact: PublicSearchDefinition;\n};\n\nexport enum MarketingChannel {\n Email = 'email',\n /** Calls, WhatsApp and SMS to a phone number. */\n Phone = 'phone',\n}\n\n/** Why an address stopped receiving marketing. */\nexport enum MarketingOptOutReason {\n /** A user switched the address off in the CRM. */\n Human = 'human',\n /** The recipient used the unsubscribe link in a campaign email. */\n Unsubscribe = 'unsubscribe',\n /** The recipient reported a campaign email as spam. */\n Complaint = 'complaint',\n /** SES Auto Validation dropped the address before sending because it expected a bounce. */\n AutoValidation = 'auto-validation',\n /** The recipient asked WhatsApp marketing to stop. */\n WhatsappStop = 'whatsapp-stop',\n}\n\n/**\n * An opted-out address in a tenant: an email address, or a phone number in E.164. The row exists\n * only while the address is opted out; switching it back on deletes it.\n */\nexport type MarketingOptOut = {\n channel: MarketingChannel;\n address: string;\n reason: MarketingOptOutReason;\n updatedAt: string;\n /**\n * The user who switched it off, or `system` for the automatic reasons. Absent on opt-outs\n * carried over from the old per-contact switches, which never recorded who set them.\n */\n updatedBy?: string;\n /** The campaign whose email led to it, for `unsubscribe`, `complaint` and `auto-validation`. */\n campaignId?: string;\n};\n\nexport enum PartnerLevel {\n Internal = '05-internal',\n Gold = '10-gold',\n Silver = '20-silver',\n Bronze = '30-bronze',\n}\n\ntype BaseContact = {\n accountManager?: string;\n countryCode?: string; // TODO review if this should be required (UI says it is)\n language?: string;\n emails: string[];\n job?: string;\n /** free-text job title; only meaningful when `job === JOB_CATEGORY_OTHER_ID` */\n jobOther?: string;\n /** either firstName or lastName should be filled in */\n firstName?: string;\n lastName?: string;\n /** yyyy-mm-dd */\n birthDate?: string;\n /** National identity document number (e.g. CNI in Côte d'Ivoire). */\n nationalId?: string;\n organizationId?: string;\n /** will not be filled if organizationId is present */\n orgName?: string;\n clientLevel?: PartnerLevel;\n\n disabledAt?: string;\n disabledBy?: string;\n disabledReason?: string;\n\n tags?: string[]; // custom tags for the contact\n\n channels?: {\n telegram?: MessagingChannelEntry;\n whatsapp?: MessagingChannelEntry;\n };\n};\n\nexport type MessagingChannelEntry = {\n id: string;\n sessionId?: string;\n};\n\nexport type NewContact = BaseContact & {\n id?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n phones: Array<PhoneNumberValue | PhoneNumberRawValue>;\n organizationId?: string;\n};\n\nexport type NewContactValidated = BaseContact & {\n id?: undefined;\n createdAt?: undefined;\n createdBy?: undefined;\n organizationId?: string;\n phones: PhoneNumberValue[];\n};\n\nexport type Contact = BaseContact & {\n id: string;\n createdAt: string;\n createdBy: string;\n phones: PhoneNumberValue[];\n};\n\nexport enum SaveContactResolution {\n IgnoreDuplicates = 'IGNORE_DUPLICATES',\n BlockDuplicates = 'BLOCK_DUPLICATES',\n}\n\nexport enum SaveOrgResolution {\n IgnoreDuplicates = 'IGNORE_DUPLICATES',\n BlockDuplicates = 'BLOCK_DUPLICATES',\n}\n\nexport enum CrmSearchScope {\n Tenant = 'tenant',\n Conglomerate = 'conglomerate',\n}\n\nexport enum OrgEngagementType {\n offers = 'offers',\n purchases = 'purchases',\n opportunities = 'opportunities',\n sales = 'sales',\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"deliveries.d.ts","sourceRoot":"/","sources":["types/deliveries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deliveries.d.ts","sourceRoot":"/","sources":["types/deliveries.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deliveries.js","sourceRoot":"/","sources":["types/deliveries.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAGzC,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,4CAAmB,CAAA;IACnB,0CAA6B,CAAA;AAC/B,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;AAED,MAAM,CAAN,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,sCAA4B,CAAA;IAC5B,yCAAmB,CAAA;IACnB,mCAAa,CAAA;IACb,mDAA6B,CAAA;AAC/B,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAED,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,qCAAsB,CAAA;AACxB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,wCAAkB,CAAA;IAClB,6CAAuB,CAAA;AACzB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAqCD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS;IACT,YAAY;IACZ,wBAAwB;IACxB,KAAK;CACoD,CAAC","sourcesContent":["import { LocationValue } from '@bisondesk/commons-sdk/types';\n\n/** Supplier drop-off and customer pickup both take place at our park. */\nexport const PARK_DELIVERY_TYPE = 'park';\n\n/** Supplier collection keeps the existing address value in stored transports. */\nexport enum PurchaseDeliveryTypes {\n ADDRESS = 'address',\n DROP_OFF = PARK_DELIVERY_TYPE,\n}\n\nexport enum SalesDeliveryTypes {\n PICK_UP = PARK_DELIVERY_TYPE,\n ADDRESS = 'address',\n PORT = 'port',\n PORT_AND_SHIP = 'portAndShip',\n}\n\nexport enum SpoilerInfo {\n MOUNT = 'mount',\n UNMOUNT = 'unmount',\n NO_ACTION = 'noAction',\n}\n\nexport enum TransportationMode {\n BY_ROAD = 'byRoad',\n ON_LOW_BED = 'onLowBed',\n}\n\ntype BaseDeliveryType = {\n agreedPrice: string;\n spoiler?: SpoilerInfo;\n stackingVehicleNeeded?: boolean;\n detailsStacking?: string;\n};\n\nexport type PickUpDeliveryType = BaseDeliveryType & {\n type: SalesDeliveryTypes.PICK_UP;\n urgent: boolean;\n transportationMode?: TransportationMode;\n detailsBorderCrossing?: string;\n technicalControlNeeded: boolean;\n insuranceNeeded: boolean;\n transitPlateBelgiumNeeded: boolean;\n transitPlateAustriaNeeded: boolean;\n licensePlateNeeded: boolean;\n dateOfPickUpByCustomer?: string;\n};\n\n/** The supplier brings the vehicle to our park without a collection address or distance. */\nexport type DropOffDeliveryType = BaseDeliveryType & {\n type: PurchaseDeliveryTypes.DROP_OFF;\n};\n\nexport type AddressDeliveryType<\n T extends SalesDeliveryTypes.ADDRESS | PurchaseDeliveryTypes.ADDRESS = SalesDeliveryTypes.ADDRESS,\n> = BaseDeliveryType & {\n type: T;\n address: LocationValue;\n distanceKm: string;\n technicalControlNeeded: boolean;\n etd?: string; // delivery date, set on the transport\n};\n\nexport const ADDRESS_DELIVERY_FIELDS = [\n 'address',\n 'distanceKm',\n 'technicalControlNeeded',\n 'etd',\n] as const satisfies readonly (keyof AddressDeliveryType)[];\n\nexport type PortDeliverytype = BaseDeliveryType & {\n type: SalesDeliveryTypes.PORT | SalesDeliveryTypes.PORT_AND_SHIP;\n portOriginId: string;\n portDestination?: string;\n shippingCompany?: string;\n portToPortCostPrice: string;\n parkToPortCostPrice?: string;\n portToPortMargin: string;\n ets?: string;\n eta?: string;\n etd?: string;\n shipClosingDate?: string;\n bookingRef?: string;\n deliveryLocation?: string;\n};\n\nexport type SalesDeliveryType = PickUpDeliveryType | AddressDeliveryType | PortDeliverytype;\n\n/** Earlier SDKs also used the sales address enum for purchase collection. Both store address. */\nexport type PurchaseDeliveryType =\n | AddressDeliveryType<SalesDeliveryTypes.ADDRESS | PurchaseDeliveryTypes.ADDRESS>\n | DropOffDeliveryType;\n\nexport type DeliveryLocationValue = Omit<LocationValue, 'addressLine1' | 'city'> & {\n addressLine1: string;\n city: string;\n};\n\nexport type DeliveryRoutesRequest = {\n origin: DeliveryLocationValue;\n destination: DeliveryLocationValue;\n};\n"]}
1
+ {"version":3,"file":"deliveries.js","sourceRoot":"/","sources":["types/deliveries.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAGzC,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,4CAAmB,CAAA;IACnB,0CAAiB,CAAA;AACnB,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;AAED,MAAM,CAAN,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,sCAAgB,CAAA;IAChB,yCAAmB,CAAA;IACnB,mCAAa,CAAA;IACb,mDAA6B,CAAA;AAC/B,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAED,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,qCAAsB,CAAA;AACxB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,wCAAkB,CAAA;IAClB,6CAAuB,CAAA;AACzB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAqCD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS;IACT,YAAY;IACZ,wBAAwB;IACxB,KAAK;CACoD,CAAC","sourcesContent":["import { LocationValue } from '@bisondesk/commons-sdk/types';\n\n/** Supplier drop-off and customer pickup both take place at our park. */\nexport const PARK_DELIVERY_TYPE = 'park';\n\n/** Supplier collection keeps the existing address value in stored transports. */\nexport enum PurchaseDeliveryTypes {\n ADDRESS = 'address',\n DROP_OFF = 'park',\n}\n\nexport enum SalesDeliveryTypes {\n PICK_UP = 'park',\n ADDRESS = 'address',\n PORT = 'port',\n PORT_AND_SHIP = 'portAndShip',\n}\n\nexport enum SpoilerInfo {\n MOUNT = 'mount',\n UNMOUNT = 'unmount',\n NO_ACTION = 'noAction',\n}\n\nexport enum TransportationMode {\n BY_ROAD = 'byRoad',\n ON_LOW_BED = 'onLowBed',\n}\n\ntype BaseDeliveryType = {\n agreedPrice: string;\n spoiler?: SpoilerInfo;\n stackingVehicleNeeded?: boolean;\n detailsStacking?: string;\n};\n\nexport type PickUpDeliveryType = BaseDeliveryType & {\n type: SalesDeliveryTypes.PICK_UP;\n urgent: boolean;\n transportationMode?: TransportationMode;\n detailsBorderCrossing?: string;\n technicalControlNeeded: boolean;\n insuranceNeeded: boolean;\n transitPlateBelgiumNeeded: boolean;\n transitPlateAustriaNeeded: boolean;\n licensePlateNeeded: boolean;\n dateOfPickUpByCustomer?: string;\n};\n\n/** The supplier brings the vehicle to our park without a collection address or distance. */\nexport type DropOffDeliveryType = BaseDeliveryType & {\n type: PurchaseDeliveryTypes.DROP_OFF;\n};\n\nexport type AddressDeliveryType<\n T extends SalesDeliveryTypes.ADDRESS | PurchaseDeliveryTypes.ADDRESS = SalesDeliveryTypes.ADDRESS,\n> = BaseDeliveryType & {\n type: T;\n address: LocationValue;\n distanceKm: string;\n technicalControlNeeded: boolean;\n etd?: string; // delivery date, set on the transport\n};\n\nexport const ADDRESS_DELIVERY_FIELDS = [\n 'address',\n 'distanceKm',\n 'technicalControlNeeded',\n 'etd',\n] as const satisfies readonly (keyof AddressDeliveryType)[];\n\nexport type PortDeliverytype = BaseDeliveryType & {\n type: SalesDeliveryTypes.PORT | SalesDeliveryTypes.PORT_AND_SHIP;\n portOriginId: string;\n portDestination?: string;\n shippingCompany?: string;\n portToPortCostPrice: string;\n parkToPortCostPrice?: string;\n portToPortMargin: string;\n ets?: string;\n eta?: string;\n etd?: string;\n shipClosingDate?: string;\n bookingRef?: string;\n deliveryLocation?: string;\n};\n\nexport type SalesDeliveryType = PickUpDeliveryType | AddressDeliveryType | PortDeliverytype;\n\n/** Earlier SDKs also used the sales address enum for purchase collection. Both store address. */\nexport type PurchaseDeliveryType =\n | AddressDeliveryType<SalesDeliveryTypes.ADDRESS | PurchaseDeliveryTypes.ADDRESS>\n | DropOffDeliveryType;\n\nexport type DeliveryLocationValue = Omit<LocationValue, 'addressLine1' | 'city'> & {\n addressLine1: string;\n city: string;\n};\n\nexport type DeliveryRoutesRequest = {\n origin: DeliveryLocationValue;\n destination: DeliveryLocationValue;\n};\n"]}
@@ -58,6 +58,16 @@ export declare const debtorsDossierStatusToDateFieldMap: Record<DebtorsDossierSt
58
58
  date: keyof DossierStatusLogFields;
59
59
  author: keyof DossierStatusLogFields;
60
60
  } | null>;
61
+ export type ReminderWhatsappAttemptStatus = 'SENT' | 'DELIVERED' | 'FAILED' | 'SKIPPED';
62
+ export type ReminderWhatsappAttempt = {
63
+ dedupId: string;
64
+ templateId: string;
65
+ phone: string;
66
+ riskLevel: number;
67
+ sentAt: string;
68
+ status: ReminderWhatsappAttemptStatus;
69
+ failureReason?: string;
70
+ };
61
71
  export type DebtorAutoFollowUp = {
62
72
  id: string;
63
73
  organizationId: string;
@@ -65,6 +75,7 @@ export type DebtorAutoFollowUp = {
65
75
  status: 'ONGOING' | 'ERROR' | 'SUCCESS' | 'EXPIRED' | 'DISCARDED';
66
76
  discardReason?: string;
67
77
  emails: EmailMessage[];
78
+ whatsapps?: ReminderWhatsappAttempt[];
68
79
  createdAt: string;
69
80
  modifiedAt: string;
70
81
  completedAt?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"leasing-debtors.d.ts","sourceRoot":"/","sources":["types/leasing-debtors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"leasing-debtors.d.ts","sourceRoot":"/","sources":["types/leasing-debtors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"leasing-debtors.js","sourceRoot":"/","sources":["types/leasing-debtors.ts"],"names":[],"mappings":"AAsDA,MAAM,CAAN,IAAY,oBAQX;AARD,WAAY,oBAAoB;IAC9B,uDAA+B,CAAA;IAC/B,2CAAmB,CAAA;IACnB,+DAAuC,CAAA;IACvC,6CAAqB,CAAA;IACrB,yDAAiC,CAAA;IACjC,2CAAmB,CAAA;IACnB,6CAAqB,CAAA;AACvB,CAAC,EARW,oBAAoB,KAApB,oBAAoB,QAQ/B;AAED,MAAM,CAAC,MAAM,kCAAkC,GAG3C;IACF,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,IAAI;IAC1C,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE;IAC1E,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE;IACxF,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE;IAC7E,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAC3F,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE;IAC7E,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;CACzE,CAAC;AA+BF,MAAM,CAAN,IAAY,qBAQX;AARD,WAAY,qBAAqB;IAC/B,sDAA6B,CAAA;IAC7B,sDAA6B,CAAA;IAC7B,0CAAiB,CAAA;IACjB,wDAA+B,CAAA;IAC/B,8DAAqC,CAAA;IACrC,gEAAuC,CAAA;IACvC,0CAAiB,CAAA;AACnB,CAAC,EARW,qBAAqB,KAArB,qBAAqB,QAQhC;AAyHD,MAAM,CAAN,IAAY,kBAYX;AAZD,WAAY,kBAAkB;IAC5B,+CAAyB,CAAA;IACzB,2DAAqC,CAAA;IACrC,uDAAiC,CAAA;IACjC,qCAAe,CAAA;IACf,2CAAqB,CAAA;IACrB,2CAAqB,CAAA;IACrB,iDAA2B,CAAA;IAC3B,+CAAyB,CAAA;IACzB,2DAAqC,CAAA;IACrC,mEAA6C,CAAA;IAC7C,yCAAmB,CAAA;AACrB,CAAC,EAZW,kBAAkB,KAAlB,kBAAkB,QAY7B;AAkHD,MAAM,CAAC,MAAM,yBAAyB,GAA2B;IAC/D,oBAAoB,CAAC,aAAa;IAClC,oBAAoB,CAAC,OAAO;IAC5B,oBAAoB,CAAC,iBAAiB;IACtC,oBAAoB,CAAC,QAAQ;IAC7B,oBAAoB,CAAC,cAAc;IACnC,oBAAoB,CAAC,OAAO;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AAEvE,MAAM,CAAC,MAAM,8BAA8B,GAA2B;IACpE,oBAAoB,CAAC,QAAQ;CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,GAAG,yBAAyB;IAC5B,GAAG,8BAA8B;CAClC,CAAC","sourcesContent":["import { EmailMessage } from '@bisondesk/commons-sdk/messages';\nimport { NextList, PaginatedList } from '@bisondesk/commons-sdk/types';\nimport { Contact, Organization } from './crm.js';\nimport { LeasingContract } from './leasing.js';\nimport { BaseSearchRequest, SortFilter, SortOrder } from './search.js';\nimport { DataRecord, ReferenceData } from './utils.js';\n\nexport type MonthData = {\n activeContractIds: string[];\n date: string; // YYYY-MM\n overdueAmount: string;\n unpaidAmount: string;\n overdueContractIds: string[];\n overdueInvoiceIds: string[];\n riskLevel: number;\n monthlyInvoicedAmount: string;\n // Non-leasing (\"extra\") debt for this month, computed as-of month-end.\n nonLeasingOverdueAmount: string;\n nonLeasingUnpaidAmount: string;\n};\n\nexport type DebtorInfo = {\n clientId: string;\n branchIds: string[];\n months: MonthData[];\n\n // properties related to the current month\n activeContracts: number;\n overdueAmount: string;\n nonLeasingOverdueAmount: string;\n nonLeasingUnpaidAmount: string;\n unpaidAmount: string;\n overdueContracts: number;\n riskLevel: number;\n monthlyInvoicedAmount: string;\n};\n\nexport type SearchDebtorInfo = {\n org: Organization;\n contact?: Contact;\n debtor: DebtorInfo;\n activeDebtorDossier?: {\n dossier: DebtorsDossier;\n hasDossier: boolean;\n lastActivityAt?: string;\n lastActivityBy?: string;\n hasActivitiesLogged: boolean;\n };\n custom: {\n riskLevelLabel: string;\n hasActiveContracts: boolean;\n };\n};\n\nexport enum DebtorsDossierStatus {\n AUTO_REMINDER = 'auto_reminder',\n OVERDUE = 'overdue',\n CONTACT_ATTEMPTED = 'contact_attempted',\n DIALOGUE = 'dialogue',\n PROMISE_TO_PAY = 'promise_to_pay',\n FAILURE = 'failure',\n RESOLVED = 'resolved',\n}\n\nexport const debtorsDossierStatusToDateFieldMap: Record<\n DebtorsDossierStatus,\n { date: keyof DossierStatusLogFields; author: keyof DossierStatusLogFields } | null\n> = {\n [DebtorsDossierStatus.AUTO_REMINDER]: null,\n [DebtorsDossierStatus.OVERDUE]: { date: 'overdueAt', author: 'overdueBy' },\n [DebtorsDossierStatus.CONTACT_ATTEMPTED]: { date: 'contactedAt', author: 'contactedBy' },\n [DebtorsDossierStatus.DIALOGUE]: { date: 'dialogueAt', author: 'dialogueBy' },\n [DebtorsDossierStatus.PROMISE_TO_PAY]: { date: 'promiseToPayAt', author: 'promiseToPayBy' },\n [DebtorsDossierStatus.RESOLVED]: { date: 'resolvedAt', author: 'resolvedBy' },\n [DebtorsDossierStatus.FAILURE]: { date: 'failedAt', author: 'failedBy' },\n};\n\n/******\n * Auto Follow-Up Types\n ******/\n\nexport type DebtorAutoFollowUp = {\n id: string;\n organizationId: string;\n organizationName: string;\n status: 'ONGOING' | 'ERROR' | 'SUCCESS' | 'EXPIRED' | 'DISCARDED';\n discardReason?: string;\n emails: EmailMessage[];\n createdAt: string;\n modifiedAt: string;\n completedAt?: string;\n nextActionAt: string;\n riskLevel: number;\n};\n\nexport type ListOverdueRemindersResponse = PaginatedList<DebtorAutoFollowUp, ReferenceData>;\nexport type ListOverdueRemindersRequest = {\n offset: number;\n limit: number;\n sortBy: SortFilter;\n};\n\n/******\n * Debtor Dossier Types\n ******/\n\nexport enum DebtorsDossierActions {\n SET_METADATA = 'set_metadata',\n ADD_ACTIVITY = 'add_activity',\n FINISH = 'finish',\n SET_DOCUMENTS = 'set_documents',\n SET_PAYMENT_PLAN = 'set_payment_plan',\n SET_LEGAL_DOSSIER = 'set_legal_dossier',\n REOPEN = 'reopen',\n}\n\nexport type DossierStatusLogFields = {\n failedAt?: string;\n failedBy?: string;\n resolvedAt?: string;\n contactedAt?: string;\n contactedBy?: string;\n overdueAt?: string;\n overdueBy?: string;\n resolvedBy?: string;\n dialogueAt?: string;\n dialogueBy?: string;\n promiseToPayAt?: string;\n promiseToPayBy?: string;\n};\n\nexport type BaseDebtorsDossier = {\n organizationId: string;\n tags: string[];\n origin: 'manual' | 'auto';\n autoFollowUpId?: string;\n administrativeUserId?: string;\n branchId: string;\n tenantId: string;\n};\nexport type DebtorsDossierStatusAudit = {\n from: DebtorsDossierStatus;\n to: DebtorsDossierStatus;\n changedAt: string;\n changedBy: string;\n};\n\nexport type DebtorsDossier = BaseDebtorsDossier &\n DossierStatusLogFields & {\n id: string;\n createdAt: string;\n createdBy: string;\n updatedAt: string;\n updatedBy: string;\n status: DebtorsDossierStatus;\n statusAudit: DebtorsDossierStatusAudit[];\n };\n\nexport type NewDebtorsDossier = BaseDebtorsDossier & {\n id?: undefined;\n createdBy?: undefined;\n createdAt?: undefined;\n updatedBy?: undefined;\n updatedAt?: undefined;\n};\n\nexport type DebtorsDossierBff = {\n dossier: DataRecord<DebtorsDossier>;\n organization?: Organization;\n leasingContracts: LeasingContract[];\n debt?: DebtorInfo;\n paymentPlan?: DebtorsPaymentPlan;\n legalDossier?: LegalDossier;\n trackAndTraceDevices: {\n /* odometer: TrackAndTraceOdometerData;\n device: TrackAndTraceDevice; */\n }[];\n};\n\nexport type UpdateDebtorsDossier = Partial<\n Pick<DebtorsDossier, 'status' | 'tags' | 'branchId' | 'organizationId'>\n> & {\n overdue?: boolean;\n resolve?: boolean;\n administrativeUserId?: string | null;\n};\n\n/******\n * Payment Plan Types\n ******/\n\nexport type DebtorsPaymentPlan = {\n id: string;\n debtorDossierId: string;\n\n notes: {\n content: string;\n createdAt: string;\n createdBy: string;\n }[];\n\n reminders?: {\n startDate: string; // ISO date string\n frequency: {\n every: number;\n period: 'days' | 'weeks' | 'months';\n };\n endCondition:\n | {\n endDate: string; // ISO date string\n }\n | {\n occurrences: number; // Number of reminders to send\n };\n };\n\n createdAt: string;\n createdBy: string;\n updatedAt: string;\n updatedBy: string;\n};\n\nexport type NewPaymentPlan = Omit<\n DebtorsPaymentPlan,\n 'id' | 'createdAt' | 'updatedAt' | 'createdBy' | 'updatedBy' | 'notes'\n> & { notes?: string };\n\nexport type UpdatePaymentPlan = Partial<Pick<DebtorsPaymentPlan, 'reminders'>> & {\n newNote?: string;\n};\n\n/******\n * Legal Dossier Types\n ******/\n\nexport enum LegalDossierStatus {\n ASSESSMENT = 'assessment',\n PRE_LEGAL_NOTICE = 'pre_legal_notice',\n SENT_TO_LAWYER = 'sent_to_lawyer',\n FILED = 'filed',\n IN_COURT = 'in_court',\n JUDGMENT = 'judgment',\n ENFORCEMENT = 'enforcement',\n SETTLEMENT = 'settlement',\n CLOSED_RECOVERED = 'closed_recovered',\n CLOSED_UNRECOVERABLE = 'closed_unrecoverable',\n ON_HOLD = 'on_hold',\n}\n\nexport type LegalDossier = {\n id: string;\n debtorDossierId: string;\n caseNumber?: string;\n courtDate?: string; // ISO date string (YYYY-MM-DD)\n vehicleReportedToPolice?: boolean;\n vehicleReportedToPoliceAt?: string; // ISO timestamp, stamped server-side\n notes?: string;\n createdAt: string;\n createdBy: string;\n updatedAt: string;\n updatedBy: string;\n status: LegalDossierStatus;\n};\n\nexport type NewLegalDossier = Omit<\n LegalDossier,\n 'id' | 'createdAt' | 'updatedAt' | 'createdBy' | 'updatedBy'\n>;\n\nexport type UpdateLegalDossier = Partial<\n Pick<LegalDossier, 'caseNumber' | 'courtDate' | 'status' | 'notes' | 'vehicleReportedToPolice'>\n>;\n\n/******\n * Debtor Dossier Events\n ******/\n\nexport type DebtorsDossierCreateEvent = {\n action: 'created';\n data: DebtorsDossier;\n previousData?: undefined;\n tenantId: string;\n userId: string;\n};\n\nexport type DebtorsDossierUpdateEvent = {\n action: 'updated';\n data: DebtorsDossier;\n previousData: DebtorsDossier;\n tenantId: string;\n userId: string;\n};\n\nexport type DebtorsDossierDeleteEvent = {\n action: 'deleted';\n data?: undefined;\n previousData: DebtorsDossier;\n tenantId: string;\n userId: string;\n};\n\nexport type DebtorsDossierEvent =\n | DebtorsDossierCreateEvent\n | DebtorsDossierUpdateEvent\n | DebtorsDossierDeleteEvent;\n\n/************\n *\n * Search\n */\n\nexport type SearchDebtorsDossier = {\n contact?: Contact;\n debtorsDossier: DebtorsDossier;\n org?: Organization;\n legalDossier?: LegalDossier;\n paymentPlan?: DebtorsPaymentPlan;\n hasPaymentPlan?: boolean;\n branchIds?: string[];\n tasks: {\n totalTasks: number;\n openTasks: number;\n nextDueAt?: string;\n };\n overdue: {\n riskLevel: number;\n riskLevelLabel?: string;\n remindersSent: number;\n hasActiveLdrs?: boolean;\n };\n};\n\n/************\n *\n * Kanban\n */\n\nexport type DebtorsDossierKanbanColumn = {\n status: DebtorsDossierStatus;\n results: SearchDebtorsDossier[];\n totalCount: number;\n totalValue: string;\n};\n\nexport type MSearchDebtorsDossierKanbanColumn = {\n column: DebtorsDossierKanbanColumn;\n nextToken?: string;\n};\n\nexport type KanbanDebtorsDossierSearchRequest = BaseSearchRequest & {\n nextTokens?: Record<string, string | undefined>;\n statusSortBy?: Record<DebtorsDossierStatus, { fieldId: string; order: SortOrder }[]>;\n};\n\nexport type KanbanDebtorsDossierNextList = Omit<\n NextList<DebtorsDossierKanbanColumn, ReferenceData>,\n 'nextToken'\n> & {\n nextTokens?: Record<string, string | undefined>;\n};\n\nexport const DebtorsDossierStatusOrder: DebtorsDossierStatus[] = [\n DebtorsDossierStatus.AUTO_REMINDER,\n DebtorsDossierStatus.OVERDUE,\n DebtorsDossierStatus.CONTACT_ATTEMPTED,\n DebtorsDossierStatus.DIALOGUE,\n DebtorsDossierStatus.PROMISE_TO_PAY,\n DebtorsDossierStatus.FAILURE,\n];\n\nexport const DebtorsDossierWonColumnId = DebtorsDossierStatus.RESOLVED;\n\nexport const DebtorsDossierKanbanEndColumns: DebtorsDossierStatus[] = [\n DebtorsDossierStatus.RESOLVED,\n];\n\nexport const DebtorsDossierKanbanColumns = [\n ...DebtorsDossierStatusOrder,\n ...DebtorsDossierKanbanEndColumns,\n];\n"]}
1
+ {"version":3,"file":"leasing-debtors.js","sourceRoot":"/","sources":["types/leasing-debtors.ts"],"names":[],"mappings":"AAsDA,MAAM,CAAN,IAAY,oBAQX;AARD,WAAY,oBAAoB;IAC9B,uDAA+B,CAAA;IAC/B,2CAAmB,CAAA;IACnB,+DAAuC,CAAA;IACvC,6CAAqB,CAAA;IACrB,yDAAiC,CAAA;IACjC,2CAAmB,CAAA;IACnB,6CAAqB,CAAA;AACvB,CAAC,EARW,oBAAoB,KAApB,oBAAoB,QAQ/B;AAED,MAAM,CAAC,MAAM,kCAAkC,GAG3C;IACF,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,IAAI;IAC1C,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE;IAC1E,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE;IACxF,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE;IAC7E,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAC3F,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE;IAC7E,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;CACzE,CAAC;AA6CF,MAAM,CAAN,IAAY,qBAQX;AARD,WAAY,qBAAqB;IAC/B,sDAA6B,CAAA;IAC7B,sDAA6B,CAAA;IAC7B,0CAAiB,CAAA;IACjB,wDAA+B,CAAA;IAC/B,8DAAqC,CAAA;IACrC,gEAAuC,CAAA;IACvC,0CAAiB,CAAA;AACnB,CAAC,EARW,qBAAqB,KAArB,qBAAqB,QAQhC;AAyHD,MAAM,CAAN,IAAY,kBAYX;AAZD,WAAY,kBAAkB;IAC5B,+CAAyB,CAAA;IACzB,2DAAqC,CAAA;IACrC,uDAAiC,CAAA;IACjC,qCAAe,CAAA;IACf,2CAAqB,CAAA;IACrB,2CAAqB,CAAA;IACrB,iDAA2B,CAAA;IAC3B,+CAAyB,CAAA;IACzB,2DAAqC,CAAA;IACrC,mEAA6C,CAAA;IAC7C,yCAAmB,CAAA;AACrB,CAAC,EAZW,kBAAkB,KAAlB,kBAAkB,QAY7B;AAkHD,MAAM,CAAC,MAAM,yBAAyB,GAA2B;IAC/D,oBAAoB,CAAC,aAAa;IAClC,oBAAoB,CAAC,OAAO;IAC5B,oBAAoB,CAAC,iBAAiB;IACtC,oBAAoB,CAAC,QAAQ;IAC7B,oBAAoB,CAAC,cAAc;IACnC,oBAAoB,CAAC,OAAO;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AAEvE,MAAM,CAAC,MAAM,8BAA8B,GAA2B;IACpE,oBAAoB,CAAC,QAAQ;CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,GAAG,yBAAyB;IAC5B,GAAG,8BAA8B;CAClC,CAAC","sourcesContent":["import { EmailMessage } from '@bisondesk/commons-sdk/messages';\nimport { NextList, PaginatedList } from '@bisondesk/commons-sdk/types';\nimport { Contact, Organization } from './crm.js';\nimport { LeasingContract } from './leasing.js';\nimport { BaseSearchRequest, SortFilter, SortOrder } from './search.js';\nimport { DataRecord, ReferenceData } from './utils.js';\n\nexport type MonthData = {\n activeContractIds: string[];\n date: string; // YYYY-MM\n overdueAmount: string;\n unpaidAmount: string;\n overdueContractIds: string[];\n overdueInvoiceIds: string[];\n riskLevel: number;\n monthlyInvoicedAmount: string;\n // Non-leasing (\"extra\") debt for this month, computed as-of month-end.\n nonLeasingOverdueAmount: string;\n nonLeasingUnpaidAmount: string;\n};\n\nexport type DebtorInfo = {\n clientId: string;\n branchIds: string[];\n months: MonthData[];\n\n // properties related to the current month\n activeContracts: number;\n overdueAmount: string;\n nonLeasingOverdueAmount: string;\n nonLeasingUnpaidAmount: string;\n unpaidAmount: string;\n overdueContracts: number;\n riskLevel: number;\n monthlyInvoicedAmount: string;\n};\n\nexport type SearchDebtorInfo = {\n org: Organization;\n contact?: Contact;\n debtor: DebtorInfo;\n activeDebtorDossier?: {\n dossier: DebtorsDossier;\n hasDossier: boolean;\n lastActivityAt?: string;\n lastActivityBy?: string;\n hasActivitiesLogged: boolean;\n };\n custom: {\n riskLevelLabel: string;\n hasActiveContracts: boolean;\n };\n};\n\nexport enum DebtorsDossierStatus {\n AUTO_REMINDER = 'auto_reminder',\n OVERDUE = 'overdue',\n CONTACT_ATTEMPTED = 'contact_attempted',\n DIALOGUE = 'dialogue',\n PROMISE_TO_PAY = 'promise_to_pay',\n FAILURE = 'failure',\n RESOLVED = 'resolved',\n}\n\nexport const debtorsDossierStatusToDateFieldMap: Record<\n DebtorsDossierStatus,\n { date: keyof DossierStatusLogFields; author: keyof DossierStatusLogFields } | null\n> = {\n [DebtorsDossierStatus.AUTO_REMINDER]: null,\n [DebtorsDossierStatus.OVERDUE]: { date: 'overdueAt', author: 'overdueBy' },\n [DebtorsDossierStatus.CONTACT_ATTEMPTED]: { date: 'contactedAt', author: 'contactedBy' },\n [DebtorsDossierStatus.DIALOGUE]: { date: 'dialogueAt', author: 'dialogueBy' },\n [DebtorsDossierStatus.PROMISE_TO_PAY]: { date: 'promiseToPayAt', author: 'promiseToPayBy' },\n [DebtorsDossierStatus.RESOLVED]: { date: 'resolvedAt', author: 'resolvedBy' },\n [DebtorsDossierStatus.FAILURE]: { date: 'failedAt', author: 'failedBy' },\n};\n\n/******\n * Auto Follow-Up Types\n ******/\n\nexport type ReminderWhatsappAttemptStatus = 'SENT' | 'DELIVERED' | 'FAILED' | 'SKIPPED';\n\n// see docs/adr/0026-whatsapp-leasing-notifications-alongside-email.md\nexport type ReminderWhatsappAttempt = {\n dedupId: string;\n templateId: string;\n phone: string;\n riskLevel: number;\n sentAt: string;\n status: ReminderWhatsappAttemptStatus;\n failureReason?: string;\n};\n\nexport type DebtorAutoFollowUp = {\n id: string;\n organizationId: string;\n organizationName: string;\n status: 'ONGOING' | 'ERROR' | 'SUCCESS' | 'EXPIRED' | 'DISCARDED';\n discardReason?: string;\n emails: EmailMessage[];\n whatsapps?: ReminderWhatsappAttempt[];\n createdAt: string;\n modifiedAt: string;\n completedAt?: string;\n nextActionAt: string;\n riskLevel: number;\n};\n\nexport type ListOverdueRemindersResponse = PaginatedList<DebtorAutoFollowUp, ReferenceData>;\nexport type ListOverdueRemindersRequest = {\n offset: number;\n limit: number;\n sortBy: SortFilter;\n};\n\n/******\n * Debtor Dossier Types\n ******/\n\nexport enum DebtorsDossierActions {\n SET_METADATA = 'set_metadata',\n ADD_ACTIVITY = 'add_activity',\n FINISH = 'finish',\n SET_DOCUMENTS = 'set_documents',\n SET_PAYMENT_PLAN = 'set_payment_plan',\n SET_LEGAL_DOSSIER = 'set_legal_dossier',\n REOPEN = 'reopen',\n}\n\nexport type DossierStatusLogFields = {\n failedAt?: string;\n failedBy?: string;\n resolvedAt?: string;\n contactedAt?: string;\n contactedBy?: string;\n overdueAt?: string;\n overdueBy?: string;\n resolvedBy?: string;\n dialogueAt?: string;\n dialogueBy?: string;\n promiseToPayAt?: string;\n promiseToPayBy?: string;\n};\n\nexport type BaseDebtorsDossier = {\n organizationId: string;\n tags: string[];\n origin: 'manual' | 'auto';\n autoFollowUpId?: string;\n administrativeUserId?: string;\n branchId: string;\n tenantId: string;\n};\nexport type DebtorsDossierStatusAudit = {\n from: DebtorsDossierStatus;\n to: DebtorsDossierStatus;\n changedAt: string;\n changedBy: string;\n};\n\nexport type DebtorsDossier = BaseDebtorsDossier &\n DossierStatusLogFields & {\n id: string;\n createdAt: string;\n createdBy: string;\n updatedAt: string;\n updatedBy: string;\n status: DebtorsDossierStatus;\n statusAudit: DebtorsDossierStatusAudit[];\n };\n\nexport type NewDebtorsDossier = BaseDebtorsDossier & {\n id?: undefined;\n createdBy?: undefined;\n createdAt?: undefined;\n updatedBy?: undefined;\n updatedAt?: undefined;\n};\n\nexport type DebtorsDossierBff = {\n dossier: DataRecord<DebtorsDossier>;\n organization?: Organization;\n leasingContracts: LeasingContract[];\n debt?: DebtorInfo;\n paymentPlan?: DebtorsPaymentPlan;\n legalDossier?: LegalDossier;\n trackAndTraceDevices: {\n /* odometer: TrackAndTraceOdometerData;\n device: TrackAndTraceDevice; */\n }[];\n};\n\nexport type UpdateDebtorsDossier = Partial<\n Pick<DebtorsDossier, 'status' | 'tags' | 'branchId' | 'organizationId'>\n> & {\n overdue?: boolean;\n resolve?: boolean;\n administrativeUserId?: string | null;\n};\n\n/******\n * Payment Plan Types\n ******/\n\nexport type DebtorsPaymentPlan = {\n id: string;\n debtorDossierId: string;\n\n notes: {\n content: string;\n createdAt: string;\n createdBy: string;\n }[];\n\n reminders?: {\n startDate: string; // ISO date string\n frequency: {\n every: number;\n period: 'days' | 'weeks' | 'months';\n };\n endCondition:\n | {\n endDate: string; // ISO date string\n }\n | {\n occurrences: number; // Number of reminders to send\n };\n };\n\n createdAt: string;\n createdBy: string;\n updatedAt: string;\n updatedBy: string;\n};\n\nexport type NewPaymentPlan = Omit<\n DebtorsPaymentPlan,\n 'id' | 'createdAt' | 'updatedAt' | 'createdBy' | 'updatedBy' | 'notes'\n> & { notes?: string };\n\nexport type UpdatePaymentPlan = Partial<Pick<DebtorsPaymentPlan, 'reminders'>> & {\n newNote?: string;\n};\n\n/******\n * Legal Dossier Types\n ******/\n\nexport enum LegalDossierStatus {\n ASSESSMENT = 'assessment',\n PRE_LEGAL_NOTICE = 'pre_legal_notice',\n SENT_TO_LAWYER = 'sent_to_lawyer',\n FILED = 'filed',\n IN_COURT = 'in_court',\n JUDGMENT = 'judgment',\n ENFORCEMENT = 'enforcement',\n SETTLEMENT = 'settlement',\n CLOSED_RECOVERED = 'closed_recovered',\n CLOSED_UNRECOVERABLE = 'closed_unrecoverable',\n ON_HOLD = 'on_hold',\n}\n\nexport type LegalDossier = {\n id: string;\n debtorDossierId: string;\n caseNumber?: string;\n courtDate?: string; // ISO date string (YYYY-MM-DD)\n vehicleReportedToPolice?: boolean;\n vehicleReportedToPoliceAt?: string; // ISO timestamp, stamped server-side\n notes?: string;\n createdAt: string;\n createdBy: string;\n updatedAt: string;\n updatedBy: string;\n status: LegalDossierStatus;\n};\n\nexport type NewLegalDossier = Omit<\n LegalDossier,\n 'id' | 'createdAt' | 'updatedAt' | 'createdBy' | 'updatedBy'\n>;\n\nexport type UpdateLegalDossier = Partial<\n Pick<LegalDossier, 'caseNumber' | 'courtDate' | 'status' | 'notes' | 'vehicleReportedToPolice'>\n>;\n\n/******\n * Debtor Dossier Events\n ******/\n\nexport type DebtorsDossierCreateEvent = {\n action: 'created';\n data: DebtorsDossier;\n previousData?: undefined;\n tenantId: string;\n userId: string;\n};\n\nexport type DebtorsDossierUpdateEvent = {\n action: 'updated';\n data: DebtorsDossier;\n previousData: DebtorsDossier;\n tenantId: string;\n userId: string;\n};\n\nexport type DebtorsDossierDeleteEvent = {\n action: 'deleted';\n data?: undefined;\n previousData: DebtorsDossier;\n tenantId: string;\n userId: string;\n};\n\nexport type DebtorsDossierEvent =\n | DebtorsDossierCreateEvent\n | DebtorsDossierUpdateEvent\n | DebtorsDossierDeleteEvent;\n\n/************\n *\n * Search\n */\n\nexport type SearchDebtorsDossier = {\n contact?: Contact;\n debtorsDossier: DebtorsDossier;\n org?: Organization;\n legalDossier?: LegalDossier;\n paymentPlan?: DebtorsPaymentPlan;\n hasPaymentPlan?: boolean;\n branchIds?: string[];\n tasks: {\n totalTasks: number;\n openTasks: number;\n nextDueAt?: string;\n };\n overdue: {\n riskLevel: number;\n riskLevelLabel?: string;\n remindersSent: number;\n hasActiveLdrs?: boolean;\n };\n};\n\n/************\n *\n * Kanban\n */\n\nexport type DebtorsDossierKanbanColumn = {\n status: DebtorsDossierStatus;\n results: SearchDebtorsDossier[];\n totalCount: number;\n totalValue: string;\n};\n\nexport type MSearchDebtorsDossierKanbanColumn = {\n column: DebtorsDossierKanbanColumn;\n nextToken?: string;\n};\n\nexport type KanbanDebtorsDossierSearchRequest = BaseSearchRequest & {\n nextTokens?: Record<string, string | undefined>;\n statusSortBy?: Record<DebtorsDossierStatus, { fieldId: string; order: SortOrder }[]>;\n};\n\nexport type KanbanDebtorsDossierNextList = Omit<\n NextList<DebtorsDossierKanbanColumn, ReferenceData>,\n 'nextToken'\n> & {\n nextTokens?: Record<string, string | undefined>;\n};\n\nexport const DebtorsDossierStatusOrder: DebtorsDossierStatus[] = [\n DebtorsDossierStatus.AUTO_REMINDER,\n DebtorsDossierStatus.OVERDUE,\n DebtorsDossierStatus.CONTACT_ATTEMPTED,\n DebtorsDossierStatus.DIALOGUE,\n DebtorsDossierStatus.PROMISE_TO_PAY,\n DebtorsDossierStatus.FAILURE,\n];\n\nexport const DebtorsDossierWonColumnId = DebtorsDossierStatus.RESOLVED;\n\nexport const DebtorsDossierKanbanEndColumns: DebtorsDossierStatus[] = [\n DebtorsDossierStatus.RESOLVED,\n];\n\nexport const DebtorsDossierKanbanColumns = [\n ...DebtorsDossierStatusOrder,\n ...DebtorsDossierKanbanEndColumns,\n];\n"]}
@@ -30,6 +30,7 @@ export declare enum TenantModule {
30
30
  TrackAndTrace = "track_and_trace",
31
31
  Bootstrap = "bootstrap",
32
32
  WhatsappCrisp = "whatsapp_crisp",
33
+ WhatsappNotifications = "whatsapp_notifications",
33
34
  Hexon = "hexon",
34
35
  DeliveryConfirmation = "delivery_confirmation",
35
36
  Transport = "transport",
@@ -1 +1 @@
1
- {"version":3,"file":"tenants.d.ts","sourceRoot":"/","sources":["types/tenants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenants.d.ts","sourceRoot":"/","sources":["types/tenants.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ export var TenantModule;
20
20
  TenantModule["TrackAndTrace"] = "track_and_trace";
21
21
  TenantModule["Bootstrap"] = "bootstrap";
22
22
  TenantModule["WhatsappCrisp"] = "whatsapp_crisp";
23
+ TenantModule["WhatsappNotifications"] = "whatsapp_notifications";
23
24
  TenantModule["Hexon"] = "hexon";
24
25
  TenantModule["DeliveryConfirmation"] = "delivery_confirmation";
25
26
  TenantModule["Transport"] = "transport";
@@ -1 +1 @@
1
- {"version":3,"file":"tenants.js","sourceRoot":"/","sources":["types/tenants.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAN,IAAY,YAmDX;AAnDD,WAAY,YAAY;IACtB,iDAAiC,CAAA;IACjC,2BAAW,CAAA;IAOX,0CAA0B,CAAA;IAC1B,2BAAW,CAAA;IACX,6BAAa,CAAA;IAMb,0CAA0B,CAAA;IAQ1B,4CAA4B,CAAA;IAC5B,+BAAe,CAAA;IACf,mCAAmB,CAAA;IACnB,yEAAyD,CAAA;IACzD,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;IAQrB,6CAA6B,CAAA;IAC7B,+CAA+B,CAAA;IAC/B,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,+BAAe,CAAA;IACf,iDAAiC,CAAA;IACjC,uCAAuB,CAAA;IACvB,gDAAgC,CAAA;IAChC,+BAAe,CAAA;IACf,8DAA8C,CAAA;IAC9C,uCAAuB,CAAA;IACvB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;AACzB,CAAC,EAnDW,YAAY,KAAZ,YAAY,QAmDvB;AAGD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC","sourcesContent":["import { CognitoInfo, LocationValue, Region } from '@bisondesk/commons-sdk/types';\nimport { OpportunityType } from '../constants.js';\n\nexport type PublicTenant = {\n defaultCountry: string;\n defaultCurrency: string;\n defaultLanguage: string;\n id: string; // the id is provided on creation bc we assume tenants will be created by someone on the team\n name: string;\n region: Region;\n subdomains: [string, ...string[]];\n\n // Pay attention to what information is added here since\n // the tenant can be obtained without authentication\n};\n\nexport enum TenantModule {\n Administration = 'administration',\n App = 'app',\n /**\n * The tenant's users can put the app into client mode, hiding the internal-only pages while\n * showing a screen to a customer. Left off for a tenant whose users are themselves the\n * customer: it would hide their sign-out to no purpose, and turning it back off needs a PIN\n * they were never given.\n */\n ClientMode = 'client_mode',\n CRM = 'crm',\n Docs = 'docs',\n /**\n * The app may send email on behalf of this tenant's users, e.g. sharing a vehicle: the\n * sender is the requesting user's own address, so the tenant's email domain must be one we\n * can deliver from. Absent on client tenants — we do not send mail as outsiders.\n */\n EmailShare = 'email_share',\n /**\n * The tenant's users can sign in with Google. It is a tenant fact rather than a user one:\n * `googleEmail` is only filled when the Google address differs from the BisonDesk one, and\n * every pool carries the Google provider regardless, so neither can tell who actually uses it.\n * Absent means password-only, which is what routes those users an emailed invite with a\n * genuine temporary password.\n */\n GoogleLogin = 'google_login',\n Leads = 'leads',\n Leasing = 'leasing',\n LeasingContractGeneration = 'leasing_contract_generation',\n Marketing = 'marketing',\n Insights = 'insights',\n /**\n * The tenant has agreed to exchange deal data through BisonDesk automatically, on top of the\n * bare vehicle distribution: it may be named as the buyer on an intercompany sale, which lets\n * the invoice sync and the purchase reconciliation write a purchase onto its copy. Read on the\n * BUYER only. All group tenants have it today; a supplier or client tenant that wants deal\n * data pushed too joins the exchange by being granted it.\n */\n Intercompany = 'intercompany',\n Opportunities = 'opportunities',\n Offers = 'offers',\n Vehicles = 'vehicles',\n Tasks = 'tasks',\n TrackAndTrace = 'track_and_trace',\n Bootstrap = 'bootstrap',\n WhatsappCrisp = 'whatsapp_crisp',\n Hexon = 'hexon',\n DeliveryConfirmation = 'delivery_confirmation',\n Transport = 'transport',\n Reports = 'reports',\n Prospects = 'prospects',\n}\n\n/** Report tabs a tenant can enable, in canonical order. */\nexport const REPORT_TAB_KEYS = ['sales', 'leasing', 'purchases', 'arrivals'] as const;\n\nexport type ReportTabKey = (typeof REPORT_TAB_KEYS)[number];\n\nexport type Tenant = PublicTenant & {\n cognito?: CognitoInfo;\n languages: [string, ...string[]];\n conglomerate?: string;\n emailDomain: string;\n hyperdmsIds?: string[];\n hyperportalId?: string;\n\n /* deprecated */\n exactAccounting?: boolean;\n\n branches: [Branch, ...Branch[]];\n modules: TenantModule[];\n /**\n * Reports page configuration. `tabs` lists the visible tabs in display order;\n * absent or empty means no reports are configured for the tenant (the page\n * shows a notice instead of tabs).\n */\n reports?: {\n tabs: ReportTabKey[];\n };\n test?: boolean;\n opportunities: {\n types: OpportunityType[];\n };\n /**\n * Reservation expiry for this tenant's OWN vehicles (ADR-0026): the truck's owner sets the\n * clock, wherever the deal runs — for a cross-tenant copy the chain origin's policy\n * applies, whatever opportunity type the tenant selling to the end customer uses.\n * Absent = the default\n * business-day tiers; the tier is still picked by the local customer org's\n * trustworthy/conglomerate flags.\n */\n reservationExpiry?: ReservationExpiryPolicy;\n crm?: {\n vatNumberRequiredForCompanies?: boolean;\n };\n accounting?: {\n costCenterPerLine?: boolean;\n };\n // E.164 Twilio caller ID used as a fallback when a user has no own number configured\n defaultTwilioPhoneNumber?: string;\n deliveryEmail?: string;\n /**\n * The tenant's brand. The vehicle sticker's header band takes `primary`, and so do document\n * headings when the branch letterhead sets no colour, so one layout serves every tenant. The\n * app's navigation shows the tenant name on `primary`, so users working in several tenants\n * can tell them apart. Absent = neutral grey.\n */\n brand?: {\n /** `#rrggbb` */\n primary: string;\n };\n};\n\nexport type ReservationExpiryPolicy =\n | { policy: 'disabled' }\n | { policy: 'days'; generic: number; trustworthy: number; conglomerate: number };\n\nexport type AccountingProvider = 'exact' | 'odoo';\n\nexport type Branch = {\n id: string;\n name: string;\n country: string;\n language: string;\n /* deprecated — use `accounting === 'exact'` instead. Kept until prod cutover. */\n exactAccounting?: boolean;\n accounting?: AccountingProvider;\n currency: string;\n adminNumberPrefix: string;\n stockNumberPrefix: string;\n vatNumber: string;\n contactPerson?: { firstName: string; lastName: string };\n vatRates: {\n standard: string; //percentage value (e.g. 21)\n };\n location: LocationValue;\n\n storecoveExternalId?: number;\n // true if the branch is for a company where VAT is due when the invoice\n // is issued not when the payment is collected (e.g. France, Italy, Spain)\n vatOnDebits?: boolean;\n /**\n * The French issuing duties — e-invoicing, e-reporting and the Encaissée status — are switched\n * on for this branch. Receiving is unaffected and always active.\n *\n * Kept separate from `storecoveExternalId` on purpose: registering a Storecove legal entity only\n * makes a branch reachable, it does not mean the French duties have started. As a PME those\n * duties begin 2027-09-01, so this stays off until then or until a deliberate earlier adoption.\n */\n frIssuingEnabled?: boolean;\n externalQuote?: boolean;\n hyperdmsId?: string;\n internalDealsEnabled?: boolean;\n /** The source invoices the end customer directly; this branch collects payment and earns\n * commission. Intercompany source opportunities for this branch's deals take the buyer\n * deal's own client instead of the branch counterparty org. */\n dropshipping?: boolean;\n};\n\nexport type WhatsappStateResponse = {\n enabled: boolean;\n};\n\n/**\n * What the login page is told about a tenant before anyone has signed in. Reached by subdomain\n * on the one public tenant endpoint, so it carries only what an anonymous visitor may see —\n * mind that when adding to it.\n *\n * The two booleans are answers the page cannot work out for itself: it has no session, so no\n * modules to read. They say which sign-in options to offer and whether WhatsApp sharing is on.\n */\nexport type TenantInfoResponse = {\n tenant: PublicTenant;\n whatsapp: boolean;\n googleLogin: boolean;\n cognito: CognitoInfo;\n};\n"]}
1
+ {"version":3,"file":"tenants.js","sourceRoot":"/","sources":["types/tenants.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAN,IAAY,YAyDX;AAzDD,WAAY,YAAY;IACtB,iDAAiC,CAAA;IACjC,2BAAW,CAAA;IAOX,0CAA0B,CAAA;IAC1B,2BAAW,CAAA;IACX,6BAAa,CAAA;IAMb,0CAA0B,CAAA;IAQ1B,4CAA4B,CAAA;IAC5B,+BAAe,CAAA;IACf,mCAAmB,CAAA;IACnB,yEAAyD,CAAA;IACzD,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;IAQrB,6CAA6B,CAAA;IAC7B,+CAA+B,CAAA;IAC/B,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,+BAAe,CAAA;IACf,iDAAiC,CAAA;IACjC,uCAAuB,CAAA;IACvB,gDAAgC,CAAA;IAMhC,gEAAgD,CAAA;IAChD,+BAAe,CAAA;IACf,8DAA8C,CAAA;IAC9C,uCAAuB,CAAA;IACvB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;AACzB,CAAC,EAzDW,YAAY,KAAZ,YAAY,QAyDvB;AAGD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC","sourcesContent":["import { CognitoInfo, LocationValue, Region } from '@bisondesk/commons-sdk/types';\nimport { OpportunityType } from '../constants.js';\n\nexport type PublicTenant = {\n defaultCountry: string;\n defaultCurrency: string;\n defaultLanguage: string;\n id: string; // the id is provided on creation bc we assume tenants will be created by someone on the team\n name: string;\n region: Region;\n subdomains: [string, ...string[]];\n\n // Pay attention to what information is added here since\n // the tenant can be obtained without authentication\n};\n\nexport enum TenantModule {\n Administration = 'administration',\n App = 'app',\n /**\n * The tenant's users can put the app into client mode, hiding the internal-only pages while\n * showing a screen to a customer. Left off for a tenant whose users are themselves the\n * customer: it would hide their sign-out to no purpose, and turning it back off needs a PIN\n * they were never given.\n */\n ClientMode = 'client_mode',\n CRM = 'crm',\n Docs = 'docs',\n /**\n * The app may send email on behalf of this tenant's users, e.g. sharing a vehicle: the\n * sender is the requesting user's own address, so the tenant's email domain must be one we\n * can deliver from. Absent on client tenants — we do not send mail as outsiders.\n */\n EmailShare = 'email_share',\n /**\n * The tenant's users can sign in with Google. It is a tenant fact rather than a user one:\n * `googleEmail` is only filled when the Google address differs from the BisonDesk one, and\n * every pool carries the Google provider regardless, so neither can tell who actually uses it.\n * Absent means password-only, which is what routes those users an emailed invite with a\n * genuine temporary password.\n */\n GoogleLogin = 'google_login',\n Leads = 'leads',\n Leasing = 'leasing',\n LeasingContractGeneration = 'leasing_contract_generation',\n Marketing = 'marketing',\n Insights = 'insights',\n /**\n * The tenant has agreed to exchange deal data through BisonDesk automatically, on top of the\n * bare vehicle distribution: it may be named as the buyer on an intercompany sale, which lets\n * the invoice sync and the purchase reconciliation write a purchase onto its copy. Read on the\n * BUYER only. All group tenants have it today; a supplier or client tenant that wants deal\n * data pushed too joins the exchange by being granted it.\n */\n Intercompany = 'intercompany',\n Opportunities = 'opportunities',\n Offers = 'offers',\n Vehicles = 'vehicles',\n Tasks = 'tasks',\n TrackAndTrace = 'track_and_trace',\n Bootstrap = 'bootstrap',\n WhatsappCrisp = 'whatsapp_crisp',\n /**\n * The app sends leasing clients WhatsApp messages on its own: the monthly invoice summary and\n * the overdue payment reminders (ADR-0026). Separate from `whatsapp_crisp`, which only lets\n * users send WhatsApp messages themselves. Both flows also need the tenant's Crisp settings.\n */\n WhatsappNotifications = 'whatsapp_notifications',\n Hexon = 'hexon',\n DeliveryConfirmation = 'delivery_confirmation',\n Transport = 'transport',\n Reports = 'reports',\n Prospects = 'prospects',\n}\n\n/** Report tabs a tenant can enable, in canonical order. */\nexport const REPORT_TAB_KEYS = ['sales', 'leasing', 'purchases', 'arrivals'] as const;\n\nexport type ReportTabKey = (typeof REPORT_TAB_KEYS)[number];\n\nexport type Tenant = PublicTenant & {\n cognito?: CognitoInfo;\n languages: [string, ...string[]];\n conglomerate?: string;\n emailDomain: string;\n hyperdmsIds?: string[];\n hyperportalId?: string;\n\n /* deprecated */\n exactAccounting?: boolean;\n\n branches: [Branch, ...Branch[]];\n modules: TenantModule[];\n /**\n * Reports page configuration. `tabs` lists the visible tabs in display order;\n * absent or empty means no reports are configured for the tenant (the page\n * shows a notice instead of tabs).\n */\n reports?: {\n tabs: ReportTabKey[];\n };\n test?: boolean;\n opportunities: {\n types: OpportunityType[];\n };\n /**\n * Reservation expiry for this tenant's OWN vehicles (ADR-0026): the truck's owner sets the\n * clock, wherever the deal runs — for a cross-tenant copy the chain origin's policy\n * applies, whatever opportunity type the tenant selling to the end customer uses.\n * Absent = the default\n * business-day tiers; the tier is still picked by the local customer org's\n * trustworthy/conglomerate flags.\n */\n reservationExpiry?: ReservationExpiryPolicy;\n crm?: {\n vatNumberRequiredForCompanies?: boolean;\n };\n accounting?: {\n costCenterPerLine?: boolean;\n };\n // E.164 Twilio caller ID used as a fallback when a user has no own number configured\n defaultTwilioPhoneNumber?: string;\n deliveryEmail?: string;\n /**\n * The tenant's brand. The vehicle sticker's header band takes `primary`, and so do document\n * headings when the branch letterhead sets no colour, so one layout serves every tenant. The\n * app's navigation shows the tenant name on `primary`, so users working in several tenants\n * can tell them apart. Absent = neutral grey.\n */\n brand?: {\n /** `#rrggbb` */\n primary: string;\n };\n};\n\nexport type ReservationExpiryPolicy =\n | { policy: 'disabled' }\n | { policy: 'days'; generic: number; trustworthy: number; conglomerate: number };\n\nexport type AccountingProvider = 'exact' | 'odoo';\n\nexport type Branch = {\n id: string;\n name: string;\n country: string;\n language: string;\n /* deprecated — use `accounting === 'exact'` instead. Kept until prod cutover. */\n exactAccounting?: boolean;\n accounting?: AccountingProvider;\n currency: string;\n adminNumberPrefix: string;\n stockNumberPrefix: string;\n vatNumber: string;\n contactPerson?: { firstName: string; lastName: string };\n vatRates: {\n standard: string; //percentage value (e.g. 21)\n };\n location: LocationValue;\n\n storecoveExternalId?: number;\n // true if the branch is for a company where VAT is due when the invoice\n // is issued not when the payment is collected (e.g. France, Italy, Spain)\n vatOnDebits?: boolean;\n /**\n * The French issuing duties — e-invoicing, e-reporting and the Encaissée status — are switched\n * on for this branch. Receiving is unaffected and always active.\n *\n * Kept separate from `storecoveExternalId` on purpose: registering a Storecove legal entity only\n * makes a branch reachable, it does not mean the French duties have started. As a PME those\n * duties begin 2027-09-01, so this stays off until then or until a deliberate earlier adoption.\n */\n frIssuingEnabled?: boolean;\n externalQuote?: boolean;\n hyperdmsId?: string;\n internalDealsEnabled?: boolean;\n /** The source invoices the end customer directly; this branch collects payment and earns\n * commission. Intercompany source opportunities for this branch's deals take the buyer\n * deal's own client instead of the branch counterparty org. */\n dropshipping?: boolean;\n};\n\nexport type WhatsappStateResponse = {\n enabled: boolean;\n};\n\n/**\n * What the login page is told about a tenant before anyone has signed in. Reached by subdomain\n * on the one public tenant endpoint, so it carries only what an anonymous visitor may see —\n * mind that when adding to it.\n *\n * The two booleans are answers the page cannot work out for itself: it has no session, so no\n * modules to read. They say which sign-in options to offer and whether WhatsApp sharing is on.\n */\nexport type TenantInfoResponse = {\n tenant: PublicTenant;\n whatsapp: boolean;\n googleLogin: boolean;\n cognito: CognitoInfo;\n};\n"]}
@@ -0,0 +1,10 @@
1
+ import { MarketingChannel } from '../types/crm.js';
2
+ export declare const normalizeEmail: (email: string) => string;
3
+ export declare const normalizeMarketingAddress: (channel: MarketingChannel, address: string) => string;
4
+ export declare const getContactMarketingAddresses: (contact: {
5
+ emails: string[];
6
+ phones: {
7
+ e164: string;
8
+ }[];
9
+ }) => Record<MarketingChannel, string[]>;
10
+ //# sourceMappingURL=marketing-opt-outs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketing-opt-outs.d.ts","sourceRoot":"/","sources":["utils/marketing-opt-outs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,eAAO,MAAM,cAAc,UAAW,MAAM,KAAG,MAAoC,CAAC;AAMpF,eAAO,MAAM,yBAAyB,YAAa,gBAAgB,WAAW,MAAM,KAAG,MACR,CAAC;AAGhF,eAAO,MAAM,4BAA4B,YAAa;IACpD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5B,KAAG,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAGnC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { MarketingChannel } from '../types/crm.js';
2
+ export const normalizeEmail = (email) => email.trim().toLowerCase();
3
+ export const normalizeMarketingAddress = (channel, address) => channel === MarketingChannel.Email ? normalizeEmail(address) : address.trim();
4
+ export const getContactMarketingAddresses = (contact) => ({
5
+ [MarketingChannel.Email]: contact.emails,
6
+ [MarketingChannel.Phone]: contact.phones.map((phone) => phone.e164),
7
+ });
8
+ //# sourceMappingURL=marketing-opt-outs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketing-opt-outs.js","sourceRoot":"/","sources":["utils/marketing-opt-outs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAMpF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,OAAyB,EAAE,OAAe,EAAU,EAAE,CAC9F,OAAO,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAGhF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,OAG5C,EAAsC,EAAE,CAAC,CAAC;IACzC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM;IACxC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;CACpE,CAAC,CAAC","sourcesContent":["import { MarketingChannel } from '../types/crm.js';\n\n/** The form marketing email addresses are stored and compared in: trimmed and lowercased. */\nexport const normalizeEmail = (email: string): string => email.trim().toLowerCase();\n\n/**\n * The form an opted-out address is stored and compared in: email addresses through\n * `normalizeEmail`, phone numbers as the E.164 string contacts already store.\n */\nexport const normalizeMarketingAddress = (channel: MarketingChannel, address: string): string =>\n channel === MarketingChannel.Email ? normalizeEmail(address) : address.trim();\n\n/** A contact's addresses per marketing channel: its email addresses and its phone numbers. */\nexport const getContactMarketingAddresses = (contact: {\n emails: string[];\n phones: { e164: string }[];\n}): Record<MarketingChannel, string[]> => ({\n [MarketingChannel.Email]: contact.emails,\n [MarketingChannel.Phone]: contact.phones.map((phone) => phone.e164),\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=marketing-opt-outs.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketing-opt-outs.test.d.ts","sourceRoot":"/","sources":["utils/marketing-opt-outs.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { MarketingChannel } from '@bisondesk/core-sdk/types/crm';
2
+ import { describe, expect, test } from 'vitest';
3
+ import { getContactMarketingAddresses, normalizeEmail, normalizeMarketingAddress, } from './marketing-opt-outs.js';
4
+ describe('normalizeMarketingAddress', () => {
5
+ test('trims and lowercases an email address', () => {
6
+ expect(normalizeEmail(' Buyer@Example.com ')).toBe('buyer@example.com');
7
+ expect(normalizeMarketingAddress(MarketingChannel.Email, ' Buyer@Example.com ')).toBe('buyer@example.com');
8
+ });
9
+ test('keeps a phone number as its E.164 string', () => {
10
+ expect(normalizeMarketingAddress(MarketingChannel.Phone, ' +32470123456 ')).toBe('+32470123456');
11
+ });
12
+ });
13
+ test('lists a contact’s email addresses and phone numbers per channel', () => {
14
+ expect(getContactMarketingAddresses({
15
+ emails: ['buyer@example.com'],
16
+ phones: [{ e164: '+32470123456' }, { e164: '+32470999999' }],
17
+ })).toEqual({
18
+ [MarketingChannel.Email]: ['buyer@example.com'],
19
+ [MarketingChannel.Phone]: ['+32470123456', '+32470999999'],
20
+ });
21
+ });
22
+ //# sourceMappingURL=marketing-opt-outs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketing-opt-outs.test.js","sourceRoot":"/","sources":["utils/marketing-opt-outs.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EACL,4BAA4B,EAC5B,cAAc,EACd,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAEjC,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACxE,MAAM,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CACnF,mBAAmB,CACpB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAC9E,cAAc,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;IAC3E,MAAM,CACJ,4BAA4B,CAAC;QAC3B,MAAM,EAAE,CAAC,mBAAmB,CAAC;QAC7B,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;KAC7D,CAAC,CACH,CAAC,OAAO,CAAC;QACR,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC;QAC/C,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;KAC3D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { MarketingChannel } from '@bisondesk/core-sdk/types/crm';\nimport { describe, expect, test } from 'vitest';\nimport {\n getContactMarketingAddresses,\n normalizeEmail,\n normalizeMarketingAddress,\n} from './marketing-opt-outs.js';\n\ndescribe('normalizeMarketingAddress', () => {\n test('trims and lowercases an email address', () => {\n expect(normalizeEmail(' Buyer@Example.com ')).toBe('buyer@example.com');\n expect(normalizeMarketingAddress(MarketingChannel.Email, ' Buyer@Example.com ')).toBe(\n 'buyer@example.com',\n );\n });\n\n test('keeps a phone number as its E.164 string', () => {\n expect(normalizeMarketingAddress(MarketingChannel.Phone, ' +32470123456 ')).toBe(\n '+32470123456',\n );\n });\n});\n\ntest('lists a contact’s email addresses and phone numbers per channel', () => {\n expect(\n getContactMarketingAddresses({\n emails: ['buyer@example.com'],\n phones: [{ e164: '+32470123456' }, { e164: '+32470999999' }],\n }),\n ).toEqual({\n [MarketingChannel.Email]: ['buyer@example.com'],\n [MarketingChannel.Phone]: ['+32470123456', '+32470999999'],\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"organizations.d.ts","sourceRoot":"/","sources":["utils/organizations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAoB5D,eAAO,MAAM,mBAAmB,cACnB,MAAM,GAAG,SAAS,UACtB,QAAQ,EAAE,KAChB,OAMF,CAAC"}
1
+ {"version":3,"file":"organizations.d.ts","sourceRoot":"/","sources":["utils/organizations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAmB5D,eAAO,MAAM,mBAAmB,cACnB,MAAM,GAAG,SAAS,UACtB,QAAQ,EAAE,KAChB,OAMF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"organizations.js","sourceRoot":"/","sources":["utils/organizations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAEnC,MAAM,uBAAuB,GAAe;IAC1C,QAAQ,CAAC,cAAc;IACvB,QAAQ,CAAC,cAAc;IACvB,QAAQ,CAAC,KAAK;CACf,CAAC;AAWF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,SAA6B,EAC7B,KAAK,GAAe,EAAE,EACb,EAAE;IACX,IAAI,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,wBAAwB,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACxF,CAAC,CAAC","sourcesContent":["import { AppRoles } from '@bisondesk/commons-sdk/constants';\nimport { addMonths, isBefore } from 'date-fns';\n\nconst ORG_IDENTITY_LOCK_MONTHS = 1;\n\nconst ORG_IDENTITY_EDIT_ROLES: AppRoles[] = [\n AppRoles.Administrative,\n AppRoles.GeneralManager,\n AppRoles.Admin,\n];\n\n/**\n * An organization's name and VAT number are its legal identity: the values invoices and contracts\n * are issued against. They stay open for correction right after creation, then freeze for everyone\n * except ORG_IDENTITY_EDIT_ROLES — by then they are already printed on legal documents.\n *\n * Shared so the server guard and the form's disabled state read one rule. Fails open on a missing\n * createdAt: the org update path doubles as a create path for HyperDMS, and an org with no stored\n * date must not be frozen out of its own first write.\n */\nexport const isOrgIdentityLocked = (\n createdAt: string | undefined,\n roles: AppRoles[] = [],\n): boolean => {\n if (createdAt == null || roles.some((role) => ORG_IDENTITY_EDIT_ROLES.includes(role))) {\n return false;\n }\n\n return isBefore(addMonths(new Date(createdAt), ORG_IDENTITY_LOCK_MONTHS), new Date());\n};\n"]}
1
+ {"version":3,"file":"organizations.js","sourceRoot":"/","sources":["utils/organizations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAEnC,MAAM,uBAAuB,GAAe;IAC1C,QAAQ,CAAC,cAAc;IACvB,QAAQ,CAAC,cAAc;IACvB,QAAQ,CAAC,KAAK;CACf,CAAC;AAUF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,SAA6B,EAC7B,KAAK,GAAe,EAAE,EACb,EAAE;IACX,IAAI,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,wBAAwB,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACxF,CAAC,CAAC","sourcesContent":["import { AppRoles } from '@bisondesk/commons-sdk/constants';\nimport { addMonths, isBefore } from 'date-fns';\n\nconst ORG_IDENTITY_LOCK_MONTHS = 1;\n\nconst ORG_IDENTITY_EDIT_ROLES: AppRoles[] = [\n AppRoles.Administrative,\n AppRoles.GeneralManager,\n AppRoles.Admin,\n];\n\n/**\n * An organization's name and VAT number are its legal identity: the values invoices and contracts\n * are issued against. They stay open for correction right after creation, then freeze for everyone\n * except ORG_IDENTITY_EDIT_ROLES — by then they are already printed on legal documents.\n *\n * Shared so the server guard and the form's disabled state read one rule. Fails open on a missing\n * createdAt, so a new org stays editable in the form until its first save.\n */\nexport const isOrgIdentityLocked = (\n createdAt: string | undefined,\n roles: AppRoles[] = [],\n): boolean => {\n if (createdAt == null || roles.some((role) => ORG_IDENTITY_EDIT_ROLES.includes(role))) {\n return false;\n }\n\n return isBefore(addMonths(new Date(createdAt), ORG_IDENTITY_LOCK_MONTHS), new Date());\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bisondesk/core-sdk",
3
- "version": "1.0.674",
3
+ "version": "1.0.675",
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"}
@@ -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"}