Preskoči na sadržaj

Odoo 19: arhiviranje firme zajedno s korisnicima portala – modul partner_archive_users s upitom 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 umjesto poruke o grešci

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

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

Za to smo napisali mali modul Arhiviranje firme zajedno s korisnicima portala (partner_archive_users) za Odoo 19. Umjesto 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 licencom AGPL-3 na GitHubu:

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

Modul koristimo kod Biricon IT Services od 3. novembra 2026. u našem produktivnom sistemu. Nov je, iskustvo s njim je dakle kratko. Ko ga preuzima, trebao bi pročitati odjeljke o obimu i ograničenjima .

Problem u standardnom Odoou

Odoo pri arhiviranju kontakta provjerava visi li na njemu neki korisnik i prekida ako da. Provjera ima smisla, jer svaki korisnik treba kontakt. Za interne korisnike, dakle zaposlenike, blokada je i željena. Kod korisnika portala kupaca ona je ipak prije svega ručni posao. Svaka firma kupca s pristupima portalu, na primjer za uvid u račune i tikete, treba pri arhiviranju isti postupak:

  1. Potražiti korisnike firme i njenih kontakt osoba,
  2. svakog posebno arhivirati,
  3. nazad na firmu,
  4. arhivirati firmu.

Rješenje: upit

Modul proširuje put Akcija → Arhiviraj na kontaktu, u obrascu kao i u listi. Ako na odabranoj firmi ili njenim kontakt osobama vise aktivni korisnici portala, otvara se dijalog s pitanjem „Treba li firma zaista biti arhivirana? U sistemu su još aktivni korisnici.“ Ispod stoje zahvaćeni korisnici s imenom, korisničkim imenom i kontaktom.

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

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

Šta se arhivira, a šta ne

Obim je namjerno 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 na kontaktu visi pristup zaposlenika, poruka o grešci Odoa ostaje. Tako niko nehotice ne blokira zaposlenika jer je arhivirao firmu.
  • Kontakt osobe ostaju aktivne kao kontakti. Arhiviraju se samo njihovi pristupi portalu. To odgovara standardu Odoa, koji pri arhiviranju firme podkontakte također ne dira.
  • Samo put arhiviranja iz korisničkog interfejsa. Direktno write({'active': False}), na primjer u uvozu ili skripti, ulazi nepromijenjeno u provjeru Odoa.

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.

Gradivni elementZadatak
action_archive na kontaktuTraži aktivne korisnike s share = True koji vise na kontaktu ili (kod firmi) na kontaktima firme. Ako ih ima, umjesto arhiviranja vraća se dijalog.
ČarobnjakPohranjuje firmu i pronađene korisnike, prikazuje ih i pri „Da“ izvršava arhiviranje s ključem konteksta archive_linked_users.
Kontext skip_archive_users_wizardIsključuje dijalog. Tada ponovo važi provjera Odoa.
PristupČarobnjak smiju kreirati i koristiti interni korisnici (base.group_user).
PrevodNjemački (de.po) i predložak (.pot) su priloženi.

Korisnici se traže i arhiviraju s povišenim pravima (sudo). Time dijalog funkcioniše i za korisnike bez pristupa upravljanju korisnicima. Druga strana medalje nalazi se pod ograničenjima.

Nalaz: test je bio zelen, a dijalog ipak neispravan

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

Uzrok: Web klijent poziva action_archive direktno i izvršava vraćenu akciju bez dodatne obrade. Pritom obavezno čita ključ views akcije. Naša akcija imala je samo view_mode. Akcije iz dugmadi s type="object" server prethodno dopunjava (clean_action u call_button), direktan poziv action_archive ne. Testovi su pozivali metodu samo u Pythonu, a tamo se nedostajuće polje nije primijetilo.

Ispravka je jedan red ("views": [(False, "form")]), uz to dolazi provjera u testu koja traži upravo taj ključ. Pritom ništa nije arhivirano. Pouka: ko iz metode koju klijent poziva direktno (action_archive, action_unarchive i slične) vraća akciju, 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

Zavisnosti su base i contacts. Nakon instalacije Odoo usluga mora biti ponovo pokrenuta, jer modul sadrži Python kod. Ko vodi produktivni sistem, modul prvo instalira na kopiji baze podataka.

ograničenjima

  • Ovlaštenje. Budući da se korisnici arhiviraju s povišenim pravima, svako ko smije arhivirati kontakt može putem dijaloga arhivirati i pristupe portalu te firme. Za interne korisnike to ne važi. Ko želi finije osigurati pristupe portalu, mora prilagoditi modul.
  • Nema automatskog vraćanja. Ako se firma kasnije ponovo aktivira, korisnici ostaju arhivirani. Moraju se ručno reaktivirati.
  • Samo kontakti. Modul se odnosi na firme kao kontakte (res.partner). Arhiviranje Odoo firme (res.company) ima druge provjere, na primjer ako je još standardna firma korisnika. Za to modul nije namijenjen.
  • Testirano samo s Odoo 19.0 Community. Za druge verzije nismo provjeravali.

Česta pitanja

Zašto se zaposlenici ne arhiviraju zajedno?

Interni korisnik ima prava u sistemu i najčešće je povezan s vlastitim podacima, zadacima i ovlaštenjima. Blokirati ga kao nuspojavu arhiviranja firme nam je prerizično. Zato ostaje kod Odoo poruke o grešci.

Mogu li isključiti upit?

U kodu putem konteksta skip_archive_users_wizard. Postavke u korisničkom interfejsu nema. Ko deinstalira modul, ponovo dobiva standardno ponašanje Odoa.

Pod kojom licencom je?

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

Podrška Biricon IT Services

Brinemo o Odoo instalacijama za mala i srednja preduzeća: od uvođenja, preko prilagodbi i migracija, do tekućeg rada. Ako želite pojednostaviti procese poput arhiviranja firmi kupaca u Odoou, postaviti portal za svoje kupce ili sigurno postaviti modul u svoju produktivnu instancu, rado ćemo pomoći. Daljnji vlastiti razvojni projekti: Brojevi dokumenata iz prefiksa, godine i brojača, Firmenbuch i provjera adresa za austrijske kupce i Setovi proizvoda u ponudi kao odjeljak.

Obratite nam se sada

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