d2d.emegrendeles.hu/app/Models/PricelistFileLine.php
E98Developer 5bf2f83092 ADD EV3-357 Árlista feldolgozás phase5/1 PricelistExecution feature flag + migrációk
- új PricelistExecution Pennant flag (enabled + roles=[developer]) a jóváhagyás,
  végrehajtás és visszavonás rollout-kapujaként
- új execution_failed fájlstátusz: a validálásig tartó szakasz fail státuszától
  szándékosan elkülönítve, mert itt már történhettek termék- és árírások
- PricelistFileStatusEnum::color(): a badge-színek eddig két helyen, kimerítő
  match-ben voltak duplikálva, amit az új case eltört volna
- pricelist_file_lines.applied_snapshot + executed_at a chunkolt, idempotens
  végrehajtáshoz és a kompenzáló visszaállításhoz

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 14:19:28 +02:00

54 lines
1.3 KiB
PHP

<?php
namespace App\Models;
use App\Enums\PricelistFileLineStatusEnum;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class PricelistFileLine extends BaseAuditable
{
protected $casts = [
'status' => PricelistFileLineStatusEnum::class,
'row_number' => 'integer',
'product_id' => 'integer',
'product_group_id' => 'integer',
'producer_id' => 'integer',
'payload' => 'array',
'validation_messages' => 'array',
'diff' => 'array',
'applied_snapshot' => 'array',
'executed_at' => 'datetime',
];
public function pricelistFile(): BelongsTo
{
return $this->belongsTo(PricelistFile::class);
}
public function product(): BelongsTo
{
return $this->belongsTo(Product::class);
}
public function productGroup(): BelongsTo
{
return $this->belongsTo(ProductGroup::class);
}
public function producer(): BelongsTo
{
return $this->belongsTo(Producer::class);
}
/**
* Hibaüzenet hozzáadása a sorhoz
*/
public function addValidationError(string $field, string $message): void
{
$messages = $this->validation_messages ?? [];
$messages[$field] = $message;
$this->validation_messages = $messages;
$this->status = PricelistFileLineStatusEnum::error;
}
}