Odoo - v16 - itgenodo047: Odoo Server Error: keys must be str, int, float, bool or None, not frozendict (200)

Het uitlezen van de account.move en account.move.line tabel resulteert in volgende foutmelding:

itgenodo047:
Odoo Server Error: keys must be str, int, float, bool or None, not frozendict (200)

Hoe kunnen we de oorzaak van deze fout achterhalen?

De foutcode itgenodo047 is voor deze melding gedifferentieerd naar itgenodo096.

Het betreft een bug in Odoo 16, gedocumenteerd als:

Vanaf BETA-release 22.1.274 zal een workaround voor de Odoo 16-bug opgenomen zijn. Deze release zal na verwachting voor 29 augustus in productie genomen zijn op Invantive Cloud.

Helaas komen bugs en fouten in het Odoo-repository vaak naar buiten bij raadpleging via de API’s. Een grove consistentiecontrole kan uitgevoerd worden met bijvoorbeeld:

begin
  for r in
  ( select schema , name
    from   systemtables@datadictionary
    where  provider_name='Odoo'
    order 
    by     schema , name
  )
  loop
    dbms_output.put_line(r.schema  || '.' || r.name);
    begin
      execute immediate 'select 1 c from [' || r.schema || '].[' || r.name || '] limit 100';
    exception 
      when others
      then
        dbms_output.put_line(sqlerrm);
    end;
  end loop;
end;

Indien bijvoorbeeld een fout zit in bank.rec_widget, dan wordt een fout afgedrukt zoals:

itgenodo100
syntax error at or near “0”
LINE 1: SELECT “bank_rec_widget”.id FROM (0) AS “bank_rec_widget”

Aan de schrijfwijze is te zien dat dit een foutmelding is uit de PostgreSQL-database die Odoo gebruikt.

Een ander voorbeeld is digest.digest:

itgenodo099
cannot cast type boolean to date
LINE 6: … WHERE line.company_id = 1 AND line.date > false::DATE AND

Of het vervallen van een view door een upgradefout zoals bij project_task_burndown_chart_report:

itgenodo107
relation “project_task_burndown_chart_report” does not exist
LINE 1: …LECT “project_task_burndown_chart_report”.id FROM "project_t

Een Odoo-consultant of Odoo Support kan ondersteunen bij het corrigeren van het repository.

Op Invantive Cloud is op 25 augustus 2023 een release in productie genomen die om deze bug heen werkt.

Naar verwachting is deze bug opgelost door Odoo als onderdeel van deze commit op 7 augustus:

In een toekomstige versie van Odoo zal de fix verwerkt zijn. De workaround wordt in stand gehouden tot tenminste 3 jaar na de commit aangezien Odoo voor zover bekend geen backports verscheept. Op deze wijze kunnen ook hedendaagse Odoo-versies nog tenminste 3 jaar gebruikt worden in combinatie met Invantive’s UniversalSQL.

Deze vraag is automatisch gesloten na 2 weken 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.