Preskoči na vsebino

Odoo 19: arhiviranje podjetja skupaj z uporabniki portala – modul partner_archive_users s potrditvenim vprašanjem namesto sporočila o napaki

3. november 2026 | Odoo 19 Community | Lastni razvoj
3. november 2026 napisal
Odoo 19: arhiviranje podjetja skupaj z uporabniki portala – modul partner_archive_users s potrditvenim vprašanjem namesto sporočila o napaki

Odoo 19 modul partner_archive_users: potrditveno vprašanje pri arhiviranju podjetja z uporabniki portala

Podjetje stranke je odšlo, pogodba je prekinjena in želite ga arhivirati v Odoo. Odoo odgovori s sporočilom o napaki: „Ne morete arhivirati kontaktov, ki so povezani z aktivnim uporabnikom. Najprej arhivirajte pripadajočega uporabnika.“ Če ima podjetje več dostopov do portala, to pomeni: vsakega uporabnika posebej poiskati, posebej arhivirati, nazaj k podjetju, ponovno arhivirati.

Za to smo napisali majhen modul Arhiviranje podjetja skupaj z uporabniki portala (partner_archive_users) za Odoo 19. Namesto sporočila o napaki pride potrditveno vprašanje, pri „Da“ pa se uporabniki portala in podjetje arhivirajo v enem koraku. Modul je na voljo kot prosta programska oprema pod licenco AGPL-3 na GitHubu:

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

Modul pri Biricon IT Services v našem produkcijskem sistemu uporabljamo od 3. novembra 2026. Je nov, zato so izkušnje z njim kratke. Kdor ga prevzame, naj prebere razdelke o obsegu in omejitvah .

Težava v standardnem Odoo

Odoo pri arhiviranju kontakta preveri, ali je nanj vezan uporabnik, in če je, prekine. Preverjanje je smiselno, saj vsak uporabnik potrebuje kontakt. Za interne uporabnike, torej zaposlene, je zapora tudi zaželena. Pri uporabnikih portala strank pa je predvsem ročno delo. Vsako podjetje stranke z dostopi do portala, na primer za vpogled v račune in zahtevke, pri arhiviranju potrebuje isti postopek:

  1. poiskati uporabnike podjetja in njegovih kontaktnih oseb,
  2. vsakega posebej arhivirati,
  3. nazaj k podjetju,
  4. arhivirati podjetje.

Rešitev: potrditveno vprašanje

Modul razširja pot Dejanje → Arhiviraj pri kontaktu, v obrazcu in na seznamu. Če so na izbrano podjetje ali njegove kontaktne osebe vezani aktivni uporabniki portala, se odpre pogovorno okno z vprašanjem „Ali res želite arhivirati podjetje? V sistemu so še aktivni uporabniki.“ Pod njim so prizadeti uporabniki z imenom, prijavnim imenom in kontaktom.

Primerjava: sporočilo o napaki Odoo pri arhiviranju podjetja in pogovorno okno s potrditvenim vprašanjem modula

  • Da, arhiviraj podjetje in uporabnike: Najprej se arhivirajo uporabniki, nato podjetje.
  • Prekliči: Nič se ne spremeni.
  • Ni uporabnikov portala: Odoo se obnaša kot doslej, pogovorno okno se ne prikaže.

Kaj se arhivira in kaj ne

Obseg je namenoma ozek:

Pregled: uporabniki portala in podjetje se arhivirajo, kontaktne osebe ostanejo aktivne, interni uporabniki se nikoli ne dotaknejo

  • Samo portalski in javni uporabniki (share = True). Interni uporabniki se po tej poti nikoli ne arhivirajo. Če je na kontakt vezan dostop zaposlenega, sporočilo o napaki Odoo ostane. Tako nihče po nesreči ne zaklene zaposlenega, ker je arhiviral podjetje.
  • Kontaktne osebe ostanejo aktivne kot kontakti. Arhivirajo se samo njihovi dostopi do portala. To ustreza standardu Odoo, ki se pri arhiviranju podjetja prav tako ne dotakne podrejenih kontaktov.
  • Samo pot arhiviranja v vmesniku. Neposreden write({'active': False}), na primer v uvozu ali skriptu, teče nespremenjeno v preverjanje Odoo.

Tehnična izvedba

Modul nima novih polj pri obstoječih modelih. Sestavljata ga razširitev res.partner.action_archive in pomočnik (partner.archive.users.wizard), ki se prikaže kot pogovorno okno.

