Good day!
There was an old bus ticket booking system.
We are developing a new https://infobus24.de/
The system is built on the MERN technology stack (MongoDb, Express.js, React.js, Node.js).
Accordingly, the database is on MongoDb
API for managing the database on Node.js with Express.js
Website on React.js
The website is in three languages: Russian, Ukrainian, and German.
There are several levels of access with their own functionality. Each has its own personal account.
In addition, it is necessary to set up the generation and sending of tickets and tax reporting according to the sample.
At this stage, there are many shortcomings and bugs.
Everything needs to be fixed to make it work and retain all the functionality of the old system (all accesses will be provided).
User types:
1) Super admin - the main consolidator - owner. He can do everything: add consolidators, agents, carriers, enter any information and edit it, grant and close any accesses.
2) Consolidator - those to whom we rent the system, including our own (we also sell tickets).
The consolidator can:
- create carrier firms and agents (those who simply sell tickets), add them to their group (Firmengruppe),
- create routes linked to the carrier,
- create and enter various additional information for creating routes (discounts, luggage, mileage, etc.).
Here, it is also necessary to ensure that duplicate carriers, routes, cities, departure locations, times, etc., are not created again. If they already exist, they should be pulled from the database.
3) Chief - the one who can perform the duties of the consolidator instead of him, appointed by the consolidator, grants him access, can open or close access. He has partially limited access, without the right to delete and add new consolidators, carriers. But allows creating or editing agencies, routes, schedules, transport conditions, prices, luggage, discounts, invoices, and tickets.
4) Dispatcher - limited access, allowed to edit orders, issue invoices and tickets, close the return date, access to creating and editing information on bus departures, access to passenger lists. The dispatcher is appointed by the consolidator and also grants him access.
5) Agency (agent) registers the consolidator and grants him access (this is how it works now).
The agent can change the password himself if he forgets it. But the consolidator always has the right to close the agent's access. The agent has access to booking routes, his work cabinet, information, and booking code (frame) to install on his website.
6) Carrier - only direct access to their passenger lists.
What needs to be done.
------------
1. When searching for a ticket (Flight search):
- does not find all available flights there and back.
For example, from Berlin to Kaliningrad, there may be 2 or more flights departing on the same day but at different times.
Currently, it only shows 2 flights and the departure time is the same (although it is different).
- changes in the found flights are not visible.
For example, the days of the week on which the flight departs have changed.
It only shows the old days of the week that were there before.
- when choosing a return ticket, all return flights should be shown, from which you can choose the one you need and book a ticket.
Currently, only one time is shown, although there are several flights with different departure times.
2. When booking, the agency needs the Off.N. field (column) - office number, this is their personal reservation number.
3. Remove our personal phone number from the ticket. Put the agency's phone number on the left side of the ticket.
4. Add the ability to edit the commission for the agency on the Agencies tab.
5. Enable multiple selection for changes in the flight: disable cities, change prices, etc.? So as not to change individually for each city.
6. On the Flights tab, add the ability to delete a flight
7. Add the ability to change the days of the week in the schedule on which the flight departs, for example, Fri and Sun.
Note that on different days of the week, the bus can depart from different locations in the same city or from different cities.
8. Ability to block ticket booking by city, boarding location in a separate flight.
9. Add to the booking list all passenger information for each booking (for example, a separate button I - with expanding information).
10. Passenger list as a sample with the ability to print (this is not yet completed).
11. Add booking statuses.
1) New status - when a new booking occurs
2) In process status - sending an email Reservierung to the carrier for confirmation.
The carrier confirms the availability by phone or sends an email confirmation.
3) "Invoice confirmed" status - after the carrier confirms the availability - sending an invoice to the agency or client by email. The form of these invoices is different.
The agency sends us a payment receipt or we see in the bank that it has been paid.
4) "Ticket confirmed" status - after payment confirmation, the ticket is sent to the agency or client by email and displayed in the system.
5) Paid status
6) Canceled status - the invoice and ticket are deleted, accordingly, the seat is released for booking and the agency receives an email that the booking has been canceled.
All statuses are selected manually, except for the first "New" one, which is automatically applied to a new booking.
The emails are theoretically set up, you just need to start sending them after all the testing to avoid spamming the mailbox.