Skip to Content

Odoo 19: arhiviranje firme zajedno sa korisnicima portala – modul partner_archive_users sa upitom umesto poruke o grešci

3. novembar 2026 | Odoo 19 Community | Sopstveni razvoj
3. новембар 2026. by
Odoo 19: arhiviranje firme zajedno sa korisnicima portala – modul partner_archive_users sa upitom umesto poruke o grešci

Odoo 19 modul partner_archive_users: upit pri arhiviranju firme sa korisnicima portala

Firma klijent je otišla, ugovor je okončan, a vi želite da je arhivirate u Odoou. Odoo odgovara porukom o grešci: „Ne možete arhivirati kontakte koji su povezani sa aktivnim korisnikom. Prvo arhivirajte pripadajućeg korisnika.“ Ako firma ima više pristupa portalu, to znači: svakog korisnika pojedinačno tražiti, pojedinačno arhivirati, nazad na firmu, ponovo arhivirati.

Zato smo napisali mali modul Arhiviranje firme zajedno sa korisnicima portala (partner_archive_users) za Odoo 19. Umesto poruke o grešci dolazi upit, a pri „Da“ se korisnici portala i firma arhiviraju u jednom koraku. Modul je dostupan kao slobodan softver pod AGPL-3 licencom na GitHubu:

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

Ovaj modul koristimo u Biricon IT Services od 3. novembra 2026. u našem produktivnom sistemu. Nov je, pa je iskustvo s njim kratko. Ko ga preuzima, trebalo bi da pročita odeljke o obimu i ograničenjima .

Problem u Odoo standardu

Odoo pri arhiviranju kontakta proverava da li je za njega vezan neki korisnik i prekida ako jeste. Provera ima smisla, jer svaki korisnik treba kontakt. Za interne korisnike, dakle zaposlene, blokada je i željena. Kod korisnika portala klijenata ona je pre svega ručni posao. Svaka firma klijent sa pristupima portalu, na primer za uvid u fakture i tikete, pri arhiviranju traži isti postupak:

  1. tražiti korisnike firme i njenih kontakt osoba,
  2. svakog pojedinačno arhivirati,
  3. nazad na firmu,
  4. arhivirati firmu.

Rešenje: upit

Modul proširuje put Akcija → Arhiviraj na kontaktu, u obrascu kao i u listi. Ako za izabranu firmu ili njene kontakt osobe postoje aktivni korisnici portala, otvara se dijalog sa pitanjem „Da li firma zaista treba da se arhivira? U sistemu su još aktivni korisnici.“ Ispod stoje pogođeni korisnici sa imenom, korisničkim imenom i kontaktom.

Poređenje: Odoo poruka o grešci pri arhiviranju firme i dijalog sa upitom iz modula

  • Da, arhivirati firmu i korisnike: Prvo se arhiviraju korisnici, zatim firma.
  • Otkaži: Ništa se ne menja.
  • Nema korisnika portala: Odoo se ponaša kao dosad, dijalog se ne pojavljuje.

Šta se arhivira, a šta ne

Obim je namerno usko postavljen:

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

  • Samo korisnici portala i javni korisnici (share = True). Interni korisnici se ovim putem nikada ne arhiviraju. Ako je za kontakt vezan pristup zaposlenog, poruka o grešci Odooa ostaje. Tako niko slučajno ne blokira zaposlenog zato što je arhivirao firmu.
  • Kontakt osobe ostaju aktivne kao kontakti. Arhiviraju se samo njihovi pristupi portalu. To odgovara Odoo standardu, koji pri arhiviranju firme podkontakte takođe ne dira.
  • Samo put arhiviranja preko korisničkog interfejsa. Direktan write({'active': False}), na primer u uvozu ili skripti, ide nepromenjen u proveru Odooa.

Tehnička realizacija

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.

