mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-11-13 07:40:59 +00:00
23b7f6d71c
A rail, bus or ferry ticket with changes arrived as one booking per segment, each with a linked cost for the full fare, so the trip total was the fare times the number of segments. Import: the KItinerary mapper now groups consecutive train segments under one booking reference that connect (same station by name or within 500 m, no return, within a day) into one train booking with stops and metadata.legs, the way connecting flights already were. The connection rule is shared between flights and ground transport, and a stop carries the onward departure for flights as for trains, as the planner form and the MCP tools write it. The three copied ground mappers are folded into one. Within one such booking a fare repeated on every segment is booked once, and fares that differ per segment are added in whole cents. That summing now applies to connecting flights too, which used to keep the first leg's price only. Segments of one order that do not join into one booking (an outward and a return trip, a gap, a change of station named two ways without coordinates, bus and boat tickets, Rail&Fly) are compared across the document: when every priced transport booking of a reference carries the same amount in the same currency, the first to depart keeps it and the others lose it. Amounts that differ stay. This runs on what KItinerary extracted only. AI import: the repeated-total safety net from #2651 now covers train, bus and ferry tickets and any mix of them with flights, still only when the document prints that amount on a total line. MCP and assistant: create_transport says that a ticket with several segments is one booking with endpoints[] and legs[], and the price fields say they hold the whole booking's cost. When a new booking repeats the price an earlier booking with the same confirmation number already carries in the trip's currency (its own currency, or the trip's when it names none), create_transport and create_reservation still save it and return a warning naming the earlier booking. REST is unchanged. Existing duplicated costs are left alone: they cannot be told apart from two tickets that really cost the same, and deleting expenses automatically would change settled balances. They can be removed in the Costs tab. Closes #2895