@powerhousedao/contributor-billing 0.0.40 → 0.0.42

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 (29) hide show
  1. package/dist/document-models/billing-statement/gen/schema/types.d.ts +4 -4
  2. package/dist/document-models/billing-statement/gen/utils.d.ts.map +1 -1
  3. package/dist/document-models/billing-statement/gen/utils.js +7 -3
  4. package/dist/document-models/billing-statement/src/tests/document-model.test.js +1 -1
  5. package/dist/document-models/invoice/gen/schema/types.d.ts +4 -4
  6. package/dist/document-models/invoice/gen/utils.d.ts.map +1 -1
  7. package/dist/document-models/invoice/gen/utils.js +9 -5
  8. package/dist/document-models/invoice/src/tests/document-model.test.js +1 -1
  9. package/dist/editors/contributor-billing/components/EditorContainer.js +1 -1
  10. package/dist/editors/contributor-billing/components/InvoiceTable/InvoiceTable.d.ts +1 -1
  11. package/dist/editors/contributor-billing/components/InvoiceTable/InvoiceTable.d.ts.map +1 -1
  12. package/dist/editors/contributor-billing/components/InvoiceTable/InvoiceTable.js +24 -48
  13. package/dist/editors/contributor-billing/components/InvoiceTable/InvoiceTableRow.d.ts +1 -6
  14. package/dist/editors/contributor-billing/components/InvoiceTable/InvoiceTableRow.d.ts.map +1 -1
  15. package/dist/editors/contributor-billing/components/InvoiceTable/InvoiceTableRow.js +1 -1
  16. package/dist/editors/contributor-billing/editor.js +1 -1
  17. package/dist/editors/invoice/ingestPDF.js +1 -1
  18. package/dist/editors/invoice/invoiceToGnosis.js +1 -1
  19. package/dist/editors/invoice/lineItems.d.ts +2 -2
  20. package/dist/editors/invoice/lineItems.d.ts.map +1 -1
  21. package/dist/editors/invoice/lineItems.js +2 -5
  22. package/dist/editors/invoice/requestFinance.js +1 -1
  23. package/dist/editors/invoice/uploadPdfChunked.js +1 -1
  24. package/dist/scripts/invoice/pdfToDocumentAi.d.ts +1 -1
  25. package/dist/scripts/invoice/pdfToDocumentAi.d.ts.map +1 -1
  26. package/dist/scripts/invoice/pdfToDocumentAi.js +3 -3
  27. package/dist/subgraphs/billing-statement/resolvers.js +14 -14
  28. package/dist/subgraphs/invoice/resolvers.js +36 -36
  29. package/package.json +13 -12
