Skip to content

[IP-85]: import export options all data - #716

Draft
nielsdrost7 wants to merge 31 commits into
InvoicePlane:developfrom
underdogg-forks:feature/85-import-export-options-all-data
Draft

nielsdrost7 wants to merge 31 commits into
InvoicePlane:developfrom
underdogg-forks:feature/85-import-export-options-all-data

Conversation

@nielsdrost7

@nielsdrost7 nielsdrost7 commented Aug 15, 2026

Copy link
Copy Markdown
Collaborator

Summary

Import/export options for all data (#85):

Exports (CSV + Excel, v2 and v1-legacy formats): ships for all nine modules (Clients/Contacts, Invoices, Quotes, Payments, Products, Projects/Tasks, Expenses) with list-page actions.

V1 database migration (import:db command): ships in develop via PR #708 (feat/678-v1-migration), providing the V1MigrationManager orchestrator with 15 per-entity migrators (TaxRate, Products, CustomField, Users, Clients, Numbering, Invoices, Quotes, Payments, Projects, RecurringInvoices, Uploads, EmailTemplates, Settings, Notes).

Filament ImportAction UI: not part of this PR — remains with follow-up issues (#139, #140, #141, #80).

Features

  • Export formats: CSV and Excel (native v2 schema + v1-legacy for compatibility)
  • V1 import via CLI: idempotent, dry-run support, financial reconciliation, error resilience
  • Reusable export services: per-module exporters for integration with other features

Test plan

  • php artisan test — full suite, 0 failures
  • Export CSV and Excel from list pages (all 9 modules)
  • php artisan import:db --dry-run against a real v1 backup (if available)

Related PRs

Follow-up issues (not resolved here)

Addresses #139 — Import options (catalog, pricelists) — Filament ImportAction UI not built
Addresses #140 — Import products from external sources — no Filament ImportAction wizard
Addresses #141 — Import clients in bulk — no Filament ImportAction wizard
Addresses #80 — Finish Excel import — per-module ImportAction UI remains unbuilt

Files Removed During Cleanup

The following infrastructure and automation files were removed from this branch:

  • .claude/fable5/ (automated testing framework files)
  • .claude/skills/ (skill definition files)
  • automation/ (build/test automation scripts)
  • docker-resources/
  • .github/DOCKER.md

@InvoicePlane InvoicePlane deleted a comment from coderabbitai Bot Aug 15, 2026
@nielsdrost7 nielsdrost7 linked an issue Aug 15, 2026 that may be closed by this pull request
7 tasks
@InvoicePlane InvoicePlane deleted a comment from coderabbitai Bot Aug 15, 2026
@nielsdrost7
nielsdrost7 marked this pull request as draft August 15, 2026 17:31
@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

@nielsdrost7
nielsdrost7 force-pushed the feature/85-import-export-options-all-data branch from 19b7ca7 to 45538ee Compare August 15, 2026 17:35
@nielsdrost7

Copy link
Copy Markdown
Collaborator Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor
⚠️ Action not completed

Review rate limited.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 36 minutes.

nielsdrost7 and others added 22 commits August 16, 2026 06:25
Add all Export classes, Filament Exporters, ExportServices and ExportImportTests
for every module. Add ExportAction groups to all ListRecords pages.
Add InvoicePlane V1 import command, services, models, and tests.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Documents the correct procedure for extracting files from develop into a
feature branch so the branch is ahead of develop and a PR can be opened.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e for PHPUnit discovery

PHPUnit only scans Modules/*/Tests/{Unit,Feature}; the nine suites under
Modules/*/Feature/Modules were never discovered. Moves them to the correct
path, fixes namespaces, and replaces the stale Queue::fake()/Bus::assertChained
pattern with Bus::assertDispatched(ChainedBatch::class), matching the corrected
InvoicesExportImportTest already on develop (whose stale duplicate is removed).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Resource pages gate on Spatie permissions since the role-permissions
feature (InvoicePlane#500), but the test base classes never seeded them, so every
company/admin panel Livewire test aborted with 403. Seed permissions and
roles in setUp and assign client_admin / super_admin to the test users.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
github-actions Bot and others added 7 commits August 16, 2026 06:25
…e is reachable

The setUp/tearDown of the import service tests dropped tables on a
MySQL connection unconditionally; without one they errored and leaked
an open transaction that cascaded 'already an active transaction' into
265 later tests. They now skip cleanly on unavailable connections.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
relations.company_name, products.product_name, expenses.expense_amount
and payments.payment_amount/notes replace invented column names, and
payments get the invoice their NOT NULL invoice_id requires.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@nielsdrost7
nielsdrost7 force-pushed the feature/85-import-export-options-all-data branch from d5e56d0 to 1b05b6f Compare August 16, 2026 04:25
@nielsdrost7
nielsdrost7 force-pushed the feature/85-import-export-options-all-data branch from 881adf0 to 067372a Compare August 17, 2026 05:28
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.

[Core]: Import/Export Options for all data

1 participant