29 lines
1.9 KiB
PHP
29 lines
1.9 KiB
PHP
<?php
|
|
|
|
use App\Models\PurchaseAward;
|
|
use App\Models\Quotation;
|
|
use App\Services\ProposalOpeningWorkflow;
|
|
use Carbon\CarbonImmutable;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
require_once __DIR__.'/ReceiptFixture.php';
|
|
|
|
/** receiptFixture refuses execution outside the isolated test database. */
|
|
function proposalOpeningFixture(): array
|
|
{
|
|
$f = receiptFixture();
|
|
auth()->guard()->setUser($f['issuer']);
|
|
$award = PurchaseAward::query()->findOrFail($f['order']->purchase_award_id);
|
|
$awardAttributes = $award->getAttributes();
|
|
unset($awardAttributes['id']);
|
|
DB::table('purchase_order_items')->where('purchase_order_id', $f['order']->id)->delete();
|
|
DB::table('purchase_orders')->where('id', $f['order']->id)->delete();
|
|
DB::table('purchase_awards')->where('id', $award->id)->delete();
|
|
$quote = Quotation::query()->where('requisition_id', $f['r']->id)->firstOrFail();
|
|
$workflow = app(ProposalOpeningWorkflow::class);
|
|
$data = ['previous_id' => 0, 'basis_hash' => $workflow->basis($workflow->proposals($f['r'])), 'opened_at' => now()->subMinute()->timezone('Africa/Johannesburg')->format('Y-m-d\TH:i'), 'timezone' => 'Africa/Johannesburg', 'submission_deadline' => null, 'reference' => 'ABERTURA-FICTICIA', 'location' => 'Sala exclusivamente fictícia', 'reason' => 'Registo exclusivamente fictício de teste', 'notes' => 'Observações fictícias', 'quotation_ids' => [$quote->id], 'participants' => [['name' => 'Participante fictício', 'capacity' => 'Secretariado de teste', 'group' => 'participant']], 'annexes' => ['Lista fictícia de presenças'], 'confirmed' => true];
|
|
$serviceData = [...$data, 'opened_at' => CarbonImmutable::createFromFormat('!Y-m-d\TH:i', $data['opened_at'], $data['timezone'])->utc()->format('Y-m-d H:i:s')];
|
|
|
|
return [...$f, 'quote' => $quote, 'data' => $data, 'service_data' => $serviceData, 'award_attributes' => $awardAttributes];
|
|
}
|