-
Notifications
You must be signed in to change notification settings - Fork 5.6k
[APP] Visma eAccounting - new components #19510
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
WalkthroughAdds comprehensive Visma eAccounting integration with 25 action modules for creating and retrieving invoices, vouchers, attachments, accounts, and related resources. Introduces app-level API wrapper methods, propDefinitions for dropdown references, a base URL constant, and the Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 8
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (21)
components/eaccounting/actions/create-attachment/create-attachment.mjs(1 hunks)components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs(1 hunks)components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs(1 hunks)components/eaccounting/actions/create-voucher/create-voucher.mjs(1 hunks)components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs(1 hunks)components/eaccounting/actions/get-account-balances/get-account-balances.mjs(1 hunks)components/eaccounting/actions/get-attachments/get-attachments.mjs(1 hunks)components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs(1 hunks)components/eaccounting/actions/get-company-settings/get-company-settings.mjs(1 hunks)components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs(1 hunks)components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs(1 hunks)components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs(1 hunks)components/eaccounting/actions/list-articles/list-articles.mjs(1 hunks)components/eaccounting/actions/list-customers/list-customers.mjs(1 hunks)components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs(1 hunks)components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs(1 hunks)components/eaccounting/actions/list-suppliers/list-suppliers.mjs(1 hunks)components/eaccounting/actions/list-vouchers/list-vouchers.mjs(1 hunks)components/eaccounting/common/constants.mjs(1 hunks)components/eaccounting/eaccounting.app.mjs(1 hunks)components/eaccounting/package.json(1 hunks)
🧰 Additional context used
🧠 Learnings (5)
📚 Learning: 2024-10-30T15:24:39.294Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In `components/gainsight_px/actions/create-account/create-account.mjs`, the action name should be "Create Account" instead of "Create Memory".
Applied to files:
components/eaccounting/actions/create-attachment/create-attachment.mjscomponents/eaccounting/actions/get-account-balances/get-account-balances.mjscomponents/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjscomponents/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs
📚 Learning: 2024-10-08T15:33:38.240Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-10-08T15:33:38.240Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.
Applied to files:
components/eaccounting/actions/list-customers/list-customers.mjs
📚 Learning: 2024-12-12T19:23:09.039Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.
Applied to files:
components/eaccounting/package.json
📚 Learning: 2025-06-04T17:52:05.780Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: In the Salesloft API integration (components/salesloft/salesloft.app.mjs), the _makeRequest method returns response.data which directly contains arrays for list endpoints like listPeople, listCadences, listUsers, and listAccounts. The propDefinitions correctly call .map() directly on these responses without needing to destructure a nested data property.
Applied to files:
components/eaccounting/eaccounting.app.mjs
📚 Learning: 2025-09-15T22:01:11.472Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 18362
File: components/leonardo_ai/actions/generate-image/generate-image.mjs:103-105
Timestamp: 2025-09-15T22:01:11.472Z
Learning: In Pipedream components, pipedream/platform's axios implementation automatically excludes undefined values from HTTP requests, so there's no need to manually check for truthiness before including properties in request payloads.
Applied to files:
components/eaccounting/eaccounting.app.mjs
🧬 Code graph analysis (12)
components/eaccounting/actions/get-attachments/get-attachments.mjs (16)
components/eaccounting/actions/create-attachment/create-attachment.mjs (1)
response(23-26)components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs (1)
response(29-35)components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs (1)
response(41-49)components/eaccounting/actions/create-voucher/create-voucher.mjs (1)
response(41-49)components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs (1)
response(28-32)components/eaccounting/actions/get-account-balances/get-account-balances.mjs (1)
response(23-26)components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs (1)
response(18-20)components/eaccounting/actions/get-company-settings/get-company-settings.mjs (1)
response(18-20)components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs (1)
response(24-29)components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs (1)
response(18-20)components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs (1)
response(24-27)components/eaccounting/actions/list-articles/list-articles.mjs (1)
response(32-38)components/eaccounting/actions/list-customers/list-customers.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs (1)
response(18-20)components/eaccounting/actions/list-suppliers/list-suppliers.mjs (1)
response(18-20)
components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs (12)
components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs (1)
response(29-35)components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs (1)
response(41-49)components/eaccounting/actions/create-voucher/create-voucher.mjs (1)
response(41-49)components/eaccounting/actions/get-account-balances/get-account-balances.mjs (1)
response(23-26)components/eaccounting/actions/get-attachments/get-attachments.mjs (1)
response(32-38)components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs (1)
response(18-20)components/eaccounting/actions/get-company-settings/get-company-settings.mjs (1)
response(18-20)components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs (1)
response(18-20)components/eaccounting/actions/list-articles/list-articles.mjs (1)
response(32-38)components/eaccounting/actions/list-customers/list-customers.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs (1)
response(18-20)components/eaccounting/actions/list-suppliers/list-suppliers.mjs (1)
response(18-20)
components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs (3)
components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs (1)
response(41-49)components/eaccounting/actions/create-voucher/create-voucher.mjs (1)
response(41-49)components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs (1)
response(24-29)
components/eaccounting/actions/create-voucher/create-voucher.mjs (16)
components/eaccounting/actions/create-attachment/create-attachment.mjs (1)
response(23-26)components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs (1)
response(29-35)components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs (1)
response(41-49)components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs (1)
response(28-32)components/eaccounting/actions/get-account-balances/get-account-balances.mjs (1)
response(23-26)components/eaccounting/actions/get-attachments/get-attachments.mjs (1)
response(32-38)components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs (1)
response(18-20)components/eaccounting/actions/get-company-settings/get-company-settings.mjs (1)
response(18-20)components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs (1)
response(24-29)components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs (1)
response(18-20)components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs (1)
response(24-27)components/eaccounting/actions/list-articles/list-articles.mjs (1)
response(32-38)components/eaccounting/actions/list-customers/list-customers.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs (1)
response(18-20)components/eaccounting/actions/list-suppliers/list-suppliers.mjs (1)
response(18-20)
components/eaccounting/actions/list-articles/list-articles.mjs (16)
components/eaccounting/actions/create-attachment/create-attachment.mjs (1)
response(23-26)components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs (1)
response(29-35)components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs (1)
response(41-49)components/eaccounting/actions/create-voucher/create-voucher.mjs (1)
response(41-49)components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs (1)
response(28-32)components/eaccounting/actions/get-account-balances/get-account-balances.mjs (1)
response(23-26)components/eaccounting/actions/get-attachments/get-attachments.mjs (1)
response(32-38)components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs (1)
response(18-20)components/eaccounting/actions/get-company-settings/get-company-settings.mjs (1)
response(18-20)components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs (1)
response(24-29)components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs (1)
response(18-20)components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs (1)
response(24-27)components/eaccounting/actions/list-customers/list-customers.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs (1)
response(18-20)components/eaccounting/actions/list-suppliers/list-suppliers.mjs (1)
response(18-20)
components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs (16)
components/eaccounting/actions/create-attachment/create-attachment.mjs (1)
response(23-26)components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs (1)
response(29-35)components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs (1)
response(41-49)components/eaccounting/actions/create-voucher/create-voucher.mjs (1)
response(41-49)components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs (1)
response(28-32)components/eaccounting/actions/get-account-balances/get-account-balances.mjs (1)
response(23-26)components/eaccounting/actions/get-attachments/get-attachments.mjs (1)
response(32-38)components/eaccounting/actions/get-company-settings/get-company-settings.mjs (1)
response(18-20)components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs (1)
response(24-29)components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs (1)
response(18-20)components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs (1)
response(24-27)components/eaccounting/actions/list-articles/list-articles.mjs (1)
response(32-38)components/eaccounting/actions/list-customers/list-customers.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs (1)
response(18-20)components/eaccounting/actions/list-suppliers/list-suppliers.mjs (1)
response(18-20)
components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs (15)
components/eaccounting/actions/create-attachment/create-attachment.mjs (1)
response(23-26)components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs (1)
response(29-35)components/eaccounting/actions/create-voucher/create-voucher.mjs (1)
response(41-49)components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs (1)
response(28-32)components/eaccounting/actions/get-account-balances/get-account-balances.mjs (1)
response(23-26)components/eaccounting/actions/get-attachments/get-attachments.mjs (1)
response(32-38)components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs (1)
response(18-20)components/eaccounting/actions/get-company-settings/get-company-settings.mjs (1)
response(18-20)components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs (1)
response(24-29)components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs (1)
response(18-20)components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs (1)
response(24-27)components/eaccounting/actions/list-articles/list-articles.mjs (1)
response(32-38)components/eaccounting/actions/list-customers/list-customers.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs (1)
response(18-20)components/eaccounting/actions/list-suppliers/list-suppliers.mjs (1)
response(18-20)
components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs (16)
components/eaccounting/actions/create-attachment/create-attachment.mjs (1)
response(23-26)components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs (1)
response(29-35)components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs (1)
response(41-49)components/eaccounting/actions/create-voucher/create-voucher.mjs (1)
response(41-49)components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs (1)
response(28-32)components/eaccounting/actions/get-account-balances/get-account-balances.mjs (1)
response(23-26)components/eaccounting/actions/get-attachments/get-attachments.mjs (1)
response(32-38)components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs (1)
response(18-20)components/eaccounting/actions/get-company-settings/get-company-settings.mjs (1)
response(18-20)components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs (1)
response(24-29)components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs (1)
response(18-20)components/eaccounting/actions/list-articles/list-articles.mjs (1)
response(32-38)components/eaccounting/actions/list-customers/list-customers.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs (1)
response(18-20)components/eaccounting/actions/list-suppliers/list-suppliers.mjs (1)
response(18-20)
components/eaccounting/actions/list-vouchers/list-vouchers.mjs (16)
components/eaccounting/actions/create-attachment/create-attachment.mjs (1)
response(23-26)components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs (1)
response(29-35)components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs (1)
response(41-49)components/eaccounting/actions/create-voucher/create-voucher.mjs (1)
response(41-49)components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs (1)
response(28-32)components/eaccounting/actions/get-account-balances/get-account-balances.mjs (1)
response(23-26)components/eaccounting/actions/get-attachments/get-attachments.mjs (1)
response(32-38)components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs (1)
response(18-20)components/eaccounting/actions/get-company-settings/get-company-settings.mjs (1)
response(18-20)components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs (1)
response(24-29)components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs (1)
response(18-20)components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs (1)
response(24-27)components/eaccounting/actions/list-articles/list-articles.mjs (1)
response(32-38)components/eaccounting/actions/list-customers/list-customers.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs (1)
response(18-20)
components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs (16)
components/eaccounting/actions/create-attachment/create-attachment.mjs (1)
response(23-26)components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs (1)
response(29-35)components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs (1)
response(41-49)components/eaccounting/actions/create-voucher/create-voucher.mjs (1)
response(41-49)components/eaccounting/actions/get-account-balances/get-account-balances.mjs (1)
response(23-26)components/eaccounting/actions/get-attachments/get-attachments.mjs (1)
response(32-38)components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs (1)
response(18-20)components/eaccounting/actions/get-company-settings/get-company-settings.mjs (1)
response(18-20)components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs (1)
response(24-29)components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs (1)
response(18-20)components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs (1)
response(24-27)components/eaccounting/actions/list-articles/list-articles.mjs (1)
response(32-38)components/eaccounting/actions/list-customers/list-customers.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs (1)
response(18-20)components/eaccounting/actions/list-suppliers/list-suppliers.mjs (1)
response(18-20)
components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs (3)
components/eaccounting/actions/list-customers/list-customers.mjs (1)
response(18-20)components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs (1)
response(18-20)components/eaccounting/actions/list-suppliers/list-suppliers.mjs (1)
response(18-20)
components/eaccounting/eaccounting.app.mjs (1)
components/eaccounting/common/constants.mjs (2)
BASE_URL(1-1)BASE_URL(1-1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: pnpm publish
- GitHub Check: Lint Code Base
- GitHub Check: Verify TypeScript components
- GitHub Check: Publish TypeScript components
🔇 Additional comments (24)
components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs (1)
1-24: LGTM!The action follows the established Pipedream component pattern. Metadata, props, annotations, and run method are correctly implemented. The read-only annotations are appropriate for a list operation, and the summary message safely handles potential undefined
response.data.components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs (1)
1-24: LGTM!The action is well-structured and consistent with other retrieval actions in this PR. Annotations correctly indicate this is a read-only, non-destructive operation.
components/eaccounting/common/constants.mjs (1)
1-1: LGTM!Centralizing the API base URL in a constants module is a clean pattern for maintainability. The URL aligns with the Visma eAccounting API v2 endpoint referenced in the documentation.
components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs (1)
1-24: LGTM!The action follows the established pattern for list/retrieval operations. Implementation is clean and consistent with other actions in the PR.
components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs (1)
28-38: LGTM!The run method correctly passes data and params to the app method. The summary message handles missing IDs gracefully with the
|| "N/A"fallback.components/eaccounting/actions/list-customers/list-customers.mjs (1)
1-24: LGTM!The action correctly implements the list customers functionality following the established Pipedream component pattern. Summary message formatting is appropriate per project conventions.
components/eaccounting/actions/create-attachment/create-attachment.mjs (1)
1-30: LGTM!The action is well-structured. The
dataprop description helpfully indicates expected fields (fileName, data as base64, optional metadata), which provides useful guidance to users. Annotations and error handling are appropriate for a create operation.components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs (1)
17-23: LGTM: Good defensive programming.The use of optional chaining (
response.data?.length) with a fallback to 0 prevents potential runtime errors if the API response structure is unexpected. This pattern is consistently applied across similar list actions.components/eaccounting/actions/create-voucher/create-voucher.mjs (2)
9-34: LGTM: Clear prop definitions.The prop definitions are well-documented with helpful descriptions for each parameter. The data object delegates schema validation to the API, which is appropriate for complex, potentially evolving schemas.
35-39: No changes needed—destructiveHint: false is correct for these create actions.In Visma eAccounting, created invoices cannot be directly deleted; instead, they are handled through credit or void operations that reverse the invoice as a whole. Vouchers similarly can be reversed using batch copy functions. Since these operations produce reversible accounting entries rather than permanent, destructive changes,
destructiveHint: falseis the appropriate setting. The consistent pattern across all four create actions (Create Voucher, Create Customer Invoice, Create Supplier Invoice, Create Attachment) reflects that these are non-destructive operations in the Visma eAccounting context.components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs (1)
1-53: LGTM: Consistent structure with other create actions.This action follows the same well-structured pattern as other create actions in the PR, with clear prop definitions and appropriate delegation to the app layer.
components/eaccounting/actions/list-suppliers/list-suppliers.mjs (1)
1-24: LGTM: Consistent with other list actions.The implementation correctly follows the established pattern with defensive programming using optional chaining.
components/eaccounting/actions/list-articles/list-articles.mjs (1)
17-24: LGTM: Good use of propDefinition.The customerId prop correctly uses propDefinition from the app for consistency while providing additional context-specific description. This promotes reusability and ensures consistent behavior across actions.
components/eaccounting/actions/get-attachments/get-attachments.mjs (1)
11-24: LGTM: Sensible default values.The boolean props have appropriate default values (
true) that provide the most comprehensive data by default, while allowing users to opt out for more specific queries. The descriptions clearly explain the behavior when set tofalse.components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs (1)
23-32: LGTM! Consider pagination for large datasets.The implementation correctly calls the API and exports a summary. However, if the API paginates results, this action may not retrieve "all" invoices as stated in the description. Consider verifying whether the API returns paginated results and if so, either implement pagination or update the description to reflect this limitation.
components/eaccounting/actions/list-vouchers/list-vouchers.mjs (1)
17-23: LGTM! Implementation follows the established pattern.The action correctly delegates to the app method and exports an appropriate summary.
components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs (2)
11-16: LGTM! Proper use of propDefinition.The bankAccountId prop correctly references the app's propDefinition, which will provide users with a dropdown of available bank accounts.
23-30: LGTM! Implementation is correct.The action properly passes the bankAccountId parameter and exports a clear summary.
components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs (2)
11-20: LGTM! Input parameters are well-defined.The accountNumber and date props have appropriate types and clear descriptions, including the expected date format.
27-35: LGTM! Implementation correctly passes parameters.The action properly passes both accountNumber and date to the API method and exports a descriptive summary.
components/eaccounting/eaccounting.app.mjs (4)
1-2: LGTM! Imports are correct.The imports properly use the platform axios and reference the BASE_URL constant from the shared constants file.
7-68: LGTM! PropDefinitions follow a consistent pattern.All five propDefinitions correctly:
- Define async options() methods
- Call the appropriate API list methods
- Map responses to label/value pairs with sensible fallbacks
The destructuring of
{ data }from the API responses assumes axios returns the standard response object structure, which is correct.
70-85: LGTM! The _makeRequest method is well-implemented.The method correctly:
- Constructs the full API URL using the BASE_URL constant
- Adds proper Authorization and Content-Type headers
- Allows for header and option overrides through spreading
- Uses sensible defaults ($ = this)
86-215: LGTM! API methods are well-organized and consistent.The API wrapper methods correctly:
- Use descriptive names matching the API endpoints
- Properly destructure specific parameters where needed for clarity
- Specify
method: "POST"for create operations- Organize methods by resource type with helpful comments
- Delegate to
_makeRequestwith appropriate pathsThe implementation follows best practices and maintains consistency across all methods.
| data: { | ||
| type: "object", | ||
| label: "Invoice Data", | ||
| description: "The customer invoice data as a JSON object. [See the API documentation](https://developer.vismaonline.com) for the complete schema.", | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Consider providing a more specific documentation link.
The data prop's description references the generic documentation URL. Linking directly to the CustomerInvoice schema endpoint (e.g., the Swagger docs at https://eaccountingapi.vismaonline.com/swagger/ui/index#/CustomerInvoicesV2) would improve user experience.
data: {
type: "object",
label: "Invoice Data",
- description: "The customer invoice data as a JSON object. [See the API documentation](https://developer.vismaonline.com) for the complete schema.",
+ description: "The customer invoice data as a JSON object. [See the API documentation](https://eaccountingapi.vismaonline.com/swagger/ui/index#/CustomerInvoicesV2) for the complete schema.",
},📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| data: { | |
| type: "object", | |
| label: "Invoice Data", | |
| description: "The customer invoice data as a JSON object. [See the API documentation](https://developer.vismaonline.com) for the complete schema.", | |
| }, | |
| data: { | |
| type: "object", | |
| label: "Invoice Data", | |
| description: "The customer invoice data as a JSON object. [See the API documentation](https://eaccountingapi.vismaonline.com/swagger/ui/index#/CustomerInvoicesV2) for the complete schema.", | |
| }, |
🤖 Prompt for AI Agents
In
components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs
around lines 11 to 15, the data property's description links to a generic API
doc; update that description to point directly to the CustomerInvoice schema
Swagger endpoint (for example
https://eaccountingapi.vismaonline.com/swagger/ui/index#/CustomerInvoicesV2) so
users land on the exact CustomerInvoice docs; replace the existing URL in the
description with the specific endpoint and keep the rest of the text unchanged.
| export default { | ||
| key: "eaccounting-get-account-balance-by-account-number", | ||
| name: "Get Account Balance by Account Number", | ||
| description: "Retrieves account balance by account number and date. [See the documentation](https://developer.vismaonline.com)", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Consider adding a more specific documentation URL.
The documentation link points to the general developer portal. Consider linking to the specific account balances endpoint documentation.
🤖 Prompt for AI Agents
In
components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs
around line 6, the description uses the generic developer portal URL; replace it
with the direct documentation URL for the specific "account balances" or "get
account balance by account number" endpoint (for example the API endpoint page
or an anchor that documents account balance parameters and response) so the
comment links developers straight to the relevant endpoint documentation; update
the markdown link to point to that specific page/anchor and keep the rest of the
description unchanged.
| date: { | ||
| type: "string", | ||
| label: "Date", | ||
| description: "Date in format yyyy-MM-dd", | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Add date format validation.
The date prop specifies the format as "yyyy-MM-dd" in the description but lacks validation. Users could submit invalid formats, leading to API errors.
Apply this diff to add format validation:
date: {
type: "string",
label: "Date",
description: "Date in format yyyy-MM-dd",
+ pattern: "\\d{4}-\\d{2}-\\d{2}",
},Alternatively, consider using a date picker with type: "string", format: "date" if supported by the Pipedream platform.
| export default { | ||
| key: "eaccounting-get-company-settings", | ||
| name: "Get Company Settings", | ||
| description: "Retrieves company settings. [See the documentation](https://developer.vismaonline.com)", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Reference the specific Swagger API documentation instead of the generic developer portal.
The documentation link should point to the interactive Swagger endpoint reference rather than the generic developer portal. Use https://eaccountingapi.vismaonline.com/swagger/ui/index for direct access to endpoint specifications, which helps developers find relevant API operations more efficiently.
🤖 Prompt for AI Agents
In components/eaccounting/actions/get-company-settings/get-company-settings.mjs
around line 6, the description's documentation link points to the generic
developer portal; update it to reference the specific Swagger interactive API
docs by replacing the URL with
https://eaccountingapi.vismaonline.com/swagger/ui/index so the description links
directly to the endpoint specifications.
| export default { | ||
| key: "eaccounting-get-customer-invoices", | ||
| name: "Get Customer Invoices", | ||
| description: "Retrieves all customer invoices. [See the documentation](https://developer.vismaonline.com)", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Consider adding a more specific documentation URL.
The documentation link points to the general developer portal. Consider linking to the specific API endpoint documentation (e.g., https://eaccountingapi.vismaonline.com/swagger/ui/index#!/CustomerInvoiceV2) to help users understand the exact endpoint behavior, response structure, and available parameters.
🤖 Prompt for AI Agents
In
components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs
around line 6, the description uses a generic developer portal URL; replace it
with the specific API endpoint documentation URL (for example
https://eaccountingapi.vismaonline.com/swagger/ui/index#!/CustomerInvoiceV2 or
the exact CustomerInvoiceV2 endpoint page) so users can view the endpoint
details, parameters and response schema—update the description string to include
that specific URL.
| export default { | ||
| key: "eaccounting-get-unmatched-bank-transactions", | ||
| name: "Get Unmatched Bank Transactions", | ||
| description: "Retrieves a list of unmatched bank transactions. [See the documentation](https://developer.vismaonline.com)", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Consider adding a more specific documentation URL.
The documentation link points to the general developer portal. Consider linking to the specific bank transactions endpoint documentation.
🤖 Prompt for AI Agents
In
components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs
around line 6, the description uses a general developer portal URL; replace it
with the specific Visma eAccounting bank transactions endpoint documentation URL
(locate the exact endpoint page on developer.vismaonline.com or Visma's
eAccounting API docs) and update the description string to point to that
specific documentation link so users are directed to the precise API reference.
| export default { | ||
| key: "eaccounting-list-vouchers", | ||
| name: "List Vouchers", | ||
| description: "Retrieves a list of vouchers. [See the documentation](https://developer.vismaonline.com)", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Consider adding a more specific documentation URL.
The documentation link points to the general developer portal. Consider linking to the specific vouchers endpoint documentation for better developer experience.
🤖 Prompt for AI Agents
In components/eaccounting/actions/list-vouchers/list-vouchers.mjs around line 6,
the description uses the general Visma developer portal URL; replace it with the
specific documentation URL for the vouchers endpoint (e.g., the Visma
eAccounting API vouchers/list or equivalent endpoint doc) so developers land
directly on the relevant API reference; update the description string to include
that specific endpoint URL and ensure the link is correct and HTTPS.
| "dependencies": { | ||
| "@pipedream/platform": "^3.1.1" | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update @pipedream/platform version to 3.1.0
The specified version ^3.1.1 does not exist on npm. The latest available version is 3.1.0. Change the dependency to "@pipedream/platform": "^3.1.0" to ensure proper package resolution.
🤖 Prompt for AI Agents
In components/eaccounting/package.json around lines 15 to 17, the dependency
version for "@pipedream/platform" is set to a non-existent ^3.1.1; update the
dependency to use the latest available published version by changing the version
string to "^3.1.0" in the dependencies section and run a quick install
(npm/yarn) to verify resolution.
WHY
Resolves #19185
Summary by CodeRabbit
Release Notes
New Features
✏️ Tip: You can customize this high-level summary in your review settings.