Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Ifrs Laravel Package

ekmungai/laravel-ifrs

Laravel IFRS brings double-entry accounting and IFRS-compliant financial reporting to Laravel apps. Manage chart of accounts, journal entries, ledgers, and trial balances, then generate balance sheets, income statements, and other audit-ready financial reports from clean data.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Based on the release notes, this is a Laravel accounting/ledger package (accounts, VAT, line items, schedules, trial-balance reporting) that ships its own migrations, models, and model factories, and is tested via Orchestra Testbench. That is a conventional, low-friction shape for a Laravel app: service provider + publishable config/migrations, no external services, no queue or driver requirements implied. Two coupling points matter for architecture fit: (1) the package owns schema in the host database and manipulates foreign keys on host-adjacent tables (the remove_vat_id_column fix drops an FK before the column), so schema ownership is shared with the app; (2) it depends on Carbon semantics for schedule aging (AccountSchedule age calculation), which means date/time library upgrades in the host are behaviorally coupled to this package's reporting output.

Integration feasibility. v6.0.0 is a platform-floor release, not a feature release. There is no new domain capability here — the version bump is driven entirely by raising minimum PHP to 8.2 and narrowing Laravel support to 11/12/13. Integration is therefore gated on the host application's own framework and runtime position, not on API changes. If we are already on Laravel 11+ and PHP 8.2+, this is a low-effort, low-risk bump. If we are on Laravel 10 / PHP 8.1, we cannot consume v6 at all and must either stay pinned to 5.x or sequence a framework upgrade first.

Technical risk. The breaking changes are version-floor changes and are mechanical; the real risk sits in the four behavioral fixes:

  • Carbon 3 age calculation. Prior versions returned a whole number; Carbon 3 returns a signed float from diffInDays(). This means pre-v6 versions on Carbon 3 were silently computing aging buckets incorrectly. Fixing this changes reported output, not just code — a business-visible change requiring accounting/reporting stakeholder sign-off.
  • Migration fix. The remove_vat_id_column migration previously left a dangling foreign key on modern SQLite. Any environment where this migration ran (dev, CI, possibly local prod-like stacks) may have partially-applied or ambiguous migration state to reconcile.
  • Factory behavior. LineItem and Vat factories no longer generate zero amount/quantity/rate. If our own tests or seeders relied on zero-value lines, data shape changes.
  • Deterministic test suite. Global PRNG seeding and pinned execution order are internal, but if our test suite interleaved package factories into our own faker stream, our snapshot/golden tests may shift.

Key questions.

  1. What Laravel and PHP versions are in production and CI today, and what is the committed upgrade date for each?
  2. Are we on Carbon 2 or Carbon 3? If Carbon 3, have our aging reports been wrong in production, and who needs to be notified?
  3. Has remove_vat_id_column already run in every environment, and in what state? Do we have published copies of the package's migrations that would diverge from the fixed version?
  4. Do we extend or override LineItem, Vat, AccountSchedule, or any report class? If so, what is the re-verification cost?
  5. Do our tests or seeders depend on zero-value line items or on a specific random stream?
  6. Is 5.x still receiving security fixes, and what is the support horizon if we defer?
  7. Is SQLite used anywhere beyond local/CI (i.e., is the driver fix a production concern or purely a test-infrastructure fix)?

Integration Approach

Stack fit. Target matrix is Laravel 11/12/13, PHP 8.2–8.4, PHPUnit 11/12, orchestra/testbench ^9|^10|^11, nunomaduro/collision ^8, spatie/laravel-ignition ^2. Only PHPUnit/Collision are dev-time; the runtime surface is plain Laravel + PHP. Note the dependency coupling: Collision 8 requires PHPUnit 11+, so a partial test-runner upgrade will not resolve — treat the dev-dependency set as one atomic change.

Migration path. Prefer framework-first, package-second:

  1. Confirm host Laravel ≥ 11 and PHP ≥ 8.2 in CI and production images.
  2. If not, run the host framework/runtime upgrade as its own deliverable, staying on ^5 of this package during that work.
  3. Bump this package to ^6.0 immediately after, in the same or the next release train.
  4. Upgrade the host test suite to the PHPUnit 11/12 conventions (annotations → attributes, static data providers) as a separate, reviewable PR. Deferring the whole thing and pinning ^5 is acceptable only with a dated, owner-assigned risk item — PHP 8.1 is EOL, so delay is a security exposure, not just technical debt.

Compatibility. Before merging, inventory published package assets: config, migrations, and any extended models/factories. The migration fix must be reconciled against environments where the old migration already ran — verify the column is actually gone and no orphan constraint remains, and confirm that a re-publish does not attempt a duplicate drop.

Sequencing.

  1. Discovery: host versions, Carbon major, DB drivers per environment, published-asset inventory, test-suite dependencies on package factories.
  2. Runtime: PHP 8.2 (prefer 8.3) in CI, containers, and prod.
  3. Framework: Laravel 11+.
  4. Package: ^6.0.
  5. Test infrastructure: PHPUnit 11/12 + Collision 8, then re-baseline any snapshots affected by deterministic seeding and non-zero factory values.
  6. Verification: full reconciliation run of Trial Balance and aging reports; shadow-compare pre- and post-upgrade report output and get explicit sign-off on any aging-bucket differences before cutover.
  7. Cutover with a rollback pin to ^5 and a documented DB check for the VAT-ID migration state.

Operational Impact

Maintenance. This release is housekeeping: CI matrix across PHP 8.2/8.3/8.4, deterministic test bootstrap, modernized phpunit.xml. The signal is positive — the maintainer is tracking PHP and Laravel EOL policy and shipping disciplined test hygiene rather than accumulating flakiness. The implied cadence is a major bump roughly in step with Laravel's own support windows, so budget an annual upgrade slot rather than a one-off project.

Support. Dropping PHP 8.1 aligns with EOL; staying on 5.x means running an unsupported runtime with no upstream security patches. The compounding cost is that the next major (dropping Laravel 11 when it reaches EOL) will be harder if we skip this one.

Scaling. No runtime, throughput, or concurrency change. The PRNG seeding, factory value changes, and PHPUnit schema updates are build-time only. The Carbon 3 fix changes correctness of aging output, not scale.

Failure modes.

  • Migration ambiguity — environments where the old remove_vat_id_column ran may have a dangling FK (SQLite) or partial state; a naive re-run can fail mid-deploy.
  • Silent reporting drift — the age-calculation fix will shift aging buckets where the old signed-float bug applied. If downstream consumers (exports, dashboards, reconciliation jobs) key off those values, they change without any API signal.
  • Test-suite breakage — zero-value line items disappearing from factories and the reseeded PRNG stream can flip our own assertions and golden files.
  • Dev-dependency deadlock — attempting PHPUnit 12 without Collision 8, or vice versa, produces an unresolvable set.
  • Extended-class drift — local overrides of AccountSchedule or the factories will not automatically inherit the fixes.

Ramp-up. Low for engineers — there is no new API or concept to learn; the effort is upgrade mechanics and verification discipline. Realistic TPM-level estimate: roughly half a day of discovery to answer the key questions, a sprint-sized engineering effort for a typical Laravel app already near the supported floor, and materially more if we are on Laravel 10/PHP 8.1 or carry published migrations and extended models. The one non-engineering task that must be scheduled explicitly is accounting/reporting stakeholder review of the aging output change — that is a sign-off dependency, not a code review.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings