Skip to content

Conversation

@jcortes
Copy link
Collaborator

@jcortes jcortes commented Dec 16, 2025

WHY

Resolves #19185

Summary by CodeRabbit

Release Notes

New Features

  • Visma eAccounting integration now supports complete invoice, voucher, and attachment management workflows
  • Access account balance data, bank account details, and unmatched bank transaction retrieval
  • List and retrieve customers, suppliers, articles, and fiscal year information
  • Enhanced queries for company settings and attachment management capabilities

✏️ Tip: You can customize this high-level summary in your review settings.

@jcortes jcortes self-assigned this Dec 16, 2025
@vercel
Copy link

vercel bot commented Dec 16, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Review Updated (UTC)
pipedream-docs-redirect-do-not-edit Ignored Ignored Dec 16, 2025 5:48pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 16, 2025

Walkthrough

Adds 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 @pipedream/platform dependency.

Changes

Cohort / File(s) Summary
Create Actions
components/eaccounting/actions/create-attachment/create-attachment.mjs, components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs, components/eaccounting/actions/create-supplier-invoice/create-supplier-invoice.mjs, components/eaccounting/actions/create-voucher/create-voucher.mjs
Four new action modules for creating attachments, customer invoices, supplier invoices, and vouchers. Each exposes data input props, optional configuration flags, and delegates to corresponding app methods.
Get Single/Query Actions
components/eaccounting/actions/get-account-balance-by-account-number/get-account-balance-by-account-number.mjs, components/eaccounting/actions/get-account-balances/get-account-balances.mjs, components/eaccounting/actions/get-attachments/get-attachments.mjs, components/eaccounting/actions/get-bank-accounts/get-bank-accounts.mjs, components/eaccounting/actions/get-company-settings/get-company-settings.mjs, components/eaccounting/actions/get-customer-invoices/get-customer-invoices.mjs, components/eaccounting/actions/get-supplier-invoices/get-supplier-invoices.mjs, components/eaccounting/actions/get-unmatched-bank-transactions/get-unmatched-bank-transactions.mjs
Eight new action modules for querying account data, attachments, bank accounts, company settings, and invoices. Support optional filtering parameters where applicable.
List Actions
components/eaccounting/actions/list-articles/list-articles.mjs, components/eaccounting/actions/list-customers/list-customers.mjs, components/eaccounting/actions/list-fiscalyears/list-fiscalyears.mjs, components/eaccounting/actions/list-fiscalyears-openingbalances/list-fiscalyears-openingbalances.mjs, components/eaccounting/actions/list-suppliers/list-suppliers.mjs, components/eaccounting/actions/list-vouchers/list-vouchers.mjs
Six new action modules for listing articles, customers, fiscal years, and suppliers. Return responses with summary exports of retrieved item counts.
App Integration & Infrastructure
components/eaccounting/eaccounting.app.mjs, components/eaccounting/common/constants.mjs, components/eaccounting/package.json
Adds BASE_URL constant, propDefinitions for customerId/supplierId/articleId/bankAccountId/fiscalYearId with dynamic options, _makeRequest method wrapping axios calls with OAuth headers, and 19 public API wrapper methods. Updates package.json with @pipedream/platform dependency.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • App module (eaccounting.app.mjs): Contains 19 API wrapper methods and 5 propDefinitions with async options functions; verify OAuth header injection, axios usage, and method signatures align with action invocations.
  • Action pattern consistency: 25 action files follow similar structure (metadata, props, annotations, run method); spot-check a subset across create/get/list cohorts to ensure proper parameter passing to app methods and summary export formatting.
  • PropDefinitions integration: Verify that customerId, supplierId, etc., are correctly referenced in actions via app.propDefinition and that async options functions map API responses to label/value pairs appropriately.
  • Dependency compatibility: Confirm @pipedream/platform version "^3.1.1" is compatible with the platform versions in use.

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Description check ❓ Inconclusive The description contains only the linked issue reference '#19185', missing the recommended 'WHY' section explaining the purpose beyond the issue number. Expand the description to explain why these components are being added beyond just the issue reference, detailing the value or context.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title '[APP] Visma eAccounting - new components' directly summarizes the main change: adding new Visma eAccounting components/actions.
Linked Issues check ✅ Passed The PR successfully implements all 18 requested endpoints from issue #19185, including create actions, get/list endpoints, and required app module infrastructure.
Out of Scope Changes check ✅ Passed All changes are directly scoped to implementing the 18 requested eAccounting endpoints and supporting infrastructure; no unrelated modifications detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch visma-eaccounting-new-components

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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

📥 Commits

Reviewing files that changed from the base of the PR and between d6edb6e and 8eaa8ef.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is 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.mjs
  • components/eaccounting/actions/get-account-balances/get-account-balances.mjs
  • components/eaccounting/actions/create-customer-invoice/create-customer-invoice.mjs
  • components/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 data prop 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: false is 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 to false.

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 _makeRequest with appropriate paths

The implementation follows best practices and maintains consistency across all methods.

Comment on lines +11 to +15
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.",
},
Copy link
Contributor

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.

Suggested change
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)",
Copy link
Contributor

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.

Comment on lines +11 to +15
date: {
type: "string",
label: "Date",
description: "Date in format yyyy-MM-dd",
},
Copy link
Contributor

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)",
Copy link
Contributor

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)",
Copy link
Contributor

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)",
Copy link
Contributor

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)",
Copy link
Contributor

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.

Comment on lines +15 to 17
"dependencies": {
"@pipedream/platform": "^3.1.1"
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[APP] Visma eAccounting - This is the most popular bookkeeping app/api in Scandinavia

2 participants