Preskoči na sadržaj

Odoo 19: arhiviranje tvrtke zajedno s portalnim korisnicima – modul partner_archive_users s upitom umjesto poruke o grešci

3. studenoga 2026. | Odoo 19 Community | Vlastiti razvoj
3. studenoga 2026. od
Odoo 19: arhiviranje tvrtke zajedno s portalnim korisnicima – modul partner_archive_users s upitom umjesto poruke o grešci

Odoo 19 modul partner_archive_users: upit pri arhiviranju tvrtke s portalnim korisnicima

Tvrtka klijent se odselila, ugovor je završen, a vi je želite arhivirati u Odoou. Odoo odgovara porukom o grešci: „Ne možete arhivirati kontakte koji su povezani s aktivnim korisnikom. Najprije arhivirajte pripadajućeg korisnika.“ Ako tvrtka ima više portalnih pristupa, to znači: svakog korisnika pojedinačno pronaći, pojedinačno arhivirati, natrag na tvrtku, ponovno arhivirati.

Zato smo napisali mali modul Arhiviranje tvrtke zajedno s portalnim korisnicima (partner_archive_users) za Odoo 19. Umjesto poruke o grešci pojavljuje se upit, a uz „Da“ se portalni korisnici i tvrtka arhiviraju u jednom koraku. Modul je dostupan kao slobodan softver pod licencijom AGPL-3 na GitHubu:

github.com/Alex0176/odoo-partner-archive-users

Modul u Biricon IT Services koristimo u svom produkcijskom sustavu od 3. studenoga 2026. Nov je, pa je iskustvo s njim kratko. Tko ga preuzme, trebao bi pročitati odjeljke o opsegu i Ograničenja .

Problem u standardnom Odoou

Odoo pri arhiviranju kontakta provjerava je li na njega vezan korisnik i prekida ako jest. Provjera ima smisla jer svaki korisnik treba kontakt. Za interne korisnike, dakle zaposlenike, blokada je i željena. Kod portalnih korisnika klijenata ona je pak ponajprije ručni posao. Svaka tvrtka klijent s portalnim pristupima, na primjer za uvid u račune i tikete, pri arhiviranju traži isti postupak:

  1. pronaći korisnike tvrtke i njezinih kontakt osoba,
  2. svakog pojedinačno arhivirati,
  3. natrag na tvrtku,
  4. arhivirati tvrtku.

Rješenje: upit

Modul proširuje put Radnja → Arhiviraj na kontaktu, u obrascu kao i na popisu. Ako na odabranu tvrtku ili njezine kontakt osobe vezani aktivni portalni korisnici, otvara se dijalog s pitanjem „Treba li tvrtku doista arhivirati? U sustavu su još aktivni korisnici.“ Ispod su navedeni pogođeni korisnici s imenom, korisničkim imenom i kontaktom.

Usporedba: Odoo poruka o grešci pri arhiviranju tvrtke i dijalog s upitom modula

  • Da, arhiviraj tvrtku i korisnike: najprije se arhiviraju korisnici, zatim tvrtka.
  • Odustani: ništa se ne mijenja.
  • Nema portalnih korisnika: Odoo se ponaša kao dosad, dijalog se ne pojavljuje.

Što se arhivira, a što ne

Opseg je namjerno uzak:

Pregled: portalni korisnici i tvrtka se arhiviraju, kontakt osobe ostaju aktivne, interni korisnici se nikada ne diraju

  • Samo portalni i javni korisnici (share = True). Interni korisnici se tim putem nikada ne arhiviraju. Ako je na kontakt vezan pristup zaposlenika, poruka o grešci Odooa ostaje. Tako nitko slučajno ne blokira zaposlenika zato što je arhivirao tvrtku.
  • Kontakt osobe ostaju aktivne kao kontakti. Arhiviraju se samo njihovi portalni pristupi. To odgovara standardu Odooa, koji pri arhiviranju tvrtke također ne dira podkontakte.
  • Samo put arhiviranja u sučelju. Izravni write({'active': False}), na primjer u uvozu ili skripti, ulazi nepromijenjen u provjeru Odooa.

Tehnička izvedba

Modul nema novih polja na postojećim modelima. Sastoji se od proširenja res.partner.action_archive i čarobnjaka (partner.archive.users.wizard) koji se pojavljuje kao dijalog.

