refactor(ticket): use refunds as amount source
This commit is contained in:
@@ -194,14 +194,13 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
->assertJsonPath('data.id', $ticket->id)
|
||||
->assertJsonPath('data.status', Ticket::STATUS_REFUNDED)
|
||||
->assertJsonPath('data.status_label', 'Reembolso total')
|
||||
->assertJsonPath('data.refunded_amount', '100.00')
|
||||
->assertJsonMissingPath('data.refunded_amount')
|
||||
->assertJsonPath('data.refund.type', TicketRefund::TYPE_TOTAL)
|
||||
->assertJsonPath('data.refund.type_label', 'Reembolso total')
|
||||
->assertJsonPath('data.refund.amount', '100.00')
|
||||
->assertJsonPath('data.refund.created_by', $admin->nombre_apellido);
|
||||
|
||||
$this->assertNotNull($ticket->fresh()->refunded_at);
|
||||
$this->assertSame('100.00', $purchaseItem->fresh()->refunded_amount);
|
||||
$this->assertDatabaseHas('ticket_refunds', [
|
||||
'ticket_id' => $ticket->id,
|
||||
'purchase_item_id' => $purchaseItem->id,
|
||||
@@ -230,11 +229,10 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
->assertOk()
|
||||
->assertJsonPath('data.status', Ticket::STATUS_REFUNDED)
|
||||
->assertJsonPath('data.status_label', 'Reembolso parcial')
|
||||
->assertJsonPath('data.refunded_amount', '25.50')
|
||||
->assertJsonMissingPath('data.refunded_amount')
|
||||
->assertJsonPath('data.refund.type', TicketRefund::TYPE_PARTIAL)
|
||||
->assertJsonPath('data.refund.amount', '25.50');
|
||||
|
||||
$this->assertSame('25.50', $purchaseItem->fresh()->refunded_amount);
|
||||
$this->assertDatabaseHas('ticket_refunds', [
|
||||
'ticket_id' => $ticket->id,
|
||||
'type' => TicketRefund::TYPE_PARTIAL,
|
||||
@@ -270,7 +268,10 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
'refund_type' => TicketRefund::TYPE_TOTAL,
|
||||
])->assertOk()->assertJsonPath('data.status_label', 'Reembolso total');
|
||||
|
||||
$this->assertSame('125.00', $purchaseItem->fresh()->refunded_amount);
|
||||
$this->assertSame(
|
||||
'125.00',
|
||||
number_format((float) $purchaseItem->ticketRefunds()->sum('amount'), 2, '.', ''),
|
||||
);
|
||||
$this->assertDatabaseHas('ticket_refunds', [
|
||||
'ticket_id' => $partialTicket->id,
|
||||
'type' => TicketRefund::TYPE_PARTIAL,
|
||||
@@ -298,7 +299,7 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
->assertJsonValidationErrors('refund_type');
|
||||
|
||||
$this->assertNull($ticket->fresh()->refunded_at);
|
||||
$this->assertSame('0.00', $purchaseItem->fresh()->refunded_amount);
|
||||
$this->assertSame(0, $purchaseItem->ticketRefunds()->count());
|
||||
}
|
||||
|
||||
public function test_it_validates_the_refund_type(): void
|
||||
@@ -369,8 +370,18 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
Sanctum::actingAs($admin);
|
||||
[$ticket, $purchaseItem] = $this->createRefundableTicket($tenant, $admin, '100.00');
|
||||
|
||||
// Simulate 70 already refunded out of 100 on the item (remaining is 30)
|
||||
$purchaseItem->update(['refunded_amount' => '70.00']);
|
||||
// Simulate 70 already refunded out of 100 on the item (remaining is 30).
|
||||
$previousTicket = $this->createTicket($tenant, $admin, [
|
||||
'source_purchase_item_id' => $purchaseItem->id,
|
||||
'refunded_at' => now(),
|
||||
]);
|
||||
TicketRefund::query()->create([
|
||||
'ticket_id' => $previousTicket->id,
|
||||
'purchase_item_id' => $purchaseItem->id,
|
||||
'created_by_user_id' => $admin->id,
|
||||
'type' => TicketRefund::TYPE_PARTIAL,
|
||||
'amount' => '70.00',
|
||||
]);
|
||||
|
||||
$this->getJson("/api/v1/adminapp/tenant/tickets/{$ticket->id}/refund")
|
||||
->assertOk()
|
||||
@@ -599,7 +610,8 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
$this->createTicket($tenant, $admin)->update(['used_at' => now()]);
|
||||
$this->createTicket($tenant, $admin);
|
||||
$this->createTicket($tenant, $admin)->update(['cancelled_at' => now()]);
|
||||
$this->createTicket($tenant, $admin)->update(['refunded_at' => now()]);
|
||||
$refundedTicket = $this->createTicket($tenant, $admin);
|
||||
$refundedTicket->update(['refunded_at' => now()]);
|
||||
$this->createTicket($tenant, $admin)->update(['disabled_at' => now()]);
|
||||
$this->createTicket($otherTenant, $otherUser)->update(['used_at' => now()]);
|
||||
|
||||
@@ -614,7 +626,7 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
'status' => Purchase::STATUS_PAID,
|
||||
'total' => '1000.00',
|
||||
]);
|
||||
PurchaseItem::query()->create([
|
||||
$purchaseItem = PurchaseItem::query()->create([
|
||||
'compra_id' => $purchase->id,
|
||||
'source_catalog_item_id' => $catalogItem->id,
|
||||
'nombre' => 'Entrada',
|
||||
@@ -622,14 +634,21 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
'cantidad' => 1,
|
||||
'precio_unitario' => '1000.00',
|
||||
'total' => '1000.00',
|
||||
'refunded_amount' => '250.00',
|
||||
]);
|
||||
$refundedTicket->update(['source_purchase_item_id' => $purchaseItem->id]);
|
||||
TicketRefund::query()->create([
|
||||
'ticket_id' => $refundedTicket->id,
|
||||
'purchase_item_id' => $purchaseItem->id,
|
||||
'created_by_user_id' => $admin->id,
|
||||
'type' => TicketRefund::TYPE_PARTIAL,
|
||||
'amount' => '250.00',
|
||||
]);
|
||||
$otherPurchase = Purchase::query()->create([
|
||||
'tenant_codigo' => $otherTenant->codigo,
|
||||
'status' => Purchase::STATUS_PAID,
|
||||
'total' => '2000.00',
|
||||
]);
|
||||
PurchaseItem::query()->create([
|
||||
$otherPurchaseItem = PurchaseItem::query()->create([
|
||||
'compra_id' => $otherPurchase->id,
|
||||
'source_catalog_item_id' => $catalogItem->id,
|
||||
'nombre' => 'Otra entrada',
|
||||
@@ -637,7 +656,17 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
'cantidad' => 1,
|
||||
'precio_unitario' => '2000.00',
|
||||
'total' => '2000.00',
|
||||
'refunded_amount' => '2000.00',
|
||||
]);
|
||||
$otherRefundedTicket = $this->createTicket($otherTenant, $otherUser, [
|
||||
'source_purchase_item_id' => $otherPurchaseItem->id,
|
||||
'refunded_at' => now(),
|
||||
]);
|
||||
TicketRefund::query()->create([
|
||||
'ticket_id' => $otherRefundedTicket->id,
|
||||
'purchase_item_id' => $otherPurchaseItem->id,
|
||||
'created_by_user_id' => $otherUser->id,
|
||||
'type' => TicketRefund::TYPE_TOTAL,
|
||||
'amount' => '2000.00',
|
||||
]);
|
||||
|
||||
$this->getJson('/api/v1/adminapp/tenant/tickets?q=does-not-match')
|
||||
@@ -722,7 +751,7 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
->assertJsonPath('data.0.order_number', $purchase->id)
|
||||
->assertJsonPath('data.0.product', 'Remera')
|
||||
->assertJsonPath('data.0.amount', '8000.00')
|
||||
->assertJsonPath('data.0.refunded_amount', '0.00')
|
||||
->assertJsonMissingPath('data.0.refunded_amount')
|
||||
->assertJsonPath('data.0.status', Ticket::STATUS_USED)
|
||||
->assertJsonPath('data.0.scanned_by', $admin->nombre_apellido)
|
||||
->assertJsonPath('data.0.variant_properties.0.code', 'size')
|
||||
|
||||
Reference in New Issue
Block a user