laravel-shop/tests/Feature
Fabian @ Blax Software 423da476f5 feat(ledger): mirror PayPal accounts into the money ledger
PayPal checkouts that run through Stripe settle into our PayPal account.
Stripe's ledger row books the gross and Stripe's fee, but PayPal takes its
own fee inside the PayPal account, so net revenue was overstated.

- Ledger rows carry `provider` (stripe, paypal) and `account`; existing
  rows default to stripe.
- shop:import-paypal-ledger reads every account in shop.paypal.accounts
  through the Transaction Search API (read-only) and upserts one row per
  PayPal transaction. Stripe-originated payments and refunds add a
  `paypal_fee` row (amount 0, net -fee); payments PayPal swept on to
  Stripe are booked as `paypal_fee_passthrough`, because Stripe's fee
  already holds PayPal's. Direct PayPal sales count in full; holds,
  sweeps and withdrawals are non-revenue.
- `paypal_fee` joins the default revenue types.
- Stripe rows keep their payment intent in meta so PayPal rows find the
  buyer.
- Shop::ledgerTotalsByAccount() splits the totals per account.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-07 10:46:46 +02:00
..
Booking BF edgecases, R structure, A tests 2026-05-18 13:05:38 +02:00
Cart IAM "max usage" feature 2026-05-19 14:01:52 +02:00
Checkout fix(stripe): name Checkout lines after the product, options only when there are some 2026-09-25 13:02:03 +02:00
Http BF edgecases, R structure, A tests 2026-05-18 13:05:38 +02:00
Ledger feat(ledger): mirror PayPal accounts into the money ledger 2026-10-07 10:46:46 +02:00
Loan R loan purchase to physical loan, A physical loan stuff 2026-05-17 15:20:58 +02:00
Pool feat: Enhance traits with strict types and improve method signatures 2026-05-15 20:26:24 +02:00
Pricing I loanable product type, tiered pricing, lifecycle events, host helpers 2026-05-15 10:27:59 +02:00
Product R loan purchase to physical loan, A physical loan stuff 2026-05-17 15:20:58 +02:00
ProductionBugs BF pool cart bug, R structure 2025-12-30 10:55:06 +01:00
Seats feat(seats): assignable license seats — buy N, assign/reassign/reclaim per user 2026-07-29 10:07:58 +02:00
ShopServiceProvider feat(i18n,stripe): de/pl translations + order address snapshots from Checkout Session 2026-09-21 13:39:40 +02:00
Stripe BF pool cart bug, R structure 2025-12-30 10:55:06 +01:00
Subscriptions feat(cost): royalty / minimum-licence-fee margin (Aircademy-style) 2026-08-28 16:03:04 +02:00
CommandActionsTest.php BF commands, A command tests, I traits 2026-05-17 13:25:34 +02:00
CommandAvailabilityTest.php A events, IA commands 2026-05-17 11:24:43 +02:00
CommandCleanupCartsTest.php BF commands, A command tests, I traits 2026-05-17 13:25:34 +02:00
CommandListProductsTest.php BF commands, A command tests, I traits 2026-05-17 13:25:34 +02:00
CommandListPurchasesTest.php BF commands, A command tests, I traits 2026-05-17 13:25:34 +02:00
CommandListTest.php BF commands, A command tests, I traits 2026-05-17 13:25:34 +02:00
CommandProductExamplesTest.php BFI cart single item 2025-12-24 19:40:10 +01:00
CommandReinstallTest.php BF commands, A command tests, I traits 2026-05-17 13:25:34 +02:00
CommandReleaseExpiredStocksTest.php BF commands, A command tests, I traits 2026-05-17 13:25:34 +02:00
CommandStatsTest.php BFI commands, A test 2026-05-17 14:09:03 +02:00
CommandStocksTest.php A events, IA commands 2026-05-17 11:24:43 +02:00
EventsWiredUpTest.php feat(fulfillment): add model-agnostic PurchaseCompleted event 2026-06-02 11:19:21 +02:00
GetHasMoreAttributeTest.php BFRI cart 2025-12-28 11:12:58 +01:00
HasShoppingCapabilitiesTest.php BFI cart / orders 2026-01-05 10:30:21 +01:00
NextAvailableAtTest.php BF commands, A command tests, I traits 2026-05-17 13:25:34 +02:00
ShopFacadeTest.php BFI cart single item 2025-12-24 19:40:10 +01:00