@@ -54,21 +54,21 @@ export type Scalars = {
54
54
  Amount_Crypto: {
55
55
  input: {
56
56
  unit: string;
57
- value: number;
57
+ value: string;
58
58
  };
59
59
  output: {
60
60
  unit: string;
61
- value: number;
61
+ value: string;
62
62
  };
63
63
  };
64
64
  Amount_Currency: {
65
65
  input: {
66
66
  unit: string;
67
- value: number;
67
+ value: string;
68
68
  };
69
69
  output: {
70
70
  unit: string;
71
- value: number;
71
+ value: string;
72
72
  };
73
73
  };
74
74
  Amount_Fiat: {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../document-models/billing-statement/gen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAOxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAChC,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,kBAAkB,EAAE,qBAUhC,CAAC;AACF,eAAO,MAAM,iBAAiB,EAAE,0BAA+B,CAAC;AAEhE,QAAA,MAAM,KAAK,EAAE,kBAAkB,CAAC,wBAAwB,CAgCvD,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../document-models/billing-statement/gen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAQxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAChC,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,kBAAkB,EAAE,qBAUhC,CAAC;AACF,eAAO,MAAM,iBAAiB,EAAE,0BAA+B,CAAC;AAEhE,QAAA,MAAM,KAAK,EAAE,kBAAkB,CAAC,wBAAwB,CAoCvD,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -1,4 +1,4 @@
1
- import { baseCreateDocument, baseCreateExtendedState, baseSaveToFile, baseSaveToFileHandle, baseLoadFromFile, baseLoadFromInput, } from "document-model";
1
+ import { baseCreateDocument, baseCreateExtendedState, baseSaveToFile, baseSaveToFileHandle, baseLoadFromFile, baseLoadFromInput, generateId, } from "document-model";
2
2
  import { reducer } from "./reducer.js";
3
3
  export const initialGlobalState = {
4
4
  contributor: "",
@@ -21,10 +21,14 @@ const utils = {
21
21
  };
22
22
  },
23
23
  createExtendedState(extendedState) {
24
- return baseCreateExtendedState({ ...extendedState, documentType: "powerhouse/billing-statement" }, utils.createState);
24
+ return baseCreateExtendedState({ ...extendedState }, utils.createState);
25
25
  },
26
26
  createDocument(state) {
27
- return baseCreateDocument(utils.createExtendedState(state), utils.createState);
27
+ const document = baseCreateDocument(utils.createExtendedState(state), utils.createState);
28
+ document.header.documentType = "powerhouse/billing-statement";
29
+ // for backwards compatibility, but this is NOT a valid signed document id
30
+ document.header.id = generateId();
31
+ return document;
28
32
  },
29
33
  saveToFile(document, path, name) {
30
34
  return baseSaveToFile(document, path, ".phdm", name);
@@ -7,7 +7,7 @@ describe("Billing Statement Document Model", () => {
7
7
  it("should create a new Billing Statement document", () => {
8
8
  const document = utils.createDocument();
9
9
  expect(document).toBeDefined();
10
- expect(document.documentType).toBe("powerhouse/billing-statement");
10
+ expect(document.header.documentType).toBe("powerhouse/billing-statement");
11
11
  });
12
12
  it("should create a new Billing Statement document with a valid initial state", () => {
13
13
  const document = utils.createDocument();
@@ -54,21 +54,21 @@ export type Scalars = {
54
54
  Amount_Crypto: {
55
55
  input: {
56
56
  unit: string;
57
- value: number;
57
+ value: string;
58
58
  };
59
59
  output: {
60
60
  unit: string;
61
- value: number;
61
+ value: string;
62
62
  };
63
63
  };
64
64
  Amount_Currency: {
65
65
  input: {
66
66
  unit: string;
67
- value: number;
67
+ value: string;
68
68
  };
69
69
  output: {
70
70
  unit: string;
71
- value: number;
71
+ value: string;
72
72
  };
73
73
  };
74
74
  Amount_Fiat: {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../document-models/invoice/gen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAOxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,kBAAkB,EAAE,YA8IhC,CAAC;AACF,eAAO,MAAM,iBAAiB,EAAE,iBAAsB,CAAC;AAEvD,QAAA,MAAM,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAgC9C,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../document-models/invoice/gen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAQxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,kBAAkB,EAAE,YA8IhC,CAAC;AACF,eAAO,MAAM,iBAAiB,EAAE,iBAAsB,CAAC;AAEvD,QAAA,MAAM,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAoC9C,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -1,7 +1,6 @@
1
- import { baseCreateDocument, baseCreateExtendedState, baseSaveToFile, baseSaveToFileHandle, baseLoadFromFile, baseLoadFromInput, } from "document-model";
1
+ import { baseCreateDocument, baseCreateExtendedState, baseSaveToFile, baseSaveToFileHandle, baseLoadFromFile, baseLoadFromInput, generateId, } from "document-model";
2
2
  import { reducer } from "./reducer.js";
3
3
  export const initialGlobalState = {
4
- closureReason: null,
5
4
  invoiceNo: "",
6
5
  dateIssued: "",
7
6
  dateDue: "",
@@ -139,9 +138,10 @@ export const initialGlobalState = {
139
138
  rejections: [],
140
139
  payments: [],
141
140
  exported: {
142
- timestamp: "",
143
141
  exportedLineItems: [],
142
+ timestamp: "",
144
143
  },
144
+ closureReason: null,
145
145
  };
146
146
  export const initialLocalState = {};
147
147
  const utils = {
@@ -153,10 +153,14 @@ const utils = {
153
153
  };
154
154
  },
155
155
  createExtendedState(extendedState) {
156
- return baseCreateExtendedState({ ...extendedState, documentType: "powerhouse/invoice" }, utils.createState);
156
+ return baseCreateExtendedState({ ...extendedState }, utils.createState);
157
157
  },
158
158
  createDocument(state) {
159
- return baseCreateDocument(utils.createExtendedState(state), utils.createState);
159
+ const document = baseCreateDocument(utils.createExtendedState(state), utils.createState);
160
+ document.header.documentType = "powerhouse/invoice";
161
+ // for backwards compatibility, but this is NOT a valid signed document id
162
+ document.header.id = generateId();
163
+ return document;
160
164
  },
161
165
  saveToFile(document, path, name) {
162
166
  return baseSaveToFile(document, path, ".phdm", name);
@@ -7,7 +7,7 @@ describe("Invoice Document Model", () => {
7
7
  it("should create a new Invoice document", () => {
8
8
  const document = utils.createDocument();
9
9
  expect(document).toBeDefined();
10
- expect(document.documentType).toBe("powerhouse/invoice");
10
+ expect(document.header?.documentType).toBe("powerhouse/invoice");
11
11
  });
12
12
  it("should create a new Invoice document with a valid initial state", () => {
13
13
  const document = utils.createDocument();
@@ -19,7 +19,7 @@ export const EditorContainer = (props) => {
19
19
  const ext = documentModelModule.documentModel.extension;
20
20
  await exportDocument(document, title, ext);
21
21
  }
22
- }, [document?.revision.global, document?.revision.local]);
22
+ }, [document?.header?.revision?.global, document?.header?.revision?.local]);
23
23
  const loadingContent = (_jsx("div", { className: "flex-1 flex justify-center items-center h-full", children: _jsx(DefaultEditorLoader, {}) }));
24
24
  if (!document)
25
25
  return loadingContent;
@@ -1,5 +1,5 @@
1
1
  import { type UiFileNode } from "@powerhousedao/design-system";
2
- import { DocumentModelModule } from "document-model";
2
+ import { type DocumentModelModule } from "document-model";
3
3
  import { type InvoiceAction } from "../../../../document-models/invoice/index.js";
4
4
  interface InvoiceTableProps {
5
5
  files: UiFileNode[];
@@ -1 +1 @@
1
- {"version":3,"file":"InvoiceTable.d.ts","sourceRoot":"","sources":["../../../../../editors/contributor-billing/components/InvoiceTable/InvoiceTable.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAU/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAIrD,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,8CAA8C,CAAC;AAwBtD,UAAU,iBAAiB;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,eAAe,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAChE,QAAQ,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACpC,WAAW,EAAE,CACX,QAAQ,EACJ;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GACzB,CAAC,CAAC,IAAI,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,KACjE,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,sBAAsB,EAAE,mBAAmB,EAAE,CAAC;IAC9C,qBAAqB,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,GAAI,0LAc1B,iBAAiB,4CAysBnB,CAAC"}
1
+ {"version":3,"file":"InvoiceTable.d.ts","sourceRoot":"","sources":["../../../../../editors/contributor-billing/components/InvoiceTable/InvoiceTable.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAI/D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI1D,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,8CAA8C,CAAC;AActD,UAAU,iBAAiB;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,eAAe,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAChE,QAAQ,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACpC,WAAW,EAAE,CACX,QAAQ,EACJ;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GACzB,CAAC,CAAC,IAAI,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,KACjE,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,sBAAsB,EAAE,mBAAmB,EAAE,CAAC;IAC9C,qBAAqB,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,GAAI,0LAc1B,iBAAiB,4CA2pBnB,CAAC"}
@@ -4,8 +4,8 @@ import { useState, useMemo } from "react";
4
4
  import { HeaderControls } from "./HeaderControls.js";
5
5
  import { InvoiceTableSection } from "./InvoiceTableSection.js";
6
6
  import { InvoiceTableRow } from "./InvoiceTableRow.js";
7
- import { useDriveContext, } from "@powerhousedao/reactor-browser";
8
- import { generateId } from "document-model";
7
+ import { useDriveContext } from "@powerhousedao/reactor-browser";
8
+ import { createPresignedHeader } from "document-model";
9
9
  import { mapTags } from "../../../billing-statement/lineItemTags/tagMapping.js";
10
10
  import { exportInvoicesToXeroCSV } from "../../../../scripts/contributor-billing/createXeroCsv.js";
11
11
  import { toast } from "@powerhousedao/design-system";
@@ -116,14 +116,15 @@ export const InvoiceTable = ({ files, state, setActiveDocumentId, getDispatch, s
116
116
  return;
117
117
  const invoiceFile = files.find((file) => file.id === id);
118
118
  const invoiceState = state[id];
119
- const newDocumentId = generateId();
120
119
  await addDocument(driveId, `bill-${invoiceFile?.name}`, "powerhouse/billing-statement", undefined, {
121
- id: newDocumentId,
122
- slug: `bill-${makeSlug(invoiceFile?.name || "")}`,
123
- name: `bill-${cleanName(invoiceFile?.name || "")}`,
124
- created: new Date().toISOString(),
125
- lastModified: new Date().toISOString(),
126
- documentType: "powerhouse/billing-statement",
120
+ header: {
121
+ ...createPresignedHeader(),
122
+ ...{
123
+ slug: `bill-${makeSlug(invoiceFile?.name || "")}`,
124
+ name: `bill-${cleanName(invoiceFile?.name || "")}`,
125
+ documentType: "powerhouse/billing-statement",
126
+ },
127
+ },
127
128
  state: {
128
129
  global: {
129
130
  contributor: id,
@@ -150,25 +151,15 @@ export const InvoiceTable = ({ files, state, setActiveDocumentId, getDispatch, s
150
151
  },
151
152
  local: {},
152
153
  },
153
- revision: {
154
- global: 0,
155
- local: 0,
156
- },
157
154
  operations: {
158
155
  global: [],
159
156
  local: [],
160
157
  },
158
+ history: {
159
+ global: [],
160
+ local: [],
161
+ },
161
162
  initialState: {
162
- id: newDocumentId,
163
- slug: `bill-${cleanName(invoiceFile?.name || "")}`,
164
- name: `bill-${cleanName(invoiceFile?.name || "")}`,
165
- documentType: "powerhouse/billing-statement",
166
- created: new Date().toISOString(),
167
- lastModified: new Date().toISOString(),
168
- revision: {
169
- global: 0,
170
- local: 0,
171
- },
172
163
  state: {
173
164
  global: {
174
165
  contributor: id,
@@ -221,22 +212,7 @@ export const InvoiceTable = ({ files, state, setActiveDocumentId, getDispatch, s
221
212
  state: selectedInvoices[idx],
222
213
  })));
223
214
  try {
224
- const exportedInvoices = await exportInvoicesToXeroCSV(selectedInvoices, baseCurrency);
225
- // Object.entries(exportedInvoices).forEach(
226
- // ([invoiceId, invoiceData]: [string, any]) => {
227
- // const dispatch = selectedInvoiceDispatchMap[invoiceId];
228
- // if (dispatch) {
229
- // dispatch(
230
- // actions.setExportedData({
231
- // timestamp: invoiceData.exportTimestamp as string,
232
- // exportedLineItems: invoiceData.exportedLines as string[][],
233
- // })
234
- // );
235
- // } else {
236
- // console.warn(`No dispatch function found for invoice ${invoiceId}`);
237
- // }
238
- // }
239
- // );
215
+ await exportInvoicesToXeroCSV(selectedInvoices, baseCurrency);
240
216
  toast("Invoices exported successfully", {
241
217
  type: "success",
242
218
  });
@@ -255,29 +231,29 @@ export const InvoiceTable = ({ files, state, setActiveDocumentId, getDispatch, s
255
231
  return (_jsxs("div", { className: "w-full h-full bg-white rounded-lg p-4 border border-gray-200 shadow-md mt-4 overflow-x-auto", children: [_jsx(HeaderControls, { statusOptions: statusOptions, onStatusChange: handleStatusChange, onBatchAction: onBatchAction, onExport: handleCSVExport, selectedStatuses: selectedInvoiceStatuses }), shouldShowSection("DRAFT") && (_jsx(InvoiceTableSection, { title: "Draft", count: draft.length, onSelectDocumentModel: onSelectDocumentModel, filteredDocumentModels: filteredDocumentModels, children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: draft.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
256
232
  ...prev,
257
233
  [row.id]: checked,
258
- })), menuOptions: getMenuOptions(), onMenuAction: (action) => { }, setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) })), shouldShowSection("ISSUED") && (_jsx(InvoiceTableSection, { title: "Issued", count: issued.length, children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: issued.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
234
+ })), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) })), shouldShowSection("ISSUED") && (_jsx(InvoiceTableSection, { title: "Issued", count: issued.length, children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: issued.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
259
235
  ...prev,
260
236
  [row.id]: checked,
261
- })), menuOptions: getMenuOptions(), onMenuAction: (action) => { }, setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("ACCEPTED") && (_jsx(InvoiceTableSection, { title: "Accepted", count: accepted.length, color: "bg-green-100 text-green-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: accepted.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
237
+ })), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("ACCEPTED") && (_jsx(InvoiceTableSection, { title: "Accepted", count: accepted.length, color: "bg-green-100 text-green-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: accepted.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
262
238
  ...prev,
263
239
  [row.id]: checked,
264
- })), menuOptions: getMenuOptions(), onMenuAction: (action) => { }, setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTSCHEDULED") && (_jsx(InvoiceTableSection, { title: "Payment Scheduled", count: paymentScheduled.length, color: "bg-green-100 text-green-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentScheduled.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
240
+ })), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTSCHEDULED") && (_jsx(InvoiceTableSection, { title: "Payment Scheduled", count: paymentScheduled.length, color: "bg-green-100 text-green-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentScheduled.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
265
241
  ...prev,
266
242
  [row.id]: checked,
267
- })), menuOptions: getMenuOptions(), onMenuAction: (action) => { }, setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTSENT") && (_jsx(InvoiceTableSection, { title: "Payment Sent", count: paymentSent.length, color: "bg-green-100 text-green-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentSent.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
243
+ })), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTSENT") && (_jsx(InvoiceTableSection, { title: "Payment Sent", count: paymentSent.length, color: "bg-green-100 text-green-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentSent.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
268
244
  ...prev,
269
245
  [row.id]: checked,
270
- })), menuOptions: getMenuOptions(), onMenuAction: (action) => { }, setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTISSUE") && (_jsx(InvoiceTableSection, { title: "Payment Issue", count: paymentIssue.length, color: "bg-yellow-100 text-yellow-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentIssue.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
246
+ })), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTISSUE") && (_jsx(InvoiceTableSection, { title: "Payment Issue", count: paymentIssue.length, color: "bg-yellow-100 text-yellow-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Billing Statement" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentIssue.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
271
247
  ...prev,
272
248
  [row.id]: checked,
273
- })), menuOptions: getMenuOptions(), onMenuAction: (action) => { }, setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTCLOSED") && (_jsx(InvoiceTableSection, { title: "Payment Closed", count: paymentClosed.length, color: "bg-red-500 text-black-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentClosed.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
249
+ })), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode, onCreateBillingStatement: handleCreateBillingStatement, billingDocStates: billingDocStates }, row.id))) })] }) })), shouldShowSection("PAYMENTCLOSED") && (_jsx(InvoiceTableSection, { title: "Payment Closed", count: paymentClosed.length, color: "bg-red-500 text-black-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: paymentClosed.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
274
250
  ...prev,
275
251
  [row.id]: checked,
276
- })), menuOptions: getMenuOptions(), onMenuAction: (action) => { }, setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) })), shouldShowSection("REJECTED") && (_jsx(InvoiceTableSection, { title: "Rejected", count: rejected.length, color: "bg-red-500 text-black-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: rejected.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
252
+ })), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) })), shouldShowSection("REJECTED") && (_jsx(InvoiceTableSection, { title: "Rejected", count: rejected.length, color: "bg-red-500 text-black-600", children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2", children: "Exported" })] }) }), _jsx("tbody", { children: rejected.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
277
253
  ...prev,
278
254
  [row.id]: checked,
279
- })), menuOptions: getMenuOptions(), onMenuAction: (action) => { }, setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) })), shouldShowSection("OTHER") && (_jsx(InvoiceTableSection, { title: "Other", count: otherInvoices.length, children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Exported" })] }) }), _jsx("tbody", { children: otherInvoices.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
255
+ })), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) })), shouldShowSection("OTHER") && (_jsx(InvoiceTableSection, { title: "Other", count: otherInvoices.length, children: _jsxs("table", { className: "w-full text-sm border-separate border-spacing-0 border border-gray-400", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-gray-50", children: [_jsx("th", { className: "px-2 py-2 w-8" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issuer" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Invoice No." }), _jsx("th", { className: "px-2 py-2 text-center", children: "Issue Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Due Date" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Currency" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Amount" }), _jsx("th", { className: "px-2 py-2 text-center", children: "Exported" })] }) }), _jsx("tbody", { children: otherInvoices.map((row) => (_jsx(InvoiceTableRow, { files: files, row: row, isSelected: !!selected[row.id], onSelect: (checked) => setSelected((prev) => ({
280
256
  ...prev,
281
257
  [row.id]: checked,
282
- })), menuOptions: getMenuOptions(), onMenuAction: (action) => { }, setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) }))] }, `${Object.keys(state).length}`));
258
+ })), setActiveDocumentId: setActiveDocumentId, onDeleteNode: handleDelete, renameNode: renameNode }, row.id))) })] }) }))] }, `${Object.keys(state).length}`));
283
259
  };
