Some fields are ripped out for ease of reading
example 1 eJ:
Rendered as:
```
Adult 1
£13.00
Government taxes
£13.00
```
New version:
```
charge_breakdown = ImmutableVector([
# adult
BundleChargeBreakdown(
breakdown=ImmutableVector([
PriceWithPriceCode(amount=13.0, currency='EUR', price_code=BreakdownPriceCode.GOVERMENT_TAX)
]),
passenger_id='adt_1'
),
])
```
Old JSON:
``` json
{
"bkid": "XVHSH44I-0",
"booking_type": "flight",
"fare": {
"adult_fare": 28.99,
"adult_fee": 0.0,
"adult_num": 2,
"adult_tax": 13.0,
"adult_tax_breakdown": [
{"currency": "GBP", "original_currency": "GBP", "original_price": 13.0, "price": 13.0, "tax_code": "Government taxes"}
],
"child_fare": 28.99,
"child_fee": 0.0,
"child_num": 1,
"child_tax": 0.0,
"child_tax_breakdown": [
{"currency": "GBP", "original_currency": "GBP", "original_price": 0.0, "price": 0.0, "tax_code": "Government taxes"}
],
"currency": "GBP",
"extra_fees": 0.0,
"infant_fare": 25.0,
"infant_fee": 0.0,
"infant_num": 1,
"infant_tax": 0.0,
"total": 137.97,
},
},
```
Icelandair
Renders:
```
Adult 1 £188.30
Air transportation charges £153.90
Base Amount
£99.00
Ticketing Fee
£13.10
Communication fee/PSF (YRVA)
£41.80
Taxes, fees and charges £34.40
Airport Security Charge NL
£11.50
Passenger Service Charge NL
£16.00
Noise Isolation Charge NL
£6.90
```
``` json
{
"bkid": "XVHSH44I-1",
"booking_type": "flight",
"fare": {
"adult_fare": 99.0,
"adult_fee": 13.1,
"adult_fee_breakdown": [
{"currency": "GBP", "description": "TKT FEE ", "designator": "OB", "nature": "T01", "original_currency": "GBP", "original_price": 13.1, "price": 13.1}
],
"adult_num": 2,
"adult_price_breakdown": [
{"currency": "GBP", "original_currency": "GBP", "original_price": 175.2, "price": 175.2, "price_code": "TOTAL AMOUNT PAX1"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 99.0, "price": 99.0, "price_code": "BASE AMOUNT PAX1"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 76.2, "price": 76.2, "price_code": "TAXES AMOUNT PAX1"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 175.2, "price": 175.2, "price_code": "TOTAL AMOUNT PAX2"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 99.0, "price": 99.0, "price_code": "BASE AMOUNT PAX2"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 76.2, "price": 76.2, "price_code": "TAXES AMOUNT PAX2"}
],
"adult_tax": 76.2,
"adult_tax_breakdown": [
{"currency": "GBP", "original_currency": "GBP", "original_price": 41.8, "price": 41.8, "tax_code": "YRVA"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 11.5, "price": 11.5, "tax_code": "CJSO"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 16.0, "price": 16.0, "tax_code": "RNDP"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 6.9, "price": 6.9, "tax_code": "VVMU"}
],
"child_fare": 79.0,
"child_fee": 13.1,
"child_fee_breakdown": [
{"currency": "GBP", "description": "TKT FEE ", "designator": "OB", "nature": "T01", "original_currency": "GBP", "original_price": 13.1, "price": 13.1}
],
"child_num": 1,
"child_price_breakdown": [
{"currency": "GBP", "original_currency": "GBP", "original_price": 155.2, "price": 155.2, "price_code": "TOTAL AMOUNT PAX3"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 79.0, "price": 79.0, "price_code": "BASE AMOUNT PAX3"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 76.2, "price": 76.2, "price_code": "TAXES AMOUNT PAX3"}
],
"child_tax": 76.2,
"child_tax_breakdown": [
{"currency": "GBP", "original_currency": "GBP", "original_price": 41.8, "price": 41.8, "tax_code": "YRVA"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 11.5, "price": 11.5, "tax_code": "CJSO"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 16.0, "price": 16.0, "tax_code": "RNDP"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 6.9, "price": 6.9, "tax_code": "VVMU"}
],
"currency": "GBP",
"extra_fees": 0.0,
"infant_fare": 10.0,
"infant_fee": 0.0,
"infant_fee_breakdown": [],
"infant_num": 1,
"infant_price_breakdown": [
{"currency": "GBP", "original_currency": "GBP", "original_price": 10.0, "price": 10.0, "price_code": "TOTAL AMOUNT PAX11"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 10.0, "price": 10.0, "price_code": "BASE AMOUNT PAX11"},
{"currency": "GBP", "original_currency": "GBP", "original_price": 0.0, "price": 0.0, "price_code": "TAXES AMOUNT PAX11"}
],
"infant_tax": 0.0,
"infant_tax_breakdown": [],
"total": 554.9,
},
}
```
We would take base level elements only:
Base Amount
£99.00
Ticketing Fee
£13.10
Communication fee/PSF (YRVA)
£41.80
Airport Security Charge NL
£11.50
Passenger Service Charge NL
£16.00
Noise Isolation Charge NL
£6.90
```
charge_breakdown = ImmutableVector([
# adult
BundleChargeBreakdown(
breakdown=ImmutableVector([
PriceWithPriceCode(amount=99.0, currency='GBP', price_code=BreakdownPriceCode.BASE_FARE_AMOUNT),
PriceWithPriceCode(amount=13.10, currency='GBP', price_code=BreakdownPriceCode.TICKETING_FEE),
PriceWithPriceCode(amount=41.80, currency='GBP', price_code=BreakdownPriceCode.YRVA_COMMUNICATION_FEE),
PriceWithPriceCode(amount=11.50, currency='GBP', price_code=BreakdownPriceCode.NETHERLANDS_GOVERMENT_AIRPORT_SECURITY_FEE),
PriceWithPriceCode(amount=16.00, currency='GBP', price_code=BreakdownPriceCode.NETHERLANDS_GOVERMENT_PASSENGER_SERVICE_FEE),
PriceWithPriceCode(amount=6.90, currency='GBP', price_code=BreakdownPriceCode.NETHERLANDS_GOVERMENT_NOISE_ISOLATION_FEE),
]),
passenger_id='adt_1'
),
])
```
And the client would be responsible to categorise each enum on whatever category they think makes sense and translate an enum into different languages