feat(transport) : onglet Prix affiche uniquement si transporteur affrete
This commit is contained in:
@@ -148,9 +148,10 @@ describe('carrierConsultationVisibleTabs', () => {
|
||||
expect(carrierConsultationVisibleTabs({ '@id': '/api/carriers/1', id: 1, name: 'LIOT' })).toEqual([])
|
||||
})
|
||||
|
||||
it('affiche addresses/contacts/prices dans l\'ordre quand renseignés', () => {
|
||||
it('affiche addresses/contacts/prices dans l\'ordre quand renseignés (affrété)', () => {
|
||||
const carrier: CarrierDetail = {
|
||||
'@id': '/api/carriers/1', id: 1,
|
||||
isChartered: true,
|
||||
address: { '@id': '/api/carrier_addresses/1', id: 1, city: 'Poitiers' },
|
||||
contacts: [{ '@id': '/api/carrier_contacts/1', id: 1 }],
|
||||
prices: [{ '@id': '/api/carrier_prices/1', id: 1 }],
|
||||
@@ -167,4 +168,25 @@ describe('carrierConsultationVisibleTabs', () => {
|
||||
}
|
||||
expect(carrierConsultationVisibleTabs(carrier)).toEqual(['contacts'])
|
||||
})
|
||||
|
||||
it('affiche l\'onglet Prix dès que le transporteur est affrété, même sans prix', () => {
|
||||
const carrier: CarrierDetail = {
|
||||
'@id': '/api/carriers/1', id: 1,
|
||||
isChartered: true,
|
||||
prices: [],
|
||||
}
|
||||
expect(carrierConsultationVisibleTabs(carrier)).toEqual(['prices'])
|
||||
})
|
||||
|
||||
it('masque l\'onglet Prix d\'un transporteur non affrété même avec des prix historiques', () => {
|
||||
// Retour métier : les prix d'un ancien affrété ne sont jamais supprimés,
|
||||
// mais l'onglet reste masqué tant que le transporteur n'est pas réaffrété.
|
||||
const carrier: CarrierDetail = {
|
||||
'@id': '/api/carriers/1', id: 1,
|
||||
isChartered: false,
|
||||
contacts: [{ '@id': '/api/carrier_contacts/1', id: 1 }],
|
||||
prices: [{ '@id': '/api/carrier_prices/1', id: 1 }],
|
||||
}
|
||||
expect(carrierConsultationVisibleTabs(carrier)).toEqual(['contacts'])
|
||||
})
|
||||
})
|
||||
|
||||
@@ -216,6 +216,11 @@ export function hasAddressData(address: CarrierAddressRead | null | undefined):
|
||||
* onglet de données vide. Le transporteur n'a pas de coquille « à venir ».
|
||||
* Ordre : Adresses · Contacts · Prix. Retourne `[]` tant que le transporteur
|
||||
* n'est pas chargé.
|
||||
*
|
||||
* Exception « Prix » : l'onglet n'est visible QUE si le transporteur est
|
||||
* affrété (`isChartered`), indépendamment de la présence de prix. Un ancien
|
||||
* affrété repassé non affrété conserve ses prix en base (jamais supprimés) mais
|
||||
* l'onglet reste masqué tant qu'il n'est pas réaffrété — décision métier.
|
||||
*/
|
||||
export function carrierConsultationVisibleTabs(
|
||||
carrier: CarrierDetail | null | undefined,
|
||||
@@ -230,7 +235,7 @@ export function carrierConsultationVisibleTabs(
|
||||
if ((carrier.contacts ?? []).length > 0) {
|
||||
visible.push('contacts')
|
||||
}
|
||||
if ((carrier.prices ?? []).length > 0) {
|
||||
if (carrier.isChartered) {
|
||||
visible.push('prices')
|
||||
}
|
||||
return visible
|
||||
|
||||
Reference in New Issue
Block a user