@powerhousedao/contributor-billing 0.1.27 → 0.1.30
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.
- package/README.md +165 -8
- package/dist/document-models/billing-statement/actions.d.ts +1 -0
- package/dist/document-models/billing-statement/actions.d.ts.map +1 -1
- package/dist/document-models/billing-statement/gen/document-model.d.ts.map +1 -1
- package/dist/document-models/billing-statement/gen/document-model.js +58 -47
- package/dist/document-models/billing-statement/gen/document-schema.d.ts +38 -38
- package/dist/document-models/billing-statement/gen/document-schema.d.ts.map +1 -1
- package/dist/document-models/billing-statement/gen/line-items/actions.d.ts +6 -2
- package/dist/document-models/billing-statement/gen/line-items/actions.d.ts.map +1 -1
- package/dist/document-models/billing-statement/gen/line-items/creators.d.ts +3 -2
- package/dist/document-models/billing-statement/gen/line-items/creators.d.ts.map +1 -1
- package/dist/document-models/billing-statement/gen/line-items/creators.js +2 -1
- package/dist/document-models/billing-statement/gen/line-items/operations.d.ts +2 -1
- package/dist/document-models/billing-statement/gen/line-items/operations.d.ts.map +1 -1
- package/dist/document-models/billing-statement/gen/ph-factories.js +1 -1
- package/dist/document-models/billing-statement/gen/reducer.d.ts.map +1 -1
- package/dist/document-models/billing-statement/gen/reducer.js +5 -1
- package/dist/document-models/billing-statement/gen/schema/types.d.ts +3 -0
- package/dist/document-models/billing-statement/gen/schema/types.d.ts.map +1 -1
- package/dist/document-models/billing-statement/gen/schema/zod.d.ts +2 -1
- package/dist/document-models/billing-statement/gen/schema/zod.d.ts.map +1 -1
- package/dist/document-models/billing-statement/gen/schema/zod.js +5 -0
- package/dist/document-models/billing-statement/gen/utils.js +2 -2
- package/dist/document-models/billing-statement/src/reducers/general.d.ts.map +1 -1
- package/dist/document-models/billing-statement/src/reducers/general.js +5 -4
- package/dist/document-models/billing-statement/src/reducers/line-items.d.ts.map +1 -1
- package/dist/document-models/billing-statement/src/reducers/line-items.js +7 -2
- package/dist/document-models/billing-statement/src/reducers/tags.d.ts.map +1 -1
- package/dist/document-models/billing-statement/src/reducers/tags.js +1 -1
- package/dist/document-models/billing-statement/src/tests/document-model.test.d.ts +4 -0
- package/dist/document-models/billing-statement/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/billing-statement/src/tests/document-model.test.js +94 -7
- package/dist/document-models/billing-statement/src/tests/general.test.d.ts +2 -1
- package/dist/document-models/billing-statement/src/tests/general.test.d.ts.map +1 -1
- package/dist/document-models/billing-statement/src/tests/general.test.js +33 -88
- package/dist/document-models/billing-statement/src/tests/line-items.test.js +22 -125
- package/dist/document-models/billing-statement/src/tests/tags.test.js +13 -47
- package/dist/document-models/document-models.js +2 -2
- package/dist/document-models/expense-report/gen/document-model.d.ts.map +1 -1
- package/dist/document-models/expense-report/gen/document-model.js +48 -48
- package/dist/document-models/expense-report/gen/document-schema.d.ts +6 -6
- package/dist/document-models/expense-report/gen/utils.js +1 -1
- package/dist/document-models/expense-report/src/tests/document-model.test.d.ts +4 -0
- package/dist/document-models/expense-report/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/expense-report/src/tests/document-model.test.js +94 -8
- package/dist/document-models/expense-report/src/tests/wallet.test.js +145 -10
- package/dist/document-models/index.d.ts +2 -6
- package/dist/document-models/index.d.ts.map +1 -1
- package/dist/document-models/index.js +2 -6
- package/dist/document-models/integrations/gen/document-model.js +33 -33
- package/dist/document-models/integrations/gen/document-schema.d.ts +6 -6
- package/dist/document-models/integrations/gen/utils.js +1 -1
- package/dist/document-models/integrations/src/reducers/integrations.d.ts.map +1 -1
- package/dist/document-models/integrations/src/reducers/integrations.js +9 -32
- package/dist/document-models/integrations/src/tests/document-model.test.d.ts +4 -0
- package/dist/document-models/integrations/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/integrations/src/tests/document-model.test.js +91 -5
- package/dist/document-models/integrations/src/tests/integrations.test.js +21 -46
- package/dist/document-models/invoice/gen/document-model.js +147 -147
- package/dist/document-models/invoice/gen/document-schema.d.ts +127 -127
- package/dist/document-models/invoice/gen/document-schema.d.ts.map +1 -1
- package/dist/document-models/invoice/gen/ph-factories.d.ts.map +1 -1
- package/dist/document-models/invoice/gen/ph-factories.js +16 -122
- package/dist/document-models/invoice/gen/schema/types.d.ts +4 -4
- package/dist/document-models/invoice/gen/schema/types.d.ts.map +1 -1
- package/dist/document-models/invoice/gen/schema/zod.d.ts.map +1 -1
- package/dist/document-models/invoice/gen/schema/zod.js +4 -4
- package/dist/document-models/invoice/gen/utils.d.ts.map +1 -1
- package/dist/document-models/invoice/gen/utils.js +17 -123
- package/dist/document-models/invoice/src/reducers/general.d.ts.map +1 -1
- package/dist/document-models/invoice/src/reducers/general.js +34 -10
- package/dist/document-models/invoice/src/reducers/items.d.ts.map +1 -1
- package/dist/document-models/invoice/src/reducers/items.js +7 -7
- package/dist/document-models/invoice/src/reducers/parties.d.ts.map +1 -1
- package/dist/document-models/invoice/src/reducers/parties.js +96 -50
- package/dist/document-models/invoice/src/reducers/transitions.d.ts.map +1 -1
- package/dist/document-models/invoice/src/reducers/transitions.js +69 -53
- package/dist/document-models/invoice/src/tests/document-model.test.d.ts +4 -0
- package/dist/document-models/invoice/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/invoice/src/tests/document-model.test.js +91 -4
- package/dist/document-models/invoice/src/tests/general.test.js +24 -26
- package/dist/document-models/invoice/src/tests/items.test.js +37 -17
- package/dist/document-models/invoice/src/tests/parties.test.js +32 -26
- package/dist/document-models/invoice/src/tests/transitions.test.js +52 -500
- package/dist/document-models/invoice/utils/statusTransitions.d.ts.map +1 -1
- package/dist/document-models/invoice/utils/statusTransitions.js +10 -10
- package/dist/editors/billing-statement/components/lineItemsTable.d.ts.map +1 -1
- package/dist/editors/billing-statement/components/lineItemsTable.js +32 -23
- package/dist/editors/billing-statement/components/objectSetTable.d.ts.map +1 -1
- package/dist/editors/billing-statement/components/objectSetTable.js +1 -2
- package/dist/editors/billing-statement/editor.d.ts +4 -0
- package/dist/editors/billing-statement/editor.d.ts.map +1 -1
- package/dist/editors/billing-statement/editor.js +34 -16
- package/dist/editors/billing-statement/lineItemTags/lineItemTags.d.ts.map +1 -1
- package/dist/editors/billing-statement/lineItemTags/lineItemTags.js +36 -37
- package/dist/editors/billing-statement/lineItemTags/tagMapping.d.ts.map +1 -1
- package/dist/editors/billing-statement/lineItemTags/tagMapping.js +28 -10
- package/dist/editors/clean-new-editor/components/CreateDocument.d.ts +6 -0
- package/dist/editors/clean-new-editor/components/CreateDocument.d.ts.map +1 -0
- package/dist/editors/clean-new-editor/components/CreateDocument.js +18 -0
- package/dist/editors/clean-new-editor/components/DriveContents.d.ts +3 -0
- package/dist/editors/clean-new-editor/components/DriveContents.d.ts.map +1 -0
- package/dist/editors/clean-new-editor/components/DriveContents.js +10 -0
- package/dist/editors/clean-new-editor/components/DriveExplorer.d.ts +7 -0
- package/dist/editors/clean-new-editor/components/DriveExplorer.d.ts.map +1 -0
- package/dist/editors/clean-new-editor/components/DriveExplorer.js +16 -0
- package/dist/editors/clean-new-editor/components/EmptyState.d.ts +3 -0
- package/dist/editors/clean-new-editor/components/EmptyState.d.ts.map +1 -0
- package/dist/editors/clean-new-editor/components/EmptyState.js +10 -0
- package/dist/editors/clean-new-editor/components/Files.d.ts +3 -0
- package/dist/editors/clean-new-editor/components/Files.d.ts.map +1 -0
- package/dist/editors/clean-new-editor/components/Files.js +12 -0
- package/dist/editors/clean-new-editor/components/FolderTree.d.ts +6 -0
- package/dist/editors/clean-new-editor/components/FolderTree.d.ts.map +1 -0
- package/dist/editors/clean-new-editor/components/FolderTree.js +65 -0
- package/dist/editors/clean-new-editor/components/Folders.d.ts +3 -0
- package/dist/editors/clean-new-editor/components/Folders.d.ts.map +1 -0
- package/dist/editors/clean-new-editor/components/Folders.js +12 -0
- package/dist/editors/clean-new-editor/components/NavigationBreadcrumbs.d.ts +3 -0
- package/dist/editors/clean-new-editor/components/NavigationBreadcrumbs.d.ts.map +1 -0
- package/dist/editors/clean-new-editor/components/NavigationBreadcrumbs.js +6 -0
- package/dist/editors/clean-new-editor/config.d.ts +4 -0
- package/dist/editors/clean-new-editor/config.d.ts.map +1 -0
- package/dist/editors/clean-new-editor/config.js +5 -0
- package/dist/editors/clean-new-editor/editor.d.ts +4 -0
- package/dist/editors/clean-new-editor/editor.d.ts.map +1 -0
- package/dist/editors/clean-new-editor/editor.js +11 -0
- package/dist/editors/clean-new-editor/module.d.ts +3 -0
- package/dist/editors/clean-new-editor/module.d.ts.map +1 -0
- package/dist/editors/clean-new-editor/module.js +10 -0
- package/dist/editors/contributor-billing/components/ConfirmationModal.d.ts +14 -0
- package/dist/editors/contributor-billing/components/ConfirmationModal.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/ConfirmationModal.js +6 -0
- package/dist/editors/contributor-billing/components/CreateDocument.d.ts +6 -0
- package/dist/editors/contributor-billing/components/CreateDocument.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/CreateDocument.js +18 -0
- package/dist/editors/contributor-billing/components/DriveContents.d.ts +3 -0
- package/dist/editors/contributor-billing/components/DriveContents.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/DriveContents.js +10 -0
- package/dist/editors/contributor-billing/components/DriveExplorer.d.ts +3 -3
- package/dist/editors/contributor-billing/components/DriveExplorer.d.ts.map +1 -1
- package/dist/editors/contributor-billing/components/DriveExplorer.js +13 -180
- package/dist/editors/contributor-billing/components/EmptyState.d.ts +3 -0
- package/dist/editors/contributor-billing/components/EmptyState.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/EmptyState.js +10 -0
- package/dist/editors/contributor-billing/components/Files.d.ts +3 -0
- package/dist/editors/contributor-billing/components/Files.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/Files.js +12 -0
- package/dist/editors/contributor-billing/components/FolderTree.d.ts +6 -0
- package/dist/editors/contributor-billing/components/FolderTree.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/FolderTree.js +65 -0
- package/dist/editors/contributor-billing/components/Folders.d.ts +3 -0
- package/dist/editors/contributor-billing/components/Folders.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/Folders.js +12 -0
- package/dist/editors/contributor-billing/components/HeaderControls.d.ts +38 -0
- package/dist/editors/contributor-billing/components/HeaderControls.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/HeaderControls.js +124 -0
- package/dist/editors/contributor-billing/components/HeaderStats.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/{InvoiceTable/HeaderStats.js → HeaderStats.js} +1 -1
- package/dist/editors/contributor-billing/components/InvoiceTable.d.ts +22 -0
- package/dist/editors/contributor-billing/components/InvoiceTable.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/InvoiceTable.js +399 -0
- package/dist/editors/contributor-billing/components/InvoiceTableContainer.d.ts +6 -0
- package/dist/editors/contributor-billing/components/InvoiceTableContainer.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/InvoiceTableContainer.js +111 -0
- package/dist/editors/contributor-billing/components/InvoiceTableRow.d.ts +32 -0
- package/dist/editors/contributor-billing/components/InvoiceTableRow.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/InvoiceTableRow.js +55 -0
- package/dist/editors/contributor-billing/components/InvoiceTableSection.d.ts +13 -0
- package/dist/editors/contributor-billing/components/InvoiceTableSection.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/InvoiceTableSection.js +16 -0
- package/dist/editors/contributor-billing/components/NavigationBreadcrumbs.d.ts +3 -0
- package/dist/editors/contributor-billing/components/NavigationBreadcrumbs.d.ts.map +1 -0
- package/dist/editors/contributor-billing/components/NavigationBreadcrumbs.js +6 -0
- package/dist/editors/contributor-billing/config.d.ts +1 -0
- package/dist/editors/contributor-billing/config.d.ts.map +1 -1
- package/dist/editors/contributor-billing/config.js +4 -1
- package/dist/editors/contributor-billing/editor.d.ts +1 -0
- package/dist/editors/contributor-billing/editor.d.ts.map +1 -1
- package/dist/editors/contributor-billing/editor.js +4 -1
- package/dist/editors/contributor-billing/module.d.ts +1 -1
- package/dist/editors/contributor-billing/module.d.ts.map +1 -1
- package/dist/editors/contributor-billing/module.js +3 -2
- package/dist/editors/contributor-billing/utils/exchangeRate.d.ts +15 -0
- package/dist/editors/contributor-billing/utils/exchangeRate.d.ts.map +1 -0
- package/dist/editors/contributor-billing/utils/exchangeRate.js +122 -0
- package/dist/editors/editors.js +2 -2
- package/dist/editors/expense-report/components/AddBillingStatementModal.d.ts.map +1 -1
- package/dist/editors/expense-report/editor.js +8 -8
- package/dist/editors/index.d.ts +2 -2
- package/dist/editors/index.d.ts.map +1 -1
- package/dist/editors/index.js +2 -2
- package/dist/editors/integrations/components/EditName.d.ts +3 -0
- package/dist/editors/integrations/components/EditName.d.ts.map +1 -0
- package/dist/editors/integrations/components/EditName.js +31 -0
- package/dist/editors/integrations/editor.d.ts +2 -4
- package/dist/editors/integrations/editor.d.ts.map +1 -1
- package/dist/editors/integrations/editor.js +5 -132
- package/dist/editors/integrations/module.d.ts +1 -0
- package/dist/editors/integrations/module.d.ts.map +1 -1
- package/dist/editors/integrations/module.js +3 -2
- package/dist/editors/invoice/components/confirmationModal.js +1 -1
- package/dist/editors/invoice/components/countryForm.d.ts.map +1 -1
- package/dist/editors/invoice/components/countryForm.js +1 -1
- package/dist/editors/invoice/components/currencyForm.d.ts.map +1 -1
- package/dist/editors/invoice/components/currencyForm.js +1 -1
- package/dist/editors/invoice/components/datePicker.d.ts +1 -1
- package/dist/editors/invoice/components/datePicker.d.ts.map +1 -1
- package/dist/editors/invoice/components/datePicker.js +1 -1
- package/dist/editors/invoice/components/inputField.d.ts.map +1 -1
- package/dist/editors/invoice/components/inputField.js +3 -2
- package/dist/editors/invoice/components/lineItemMobileModal.d.ts.map +1 -1
- package/dist/editors/invoice/components/lineItemMobileModal.js +1 -1
- package/dist/editors/invoice/components/numberForm.d.ts.map +1 -1
- package/dist/editors/invoice/components/selectField.js +7 -7
- package/dist/editors/invoice/components/statusModalComponents.d.ts.map +1 -1
- package/dist/editors/invoice/components/statusModalComponents.js +27 -3
- package/dist/editors/invoice/editor.d.ts +1 -4
- package/dist/editors/invoice/editor.d.ts.map +1 -1
- package/dist/editors/invoice/editor.js +102 -40
- package/dist/editors/invoice/exportUBL.d.ts.map +1 -1
- package/dist/editors/invoice/exportUBL.js +35 -18
- package/dist/editors/invoice/ingestPDF.d.ts.map +1 -1
- package/dist/editors/invoice/ingestPDF.js +15 -9
- package/dist/editors/invoice/invoiceToGnosis.js +2 -2
- package/dist/editors/invoice/legalEntity/bankSection.d.ts.map +1 -1
- package/dist/editors/invoice/legalEntity/bankSection.js +19 -10
- package/dist/editors/invoice/legalEntity/legalEntity.d.ts +4 -0
- package/dist/editors/invoice/legalEntity/legalEntity.d.ts.map +1 -1
- package/dist/editors/invoice/legalEntity/legalEntity.js +66 -2
- package/dist/editors/invoice/legalEntity/walletSection.d.ts.map +1 -1
- package/dist/editors/invoice/legalEntity/walletSection.js +3 -3
- package/dist/editors/invoice/lineItemTags/lineItemTags.d.ts.map +1 -1
- package/dist/editors/invoice/lineItemTags/lineItemTags.js +1 -1
- package/dist/editors/invoice/lineItemTags/tagMobileModal.d.ts.map +1 -1
- package/dist/editors/invoice/lineItemTags/tagMobileModal.js +4 -3
- package/dist/editors/invoice/lineItems.d.ts.map +1 -1
- package/dist/editors/invoice/module.d.ts +1 -0
- package/dist/editors/invoice/module.d.ts.map +1 -1
- package/dist/editors/invoice/module.js +2 -1
- package/dist/editors/invoice/requestFinance.js +3 -3
- package/dist/editors/invoice/uploadPdfChunked.d.ts.map +1 -1
- package/dist/editors/invoice/uploadPdfChunked.js +5 -4
- package/dist/editors/invoice/utils/utils.d.ts.map +1 -1
- package/dist/editors/invoice/utils/utils.js +5 -4
- package/dist/editors/invoice/validation/validationHandler.d.ts.map +1 -1
- package/dist/editors/invoice/validation/validationHandler.js +11 -5
- package/dist/editors/invoice/validation/validationManager.d.ts +2 -2
- package/dist/editors/invoice/validation/validationManager.d.ts.map +1 -1
- package/dist/editors/invoice/validation/validationManager.js +5 -5
- package/dist/editors/invoice/validation/validationRules.d.ts.map +1 -1
- package/dist/editors/invoice/validation/validationRules.js +178 -178
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/old-contributor-billing/components/DriveExplorer.d.ts +7 -0
- package/dist/old-contributor-billing/components/DriveExplorer.d.ts.map +1 -0
- package/dist/old-contributor-billing/components/DriveExplorer.js +184 -0
- package/dist/old-contributor-billing/components/InvoiceTable/HeaderControls.d.ts.map +1 -0
- package/dist/old-contributor-billing/components/InvoiceTable/HeaderStats.d.ts +2 -0
- package/dist/old-contributor-billing/components/InvoiceTable/HeaderStats.d.ts.map +1 -0
- package/dist/old-contributor-billing/components/InvoiceTable/HeaderStats.js +73 -0
- package/dist/old-contributor-billing/components/InvoiceTable/InvoiceTable.d.ts.map +1 -0
- package/dist/old-contributor-billing/components/InvoiceTable/InvoiceTableRow.d.ts.map +1 -0
- package/dist/old-contributor-billing/components/InvoiceTable/InvoiceTableSection.d.ts.map +1 -0
- package/dist/{editors/contributor-billing → old-contributor-billing}/components/InvoiceTable/InvoiceTableSection.js +1 -1
- package/dist/{editors/contributor-billing → old-contributor-billing}/components/InvoiceTable/RowActionMenu.d.ts +1 -1
- package/dist/old-contributor-billing/components/InvoiceTable/RowActionMenu.d.ts.map +1 -0
- package/dist/old-contributor-billing/components/InvoiceTable/RowActionMenu.js +2 -0
- package/dist/old-contributor-billing/config.d.ts +3 -0
- package/dist/old-contributor-billing/config.d.ts.map +1 -0
- package/dist/old-contributor-billing/config.js +4 -0
- package/dist/old-contributor-billing/editor.d.ts +3 -0
- package/dist/old-contributor-billing/editor.d.ts.map +1 -0
- package/dist/old-contributor-billing/editor.js +8 -0
- package/dist/old-contributor-billing/module.d.ts +3 -0
- package/dist/old-contributor-billing/module.d.ts.map +1 -0
- package/dist/old-contributor-billing/module.js +9 -0
- package/dist/old-contributor-billing/util.d.ts.map +1 -0
- package/dist/{editors/contributor-billing → old-contributor-billing}/util.js +11 -9
- package/dist/powerhouse.manifest.json +6 -41
- package/dist/processors/index.d.ts +1 -6
- package/dist/processors/index.d.ts.map +1 -1
- package/dist/processors/index.js +1 -18
- package/dist/scripts/contributor-billing/createExpenseReportCsv.d.ts.map +1 -1
- package/dist/scripts/contributor-billing/createExpenseReportCsv.js +24 -24
- package/dist/scripts/contributor-billing/createXeroCsv.d.ts.map +1 -1
- package/dist/scripts/contributor-billing/createXeroCsv.js +52 -46
- package/dist/scripts/invoice/autoTagging.d.ts +1 -1
- package/dist/scripts/invoice/autoTagging.d.ts.map +1 -1
- package/dist/scripts/invoice/autoTagging.js +168 -138
- package/dist/scripts/invoice/exampleBatchTxn.js +16 -16
- package/dist/scripts/invoice/gnosisTransactionBuilder.d.ts.map +1 -1
- package/dist/scripts/invoice/gnosisTransactionBuilder.js +32 -25
- package/dist/scripts/invoice/pdfToClaudeAI.d.ts.map +1 -1
- package/dist/scripts/invoice/pdfToClaudeAI.js +36 -30
- package/dist/scripts/invoice/requestFinance.d.ts.map +1 -1
- package/dist/scripts/invoice/requestFinance.js +13 -13
- package/dist/style.css +407 -13659
- package/dist/subgraphs/billing-statement/resolvers.d.ts +1 -1
- package/dist/subgraphs/billing-statement/resolvers.d.ts.map +1 -1
- package/dist/subgraphs/billing-statement/resolvers.js +16 -5
- package/dist/subgraphs/billing-statement/schema.d.ts.map +1 -1
- package/dist/subgraphs/billing-statement/schema.js +12 -67
- package/dist/subgraphs/expense-report/resolvers.d.ts +1 -1
- package/dist/subgraphs/expense-report/resolvers.d.ts.map +1 -1
- package/dist/subgraphs/expense-report/resolvers.js +4 -5
- package/dist/subgraphs/expense-report/schema.d.ts.map +1 -1
- package/dist/subgraphs/expense-report/schema.js +5 -48
- package/dist/subgraphs/index.d.ts +1 -0
- package/dist/subgraphs/index.d.ts.map +1 -1
- package/dist/subgraphs/index.js +1 -0
- package/dist/subgraphs/integrations/resolvers.d.ts +1 -1
- package/dist/subgraphs/integrations/resolvers.d.ts.map +1 -1
- package/dist/subgraphs/integrations/resolvers.js +4 -5
- package/dist/subgraphs/integrations/schema.d.ts.map +1 -1
- package/dist/subgraphs/integrations/schema.js +3 -43
- package/dist/subgraphs/invoice/index.d.ts.map +1 -1
- package/dist/subgraphs/invoice/index.js +1 -20
- package/dist/subgraphs/invoice/resolvers.d.ts +1 -1
- package/dist/subgraphs/invoice/resolvers.d.ts.map +1 -1
- package/dist/subgraphs/invoice/resolvers.js +4 -9
- package/dist/subgraphs/invoice/schema.d.ts.map +1 -1
- package/dist/subgraphs/invoice/schema.js +14 -232
- package/dist/subgraphs/{invoice → invoice-addon}/customResolvers.d.ts +1 -1
- package/dist/subgraphs/invoice-addon/customResolvers.d.ts.map +1 -0
- package/dist/subgraphs/{invoice → invoice-addon}/customResolvers.js +38 -34
- package/dist/subgraphs/invoice-addon/index.d.ts +11 -0
- package/dist/subgraphs/invoice-addon/index.d.ts.map +1 -0
- package/dist/subgraphs/invoice-addon/index.js +11 -0
- package/dist/subgraphs/invoice-addon/resolvers.d.ts +3 -0
- package/dist/subgraphs/invoice-addon/resolvers.d.ts.map +1 -0
- package/dist/subgraphs/invoice-addon/resolvers.js +12 -0
- package/dist/subgraphs/invoice-addon/schema.d.ts +3 -0
- package/dist/subgraphs/invoice-addon/schema.d.ts.map +1 -0
- package/dist/subgraphs/invoice-addon/schema.js +52 -0
- package/package.json +9 -20
- package/dist/document-models/expense-report/gen/expense-report/actions.d.ts +0 -8
- package/dist/document-models/expense-report/gen/expense-report/actions.d.ts.map +0 -1
- package/dist/document-models/expense-report/gen/expense-report/actions.js +0 -1
- package/dist/document-models/expense-report/gen/expense-report/creators.d.ts +0 -4
- package/dist/document-models/expense-report/gen/expense-report/creators.d.ts.map +0 -1
- package/dist/document-models/expense-report/gen/expense-report/creators.js +0 -3
- package/dist/document-models/expense-report/gen/expense-report/error.d.ts +0 -2
- package/dist/document-models/expense-report/gen/expense-report/error.d.ts.map +0 -1
- package/dist/document-models/expense-report/gen/expense-report/error.js +0 -1
- package/dist/document-models/expense-report/gen/expense-report/operations.d.ts +0 -7
- package/dist/document-models/expense-report/gen/expense-report/operations.d.ts.map +0 -1
- package/dist/document-models/expense-report/gen/expense-report/operations.js +0 -3
- package/dist/document-models/expense-report/src/tests/expense-report.test.d.ts +0 -6
- package/dist/document-models/expense-report/src/tests/expense-report.test.d.ts.map +0 -1
- package/dist/document-models/expense-report/src/tests/expense-report.test.js +0 -24
- package/dist/editors/contributor-billing/components/InvoiceTable/HeaderControls.d.ts.map +0 -1
- package/dist/editors/contributor-billing/components/InvoiceTable/HeaderStats.d.ts.map +0 -1
- package/dist/editors/contributor-billing/components/InvoiceTable/InvoiceTable.d.ts.map +0 -1
- package/dist/editors/contributor-billing/components/InvoiceTable/InvoiceTableRow.d.ts.map +0 -1
- package/dist/editors/contributor-billing/components/InvoiceTable/InvoiceTableSection.d.ts.map +0 -1
- package/dist/editors/contributor-billing/components/InvoiceTable/RowActionMenu.d.ts.map +0 -1
- package/dist/editors/contributor-billing/components/InvoiceTable/RowActionMenu.js +0 -2
- package/dist/editors/contributor-billing/util.d.ts.map +0 -1
- package/dist/editors/hooks/useBillingStatementDocument.d.ts +0 -4
- package/dist/editors/hooks/useBillingStatementDocument.d.ts.map +0 -1
- package/dist/editors/hooks/useBillingStatementDocument.js +0 -8
- package/dist/editors/hooks/useExpenseReportDocument.d.ts +0 -4
- package/dist/editors/hooks/useExpenseReportDocument.d.ts.map +0 -1
- package/dist/editors/hooks/useExpenseReportDocument.js +0 -8
- package/dist/editors/hooks/useIntegrationsDocument.d.ts +0 -4
- package/dist/editors/hooks/useIntegrationsDocument.d.ts.map +0 -1
- package/dist/editors/hooks/useIntegrationsDocument.js +0 -8
- package/dist/editors/hooks/useInvoiceDocument.d.ts +0 -4
- package/dist/editors/hooks/useInvoiceDocument.d.ts.map +0 -1
- package/dist/editors/hooks/useInvoiceDocument.js +0 -8
- package/dist/editors/integrations/config.d.ts +0 -3
- package/dist/editors/integrations/config.d.ts.map +0 -1
- package/dist/editors/integrations/config.js +0 -3
- package/dist/processors/line-item-processor/index.d.ts +0 -11
- package/dist/processors/line-item-processor/index.d.ts.map +0 -1
- package/dist/processors/line-item-processor/index.js +0 -36
- package/dist/subgraphs/invoice/customResolvers.d.ts.map +0 -1
- package/editors/invoice/assets/custom.d.ts +0 -4
- package/editors/invoice/assets/powerhouseLogo.png +0 -0
- /package/dist/editors/contributor-billing/components/{InvoiceTable/HeaderStats.d.ts → HeaderStats.d.ts} +0 -0
- /package/dist/{editors/contributor-billing → old-contributor-billing}/components/InvoiceTable/HeaderControls.d.ts +0 -0
- /package/dist/{editors/contributor-billing → old-contributor-billing}/components/InvoiceTable/HeaderControls.js +0 -0
- /package/dist/{editors/contributor-billing → old-contributor-billing}/components/InvoiceTable/InvoiceTable.d.ts +0 -0
- /package/dist/{editors/contributor-billing → old-contributor-billing}/components/InvoiceTable/InvoiceTable.js +0 -0
- /package/dist/{editors/contributor-billing → old-contributor-billing}/components/InvoiceTable/InvoiceTableRow.d.ts +0 -0
- /package/dist/{editors/contributor-billing → old-contributor-billing}/components/InvoiceTable/InvoiceTableRow.js +0 -0
- /package/dist/{editors/contributor-billing → old-contributor-billing}/components/InvoiceTable/InvoiceTableSection.d.ts +0 -0
- /package/dist/{editors/contributor-billing → old-contributor-billing}/util.d.ts +0 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CreateDocumentModal, ToastContainer, } from "@powerhousedao/design-system/connect";
|
|
3
|
+
import { addDocument, useDocumentModelModules, useDocumentsInSelectedDrive, useEditorModules, useFileNodesInSelectedDrive, useSelectedDrive, useSelectedFolder, } from "@powerhousedao/reactor-browser";
|
|
4
|
+
import { useReactor } from "@powerhousedao/reactor-browser/connect";
|
|
5
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
6
|
+
import { InvoiceTable } from "./InvoiceTable/InvoiceTable.js";
|
|
7
|
+
import { HeaderStats } from "./InvoiceTable/HeaderStats.js";
|
|
8
|
+
/**
|
|
9
|
+
* Main drive explorer component with sidebar navigation and content area.
|
|
10
|
+
* Layout: Left sidebar (folder tree) + Right content area (files/folders + document editor)
|
|
11
|
+
*/
|
|
12
|
+
export function DriveExplorer(props) {
|
|
13
|
+
const { children } = props;
|
|
14
|
+
const [selected, setSelected] = useState({});
|
|
15
|
+
const [selectedStatuses, setSelectedStatuses] = useState([]);
|
|
16
|
+
const reactor = useReactor();
|
|
17
|
+
// Handler for status filter changes
|
|
18
|
+
const handleStatusChange = useCallback((value) => {
|
|
19
|
+
setSelectedStatuses(Array.isArray(value) ? value : [value]);
|
|
20
|
+
}, []);
|
|
21
|
+
// === DOCUMENT EDITOR STATE ===
|
|
22
|
+
// Customize document opening/closing behavior here
|
|
23
|
+
const [openModal, setOpenModal] = useState(false);
|
|
24
|
+
const selectedDocumentModel = useRef(null);
|
|
25
|
+
const editorModules = useEditorModules();
|
|
26
|
+
// === STATE MANAGEMENT HOOKS ===
|
|
27
|
+
// Core state hooks for drive navigation
|
|
28
|
+
const [selectedDrive] = useSelectedDrive(); // Currently selected drive
|
|
29
|
+
const selectedFolder = useSelectedFolder(); // Currently selected folder
|
|
30
|
+
const fileChildren = useFileNodesInSelectedDrive();
|
|
31
|
+
// All document states
|
|
32
|
+
const allDocuments = useDocumentsInSelectedDrive();
|
|
33
|
+
// Handler for row selection (does not affect status filter display)
|
|
34
|
+
const handleRowSelection = useCallback((rowId, checked, rowStatus) => {
|
|
35
|
+
setSelected((prev) => ({
|
|
36
|
+
...prev,
|
|
37
|
+
[rowId]: checked,
|
|
38
|
+
}));
|
|
39
|
+
}, []);
|
|
40
|
+
// Determine if CSV export should be enabled based on selected rows
|
|
41
|
+
const canExportSelectedRows = useCallback(() => {
|
|
42
|
+
const allowedStatuses = [
|
|
43
|
+
"ACCEPTED",
|
|
44
|
+
"AWAITINGPAYMENT",
|
|
45
|
+
"PAYMENTSCHEDULED",
|
|
46
|
+
"PAYMENTSENT",
|
|
47
|
+
"PAYMENTRECEIVED",
|
|
48
|
+
"PAYMENTCLOSED",
|
|
49
|
+
];
|
|
50
|
+
// Get all selected row IDs
|
|
51
|
+
const selectedRowIds = Object.keys(selected).filter((id) => selected[id]);
|
|
52
|
+
if (selectedRowIds.length === 0)
|
|
53
|
+
return false;
|
|
54
|
+
// Check if all selected rows have allowed statuses
|
|
55
|
+
const selectedRows = allDocuments?.filter((doc) => selectedRowIds.includes(doc.header.id)) ||
|
|
56
|
+
[];
|
|
57
|
+
return selectedRows.every((row) => allowedStatuses.includes(row.state.global
|
|
58
|
+
.status));
|
|
59
|
+
}, [selected, allDocuments]);
|
|
60
|
+
// Create a stable dispatcher map using useRef only (no useState to avoid re-renders)
|
|
61
|
+
const dispatchersRef = useRef(new Map());
|
|
62
|
+
// Create a working dispatch function that uses the existing reactor system
|
|
63
|
+
const createDispatchFunction = useCallback((docId) => {
|
|
64
|
+
return async (action) => {
|
|
65
|
+
try {
|
|
66
|
+
console.log(`Dispatching action for document ${docId}:`, action);
|
|
67
|
+
// Since we can't use GraphQL mutations, we need to find another way
|
|
68
|
+
// The key insight is that the existing useDocumentById hook already works
|
|
69
|
+
// We need to create a dispatch function that can handle actions
|
|
70
|
+
// Try to access the reactor instance through the global window object
|
|
71
|
+
// This is a common pattern in React applications
|
|
72
|
+
if (reactor) {
|
|
73
|
+
const result = await reactor.addAction(docId, action);
|
|
74
|
+
if (result.status !== "SUCCESS") {
|
|
75
|
+
throw new Error(result.error?.message ?? "Failed to dispatch action");
|
|
76
|
+
}
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Fallback: Use a custom event system
|
|
80
|
+
// This allows the reactor system to listen for actions
|
|
81
|
+
const actionEvent = new CustomEvent("reactor-action", {
|
|
82
|
+
detail: {
|
|
83
|
+
docId,
|
|
84
|
+
action,
|
|
85
|
+
timestamp: Date.now(),
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
window.dispatchEvent(actionEvent);
|
|
89
|
+
// For now, we'll just log the action to maintain the interface
|
|
90
|
+
// The InvoiceTable will still work, but actions won't be persisted
|
|
91
|
+
console.warn(`Action dispatched via event system for document ${docId}. Make sure the reactor system is listening for 'reactor-action' events.`);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.error(`Failed to dispatch action for document ${docId}:`, error);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
}, []);
|
|
98
|
+
// Update dispatchers when state changes - use a more stable approach
|
|
99
|
+
useEffect(() => {
|
|
100
|
+
// Only update if the document IDs have actually changed
|
|
101
|
+
const currentDocIds = allDocuments?.map((doc) => doc.header.id) || [];
|
|
102
|
+
const previousDocIds = Array.from(dispatchersRef.current.keys());
|
|
103
|
+
// Check if the document list has actually changed
|
|
104
|
+
const hasChanged = currentDocIds.length !== previousDocIds.length ||
|
|
105
|
+
!currentDocIds.every((id) => previousDocIds.includes(id));
|
|
106
|
+
if (!hasChanged) {
|
|
107
|
+
// Just update the document states without recreating dispatchers
|
|
108
|
+
allDocuments?.forEach((doc) => {
|
|
109
|
+
const docId = doc.header.id;
|
|
110
|
+
if (dispatchersRef.current.has(docId)) {
|
|
111
|
+
const [, dispatchFunction] = dispatchersRef.current.get(docId);
|
|
112
|
+
dispatchersRef.current.set(docId, [doc, dispatchFunction]);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
// Only recreate dispatchers when the document list actually changes
|
|
118
|
+
const newDispatchers = new Map();
|
|
119
|
+
allDocuments?.forEach((doc) => {
|
|
120
|
+
const docId = doc.header.id;
|
|
121
|
+
// Check if we already have a dispatcher for this document
|
|
122
|
+
if (dispatchersRef.current.has(docId)) {
|
|
123
|
+
// Update the document state but keep the same dispatch function
|
|
124
|
+
const [, dispatchFunction] = dispatchersRef.current.get(docId);
|
|
125
|
+
newDispatchers.set(docId, [doc, dispatchFunction]);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Create a new dispatcher for this document
|
|
129
|
+
const dispatchFunction = createDispatchFunction(docId);
|
|
130
|
+
newDispatchers.set(docId, [doc, dispatchFunction]);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
// Clean up dispatchers for documents that no longer exist
|
|
134
|
+
for (const [docId] of dispatchersRef.current) {
|
|
135
|
+
if (!currentDocIds.includes(docId)) {
|
|
136
|
+
dispatchersRef.current.delete(docId);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Update the ref
|
|
140
|
+
dispatchersRef.current = newDispatchers;
|
|
141
|
+
}, [allDocuments, createDispatchFunction]);
|
|
142
|
+
const getDocDispatcher = (id) => {
|
|
143
|
+
return dispatchersRef.current.get(id) || null;
|
|
144
|
+
};
|
|
145
|
+
// Handle document creation from modal
|
|
146
|
+
const onCreateDocument = useCallback(async (fileName) => {
|
|
147
|
+
setOpenModal(false);
|
|
148
|
+
const documentModel = selectedDocumentModel.current;
|
|
149
|
+
if (!documentModel || !selectedDrive?.header.id)
|
|
150
|
+
return;
|
|
151
|
+
let editorType = "integrations-editor";
|
|
152
|
+
if (documentModel.id === "powerhouse/invoice") {
|
|
153
|
+
editorType = "powerhouse-invoice-editor";
|
|
154
|
+
}
|
|
155
|
+
else if (documentModel.id === "powerhouse/expense-report") {
|
|
156
|
+
editorType = "powerhouse-expense-report-editor";
|
|
157
|
+
}
|
|
158
|
+
try {
|
|
159
|
+
const node = await addDocument(selectedDrive.header.id, fileName, documentModel.id, selectedFolder?.id, undefined, undefined, editorType);
|
|
160
|
+
selectedDocumentModel.current = null;
|
|
161
|
+
if (node) {
|
|
162
|
+
// Customize: Auto-open created document by uncommenting below
|
|
163
|
+
// setActiveDocumentId(node.id);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
console.error("Failed to create document:", error);
|
|
168
|
+
}
|
|
169
|
+
}, [addDocument, editorModules, selectedDrive?.header.id, selectedFolder?.id]);
|
|
170
|
+
const onSelectDocumentModel = useCallback((documentModel) => {
|
|
171
|
+
selectedDocumentModel.current = documentModel;
|
|
172
|
+
setOpenModal(true);
|
|
173
|
+
}, []);
|
|
174
|
+
// === DOCUMENT EDITOR DATA ===
|
|
175
|
+
// Filter available document types here if needed
|
|
176
|
+
const documentModelModules = useDocumentModelModules();
|
|
177
|
+
// Get active document and its editor components
|
|
178
|
+
// if a document is selected then it's editor will be passed as children
|
|
179
|
+
const showDocumentEditor = !!children;
|
|
180
|
+
// === RENDER ===
|
|
181
|
+
return (_jsx("div", { className: `flex h-full ${showDocumentEditor ? "w-full" : "editor-container"}`, children: _jsxs("div", { className: `h-full ${showDocumentEditor ? "w-full" : ""}`, children: [_jsx(ToastContainer, { position: "bottom-right", autoClose: 5000, hideProgressBar: false, newestOnTop: false, closeOnClick: false, rtl: false, pauseOnFocusLoss: true, draggable: true, pauseOnHover: true, theme: "light" }), _jsx("div", { className: "flex-1", children: showDocumentEditor ? (
|
|
182
|
+
// Document editor view
|
|
183
|
+
children) : (_jsxs(_Fragment, { children: [_jsx(HeaderStats, {}), _jsx(InvoiceTable, { files: fileChildren || [], state: allDocuments || [], selected: selected, setSelected: setSelected, filteredDocumentModels: documentModelModules || [], onSelectDocumentModel: onSelectDocumentModel, getDocDispatcher: getDocDispatcher, selectedStatuses: selectedStatuses, onStatusChange: handleStatusChange, onRowSelection: handleRowSelection, canExportSelectedRows: canExportSelectedRows })] })) }), _jsx(CreateDocumentModal, { onContinue: onCreateDocument, onOpenChange: (open) => setOpenModal(open), open: openModal })] }) }));
|
|
184
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeaderControls.d.ts","sourceRoot":"","sources":["../../../../old-contributor-billing/components/InvoiceTable/HeaderControls.tsx"],"names":[],"mappings":"AAqBA,eAAO,MAAM,cAAc,GAAI,qSAgB5B;IACD,aAAa,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IACpD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC;IACtC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAC9B,2BAA2B,CAAC,EAAE,MAAM,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACrC,4BAA4B,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,WAAW,EAAE,CAAC,QAAQ,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5D,4CAgTA,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeaderStats.d.ts","sourceRoot":"","sources":["../../../../old-contributor-billing/components/InvoiceTable/HeaderStats.tsx"],"names":[],"mappings":"AAmBA,eAAO,MAAM,WAAW,+CAoHvB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Select } from "@powerhousedao/document-engineering/ui";
|
|
3
|
+
import { useState, useEffect } from "react";
|
|
4
|
+
import { useDocumentsInSelectedDrive } from "@powerhousedao/reactor-browser";
|
|
5
|
+
import { getExchangeRate } from "../../util.js";
|
|
6
|
+
import { Tooltip, TooltipProvider } from "@powerhousedao/design-system/ui";
|
|
7
|
+
const currencyList = [
|
|
8
|
+
{ ticker: "USDS", crypto: true },
|
|
9
|
+
{ ticker: "USDC", crypto: true },
|
|
10
|
+
{ ticker: "DAI", crypto: true },
|
|
11
|
+
{ ticker: "USD", crypto: false },
|
|
12
|
+
{ ticker: "EUR", crypto: false },
|
|
13
|
+
{ ticker: "DKK", crypto: false },
|
|
14
|
+
{ ticker: "GBP", crypto: false },
|
|
15
|
+
{ ticker: "JPY", crypto: false },
|
|
16
|
+
{ ticker: "CNY", crypto: false },
|
|
17
|
+
{ ticker: "CHF", crypto: false },
|
|
18
|
+
];
|
|
19
|
+
export const HeaderStats = () => {
|
|
20
|
+
const [selectedCurrency, setSelectedCurrency] = useState("USD");
|
|
21
|
+
const [totalExpenses, setTotalExpenses] = useState(0);
|
|
22
|
+
const documents = useDocumentsInSelectedDrive();
|
|
23
|
+
const invoices = documents?.filter((doc) => doc.header.documentType === "powerhouse/invoice");
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
const calculateTotalExpenses = async () => {
|
|
26
|
+
if (!invoices || invoices.length === 0) {
|
|
27
|
+
setTotalExpenses(0);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
let total = 0;
|
|
31
|
+
for (const doc of invoices) {
|
|
32
|
+
const invoice = doc;
|
|
33
|
+
const invoiceAmount = invoice.state.global.totalPriceTaxIncl;
|
|
34
|
+
const invoiceCurrency = invoice.state.global.currency || "USD"; // Fallback to USD if currency is empty
|
|
35
|
+
const selectCurrency = selectedCurrency;
|
|
36
|
+
if (invoiceCurrency === selectedCurrency) {
|
|
37
|
+
total += invoiceAmount;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
try {
|
|
41
|
+
// Only convert crypto currencies to USD for the API call
|
|
42
|
+
let fromCurrency = invoiceCurrency;
|
|
43
|
+
let toCurrency = selectedCurrency;
|
|
44
|
+
// Convert crypto to USD for API compatibility
|
|
45
|
+
if (invoiceCurrency === "DAI" || invoiceCurrency === "USDS") {
|
|
46
|
+
fromCurrency = "USD";
|
|
47
|
+
}
|
|
48
|
+
if (selectedCurrency === "DAI" || selectedCurrency === "USDS") {
|
|
49
|
+
toCurrency = "USD";
|
|
50
|
+
}
|
|
51
|
+
const exchangeRate = await getExchangeRate(fromCurrency, toCurrency, invoiceAmount);
|
|
52
|
+
total += invoiceAmount * exchangeRate;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error("Error getting exchange rate:", error);
|
|
56
|
+
// Fallback to original amount if exchange rate fails
|
|
57
|
+
total += invoiceAmount;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
setTotalExpenses(total);
|
|
62
|
+
};
|
|
63
|
+
calculateTotalExpenses();
|
|
64
|
+
}, [invoices, selectedCurrency]);
|
|
65
|
+
const currencyOptions = currencyList.map((currency) => ({
|
|
66
|
+
label: currency.ticker,
|
|
67
|
+
value: currency.ticker,
|
|
68
|
+
}));
|
|
69
|
+
return (_jsx("div", { className: "bg-white rounded-lg border border-gray-200 p-4 shadow-sm", children: _jsxs(TooltipProvider, { delayDuration: 0, skipDelayDuration: 0, children: [_jsxs("div", { className: "flex justify-between items-center mb-4", children: [_jsx("h1", { className: "text-xl font-semibold text-gray-900", children: "Operational Hub" }), _jsx("div", { className: "max-w-[200px]", children: _jsx(Select, { style: { width: "200px" }, options: currencyOptions, value: selectedCurrency, onChange: (value) => setSelectedCurrency(value), placeholder: "Select Currency" }) })] }), _jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsxs("div", { className: "bg-gray-50 rounded-lg p-3", children: [_jsxs("div", { className: "flex items-center gap-1 mb-1", children: [_jsx("h3", { className: "text-sm font-medium text-gray-600", children: "Total Expenses" }), _jsx(Tooltip, { content: "Approximate value calculated using exchangerate-api.com. DAI + USDS are converted to USD for simplicity", side: "right", children: _jsx("div", { className: "w-4 h-4 rounded-full bg-gray-300 text-white text-xs flex items-center justify-center cursor-help", children: "!" }) })] }), _jsxs("p", { className: "text-xl font-bold text-gray-900", children: [selectedCurrency, " ", totalExpenses.toLocaleString("en-US", {
|
|
70
|
+
minimumFractionDigits: 2,
|
|
71
|
+
maximumFractionDigits: 2,
|
|
72
|
+
})] })] }), _jsxs("div", { className: "bg-gray-50 rounded-lg p-3", children: [_jsx("h3", { className: "text-sm font-medium text-gray-600 mb-1", children: "Total Invoices" }), _jsx("p", { className: "text-xl font-bold text-gray-900", children: invoices?.length })] })] })] }) }));
|
|
73
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvoiceTable.d.ts","sourceRoot":"","sources":["../../../../old-contributor-billing/components/InvoiceTable/InvoiceTable.tsx"],"names":[],"mappings":"AAaA,OAAO,EAKL,KAAK,wBAAwB,EAC9B,MAAM,gCAAgC,CAAC;AAiBxC,KAAK,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,UAAU,iBAAiB;IACzB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,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,sBAAsB,EAAE,wBAAwB,EAAE,CAAC;IACnD,qBAAqB,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACjE,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAG,CAAC;IACtC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7E,qBAAqB,EAAE,MAAM,OAAO,CAAC;CACtC;AAED,eAAO,MAAM,YAAY,GAAI,oLAY1B,iBAAiB,4CA4qBnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvoiceTableRow.d.ts","sourceRoot":"","sources":["../../../../old-contributor-billing/components/InvoiceTable/InvoiceTableRow.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,GAAI,mFAO7B;IACD,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,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,4CAuGA,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvoiceTableSection.d.ts","sourceRoot":"","sources":["../../../../old-contributor-billing/components/InvoiceTable/InvoiceTableSection.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE/E,eAAO,MAAM,mBAAmB,GAAI,mFAOjC;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAClE,sBAAsB,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACrD,4CA0CA,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { useState } from "react";
|
|
|
3
3
|
import { ChevronDown, ChevronRight } from "lucide-react";
|
|
4
4
|
export const InvoiceTableSection = ({ title, count, children, color = "bg-blue-100 text-blue-600", onSelectDocumentModel, filteredDocumentModels, }) => {
|
|
5
5
|
const [isExpanded, setIsExpanded] = useState(true);
|
|
6
|
-
const invoiceDodModel = filteredDocumentModels?.find(model => model.id === "powerhouse/invoice");
|
|
6
|
+
const invoiceDodModel = filteredDocumentModels?.find((model) => model.id === "powerhouse/invoice");
|
|
7
7
|
return (_jsxs("div", { className: "mb-2", children: [_jsxs("div", { className: "grid grid-cols-2", children: [_jsxs("button", { onClick: () => setIsExpanded(!isExpanded), className: "w-full flex items-center gap-2 hover:opacity-80 transition-opacity col-span-1", children: [_jsx("span", { className: "font-medium", children: title }), _jsx("span", { className: `inline-flex items-center justify-center rounded-full text-xs font-bold px-2 ${color}`, children: count }), isExpanded ? (_jsx(ChevronDown, { className: "w-4 h-4 text-gray-900" })) : (_jsx(ChevronRight, { className: "w-4 h-4 text-gray-900" }))] }), title === "Draft" && (_jsx("button", { className: "bg-white border border-gray-300 rounded px-3 py-1 text-sm hover:bg-gray-100 col-span-1 justify-self-end", onClick: () => {
|
|
8
8
|
onSelectDocumentModel?.(invoiceDodModel);
|
|
9
9
|
}, children: "Create Invoice" }))] }), isExpanded && _jsx("div", { className: "mt-2", children: children })] }));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RowActionMenu.d.ts","sourceRoot":"","sources":["../../../../old-contributor-billing/components/InvoiceTable/RowActionMenu.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,GAAI,wBAG3B;IACD,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,4CAiBA,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export const RowActionMenu = ({ options, onAction, }) => (_jsx("div", { className: "absolute right-0 mt-2 w-[200px] rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 z-50", onClick: (e) => e.stopPropagation(), children: _jsx("div", { className: "py-1", children: options.map((opt) => (_jsx("button", { className: "block w-full text-left px-4 py-2 text-sm hover:bg-gray-100", onClick: () => onAction(opt.value), children: opt.label }, opt.value))) }) }));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../old-contributor-billing/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,eAAO,MAAM,YAAY,EAAE,mBAG1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../old-contributor-billing/editor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,WAAW,2CAGhD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DriveExplorer } from "./components/DriveExplorer.js";
|
|
3
|
+
import { useSetPHDriveEditorConfig } from "@powerhousedao/reactor-browser";
|
|
4
|
+
import { editorConfig } from "./config.js";
|
|
5
|
+
export default function Editor(props) {
|
|
6
|
+
useSetPHDriveEditorConfig(editorConfig);
|
|
7
|
+
return _jsx(DriveExplorer, { ...props });
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../old-contributor-billing/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,eAAO,MAAM,kBAAkB,EAAE,YAOhC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../old-contributor-billing/util.ts"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC1B,cAAc,MAAM,EACpB,YAAY,MAAM,EAClB,SAAS,MAAM,KACd,OAAO,CAAC,MAAM,CA4HhB,CAAC"}
|
|
@@ -6,7 +6,7 @@ const exchangeRateCache = {};
|
|
|
6
6
|
* @returns true if the amount is valid and should trigger API calls
|
|
7
7
|
*/
|
|
8
8
|
const isValidAmount = (amount) => {
|
|
9
|
-
return amount !== undefined && amount !== null && !isNaN(amount) && amount > 0;
|
|
9
|
+
return (amount !== undefined && amount !== null && !isNaN(amount) && amount > 0);
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
12
|
* Fetches the exchange rate between two currencies using ExchangeRate-API.
|
|
@@ -18,8 +18,8 @@ const isValidAmount = (amount) => {
|
|
|
18
18
|
*/
|
|
19
19
|
export const getExchangeRate = async (fromCurrency, toCurrency, amount) => {
|
|
20
20
|
// Normalize inputs
|
|
21
|
-
const base = (fromCurrency ||
|
|
22
|
-
const quote = (toCurrency ||
|
|
21
|
+
const base = (fromCurrency || "").trim().toUpperCase();
|
|
22
|
+
const quote = (toCurrency || "").trim().toUpperCase();
|
|
23
23
|
// Guard empty currencies
|
|
24
24
|
if (!base || !quote) {
|
|
25
25
|
return 1;
|
|
@@ -43,7 +43,9 @@ export const getExchangeRate = async (fromCurrency, toCurrency, amount) => {
|
|
|
43
43
|
// API: https://open.er-api.com/v6/latest/{BASE}
|
|
44
44
|
const controller = new AbortController();
|
|
45
45
|
const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 second timeout
|
|
46
|
-
const response = await fetch(`https://open.er-api.com/v6/latest/${base}`, {
|
|
46
|
+
const response = await fetch(`https://open.er-api.com/v6/latest/${base}`, {
|
|
47
|
+
signal: controller.signal,
|
|
48
|
+
});
|
|
47
49
|
clearTimeout(timeoutId);
|
|
48
50
|
if (!response.ok) {
|
|
49
51
|
throw new Error(`Failed to fetch exchange rates: ${response.status}`);
|
|
@@ -58,14 +60,14 @@ export const getExchangeRate = async (fromCurrency, toCurrency, amount) => {
|
|
|
58
60
|
return exchangeRate;
|
|
59
61
|
}
|
|
60
62
|
catch (error) {
|
|
61
|
-
console.error(
|
|
63
|
+
console.error("ExchangeRate-API error:", error);
|
|
62
64
|
// Fallback: try a different approach for crypto currencies
|
|
63
|
-
if ([
|
|
65
|
+
if (["USDS", "DAI"].includes(base) || ["USDS", "DAI"].includes(quote)) {
|
|
64
66
|
try {
|
|
65
67
|
// For crypto currencies, use CoinGecko as fallback
|
|
66
68
|
const cryptoMapping = {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
USDS: "usd-coin",
|
|
70
|
+
DAI: "dai",
|
|
69
71
|
};
|
|
70
72
|
const fromMapped = cryptoMapping[base] || base.toLowerCase();
|
|
71
73
|
const toMapped = cryptoMapping[quote] || quote.toLowerCase();
|
|
@@ -102,7 +104,7 @@ export const getExchangeRate = async (fromCurrency, toCurrency, amount) => {
|
|
|
102
104
|
}
|
|
103
105
|
}
|
|
104
106
|
catch (cryptoError) {
|
|
105
|
-
console.error(
|
|
107
|
+
console.error("Crypto fallback error:", cryptoError);
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
return 1; // Final fallback to 1:1 on error
|
|
@@ -11,56 +11,21 @@
|
|
|
11
11
|
"id": "powerhouse/invoice",
|
|
12
12
|
"name": "Invoice"
|
|
13
13
|
},
|
|
14
|
-
{
|
|
15
|
-
"id": "powerhouse/integrations",
|
|
16
|
-
"name": "Integrations"
|
|
17
|
-
},
|
|
18
14
|
{
|
|
19
15
|
"id": "powerhouse/billing-statement",
|
|
20
16
|
"name": "Billing Statement"
|
|
21
17
|
},
|
|
22
18
|
{
|
|
23
|
-
"id": "powerhouse/
|
|
24
|
-
"name": "
|
|
25
|
-
}
|
|
26
|
-
],
|
|
27
|
-
"editors": [
|
|
28
|
-
{
|
|
29
|
-
"id": "powerhouse-invoice-editor",
|
|
30
|
-
"name": "Invoice",
|
|
31
|
-
"documentTypes": [
|
|
32
|
-
"powerhouse/invoice"
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"id": "powerhouse-billing-statement-editor",
|
|
37
|
-
"name": "Billing Statement",
|
|
38
|
-
"documentTypes": [
|
|
39
|
-
"powerhouse/billing-statement"
|
|
40
|
-
]
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"id": "integrations-editor",
|
|
44
|
-
"name": "Integrations",
|
|
45
|
-
"documentTypes": [
|
|
46
|
-
"powerhouse/integrations"
|
|
47
|
-
]
|
|
19
|
+
"id": "powerhouse/integrations",
|
|
20
|
+
"name": "Integrations"
|
|
48
21
|
},
|
|
49
22
|
{
|
|
50
|
-
"id": "powerhouse
|
|
51
|
-
"name": "
|
|
52
|
-
"documentTypes": [
|
|
53
|
-
"powerhouse/expense-report"
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
],
|
|
57
|
-
"apps": [
|
|
58
|
-
{
|
|
59
|
-
"id": "contributor-billing",
|
|
60
|
-
"name": "Contributor Billing",
|
|
61
|
-
"driveEditor": "contributor-billing"
|
|
23
|
+
"id": "powerhouse/expense-report",
|
|
24
|
+
"name": "ExpenseReport"
|
|
62
25
|
}
|
|
63
26
|
],
|
|
27
|
+
"editors": [],
|
|
28
|
+
"apps": [],
|
|
64
29
|
"subgraphs": [],
|
|
65
30
|
"importScripts": []
|
|
66
31
|
}
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* This is a scaffold file meant for customization.
|
|
3
|
-
* Delete the file and run the code generator again to have it reset
|
|
4
|
-
*/
|
|
5
|
-
import type { ProcessorRecord } from "document-drive/processors/types";
|
|
6
|
-
export declare const processorFactory: (module: any) => (driveId: string) => ProcessorRecord[];
|
|
1
|
+
export {};
|
|
7
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../processors/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../processors/index.ts"],"names":[],"mappings":""}
|
package/dist/processors/index.js
CHANGED
|
@@ -1,18 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* This is a scaffold file meant for customization.
|
|
3
|
-
* Delete the file and run the code generator again to have it reset
|
|
4
|
-
*/
|
|
5
|
-
import { LineItemProcessorProcessor } from "./line-item-processor/index.js";
|
|
6
|
-
export const processorFactory = (module) => (driveId) => {
|
|
7
|
-
return [
|
|
8
|
-
{
|
|
9
|
-
processor: new LineItemProcessorProcessor(module.analyticsStore),
|
|
10
|
-
filter: {
|
|
11
|
-
branch: ["main"],
|
|
12
|
-
documentId: ["*"],
|
|
13
|
-
scope: ["*"],
|
|
14
|
-
documentType: ["powerhouse/billing-statement"],
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
];
|
|
18
|
-
};
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createExpenseReportCsv.d.ts","sourceRoot":"","sources":["../../../scripts/contributor-billing/createExpenseReportCsv.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createExpenseReportCsv.d.ts","sourceRoot":"","sources":["../../../scripts/contributor-billing/createExpenseReportCsv.ts"],"names":[],"mappings":"AAuDA;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,GAAG,EAAE,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAoGf"}
|