GradnikNaloga
action_archive pri kontaktuPoišče aktivne uporabnike s share = True, ki so vezani na kontakt ali (pri podjetjih) na kontakte podjetja. Če jih je kaj, se namesto arhiviranja vrne pogovorno okno.
PomočnikShrani podjetje in najdene uporabnike, jih prikaže in pri „Da“ izvede arhiviranje s kontekstnim ključem archive_linked_users.
Kontekst skip_archive_users_wizardIzklopi pogovorno okno. Potem spet velja preverjanje Odoo.
DostopPomočnika smejo ustvarjati in uporabljati interni uporabniki (base.group_user).
PrevodNemščina (de.po) in predloga (.pot) sta priložena.

Uporabniki se iščejo in arhivirajo s povišanimi pravicami (sudo). S tem pogovorno okno deluje tudi za uporabnike brez dostopa do upravljanja uporabnikov. Slabost je opisana pod omejitvah.

Ugotovitev: test je bil zelen, pogovorno okno pa kljub temu pokvarjeno

Modul je imel ob prvi uporabi napako, ki je samodejni testi niso našli. Ob prvem kliku na „Arhiviraj“ v vmesniku se je namesto pogovornega okna pojavil zaslon z napako Odoo s Cannot read properties of undefined (reading 'map').

Vzrok: spletni odjemalec kliče action_archive neposredno in vrnjeno dejanje izvede brez dodatne obdelave. Pri tem obvezno prebere ključ views dejanja. Naše dejanje je imelo samo view_mode. Dejanja iz gumbov s type="object" strežnik prej dopolni (clean_action v call_button), neposrednega klica action_archive pa ne. Testi so metodo klicali samo v Pythonu, tam pa manjkajočega polja ni bilo opaziti.

Popravek je ena vrstica ("views": [(False, "form")]), dodan je še preizkus v testu, ki zahteva prav ta ključ. Pri tem ni bilo nič arhivirano. Spoznanje: kdor vrača dejanje iz metode, ki jo odjemalec kliče neposredno (action_archive, action_unarchive in podobne), naj vedno doda views.

Namestitev

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

Odvisnosti sta base in contacts. Po namestitvi je treba storitev Odoo znova zagnati, ker modul vsebuje kodo Python. Kdor upravlja produkcijski sistem, naj modul najprej namesti na kopijo baze podatkov.

omejitvah

  • Pooblastilo. Ker se uporabniki arhivirajo s povišanimi pravicami, lahko vsak, ki sme arhivirati kontakt, prek pogovornega okna arhivira tudi dostope do portala tega podjetja. Za interne uporabnike to ne velja. Kdor želi dostope do portala zaščititi natančneje, mora modul prilagoditi.
  • Brez samodejne obnovitve. Če se podjetje pozneje spet aktivira, uporabniki ostanejo arhivirani. Ročno jih je treba znova aktivirati.
  • Samo kontakti. Modul zadeva podjetja kot kontakte (res.partner). Arhiviranje podjetja Odoo (res.company) ima druga preverjanja, na primer če je še privzeto podjetje uporabnikov. Za to modul ni namenjen.
  • Testirano samo z Odoo 19.0 Community. Za druge različice ga nismo preverili.

Pogosta vprašanja

Zakaj se zaposleni ne arhivirajo skupaj?

Interni uporabnik ima pravice v sistemu in je običajno povezan z lastnimi podatki, nalogami in pooblastili. Zakleniti ga kot stranski učinek arhiviranja podjetja se nam zdi preveliko tveganje. Zato ostane pri sporočilu o napaki Odoo.

Ali lahko potrditveno vprašanje izklopim?

V kodi prek konteksta skip_archive_users_wizard. Nastavitve v vmesniku ni. Kdor modul odstrani, spet dobi standardno obnašanje Odoo.

Pod katero licenco je?

Pod AGPL-3. Napake in izboljšave so dobrodošle kot issue v repozitoriju GitHub .

Podpora podjetja Biricon IT Services

Oskrbujemo namestitve Odoo za mala in srednja podjetja: od uvedbe prek prilagoditev in migracij do tekočega obratovanja. Če želite poenostaviti postopke, kot je arhiviranje podjetij strank v Odoo, vzpostaviti portal za svoje stranke ali varno prenesti modul v svojo produkcijsko instanco, vam z veseljem pomagamo. Druge lastne razvoje: Številke dokumentov iz predpone, leta in števca, Firmenbuch in preverjanje naslovov za avstrijske stranke in Kompleti izdelkov v ponudbi kot razdelek.

Kontaktirajte nas zdaj

Stanje: 3. november 2026. Različica modula 19.0.1.0.0 s popravkom istega dne. Vsa imena in prijavna imena na slikah so poljubno izbrana.