ElementZadatak
action_archive na kontaktuTraži aktivne korisnike s share = True koji su vezani na kontakt ili (kod tvrtki) na kontakte tvrtke. Ako ih ima, umjesto arhiviranja vraća se dijalog.
ČarobnjakSprema tvrtku i pronađene korisnike, prikazuje ih i uz „Da“ izvodi arhiviranje s ključem konteksta archive_linked_users.
Kontekst skip_archive_users_wizardIsključuje dijalog. Tada ponovno vrijedi provjera Odooa.
PristupČarobnjak smiju izrađivati i koristiti interni korisnici (base.group_user).
PrijevodNjemački (de.po) i predložak (.pot) su priloženi.

Korisnici se traže i arhiviraju s povišenim pravima (sudo). Tako dijalog radi i za korisnike bez pristupa upravljanju korisnicima. Druga strana medalje navedena je pod Ograničenja.

Nalaz: test je bio zelen, a dijalog ipak pokvaren

Modul je pri prvoj uporabi imao grešku koju automatski testovi nisu pronašli. Pri prvom kliku na „Arhiviraj“ u sučelju umjesto dijaloga pojavio se Odoov zaslon s greškom s porukom Cannot read properties of undefined (reading 'map').

Uzrok: web klijent izravno poziva action_archive i izvodi vraćenu radnju bez daljnje obrade. Pritom obavezno čita ključ views radnje. Naša radnja imala je samo view_mode. Radnje iz gumba s type="object" poslužitelj prethodno dopunjuje (clean_action u call_button), izravan poziv action_archive ne. Testovi su metodu pozivali samo u Pythonu, a tamo nedostajuće polje nije bilo uočljivo.

Ispravak je jedan redak ("views": [(False, "form")]), uz to dolazi provjera u testu koja traži upravo taj ključ. Pritom se ništa nije arhiviralo. Pouka: tko iz metode koju klijent izravno poziva (action_archive, action_unarchive i slične) vraća radnju, trebao bi uvijek priložiti 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

Ovisnosti su base i contacts. Nakon instalacije Odoo uslugu treba ponovno pokrenuti jer modul sadrži Python kod. Tko vodi produkcijski sustav, modul najprije instalira na kopiji baze podataka.

Ograničenja

  • Ovlaštenje. Budući da se korisnici arhiviraju s povišenim pravima, svatko tko smije arhivirati kontakt može putem dijaloga arhivirati i portalne pristupe te tvrtke. Za interne korisnike to ne vrijedi. Tko želi preciznije zaštititi portalne pristupe, mora prilagoditi modul.
  • Nema automatske obnove. Ako se tvrtka kasnije ponovno aktivira, korisnici ostaju arhivirani. Moraju se ručno ponovno aktivirati.
  • Samo kontakti. Modul se odnosi na tvrtke kao kontakte (res.partner). Arhiviranje Odoo tvrtke (res.company) ima druge provjere, na primjer ako je još zadana tvrtka korisnika. Modul za to nije namijenjen.
  • Testirano samo s Odoom 19.0 Community. Za druge verzije nismo ga provjeravali.

Česta pitanja

Zašto se zaposlenici ne arhiviraju zajedno?

Interni korisnik ima prava u sustavu i obično je povezan s vlastitim podacima, zadacima i ovlaštenjima. Blokirati ga kao nuspojavu arhiviranja tvrtke za nas je prerizično. Zato ostaje Odoova poruka o grešci.

Mogu li isključiti upit?

U kodu putem konteksta skip_archive_users_wizard. Postavke u sučelju nema. Tko deinstalira modul, ponovno dobiva standardno ponašanje Odooa.

Pod kojom je licencijom?

Pod AGPL-3. Greške i poboljšanja dobrodošli su kao issue u GitHub repozitoriju .

Podrška tvrtke Biricon IT Services

Brinemo se za Odoo instalacije malih i srednjih poduzeća: od uvođenja, preko prilagodbi i migracija, do tekućeg rada. Ako želite pojednostavniti postupke poput arhiviranja tvrtki klijenata u Odoou, postaviti portal za svoje klijente ili sigurno uvesti modul u svoju produkcijsku instancu, rado ćemo pomoći. Dodatni vlastiti razvoji: Brojevi dokumenata iz prefiksa, godine i brojača, Firmenbuch i provjera adresa za austrijske klijente i Skupovi proizvoda u ponudi kao odjeljak.

Javite nam se odmah

Stanje: 3. studenoga 2026. Verzija modula 19.0.1.0.0 s ispravkom istog dana. Sva imena i korisnička imena na slikama proizvoljno su odabrana.