@@ -1,14 +1,9 @@
1
1
  import { type UiFileNode } from "@powerhousedao/design-system";
2
- export declare const InvoiceTableRow: ({ files, row, isSelected, onSelect, menuOptions, onMenuAction, setActiveDocumentId, onDeleteNode, renameNode, onCreateBillingStatement, billingDocStates, }: {
2
+ export declare const InvoiceTableRow: ({ files, row, isSelected, onSelect, setActiveDocumentId, onDeleteNode, renameNode, onCreateBillingStatement, billingDocStates, }: {
3
3
  files?: UiFileNode[];
4
4
  row: any;
5
5
  isSelected: boolean;
6
6
  onSelect: (checked: boolean) => void;
7
- menuOptions: {
8
- label: string;
9
- value: string;
10
- }[];
11
- onMenuAction: (action: string) => void;
12
7
  setActiveDocumentId: (id: string) => void;
13
8
  onDeleteNode: (nodeId: string) => void;
14
9
  renameNode: (nodeId: string, name: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"InvoiceTableRow.d.ts","sourceRoot":"","sources":["../../../../../editors/contributor-billing/components/InvoiceTable/InvoiceTableRow.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,eAAe,GAAI,6JAY7B;IACD,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChD,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,gBAAgB,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1D,4CA2GA,CAAC"}
1
+ {"version":3,"file":"InvoiceTableRow.d.ts","sourceRoot":"","sources":["../../../../../editors/contributor-billing/components/InvoiceTable/InvoiceTableRow.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,eAAe,GAAI,kIAU7B;IACD,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,gBAAgB,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1D,4CA2GA,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState, useRef } from "react";
3
3
  import { FileItem, } from "@powerhousedao/design-system";
4
- export const InvoiceTableRow = ({ files, row, isSelected, onSelect, menuOptions, onMenuAction, setActiveDocumentId, onDeleteNode, renameNode, onCreateBillingStatement, billingDocStates, }) => {
4
+ export const InvoiceTableRow = ({ files, row, isSelected, onSelect, setActiveDocumentId, onDeleteNode, renameNode, onCreateBillingStatement, billingDocStates, }) => {
5
5
  const [menuOpen, setMenuOpen] = useState(false);
6
6
  const menuRef = useRef(null);
7
7
  const billingDoc = billingDocStates?.find((doc) => doc.contributor === row.id);
@@ -41,7 +41,7 @@ export function BaseEditor(props) {
41
41
  dispatch(copyNodeAction);
42
42
  }
43
43
  }, [dispatch, props.document.state.global.nodes]);
44
- return (_jsx("div", { className: "new-drive-explorer", children: _jsx(DriveExplorer, { driveId: props.document.id, nodes: nodes, onAddFolder: onAddFolder, onDeleteNode: onDeleteNode, renameNode: renameNode, onCopyNode: onCopyNode, context: context, document: props.document, dispatch: dispatch }, nodes.length) }));
44
+ return (_jsx("div", { className: "new-drive-explorer", children: _jsx(DriveExplorer, { driveId: props.document.header.id, nodes: nodes, onAddFolder: onAddFolder, onDeleteNode: onDeleteNode, renameNode: renameNode, onCopyNode: onCopyNode, context: context, document: props.document, dispatch: dispatch }, nodes.length) }));
45
45
  }
46
46
  export default function Editor(props) {
47
47
  return (_jsx(DriveContextProvider, { value: props.context, children: _jsx(WagmiContext, { children: _jsx(BaseEditor, { ...props }) }) }));
@@ -6,7 +6,7 @@ import { uploadPdfChunked } from "./uploadPdfChunked.js";
6
6
  import { getCountryCodeFromName } from "./utils/utils.js";
7
7
  let GRAPHQL_URL = 'http://localhost:4001/graphql/invoice';
8
8
  if (!window.document.baseURI.includes('localhost')) {
9
- GRAPHQL_URL = 'https://switchboard-staging.powerhouse.xyz/graphql/invoice';
9
+ GRAPHQL_URL = 'https://switchboard-dev.powerhouse.xyz/graphql/invoice';
10
10
  }
11
11
  export async function loadPDFFile({ file, dispatch, }) {
12
12
  if (!file)
@@ -4,7 +4,7 @@ import { actions, } from "../../document-models/invoice/index.js";
4
4
  import { generateId } from "document-model";
5
5
  let GRAPHQL_URL = "http://localhost:4001/graphql/invoice";
6
6
  if (!window.document.baseURI.includes('localhost')) {
7
- GRAPHQL_URL = 'https://switchboard-staging.powerhouse.xyz/graphql/invoice';
7
+ GRAPHQL_URL = 'https://switchboard-dev.powerhouse.xyz/graphql/invoice';
8
8
  }
9
9
  const InvoiceToGnosis = ({ docState, dispatch }) => {
10
10
  const [isLoading, setIsLoading] = useState(false);
@@ -1,5 +1,5 @@
1
- import { EditInvoiceInput, DeleteLineItemInput, InvoiceTag } from "../../document-models/invoice/index.js";
2
- import { Dispatch } from "react";
1
+ import { type EditInvoiceInput, type DeleteLineItemInput, type InvoiceTag } from "../../document-models/invoice/index.js";
2
+ import { type Dispatch } from "react";
3
3
  export declare function formatNumber(value: number): string;
4
4
  type LineItem = {
5
5
  currency: string;
@@ -1 +1 @@
1
- {"version":3,"file":"lineItems.d.ts","sourceRoot":"","sources":["../../../editors/invoice/lineItems.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACX,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAKL,QAAQ,EACT,MAAM,OAAO,CAAC;AAaf,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsBlD;AAED,KAAK,QAAQ,GAAG;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC;AAwNF,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC;CACxC,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,eAAe,GAChB,EAAE,mBAAmB,2CA6LrB"}
1
+ {"version":3,"file":"lineItems.d.ts","sourceRoot":"","sources":["../../../editors/invoice/lineItems.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAChB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,OAAO,CAAC;AAaf,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsBlD;AAED,KAAK,QAAQ,GAAG;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC;AAwNF,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC;CACxC,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,eAAe,GAChB,EAAE,mBAAmB,2CA6LrB"}
@@ -1,10 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /* eslint-disable react/jsx-max-depth */
3
- /* eslint-disable react/jsx-no-bind */
4
- /* eslint-disable react/button-has-type */
5
2
  import { RWAButton } from "@powerhousedao/design-system";
6
3
  import { forwardRef, useState, useMemo, useRef, } from "react";
7
- import { v4 as uuidv4 } from "uuid";
4
+ import { generateId } from "document-model";
8
5
  import { Tag } from "lucide-react";
9
6
  import { NumberForm } from "./components/numberForm.js";
10
7
  import { InputField } from "./components/inputField.js";
@@ -127,7 +124,7 @@ const EditableLineItem = forwardRef(function EditableLineItem(props, ref) {
127
124
  : Number(editedItem.taxPercent)
128
125
  : (editedItem.taxPercent ?? 0);
129
126
  const completeItem = {
130
- id: editedItem.id ?? uuidv4(),
127
+ id: editedItem.id ?? generateId(),
131
128
  currency: editedItem.currency,
132
129
  description: editedItem.description ?? "",
133
130
  quantity: quantity,
@@ -4,7 +4,7 @@ import { actions, } from "../../document-models/invoice/index.js";
4
4
  import { generateId } from "document-model";
5
5
  let GRAPHQL_URL = 'http://localhost:4001/graphql/invoice';
6
6
  if (!window.document.baseURI.includes('localhost')) {
7
- GRAPHQL_URL = 'https://switchboard-staging.powerhouse.xyz/graphql/invoice';
7
+ GRAPHQL_URL = 'https://switchboard-dev.powerhouse.xyz/graphql/invoice';
8
8
  }
9
9
  const RequestFinance = ({ docState, dispatch }) => {
10
10
  const [isLoading, setIsLoading] = useState(false);
@@ -7,7 +7,7 @@
7
7
  */
8
8
  let GRAPHQL_URL = 'http://localhost:4001/graphql/invoice';
9
9
  if (!window.document.baseURI.includes('localhost')) {
10
- GRAPHQL_URL = 'https://switchboard-staging.powerhouse.xyz/graphql/invoice';
10
+ GRAPHQL_URL = 'https://switchboard-dev.powerhouse.xyz/graphql/invoice';
11
11
  }
12
12
  export async function uploadPdfChunked(pdfData, endpoint = GRAPHQL_URL, chunkSize = 500 * 1024, // 500KB chunks
13
13
  onProgress) {
@@ -1,4 +1,4 @@
1
- import { InvoiceState } from "../../document-models/invoice/index.js";
1
+ import { type InvoiceState } from "../../document-models/invoice/index.js";
2
2
  export declare function uploadPdfAndGetJson(inputDoc: any): Promise<{
3
3
  invoiceData: Partial<InvoiceState>;
4
4
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"pdfToDocumentAi.d.ts","sourceRoot":"","sources":["../../../scripts/invoice/pdfToDocumentAi.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,YAAY,EAGb,MAAM,wCAAwC,CAAC;AAmBlD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,GAAG;;GAyDtD"}
1
+ {"version":3,"file":"pdfToDocumentAi.d.ts","sourceRoot":"","sources":["../../../scripts/invoice/pdfToDocumentAi.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,YAAY,EAGlB,MAAM,wCAAwC,CAAC;AAoBlD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,GAAG;;GAyDtD"}
@@ -1,6 +1,6 @@
1
1
  import { DocumentProcessorServiceClient } from '@google-cloud/documentai';
2
2
  import { GoogleAuth } from 'google-auth-library';
3
- import crypto from 'crypto';
3
+ import { generateId } from 'document-model';
4
4
  export async function uploadPdfAndGetJson(inputDoc) {
5
5
  try {
6
6
  console.log("Starting PDF upload and processing"); // Log when processing starts
@@ -257,7 +257,7 @@ function normalizeAccountType(accountType) {
257
257
  }
258
258
  function parseAddress(addressText) {
259
259
  // Split into lines and clean each line
260
- let addressLines = addressText.split(/[,\n]/).map(line => line.trim()).filter(Boolean);
260
+ const addressLines = addressText.split(/[,\n]/).map(line => line.trim()).filter(Boolean);
261
261
  const addressData = {
262
262
  streetAddress: '',
263
263
  extendedAddress: null,
@@ -590,7 +590,7 @@ function mapDocumentAiToInvoice(entities, existingInvoice) {
590
590
  totalPriceTaxExcl: parsedQuantity * parsedUnitPrice,
591
591
  totalPriceTaxIncl: parsedQuantity * parsedUnitPrice,
592
592
  currency: invoiceData.currency || 'USD',
593
- id: crypto.randomUUID(),
593
+ id: generateId(),
594
594
  taxPercent: 0
595
595
  });
596
596
  }
@@ -15,25 +15,25 @@ export const getResolvers = (subgraph) => {
15
15
  return {
16
16
  ...doc,
17
17
  driveId: driveId,
18
- state: doc.state.global,
19
- stateJSON: doc.state.global,
20
- revision: doc.revision.global,
18
+ state: doc?.state?.global ?? "",
19
+ stateJSON: doc?.state?.global,
20
+ revision: doc?.header?.revision?.global,
21
21
  };
22
22
  },
23
23
  getDocuments: async (args) => {
24
24
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
25
25
  const docsIds = await reactor.getDocuments(driveId);
26
- const docs = await Promise.all(docsIds.map(async (docId) => {
26
+ const docs = await Promise.all((docsIds ?? []).map(async (docId) => {
27
27
  const doc = await reactor.getDocument(driveId, docId);
28
28
  return {
29
29
  ...doc,
30
30
  driveId: driveId,
31
- state: doc.state.global,
32
- stateJSON: doc.state.global,
33
- revision: doc.revision.global,
31
+ state: doc?.state?.global ?? "",
32
+ stateJSON: doc?.state?.global,
33
+ revision: doc?.header?.revision?.global,
34
34
  };
35
35
  }));
36
- return docs.filter((doc) => doc.documentType === "powerhouse/billing-statement");
36
+ return docs.filter((doc) => doc.header?.documentType === "powerhouse/billing-statement");
37
37
  },
38
38
  };
39
39
  },
@@ -66,42 +66,42 @@ export const getResolvers = (subgraph) => {
66
66
  const docId = args.docId || "";
67
67
  const doc = await reactor.getDocument(driveId, docId);
68
68
  await reactor.addAction(driveId, docId, actions.editBillingStatement({ ...args.input }));
69
- return doc.revision.global + 1;
69
+ return (doc?.header?.revision.global ?? 0) + 1;
70
70
  },
71
71
  BillingStatement_editContributor: async (_, args) => {
72
72
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
73
73
  const docId = args.docId || "";
74
74
  const doc = await reactor.getDocument(driveId, docId);
75
75
  await reactor.addAction(driveId, docId, actions.editContributor({ ...args.input }));
76
- return doc.revision.global + 1;
76
+ return (doc?.header?.revision.global ?? 0) + 1;
77
77
  },
78
78
  BillingStatement_editStatus: async (_, args) => {
79
79
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
80
80
  const docId = args.docId || "";
81
81
  const doc = await reactor.getDocument(driveId, docId);
82
82
  await reactor.addAction(driveId, docId, actions.editStatus({ ...args.input }));
83
- return doc.revision.global + 1;
83
+ return (doc?.header?.revision.global ?? 0) + 1;
84
84
  },
85
85
  BillingStatement_addLineItem: async (_, args) => {
86
86
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
87
87
  const docId = args.docId || "";
88
88
  const doc = await reactor.getDocument(driveId, docId);
89
89
  await reactor.addAction(driveId, docId, actions.addLineItem({ ...args.input }));
90
- return doc.revision.global + 1;
90
+ return (doc?.header?.revision.global ?? 0) + 1;
91
91
  },
92
92
  BillingStatement_editLineItem: async (_, args) => {
93
93
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
94
94
  const docId = args.docId || "";
95
95
  const doc = await reactor.getDocument(driveId, docId);
96
96
  await reactor.addAction(driveId, docId, actions.editLineItem({ ...args.input }));
97
- return doc.revision.global + 1;
97
+ return (doc?.header?.revision.global ?? 0) + 1;
98
98
  },
99
99
  BillingStatement_editLineItemTag: async (_, args) => {
100
100
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
101
101
  const docId = args.docId || "";
102
102
  const doc = await reactor.getDocument(driveId, docId);
103
103
  await reactor.addAction(driveId, docId, actions.editLineItemTag({ ...args.input }));
104
- return doc.revision.global + 1;
104
+ return (doc?.header?.revision.global ?? 0) + 1;
105
105
  },
106
106
  },
107
107
  };
@@ -16,25 +16,25 @@ export const getResolvers = (subgraph) => {
16
16
  return {
17
17
  driveId: driveId,
18
18
  ...doc,
19
- state: doc.state.global,
20
- stateJSON: doc.state.global,
21
- revision: doc.revision.global,
19
+ state: doc?.state?.global ?? "",
20
+ stateJSON: doc?.state?.global,
21
+ revision: doc?.header?.revision?.global,
22
22
  };
23
23
  },
24
24
  getDocuments: async (args) => {
25
25
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
26
26
  const docsIds = await reactor.getDocuments(driveId);
27
- const docs = await Promise.all(docsIds.map(async (docId) => {
27
+ const docs = await Promise.all((docsIds ?? []).map(async (docId) => {
28
28
  const doc = await reactor.getDocument(driveId, docId);
29
29
  return {
30
30
  driveId: driveId,
31
31
  ...doc,
32
- state: doc.state.global,
33
- stateJSON: doc.state.global,
34
- revision: doc.revision.global,
32
+ state: doc?.state?.global,
33
+ stateJSON: doc?.state?.global,
34
+ revision: doc?.header?.revision?.global,
35
35
  };
36
36
  }));
37
- return docs.filter((doc) => doc.documentType === "powerhouse/invoice");
37
+ return docs.filter((doc) => doc.header?.documentType === "powerhouse/invoice");
38
38
  },
39
39
  };
40
40
  },
@@ -67,196 +67,196 @@ export const getResolvers = (subgraph) => {
67
67
  const docId = args.docId || "";
68
68
  const doc = await reactor.getDocument(driveId, docId);
69
69
  await reactor.addAction(driveId, docId, actions.editInvoice({ ...args.input }));
70
- return doc.revision.global + 1;
70
+ return (doc?.header?.revision.global ?? 0) + 1;
71
71
  },
72
72
  Invoice_editStatus: async (_, args) => {
73
73
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
74
74
  const docId = args.docId || "";
75
75
  const doc = await reactor.getDocument(driveId, docId);
76
76
  await reactor.addAction(driveId, docId, actions.editStatus({ ...args.input }));
77
- return doc.revision.global + 1;
77
+ return (doc?.header?.revision.global ?? 0) + 1;
78
78
  },
79
79
  Invoice_editPaymentData: async (_, args) => {
80
80
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
81
81
  const docId = args.docId || "";
82
82
  const doc = await reactor.getDocument(driveId, docId);
83
83
  await reactor.addAction(driveId, docId, actions.editPaymentData({ ...args.input }));
84
- return doc.revision.global + 1;
84
+ return (doc?.header?.revision.global ?? 0) + 1;
85
85
  },
86
86
  Invoice_setExportedData: async (_, args) => {
87
87
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
88
88
  const docId = args.docId || "";
89
89
  const doc = await reactor.getDocument(driveId, docId);
90
90
  await reactor.addAction(driveId, docId, actions.setExportedData({ ...args.input }));
91
- return doc.revision.global + 1;
91
+ return (doc?.header?.revision.global ?? 0) + 1;
92
92
  },
93
93
  Invoice_addPayment: async (_, args) => {
94
94
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
95
95
  const docId = args.docId || "";
96
96
  const doc = await reactor.getDocument(driveId, docId);
97
97
  await reactor.addAction(driveId, docId, actions.addPayment({ ...args.input }));
98
- return doc.revision.global + 1;
98
+ return (doc?.header?.revision.global ?? 0) + 1;
99
99
  },
100
100
  Invoice_editIssuer: async (_, args) => {
101
101
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
102
102
  const docId = args.docId || "";
103
103
  const doc = await reactor.getDocument(driveId, docId);
104
104
  await reactor.addAction(driveId, docId, actions.editIssuer({ ...args.input }));
105
- return doc.revision.global + 1;
105
+ return (doc?.header?.revision.global ?? 0) + 1;
106
106
  },
107
107
  Invoice_editIssuerBank: async (_, args) => {
108
108
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
109
109
  const docId = args.docId || "";
110
110
  const doc = await reactor.getDocument(driveId, docId);
111
111
  await reactor.addAction(driveId, docId, actions.editIssuerBank({ ...args.input }));
112
- return doc.revision.global + 1;
112
+ return (doc?.header?.revision.global ?? 0) + 1;
113
113
  },
114
114
  Invoice_editIssuerWallet: async (_, args) => {
115
115
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
116
116
  const docId = args.docId || "";
117
117
  const doc = await reactor.getDocument(driveId, docId);
118
118
  await reactor.addAction(driveId, docId, actions.editIssuerWallet({ ...args.input }));
119
- return doc.revision.global + 1;
119
+ return (doc?.header?.revision.global ?? 0) + 1;
120
120
  },
121
121
  Invoice_editPayer: async (_, args) => {
122
122
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
123
123
  const docId = args.docId || "";
124
124
  const doc = await reactor.getDocument(driveId, docId);
125
125
  await reactor.addAction(driveId, docId, actions.editPayer({ ...args.input }));
126
- return doc.revision.global + 1;
126
+ return (doc?.header?.revision.global ?? 0) + 1;
127
127
  },
128
128
  Invoice_editPayerBank: async (_, args) => {
129
129
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
130
130
  const docId = args.docId || "";
131
131
  const doc = await reactor.getDocument(driveId, docId);
132
132
  await reactor.addAction(driveId, docId, actions.editPayerBank({ ...args.input }));
133
- return doc.revision.global + 1;
133
+ return (doc?.header?.revision.global ?? 0) + 1;
134
134
  },
135
135
  Invoice_editPayerWallet: async (_, args) => {
136
136
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
137
137
  const docId = args.docId || "";
138
138
  const doc = await reactor.getDocument(driveId, docId);
139
139
  await reactor.addAction(driveId, docId, actions.editPayerWallet({ ...args.input }));
140
- return doc.revision.global + 1;
140
+ return (doc?.header?.revision.global ?? 0) + 1;
141
141
  },
142
142
  Invoice_addLineItem: async (_, args) => {
143
143
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
144
144
  const docId = args.docId || "";
145
145
  const doc = await reactor.getDocument(driveId, docId);
146
146
  await reactor.addAction(driveId, docId, actions.addLineItem({ ...args.input }));
147
- return doc.revision.global + 1;
147
+ return (doc?.header?.revision.global ?? 0) + 1;
148
148
  },
149
149
  Invoice_editLineItem: async (_, args) => {
150
150
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
151
151
  const docId = args.docId || "";
152
152
  const doc = await reactor.getDocument(driveId, docId);
153
153
  await reactor.addAction(driveId, docId, actions.editLineItem({ ...args.input }));
154
- return doc.revision.global + 1;
154
+ return (doc?.header?.revision.global ?? 0) + 1;
155
155
  },
156
156
  Invoice_deleteLineItem: async (_, args) => {
157
157
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
158
158
  const docId = args.docId || "";
159
159
  const doc = await reactor.getDocument(driveId, docId);
160
160
  await reactor.addAction(driveId, docId, actions.deleteLineItem({ ...args.input }));
161
- return doc.revision.global + 1;
161
+ return (doc?.header?.revision.global ?? 0) + 1;
162
162
  },
163
163
  Invoice_setLineItemTag: async (_, args) => {
164
164
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
165
165
  const docId = args.docId || "";
166
166
  const doc = await reactor.getDocument(driveId, docId);
167
167
  await reactor.addAction(driveId, docId, actions.setLineItemTag({ ...args.input }));
168
- return doc.revision.global + 1;
168
+ return (doc?.header?.revision.global ?? 0) + 1;
169
169
  },
170
170
  Invoice_setInvoiceTag: async (_, args) => {
171
171
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
172
172
  const docId = args.docId || "";
173
173
  const doc = await reactor.getDocument(driveId, docId);
174
174
  await reactor.addAction(driveId, docId, actions.setInvoiceTag({ ...args.input }));
175
- return doc.revision.global + 1;
175
+ return (doc?.header?.revision.global ?? 0) + 1;
176
176
  },
177
177
  Invoice_cancel: async (_, args) => {
178
178
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
179
179
  const docId = args.docId || "";
180
180
  const doc = await reactor.getDocument(driveId, docId);
181
181
  await reactor.addAction(driveId, docId, actions.cancel({ ...args.input }));
182
- return doc.revision.global + 1;
182
+ return (doc?.header?.revision.global ?? 0) + 1;
183
183
  },
184
184
  Invoice_issue: async (_, args) => {
185
185
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
186
186
  const docId = args.docId || "";
187
187
  const doc = await reactor.getDocument(driveId, docId);
188
188
  await reactor.addAction(driveId, docId, actions.issue({ ...args.input }));
189
- return doc.revision.global + 1;
189
+ return (doc?.header?.revision.global ?? 0) + 1;
190
190
  },
191
191
  Invoice_reset: async (_, args) => {
192
192
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
193
193
  const docId = args.docId || "";
194
194
  const doc = await reactor.getDocument(driveId, docId);
195
195
  await reactor.addAction(driveId, docId, actions.reset({ ...args.input }));
196
- return doc.revision.global + 1;
196
+ return (doc?.header?.revision.global ?? 0) + 1;
197
197
  },
198
198
  Invoice_reject: async (_, args) => {
199
199
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
200
200
  const docId = args.docId || "";
201
201
  const doc = await reactor.getDocument(driveId, docId);
202
202
  await reactor.addAction(driveId, docId, actions.reject({ ...args.input }));
203
- return doc.revision.global + 1;
203
+ return (doc?.header?.revision.global ?? 0) + 1;
204
204
  },
205
205
  Invoice_accept: async (_, args) => {
206
206
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
207
207
  const docId = args.docId || "";
208
208
  const doc = await reactor.getDocument(driveId, docId);
209
209
  await reactor.addAction(driveId, docId, actions.accept({ ...args.input }));
210
- return doc.revision.global + 1;
210
+ return (doc?.header?.revision.global ?? 0) + 1;
211
211
  },
212
212
  Invoice_reinstate: async (_, args) => {
213
213
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
214
214
  const docId = args.docId || "";
215
215
  const doc = await reactor.getDocument(driveId, docId);
216
216
  await reactor.addAction(driveId, docId, actions.reinstate({ ...args.input }));
217
- return doc.revision.global + 1;
217
+ return (doc?.header?.revision.global ?? 0) + 1;
218
218
  },
219
219
  Invoice_schedulePayment: async (_, args) => {
220
220
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
221
221
  const docId = args.docId || "";
222
222
  const doc = await reactor.getDocument(driveId, docId);
223
223
  await reactor.addAction(driveId, docId, actions.schedulePayment({ ...args.input }));
224
- return doc.revision.global + 1;
224
+ return (doc?.header?.revision.global ?? 0) + 1;
225
225
  },
226
226
  Invoice_reapprovePayment: async (_, args) => {
227
227
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
228
228
  const docId = args.docId || "";
229
229
  const doc = await reactor.getDocument(driveId, docId);
230
230
  await reactor.addAction(driveId, docId, actions.reapprovePayment({ ...args.input }));
231
- return doc.revision.global + 1;
231
+ return (doc?.header?.revision.global ?? 0) + 1;
232
232
  },
233
233
  Invoice_registerPaymentTx: async (_, args) => {
234
234
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
235
235
  const docId = args.docId || "";
236
236
  const doc = await reactor.getDocument(driveId, docId);
237
237
  await reactor.addAction(driveId, docId, actions.registerPaymentTx({ ...args.input }));
238
- return doc.revision.global + 1;
238
+ return (doc?.header?.revision.global ?? 0) + 1;
239
239
  },
240
240
  Invoice_reportPaymentIssue: async (_, args) => {
241
241
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
242
242
  const docId = args.docId || "";
243
243
  const doc = await reactor.getDocument(driveId, docId);
244
244
  await reactor.addAction(driveId, docId, actions.reportPaymentIssue({ ...args.input }));
245
- return doc.revision.global + 1;
245
+ return (doc?.header?.revision.global ?? 0) + 1;
246
246
  },
247
247
  Invoice_confirmPayment: async (_, args) => {
248
248
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
249
249
  const docId = args.docId || "";
250
250
  const doc = await reactor.getDocument(driveId, docId);
251
251
  await reactor.addAction(driveId, docId, actions.confirmPayment({ ...args.input }));
252
- return doc.revision.global + 1;
252
+ return (doc?.header?.revision.global ?? 0) + 1;
253
253
  },
254
254
  Invoice_closePayment: async (_, args) => {
255
255
  const driveId = args.driveId || DEFAULT_DRIVE_ID;
256
256
  const docId = args.docId || "";
257
257
  const doc = await reactor.getDocument(driveId, docId);
258
258
  await reactor.addAction(driveId, docId, actions.closePayment({ ...args.input }));
259
- return doc.revision.global + 1;
259
+ return (doc?.header?.revision.global ?? 0) + 1;
260
260
  },
261
261
  Invoice_processGnosisPayment,
262
262
  Invoice_createRequestFinancePayment,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@powerhousedao/contributor-billing",
3
3
  "description": "Document models that help contributors of open organisations get paid anonymously for their work on a monthly basis.",
4
- "version": "0.0.40",
4
+ "version": "0.0.42",
5
5
  "license": "AGPL-3.0-only",
6
6
  "type": "module",
7
7
  "files": [
@@ -57,9 +57,9 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "@google-cloud/documentai": "^8.12.0",
60
- "@powerhousedao/builder-tools": "^3.2.0",
61
- "@powerhousedao/common": "^3.2.0",
62
- "@powerhousedao/design-system": "^3.2.0",
60
+ "@powerhousedao/builder-tools": "latest",
61
+ "@powerhousedao/common": "latest",
62
+ "@powerhousedao/design-system": "latest",
63
63
  "@powerhousedao/document-engineering": "^1.13.0",
64
64
  "@react-pdf/renderer": "^4.3.0",
65
65
  "@safe-global/api-kit": "^3.0.1",
@@ -70,7 +70,7 @@
70
70
  "@types/cors": "^2.8.17",
71
71
  "axios": "^1.9.0",
72
72
  "cors": "^2.8.5",
73
- "document-model": "^3.2.0",
73
+ "document-model": "latest",
74
74
  "dotenv": "^16.5.0",
75
75
  "error": "^10.4.0",
76
76
  "ethers": "^6.14.0",
@@ -78,24 +78,25 @@
78
78
  "graphql": "^16.10.0",
79
79
  "graphql-tag": "^2.12.6",
80
80
  "lucide-react": "^0.511.0",
81
+ "tailwind-merge": "^3.3.1",
81
82
  "world-countries": "^5.1.0",
82
83
  "zod": "^3.24.2"
83
84
  },
84
85
  "devDependencies": {
85
86
  "@eslint/js": "^9.25.0",
86
87
  "@powerhousedao/analytics-engine-core": "^0.5.0",
87
- "@powerhousedao/codegen": "^3.2.0",
88
- "@powerhousedao/ph-cli": "^3.2.0",
89
- "@powerhousedao/reactor-api": "^3.2.0",
90
- "@powerhousedao/reactor-browser": "^3.2.0",
91
- "@powerhousedao/reactor-local": "^3.2.0",
92
- "@powerhousedao/scalars": "^2.0.1",
88
+ "@powerhousedao/codegen": "latest",
89
+ "@powerhousedao/ph-cli": "latest",
90
+ "@powerhousedao/reactor-api": "latest",
91
+ "@powerhousedao/reactor-browser": "latest",
92
+ "@powerhousedao/reactor-local": "latest",
93
+ "@powerhousedao/scalars": "latest",
93
94
  "@tailwindcss/cli": "^4.1.8",
94
95
  "@types/node": "^22.15.17",
95
96
  "@types/react": "^19.1.4",
96
97
  "@vitejs/plugin-react": "^4.4.1",
97
98
  "bun-types": "^1.2.11",
98
- "document-drive": "^3.2.0",
99
+ "document-drive": "latest",
99
100
  "eslint": "^9.25.0",
100
101
  "eslint-plugin-react": "^7.37.5",
101
102
  "eslint-plugin-react-hooks": "^5.2.0",