Preskoči na sadržaj

Odoo 19: arhiviranje firme zajedno s korisnicima portala – modul partner_archive_users s upitom za potvrdu umjesto poruke o grešci

3. novembar 2026. | Odoo 19 Community | Vlastiti razvoj
3. novembar 2026. by
Odoo 19: arhiviranje firme zajedno s korisnicima portala – modul partner_archive_users s upitom za potvrdu umjesto poruke o grešci

Modul partner_archive_users za Odoo 19: upit za potvrdu pri arhiviranju firme s korisnicima portala

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:

  1. pronaći korisnike povezane s firmom i njenim kontakt osobama,
  2. arhivirati svakog pojedinačno,
  3. vratiti se na firmu,
  4. 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.

Poređenje: Odoo poruka o grešci pri arhiviranju firme i dijalog modula s upitom za potvrdu

  • 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:

Pregled: korisnici portala i firma se arhiviraju, kontakt osobe ostaju aktivne, interni korisnici se nikada ne mijenjaju

  • 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.

KomponentaNamjena
action_archive na kontaktuTraž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.
ČarobnjakPohranjuje firmu i pronađene korisnike, prikazuje ih i nakon odabira „Da“ izvršava arhiviranje uz ključ konteksta archive_linked_users.
Kontekst skip_archive_users_wizardIsključuje dijalog. Tada se ponovo primjenjuje standardna provjera u Odoou.
PristupČarobnjaka mogu kreirati i koristiti interni korisnici (base.group_user).
PrijevodUključ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.

Kontaktirajte nas sada

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.