Hoe wijzig ik massaal de kostprijs van artikelen in Odoo via Excel?

Odoo is een flexibele ERP-oplossing voor bedrijven. Een van de grote voordelen van Odoo zijn de functioneel krachtige API’s; voor werkelijk elk veld en elke tabel is een API beschikbaar voor lezen en schrijven. De API’s zijn ook snel en zijn niet onderworpen aan restricties qua aantal calls per dag.

In dit artikel wordt uitgelegd hoe een Invantive Control for Excel-model gemaakt kan worden om de kostprijs van artikelen massaal te veranderen, direct vanuit Excel door achtereenvolgens:

  • het artikelbestand te downloaden;
  • handmatig in Excel de inkoopprijzen te muteren;
  • de nieuwe prijzen met een klik weer in Odoo te laden.

Artikelbestand download en upload bouwen

Met Invantive Control for Excel kunnen gegevens opgehaald worden uit Odoo (en ook geschreven naar Odoo) met een SQL-statement of via een bedrijfsobject.

Het ophalen via een bedrijfsobject kent een aantal beperkingen, maar biedt voor het bijwerken van een kolom binnen 1 tabel een snelle manier om zowel het ophalen als wijzigen te definieren.

Voor complexe scenario’s, waar meerdere tabellen bij betrokken zijn, kan gebruikt gemaakt worden van formaatvrije SQL en triggers. Dit kan ook gebruikt worden om Odoo te combineren in een query met data uit verschillende cloudplatformen. Dit onderscheid tussen het ophalen via een bedrijfsobject of via SQL is vergelijkbaar met de aanpak van het Invantive SQL-statement synchronize; ook dit kent een eenvoudige modus waarbij de software zelf alle wijzigingen uitzoekt en doorvoert, en een modus waarbij via PSQL-triggers de logica bij een mutatie precies naar wens gebouwd kan worden.

Doorloop de volgende stappen na installatie van Invantive Control for Excel met Odoo, bijvoorbeeld versie 22.1.148 met Odoo, om de download te bouwen:

Aanmelden

Stappenplan

Ontwerpmodus

Stappenplan
  • Maak een nieuw en leeg Excel-werkboek, bijvoorbeeld met CtrlN.
  • Zet het Excel-werkboek om naar een Invantive Control-model door in het lint “Modelleur” dit in te schakelen:
    image
  • De knop “Ontwerpmodus” komt beschikbaar.
  • Kies de “Bewerk”-knop, direct rechts van “Ontwerpmodus”.

Uitschakelen Caching

Stappenplan
  • Laat Invantive Control de mutatiemogelijkheden beheersen door “Sta wijzigingen buiten blokken toe” in het tabblad “Algemeen” uit te vinken en zo gebruikersfouten te voorkomen.
  • Schakel het gebruik van HTTP caches uit zodat er altijd met actuele data gewerkt wordt. Vul hiervoor bij de “Actie voor Download”-trigger op modelniveau de volgende tekst in:
begin
  set use-http-disk-cache false;
  set use-http-memory-cache false;
end;

Blok met artikelen

Stappenplan
  • Voeg een blok toe met de code “pdt” onder “Blokken”. Dit zal de artikelen gaan bevatten:
  • Vul bij code een willekeurige code in die uniek is voor alle blokken, bijvoorbeeld “pdt” als afkorting voor “products”.
  • Vul eventueel bij Label Enkelvoud en Label Meervoud de labels in voor de tabel. Deze labels worden getoond gedurende de synchronisatie.
  • Vul eventueel de namen van de Excel gegevensbereiken in die door Invantive Control bijgehouden moeten worden voor, respectievelijk, uitsluitend de dataregels en de data plus kop. De meestgebruikte standaard is om daarvoor de code plus, respectievelijk, “_data” en “_border” te gebruiken.
  • Vink “Bijwerken” aan zodat er ook data teruggescheven kan worden. Laat “Invoegen” en “Verwijderen” uit om gebruikersfouten te vermijden.
  • Ga naar het tabblad “Feiten”:
  • Kies voor “Bedrijfsobject”.
  • Kies Odoo.product.template uit de lijst van beschikbare Odoo-tabellen.
  • Kies als primaire sleutel de kolom id.
  • Uitgaande van leidend maken van de kostprijsmutatie kan bij “Transactiekolom” ook id ingevuld worden.
  • Vul bij "Selecteren’ de gewenste kolommen in om op te halen, gescheiden door komma’s: id, standard_price, name. Eventueel kunnen ook SQL-expressies toegevoegd worden.
  • Sorteer de artikelen op id door bij “Sorteervolgorde Clausule” in te vullen: id. Een reeks van kolomnamen kan ook.
  • Ga naar het tabblad “Velden”.
  • Kies de knop rechtsonder “Verversen”. Hierdoor wordt de lijst van velden onder het blok “Producten (pdt)” bijgewerkt:
  • Kies de knop linksboven “Opslaan” zodat ook de velden onder het blok “Producten” bijgewerkt worden.
  • Open het blok “Producten” in de boomstructuur links.
  • Vink bij de velden “id” en “name” de eigenschap “Alleen Lezen” aan. Ze kunnen dan niet gewijzigd worden in Excel zodra de ontwerpmodus wordt verlaten
  • Vink bij het veld “standard_price” de eigenschap “Synchroniseer Terug” aan en laat de eigenschap “Alleen Lezen” uit. Een gebruiker kan dan de prijzen aanpassen in Excel en Invantive Control onthoudt de mutaties:
  • Selecteer het blok “Producten” in de boomstructuur.
  • De tabbladen van het blok verschijnen weer.
  • Wissel naar het tabblad “Presentatie”.
  • Stel de startpositie van de download in door bij rij “10” in te vullen:
  • Hou bovendien ruimte vrij voor de tabelkop door bij “Bovenkant” de waarde in 1 te veranderen.
  • Eventueel kan nog een benoemd Excel-gegevensbereik opgegeven kunnen worden om de opmaak in te stellen, bijvoorbeeld uit het verborgen werkblad “Layout” dat zichtbaar is in ontwerpmodus.
  • Kies “Opslaan”.
  • Sluit de Modelbewerker af via het kruisje rechtsboven.
  • Verlaat “Ontwerpmodus” door de gelijknamige knop te selecteren:
    image

