PMIS Nextcloud
Ustvarjajte/upravljajte uporabnike in skupine Nextcloud iz Odoo ter uvažajte stike CardDAV za pregled in povezovanje s partnerji.
Funkcionalnosti
Integraciji sta neodvisni: uporabniški račun določa Nextcloud ID partnerja, povezava stika CardDAV pa odnos vnosa imenika s partnerjem. Ena ne ustvari druge.
Upravljanje računov
Izrecno ustvarjanje, preverjanje obstoječih, sinhronizacija, osvežitev, onemogočenje, ponastavitev gesla in lokalni odklop.
Pridobitev obstoječih računov s pregledom ujemanj e-naslova, uporabniškega in prikaznega imena ter ročnim izborom pred povezavo.
Ustvarjanje, urejanje, arhiviranje in aktivacija partnerja so lokalni; podrobnosti/članstva se uporabijo samo z izrecnim dejanjem računa.
Stabilna oddaljena uporabniška imena tudi po spremembi e-naslova.
Predloge kvot po podjetjih, preverjanje enot in normalizacija.
Natančna zamenjava oddaljenih skupin z izbranimi ob sinhronizaciji.
Ločena manjkajoči račun in ponovljiva napaka z obnovitvenimi podatki po delnem neuspehu.
Predpomnjene kvote, poraba, deleži prostega/porabljenega, zadnja prijava in prvotni metapodatki. Epoch čas je UTC, prikaz sledi časovnemu pasu Odoo.
Ustvarjena gesla samo za vodje z nastavljivim lokalnim potekom in izbirno e-poštno predlogo.
Načrtovana osvežitev metapodatkov in čiščenje lokalnih gesel.
Sprememba lastnega gesla iz uporabniškega menija s potrditvijo trenutnega gesla Odoo brez shranitve ali pošiljanja novega gesla po e-pošti.
Uskladitev stikov CardDAV
Odkrivanje imenikov prek well-known CardDAV/DAV.
Pridobivanje vseh ali izbranega HREF, nastavljiv čas in ločene poverilnice s privzetim prevzemom glavne povezave.
Lokalni indeks imen vCard, UID-jev, e-naslovov/telefonov, HREF-ov, ETag-ov, podatkov imenika in zadnje zaznave.
Ponovna uporaba nespremenjenega ETag in izbirna hramba izvirnega vCard; spremembe hrambe veljajo tudi pri nespremenjenih stikih.
Primerjava primarnega e-naslova po podjetju z enoličnimi, manjkajočimi in dvoumnimi predlogi.
Ročni pregled pred ustvarjanjem partnerjev, povezovanjem, prezrtjem ali deaktivacijo osirotelih lokalnih povezav.
Trajni števci/povzetek uporabe, skladnost podjetij in ena aktivna povezava na partnerja.
Strežniški nadzor omogočenosti pridobivanja, stanja pregleda, ciljev in zastarelih predlogov pred lokalno uporabo.
Nastavitve
Odvisnosti in povezava
Zahteva base, contacts, mail, web in pyocclient v okolju Odoo. V Settings → Nextcloud vnesite URL, prijavo API in geslo. API uporabnik potrebuje pravice načrtovanih uporabniških/skupinskih operacij. Confirm and Login preveri povezavo, Get Nextcloud Groups uvozi skupine za dodelitve, Get Nextcloud Config nastavitve strežnika.
Povezava, CardDAV in e-pošta uporabljajo parametre celotne zbirke; privzeta predloga kvote je po podjetju. Reset počisti povezavo, CardDAV in e-pošto, ne pa preslikav partnerjev, indeksa, oddaljenih podatkov, privzete kvote podjetja ali ločenega parametra hrambe gesel. Ponovna nastavitev je potrebna. Opozorilo sinhronizacije datotek v oknu je podedovano besedilo, ne izvedena operacija. Root Directory in Use Public URLs sta shranjeni nastavitvi brez izvedenega postopka sinhronizacije datotek ali javnih delitev.
CardDAV
Omogočite CardDAV Enabled, nastavite npr. https://cloud.example.com/remote.php/dav in po potrebi ločene poverilnice, sicer se uporabijo glavne. CardDAV Timeout je privzeto 20 sekund za odkrivanje in pridobivanje. Store Raw vCard je privzeto izključen. Izklop ob pridobivanju počisti prej shranjeno besedilo v izbranem obsegu tudi pri istih ETag-ih; zunaj obsega ostane. Vklop pridobi manjkajoče besedilo predpomnjenih stikov. Brez ETag se vCard vedno pridobi znova.
Stikalo strežniško omejuje odkrivanje/pridobivanje, tudi čarovnike in RPC; nepodana/izključena vrednost jih blokira kljub poverilnicam. Meniji in lokalni pregled/uporaba ostanejo, neodvisna računovska dejanja niso prizadeta. DAV in preusmeritve morajo ostati na istem izvoru URL (shema, gostitelj, vrata). Pri posredniku med izvori nastavite končni kanonični URL; poverilnice se ne posredujejo drugemu izvoru. Nepravilen XML, deklaracije tipa dokumenta, nepričakovani dokumenti in neuspešna stanja virov prekinejo pridobivanje pred obnovo osirotelih predlogov. Manjkajoči izbirni ETag je dovoljen in sproži nov zajem.
Predloge kvot
Dovoljene enote so B, KB, MB, GB, TB brez razlikovanja črk, npr. 100MB, 1GB, 0.5TB. Manjkajoče/nepodprte so zavrnjene; 1024MB se normalizira v 1GB. Validator sprejme nenegativna decimalna števila ter none in default; unlimited postane none.
Skupina Access Rights (base.group_erp_manager) upravlja nextcloud.quota.template. Dobavljen je okenski Nextcloud Quota Templates, ne poseben meni; dosegljiv je v razvijalskem načinu ali prek Default quota template v Nastavitvah. Interni uporabniki predloge berejo.
Na Settings → Nextcloud izberite privzeto kvoto trenutnega podjetja. Ustvarjeni partner brez/prazne kvote dobi privzeto svojega podjetja, pri skupnem trenutnega. To je lokalna privzeta vrednost brez ustvarjanja oddaljenega računa; sprememba ne posodobi obstoječih partnerjev. Brez predloge ali izrecne kvote sinhronizacija pošlje 100MB.
Dostop in podjetja
Nastavitve so v običajni skrbniški administraciji. Povezava, CardDAV, e-pošta in hramba so skupne zbirki. Računovska dejanja strežniško zahtevajo Access Rights, pisanje partnerja in dostop njegovega podjetja; sam gumb ni varnostna meja. Geslo in potek sta omejena v ORM. Privzeta kvota je na res.company. Aktivni interni uporabnik sme spremeniti samo svoj povezani račun s svojim geslom Odoo; strežnik cilj izpelje iz trenutnega partnerja in dovoljenih podjetij, ne sprejme tujega ID-ja. Portalni/javni so zavrnjeni.
base.group_user ima CRUD nad uvoženimi skupinami, stiki, povezavami, zagoni, preglednimi vrsticami in obema čarovnikoma v okviru podjetij in pravic partnerjev. CardDAV ni omejen na skrbnike računov. Sedem modelov CardDAV dovoljuje izbrana podjetja in skupne zapise, nove medpodjetniške povezave zavrne. Skupine in povezovalne nastavitve so skupne zbirki.
Lokalno ustvarjanje skupine zunaj uvoza poskusi tudi oddaljeno ustvarjanje in zavrne obstoječe ime. Uvoz doda samo neznane oddaljene ID-je, ne briše lokalnih manjkajočih skupin. Lokalno brisanje ne izbriše oddaljene.
Načrtovana dejanja
Nova namestitev ima Get Nextcloud User Data aktivno vsakih deset minut kot root. Privzeto izbere vsa podjetja in osveži povezane partnerje, tudi arhivirane, razen Missing or Inaccessible. Disabled, pending in error ostanejo upravičeni. Bere metapodatke, ne ustvarja ali uveljavlja čakajočih sprememb. Lastni cron uporabnik mora izpolniti pravice računovskih dejanj.
Expire Stored Nextcloud Passwords kot root vsako uro počisti samo potekle lokalne poverilnice/roke, tudi arhivirane. Obe dejanji sta noupdate in ohranita prilagojene razporede. Preverite Scheduled Actions v razvijalskem načinu.
Uporaba
Množično povezovanje uporabniških računov
Kot Access Rights s pisanjem stikov odprite Contacts → Nextcloud → Fetch and Pair Accounts, izberite podjetje in izbirno arhivirane stike ter Fetch Accounts. API prijava mora znati našteti uporabnike in brati podrobnosti; vidni so samo vrnjeni računi, CardDAV ni potreben. Celostranski seznam išče po uporabniškem/ prikaznem imenu, e-naslovu in stiku Odoo ter filtrira stanje ujemanja/izbire. Označbe preživijo filtre; Pair Selected Accounts obdeluje vse označene v seji. Pri No Match lahko Create and Pair ustvari stik podjetja z oddaljenim prikaznim imenom ali uporabniškim imenom in e-naslovom ter ga takoj poveže. Drugi predlogi ostanejo; če povezava odpove, se novi stik ne ohrani.
Predlogi združijo natančne normalizirane e-naslove in polna kontaktna imena proti uporabniškim/prikaznim imenom. Imena prezrejo velikost črk in odvečne presledke, zato se lahko ujemajo pri različnih e-naslovih. Sporni dokazi/ponovljena imena so Multiple Candidates brez tihe prednosti. Izberite pravi Odoo Contact, tudi ročno brez ujemanja, označite Pair in potrdite. Začetno ni nič izbrano. Upravičeni so skupni stiki ali stiki izbranega podjetja, ne nedostopni. Seje in pridobljene podrobnosti so zasebne ustvarjalcu in dovoljenim podjetjem.
Povezovanje znova preveri oddaljeni račun in atomarno uporabi lokalne preslikave. Ne ustvarja oddaljenih računov ali spreminja podatkov, gesel, kvot, skupin ali aktivnosti. Trenutno kvoto/skupine uvozi v stik. Skupine ponovno uporabi po ID ali poveže z nepovezano istoimensko lokalno; manjkajoče ustvari samo v Odoo. Podvojena lokalna imena razrešite prej. Kvota uporablja omejitev API, ne skupne/ proste shrambe, in ohrani točne bajte ter neomejeno. Neznana/manjkajoča kvota blokira povezovanje brez nadomestne; predloge se ne ustvarijo/spremenijo.
Obstoječe povezave ostanejo. En račun ima en stik, tudi arhiviran. Nedostopni in že povezani so prikazani ločeno. Uspeh nastavi Linked ali Disabled brez zahteve sinhronizacije. Fetch Again zavrže izbire in obnovi predloge. Povezani račun v obsegu lahko znova izberete za osvežitev kvote/skupin, ki se pred uporabo ponovno prebereta.
Posamezni račun in stanja
Na aktivnem partnerju z e-naslovom odprite Nextcloud.
Nastavite kvoto/skupine in shranite; shranjevanje ne kliče Nextcloud.
Kot skrbnik Create Account ustvari uporabniško ime iz e-naslova. Za obstoječi račun vnesite točni Nextcloud ID in Link Existing Account: preveri ga in uvozi kvoto/skupine brez oddaljenih sprememb.
Synchronize Account uveljavi podrobnosti, kvoto in skupine. Članstva natančno zamenja, tudi odstrani vsa pri praznem izboru, in omogoči disabled račun. Urejanje povezanega partnerja kaže Pending Synchronization.
Refresh NC Account prebere metapodatke in ohrani pending. Preglejte porabo in zadnjo prijavo.
Arhiv/aktivacija sta lokalna; za odvzem izrecno Disable Account. Unlink Locally odstrani preslikavo/predpomnilnik brez oddaljenega brisanja ali onemogočenja. Sprememba e-naslova sinhronizira kontaktni naslov, ne stabilnega uporabniškega imena.
OCS not-found 404 ali 998 označi Missing or Inaccessible, počisti predpomnilnik in shranjeno geslo, ID pa ohrani za obnovitev. Drugi izjemni, prazni ali neslovarski odgovori so ponovljive napake. Razpored manjkajoče preskoči; obnovite račun/pravice in ročno osvežite ali odklopite pred izrecnim novim. Samodejne ponovne izdelave ni. Tudi omejitve API lahko skrijejo račun; preverite pravice, preden sklepate o izbrisu.
Stanja so Not Linked, Pending Synchronization, Linked, Disabled, Missing or Inaccessible, Connection or Operation Error. Spremembe imena, e-naslova, telefona, spletne strani, aktivnosti, kvote ali skupin postavijo pending. Osvežitev prebere aktivnost brez čiščenja pending. Urejanje missing ostane missing do uspešnega ročnega preverjanja.
Sinhronizacija pošlje ime kot prikazno ime, e-naslov, telefon, spletno stran in kvoto; prazna telefon/splet počistita oddaljeni vrednosti. Ustvarjanje ne prevzame obstoječega imena: izrecno povežite ID. Arhiviranega ali brez e-naslova ni mogoče ustvariti/sinhronizirati, odklop/onemogočenje arhiviranega pa sta dovoljena.
Napake ohranijo preslikavo in stanje za ponovitev. Delnih oddaljenih zapisov Odoo ne more razveljaviti. Če ustvarjanje uspe, poznejši korak pa odpove, ostaneta preslikava in dejansko začetno geslo; ponovitev posodobi ta račun. Vmesnik vrne opozorilo za ohranjeno napako, avtomatizacija mora preveriti logični izid. Geslo nastane samo ob ustvarjanju ali izrecni ponastavitvi; sinhronizacija ohrani geslo in rok. Ustvarjanje uporablja naključni URL-safe žeton. Delna napaka lahko geslo ohrani v skrbniškem polju, čeprav sklop predpomnilnika še ni viden; najprej osvežite/ponovite. Klepet beleži odklop, onemogočenje in ponastavitev brez gesla, ni pa dnevnik vseh oddaljenih zapisov.
Ponastavitev gesla
Reset NC Password za partnerja z uporabniškim imenom zahteva Access Rights, pisanje in izbrano podjetje strežniško. Novo oddaljeno geslo zapiše v nextcloud_initial_password; polje in potek sta omejena z ORM.
Password retention (hours) določa hrambo novih/ponastavljenih gesel, privzeto 24 ur. Urno čiščenje odstrani samo lokalne potekle vrednosti/roke, tudi arhiviranih, ne oddaljenega gesla. Rok je ob geslu; poteklo je lahko vidno do naslednjega zagona. Nič pomeni trajno hrambo. Sprememba nastavitve velja samo za naslednja ustvarjanja/ponastavitve, ne briše za nazaj; sinhronizacija roka ne podaljša.
Izbirno omogočite Send password reset email in Password reset email template. Predloga dobi ctx['password']; preverite prejemnike/izpis, saj pošta lahko geslo hrani dlje. Izberite ali ustvarite obstoječo partnersko predlogo pred vklopom. XML predloge v kodi ni v manifestu in se ne naloži samodejno.
Sprememba lastnega gesla
V meniju uporabnika izberite Change Nextcloud Password, preverite prikazani račun ter vnesite trenutno Odoo geslo, novo Nextcloud geslo dolžine 12–1024 in potrditev. Change Password ne spremeni gesla Odoo; novo pošlje neposredno povezanemu računu brez shrambe/e-pošte. Uspeh počisti staro skrbniško geslo/rok in zabeleži revizijsko sporočilo brez poverilnic. Vhodna gesla se počistijo ob uspehu, napaki in zaprtju; sočasne podvojene oddaje med zahtevo so blokirane.
Staro Nextcloud geslo ni potrebno, trenutno Odoo pa je; velja Odoo omejitev poskusov. Partner mora biti aktiven/povezan in ne missing/disabled, sicer naj skrbnik najprej obnovi/poveže. Veljajo pravila gesel Nextcloud. To ni oddaljeni forgot-password ali e-poštni obnovitveni postopek Nextcloud.
Pregled stikov CardDAV
Odprite Contacts → Nextcloud → Sync Nextcloud Contacts.
Izberite All ali Selected z Fetch Addressbooks. Izbor v Select Addressbook kopira HREF v Addressbook HREF, ki ga lahko vnesete tudi ročno. Odkrivanje prvi HREF dopolni samo pri praznem polju. Selected zahteva HREF pred Fetch & Compare.
V Nextcloud Sync Review preglejte predloge in dvoumne primarne e-naslove.
Izberite Create Odoo, Link Existing, Ignore ali None. Dvoumni zahteva izrecnega partnerja. Pri Orphan Odoo Links izberite Keep ali Unlink, privzeto Unlink.
Apply Selected Actions pokaže števila. Create missing Odoo contacts in Deactivate orphan Nextcloud links sta privzeto omogočena; izključite za izpustitev kategorije, nato Apply.
Ujemanje uporablja samo prvi e-naslov vCard, obrezan in v malih črkah, proti natančnemu partnerjevemu brez razlikovanja črk. Sekundarni naslovi, telefoni, imena in UID ne sodelujejo. Enolični predlaga povezavo samo brez aktivne povezave partnerja, odsotnost ustvarjanje, več ujemanj ročni izbor. Stik brez e-naslova nima predlaganega dejanja.
Include Inactive Partners vključi arhivirane, sicer so izključeni tudi ob active_test=False. Povezava jih ne aktivira. Osirotelost preverja aktivne povezave podjetja zagona in skupne. UID/HREF ohrani prisotnost samo v istem imeniku; isti UID drugje je ne prikrije. All upošteva samo dejansko odkrite/ pridobljene imenike, ne odsotnih/nedostopnih. Selected samo enaki HREF. Odsotnost v pridobljenem imeniku ne dokazuje brisanja, saj pravice lahko skrijejo posamezne stike.
Uporaba ustvari partnerje ali lokalne povezave. Novi partner dobi ime, primarni e-naslov, prvi telefon, podjetje zagona in vrsto oseba; drugih telefonov/ lastnosti ne kopira. Povezovanje ne posodobi obstoječih podrobnosti partnerja. Osiroteli Unlink deaktivira lokalno povezavo brez brisanja partnerja/stika. Povratnega zapisovanja v CardDAV ni. Novi partner dobi lokalno privzeto kvoto, ne uporabniškega računa Nextcloud.
Stiki, povezave, zagoni, vrstice in čarovnika upoštevajo izbrana podjetja. Nova mešanja podjetij se zavrnejo; skupni partnerji so dovoljeni. Primerjava in osirotelost ostaneta v podjetju zagona tudi pri več omogočenih podjetjih. Re-fetch & Compare zamenja predloge/števce, zato izbire ponovno preglejte. Uporaba označi Done in v Log shrani ustvarjeno/povezano/odvezano, ne spremeni pa primerjalnega stanja uvoženega stika v linked.
Strežnik dovoli samo stanje Review, zavrne ponovitev in ob napaki razveljavi vse lokalne učinke. Link Existing zahteva uredljivega partnerja ustreznega e-naslova iz podjetja ali skupnega; dvoumni enega predlaganih, arhivirani Include Inactive. Končanega zagona ni mogoče ponovno pridobiti; ustvarite novega. Pred ustvarjanjem se znova preverijo trenutni partnerji in drugi predlogi istega zagona. Nov ustrezni partner ali več izbranih ustvarjanj z istim e-naslovom zavrne celotno uporabo pred ustvarjanjem. Ponovno primerjajte; pri podvojenih virih izberite eno ustvarjanje na e-naslov.
Indeks je pod Contacts → Nextcloud → Nextcloud Contacts, preslikave pod Nextcloud Contact Links. Filtri so Missing in Odoo, Ambiguous, Matched, Last Seen Today; skupine imenik/stanje. Obrazci kažejo sezname JSON e-naslovov/ telefonov in izbirni vCard, neposredno ustvarjanje v teh pogledih je izključeno. Povezave ohranijo opombe, identitete in neaktivno zgodovino. Partner ima metodo in izračunana polja aktivnih povezav, dobavljeni obrazec pa nima posebnega gumba.
Podatkovni model
res.partner hrani ime računa, zahtevano kvoto/skupine, odgovor/čas, stanje/napako, pending, ustvarjeno geslo in rok. Preslikava, predpomnilnik, geslo in procesna polja se pri podvajanju ne kopirajo. Poraba/prijava sta izračunani iz predpomnilnika; prostor je v bajtih. nextcloud.groups hrani ID, ime in barvo, nextcloud.quota.template obvezno kvoto in ime podjetja, enolično v njem. res.company.nextcloud_default_quota_template_id je lokalna privzeta vrednost novih partnerjev.
nextcloud.contact hrani CardDAV, nextcloud.contact.link partnerja, nextcloud.contact.sync.run in pregledne vrstice predloge/izide, najnovejši zagoni prvi. Neprazni isti ETag osveži zadnjo zaznavo brez novega vCard, razen manjkajočega besedila pri vklopljeni hrambi. Podjetje povezave sledi stiku, sicer partnerju. Ena aktivna povezava na partnerja velja prek podjetij; neaktivne ostanejo kot zgodovina.
Integracijski API
Izrecni send_nextcloud_user() ustvari/sinhronizira, set_nextcloud_group() spreminja samo skupine, get_nextcloud_user() osveži metapodatke. Prazen nabor slednjega pomeni načrtovano osvežitev upravičenih računov, ne odsotnosti dela. Skupinska sprememba preveri račun brez čiščenja drugih pending. UI metode vrnejo obvestila Odoo; reset lahko sproži UserError pri predpogojih ali pisanju gesla. Običajni strežniški dostop/podjetja veljajo tudi zunaj UI.
CardDAV čarovnik kliče sinhrono brez queue-job. Odkriti imeniki se prenesejo v kontekstu ponovno odprtega čarovnika do izbirnika. Shranjeni create_missing_odoo in unlink_orphan_links ne določata uporabe; čarovnik poda lastni logični izbiri.
res.users.get_own_nextcloud_account() vrne lastno ime računa; action_change_own_nextcloud_password(odoo_password, new_password, confirmation) spremeni samo tega in ob uspehu vrne True. Napačne poverilnice/predpogoji in oddaljene napake sprožijo napako. Nobena ne sprejme ciljnega uporabnika/ partnerja. Samo čiščenje starega skrbniškega gesla in revizijski zapis uporabita ozko omejeni povišani dostop. Obrazci uporabljajo izvorni JSON Odoo, zaledni spletni viri pa dialog lastnega gesla.
Znane omejitve
Uvajanje je odvisno od združljivosti API Nextcloud/ownCloud prek pyocclient. Poštne kopije gesel lahko preživijo čiščenje, ničelna hramba je trajna. Ustvarjena gesla ščitijo pravice Odoo, ne šifriranje dodatka. Čiščenje ne izbriše e-pošte, varnostnih kopij ali zunanjih sistemov. Lastna sprememba zahteva geslo Odoo; samo zunanje overjeni ga pridobijo pri skrbniku. Lastna obnovitev Nextcloud/e-pošta ni v obsegu.
Stiki nimajo dvosmerne sinhronizacije, popolnega parserja vCard ali ponavljajočih uvozov. Podprti so razgrnjeni FN/UID/EMAIL/TEL, skupine lastnosti, standardni ubežni znaki, mailto/tel, starejša quoted-printable/base64 besedila z nabori znakov in nadomestna strukturirana imena N brez FN. Poštni naslovi, organizacije, fotografije in vsi parametri niso preslikani.
Računovske operacije in uvozi so sinhroni ter odvisni od odzivnega časa; zunanji zapisi niso porazdeljene transakcije. Osiroteli predlogi so odvisni od obsega/pravic: izrecne napake prekinejo, uspešen odgovor lahko še tiho izpusti nedostopne stike. Preglejte pred deaktivacijo. Preverjanja zavrnejo zastarele in ponovljene e-naslove v enem zagonu, sočasni ločeni zagoni pa nimajo enolične omejitve e-naslovov po celotni zbirki. Dnevniki tretjih oseb/strežnikov/posrednikov/ pošte niso v zasebnostnem nadzoru modula; lastni ne vsebujejo imen računov, zasebnih URL-jev, oddaljenih izjem ali metapodatkov uporabnikov.
Prijava napak
Napake spremljamo v sistemu prijav repozitorija PMISuite. Before opening a new issue, check whether it has already been reported. Include the module and Odoo versions, steps to reproduce, and expected and actual results. Use synthetic examples and redact sensitive information.
Zasluge
Avtorji
Sodelujoči
Matjaž Mozetič
Carlo Vettore
Vzdrževalci
Trenutni vzdrževalec:
Luxim je neodvisno podjetje za raziskave, razvoj in uvajanje rešitev, usmerjeno v reševanje zahtevnih problemov v ekosistemu Odoo.
Luxim je aktiven član OCA (Odoo Community Association).






