Odoo modul l10n_ba_cbbh v1.3.3 — wizard za preuzimanje, ISO format datuma, ispravna effective-from logika


Verzija 1.3.3 modula l10n_ba_cbbh (v1.0.0v1.1.0 → v1.3.3) prerađuje korisnički tok preuzimanja kursa i ispravlja dvije skrivene greške koje su rezultovale pogrešnim podacima u kursnoj listi.

Šta je novo

1. Datum preuzimanja je sada wizard, ne stalni parametar

U v1.1.0 polje Datum preuzimanja kursa (cbbh_fetch_date na res.company) je trebalo da omogući retroaktivno punjenje. U praksi je bilo problematično:

  • Operator postavi datum 10.05.2026 za neki backfill → zaboravi resetovati polje
  • Sutra klikne Osvježi sada očekujući današnji kurs → modul i dalje preuzima 10.05.2026
  • “Posljednje osvježavanje” pokazuje stari datum, a operator misli da je sve u redu

Polje je uklonjeno iz baze (res.company.cbbh_fetch_date ne postoji više). Klik na Osvježi sada sada otvara modalni wizard:

Wizard za preuzimanje CBBH kursa

Wizard ima jedno polje Datum kursa sa predefinisanim današnjim datumom. Operator potvrdi (običajni slučaj — današnji kurs) ili izabere drugi datum (backfill) i klikne Preuzmi kurs. Nakon preuzimanja, otvara se kursna lista filtrirana na datum kursa kako bi operator vidio šta je upravo upisano.

2. ISO format datuma u pozivu CBBH API-ja

Tokom testiranja v1.3.0 otkrivena je tiha greška u CBBH JSON endpointu:

GET https://cbbh.ba/CurrencyExchange/GetJson?date=07/05/2026
→ vraća: najnoviju kursnu listu (Number=91), ignorišući datum!

GET https://cbbh.ba/CurrencyExchange/GetJson?date=2026-05-07
→ vraća: ispravnu istorijsku kursnu listu (Number=88), USD=1.662838

Drugim riječima, CBBH JSON endpoint ignoriše datum ako se prosijedi u formatu DD/MM/YYYY ili DD.MM.YYYY i vraća uvijek najnoviju objavljenu listu. Samo YYYY-MM-DD (ISO 8601) format aktivira istorijsku pretragu.

U v1.0.0 i v1.1.0 modul je koristio DD/MM/YYYY (uobičajeni bosanski format) — što je značilo da svako “backfill” preuzimanje za datum unutar zadnjih nekoliko dana silently upisuje današnji kurs pod traženi datum. Tako se moglo desiti da se u kursnoj listi za 07.05, 08.05 i 11.05 vide tri identična reda — što je vidljivo bilo nemoguće (kurs se mijenja iz dana u dan).

U v1.3.3 modul šalje datum u ISO formatu i CBBH vraća pravi istorijski kurs.

3. Kurs se upisuje pod stvarnim “effective from” datumom

CBBH ne objavljuje kurs svaki dan — objavi se kada postoji promjena, sa datumom od kojeg važi. Modul sada koristi taj datum (payload.Date iz JSON odgovora) kao ime reda u res.currency.rate, a ne datum koji je operator unio u wizard.

Praktičan primjer — refresh na ponedjeljak 11.05.2026:

publikacija #važi odEURUSD
882026-05-071.9558301.662838
892026-05-081.955830(objavljen)
902026-05-091.9558301.662979 ← važi i 10.05. i 11.05.
912026-05-121.9558301.662414 (objavljen 11.05, važi od 12.05.)

Ako operator klikne Preuzmi kurs sa datumom 11.05.2026:

  • API vrati Date=2026-05-09 (publikacija 90 je još uvijek na snazi)
  • Modul upiše red u res.currency.rate sa imenom 2026-05-09
  • Wizard otvori kursnu listu filtriranu na 09.05.2026

To je ono što Odoo računovodstvo zaista treba — za fakturu izdatu 11.05.2026 Odoo traži “kurs sa imenom ≤ 11.05.2026 ORDER BY name DESC LIMIT 1” i pronalazi red 09.05.2026 sa USD=1.662979. Nema duplikata, nema “umjetnih” redova za dane kada CBBH nije objavio novi kurs.

CBBH kursna lista u Odoo

4. Stari “Datum preuzimanja kursa” parametar je migracijski uklonjen

migrations/16.0.1.3.0/post-migrate.py izvršava ALTER TABLE res_company DROP COLUMN cbbh_fetch_date i čisti odgovarajući zapis u ir_model_fields, tako da na postojećim instalacijama nakon -u l10n_ba_cbbh ne ostaju zaostali podaci.

Sažetak izmjena

v1.1.0v1.3.3
Datum preuzimanjaPolje na res.company (cbbh_fetch_date)Wizard pri kliku na Osvježi sada
CBBH API format?date=DD/MM/YYYY (ignorisao datum!)?date=YYYY-MM-DD (istorijska pretraga)
Naziv reda u kursnoj listiDatum operatera (čak i kada je pogrešan)CBBH-ovo effective from (autoritativno)
Kursna lista nakon preuzimanjaWizard otvori listu filtriranu na upisani datum
Backfill istorijskog kursaTiho upisivao današnji kurs pod traženi datumRadi ispravno (ISO API)

Verzioniranje

Niz inkrementalnih ispravki (v1.3.0 → v1.3.1 → v1.3.2 → v1.3.3) tokom testiranja produkcijskog deploya 11.05.2026:

  • v1.3.0 — wizard zamjenjuje cbbh_fetch_date
  • v1.3.1 — kurs se upisuje pod operaterovim datumom (greška, sakrivala je CBBH API problem)
  • v1.3.2 — strogo odbijanje upisa kada CBBH datum ne odgovara (privremena obrana)
  • v1.3.3 — pravi popravak: ISO API format + payload.Date kao naziv reda

Napomena

Generisano od strane Claude 🤖


Ernad Husremović, hernad@bring.out.ba