Merge branch 'trunk'
This commit is contained in:
commit
a3c2697c86
7 changed files with 403 additions and 410 deletions
|
|
@ -41,9 +41,10 @@ class InvoiceController extends Controller
|
|||
null,
|
||||
'firstname',
|
||||
'lastname',
|
||||
'ref',
|
||||
);
|
||||
}
|
||||
$searchFields = trans('Nom, Prénom');
|
||||
$searchFields = trans('Nom, Prénom, Référence');
|
||||
|
||||
/** Sort columns with a query */
|
||||
$this->sortQuery($invoiceModels);
|
||||
|
|
|
|||
|
|
@ -49,8 +49,8 @@ class StoreInvoiceRequest extends FormRequest
|
|||
'object' => 'required|string|min:3|max:255',
|
||||
'tasks' => 'required|array|min:1',
|
||||
'tasks.*' => 'required|array',
|
||||
'tasks.*.days' => 'required|numeric|min:0.125',
|
||||
'tasks.*.amount' => 'required|numeric|min:0.125',
|
||||
'tasks.*.days' => 'required|numeric',
|
||||
'tasks.*.amount' => 'required|numeric',
|
||||
'tasks.*.desc' => 'required|string|min:10',
|
||||
'tasks.*.type' => [
|
||||
'required', new Enum(TaskTypeEnum::class)
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ spec:
|
|||
containers:
|
||||
- name: ${CI_PROJECT_PATH_SLUG}-scheduled
|
||||
image: $IMAGE_TAG
|
||||
imagePullPolicy: Always
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- "php"
|
||||
args:
|
||||
|
|
|
|||
|
|
@ -97,7 +97,6 @@
|
|||
v-model="task.amount"
|
||||
type="number"
|
||||
step="0.01"
|
||||
min="0"
|
||||
>
|
||||
<span class="input-group-text">€</span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,357 +1,359 @@
|
|||
<div class="row">
|
||||
{{-- DATES/STATUS --}}
|
||||
@if (request()->routeIs('bo.invoices.edit'))
|
||||
@if($invoiceModel->status !== \App\Enums\Invoices\InvoiceStatusEnum::opened || $invoiceModel->signed_date)
|
||||
<div class="col-12">
|
||||
<div class="alert alert-secondary text-white" role="alert">
|
||||
<strong>
|
||||
@if($invoiceModel->status !== \App\Enums\Invoices\InvoiceStatusEnum::opened)
|
||||
{{ __('Impossible de mettre à jour les informations d\'un devis :status.', ['status' => $invoiceModel->status->label()]) }}
|
||||
@elseif($invoiceModel->signed_date)
|
||||
{{ __('Impossible de mettre à jour les informations d\'un devis déjà signé, seule les sections "État" et "Commentaires" sont pris en compte') }}
|
||||
@endif
|
||||
</strong>
|
||||
@if ($invoiceModel->status !== \App\Enums\Invoices\InvoiceStatusEnum::opened || $invoiceModel->signed_date)
|
||||
<div class="col-12">
|
||||
<div class="alert alert-secondary text-white" role="alert">
|
||||
<strong>
|
||||
@if ($invoiceModel->status !== \App\Enums\Invoices\InvoiceStatusEnum::opened)
|
||||
{{ __('Impossible de mettre à jour les informations d\'un devis :status.', ['status' => $invoiceModel->status->label()]) }}
|
||||
@elseif($invoiceModel->signed_date)
|
||||
{{ __('Impossible de mettre à jour les informations d\'un devis déjà signé, seule les sections "État" et "Commentaires" sont pris en compte') }}
|
||||
@endif
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
{{-- DATES STATUS --}}
|
||||
<div class="col-12 mb-3">
|
||||
<fieldset class="row w-100 h-100 mx-auto border bg-white p-3">
|
||||
<legend class="p-0">{{ __('État') }}</legend>
|
||||
<div class="row w-100 mx-auto p-0">
|
||||
{{-- SENT_CLIENT_DATE --}}
|
||||
<div class="col-12 col-sm-6 col-md-4 pe-md-3 p-0">
|
||||
@if ($invoiceModel->status === \App\Enums\Invoices\InvoiceStatusEnum::opened and !$invoiceModel->sent_client_date)
|
||||
@include('bo.partials.inputs.date', [
|
||||
'id' => 'invoiceSentclientdate',
|
||||
'label' => __('Date d\'envoi du :model', [
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'name' => 'sent_client_date',
|
||||
'defaultValue' => false,
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('Doît être une date réelle et existante.'),
|
||||
])
|
||||
@elseif ($invoiceModel->sent_client_date)
|
||||
<p class="fw-bold m-0 text-center">
|
||||
{{ __('Envoyé le :date', ['date' => \Carbon\Carbon::parse($invoiceModel->sent_client_date)->format('d/m/Y')]) ?? 'xxx' }}
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
{{-- SIGNED_DATE --}}
|
||||
<div class="col-12 col-sm-6 col-md-4 pe-md-3 p-0">
|
||||
@if ($invoiceModel->status === \App\Enums\Invoices\InvoiceStatusEnum::opened and !$invoiceModel->signed_date)
|
||||
@include('bo.partials.inputs.date', [
|
||||
'id' => 'invoiceSigneddate',
|
||||
'label' => __('Date de signature du :model (client)', [
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'name' => 'signed_date',
|
||||
'defaultValue' => false,
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('Doît être une date réelle et existante.'),
|
||||
])
|
||||
@elseif ($invoiceModel->signed_date)
|
||||
<p class="fw-bold m-0 text-center">
|
||||
{{ __('Signé le :date (client)', ['date' => \Carbon\Carbon::parse($invoiceModel->signed_date)->format('d/m/Y') ?? 'xxx']) }}
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
{{-- SENT_ACCOUNTING_DATE --}}
|
||||
<div class="col-12 col-sm-6 col-md-4 pe-md-3 p-0">
|
||||
@if ($invoiceModel->status === \App\Enums\Invoices\InvoiceStatusEnum::opened and !$invoiceModel->sent_accounting_date)
|
||||
@include('bo.partials.inputs.date', [
|
||||
'id' => 'invoiceSentaccountingdate',
|
||||
'label' => __('Date d\'envoi du :model à la comptabilité', [
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'name' => 'sent_accounting_date',
|
||||
'defaultValue' => false,
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('Doît être une date réelle et existante.'),
|
||||
])
|
||||
@elseif ($invoiceModel->sent_accounting_date)
|
||||
<p class="fw-bold m-0 text-center">
|
||||
{{ __('Envoyé à la comptabilité le :date', ['date' => \Carbon\Carbon::parse($invoiceModel->sent_accounting_date)->format('d/m/Y') ?? 'xxx']) }}
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
{{-- STATUS --}}
|
||||
@if ($invoiceModel->status === \App\Enums\Invoices\InvoiceStatusEnum::opened)
|
||||
<div class="col-12 col-md-6 pe-md-3 p-0">
|
||||
@include('bo.partials.inputs.tinyint-enum', [
|
||||
'id' => 'invoiceStatus',
|
||||
'label' => __('crud.minicrud.associated', [
|
||||
'entity' => 'État',
|
||||
]),
|
||||
'name' => 'status',
|
||||
'model' => $invoiceModel ?? null,
|
||||
'required' => true,
|
||||
'associatedModels' => $invoiceStatusArray,
|
||||
'helper' => __('crud.minicrud.select', [
|
||||
'entity' => 'État',
|
||||
]),
|
||||
])
|
||||
@else
|
||||
<div class="col-12 pe-md-3 p-0">
|
||||
<p class="fw-bold text-warning m-0 mt-3 text-center">{{ $invoiceModel->status->label() }}</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
{{-- DATES STATUS --}}
|
||||
<div class="col-12 mb-3">
|
||||
<fieldset class="row border w-100 h-100 bg-white mx-auto p-3">
|
||||
<legend class="p-0">{{ __('État') }}</legend>
|
||||
<div class="row w-100 mx-auto p-0">
|
||||
{{-- SENT_CLIENT_DATE --}}
|
||||
<div class="col-12 col-sm-6 col-md-4 p-0 pe-md-3">
|
||||
@if($invoiceModel->status === \App\Enums\Invoices\InvoiceStatusEnum::opened AND !$invoiceModel->sent_client_date )
|
||||
@include('bo.partials.inputs.date', [
|
||||
'id' => 'invoiceSentclientdate',
|
||||
'label' => __('Date d\'envoi du :model', [
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'name' => 'sent_client_date',
|
||||
'defaultValue' => false,
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('Doît être une date réelle et existante.'),
|
||||
])
|
||||
@elseif ($invoiceModel->sent_client_date)
|
||||
<p class="fw-bold text-center m-0">
|
||||
{{ __('Envoyé le :date', ['date' => \Carbon\Carbon::parse($invoiceModel->sent_client_date)->format('d/m/Y')]) ?? "xxx" }}
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
{{-- SIGNED_DATE --}}
|
||||
<div class="col-12 col-sm-6 col-md-4 p-0 pe-md-3">
|
||||
@if($invoiceModel->status === \App\Enums\Invoices\InvoiceStatusEnum::opened AND !$invoiceModel->signed_date)
|
||||
@include('bo.partials.inputs.date', [
|
||||
'id' => 'invoiceSigneddate',
|
||||
'label' => __('Date de signature du :model (client)', [
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'name' => 'signed_date',
|
||||
'defaultValue' => false,
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('Doît être une date réelle et existante.'),
|
||||
])
|
||||
@elseif ($invoiceModel->signed_date)
|
||||
<p class="fw-bold text-center m-0">
|
||||
{{ __('Signé le :date (client)', ['date' => \Carbon\Carbon::parse($invoiceModel->signed_date)->format('d/m/Y') ?? "xxx"]) }}
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
{{-- SENT_ACCOUNTING_DATE --}}
|
||||
<div class="col-12 col-sm-6 col-md-4 p-0 pe-md-3">
|
||||
@if($invoiceModel->status === \App\Enums\Invoices\InvoiceStatusEnum::opened AND !$invoiceModel->sent_accounting_date)
|
||||
@include('bo.partials.inputs.date', [
|
||||
'id' => 'invoiceSentaccountingdate',
|
||||
'label' => __('Date d\'envoi du :model à la comptabilité', [
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'name' => 'sent_accounting_date',
|
||||
'defaultValue' => false,
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('Doît être une date réelle et existante.'),
|
||||
])
|
||||
@elseif ($invoiceModel->sent_accounting_date)
|
||||
<p class="fw-bold text-center m-0">
|
||||
{{ __('Envoyé à la comptabilité le :date', ['date' => \Carbon\Carbon::parse($invoiceModel->sent_accounting_date)->format('d/m/Y') ?? "xxx"]) }}
|
||||
</p>
|
||||
@endif
|
||||
</div>
|
||||
{{-- STATUS --}}
|
||||
@if ($invoiceModel->status === \App\Enums\Invoices\InvoiceStatusEnum::opened)
|
||||
<div class="col-12 col-md-6 p-0 pe-md-3">
|
||||
@include('bo.partials.inputs.tinyint-enum', [
|
||||
'id' => 'invoiceStatus',
|
||||
'label' => __('crud.minicrud.associated', [
|
||||
'entity' => 'État',
|
||||
]),
|
||||
'name' => 'status',
|
||||
'model' => $invoiceModel ?? null,
|
||||
'required' => true,
|
||||
'associatedModels' => $invoiceStatusArray,
|
||||
'helper' => __('crud.minicrud.select', [
|
||||
'entity' => 'État',
|
||||
]),
|
||||
])
|
||||
@else
|
||||
<div class="col-12 p-0 pe-md-3">
|
||||
<p class="fw-bold text-warning text-center m-0 mt-3">{{ $invoiceModel->status->label() }}</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@endif
|
||||
{{-- USER ASSOCIATED --}}
|
||||
<div class="col-12 mb-3">
|
||||
<fieldset class="row border w-100 h-100 bg-white mx-auto p-3" @if($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend class="p-0">{{ __('Informations sur la personne associée') }}</legend>
|
||||
<div class="row w-100 mx-auto p-0">
|
||||
{{-- FIRSTNAME --}}
|
||||
<div class="col-12 col-md-6 p-0 pe-md-3">
|
||||
@include('bo.partials.inputs.varchar', [
|
||||
'id' => 'invoiceFirstname',
|
||||
'label' => __(':field de la personne auquel le :model est associé', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.firstname')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'hasWordCounter' => true,
|
||||
'name' => 'firstname',
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('validation.between.string', [
|
||||
'attribute' => Str::ucfirst(__('validation.attributes.firstname')),
|
||||
'min' => 3,
|
||||
'max' => 255,
|
||||
]),
|
||||
'placeholder' => __(':field du :model', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.firstname')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
])
|
||||
</div>
|
||||
{{-- LASTNAME --}}
|
||||
<div class="col-12 col-md-6 p-0 ps-md-3">
|
||||
@include('bo.partials.inputs.varchar', [
|
||||
'id' => 'invoiceLastname',
|
||||
'label' => __(':field de la personne auquel le :model est associé', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.lastname')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'hasWordCounter' => true,
|
||||
'name' => 'lastname',
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('validation.between.string', [
|
||||
'attribute' => Str::ucfirst(__('validation.attributes.lastname')),
|
||||
'min' => 3,
|
||||
'max' => 255,
|
||||
]),
|
||||
'placeholder' => __(':field du :model', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.lastname')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
{{-- USER ASSOCIATED --}}
|
||||
<div class="col-12 mb-3">
|
||||
<fieldset class="row w-100 h-100 mx-auto border bg-white p-3" @if ($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend class="p-0">{{ __('Informations sur la personne associée') }}</legend>
|
||||
<div class="row w-100 mx-auto p-0">
|
||||
{{-- FIRSTNAME --}}
|
||||
<div class="col-12 col-md-6 pe-md-3 p-0">
|
||||
@include('bo.partials.inputs.varchar', [
|
||||
'id' => 'invoiceFirstname',
|
||||
'label' => __(':field de la personne auquel le :model est associé', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.firstname')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'hasWordCounter' => true,
|
||||
'name' => 'firstname',
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('validation.between.string', [
|
||||
'attribute' => Str::ucfirst(__('validation.attributes.firstname')),
|
||||
'min' => 3,
|
||||
'max' => 255,
|
||||
]),
|
||||
'placeholder' => __(':field du :model', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.firstname')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
])
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- OBJECT --}}
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<fieldset class="border h-100 bg-white p-3" @if($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend>{{ Str::ucfirst(__('validation.attributes.object')) }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.varchar', [
|
||||
'id' => 'invoiceObject',
|
||||
'label' => __(':field du :model', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.object')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'hasWordCounter' => true,
|
||||
'name' => 'object',
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('validation.between.string', [
|
||||
'attribute' => Str::ucfirst(__('validation.attributes.object')),
|
||||
'min' => 3,
|
||||
'max' => 255,
|
||||
]),
|
||||
'placeholder' => __(':field du :model', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.object')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
])
|
||||
</div>
|
||||
{{-- LASTNAME --}}
|
||||
<div class="col-12 col-md-6 ps-md-3 p-0">
|
||||
@include('bo.partials.inputs.varchar', [
|
||||
'id' => 'invoiceLastname',
|
||||
'label' => __(':field de la personne auquel le :model est associé', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.lastname')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'hasWordCounter' => true,
|
||||
'name' => 'lastname',
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('validation.between.string', [
|
||||
'attribute' => Str::ucfirst(__('validation.attributes.lastname')),
|
||||
'min' => 3,
|
||||
'max' => 255,
|
||||
]),
|
||||
'placeholder' => __(':field du :model', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.lastname')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
])
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- TASKS --}}
|
||||
<div class="col-12 pb-3">
|
||||
<fieldset class="border bg-white h-100 p-3" @if($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend>{{ __('validation.attributes.tasks') }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@php
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- OBJECT --}}
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<fieldset class="h-100 border bg-white p-3" @if ($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend>{{ Str::ucfirst(__('validation.attributes.object')) }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.varchar', [
|
||||
'id' => 'invoiceObject',
|
||||
'label' => __(':field du :model', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.object')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'hasWordCounter' => true,
|
||||
'name' => 'object',
|
||||
'required' => true,
|
||||
'model' => $invoiceModel ?? null,
|
||||
'helper' => __('validation.between.string', [
|
||||
'attribute' => Str::ucfirst(__('validation.attributes.object')),
|
||||
'min' => 3,
|
||||
'max' => 255,
|
||||
]),
|
||||
'placeholder' => __(':field du :model', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.object')),
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- TASKS --}}
|
||||
<div class="col-12 pb-3">
|
||||
<fieldset class="h-100 border bg-white p-3" @if ($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend>{{ __('validation.attributes.tasks') }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@php
|
||||
$data = [
|
||||
'companies' => $companyModels,
|
||||
'packages' => $packageModels,
|
||||
'taskTypeEnums' => collect(\App\Enums\Invoices\TaskTypeEnum::toArray())->values(),
|
||||
'taskRowModel' => $taskRowModel,
|
||||
'tasks' => $invoiceModel->tasks ?? []
|
||||
'tasks' => $invoiceModel->tasks ?? [],
|
||||
];
|
||||
@endphp
|
||||
<div class="invoice-tasks" data-json='@json($data)'></div>
|
||||
</div>
|
||||
@endphp
|
||||
<div class="invoice-tasks" data-json='@json($data)'></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- COMMENT --}}
|
||||
<div class="col-12 pb-3">
|
||||
<fieldset class="border bg-white h-100 p-3">
|
||||
<legend>{{ Str::ucfirst(__('validation.attributes.comment')) }}</legend>
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
@if($invoiceModel->sent_client_date)
|
||||
@include('bo.partials.inputs.text-html', [
|
||||
'id' => 'invoiceComment',
|
||||
'label' => __('Commentaire du :model', [
|
||||
'model' => __('models.classes.invoices')
|
||||
]),
|
||||
'name' => 'comment',
|
||||
'model' => $invoiceModel,
|
||||
'required' => false,
|
||||
'helper' => __('crud.minicrud.text_warning', [
|
||||
'number' => 15
|
||||
]),
|
||||
])
|
||||
@else
|
||||
<textarea class="form-control" disabled>{{ $invoiceModel->comment }}</textarea>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- COMMENT --}}
|
||||
<div class="col-12 pb-3">
|
||||
<fieldset class="h-100 border bg-white p-3">
|
||||
<legend>{{ Str::ucfirst(__('validation.attributes.comment')) }}</legend>
|
||||
<div class="row mb-3">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.text-html', [
|
||||
'id' => 'invoiceComment',
|
||||
'label' => __('Commentaire du :model', [
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'name' => 'comment',
|
||||
'model' => $invoiceModel,
|
||||
'required' => false,
|
||||
'helper' => __('crud.minicrud.text_warning', [
|
||||
'number' => 15,
|
||||
]),
|
||||
])
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- SITE_ID --}}
|
||||
<div class="col-12 col-md-6 pb-3">
|
||||
<fieldset class="border bg-white h-100 p-3" @if($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend>{{ Str::singular(trans('models.classes.sites')) }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.search-belongs-to-dropdown', [
|
||||
'id' => 'invoiceSites',
|
||||
'label' => __(':model associé', [
|
||||
'model' => Str::singular(trans('models.classes.sites')),
|
||||
]),
|
||||
'name' => 'site_id',
|
||||
'targetModel' => 'App\Models\Site',
|
||||
'routeName' => 'invoices.json-paginate',
|
||||
'modelRelated' => $siteModels ?? [],
|
||||
'modelSelected' => $invoiceModel->site ?? [],
|
||||
'readonly' => ($invoiceModel->sent_client_date) ? true : false,
|
||||
'placeholder' => __('Rechercher une :model', [
|
||||
'model' => Str::singular(trans('models.classes.sites')),
|
||||
]),
|
||||
'helper' => __('Sélectionner un :model qui sera associé parmis la liste (un seul et unique :model doit être choisi).', [
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- SITE_ID --}}
|
||||
<div class="col-12 col-md-6 pb-3">
|
||||
<fieldset class="h-100 border bg-white p-3" @if ($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend>{{ Str::singular(trans('models.classes.sites')) }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.search-belongs-to-dropdown', [
|
||||
'id' => 'invoiceSites',
|
||||
'label' => __(':model associé', [
|
||||
'model' => Str::singular(trans('models.classes.sites')),
|
||||
]),
|
||||
'name' => 'site_id',
|
||||
'targetModel' => 'App\Models\Site',
|
||||
'routeName' => 'invoices.json-paginate',
|
||||
'modelRelated' => $siteModels ?? [],
|
||||
'modelSelected' => $invoiceModel->site ?? [],
|
||||
'readonly' => $invoiceModel->sent_client_date ? true : false,
|
||||
'placeholder' => __('Rechercher une :model', [
|
||||
'model' => Str::singular(trans('models.classes.sites')),
|
||||
]),
|
||||
'helper' => __(
|
||||
'Sélectionner un :model qui sera associé parmis la liste (un seul et unique :model doit être choisi).',
|
||||
[
|
||||
'model' => Str::singular(__('models.classes.sites')),
|
||||
]),
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- COMPANY_ID --}}
|
||||
<div class="col-12 col-md-6 pb-3">
|
||||
<fieldset class="border bg-white h-100 p-3" @if($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend>{{ Str::singular(trans('models.classes.companies')) }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.search-belongs-to-dropdown', [
|
||||
'id' => 'invoiceCompany',
|
||||
'label' => __(':model associé', [
|
||||
'model' => Str::singular(trans('models.classes.companies')),
|
||||
]),
|
||||
'name' => 'company_id',
|
||||
'targetModel' => 'App\Models\Company',
|
||||
'routeName' => 'invoices.json-paginate',
|
||||
'modelRelated' => $companyModels ?? [],
|
||||
'modelSelected' => $invoiceModel->company ?? [],
|
||||
'readonly' => ($invoiceModel->sent_client_date) ? true : false,
|
||||
'placeholder' => __('Rechercher une :model', [
|
||||
'model' => Str::singular(trans('models.classes.companies')),
|
||||
]),
|
||||
'helper' => __('Sélectionner une :model qui sera associée parmis la liste (une seule et unique :model doit être choisie).', [
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- COMPANY_ID --}}
|
||||
<div class="col-12 col-md-6 pb-3">
|
||||
<fieldset class="h-100 border bg-white p-3" @if ($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend>{{ Str::singular(trans('models.classes.companies')) }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.search-belongs-to-dropdown', [
|
||||
'id' => 'invoiceCompany',
|
||||
'label' => __(':model associé', [
|
||||
'model' => Str::singular(trans('models.classes.companies')),
|
||||
]),
|
||||
'name' => 'company_id',
|
||||
'targetModel' => 'App\Models\Company',
|
||||
'routeName' => 'invoices.json-paginate',
|
||||
'modelRelated' => $companyModels ?? [],
|
||||
'modelSelected' => $invoiceModel->company ?? [],
|
||||
'readonly' => $invoiceModel->sent_client_date ? true : false,
|
||||
'placeholder' => __('Rechercher une :model', [
|
||||
'model' => Str::singular(trans('models.classes.companies')),
|
||||
]),
|
||||
'helper' => __(
|
||||
'Sélectionner une :model qui sera associée parmis la liste (une seule et unique :model doit être choisie).',
|
||||
[
|
||||
'model' => Str::singular(__('models.classes.companies')),
|
||||
]),
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- INVOICED_TO_ID --}}
|
||||
<div class="col-12 col-md-6 pb-3">
|
||||
<fieldset class="border bg-white h-100 p-3">
|
||||
<legend>{{ __('Entité à facturer') }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.search-belongs-to-dropdown', [
|
||||
'id' => 'invoiceInvoicedtoid',
|
||||
'label' => __(':model associé', ['model' => Str::singular(trans('models.classes.companies'))]),
|
||||
'name' => 'invoiced_to_id',
|
||||
'targetModel' => 'App\Models\Company',
|
||||
'routeName' => 'invoices.json-paginate',
|
||||
'modelRelated' => $companyModels ?? [],
|
||||
'modelSelected' => $invoiceModel->companyInvoiced ?? [],
|
||||
'readonly' => ($invoiceModel->sent_client_date) ? true : false,
|
||||
'placeholder' => __('Rechercher une :model', [
|
||||
'model' => Str::singular(trans('models.classes.companies')),
|
||||
]),
|
||||
'helper' => __('Sélectionner une :model qui sera associée parmis la liste (une seule et unique :model doit être choisie).', [
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- INVOICED_TO_ID --}}
|
||||
<div class="col-12 col-md-6 pb-3">
|
||||
<fieldset class="h-100 border bg-white p-3">
|
||||
<legend>{{ __('Entité à facturer') }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.search-belongs-to-dropdown', [
|
||||
'id' => 'invoiceInvoicedtoid',
|
||||
'label' => __(':model associé', ['model' => Str::singular(trans('models.classes.companies'))]),
|
||||
'name' => 'invoiced_to_id',
|
||||
'targetModel' => 'App\Models\Company',
|
||||
'routeName' => 'invoices.json-paginate',
|
||||
'modelRelated' => $companyModels ?? [],
|
||||
'modelSelected' => $invoiceModel->companyInvoiced ?? [],
|
||||
'readonly' => $invoiceModel->sent_client_date ? true : false,
|
||||
'placeholder' => __('Rechercher une :model', [
|
||||
'model' => Str::singular(trans('models.classes.companies')),
|
||||
]),
|
||||
'helper' => __(
|
||||
'Sélectionner une :model qui sera associée parmis la liste (une seule et unique :model doit être choisie).',
|
||||
[
|
||||
'model' => Str::singular(__('models.classes.companies')),
|
||||
]),
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
'required' => true,
|
||||
])
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- SHOW DAYS --}}
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<fieldset class="border h-100 bg-white p-3" @if($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend>{{ __('Visibilité') }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.tinyint-boolean', [
|
||||
'id' => 'invoiceShowdays',
|
||||
'name' => 'show_days',
|
||||
'label' => __('Afficher les jours sur le :model', [
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'helper' => __('Deux réponses possibles : oui ou non.'),
|
||||
'model' => $invoiceModel ?? null,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- SHOW DAYS --}}
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<fieldset class="h-100 border bg-white p-3" @if ($invoiceModel->sent_client_date) disabled @endif>
|
||||
<legend>{{ __('Visibilité') }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@include('bo.partials.inputs.tinyint-boolean', [
|
||||
'id' => 'invoiceShowdays',
|
||||
'name' => 'show_days',
|
||||
'label' => __('Afficher les jours sur le :model', [
|
||||
'model' => __('models.classes.invoices'),
|
||||
]),
|
||||
'helper' => __('Deux réponses possibles : oui ou non.'),
|
||||
'model' => $invoiceModel ?? null,
|
||||
])
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($invoiceModel->status === \App\Enums\Invoices\InvoiceStatusEnum::opened || $invoiceModel->status === null)
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
@if ($invoiceModel->status === \App\Enums\Invoices\InvoiceStatusEnum::opened || $invoiceModel->status === null)
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
@endif
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="row">
|
||||
{{-- NAME --}}
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<fieldset class="border h-100 bg-white p-3">
|
||||
<fieldset class="h-100 border bg-white p-3">
|
||||
<legend>{{ Str::ucfirst(__('validation.attributes.name')) }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
'model' => Str::singular(__('models.classes.packages')),
|
||||
]),
|
||||
'min' => 3,
|
||||
'max' => 255
|
||||
'max' => 255,
|
||||
]),
|
||||
'placeholder' => __(':field du :model', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.name')),
|
||||
|
|
@ -34,14 +34,14 @@
|
|||
</div>
|
||||
{{-- AMOUNT --}}
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<fieldset class="border h-100 bg-white p-3">
|
||||
<legend>{{ Str::ucfirst(__('validation.attributes.amount.day')) }}</legend>
|
||||
<fieldset class="h-100 border bg-white p-3">
|
||||
<legend>{{ Str::ucfirst(__('validation.attributes.day')) }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12 mb-3">
|
||||
@include('bo.partials.inputs.int-number', [
|
||||
'id' => 'packageAmount',
|
||||
'label' => __(':field du :model', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.amount.day')),
|
||||
'field' => Str::ucfirst(__('validation.attributes.day')),
|
||||
'model' => Str::singular(__('models.classes.packages')),
|
||||
]),
|
||||
'hasWordCounter' => true,
|
||||
|
|
@ -50,12 +50,12 @@
|
|||
'model' => $packageModel ?? null,
|
||||
'helper' => __('validation.min.numeric', [
|
||||
'attribute' => __(':field du :model', [
|
||||
'field' => Str::ucfirst(__('validation.attributes.amount.day')),
|
||||
'field' => Str::ucfirst(__('validation.attributes.day')),
|
||||
'model' => Str::singular(__('models.classes.packages')),
|
||||
]),
|
||||
'min' => 0,
|
||||
]),
|
||||
'step' => 0.01
|
||||
'step' => 0.01,
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -64,15 +64,15 @@
|
|||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
<script nonce="{{ $nonce }}">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click('');
|
||||
})
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -4,63 +4,54 @@
|
|||
@section('description', __('Liste de tous les :model', ['model' => __('models.classes.packages')]))
|
||||
|
||||
@section('content')
|
||||
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center">
|
||||
@include('breadcrumbs.breadcrumb-body')
|
||||
<a href="{{ route('bo.packages.create') }}"
|
||||
class="btn btn-primary float-right"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('crud.helpers.create_model', ['model' => Str::singular(__('models.classes.packages'))]) }}">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
</div>
|
||||
@include('bo.modules.search-bar')
|
||||
<table class="table table-hover">
|
||||
@if (count($packageModels) > 0)
|
||||
<thead>
|
||||
@include('bo.modules.table-col-sorter', [
|
||||
'cols' => [
|
||||
'name' => Str::ucfirst(__('validation.attributes.name')),
|
||||
'amount' => Str::ucfirst(__('validation.attributes.amount.day')),
|
||||
],
|
||||
])
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($packageModels as $packageModel)
|
||||
<tr class="list-item border-bottom">
|
||||
<td class="text-center align-middle">{{ $packageModel->name }}</td>
|
||||
<td class="text-center align-middle">{{ $packageModel->amount }}</td>
|
||||
<td class="text-end align-middle">
|
||||
<form action="{{ route('bo.packages.destroy', $packageModel->id) }}"
|
||||
method="POST"
|
||||
class="btn-group confirmDeleteTS"
|
||||
novalidate>
|
||||
<a class="btn btn-sm btn-primary"
|
||||
href="{{ route('bo.packages.edit', ['package' => $packageModel->id]) }}"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('crud.actions.update') }}">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit"
|
||||
class="btn btn-sm btn-danger"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="{{ __('crud.actions.delete') }}">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
@else
|
||||
<tr>
|
||||
<td class="text-center fw-bold border-0">{{ __('crud.other.no_model_found', ['model' => Str::singular(__('models.classes.packages'))]) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
</table>
|
||||
{!! $packageModels->links() !!}
|
||||
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap">
|
||||
@include('breadcrumbs.breadcrumb-body')
|
||||
<a class="btn btn-primary float-right" data-bs-toggle="tooltip" data-bs-placement="top" href="{{ route('bo.packages.create') }}"
|
||||
title="{{ __('crud.helpers.create_model', ['model' => Str::singular(__('models.classes.packages'))]) }}">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
</div>
|
||||
@include('bo.modules.search-bar')
|
||||
<table class="table-hover table">
|
||||
@if (count($packageModels) > 0)
|
||||
<thead>
|
||||
@include('bo.modules.table-col-sorter', [
|
||||
'cols' => [
|
||||
'name' => Str::ucfirst(__('validation.attributes.name')),
|
||||
'amount' => Str::ucfirst(__('validation.attributes.day')),
|
||||
],
|
||||
])
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($packageModels as $packageModel)
|
||||
<tr class="border-bottom list-item">
|
||||
<td class="text-center align-middle">{{ $packageModel->name }}</td>
|
||||
<td class="text-center align-middle">{{ $packageModel->amount }}</td>
|
||||
<td class="text-end align-middle">
|
||||
<form class="btn-group confirmDeleteTS" action="{{ route('bo.packages.destroy', $packageModel->id) }}"
|
||||
method="POST" novalidate>
|
||||
<a class="btn btn-sm btn-primary" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||
href="{{ route('bo.packages.edit', ['package' => $packageModel->id]) }}"
|
||||
title="{{ __('crud.actions.update') }}">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button class="btn btn-sm btn-danger" data-bs-toggle="tooltip" data-bs-placement="top" type="submit"
|
||||
title="{{ __('crud.actions.delete') }}">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
@else
|
||||
<tr>
|
||||
<td class="fw-bold border-0 text-center">
|
||||
{{ __('crud.other.no_model_found', ['model' => Str::singular(__('models.classes.packages'))]) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
</table>
|
||||
{!! $packageModels->links() !!}
|
||||
@endsection
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue