Wat Odoo niet kan,
bouwen we erbij
Odoo dekt veel af, maar geen enkel bedrijf past voor honderd procent in de standaard. Waar dat knelt maken we een module — als nette uitbreiding, niet als ingreep in de kern.
Zo bouwen we maatwerk
Drie regels waar we ons aan houden, ook als het sneller kan zonder.
Als losse module
Nooit een wijziging in de Odoo-kern of in een community-module. Alles zit in een eigen module met een eigen naam, die je kunt uitzetten.
Upgradebaar
We volgen de conventies van Odoo zelf, zodat een versie-upgrade geen herbouw wordt. Maatwerk dat upgrades blokkeert is uitgesteld probleem.
Met documentatie en tests
Elke module krijgt een functionele beschrijving en tests. Ook als wij er ooit niet meer zijn, kan iemand anders ermee verder.
Waar we het vaakst voor gevraagd worden
Zes soorten maatwerk die telkens terugkomen. De concrete voorbeelden vullen we in zodra de betrokken klanten akkoord zijn.
Koppeling met een externe partij
Orders, voorraadstanden of statussen die automatisch heen en weer gaan met een leverancier, vervoerder of marktplaats. Met foutafhandeling en een logboek, zodat je ziet wat er misging.
Uit de praktijkBestellingen die als XML-bestand op een SFTP-server binnenkomen automatisch inlezen als verkooporder. En bij een klant in de elektronica: productspecificaties en actuele inkoopprijzen ophalen bij leveranciers als Mouser, DigiKey en Octopart.
Rapportage die Odoo niet standaard heeft
Een overzicht dat precies zo is opgebouwd als jouw directie het wil zien. Als rapport in Odoo zelf, of als export die elke maand automatisch klaarstaat.
Uit de praktijkEen voorraadmutatie-analyse met pdf-rapport, en een prognose-overzicht dat is geankerd op de werkelijke voorraadstand in plaats van op alles wat er nog openstaat — met de achterstand apart zichtbaar.
Een processtap die er niet in zit
Een goedkeuringsronde, een extra status, een controle die moet plaatsvinden voordat iets de deur uit mag. Ingebouwd op de plek waar mensen toch al werken.
Uit de praktijkBij uitgaande leveringen eerst het laaddock kiezen en de chauffeur laten tekenen op het scherm. De levering kan pas door als de verpakking en de vervoerder allebei kloppen.
Webshopfunctionaliteit op maat
Staffelprijzen per klant, besloten delen van de shop, een configurator voor samengestelde producten. Alles wat jouw verkoopproces eigen maakt.
Uit de praktijkIn het klantportaal meerdere openstaande facturen aanvinken en in één transactie betalen, in plaats van elke factuur los. En een boekingswizard met tijdvakken voor afspraken.
Financieel maatwerk
Een afwijkende btw-behandeling, een factuurlay-out die de accountant wél accepteert, of een kostprijsberekening die past bij jouw manier van produceren.
Uit de praktijkAutomatisch het juiste bankrekeningnummer op de factuur zetten op basis van de valuta. En een factuurlay-out waarin vooruitbetalingen in de totalen meelopen en BIC/SWIFT bij het rekeningnummer staat.
Automatisering van handwerk
De handeling die iemand elke ochtend doet en die niemand leuk vindt. Meestal is dat de goedkoopste module die we ooit bouwen.
Uit de praktijkEen nachtelijke taak die concept-verkooporders bevestigt, de bijbehorende facturen boekt en de betrokkenen een melding stuurt. En stuklijsten importeren uit een spreadsheet, inclusief het aanmaken van de producten die nog niet bestaan.
Twee voorbeelden uitgelicht
Wat er gebeurt als je verder kijkt dan “we koppelen een API”. Twee modules die we bouwden, en het stuk dat er lastig aan was.
Inkoopprijzen live uit een componentendatabase
- Probleem
- Inkoopprijzen in Odoo verouderen zodra ze zijn ingevoerd. Bij elektronicaonderdelen verandert de prijs per week, en de staffels verschillen per leverancier.
- Gebouwd
- Een koppeling met de Nexar/Octopart-API die per artikel de actuele leveranciersprijzen ophaalt, inclusief de prijsstaffels, en die wegschrijft op de leveranciersregels van het product.
- Fabrikantnamen matchen nooit exact tussen twee systemen. Daarvoor zit er een aliastabel in: schrijfvarianten van dezelfde fabrikant wijzen naar één record.
- Elke synchronisatie schrijft een logboekregel: wat is bijgewerkt, wat is overgeslagen en waarom. Zonder dat weet je bij 4.000 artikelen niet wat er misging.
- Prijsstaffels kregen een eigen model, zodat een inkoper ze kan zien en corrigeren zonder dat de volgende synchronisatie dat overschrijft.
Ruim 3.700 regels Python, met eigen tests.
Een magazijn dat zichzelf herindeelt
- Probleem
- Hardlopers liggen achterin het magazijn omdat ze daar ooit zijn neergezet. Pickers lopen hun halve dag heen en weer, en niemand komt eraan toe dat opnieuw in te delen.
- Gebouwd
- Een ABC-analyse die producten rangschikt op pickfrequentie en ze vervolgens toewijst aan de goedkoopste locaties — gerekend in loopafstand, per rij, niveau en zone.
- De uitkomst wordt weggeschreven als gewone putaway-regels van Odoo. Daardoor blijft de standaardlogica leidend en zit je niet vast aan onze module: zet hem uit en het magazijn werkt gewoon door.
- De magazijngeometrie (rijen, niveaus, zones) is apart gemodelleerd, zodat één meter op de begane grond anders weegt dan één meter op de vierde stelling.
- De berekening zit onder tests, inclusief de geometrie. Bij zoiets wil je kunnen aantonen dat een herindeling klopt voordat iemand duizenden pallets verzet.
Ruim 3.000 regels Python, met tests op de geometrie en de indeling.
Gebouwd met het platform van Smart AI Bizz
Ons maatwerk begint niet op een leeg vel. Zusterbedrijf Smart AI Bizz ontwikkelt de technologie waarmee we het bouwen, en die zetten we in elk project in.
Een kennisbank met de hele broncode
Ruim 167.000 geïndexeerde fragmenten uit Odoo: codefragmenten, velddefinities en domeinpatronen. Voordat we een veld gebruiken, weten we of het bestaat en wat het doet.
Een generator voor het routinewerk
Modellen, views, security-bestanden en manifest komen er volgens de Odoo-conventies uit. Onze uren gaan naar de logica die er echt toe doet.
En daarna gewoon review
Niets gaat ongezien naar een klantomgeving. Elke module wordt nagelopen, getest en functioneel beschreven — de generator slaat die stap niet over.
Eerst kijken of het écht nodig is
Het goedkoopste maatwerk is het maatwerk dat we niet bouwen. Voordat we iets programmeren kijken we of het met de standaard kan — met een andere inrichting, een geautomatiseerde actie of een instelling die je nog niet kende.
Pas als dat echt niet lukt, schrijven we code. Dat scheelt je geld nu en onderhoud later.
- Eerst standaard — kan het met inrichting, dan doen we dat.
- Dan configuratie — geautomatiseerde acties, serveracties, rapportsjablonen.
- Dan pas code — en dan meteen goed, met tests en documentatie.
- Altijd van jou — de broncode van jouw maatwerk is van jou, geen black box.
Benieuwd wat jouw Odoo-traject kost?
Een kennismaking van een uur kost niets en levert altijd iets op: minstens een eerlijk beeld van wat wel en niet kan. Leent het project zich ervoor, dan krijg je daarna een voorstel met één bedrag eronder.