fix(transport) : tableau prix — colonnes séparées, ordre Adresse livraisons puis Adresse sites (ERP-193)
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 2m19s
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 3m36s

This commit is contained in:
2026-06-19 11:10:17 +02:00
parent 865e580b6e
commit 9a42c432f8
2 changed files with 16 additions and 17 deletions
+2 -1
View File
@@ -556,7 +556,8 @@
"price": { "price": {
"group": "Transport", "group": "Transport",
"carrier": "Fournisseurs / Clients", "carrier": "Fournisseurs / Clients",
"aproOrSite": "Adresse sites / livraisons", "aproOrSite": "Adresse sites",
"delivery": "Adresse livraisons",
"forfait": "Forfait (€)", "forfait": "Forfait (€)",
"tonne": "Tonne (€)", "tonne": "Tonne (€)",
"indexation": "Indexation", "indexation": "Indexation",
@@ -147,22 +147,24 @@
<table class="w-full table-fixed border-separate border-spacing-0 overflow-hidden rounded-malio border border-black text-left text-black"> <table class="w-full table-fixed border-separate border-spacing-0 overflow-hidden rounded-malio border border-black text-left text-black">
<!-- Répartition (table-fixed) : « Transport » étroit (libellé <!-- Répartition (table-fixed) : « Transport » étroit (libellé
court Benne / Fond mouvant) ; Fournisseurs/Clients et court Benne / Fond mouvant) ; Fournisseurs/Clients et
Adresse sites/livraisons larges ; Forfait / Tonne / Adresse livraisons larges ; Forfait / Tonne / Indexation
Indexation / État réduits. --> / État réduits. -->
<colgroup> <colgroup>
<col class="w-[120px]" /> <col class="w-[120px]" />
<col class="w-[18%]" /> <col class="w-[20%]" />
<col class="w-[30%]" /> <col class="w-[24%]" />
<col class="w-[10%]" />
<col class="w-[10%]" />
<col class="w-[11%]" />
<col class="w-[11%]" /> <col class="w-[11%]" />
<col class="w-[9%]" />
<col class="w-[9%]" />
<col class="w-[9%]" />
<col class="w-[9%]" />
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
<!-- En-tête centré pour matcher les cellules fusionnées Benne / Fond mouvant. --> <!-- En-tête centré pour matcher les cellules fusionnées Benne / Fond mouvant. -->
<th class="border-b border-r border-black bg-m-surface px-3 py-3 text-center align-middle text-[16px] font-semibold">{{ t('transport.carriers.consultation.price.group') }}</th> <th class="border-b border-r border-black bg-m-surface px-3 py-3 text-center align-middle text-[16px] font-semibold">{{ t('transport.carriers.consultation.price.group') }}</th>
<th class="border-b border-black bg-m-surface px-3 py-3 align-middle text-[16px] font-semibold">{{ t('transport.carriers.consultation.price.carrier') }}</th> <th class="border-b border-black bg-m-surface px-3 py-3 align-middle text-[16px] font-semibold">{{ t('transport.carriers.consultation.price.carrier') }}</th>
<th class="border-b border-black bg-m-surface px-3 py-3 align-middle text-[16px] font-semibold">{{ t('transport.carriers.consultation.price.delivery') }}</th>
<th class="border-b border-black bg-m-surface px-3 py-3 align-middle text-[16px] font-semibold">{{ t('transport.carriers.consultation.price.aproOrSite') }}</th> <th class="border-b border-black bg-m-surface px-3 py-3 align-middle text-[16px] font-semibold">{{ t('transport.carriers.consultation.price.aproOrSite') }}</th>
<th class="border-b border-black bg-m-surface px-3 py-3 align-middle text-[16px] font-semibold">{{ t('transport.carriers.consultation.price.forfait') }}</th> <th class="border-b border-black bg-m-surface px-3 py-3 align-middle text-[16px] font-semibold">{{ t('transport.carriers.consultation.price.forfait') }}</th>
<th class="border-b border-black bg-m-surface px-3 py-3 align-middle text-[16px] font-semibold">{{ t('transport.carriers.consultation.price.tonne') }}</th> <th class="border-b border-black bg-m-surface px-3 py-3 align-middle text-[16px] font-semibold">{{ t('transport.carriers.consultation.price.tonne') }}</th>
@@ -187,12 +189,8 @@
{{ group.label }} {{ group.label }}
</td> </td>
<td class="px-3 py-4 text-[14px]" :class="dataBorder(group, i, gi)">{{ row.party }}</td> <td class="px-3 py-4 text-[14px]" :class="dataBorder(group, i, gi)">{{ row.party }}</td>
<!-- Adresse sites / livraisons : code du site (département) puis <td class="px-3 py-4 text-[14px]" :class="dataBorder(group, i, gi)">{{ row.delivery }}</td>
adresse de livraison/appro, regroupés dans une seule cellule. --> <td class="px-3 py-4 text-[14px]" :class="dataBorder(group, i, gi)">{{ row.apro }}</td>
<td class="px-3 py-4 text-[14px]" :class="dataBorder(group, i, gi)">
<div v-if="row.apro" class="text-[12px] text-m-muted">{{ row.apro }}</div>
<div>{{ row.delivery }}</div>
</td>
<td class="px-3 py-4 text-[14px]" :class="dataBorder(group, i, gi)">{{ row.forfait }}</td> <td class="px-3 py-4 text-[14px]" :class="dataBorder(group, i, gi)">{{ row.forfait }}</td>
<td class="px-3 py-4 text-[14px]" :class="dataBorder(group, i, gi)">{{ row.tonne }}</td> <td class="px-3 py-4 text-[14px]" :class="dataBorder(group, i, gi)">{{ row.tonne }}</td>
<td class="px-3 py-4 text-[14px]" :class="dataBorder(group, i, gi)">{{ row.indexation }}</td> <td class="px-3 py-4 text-[14px]" :class="dataBorder(group, i, gi)">{{ row.indexation }}</td>
@@ -200,7 +198,7 @@
</tr> </tr>
</template> </template>
<tr v-if="!hasPrices"> <tr v-if="!hasPrices">
<td colspan="7" class="px-3 py-4 text-center text-[14px] text-m-muted"> <td colspan="8" class="px-3 py-4 text-center text-[14px] text-m-muted">
{{ t('transport.carriers.consultation.price.empty') }} {{ t('transport.carriers.consultation.price.empty') }}
</td> </td>
</tr> </tr>
@@ -389,8 +387,8 @@ function siteCode(relation: Relation): string {
/** /**
* Construit une ligne d'affichage depuis un prix embarqué (maquette Prix) : * Construit une ligne d'affichage depuis un prix embarqué (maquette Prix) :
* - « Fournisseurs / Clients » = le fournisseur OU le client lié (raison sociale) ; * - « Fournisseurs / Clients » = le fournisseur OU le client lié (raison sociale) ;
* - « Adresse sites / livraisons » = code du site (département) + adresse de * - « Adresse sites » = le CODE du site (département, ex: 86 / 17 / 82) ;
* livraison/appro du client/fournisseur, regroupés dans une seule colonne ; * - « Adresse livraisons » = l'adresse (voie) du client/fournisseur ;
* - le prix tombe dans Forfait € OU Tonne € selon `pricingUnit`. * - le prix tombe dans Forfait € OU Tonne € selon `pricingUnit`.
*/ */
function toPriceRow(price: CarrierPriceRead): PriceRowView { function toPriceRow(price: CarrierPriceRead): PriceRowView {