NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Requests for Laravel

Viacstupňové schvaľovanie

Postupnosť stupňov definujete cez stages(); každý stupeň sa otvorí až po uzavretí predchádzajúceho:

use RoundlyConsulting\Approvals\DataTransferObjects\StageDefinition;
use RoundlyConsulting\Approvals\Enums\ApprovalRule;

$request = Requests::make()
    ->title('Payout')
    ->stages([
        new StageDefinition([$manager],  ApprovalRule::Unanimous, name: 'manager'),
        new StageDefinition([$finance],  ApprovalRule::Unanimous, name: 'finance'),
        new StageDefinition([$director], ApprovalRule::Unanimous, name: 'director'),
    ])
    ->create();

$request->currentStage()?->name; // 'manager'

Schválenia posúvajú žiadosť cez jednotlivé stupne; do stavu Approved prejde po uzavretí posledného:

Requests::approve($request, $manager);
$request->currentStage()?->name;   // 'finance'

Requests::approve($request, $finance);
$request->currentStage()?->name;   // 'director'

Requests::approve($request, $director);
$request->fresh()->status;         // Status::Approved

StageDefinition

Každý stupeň má vlastných schvaľovateľov, pravidlo, kvórum a názov:

new StageDefinition(
    approvers: [$a, $b, $c],          // list<Model>
    rule: ApprovalRule::Quorum,       // defaults to ApprovalRule::Unanimous
    quorum: 2,                        // ?int — for quorum / weighted stages
    name: 'board',                    // ?string — shown by currentStage()->name
);

Zamietnutie v rámci stupňov

Predvolene zamietnutie v ktoromkoľvek stupni zamietne celú žiadosť. Zavolajte rejectOnStageRejection(false), ak chcete zamietnutý stupeň preskočiť a pokračovať:

$request = Requests::make()
    ->rejectOnStageRejection(false)
    ->stages([
        new StageDefinition([$manager], name: 'manager'),
        new StageDefinition([$finance], name: 'finance'),
    ])
    ->create();

// The first stage rejects, but the pipeline carries on to the next stage.
Requests::reject($request, $manager, reason: 'Skip me');

$request->fresh()->status;          // Status::New
$request->currentStage()?->name;    // 'finance'

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.