refactor(ticket): use refunds as amount source

This commit is contained in:
2026-09-14 12:29:13 -03:00
parent caed44fcc8
commit 67deca095e
9 changed files with 114 additions and 34 deletions

View File

@@ -20,6 +20,7 @@ use App\Domains\Purchase\Services\CheckoutService;
use App\Domains\Tenant\Models\Tenant;
use App\Domains\Tenant\Models\WebsiteType;
use App\Domains\Ticket\Models\Ticket;
use App\Domains\Ticket\Models\TicketRefund;
use Database\Seeders\AuthorizationSeeder;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Event;
@@ -131,7 +132,8 @@ class AdminAppSaleControllerTest extends TestCase
public function test_sales_list_uses_purchase_item_snapshots_for_every_status(): void
{
$tenant = $this->createTenant('acme');
Sanctum::actingAs($this->createAdminAppUser($tenant));
$admin = $this->createAdminAppUser($tenant);
Sanctum::actingAs($admin);
$catalogItem = CatalogItem::query()->create([
'tenant_code' => $tenant->codigo,
@@ -155,7 +157,7 @@ class AdminAppSaleControllerTest extends TestCase
'status' => Purchase::STATUS_CREATED,
'total' => '30000.00',
]);
PurchaseItem::query()->create([
$createdPurchaseItem = PurchaseItem::query()->create([
'compra_id' => $createdPurchase->id,
'source_catalog_item_id' => $catalogItem->id,
'nombre' => $catalogItem->nombre,
@@ -163,7 +165,20 @@ class AdminAppSaleControllerTest extends TestCase
'cantidad' => 3,
'precio_unitario' => '10000.00',
'total' => '30000.00',
'refunded_amount' => '1250.00',
]);
$createdRefundTicket = Ticket::query()->create([
'tenant_code' => $tenant->codigo,
'ticket' => 'created-purchase-refund',
'user_id' => $admin->id,
'source_purchase_item_id' => $createdPurchaseItem->id,
'refunded_at' => now(),
]);
TicketRefund::query()->create([
'ticket_id' => $createdRefundTicket->id,
'purchase_item_id' => $createdPurchaseItem->id,
'created_by_user_id' => $admin->id,
'type' => TicketRefund::TYPE_PARTIAL,
'amount' => '1250.00',
]);
$pendingCart = Cart::query()->create([
@@ -196,7 +211,7 @@ class AdminAppSaleControllerTest extends TestCase
'status' => Purchase::STATUS_PAID,
'total' => '20000.00',
]);
PurchaseItem::query()->create([
$paidPurchaseItem = PurchaseItem::query()->create([
'compra_id' => $paidPurchase->id,
'source_catalog_item_id' => $catalogItem->id,
'nombre' => $catalogItem->nombre,
@@ -204,7 +219,20 @@ class AdminAppSaleControllerTest extends TestCase
'cantidad' => 2,
'precio_unitario' => '10000.00',
'total' => '20000.00',
'refunded_amount' => '2500.00',
]);
$paidRefundTicket = Ticket::query()->create([
'tenant_code' => $tenant->codigo,
'ticket' => 'paid-purchase-refund',
'user_id' => $admin->id,
'source_purchase_item_id' => $paidPurchaseItem->id,
'refunded_at' => now(),
]);
TicketRefund::query()->create([
'ticket_id' => $paidRefundTicket->id,
'purchase_item_id' => $paidPurchaseItem->id,
'created_by_user_id' => $admin->id,
'type' => TicketRefund::TYPE_PARTIAL,
'amount' => '2500.00',
]);
$supersededPurchase = Purchase::query()->create([