- ú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>
51 lines
1.7 KiB
PHP
51 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Enums;
|
|
|
|
enum PricelistFileStatusEnum: string
|
|
{
|
|
case todo = 'todo';
|
|
case inprogress = 'inprogress';
|
|
case fail = 'fail';
|
|
case done = 'done';
|
|
case waiting_for_approval = 'waiting_for_approval';
|
|
case closed = 'closed';
|
|
/**
|
|
* A Végrehajtás (Execution) lépés futott hibára. Szándékosan külön áll a `fail`-től:
|
|
* a `fail` a validálásig tartó szakasz hibája, ahonnan a fájl újratöltésével (Edit)
|
|
* biztonságosan újraindítható a lánc - itt viszont már történhettek termék- és
|
|
* árírások, ezért csak a Folytatás vagy a Visszavonás akció indítható.
|
|
*/
|
|
case execution_failed = 'execution_failed';
|
|
|
|
public function label(): string
|
|
{
|
|
return match ($this) {
|
|
self::todo => 'elvégzendő',
|
|
self::inprogress => 'folyamatban',
|
|
self::fail => 'hiba',
|
|
self::done => 'elkészült',
|
|
self::waiting_for_approval => 'jóváhagyásra vár',
|
|
self::closed => 'lezárva',
|
|
self::execution_failed => 'végrehajtási hiba',
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Badge szín a felülethez (a PricelistFileLineStatusEnum mintáját követve, hogy a
|
|
* színek egy helyen legyenek, és egy új státusz ne törjön el minden match-et).
|
|
*/
|
|
public function color(): string
|
|
{
|
|
return match ($this) {
|
|
self::todo => 'gray',
|
|
self::inprogress => 'info',
|
|
self::done => 'success',
|
|
self::fail => 'danger',
|
|
self::waiting_for_approval => 'primary',
|
|
self::closed => 'warning',
|
|
self::execution_failed => 'danger',
|
|
};
|
|
}
|
|
}
|