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.0 → v1.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 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 od | EUR | USD |
|---|---|---|---|
| 88 | 2026-05-07 | 1.955830 | 1.662838 |
| 89 | 2026-05-08 | 1.955830 | (objavljen) |
| 90 | 2026-05-09 | 1.955830 | 1.662979 ← važi i 10.05. i 11.05. |
| 91 | 2026-05-12 | 1.955830 | 1.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.ratesa imenom2026-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.

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.0 | v1.3.3 | |
|---|---|---|
| Datum preuzimanja | Polje 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 listi | Datum operatera (čak i kada je pogrešan) | CBBH-ovo effective from (autoritativno) |
| Kursna lista nakon preuzimanja | — | Wizard otvori listu filtriranu na upisani datum |
| Backfill istorijskog kursa | Tiho upisivao današnji kurs pod traženi datum | Radi 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.Datekao naziv reda
Napomena
Generisano od strane Claude 🤖
Ernad Husremović, hernad@bring.out.ba