Artikelen downloaden uit Odoo

Stappenplan
  • Ga naar het lint “Invantive Control”.
  • Kies de knop “Sync”:
    image
  • Als de sync-knop grijs is, controleer dan dat de ontwerpmodus niet actief is in het lint “Modelleur”.
  • De artikelen worden gedownload naar Excel:
  • De download is klaar als de melding verschijnt: “Synchronisatie succesvol afgerond.”
    image
  • Kies “OK”.
  • Voeg nog (indien nodig) eenmalig kolomkoppen toe boven de tabel door eerst de ontwerpmodus te activeren en daarna rij 10 te wijzigen zoals in afbeelding:
    image
  • Verlaat weer de ontwerpmodus.

Wijzig kostprijs artikelen

Stappenplan
  • Gebruik de bewerkfuncties van Excel, de muis en de cursor om de prijzen bij te stellen, bijvoorbeeld:
  • Tijdens het bewerken zal bij “Openstaande Wijziging” in het link de teller oplopen (in dit voorbeeld zijn er twee gewijzigde artikelen).
  • Kies de knop “Sync”:
    image
  • De nieuwe inkoopprijzen worden in Odoo geplaatst en de nieuwe situatie wordt gedownload:
  • De download is klaar als de melding verschijnt:
    image
  • Kies “OK”.

Het gemaakte werkblad kan door de gebruikers gebruikt worden; zij dienen alleen de laatste groep instructies te volgen, voorafgegeaan door het bedienen van de “Sync”-knop.

Waarom staat er een rood hoekje in de eerste kolom?

In de meest linkse kolom is een rood hoekje zichtbaar voor elke databaserij. Dit rode hoekje verwijst naar een Excel-notitie op de Excel-cel. De notitie komt te voorschijn als de muis boven het rode hoekje zweeft. In de Excel-notitie zijn onder andere de ID en transactiekolom vastgelegd. Deze worden door Invantive Control gebruikt voor de juiste werking: Invantive Control kan hiermee onder andere de relatie leggen tussen een databaserij en de bijbehorende Excel-rij, zodat mutaties onder de juiste databaserij geregistreerd worden.

Hoe onthoudt Invantive Control de wijzigingen?

De wijzigingen die de gebruiker maakt worden opgeslagen in model, of zoals het technisch heet: het “repository”. Het repository is zichtbaar in de modelbewerker, inclusief de wijzigingen op gedownloade rijen. In het onderstaande voorbeeld is af te lezen dat voor de primaire sleutelwaarde “4” (in dit model is het een getal dat hoort bij het veld id van het blok pdt) de waarde van standard_price gewijzigd is door de gebruiker van “1” in “2”.

Specifiek de wijzigingen zijn ook op te vragen door op het winkelwagentje te klikken:

Het repository wordt opgeslagen in een database binnen het Excel-werkboek. Als het werkboek opgeslagen wordt, dan wordt het repository ook opgeslagen. Als het bestand met het Excel-werkboek door een andere gebruiker geopend wordt, dan zal het repository ook geopend worden.

Hoe dwing ik gegevensvalidatie af?

Binnen Invantive Control kunnen via triggers controles toegevoegd worden met stukjes PSQL-code en via de standaardfaciliteiten in Excel. Bij Odoo is het echter aanbevelenswaardig om in de meeste gevallen de gegevensvalidatie centraal in Odoo in te regelen via Odoo Studio. Alleen als de validaties specifiek en uitsluitend betrekking hebben op het model en niet voor Odoo in het algemeen gelden is het advies dit in het model door te voeren.

Hetzelfde geldt ook voor audit trail; alhoewel Invantive Control uitgebreide voorzieningen heeft voor audit trail is het specifiek op Odoo beter om de audit trail centraal in Odoo in te regelen om zo te komen tot een dekkende audit trail.