Firma koja vam je bila klijent otišla je, ugovor je raskinut i želite je arhivirati u Odoou. Odoo prikazuje poruku o grešci: „Ne možete arhivirati kontakte povezane s aktivnim korisnikom. Prvo arhivirajte povezanog korisnika.“ Ako firma ima više korisničkih računa za portal, to znači: pronaći svakog korisnika pojedinačno, arhivirati ga, vratiti se na firmu i ponovo pokušati arhiviranje.
Za to smo napravili mali modul Arhiviranje firme zajedno s korisnicima portala (partner_archive_users) za Odoo 19. Umjesto poruke o grešci pojavljuje se upit za potvrdu, a odabirom „Da“ korisnici portala i firma arhiviraju se u jednom koraku. Modul je dostupan na GitHubu kao slobodan softver pod licencom AGPL-3:
github.com/Alex0176/odoo-partner-archive-users
U firmi Biricon IT Services modul koristimo u svom produkcijskom sistemu od 3. novembra 2026. Modul je nov, pa je i naše iskustvo s njim još kratko. Ako ga namjeravate koristiti, pročitajte odjeljke Obuhvat i Ograničenja .
Problem u standardnom Odoou
Pri arhiviranju kontakta Odoo provjerava je li s njim povezan korisnik i prekida postupak ako jeste. Ta provjera ima smisla jer svaki korisnik mora imati kontakt. Za interne korisnike, odnosno zaposlenike, takva je blokada i poželjna. Međutim, kod klijentskih korisnika portala ona uglavnom znači dodatni ručni rad. Za svaku firmu klijenta koja ima pristup portalu, recimo za pregled računa i zahtjeva za podršku, pri arhiviranju treba ponoviti isti postupak:
- pronaći korisnike povezane s firmom i njenim kontakt osobama,
- arhivirati svakog pojedinačno,
- vratiti se na firmu,
- arhivirati firmu.
Rješenje: upit za potvrdu
Modul proširuje opciju Radnja → Arhiviraj na kontaktu, i u obrascu i u listi. Ako su s odabranom firmom ili njenim kontakt osobama povezani aktivni korisnici portala, otvara se dijalog s pitanjem „Želite li zaista arhivirati firmu? U sistemu još postoje aktivni korisnici.“ Ispod su navedeni ti korisnici s imenom, korisničkim imenom i kontaktom.
- Da, arhiviraj firmu i korisnike: prvo se arhiviraju korisnici, a zatim firma.
- Odustani: ništa se ne mijenja.
- Nema korisnika portala: Odoo se ponaša kao i dosad, dijalog se ne pojavljuje.
Šta se arhivira, a šta ne
Obuhvat je namjerno ograničen:
- Samo korisnici portala i javni korisnici (
share = True). Interni korisnici se ovim putem nikada ne arhiviraju. Ako je s kontaktom povezan korisnički račun zaposlenika, Odoo i dalje prikazuje poruku o grešci. Tako niko neće slučajno blokirati zaposlenika arhiviranjem firme. - Kontakt osobe ostaju aktivne kao kontakti. Arhiviraju se samo njihovi korisnički računi za portal. To odgovara standardnom ponašanju Odooa, koji pri arhiviranju firme također ne mijenja njene podređene kontakte.
- Samo arhiviranje putem korisničkog interfejsa. Direktni poziv
write({'active': False}), recimo pri uvozu ili u skripti, i dalje podliježe standardnoj provjeri u Odoou.
Tehnička implementacija
Modul ne dodaje nova polja postojećim modelima. Sastoji se od proširenja metode res.partner.action_archive i čarobnjaka (partner.archive.users.wizard) koji se prikazuje kao dijalog.
| Komponenta | Namjena |
|---|---|
action_archive na kontaktu | Traži aktivne korisnike s share = True povezane s kontaktom ili, u slučaju firme, s njenim kontaktima. Ako ih pronađe, umjesto arhiviranja vraća dijalog. |
| Čarobnjak | Pohranjuje firmu i pronađene korisnike, prikazuje ih i nakon odabira „Da“ izvršava arhiviranje uz ključ konteksta archive_linked_users. |
Kontekst skip_archive_users_wizard | Isključuje dijalog. Tada se ponovo primjenjuje standardna provjera u Odoou. |
| Pristup | Čarobnjaka mogu kreirati i koristiti interni korisnici (base.group_user). |
| Prijevod | Uključeni su njemački prijevod (de.po) i predložak (.pot). |
Korisnici se traže i arhiviraju uz povišene ovlasti (sudo). Tako dijalog radi i za korisnike koji nemaju pristup upravljanju korisnicima. Druga strana toga opisana je u odjeljku Ograničenja.
Otkriveni problem: test je prošao, ali dijalog ipak nije radio
Pri prvoj upotrebi modul je imao grešku koju automatski testovi nisu otkrili. Nakon prvog klika na „Arhiviraj“ u interfejsu, umjesto dijaloga pojavio se Odoo ekran s greškom Cannot read properties of undefined (reading 'map').
Uzrok: web klijent direktno poziva action_archive i izvršava vraćenu radnju bez dodatne obrade. Pritom obavezno čita ključ views te radnje. Naša radnja imala je samo view_mode. Server prethodno dopunjava radnje pokrenute dugmadima s type="object" (clean_action u call_button), ali ne i direktni poziv metode action_archive. Testovi su metodu pozivali samo u Pythonu, gdje nedostatak tog polja nije bio primjetan.
Ispravka se sastoji od jednog reda ("views": [(False, "form")]), uz dodatnu provjeru u testu koja zahtijeva upravo taj ključ. Pri pojavi greške ništa nije arhivirano. Pouka: ako vraćate radnju iz metode koju klijent direktno poziva (action_archive, action_unarchive i slične), uvijek trebate navesti views.
Instalacija
git clone https://github.com/Alex0176/odoo-partner-archive-users.git
ln -s /pfad/odoo-partner-archive-users/partner_archive_users /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i partner_archive_users --stop-after-init
Zavisnosti su base i contacts. Nakon instalacije potrebno je ponovo pokrenuti Odoo servis jer modul sadrži Python kod. Ako koristite produkcijski sistem, modul prvo instalirajte na kopiji baze podataka.
Ograničenja
- Ovlasti. Budući da se korisnici arhiviraju uz povišene ovlasti, svako ko smije arhivirati kontakt može putem dijaloga arhivirati i korisničke račune te firme za portal. To se ne odnosi na interne korisnike. Ako želite detaljniju kontrolu nad zaštitom pristupa portalu, morate prilagoditi modul.
- Nema automatskog vraćanja. Ako se firma kasnije ponovo aktivira, korisnici ostaju arhivirani. Moraju se ručno ponovo aktivirati.
- Samo kontakti. Modul se odnosi na firme kao kontakte (
res.partner). Arhiviranje firme u Odoou (res.company) podliježe drugim provjerama, naprimjer ako je ona još zadana firma nekog korisnika. Modul nije namijenjen tome. - Testirano samo na Odoo 19.0 Community. Za druge verzije nismo provjeravali.
Česta pitanja
Zašto se zaposlenici ne arhiviraju zajedno s firmom?
Interni korisnik ima prava u sistemu i obično je povezan s vlastitim podacima, zadacima i ovlastima. Smatramo previše rizičnim da se blokira kao usputna posljedica arhiviranja firme. Zato u tom slučaju ostaje Odoo poruka o grešci.
Mogu li isključiti upit za potvrdu?
U kodu, putem konteksta skip_archive_users_wizard. Postavka u korisničkom interfejsu ne postoji. Deinstalacijom modula vraća se standardno ponašanje Odooa.
Pod kojom je licencom dostupan?
Pod licencom AGPL-3. Prijave grešaka i prijedlozi poboljšanja dobrodošli su kao prijave problema u GitHub repozitoriju .
Podrška firme Biricon IT Services
Pružamo podršku za Odoo instalacije malim i srednjim preduzećima: od uvođenja, preko prilagodbi i migracija, do svakodnevnog rada. Rado ćemo vam pomoći ako želite pojednostaviti postupke poput arhiviranja firmi klijenata u Odoou, postaviti portal za svoje klijente ili sigurno uvesti modul u svoje produkcijsko okruženje. Ostala vlastita rješenja: Brojevi dokumenata od prefiksa, godine i brojača, Registar preduzeća i provjera adresa za austrijske klijente i Kompleti proizvoda kao odjeljak u ponudi.
Stanje na dan: 3. novembar 2026. Verzija modula 19.0.1.0.0 s ispravkom od istog dana. Sva imena i korisnička imena na slikama proizvoljno su odabrana.