KomponentaZadatak
action_archive na kontaktuTraži aktivne korisnike sa share = True koji su vezani za kontakt ili (kod firmi) za kontakte firme. Ako ih ima, umesto arhiviranja vraća se dijalog.
ČarobnjakČuva firmu i pronađene korisnike, prikazuje ih i pri „Da“ izvršava arhiviranje sa ključem konteksta archive_linked_users.
Kontekst skip_archive_users_wizardIsključuje dijalog. Tada ponovo važi provera Odooa.
PristupČarobnjak smeju da kreiraju i koriste interni korisnici (base.group_user).
PrevodNemački (de.po) i šablon (.pot) su priloženi.

Korisnici se traže i arhiviraju sa povišenim pravima (sudo). Time dijalog funkcioniše i za korisnike bez pristupa upravljanju korisnicima. Naličje stoji pod ograničenjima.

Nalaz: test je bio zelen, a dijalog ipak neispravan

Modul je pri prvoj upotrebi imao grešku koju automatski testovi nisu našli. Pri prvom kliku na „Arhiviraj“ u interfejsu se umesto dijaloga pojavio Odoo ekran greške sa Cannot read properties of undefined (reading 'map').

Uzrok: Veb klijent poziva action_archive direktno i izvršava vraćenu akciju bez daljeg pripremanja. Pritom obavezno čita ključ views akcije. Naša akcija je imala samo view_mode. Akcije iz dugmadi sa type="object" server prethodno dopunjuje (clean_action u call_button), direktan poziv action_archive ne. Testovi su metod pozivali samo u Pythonu, a tamo nedostajuće polje nije upalo u oči.

Ispravka je jedan red ("views": [(False, "form")]), uz to dolazi provera u testu koja traži upravo taj ključ. Pritom ništa nije arhivirano. Pouka: Ko vraća akciju iz metoda koji klijent poziva direktno (action_archive, action_unarchive i slično), trebalo bi uvek da priloži 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. Posle instaliranja Odoo usluga mora da se restartuje, jer modul sadrži Python kod. Ko vodi produktivni sistem, modul prvo instalira na kopiji baze podataka.

ograničenjima

  • Ovlašćenje. Pošto se korisnici arhiviraju sa povišenim pravima, svako ko sme da arhivira kontakt može preko dijaloga da arhivira i pristupe portalu te firme. Za interne korisnike to ne važi. Ko želi da pristupe portalu zaštiti finije, mora da prilagodi modul.
  • Nema automatskog vraćanja. Ako se firma kasnije ponovo aktivira, korisnici ostaju arhivirani. Moraju se ručno ponovo aktivirati.
  • Samo kontakti. Modul se tiče firmi kao kontakata (res.partner). Arhiviranje Odoo firme (res.company) ima druge provere, na primer ako je još podrazumevana firma korisnika. Modul za to nije namenjen.
  • Testirano samo sa Odoo 19.0 Community. Za druge verzije ga nismo proveravali.

Česta pitanja

Zašto se zaposleni ne arhiviraju zajedno?

Interni korisnik ima prava u sistemu i obično je povezan sa sopstvenim podacima, zadacima i ovlašćenjima. Blokirati ga kao sporedni efekat arhiviranja firme nam je previše rizično. Zato ostaje kod poruke o grešci Odooa.

Mogu li da isključim upit?

U kodu preko konteksta skip_archive_users_wizard. Podešavanja u interfejsu nema. Ko deinstalira modul, ponovo dobija standardno ponašanje Odooa.

Pod kojom licencom je?

Pod AGPL-3. Greške i poboljšanja možete prijaviti kao Issue u GitHub repozitorijumu .

Podrška kompanije Biricon IT Services

Brinemo o Odoo instalacijama za mala i srednja preduzeća: od uvođenja, preko prilagođavanja i migracija, do tekućeg rada. Ako želite da pojednostavite procese poput arhiviranja firmi klijenata u Odoou, da uspostavite portal za svoje klijente ili da modul bezbedno unesete u svoju produktivnu instancu, rado ćemo pomoći. Druge sopstvene razvoje: Brojevi dokumenata iz prefiksa, godine i brojača, Firmenbuch i provera adresa za austrijske klijente i Setovi proizvoda u ponudi kao odeljak.

Obratite nam se

Stanje na dan: 3. novembar 2026. Verzija modula 19.0.1.0.0 sa ispravkom istog dana. Sva imena i korisnička imena na slikama su slobodno odabrana.