Epic — Import / Export options across all data modules
This issue tracks the full import/export surface for InvoicePlane v2. Child issues implement the individual module-level actions.
v2 approach: All imports use Filament's built-in ImportAction with a per-module Importer class. All exports use Filament's ExportAction with a per-module Exporter class. No custom HTTP routes are needed.
Child issues
| Module |
Import |
Export |
| Products |
#140 (CSV/Excel import) |
— |
| Clients |
#141 (CSV import) |
— |
| Catalogs/Pricelists |
#139 (CSV/Excel import) |
— |
| Excel support |
#80 (.xlsx file handling) |
— |
| Invoices |
— |
TBD |
| Quotes |
— |
TBD |
| Payments |
— |
TBD |
| Expenses |
— |
TBD |
| Full backup |
— |
TBD |
Acceptance criteria (Epic-level)
Technical standards
- Importer classes:
Modules/<Module>/Filament/Company/Imports/<Model>Importer.php
- Exporter classes:
Modules/<Module>/Filament/Company/Exports/<Model>Exporter.php
- Each must ship PHPUnit feature tests covering: successful import, skipped invalid row, company scoping.
- No raw
$response->get(route(...)) in tests — use Livewire ->callAction('import', ...) and ->callAction('export', ...) patterns.
Epic — Import / Export options across all data modules
This issue tracks the full import/export surface for InvoicePlane v2. Child issues implement the individual module-level actions.
Child issues
.xlsxfile handling)Acceptance criteria (Epic-level)
firstOrCreate/updateOrCreateto avoid duplicates.Technical standards
Modules/<Module>/Filament/Company/Imports/<Model>Importer.phpModules/<Module>/Filament/Company/Exports/<Model>Exporter.php$response->get(route(...))in tests — use Livewire->callAction('import', ...)and->callAction('export', ...)patterns.