Files
Ferme/templates/reception_voucher.html.twig
Matteo b1c3952d09
Some checks failed
Auto Tag Develop / tag (push) Has been cancelled
[#271]Créer une nouvelle expédition (étape 1) (!12)
| Numéro du ticket | Titre du ticket |
|------------------|-----------------|
|          #271        |         Créer une nouvelle expédition (étape 1)        |

## Description de la PR

## Modification du .env

## Check list

[x ] Pas de régression
TU/TI/TF rédigée
[x ] TU/TI/TF OK
[x ] CHANGELOG modifié

Co-authored-by: kevin <kevin@yuno.malio.fr>
Reviewed-on: #12
Reviewed-by: Autin <tristan@yuno.malio.fr>
Co-authored-by: Matteo <matteo@yuno.malio.fr>
Co-committed-by: Matteo <matteo@yuno.malio.fr>
2026-02-12 07:31:40 +00:00

305 lines
11 KiB
Twig
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<style>
@page { margin: 56px 56px; }
body{
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
margin:0;
color:#000;
}
p{ margin:0; }
em{ font-style: normal; }
.company-block{
font-size:14px;
text-align:left;
line-height:1.3;
}
.box{
border:1px solid #000;
border-radius:10px;
padding:10px;
font-size:16px;
height: 80px;
}
.title{
text-align:center;
font-size: 18pt;
font-weight: 700;
margin: 64px 0 20px 0;
}
.info-table {
margin-bottom: 32px;
width:100%;
border-collapse:collapse;
table-layout:fixed;
}
.info-table th {
font-size: 16px;
}
table{
width:100%;
border-collapse: collapse;
}
th, td{
border:1px solid #333;
padding:4px 6px;
vertical-align: top;
font-size: 12px;
}
th{ text-align:center; font-weight:700; }
.layout, .layout td{ border:none !important; padding:0; }
.bigtable-wrap{
border: 1px solid #000;
height: 360px;
margin-bottom: 10px;
}
.bigtable{
width: 100%;
height: 100%;
border: none;
border-collapse: collapse;
table-layout: fixed;
}
.bigtable th,
.bigtable td{
font-size: 16px;
border: 1px solid #333;
}
.bigtable thead th{ border-top: 0; }
.bigtable tbody tr:last-child td{ border-bottom: 0; }
.bigtable tr th:first-child,
.bigtable tr td:first-child{ border-left: 0; }
.bigtable tr th:last-child,
.bigtable tr td:last-child{ border-right: 0; }
.bigtable thead th{ border-bottom: 0; }
.bigtable tbody tr:first-child td{ border-top: 1px solid #333; }
.bigtable-notes{
font-size: 14px;
line-height: 1.25;
}
.border-bottom {
border-bottom: 1px solid #000;
}
.footer-block{ page-break-inside: avoid; }
.signature-box {
height: 130px;
margin-bottom: 10px;
border: 0.5px solid #000;
padding: 6px 10px;
}
.meta{ font-size: 16px; line-height: 1.35; }
</style>
</head>
<body>
<!-- HEADER -->
<table class="layout" style="width:100%;">
<tr>
<td style="width:70%; vertical-align:top;">
<table class="layout" style="width:100%;">
<tr>
<td class="company-block" style="padding:0; border:none;">
<strong>SCEA LES NAUDS</strong><br>
14 Allée dArgenson<br>
Z.I Nord Secteur Est<br>
86100 CHATELLERAULT<br>
Tel. : 05 49 20 09 10<br>
Email : lpc.contacts@lpc-liot.fr<br>
RCS Châtellerault B 444 262 455
</td>
</tr>
</table>
</td>
<td style="width:30%; text-align:right; vertical-align:top; font-size: 14px;">
<div style="display:inline-block; width:75mm; line-height:1.3;">
<strong>{{ reception.supplier ? reception.supplier.name : '-' }}</strong><br>
<span>{{ reception.address ? reception.address.street : '' }}</span><br>
{% if reception.address and reception.address.street2 %}
<span>{{ reception.address.street2 }}</span><br>
{% endif %}
{% if reception.address %}
<span>{{ reception.address.postalCode }} {{ reception.address.city }}</span><br>
{% endif %}
{% if reception.supplier and reception.supplier.phone %}
<span>{{ reception.supplier.phone }}</span><br>
{% endif %}
{% if reception.supplier and reception.supplier.email %}
<span>{{ reception.supplier.email}}</span><br>
{% endif %}
</div>
</td>
</tr>
</table>
<div class="title">BON DE RECEPTION</div>
<!-- INFOS (code/date/num) -->
<table class="info-table">
<tr>
<th style="width:55%; text-align:center;">Code fournisseur</th>
<th style="width:20%; text-align:center; white-space:nowrap;">Date</th>
<th style="width:25%; text-align:center; white-space:nowrap;">N° réception</th>
</tr>
<tr>
<td style="width:55%; text-align:center;">
{{ reception.supplier ? reception.supplier.name : '-' }}
</td>
<td style="width:20%; text-align:center; white-space:nowrap;">
{{ reception.receptionDate|date('d/m/Y') }}
</td>
<td style="width:25%; text-align:center; white-space:nowrap;">{{ reception.identificationNumber }}</td>
</tr>
</table>
<!-- GRAND TABLEAU -->
<div class="bigtable-wrap">
<table class="bigtable">
<thead>
<tr>
<th style="width:75%; text-align:center;">Désignation</th>
<th style="width:25%; text-align:center; white-space:nowrap;">Qté livrée (kg)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="width:75%;">
<strong>{{ reception.receptionType ? reception.receptionType.label : '-' }}</strong><br><br>
<div class="bigtable-notes">
{% set grossWeight = null %}
{% set tareWeight = null %}
{% for weight in reception.weights|default([]) %}
{% if weight.type == 'gross' %}
{% set grossWeight = weight %}
<p>Poids à plein : {{ grossWeight.weight }}kg (pesée n°{{ grossWeight.dsd }} {{ grossWeight.weighedAt|date('d/m/Y H:i:s') }})</p>
{% elseif weight.type == 'tare' %}
{% set tareWeight = weight %}
<p>Poids à vide : {{ tareWeight.weight }}kg (pesée n°{{ tareWeight.dsd }} {{ tareWeight.weighedAt|date('d/m/Y H:i:s') }})</p>
{% endif %}
{% endfor %}
</div>
</td>
<td style="width:25%; text-align:center; white-space:nowrap;">
{% if grossWeight and tareWeight %}
{{ grossWeight.weight - tareWeight.weight }}
{% else %}
0
{% endif %}
</td>
</tr>
<tr class="border-bottom">
<td>
<strong>
Type de bovins
</strong>
<br><br>
<div class="bigtable-notes">
{% if reception.receptionType and reception.receptionType.code == 'BOVINS' %}
{% if reception.bovinesTypes is not empty %}
{% for entry in reception.bovinesTypes %}
<p>
{{ entry.bovineType ? entry.bovineType.label : '-' }} : {{ entry.quantity ?? 0 }}
</p>
{% endfor %}
{% else %}
<p>-</p>
{% endif %}
{% if reception.bovineDetail %}
<p>Autres : {{ reception.bovineDetail }}</p>
{% endif %}
{% else %}
{% if reception.merchandiseType and reception.merchandiseType.code == 'AUTRES' and reception.merchandiseDetail %}
<p><strong>Précision</strong> : {{ reception.merchandiseDetail }}</p>
{% endif %}
{% if reception.merchandiseType and reception.merchandiseType.code == 'GRANULE' %}
{% set pelletGroups = {} %}
{% for selection in reception.pelletBuildings|default([]) %}
{% set pelletLabel = selection.pelletType.label %}
{% if pelletGroups[pelletLabel] is not defined %}
{% set pelletGroups = pelletGroups|merge({ (pelletLabel): [] }) %}
{% endif %}
{% set pelletGroups = pelletGroups|merge({
(pelletLabel): pelletGroups[pelletLabel]|merge([selection.building.label])
}) %}
{% endfor %}
{% for pelletLabel, buildingLabels in pelletGroups %}
<p><strong>{{ pelletLabel }}</strong> : {{ buildingLabels|join(', ') }}</p>
{% else %}
<p>Aucun dépôt de granulés renseigné.</p>
{% endfor %}
{% else %}
{% set buildingLabels = [] %}
{% for building in reception.buildings|default([]) %}
{% set buildingLabels = buildingLabels|merge([building.label]) %}
{% endfor %}
{% if buildingLabels %}
<p><strong>Ferme</strong> : {{ buildingLabels|join(', ') }}</p>
{% else %}
<p>Aucun bâtiment renseigné.</p>
{% endif %}
{% endif %}
{% endif %}
</div>
</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<!-- BAS : meta à gauche / signatures à droite -->
<table class="layout footer-block">
<tr>
<td style="width:60%; padding-right:8mm; vertical-align:top;">
<div class="meta">
Transporteur : <strong>{{ reception.carrier ? reception.carrier.name : '-' }}</strong><br>
Mode de livraison : <strong>{{ reception.truck ? reception.truck.name : '-' }}</strong><br>
Immatriculation : <strong>{{ reception.licensePlate ?? '-' }}</strong><br><br>
</div>
</td>
<td style="width:40%; vertical-align:top;">
<div class="box signature-box">Signature les Nauds :</div>
<div class="box signature-box">Signature transporteur :</div>
</td>
</tr>
</table>
</body>
</html>