@bisondesk/documents-sdk 1.0.316 → 1.0.317

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 (82) hide show
  1. package/lib/apis/documents.d.ts +6 -0
  2. package/lib/apis/documents.d.ts.map +1 -0
  3. package/lib/apis/documents.js +71 -0
  4. package/lib/apis/documents.js.map +1 -0
  5. package/lib/types/{types/booking.d.ts → booking.d.ts} +2 -0
  6. package/lib/types/booking.d.ts.map +1 -0
  7. package/lib/types/booking.js.map +1 -0
  8. package/lib/types/{types/documents.d.ts → documents.d.ts} +14 -12
  9. package/lib/types/documents.d.ts.map +1 -0
  10. package/lib/{esm/types → types}/documents.js +8 -0
  11. package/lib/types/documents.js.map +1 -0
  12. package/lib/types/embeddings.d.ts +18 -0
  13. package/lib/types/embeddings.d.ts.map +1 -0
  14. package/lib/types/embeddings.js +6 -0
  15. package/lib/types/embeddings.js.map +1 -0
  16. package/lib/types/{types/legacy.d.ts → legacy.d.ts} +1 -0
  17. package/lib/types/legacy.d.ts.map +1 -0
  18. package/lib/types/legacy.js.map +1 -0
  19. package/lib/types/scans.d.ts +10 -0
  20. package/lib/types/scans.d.ts.map +1 -0
  21. package/lib/types/scans.js.map +1 -0
  22. package/lib/types/search.d.ts +36 -0
  23. package/lib/types/search.d.ts.map +1 -0
  24. package/lib/types/search.js +2 -0
  25. package/lib/types/search.js.map +1 -0
  26. package/lib/utils.d.ts +2 -0
  27. package/lib/utils.d.ts.map +1 -0
  28. package/lib/utils.js +2 -0
  29. package/lib/utils.js.map +1 -0
  30. package/package.json +13 -20
  31. package/src/apis/documents.ts +96 -0
  32. package/src/types/booking.ts +3 -0
  33. package/src/types/documents.ts +22 -14
  34. package/src/types/embeddings.ts +20 -0
  35. package/src/types/legacy.ts +1 -0
  36. package/src/types/scans.ts +7 -1
  37. package/src/types/search.ts +42 -0
  38. package/src/utils.ts +1 -0
  39. package/tsconfig.json +0 -1
  40. package/tsconfig.tsbuildinfo +1 -0
  41. package/lib/cjs/types/booking.js +0 -3
  42. package/lib/cjs/types/booking.js.map +0 -1
  43. package/lib/cjs/types/document-categories.js +0 -9
  44. package/lib/cjs/types/document-categories.js.map +0 -1
  45. package/lib/cjs/types/documents.js +0 -61
  46. package/lib/cjs/types/documents.js.map +0 -1
  47. package/lib/cjs/types/events.js +0 -3
  48. package/lib/cjs/types/legacy.js +0 -3
  49. package/lib/cjs/types/legacy.js.map +0 -1
  50. package/lib/cjs/types/scans.js +0 -3
  51. package/lib/cjs/types/scans.js.map +0 -1
  52. package/lib/cjs/types/vat.js +0 -15
  53. package/lib/cjs/types/vat.js.map +0 -1
  54. package/lib/esm/types/booking.js.map +0 -1
  55. package/lib/esm/types/documents.js.map +0 -1
  56. package/lib/esm/types/events.js.map +0 -1
  57. package/lib/esm/types/legacy.js.map +0 -1
  58. package/lib/esm/types/scans.js.map +0 -1
  59. package/lib/tsconfig.cjs.tsbuildinfo +0 -1
  60. package/lib/tsconfig.esm.tsbuildinfo +0 -1
  61. package/lib/types/types/booking.d.ts.map +0 -1
  62. package/lib/types/types/documents.d.ts.map +0 -1
  63. package/lib/types/types/legacy.d.ts.map +0 -1
  64. package/lib/types/types/scans.d.ts +0 -6
  65. package/lib/types/types/scans.d.ts.map +0 -1
  66. package/tsconfig.cjs.json +0 -8
  67. package/tsconfig.esm.json +0 -8
  68. /package/lib/{esm/types → types}/booking.js +0 -0
  69. /package/lib/types/{types/document-categories.d.ts → document-categories.d.ts} +0 -0
  70. /package/lib/types/{types/document-categories.d.ts.map → document-categories.d.ts.map} +0 -0
  71. /package/lib/{esm/types → types}/document-categories.js +0 -0
  72. /package/lib/{esm/types → types}/document-categories.js.map +0 -0
  73. /package/lib/types/{types/events.d.ts → events.d.ts} +0 -0
  74. /package/lib/types/{types/events.d.ts.map → events.d.ts.map} +0 -0
  75. /package/lib/{esm/types → types}/events.js +0 -0
  76. /package/lib/{cjs/types → types}/events.js.map +0 -0
  77. /package/lib/{esm/types → types}/legacy.js +0 -0
  78. /package/lib/{esm/types → types}/scans.js +0 -0
  79. /package/lib/types/{types/vat.d.ts → vat.d.ts} +0 -0
  80. /package/lib/types/{types/vat.d.ts.map → vat.d.ts.map} +0 -0
  81. /package/lib/{esm/types → types}/vat.js +0 -0
  82. /package/lib/{esm/types → types}/vat.js.map +0 -0
@@ -0,0 +1,6 @@
1
+ import { FinanceBooking } from '../types/booking.js';
2
+ import { AdministrativeDocument, FinanceDocument } from '../types/documents.js';
3
+ export declare const upsertFinanceDoc: (tenantId: string, doc: FinanceDocument) => Promise<FinanceDocument>;
4
+ export declare const upsertAdminDoc: (tenantId: string, doc: AdministrativeDocument) => Promise<AdministrativeDocument>;
5
+ export declare const upsertFinanceBooking: (tenantId: string, booking: FinanceBooking) => Promise<FinanceBooking>;
6
+ //# sourceMappingURL=documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"/","sources":["apis/documents.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEhF,eAAO,MAAM,gBAAgB,aACjB,MAAM,OACX,eAAe,KACnB,QAAQ,eAAe,CAuBzB,CAAC;AAEF,eAAO,MAAM,cAAc,aACf,MAAM,OACX,sBAAsB,KAC1B,QAAQ,sBAAsB,CA0BhC,CAAC;AAEF,eAAO,MAAM,oBAAoB,aACrB,MAAM,WACP,cAAc,KACtB,QAAQ,cAAc,CA0BxB,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { TENANT_ID_ADMIN_HEADER } from '@bisondesk/commons-sdk/constants';
2
+ import { XError } from '@bisondesk/commons-sdk/errors';
3
+ import { getAdminAuth } from '@bisondesk/commons-sdk/fetch';
4
+ import fetch from 'node-fetch';
5
+ export const upsertFinanceDoc = async (tenantId, doc) => {
6
+ const auth = await getAdminAuth();
7
+ const response = await fetch(`${process.env.CORE_API_ORIGIN}/api/documents/finance`, {
8
+ method: 'POST',
9
+ headers: {
10
+ 'Content-Type': 'application/json',
11
+ Authorization: auth,
12
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
13
+ },
14
+ body: JSON.stringify(doc),
15
+ });
16
+ if (response.status === 200) {
17
+ return response.json();
18
+ }
19
+ const body = await response.text();
20
+ throw new XError('core-sdk.documents.upsert-finance-doc-fail', {
21
+ tenantId,
22
+ doc,
23
+ response: body,
24
+ status: response.status,
25
+ });
26
+ };
27
+ export const upsertAdminDoc = async (tenantId, doc) => {
28
+ const auth = await getAdminAuth();
29
+ const response = await fetch(`${process.env.CORE_API_ORIGIN}/api/documents/administrative`, {
30
+ method: 'POST',
31
+ headers: {
32
+ 'Content-Type': 'application/json',
33
+ Authorization: auth,
34
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
35
+ },
36
+ body: JSON.stringify(doc),
37
+ });
38
+ if (response.status === 200) {
39
+ return response.json();
40
+ }
41
+ const body = await response.text();
42
+ throw new XError('core-sdk.documents.upsert-admin-doc-fail', {
43
+ tenantId,
44
+ doc,
45
+ response: body,
46
+ status: response.status,
47
+ });
48
+ };
49
+ export const upsertFinanceBooking = async (tenantId, booking) => {
50
+ const auth = await getAdminAuth();
51
+ const response = await fetch(`${process.env.CORE_API_ORIGIN}/api/documents/finance/booking`, {
52
+ method: 'POST',
53
+ headers: {
54
+ 'Content-Type': 'application/json',
55
+ Authorization: auth,
56
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
57
+ },
58
+ body: JSON.stringify(booking),
59
+ });
60
+ if (response.status === 200) {
61
+ return response.json();
62
+ }
63
+ const body = await response.text();
64
+ throw new XError('core-sdk.documents.upsert-finance-booking-fail', {
65
+ tenantId,
66
+ booking,
67
+ response: body,
68
+ status: response.status,
69
+ });
70
+ };
71
+ //# sourceMappingURL=documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.js","sourceRoot":"/","sources":["apis/documents.ts"],"names":[],"mappings":"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","sourcesContent":["import { TENANT_ID_ADMIN_HEADER } from '@bisondesk/commons-sdk/constants';\nimport { XError } from '@bisondesk/commons-sdk/errors';\nimport { getAdminAuth } from '@bisondesk/commons-sdk/fetch';\nimport fetch, { Response } from 'node-fetch';\nimport { FinanceBooking } from '../types/booking.js';\nimport { AdministrativeDocument, FinanceDocument } from '../types/documents.js';\n\nexport const upsertFinanceDoc = async (\n tenantId: string,\n doc: FinanceDocument\n): Promise<FinanceDocument> => {\n const auth = await getAdminAuth();\n const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/documents/finance`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: auth,\n [TENANT_ID_ADMIN_HEADER]: tenantId,\n },\n body: JSON.stringify(doc),\n });\n\n if (response.status === 200) {\n return response.json() as any;\n }\n\n const body = await response.text();\n throw new XError('core-sdk.documents.upsert-finance-doc-fail', {\n tenantId,\n doc,\n response: body,\n status: response.status,\n });\n};\n\nexport const upsertAdminDoc = async (\n tenantId: string,\n doc: AdministrativeDocument\n): Promise<AdministrativeDocument> => {\n const auth = await getAdminAuth();\n const response: Response = await fetch(\n `${process.env.CORE_API_ORIGIN}/api/documents/administrative`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: auth,\n [TENANT_ID_ADMIN_HEADER]: tenantId,\n },\n body: JSON.stringify(doc),\n }\n );\n\n if (response.status === 200) {\n return response.json() as any;\n }\n\n const body = await response.text();\n throw new XError('core-sdk.documents.upsert-admin-doc-fail', {\n tenantId,\n doc,\n response: body,\n status: response.status,\n });\n};\n\nexport const upsertFinanceBooking = async (\n tenantId: string,\n booking: FinanceBooking\n): Promise<FinanceBooking> => {\n const auth = await getAdminAuth();\n const response: Response = await fetch(\n `${process.env.CORE_API_ORIGIN}/api/documents/finance/booking`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: auth,\n [TENANT_ID_ADMIN_HEADER]: tenantId,\n },\n body: JSON.stringify(booking),\n }\n );\n\n if (response.status === 200) {\n return response.json() as any;\n }\n\n const body = await response.text();\n throw new XError('core-sdk.documents.upsert-finance-booking-fail', {\n tenantId,\n booking,\n response: body,\n status: response.status,\n });\n};\n"]}
@@ -1,3 +1,4 @@
1
+ import { FinanceDocument } from './documents.js';
1
2
  export type FinanceBookingEvent = {
2
3
  id: string;
3
4
  branchId: string;
@@ -5,6 +6,7 @@ export type FinanceBookingEvent = {
5
6
  userId: string;
6
7
  tenantId: string;
7
8
  type: 'Sale Finance' | 'Purchase Finance';
9
+ version: FinanceDocument['version'];
8
10
  };
9
11
  export type FinanceBooking = {
10
12
  branchId: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"booking.d.ts","sourceRoot":"/","sources":["types/booking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,cAAc,GAAG,kBAAkB,CAAC;IAC1C,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IAEnB,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;IAEd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"booking.js","sourceRoot":"/","sources":["types/booking.ts"],"names":[],"mappings":"","sourcesContent":["import { FinanceDocument } from './documents.js';\n\nexport type FinanceBookingEvent = {\n id: string;\n branchId: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n type: 'Sale Finance' | 'Purchase Finance';\n version: FinanceDocument['version'];\n};\n\nexport type FinanceBooking = {\n branchId: string; // same tenantId can have different companies\n bookingNumber: string; // same booking number can and will exist across different \"branches\", unique => BranchId / Journal / Booking Number\n documentId: string;\n\n booked: true;\n journal?: string;\n amount?: string;\n reportingPeriod?: number;\n reportingYear?: number;\n paid: boolean;\n\n createdAt: string;\n createdBy: string;\n modifiedAt: string;\n modifiedBy: string;\n};\n"]}
@@ -1,7 +1,7 @@
1
+ import type { Block } from '@aws-sdk/client-textract';
1
2
  import { BusinessEntityIds } from '@bisondesk/commons-sdk/constants';
2
- import { AttachmentValue, PhoneNumberValue, SearchPermissions } from '@bisondesk/commons-sdk/types';
3
- import { FinanceBooking } from './booking';
4
- import { FinanceDocumentV1 } from './legacy';
3
+ import { AttachmentValue, PhoneNumberValue } from '@bisondesk/commons-sdk/types';
4
+ import { FinanceDocumentV1 } from './legacy.js';
5
5
  export declare enum AdministrativeDocType {
6
6
  General = "General Administrative",
7
7
  Logistics = "Logistics Administrative",
@@ -81,6 +81,7 @@ export type FinanceDocumentV2 = BaseDocument & {
81
81
  invoiceId?: string;
82
82
  issueDate: string;
83
83
  lines: FinanceDocumentLine[];
84
+ paymentNotes?: string;
84
85
  notes?: string;
85
86
  salesperson: {
86
87
  name: string;
@@ -148,16 +149,8 @@ export type NewDocumentDraft<T = NewFinanceDocumentV2 | NewAdministrativeDocumen
148
149
  subtype?: string;
149
150
  documentType?: DocumentType;
150
151
  };
151
- export type SearchFinanceDocument = {
152
- doc: FinanceDocumentV2;
153
- permissions: SearchPermissions;
154
- booking?: FinanceBooking;
155
- };
156
- export type SearchAdministrativeDocument = {
157
- doc: AdministrativeDocument;
158
- permissions: SearchPermissions;
159
- };
160
152
  export declare const isFinanceDocumentV2: (arg: FinanceDocumentV2 | FinanceDocumentV1) => arg is FinanceDocumentV2;
153
+ export declare const isFinanceDocumentV1: (arg: FinanceDocumentV2 | FinanceDocumentV1) => arg is FinanceDocumentV1;
161
154
  export declare const isAdministrativeDocument: (arg: any) => arg is AdministrativeDocument;
162
155
  export declare const isAdministrativeDocumentDraft: (draft: DocumentDraft) => draft is DocumentDraft<AdministrativeDocument>;
163
156
  export declare const isFinanceDocumentDraft: (arg: DocumentDraft | NewDocumentDraft) => arg is DocumentDraft<FinanceDocumentV2>;
@@ -201,5 +194,14 @@ export declare enum FinanceDocumentSubtype {
201
194
  Proforma = "Proforma",
202
195
  PurchaseOrder = "Purchase Order"
203
196
  }
197
+ export type OCRDocument = {
198
+ Blocks?: Block[];
199
+ orientation: number;
200
+ hasCurrency: boolean;
201
+ };
202
+ export declare enum FinanceDocumentActions {
203
+ PAY_FINANCE_DOCUMENT = "pay_finance_document",
204
+ DELETE_FINANCE_DOCUMENT = "delete_finance_document"
205
+ }
204
206
  export {};
205
207
  //# sourceMappingURL=documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"/","sources":["types/documents.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,9 @@ export var DraftActions;
37
37
  export const isFinanceDocumentV2 = (arg) => {
38
38
  return arg.version === 2;
39
39
  };
40
+ export const isFinanceDocumentV1 = (arg) => {
41
+ return arg.version == null;
42
+ };
40
43
  export const isAdministrativeDocument = (arg) => {
41
44
  return Object.values(AdministrativeDocType).includes(arg.type);
42
45
  };
@@ -51,4 +54,9 @@ export var FinanceDocumentSubtype;
51
54
  FinanceDocumentSubtype["Proforma"] = "Proforma";
52
55
  FinanceDocumentSubtype["PurchaseOrder"] = "Purchase Order";
53
56
  })(FinanceDocumentSubtype || (FinanceDocumentSubtype = {}));
57
+ export var FinanceDocumentActions;
58
+ (function (FinanceDocumentActions) {
59
+ FinanceDocumentActions["PAY_FINANCE_DOCUMENT"] = "pay_finance_document";
60
+ FinanceDocumentActions["DELETE_FINANCE_DOCUMENT"] = "delete_finance_document";
61
+ })(FinanceDocumentActions || (FinanceDocumentActions = {}));
54
62
  //# sourceMappingURL=documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.js","sourceRoot":"/","sources":["types/documents.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,2DAAkC,CAAA;IAClC,+DAAsC,CAAA;IACtC,6DAAoC,CAAA;IACpC,qDAA4B,CAAA;AAC9B,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AAyDD,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,+CAA6B,CAAA;AAC/B,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,8BAGX;AAHD,WAAY,8BAA8B;IACxC,qDAAmB,CAAA;IACnB,4DAA0B,CAAA;AAC5B,CAAC,EAHW,8BAA8B,KAA9B,8BAA8B,QAGzC;AAqED,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAG5B,qCAAe,CAAA;IACf,iDAA2B,CAAA;IAC3B,iDAA2B,CAAA;AAC7B,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B;AAYD,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,4CAA4B,CAAA;IAC5B,0DAA0C,CAAA;AAC5C,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAUD,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;IACjB,iEAAiD,CAAA;IACjD,qEAAqD,CAAA;AACvD,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAYD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAA0C,EAChB,EAAE;IAC5B,OAAQ,GAAyB,CAAC,OAAO,KAAK,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAA0C,EAChB,EAAE;IAC5B,OAAQ,GAAyB,CAAC,OAAO,IAAI,IAAI,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAQ,EAAiC,EAAE;IAClF,OAAO,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,KAAoB,EAC4B,EAAE,CAClD,KAAK,CAAC,YAAY,KAAK,YAAY,CAAC,cAAc,CAAC;AAErD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,GAAqC,EACI,EAAE;IAC3C,OAAO,GAAG,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,CAAC;AACnD,CAAC,CAAC;AAsCF,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,6CAAmB,CAAA;IACnB,oDAA0B,CAAA;IAC1B,+CAAqB,CAAA;IACrB,0DAAgC,CAAA;AAClC,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC;AAQD,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,uEAA6C,CAAA;IAC7C,6EAAmD,CAAA;AACrD,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC","sourcesContent":["import type { Block } from '@aws-sdk/client-textract';\nimport { BusinessEntityIds } from '@bisondesk/commons-sdk/constants';\nimport { AttachmentValue, PhoneNumberValue } from '@bisondesk/commons-sdk/types';\nimport { FinanceDocumentV1 } from './legacy.js';\n\nexport enum AdministrativeDocType {\n General = 'General Administrative',\n Logistics = 'Logistics Administrative',\n Purchase = 'Purchase Administrative',\n Sale = 'Sale Administrative',\n}\n\nexport type FinanceDocument = FinanceDocumentV1 | FinanceDocumentV2;\n\nexport type Association = {\n businessEntityId: BusinessEntityIds;\n id: string;\n description: string;\n tags?: string[];\n};\n\nexport type FinanceDocumentLine = {\n id: string;\n category: string; // abstraction used to map lines to GL accounts (e.g., deposit, insurance)\n amount: string;\n amountExcl: string; // quantity * unit price\n description: string;\n foreign?: {\n amount: string;\n amountExcl: string;\n unitPriceExcl: string;\n vatAmount: string;\n };\n invoiceLineId?: string; // used by credit notes\n quantity: string;\n associations?: Association[];\n unitPriceExcl: string;\n vatAmount: string;\n vatCode: string;\n vatPercentage: string;\n vatReason?: string;\n};\n\ntype OrgSummary = {\n id: string;\n code: number;\n name: string;\n vatNumber?: string;\n\n addressLine1?: string;\n addressLine2?: string;\n postcode?: string;\n city?: string;\n country: string;\n\n emails?: string[];\n phone?: PhoneNumberValue;\n\n // TODO person name?\n contact?: {\n name: string;\n username: string;\n };\n\n language: string; // needed?\n};\n\nexport enum FinanceDocType {\n Sale = 'Sale Finance',\n Purchase = 'Purchase Finance',\n}\n\nexport enum FinanceDocumentGenerateSubtype {\n Invoice = 'Invoice',\n CreditNote = 'Credit Note',\n}\n\ntype BaseDocument = {\n id: string;\n branchId: string;\n attachment: AttachmentValue;\n subtype: string;\n createdAt: string;\n createdBy: string;\n};\n\nexport type FinanceDocumentV2 = BaseDocument & {\n version: 2.0;\n reference: string;\n\n type: FinanceDocType;\n\n category: string; // abstraction used to map invoices to Journals (e.g., leasing, used trucks)\n\n organizationSummary: OrgSummary;\n\n dueDate?: string;\n transferDescription?: string; // we ask clients to put this as description of the transfer\n invoiceId?: string; // mandatory in credit notes but forbidden in invoices\n issueDate: string;\n lines: FinanceDocumentLine[];\n paymentNotes?: string;\n notes?: string;\n salesperson: {\n name: string;\n username: string;\n };\n tags: string[]; // optional values used to improve document search\n total: {\n amountExcl: string;\n amount: string;\n currencyCode: string; // from the branch\n foreign?: {\n amount: string;\n amountExcl: string;\n vatAmount: string;\n currencyCode: string;\n exchangeRate: string;\n };\n vatAmount: string;\n };\n\n paidAt?: string;\n};\n\nexport type NewFinanceDocumentV2 = Omit<\n FinanceDocumentV2,\n 'id' | 'createdAt' | 'createdBy' | 'lines'\n> & {\n lines: Omit<FinanceDocumentLine, 'id'>[];\n};\n\nexport type AdministrativeDocument = BaseDocument & {\n type: AdministrativeDocType;\n tags?: string[];\n associations?: Association[];\n organizationSummary?: OrgSummary;\n};\n\nexport type NewAdministrativeDocument = Omit<\n AdministrativeDocument,\n 'id' | 'createdAt' | 'createdBy'\n>;\n\nexport enum DraftProcessStatus {\n // Prefill = 'Prefill',\n // Ready = 'Ready',\n Error = 'Error',\n Unprocessed = 'Unprocessed',\n Unvalidated = 'Unvalidated',\n}\n\ntype DraftProcessing = {\n status: DraftProcessStatus;\n businessValid: boolean;\n accountingValid: boolean;\n rejectedAt?: string;\n rejectedBy?: string;\n rejectionReason?: string;\n failedValidationRules?: string[];\n};\n\nexport enum DocumentType {\n Finance = 'Finance Document',\n Administrative = 'Administrative Document',\n}\n\ntype BaseDocumentDraft = BaseDocument &\n DraftProcessing & {\n documentType?: DocumentType;\n };\n\nexport type DocumentDraft<T = FinanceDocumentV2 | AdministrativeDocument> = Partial<T> &\n BaseDocumentDraft;\n\nexport enum DraftActions {\n Delete = 'delete',\n Validate = 'validate',\n Submit = 'submit',\n ValidateBusinessRules = 'validate_business_rules',\n ValidateAccountingRules = 'validate_accounting_rules',\n}\n\nexport type RejectDraftRequest = {\n reason?: string;\n};\n\nexport type NewDocumentDraft<T = NewFinanceDocumentV2 | NewAdministrativeDocument> = Partial<T> &\n Omit<BaseDocument, 'id' | 'createdAt' | 'createdBy' | 'subtype'> & {\n subtype?: string;\n documentType?: DocumentType;\n };\n\nexport const isFinanceDocumentV2 = (\n arg: FinanceDocumentV2 | FinanceDocumentV1\n): arg is FinanceDocumentV2 => {\n return (arg as FinanceDocumentV2).version === 2;\n};\n\nexport const isFinanceDocumentV1 = (\n arg: FinanceDocumentV2 | FinanceDocumentV1\n): arg is FinanceDocumentV1 => {\n return (arg as FinanceDocumentV2).version == null;\n};\n\nexport const isAdministrativeDocument = (arg: any): arg is AdministrativeDocument => {\n return Object.values(AdministrativeDocType).includes(arg.type);\n};\n\nexport const isAdministrativeDocumentDraft = (\n draft: DocumentDraft\n): draft is DocumentDraft<AdministrativeDocument> =>\n draft.documentType === DocumentType.Administrative;\n\nexport const isFinanceDocumentDraft = (\n arg: DocumentDraft | NewDocumentDraft\n): arg is DocumentDraft<FinanceDocumentV2> => {\n return arg.documentType === DocumentType.Finance;\n};\n\nexport type FinanceDocumentGenerateRequest = Omit<\n FinanceDocumentV2,\n 'id' | 'attachment' | 'createdAt' | 'createdBy' | 'version' | 'reference' | 'lines' | 'subtype'\n> & {\n subtype: FinanceDocumentGenerateSubtype;\n lines: Omit<FinanceDocumentLine, 'id'>[];\n};\n\n// TODO\nexport type DocumentGenerateRequestEvent = {\n tenantId: string;\n docId: string;\n request: FinanceDocumentGenerateRequest;\n};\n\nexport type FinanceDocumentSettings<M = {}> = {\n provider: string;\n meta: M;\n};\n\nexport type FinanceDocumentBisondeskSettings = {\n [FinanceDocumentGenerateSubtype.Invoice]: {\n prefix: string;\n templateId: string;\n };\n [FinanceDocumentGenerateSubtype.CreditNote]: {\n prefix: string;\n templateId: string;\n };\n};\n\nexport type FinanceDocumentPayment = { documentId: string } & (\n | { paid: true; paidAt: string; comment?: string }\n | { paid: false; paidAt?: undefined; comment?: undefined }\n);\n\nexport enum FinanceDocumentSubtype {\n Invoice = 'Invoice',\n CreditNote = 'Credit Note',\n Proforma = 'Proforma',\n PurchaseOrder = 'Purchase Order',\n}\n\nexport type OCRDocument = {\n Blocks?: Block[];\n orientation: number;\n hasCurrency: boolean;\n};\n\nexport enum FinanceDocumentActions {\n PAY_FINANCE_DOCUMENT = 'pay_finance_document',\n DELETE_FINANCE_DOCUMENT = 'delete_finance_document',\n}\n"]}
@@ -0,0 +1,18 @@
1
+ export declare enum EmbeddingType {
2
+ Document = "document",
3
+ Line = "line"
4
+ }
5
+ export type DocumentEmbedding = {
6
+ id: string;
7
+ documentId: string;
8
+ embedding: number[];
9
+ type: EmbeddingType;
10
+ active: boolean;
11
+ category?: string;
12
+ lineCategory?: string;
13
+ };
14
+ export type DocumentEmbeddingDB = {
15
+ data: Omit<DocumentEmbedding, 'embedding'>;
16
+ embedding: string;
17
+ };
18
+ //# sourceMappingURL=embeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"/","sources":["types/embeddings.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAEhB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export var EmbeddingType;
2
+ (function (EmbeddingType) {
3
+ EmbeddingType["Document"] = "document";
4
+ EmbeddingType["Line"] = "line";
5
+ })(EmbeddingType || (EmbeddingType = {}));
6
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"/","sources":["types/embeddings.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,8BAAa,CAAA;AACf,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB","sourcesContent":["export enum EmbeddingType {\n Document = 'document',\n Line = 'line',\n}\n\nexport type DocumentEmbedding = {\n id: string;\n documentId: string;\n embedding: number[];\n type: EmbeddingType;\n active: boolean;\n\n category?: string;\n lineCategory?: string;\n};\n\nexport type DocumentEmbeddingDB = {\n data: Omit<DocumentEmbedding, 'embedding'>;\n embedding: string;\n};\n"]}
@@ -27,6 +27,7 @@ export type FinanceLineV1 = {
27
27
  export type FinanceDocumentV1 = {
28
28
  id: string;
29
29
  branchId: string;
30
+ version?: 1.0;
30
31
  type: 'Sale Finance' | 'Purchase Finance';
31
32
  subtype: 'Invoice' | 'Credit Note' | 'Proforma' | 'Purchase Order';
32
33
  reference: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.d.ts","sourceRoot":"/","sources":["types/legacy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,EAAE;QACZ,MAAM,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC/C,KAAK,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC1D,SAAS,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC/D,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd,IAAI,EAAE,cAAc,GAAG,kBAAkB,CAAC;IAC1C,OAAO,EAAE,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,gBAAgB,CAAC;IACnE,SAAS,EAAE,MAAM,CAAC;IAElB,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,mBAAmB,CAAC,EAAE;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QAEnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.js","sourceRoot":"/","sources":["types/legacy.ts"],"names":[],"mappings":"","sourcesContent":["import { AttachmentValue } from '@bisondesk/commons-sdk/types';\n\nexport type FinanceLineV1 = {\n associations: {\n others: { vehicleId: string; label: string }[];\n sales: { id: string; vehicleId: string; label: string }[];\n purchases: { id: string; vehicleId: string; label: string }[];\n };\n description: string;\n id: string;\n lineCode: string;\n quantity: string;\n unitPriceExclusive: string;\n vatCode: string;\n vatCoefficient: string;\n};\n\nexport type FinanceDocumentV1 = {\n id: string;\n branchId: string;\n version?: 1.0;\n\n type: 'Sale Finance' | 'Purchase Finance';\n subtype: 'Invoice' | 'Credit Note' | 'Proforma' | 'Purchase Order';\n reference: string;\n\n attachment: AttachmentValue;\n lines: FinanceLineV1[];\n notes?: string;\n\n createdAt: string;\n createdBy: string;\n issueDate: string;\n paidAt?: string;\n paymentNotes?: string;\n amount?: string;\n dueDate?: string;\n\n organizationSummary?: {\n id: string;\n code: string;\n name: string;\n country: string;\n vatNumber?: string;\n\n addressLine1?: string;\n addressLine2?: string;\n addressLine3?: string;\n postcode?: string;\n city?: string;\n\n email?: string;\n phone?: string;\n fax?: string;\n };\n};\n"]}
@@ -0,0 +1,10 @@
1
+ import { DocumentType } from './documents.js';
2
+ export type NewDocumentScanEvent = {
3
+ tenantId: string;
4
+ source: string;
5
+ fileUrl: string;
6
+ documentType?: DocumentType;
7
+ existingDraftId?: string;
8
+ skipSplit?: boolean;
9
+ };
10
+ //# sourceMappingURL=scans.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scans.d.ts","sourceRoot":"/","sources":["types/scans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAEhB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scans.js","sourceRoot":"/","sources":["types/scans.ts"],"names":[],"mappings":"","sourcesContent":["import { DocumentType } from './documents.js';\n\nexport type NewDocumentScanEvent = {\n tenantId: string;\n source: string;\n fileUrl: string;\n\n documentType?: DocumentType;\n existingDraftId?: string;\n skipSplit?: boolean;\n};\n"]}
@@ -0,0 +1,36 @@
1
+ import { SearchPermissions } from '@bisondesk/commons-sdk/types';
2
+ import { Organization } from '@bisondesk/core-sdk/types/crm';
3
+ import { PublicSearchDefinition } from '@bisondesk/core-sdk/types/definitions';
4
+ import { FinanceBooking } from './booking.js';
5
+ import { AdministrativeDocument, FinanceDocument } from './documents.js';
6
+ export type SearchDocumentVehicleRef = {
7
+ id: string;
8
+ stockNumber: string;
9
+ administrativeNumber?: string;
10
+ };
11
+ export type InputSearchFinanceDocument = SearchFinanceDocument & {
12
+ permissions: SearchPermissions;
13
+ };
14
+ export type InputSearchAdministrativeDocument = SearchAdministrativeDocument & {
15
+ permissions: SearchPermissions;
16
+ };
17
+ export type DocsSearchDefinitions = {
18
+ searchFinanceDoc: PublicSearchDefinition;
19
+ };
20
+ export type AdministrativeDocsSearchDefinitions = {
21
+ searchAdministrativeDoc: PublicSearchDefinition;
22
+ };
23
+ export type SearchFinanceDocument = {
24
+ permissions: SearchPermissions;
25
+ org?: Organization;
26
+ doc: FinanceDocument;
27
+ booking?: FinanceBooking;
28
+ vehicle?: SearchDocumentVehicleRef[];
29
+ };
30
+ export type SearchAdministrativeDocument = {
31
+ doc: AdministrativeDocument;
32
+ permissions: SearchPermissions;
33
+ org?: Organization;
34
+ vehicle?: SearchDocumentVehicleRef[];
35
+ };
36
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"/","sources":["types/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEzE,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG;IAC/D,WAAW,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,4BAA4B,GAAG;IAC7E,WAAW,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,gBAAgB,EAAE,sBAAsB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,uBAAuB,EAAE,sBAAsB,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,eAAe,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,GAAG,EAAE,sBAAsB,CAAC;IAC5B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACtC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"/","sources":["types/search.ts"],"names":[],"mappings":"","sourcesContent":["import { SearchPermissions } from '@bisondesk/commons-sdk/types';\nimport { Organization } from '@bisondesk/core-sdk/types/crm';\nimport { PublicSearchDefinition } from '@bisondesk/core-sdk/types/definitions';\nimport { FinanceBooking } from './booking.js';\nimport { AdministrativeDocument, FinanceDocument } from './documents.js';\n\nexport type SearchDocumentVehicleRef = {\n id: string;\n stockNumber: string;\n administrativeNumber?: string;\n};\n\nexport type InputSearchFinanceDocument = SearchFinanceDocument & {\n permissions: SearchPermissions;\n};\n\nexport type InputSearchAdministrativeDocument = SearchAdministrativeDocument & {\n permissions: SearchPermissions;\n};\n\nexport type DocsSearchDefinitions = {\n searchFinanceDoc: PublicSearchDefinition;\n};\n\nexport type AdministrativeDocsSearchDefinitions = {\n searchAdministrativeDoc: PublicSearchDefinition;\n};\n\nexport type SearchFinanceDocument = {\n permissions: SearchPermissions;\n org?: Organization;\n doc: FinanceDocument;\n booking?: FinanceBooking;\n vehicle?: SearchDocumentVehicleRef[];\n};\n\nexport type SearchAdministrativeDocument = {\n doc: AdministrativeDocument;\n permissions: SearchPermissions;\n org?: Organization;\n vehicle?: SearchDocumentVehicleRef[];\n};\n"]}
package/lib/utils.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare const getPdfPreviewSrc: (fileUrl: string) => string;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"/","sources":["utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,YAAa,MAAM,WAAsC,CAAC"}
package/lib/utils.js ADDED
@@ -0,0 +1,2 @@
1
+ export const getPdfPreviewSrc = (fileUrl) => fileUrl.replace('.pdf', '/1.jpg');
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"/","sources":["utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["export const getPdfPreviewSrc = (fileUrl: string) => fileUrl.replace('.pdf', '/1.jpg');\n"]}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@bisondesk/documents-sdk",
3
- "version": "1.0.316",
3
+ "version": "1.0.317",
4
4
  "description": "",
5
+ "type": "module",
5
6
  "scripts": {
6
- "build": "npx tsc --build tsconfig.cjs.json & npx tsc --build tsconfig.esm.json",
7
+ "build": "npx tsc --build",
7
8
  "clean": "rm -rf lib *.tsbuildinfo",
8
9
  "unittest": "echo \"No test specified\"",
9
10
  "integrationtest": "echo \"No test specified\"",
@@ -13,31 +14,23 @@
13
14
  "dependencies": {
14
15
  "@bisondesk/commons-sdk": "*",
15
16
  "@bisondesk/core-sdk": "*",
16
- "decimal.js": "10.3.1",
17
- "joi": "17.4.0"
17
+ "decimal.js": "10.4.3",
18
+ "joi": "17.4.0",
19
+ "node-fetch": "3.3.2"
18
20
  },
19
21
  "devDependencies": {
20
- "typescript": "4.7.4"
21
- },
22
- "main": "./lib/cjs/*",
23
- "module": "./lib/esm/*",
24
- "exports": {
25
- "./*": {
26
- "import": [
27
- "./lib/esm/*.js",
28
- "./lib/esm/*/*.js"
29
- ],
30
- "require": [
31
- "./lib/cjs/*.js",
32
- "./lib/cjs/*/*.js"
33
- ]
34
- }
22
+ "@aws-sdk/client-textract": "3.465.0",
23
+ "@types/node": "18.11.9",
24
+ "typescript": "5.3.3"
35
25
  },
36
26
  "typesVersions": {
37
27
  "*": {
38
28
  "*": [
39
- "lib/types/*"
29
+ "lib/*.d.ts"
40
30
  ]
41
31
  }
32
+ },
33
+ "exports": {
34
+ "./*": "./lib/*.js"
42
35
  }
43
36
  }
@@ -0,0 +1,96 @@
1
+ import { TENANT_ID_ADMIN_HEADER } from '@bisondesk/commons-sdk/constants';
2
+ import { XError } from '@bisondesk/commons-sdk/errors';
3
+ import { getAdminAuth } from '@bisondesk/commons-sdk/fetch';
4
+ import fetch, { Response } from 'node-fetch';
5
+ import { FinanceBooking } from '../types/booking.js';
6
+ import { AdministrativeDocument, FinanceDocument } from '../types/documents.js';
7
+
8
+ export const upsertFinanceDoc = async (
9
+ tenantId: string,
10
+ doc: FinanceDocument
11
+ ): Promise<FinanceDocument> => {
12
+ const auth = await getAdminAuth();
13
+ const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/documents/finance`, {
14
+ method: 'POST',
15
+ headers: {
16
+ 'Content-Type': 'application/json',
17
+ Authorization: auth,
18
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
19
+ },
20
+ body: JSON.stringify(doc),
21
+ });
22
+
23
+ if (response.status === 200) {
24
+ return response.json() as any;
25
+ }
26
+
27
+ const body = await response.text();
28
+ throw new XError('core-sdk.documents.upsert-finance-doc-fail', {
29
+ tenantId,
30
+ doc,
31
+ response: body,
32
+ status: response.status,
33
+ });
34
+ };
35
+
36
+ export const upsertAdminDoc = async (
37
+ tenantId: string,
38
+ doc: AdministrativeDocument
39
+ ): Promise<AdministrativeDocument> => {
40
+ const auth = await getAdminAuth();
41
+ const response: Response = await fetch(
42
+ `${process.env.CORE_API_ORIGIN}/api/documents/administrative`,
43
+ {
44
+ method: 'POST',
45
+ headers: {
46
+ 'Content-Type': 'application/json',
47
+ Authorization: auth,
48
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
49
+ },
50
+ body: JSON.stringify(doc),
51
+ }
52
+ );
53
+
54
+ if (response.status === 200) {
55
+ return response.json() as any;
56
+ }
57
+
58
+ const body = await response.text();
59
+ throw new XError('core-sdk.documents.upsert-admin-doc-fail', {
60
+ tenantId,
61
+ doc,
62
+ response: body,
63
+ status: response.status,
64
+ });
65
+ };
66
+
67
+ export const upsertFinanceBooking = async (
68
+ tenantId: string,
69
+ booking: FinanceBooking
70
+ ): Promise<FinanceBooking> => {
71
+ const auth = await getAdminAuth();
72
+ const response: Response = await fetch(
73
+ `${process.env.CORE_API_ORIGIN}/api/documents/finance/booking`,
74
+ {
75
+ method: 'POST',
76
+ headers: {
77
+ 'Content-Type': 'application/json',
78
+ Authorization: auth,
79
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
80
+ },
81
+ body: JSON.stringify(booking),
82
+ }
83
+ );
84
+
85
+ if (response.status === 200) {
86
+ return response.json() as any;
87
+ }
88
+
89
+ const body = await response.text();
90
+ throw new XError('core-sdk.documents.upsert-finance-booking-fail', {
91
+ tenantId,
92
+ booking,
93
+ response: body,
94
+ status: response.status,
95
+ });
96
+ };
@@ -1,3 +1,5 @@
1
+ import { FinanceDocument } from './documents.js';
2
+
1
3
  export type FinanceBookingEvent = {
2
4
  id: string;
3
5
  branchId: string;
@@ -5,6 +7,7 @@ export type FinanceBookingEvent = {
5
7
  userId: string;
6
8
  tenantId: string;
7
9
  type: 'Sale Finance' | 'Purchase Finance';
10
+ version: FinanceDocument['version'];
8
11
  };
9
12
 
10
13
  export type FinanceBooking = {
@@ -1,7 +1,7 @@
1
+ import type { Block } from '@aws-sdk/client-textract';
1
2
  import { BusinessEntityIds } from '@bisondesk/commons-sdk/constants';
2
- import { AttachmentValue, PhoneNumberValue, SearchPermissions } from '@bisondesk/commons-sdk/types';
3
- import { FinanceBooking } from './booking';
4
- import { FinanceDocumentV1 } from './legacy';
3
+ import { AttachmentValue, PhoneNumberValue } from '@bisondesk/commons-sdk/types';
4
+ import { FinanceDocumentV1 } from './legacy.js';
5
5
 
6
6
  export enum AdministrativeDocType {
7
7
  General = 'General Administrative',
@@ -99,6 +99,7 @@ export type FinanceDocumentV2 = BaseDocument & {
99
99
  invoiceId?: string; // mandatory in credit notes but forbidden in invoices
100
100
  issueDate: string;
101
101
  lines: FinanceDocumentLine[];
102
+ paymentNotes?: string;
102
103
  notes?: string;
103
104
  salesperson: {
104
105
  name: string;
@@ -145,6 +146,7 @@ export enum DraftProcessStatus {
145
146
  // Prefill = 'Prefill',
146
147
  // Ready = 'Ready',
147
148
  Error = 'Error',
149
+ Validated = 'Validated',
148
150
  Unprocessed = 'Unprocessed',
149
151
  Unvalidated = 'Unvalidated',
150
152
  }
@@ -190,23 +192,18 @@ export type NewDocumentDraft<T = NewFinanceDocumentV2 | NewAdministrativeDocumen
190
192
  documentType?: DocumentType;
191
193
  };
192
194
 
193
- export type SearchFinanceDocument = {
194
- doc: FinanceDocumentV2;
195
- permissions: SearchPermissions;
196
- booking?: FinanceBooking;
197
- };
198
-
199
- export type SearchAdministrativeDocument = {
200
- doc: AdministrativeDocument;
201
- permissions: SearchPermissions;
202
- };
203
-
204
195
  export const isFinanceDocumentV2 = (
205
196
  arg: FinanceDocumentV2 | FinanceDocumentV1
206
197
  ): arg is FinanceDocumentV2 => {
207
198
  return (arg as FinanceDocumentV2).version === 2;
208
199
  };
209
200
 
201
+ export const isFinanceDocumentV1 = (
202
+ arg: FinanceDocumentV2 | FinanceDocumentV1
203
+ ): arg is FinanceDocumentV1 => {
204
+ return (arg as FinanceDocumentV2).version == null;
205
+ };
206
+
210
207
  export const isAdministrativeDocument = (arg: any): arg is AdministrativeDocument => {
211
208
  return Object.values(AdministrativeDocType).includes(arg.type);
212
209
  };
@@ -264,3 +261,14 @@ export enum FinanceDocumentSubtype {
264
261
  Proforma = 'Proforma',
265
262
  PurchaseOrder = 'Purchase Order',
266
263
  }
264
+
265
+ export type OCRDocument = {
266
+ Blocks?: Block[];
267
+ orientation: number;
268
+ hasCurrency: boolean;
269
+ };
270
+
271
+ export enum FinanceDocumentActions {
272
+ PAY_FINANCE_DOCUMENT = 'pay_finance_document',
273
+ DELETE_FINANCE_DOCUMENT = 'delete_finance_document',
274
+ }
@@ -0,0 +1,20 @@
1
+ export enum EmbeddingType {
2
+ Document = 'document',
3
+ Line = 'line',
4
+ }
5
+
6
+ export type DocumentEmbedding = {
7
+ id: string;
8
+ documentId: string;
9
+ embedding: number[];
10
+ type: EmbeddingType;
11
+ active: boolean;
12
+
13
+ category?: string;
14
+ lineCategory?: string;
15
+ };
16
+
17
+ export type DocumentEmbeddingDB = {
18
+ data: Omit<DocumentEmbedding, 'embedding'>;
19
+ embedding: string;
20
+ };
@@ -18,6 +18,7 @@ export type FinanceLineV1 = {
18
18
  export type FinanceDocumentV1 = {
19
19
  id: string;
20
20
  branchId: string;
21
+ version?: 1.0;
21
22
 
22
23
  type: 'Sale Finance' | 'Purchase Finance';
23
24
  subtype: 'Invoice' | 'Credit Note' | 'Proforma' | 'Purchase Order';