feat(variants): implement inventory cloning for historical stock updates and adjust related tests

This commit is contained in:
2026-09-15 15:15:18 -03:00
parent ff43ba32f3
commit dcf4383fbf
5 changed files with 110 additions and 12 deletions

View File

@@ -7,6 +7,7 @@ use App\Domains\Authorization\Enums\RoleCode;
use App\Domains\Catalog\Models\Attribute;
use App\Domains\Catalog\Models\CatalogItem;
use App\Domains\Catalog\Models\Category;
use App\Domains\Catalog\Models\Inventory;
use App\Domains\Catalog\Models\Variant;
use App\Domains\Event\Services\EventService;
use App\Domains\Menu\Models\Menu;
@@ -224,16 +225,33 @@ class FoodControllerTest extends TestCase
$historicalVariantId = $created->json('data.variants.0.id');
$activeVariantId = $created->json('data.variants.1.id');
app(EventService::class)->suspendDateForTenant($tenant, $historicalDate, $admin);
app(EventService::class)->rescheduleDateForTenant(
$tenant,
$historicalDate,
['date' => $activeDate->date->format('Y-m-d')],
$admin,
);
$historicalVariant = Variant::query()->findOrFail($historicalVariantId);
$replacementVariant = $historicalVariant->replacement()->firstOrFail();
$replacementInventoryId = $replacementVariant->inventory_id;
$this->patchJson('/api/v1/adminapp/tenant/foods/history-stock', [
// Simula variantes creadas antes de que la reprogramación separara sus inventarios.
$replacementVariant->update(['inventory_id' => $historicalVariant->inventory_id]);
Inventory::query()->whereKey($replacementInventoryId)->delete();
$updated = $this->patchJson('/api/v1/adminapp/tenant/foods/history-stock', [
'variants' => [['id' => $historicalVariantId, 'stock' => 45]],
])
->assertOk()
->assertJsonPath('data.history.0.variants.0.id', $historicalVariantId)
->assertJsonPath('data.history.0.variants.0.stock', 45);
$replacement = collect($updated->json('data.variants'))
->firstWhere('schedule', 'Almuerzo');
$this->assertSame(100, $replacement['stock']);
$historicalInventoryId = Variant::query()->findOrFail($historicalVariantId)->inventory_id;
$currentInventoryId = $replacementVariant->fresh()->inventory_id;
$this->assertNotSame($historicalInventoryId, $currentInventoryId);
$this->assertDatabaseHas('inventories', [
'id' => $historicalInventoryId,
'real_stock' => 45,