Odoo, data ophalen: verschillende waarden qua omzet

Report in PowerBI laat verschillende waarden zien.

Het gaat om omzet cijfers uit 2023. Deze veranderen, keer op keer en er klopt iedere keer een andere maand niet. Er wordt niet meer geboekt in Odoo in dat jaar, dus dat is uitgesloten.

Issue heb ik al eerder aan de hand gehad, en toen was de oplossing om de cache te resetten. Helaas bied dit nu geen oplossing. Iemand ideeen?

Het is geen bekend probleem en het is ook niet logisch dat er telkens andere uitkomsten uit komen als de data bevroren is.

Is het te herleiden tot een specifieke query?

Nee, geen specifieke query, rechtstreekse connectie met de tabel odoo account invoice.

Wat zijn de mogelijkheden om vast te stellen wat er mis gaat?

Advies om dit probleem te analyseren is het terugbrengen tot een query waarvan de resultaten wisselen. Dit kan gebeuren door iemand met een boekhoudkundige achtergrond.

Een dergelijke query kan behalve een UniversalSQL-query ook een Power Query-query zijn. De bijbehorende UniversalSQL-query is dan te zien in Bridge Online Monitoring.

De verwachting is dat een bug is in hetzij de Power Query-nabewerking of in Odoo. Invantive UniversalSQL past alleen de meegegeven filters toe.

In bijzondere gevallen gaat dat toepassen fout (zie bijvoorbeeld Verkeerd aantal rijen bij gebruik van join en left outer join), maar dergelijke complexe queries met 4 tabellen en een mix van veldfilters en left outer join zal nooit voorkomen op Bridge Online. Op Bridge Online is het alleen een enkele tabel, eventueel met een where-clause.

We hebben onderstaande geprobeerd in de UniversalSQL van invantive online

select sum(amount_total) as amount_total
,      sum(amount_total_signed) as amount_total_signed
from   Odoo.account.move
where  invoice_date is not null
and    year(invoice_date) = 2023 
and    month(invoice_date)=3
limit 10

Echter krijgen we time out foutmelding (meer dan 900 seconden nodig om uit te voeren).

Lukt dit jullie wel?

Afhankelijk van het datavolume zal deze query een foutmelding geven zoals nu opgesteld. Er wordt gefilterd op invoice_date, maar NA toepassing van een SQL-functie. Dit blokkeert het doorgeven van het filter aan Odoo. Zie server-side filtering.

De limit 10 wordt pas toegepast na het bereken van de totalen (“groepfunctie”) en leidt niet tot beperken datavolume. De groepsfunctie zal ook maar 1 rij teruggeven, waardoor de limit 10 feitelijk geen toegevoegde waarde heeft.

Advies is om de query te herschrijven naar zoiets als:

select sum(amount_total) as amount_total
,      sum(amount_total_signed) as amount_total_signed
from   Odoo.account.move
where  invoice_date >= to_date('20230301', 'YYYYMMDD')
and    invoice_date <  to_date('20230401', 'YYYYMMDD')

Deze query kan nog steeds langer duren dan toegestaan op Invantive Cloud, maar zal significant minder data ophalen bij Odoo om tot een uitkomst te komen.

Deze vraag is automatisch gesloten na 1 week inactiviteit. Het laatste gegeven antwoord is gemarkeerd als oplossing.

Gelieve een nieuwe vraag te stellen via een apart topic als het probleem opnieuw optreedt. Gelieve in de nieuwe vraag een link naar dit topic op te nemen door de URL er van in de tekst te plakken.

Dit topic is 7 dagen na het laatste antwoord automatisch gesloten. Nieuwe antwoorden zijn niet meer toegestaan.