Shared Transfers - When the Type selected is “Shared”, then limit the destinations to LeChable Train Station and Verbier. I will make a flag in the Destination called “SharedDestination” to identify those
- Let's talk about what a Shared service is. It is a bus with up to 13 seats. So we need to pick the shuttle according to the flight and also show how many seats left available. I already have the best shuttle time logic solved for, but we need to build a capacity issue. Let's first assume infinite capacity and solve that after
- There is also the pricing of Shared to
|
|
|
|
Pending
|
| |
|
|
|
Non Admin. Non User views - Add to the public HomePage links to the following that are optimised for mobile and desktop views
- Trains
- Flight - hide various columns
- Contacts
- Chalet map
- Shuttle available seats
|
|
|
-
|
Pending
|
| |
|
|
|
Flight Index - Where the train times are shown in the view, hover over to show the 2 preceding and 5 following train departure times.
- When a flight arrival is delayed, show the new expected train time and the previous one in a warning box
|
|
|
-
|
Pending
|
| |
|
|
|
Shared Bus service (shuttle) - Concept: It is a ‘shared’ taxi for a group of people on a specific train (arriving at Le Chable or departing from LeChable) that will drive the customers to their homes in Verbier (which is 10mins up the hill and then around town)
- This bus will have [13] seats. So can take up to 13 in total (split in any combination)
Arrivals - It will meet upto 13 clients (eg 2+2 +3 +5 etc) arriving on the train, at LeChable.
- It takes take them to their chalet(s) - ie does multiple stops in Verbier.
Departures - it picks up up to 13 passengers in Verbier (about 25mins before the train) and drives down the hill to Le Chable
|
|
|
|
Pending
|
| |
|
|
|
New booking - The default trip 1 on a new booking is a trip from GVA to Verbier (on the next [Sunday]).
- However the transfer_macro does not offer the user a list of flights. One has to switch to another destination and back to GVA to trigger
- Switching Destination (eg from Verbier to Sembrancher) should reset the accommodation (or flight)
- Show above the trip the distance and time.
- Price to be calculated on a formula based on drive time and number of passengers
- Flights should be sorted as follows:
- GVA pickup (ie Flight Arrivals): By scheduled flight arrival time
- GVA drop-offs (ie Flight Departures). By scheduled flight departure time
- Note, by "scheduled" I mean the gvach if it exists and the plain scheduled one if not
- Departure times from trips to/from an airport not computed yet. Should reference the flight arrival or departure times with the formulas agreed.
Accommodations - If the booking is an affiliate one, the list of chalets should just be their accommodations (but include all restaurants etc as usual)
- Include a checkbox in the Details dropdown to show ‘All’ chalets
|
|
|
|
Pending
|
| |
|
|
|
Flight scraper - When to refresh using the detailed (flight by flight) code. - T+1.
- All flights. One-off check, mainly to confirm that the scheduled times from Kayak match the times from gva.ch. ie ScheduledDepartureTimeGvach === ScheduledArrivalTimeGvach
- Chron: Run at 8am, on T+1 (ie on Monday 8am, run Tuesday's GVA.CH Overview and Details flight scraper)
- Detailed scrape should run once on T+1 to capture the Scheduled Departure TimeGVACH) , and then on the day according to whether a flight is in need of a scrape
- Then on T+0, the detailed refresh should run on “selected” individual flights, where the criteria for selection is:
- actualDepartureTime is null
- scheduledDepartureTimeGvach is after ‘now’ - 30mins
- Time since last refresh is more than 15mins
Code-share - Code share is no longer a relational field (linked to FlightTrips) as it is a function of the FlightNumber (and multiple FlightTrips can have the same FlightNumber).
- So the determination has to be a lookup on a matching flight number
|
|
|
|
Pending
|
| |
|
|
|
Driver Ipad view - Have a view for Ipads and also Phones to display at airports or trains stations
- Airport_sign.html (ipad and iphone)
- Launhced from their daily manifest view
- Create
- Made contact field (and leaving or waiting)
Client comms - Create a secure webpage for clients, including a security code that times out. A page that shows each booking and each transfer.
- Whatsapp message to clients the night before. Link to summary of transfer (not user protected)
|
|
|
|
Pending
|
| |
|
|
|
- AccommodationStreet
- Add a GPS location for each AccommodationStreet
- Destinations
- For each Destination add an address.
- Show in DriverPad- link to Google maps?
- Export and import function
- Transfers
- Show the extras below the below.
- Use icons to display the outcomes on the main screen pre expansion (ie indicates that an expansion is required)
- Management
- Create download of transfers and bookings
- Revenue reporting
- Flights
- Develop a flight page for each day which shows a list of all transfers on them.
- Shared Transfers
- Meet the train in LeChable
- Ops warnings
- Driver pad
- Button to WhatsApp passengers
- Ask ChatGPT about AirTags and non apple versions
|
|
|
-
|
Pending
|
| |
|
|
|
Codeshares- - The objective is to combine multiple entries for the same flight and return the code-share data in the flight details in the transfer bookings (so a user can search for their flight by any of the flight numbers)
- Check the scrape functionality on the "Operated by" to identify “child” flights (ie the ones that are going to be deleted)
- Establish a view of all flights where there are more than one flight departing at the same time to the same location.
- Build up a list of code-shares - question, the gva.ch notes scrape concatenates the flight numbers. Should we maintain that array or separate into individual code-share identifiers - which will allow us to identify ones to delete?)
- Write a service that identifies the duplicates and delete
|
|
|
-
|
Pending
|
| |
|
|
|
Shuttle from LeChable to Verbier (meeting the train) - Need to establish a schedule of transfers, to match the train times
Prices - Need to establish a pricing structure (for Shared and PTs) - PT : For a given route, establish a base price passenger, based off driving time and if home base(s), and number of passengers.
- Set parameters in SystemSettings:
- Establish rounding to nearest CHF 10
- Shared : Base price for 1-10 passengers. Drop off premium for difficult locations. Ask if they know exact location of chalet (not for hotels)
- Idea: Add drop off/pickup locations around town?
-
- For Shared and Privates separately…. For all routes,
- Apply a multiple of extra 1,2,3….10 passengers - - For Shared and Private
- Determine a multiple for (i) Early (ii) late
- By weekday
- Special days
technically:- - Establish an entity “PricingByPassengerNumber”
- Shared/PT/PT+
- PT multiple
- ST multiple
- Establish an entity “PricingHighVolumeDays”
- Date
- PT multiple
- ST multiple
- Establish an entity “PricingTimeAndDoWFactor”
- Priority
- DoW (including All)
- Time - Before or
- Time - After
|
|
|
|
Pending
|
| |
|
|
|
Driver Pad - Derived from Driver specific list of transfers and date
- Drivers need to be users to be able to login
- Coloured coded background to represent past, tomorrow, today, future
- Meet and Greet screen created from the driverPad
- Send location? Snail Locations
- Should I save the email fragments in the Destination?
Other functionality - Driver wake-up
- WhatsApp and call?
- Shared service
- Train shuttle. Enter flight time and it computes the correct train depature
|
|
|
-
|
Pending
|
| |
|
|
|
“Shared” Private Transfers - Create a view of all Private transfers where the IsShared = true, sorted by Departure Destination and Arrival Destination and a flag if there is a match
- Match is when…
- Date, and To/From destination (city) is the same
- For pickups at the Airport or Train, that all customers on the same flight/train
- For dropoff at the Airport/Train, that the train/flight time are within [10] minutes of each other (where the 10 is controllable in Settings - but hard code for now)
- That the total pax combined is <8
- We should think about if we can automate the matching and we should publish the possible matches on our public website
|
|
|
|
Pending
|
| |
|
|
|
Confirmation pages - How to handle %Source% %Transfer% and %footer% in the email confirms
- Including details of the tel number (country code, is checked)
- Include pin for accommodations that are known in the accommodation entity?
- Generate error-chasing emails where corrections can be made without a login
- Perhaps flag bookings where this has been triggered (with a sunset clause as a security measure or to avoid last minute alterations).
- Eg add/correct phone numbers o Add/correct babies o Add/correct flights •
- Footer should include a fragment describing the baby and booster seats.
|
|
|
-
|
Pending
|
| |
|
|
|
Transfers - Ops warnings:
- Accommodation unknown
- Flight unknown
- Followup flag
|
|
|
|
Pending
|
| |
|
|
|
Pricing Private transfer In the settings create a formula for the derivation of a price from a Entity: HighVolume Days Settings Early start time/premium Late finish time/premium Weekend Shared priceP1, P2, P3, P4, P5, P6, P7, P8
|
|
|
|
Pending
|
| |
|
|
|
Revenue reporting - Include reports by CreatedBy
- Add a field to Transfers for CreatedBy and CreatedOn
- Work out how to handle view the revenue comparison across seasons
- Add totals
- Sort By Affiliate or Private/Shared
- Control start date from an input in Systems Settings
- Control # period from an input in Systems Setting
- Perhaps have a single button that opens multiple versions
- Create a service that count/revenue of all private/shared transfers by Client Name (in Client list)
|
|
|
-
|
Pending
|
| |
|
|
|
Transfers Destination is a City - If the Destintaion IS a city (for either the start or end of the transfer), we need to show the dropdown list of accommodations to know where to pickup or drop off. Include the possibility of "Other"
- Save the accommodation id if picked from the dropdown (ie not ‘other’)
- If Other, save the input in a new field
- We will need 2 fields as we may have new locations in both the pickup and dropoff . Create two new fields
- addressStartOverRide
- addressEndOverRide
- Note: if the Destination is NOT a city (eg airport or train station), then do not show the address field at all (as there is effectively only 1 address)
Destination is a Train Station - If the Destination is a Train station, ask for train time and perhaps the origin/destination location. So the 2 fields are
- trainTime (time)
- trainOriginOrDestination (string)
- Depending on whether Transfer picks up at Martigny or drop offs, we can work out the direction of the journey and check the times. But as far as capturing data- these are the 2 fields
Destination is an Airport (eg GVA) - We need to know the flight details (time, airline, city of origin or end) for both for (1) pickups from at airport (ie where the transfer starts at GVA) and (2) drop-offs at the airport (ie where the transfer ends at GVA)
- However it is the case that only one of the Start or End is an airport - (ignoring the case where we are picking someone up at one airport and driving them to a second airport to take another flight - that never happens)
- So while we need to capture the details of the flight (airline, flight number, destination/origin city, time) if not found in the flight database. we can work out if it is a departure or arrival from whether the Transfer is picking up or dropping off at the airport. So in the Transfer Entity you can use the same fields for Over-rides on the flights
- flightOverRideAirline
- flightOverRideFlightNumber
- flightOverRideFlightTime
- flightOverRideFlightCity
|
|
|
|
Pending
|
| |
|
|
|
Exports/Imports - Improve the csv to an xls
|
|
|
-
|
Pending
|
| |
|
|
|
Resort Contacts - In resort contact entity, add a field called “defaultAccommodation” , This is a relation field, referencing the Accommodation entity. And restricted to the list of the accommodations for the resort contact's relevant affiliate
- Create a view (launched from the Affiliates index - I have created the button created already - see “Host/Chalet” under Assignments) that should create a view a given affiliate, the list of the affiliate's accommodations and the Resort contacts linked to each accommodation.
- This may need to be shuffled around over time., so also show the Resort Contacts that are ‘orphans’ (ie no associated Accommodation)
- Notes an accommodation may have more than one Resort Contact assigned to it
- Make this easily editable - question, can we drag a resort contact onto an accommodation?
- It may be we need to make a time dimension to this, but let's cross that bridge later
|
|
|
-
|
Pending
|
| |
|
|
|
Accommodation: Index - Two extra columns have been added to the Accommodation Index view, that will show the number of transfers and the value of the transfers taken in the “Reporting Period”
- Create a service called “FinancialReportingService” that has two functions that compute these statistics (placeholder for now)
- TransferCountByAccommodation
- TransferValueByAccommodation
- In the Systems Settings entity add a ReportingStartDate and ReportingEndDate fields that is used in this service.
- This service will also do
- TransferCountByUser
- TransferValueByUser
Accommodation: Street map - Sizing of map looks wrong. Take an example with 2 chalets in Rue Barmete….
- There should be a maximum zoom setting
- Filters on Accommodation Index:
- City (i.e. destination)
- By “type” in a given Destination (e.g. hotel, restaurant, shop etc in Verbier)
- Map - by Affiliate (ie show all <<Bramble Ski>> properties
- Link from the Affiliates page. Or from the Resort contacts page
|
|
|
-
|
Pending
|
| |
|
|
|
Is it possible to scrape locations from an Item in FindMy in Apple. So:you can see the location in the app but also on the iCloud site.
|
|
|
-
|
Pending
|
| |
|
|
|
Email received into the mailbox - Ability to import in an email into a Booking.
- Populates the “EmailImport” field with the content
- Popluates Client-email from the sentFrom field of the email
- Will need to save in the website the email login and password and the directory (i.e. "_Taxi Bookings To Be Uploaded”) to look into.
- When the import is done, it moves the email to a new directory (i.e. "_Taxi Bookings Uploaded”)
|
|
|
|
Pending
|
| |
|
|
|
SBB trains - Email a range of times for the day
- Change title a bit
|
|
|
|
Pending
|
| |
|
|
|
Taxi partners There are different levels of Partners - “Independent drivers” who only have 1 car and work for themselves
- Either log into the system and run their business through it or
- Just accept incoming requests
- Larger companies with multiple cars and multiple drivers
- Can either login to the system and run their business from it or
- Just accept trips ad hoc
|
|
|
-
|
Pending
|
| |
|
|
|
Trips to Outsource view - Outsource scrape is incomplete
- Time
- Arrival sddress
- Notes
- Test throughly
- Create “Partner view”
- Future view, Past view (not the default)
- Press button to accept
- Email/WhatsApp to advise change
- Trip count on the day
- Shows all trips, accepted or not and assigns a driver (from their list, greying out but not restricting those already signed up)
|
|
|
|
Pending
|
| |
|
|
|
Employees - Create view of birthdays (email me the day before)
- Add an address database
- Display of the + sign should be inline. Add hovers to the forms
- Ability to send an annonce request at a click of a button
- WhatsApp Yes/No can't be blank
Taxi companies - Email invite button and date sent
- Last logged in timestamp
|
|
|
|
Pending
|
| |
|
|
|
Taxi site - Track the history of the flights to build up a picture as to the on-going schedule
- Email Hermes to see if they will send us the scheduled flights
|
|
|
|
Pending
|
| |
|
|
|
Transfer entity - Type, PassengerCount etc doesn't worl
- Recap: a “transfer” is a trip. A “booking” is a collection of transfers
Taxi Partner Companies. - These are taxis companies that we work with to allocate trip to.
- To Do:
- Build an export function to CSV and an Import function from a CSV (as I have a list of taxi companies in outlook)
- Taxi Compnay's “Show Prices” is not working
- http://localhost:8000/partnerprices/index/John%27s%20taxi%20Compnay
SBB train times - This tries to scrape from www.sbb.ch the train times for the next 4 or 5 days. Routes that are interesting are Martigny to Geneva Airport or LeChable to Martigny or LeChable to Geneva Airport
- The routes are saved in another entity (TrainRoutes) and the times/dates are in the entity SbbTrainTimes
|
|
|
|
Pending
|
| |
|
|
|
Affiliates - Index.html
- For the Resort Contacts (Staff) column, I have a link to the Resort Contacts index file and the count of the number of staff. A popup showing the names of the staff would be nice.
- Same for Chalets - currently shows the number of chalets and a link to the Accommodation list. A popup would be terrific
- Editing
- The email recipients should show the list of employees (ie Resort Contacts) for that affiliate in the dropdown list.
- Recall the Resort Contact is just a reference to a User (ie links a User ID to an Affiliate ID)
- Add a + button to add a new Resort Contact for that Affiliate
- In the index, show the recipient names and email in popup
- Sign
- The sign is the file used as a background on the driver's iPads when collecting the client from the airport. So it will have the hotel/chalet logo etc and on top of it it will show the client name.
- Check that when you save a sign document that the input field no longer shows, there is a default button and it is shown in a thumbnail in the index view
|
|
|
-
|
Pending
|
| |
|
|
|
Private Outsourcing - Grid of prices.
- Show grid of main combination with list of vehicles that the company has
- Show a list of prices by provider (by price, by rank)
|
|
|
-
|
Pending
|
| |
|
|
|
Contacts - All – shouldn’t include the Employees (export already there)
|
|
|
|
Pending
|
| |
|
|
|
Partner Driver view - Export drops the ‘+’ on the phone number?
|
|
|
|
Pending
|
| |
|
|
|
Background/rational - My idea is that various taxi companies and individual taxidrivers all share the same software and I will be able to see across the various competing taxi drivers and re-allocate trips or new trips to whoever is best placed to offer them.
- In truth this is to match drivers who are going back empty with a customer who needs taking
- Do you think this makes sense that there are [20-50] taxidrivers sharing the same database -or should i clone it?
- So I want to offer each taxi driver their ‘own’ website. So they can give their clients that site and book trips there themselves (as an incentive to use the system)
- So let's say there are 50 drivers.
- Can I control 50 x CMS inputs centrally (ie each CMS page would need to be linked to a taxi driver)
- Can I point their own website to my code (eg. www.johnstaxi.com) if they already have a URL?
- So in each Partner company I would include theirwebsite link if they are adopting my system
- A lower standard is that they can just see the trips and can bid on them (and manage them themselves).
|
|
|
-
|
Pending
|
| |
|
|
|
Accommodation - Mark any accommodation that is the default chalet for an affiliate with an asterisk
- Create a transfer list by accommodation. add a button in the accommodation to take you to those transfers by accommodation
- In the Delete All button, don't delete accommodations where they are:
- A default accommodation
- With live/historic transfers associated
-
|
|
|
|
Pending
|
| |
|
|
|
Managing the shuttles For Arrivals. - Look at scheduled flight arrival time
- Find next train to LeChable that is at least 45mins post scheduled flight arrival
For Departures - Look at scheduled flight departure time
- Find the first train to GVA from LeChable that arrives at least 2 hours before the scheduled flight departure time
|
|
|
|
Pending
|
| |
|
|
|
Business model - Intro fee for referrals
- New drivers sign up and need to send bank details, driving license and car details. Email and mobile
- For last min bookings, the driver's location is tracked in their response
- For all bookings the driver's time at location is tracked to proove they were on time and to whatsapp the customer
Button that shows location when accepting last min bookings.
|
|
|
|
Pending
|
| |
|
|
|
Client acceptance - Give a code to clients to accept the transfer.
|
|
|
-
|
Pending
|
| |
|
|
|