Full disclosure: I am one of the developers of this product.
You need time management/project planning software that lets you filter employee skills and has good reporting on hours worked.
The product my company makes, TimeTell, can handle most of this, but may be a little 'heavy' for you.
(Note: Screenshots may contain some Dutch terms because the demo database is not fully translated)
Requirement: create a DB of my employees
Requirement: qualify my employees based on skills and personal characteristics
There is a list of skills that you can prefill and (multi-)select from in other parts of the program.
Requirement: set up projects (different shifts, different functions in the project)
This is called a project plan in TimeTell; it is linked to a project. What you call functions is what TimeTell calls activities. (You can actually change terminology, so the program would name these functions throughout).
Requirement: link the different slots with the qualifications of my employees
You can allocate your employees to these tasks, matching for skill and available time left (based on e.g. their work schedule or their contract hours).
You can actually assign them to dates/weekdays.
The program also knows predefined shifts, which are generally used in the calendar. I'm not sure whether these shifts can be matched with the allocations.
Requirement: create/upload documents linked to these projects
Projects can have documentation (project plans can't):
Requirement: register the effectively worked hours (online or through an app) of my employees to the project
The first column and the plan at the bottom can contain your allocations, the employee can then just drag these into the time sheet and register hours (and expenses etc).
They do that themselves or you do it.
Requirement: invoice these projects based upon these registered hours
Timetell cannot invoice. You can run (and create) reports that slice through your data in many different ways:
Requirement: needs to come with a log-in tool for my employees to enter their worked hours through a personal page or on an app
Depending on your exact needs, you can install the Windows server applications in your infrastructure or use a hosted solution. The Windows client, iOS and Android apps let the users book hours, check their calendars etc.
There also is an 'only browser' based solution but that would not give you the planning module. The exact configuration has to be worked out based on your requirements.
The software is Windows based and available in English, Dutch and German.