Dolibarr-module voor het uitbesteden van MRP-productie-opdrachten aan externe leveranciers. Volledig geΓ―ntegreerd in de Dolibarr MRP-workflow.
- π§ Stuur productie-opdrachten (MO's) per e-mail naar externe leveranciers β inclusief componentenlijst, hoeveelheden en opleverdatum
- π¦ Keuze per opdracht: component-voorraad al dan niet verlagen bij het uitbesteden
- β
Gereedmeldingen ontvangen via drie kanalen:
- Klikbare link in de leveranciers-e-mail (geen login vereist)
- Inkomende e-mail met patroon
GEREED-{MO_REF}-{TOKEN}β via IMAP of Office365 (Microsoft Graph) - Handmatige gereedmelding in de Dolibarr interface
- π Automatisch sluiten van de MRP Manufacturing Order bij gereedmelding
- π Veilige callbacks via uniek per-opdracht token (192 bits entropie)
- π Audittrail β volledige log van alle leverancierscommunicatie
| MO-kaart met knop | Opdracht aanmaken | Leveranciers-e-mail | Gereedmelding portaal |
|---|---|---|---|
| Knop "Verstuur naar leverancier" | Formulier met voorraadkeuze | Professionele HTML-e-mail | Branded leverancierspagina |
| Component | Versie |
|---|---|
| Dolibarr | 16.0 of hoger (getest op 20.x) |
| PHP | 7.4 of hoger |
| PHP IMAP-extensie | Optioneel β alleen bij provider IMAP |
| PHP cURL-extensie | Optioneel β alleen bij provider Office365 |
| Azure AD app-registratie | Optioneel β alleen bij provider Office365 (zie hieronder) |
| MRP-module | Actief in Dolibarr |
| SMTP | Geconfigureerd in Dolibarr |
cp -r mrpoutsourcing /pad/naar/dolibarr/custom/mysql -u dolibarruser -p dolibarr_db \
< custom/mrpoutsourcing/sql/llx_mrpoutsourcing_order.sqlDolibarr β Instellingen β Modules/Applicaties β zoek "MRP Outsourcing" β Activeren
Ga naar MRP β Uitbestede Opdrachten (tandwiel-icoon) en stel in:
- Afzender e-mailadres (gebruik bij voorkeur dezelfde mailbox die de gereedmeldingen ontvangt)
- Mailprovider voor inkomende gereedmeldingen:
IMAPofOffice365 (Microsoft Graph) - De bijbehorende provider-gegevens (zie hieronder)
- Standaard magazijn voor voorraadmutaties
*/5 * * * * php /pad/naar/dolibarr/custom/mrpoutsourcing/scripts/process_inbound_mail.phpDe gereedmeldingen per e-mail (GEREED-{MO_REF}-{TOKEN}) worden opgehaald door het cron-script.
De provider wordt gekozen met de instelling Mailprovider (MRPOUTSOURCING_MAIL_PROVIDER).
Vereist de PHP IMAP-extensie. Vul in de setup in:
| Veld | Constante | Voorbeeld |
|---|---|---|
| IMAP-server | MRPOUTSOURCING_IMAP_HOST |
mail.mijnbedrijf.nl |
| IMAP-poort | MRPOUTSOURCING_IMAP_PORT |
993 |
| SSL gebruiken | MRPOUTSOURCING_IMAP_SSL |
Ja |
| Gebruikersnaam | MRPOUTSOURCING_IMAP_USER |
productie@mijnbedrijf.nl |
| Wachtwoord | MRPOUTSOURCING_IMAP_PASS |
(versleuteld opgeslagen) |
| Map | MRPOUTSOURCING_IMAP_FOLDER |
INBOX |
β οΈ Office365/Exchange Online ondersteunt geen Basic Authentication meer voor IMAP. Gebruik daar provider Office365 hieronder.
Gebruikt de Microsoft Graph API met de OAuth2 client-credentials flow (app-only, geen gebruikerslogin). Werkt betrouwbaar headless via cron en vereist de PHP cURL-extensie.
1. App-registratie in Azure
-
Azure Portal β Microsoft Entra ID β App-registraties β Nieuwe registratie. Noteer de Application (client) ID en de Directory (tenant) ID.
-
Certificaten & geheimen β Nieuw clientgeheim β kopieer de waarde direct (deze is later niet meer zichtbaar).
-
API-machtigingen β Machtiging toevoegen β Microsoft Graph β Toepassingsmachtigingen (let op: Application, niet Delegated):
Mail.ReadWriteβ berichten lezen en als gelezen markerenMail.Sendβ automatisch antwoord sturen
Klik daarna op "Beheerderstoestemming verlenen" (admin consent).
-
Aanbevolen: beperk de app tot één mailbox met een Application Access Policy in Exchange Online β anders heeft de app technisch toegang tot Γ‘lle mailboxen.
2. Instellen in Dolibarr
| Veld | Constante | Voorbeeld |
|---|---|---|
| Tenant-id of domein | MRPOUTSOURCING_O365_TENANT |
bedrijf.onmicrosoft.com |
| Application (client) ID | MRPOUTSOURCING_O365_CLIENT_ID |
00000000-0000-0000-0000-000000000000 |
| Client secret | MRPOUTSOURCING_O365_CLIENT_SECRET |
(versleuteld opgeslagen) |
| Mailbox (e-mail / UPN) | MRPOUTSOURCING_O365_MAILBOX |
productie@mijnbedrijf.nl |
| Map (well-known naam) | MRPOUTSOURCING_O365_FOLDER |
inbox |
3. Verbinding testen
php /pad/naar/dolibarr/custom/mrpoutsourcing/scripts/process_inbound_mail.phpDe uitvoer toont Provider: office365 en Γ³f No unread messages (verbinding OK),
Γ³f een duidelijke fout (token/permissie).
- Open een MRP-productieorder
- Klik "Verstuur naar leverancier" in de actiebalk
- Selecteer de leverancier (e-mail wordt automatisch ingevuld)
- Kies of component-voorraad wordt verlaagd
- Voeg optioneel een opmerking toe voor de leverancier
- Klik "Aanmaken" β controleer voorvertoning β "Nu Verzenden"
De leverancier ontvangt een HTML-e-mail met:
- Knop "Opdracht ontvangen" β registreert bevestiging
- Knop "Gereedmelding" β sluit de MRP-order automatisch
Of per e-mail met onderwerp:
GEREED-MO2025-0042-a1b2c3d4e5f6789abc0123456789abcd01234567
[draft] β [sent] β [confirmed] β [done]
β β
direct done
| Status | Omschrijving |
|---|---|
draft |
Aangemaakt, nog niet verzonden |
sent |
E-mail verzonden naar leverancier |
confirmed |
Leverancier heeft ontvangst bevestigd |
done |
Gereed gemeld β MRP-order gesloten |
cancelled |
Geannuleerd |
mrpoutsourcing/
βββ core/
β βββ modules/modMrpOutsourcing.class.php # Module-descriptor
βββ class/
β βββ mrpoutsourcingorder.class.php # Business logic
β βββ actions_mrpoutsourcing.class.php # MO-kaart hook (addMoreActionsButtons)
β βββ office365mailclient.class.php # Microsoft Graph (Office365) mailclient
βββ admin/
β βββ mrpoutsourcing_setup.php # Instellingen
βββ ajax/
β βββ get_supplier_email.php # Leverancier e-mail Ajax
βββ public/
β βββ callback.php # Leverancier portaal (geen login)
βββ scripts/
β βββ process_inbound_mail.php # Cron-script (IMAP / Office365)
βββ sql/
β βββ llx_mrpoutsourcing_order.sql # Tabelstructuur
βββ langs/
β βββ nl_NL/mrpoutsourcing.lang
β βββ en_US/mrpoutsourcing.lang
βββ list.php # Overzicht
βββ send_order.php # Aanmaken / versturen
| Recht | Toegang |
|---|---|
mrpoutsourcing.read |
Overzicht en details bekijken |
mrpoutsourcing.write |
Opdrachten aanmaken en verzenden |
mrpoutsourcing.manage |
Gereed melden en annuleren |
- Elke uitbestedingsopdracht heeft een eigen uniek token van 48 hexadecimale tekens (192 bits entropie)
- De leveranciers-callback (
public/callback.php) vereist geen Dolibarr-login - Tokens worden nooit hergebruikt
MIT β zie LICENSE
Ontwikkeld voor Ghee Easy β Dolibarr 20.x customisatie