Një firmë klienti ka ikur, kontrata ka përfunduar dhe dëshironi ta arkivoni në Odoo. Odoo përgjigjet me një mesazh gabimi: „Nuk mund të arkivoni kontakte që janë të lidhura me një përdorues aktiv. Arkivoni fillimisht përdoruesin përkatës.“ Nëse firma ka disa qasje portali, kjo do të thotë: ta kërkoni çdo përdorues veç e veç, ta arkivoni veç e veç, të ktheheni te firma, ta arkivoni sërish.
Për këtë kemi shkruar modulin e vogël Arkivimi i firmës bashkë me përdoruesit e portalit (partner_archive_users) për Odoo 19. Në vend të mesazhit të gabimit vjen një pyetje, dhe me „Po“ përdoruesit e portalit dhe firma arkivohen në një hap. Moduli është në GitHub si softuer i lirë nën licencën AGPL-3:
github.com/Alex0176/odoo-partner-archive-users
Moduli e përdorim te Biricon IT Services që nga 3 nëntori 2026 në sistemin tonë produktiv. Është i ri, pra përvoja me të është e shkurtër. Kush e merr, duhet të lexojë seksionet mbi Shtrirjen dhe Kufizimet .
Problemi në Odoo standard
Odoo kontrollon gjatë arkivimit të një kontakti nëse një përdorues varet prej tij dhe ndërpret nëse po. Kontrolli ka kuptim, sepse çdo përdorues ka nevojë për një kontakt. Për përdoruesit e brendshëm, pra punonjësit, bllokimi është edhe i dëshiruar. Por te përdoruesit e portalit të klientëve ai është mbi të gjitha punë me dorë. Çdo firmë klienti me qasje portali, për shembull për shikimin e faturave dhe tiketave, ka nevojë gjatë arkivimit për të njëjtin rrjedhë:
- të kërkohen përdoruesit e firmës dhe të personave të saj të kontaktit,
- secili të arkivohet veç e veç,
- të kthehesh te firma,
- të arkivohet firma.
Zgjidhja: një pyetje
Moduli e zgjeron rrugën Veprim → Arkivo te kontakti, si në formular ashtu edhe në listë. Nëse te firma e zgjedhur ose te personat e saj të kontaktit varen përdorues aktivë portali, hapet një dialog me pyetjen „A duhet të arkivohet vërtet firma? Ka ende përdorues aktivë në sistem.“ Poshtë tij janë përdoruesit e prekur me emër, emër hyrjeje dhe kontakt.
- Po, arkivo firmën dhe përdoruesit: Së pari arkivohen përdoruesit, pastaj firma.
- Anulo: Nuk ndryshon asgjë.
- Nuk ka përdorues portali: Odoo sillet si deri tani, nuk shfaqet asnjë dialog.
Çfarë arkivohet dhe çfarë jo
Shtrirja është qëllimisht e ngushtë:
- Vetëm përdoruesit e portalit dhe publikë (
share = True). Përdoruesit e brendshëm nuk arkivohen kurrë përmes kësaj rruge. Nëse një qasje punonjësi varet nga kontakti, mesazhi i gabimit i Odoo mbetet. Kështu askush nuk bllokon rastësisht një punonjës, sepse ka arkivuar një firmë. - Personat e kontaktit mbeten aktivë si kontakte. Arkivohen vetëm qasjet e tyre të portalit. Kjo përputhet me Odoo standard, që gjatë arkivimit të një firme nuk i prek as nënkontaktet.
- Vetëm rruga e arkivimit e ndërfaqes. Një
write({'active': False})i drejtpërdrejtë, për shembull në një import ose skript, ecën pa ndryshim në kontrollin e Odoo.
Zbatimi teknik
Moduli nuk ka fusha të reja te modelet ekzistuese. Ai përbëhet nga një zgjerim i res.partner.action_archive dhe një asistent (partner.archive.users.wizard), që shfaqet si dialog.
| Përbërësi | Detyra |
|---|---|
action_archive te kontakti | Kërkon përdorues aktivë me share = True, që varen nga kontakti ose (te firmat) nga kontaktet e firmës. Nëse ka të tillë, në vend që të arkivohet kthehet dialogu. |
| Asistenti | Ruan firmën dhe përdoruesit e gjetur, i shfaq dhe me „Po“ kryen arkivimin me çelësin e kontekstit archive_linked_users. |
Konteksti skip_archive_users_wizard | Çaktivizon dialogun. Atëherë vlen sërish kontrolli i Odoo. |
| Qasja | Asistentin mund ta krijojnë dhe ta përdorin përdoruesit e brendshëm (base.group_user). |
| Përkthimi | Gjermanishtja (de.po) dhe shablloni (.pot) janë të bashkëngjitura. |
Përdoruesit kërkohen dhe arkivohen me të drejta të ngritura (sudo). Kështu dialogu funksionon edhe për përdorues pa qasje te administrimi i përdoruesve. Ana tjetër shihet te Kufizimet.
Një gjetje: Testi ishte jeshil, dialogu megjithatë i prishur
Moduli kishte gjatë përdorimit të parë një gabim që testet automatike nuk e gjetën. Në klikimin e parë mbi „Arkivo“ në ndërfaqe, në vend të dialogut u shfaq ekrani i gabimit të Odoo me Cannot read properties of undefined (reading 'map').
Shkaku: Klienti i uebit e thërret drejtpërdrejt action_archive dhe e ekzekuton një veprim të kthyer pa përpunim të mëtejshëm. Aty ai lexon detyrimisht çelësin views të veprimit. Veprimi ynë kishte vetëm view_mode. Veprimet nga butonat me type="object" i plotëson serveri më parë (clean_action te call_button), thirrjen e drejtpërdrejtë të action_archive jo. Testet e thirrnin metodën vetëm në Python, dhe aty fusha që mungonte nuk binte në sy.
Korrigjimi është një rresht ("views": [(False, "form")]), plus një kontroll në test që e kërkon pikërisht këtë çelës. Gjatë kësaj nuk u arkivua asgjë. Mësimi: Kush kthen një veprim nga një metodë që klienti e thërret drejtpërdrejt (action_archive, action_unarchive dhe të ngjashme), duhet të japë gjithmonë edhe views.
Instalimi
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
Varësitë janë base dhe contacts. Pas instalimit shërbimi Odoo duhet të riniset, sepse moduli përmban kod Python. Kush operon një sistem produktiv, e instalon modulin fillimisht në një kopje të bazës së të dhënave.
Kufizimet
- Autorizimi. Meqenëse përdoruesit arkivohen me të drejta të ngritura, kushdo që lejohet të arkivojë një kontakt, mund të arkivojë përmes dialogut edhe qasjet e portalit të kësaj firme. Për përdoruesit e brendshëm kjo nuk vlen. Kush dëshiron t'i sigurojë më imët qasjet e portalit, duhet ta përshtatë modulin.
- Asnjë rikthim automatik. Nëse firma riaktivizohet më vonë, përdoruesit mbeten të arkivuar. Ata duhet të riaktivizohen me dorë.
- Vetëm kontaktet. Moduli prek firmat si kontakte (
res.partner). Arkivimi i një firme Odoo (res.company) ka kontrolle të tjera, për shembull nëse ajo është ende firma standarde e përdoruesve. Moduli nuk është menduar për këtë. - Testuar vetëm me Odoo 19.0 Community. Për versione të tjera nuk e kemi kontrolluar.
Pyetje të shpeshta
Pse nuk arkivohen edhe punonjësit?
Një përdorues i brendshëm ka të drejta në sistem dhe zakonisht është i lidhur me të dhëna, detyra dhe autorizime të veta. Ta bllokosh si efekt anësor të arkivimit të një firme është për ne shumë e rrezikshme. Prandaj mbetet mesazhi i gabimit i Odoo.
A mund ta çaktivizoj pyetjen?
Në kod përmes kontekstit skip_archive_users_wizard. Një cilësim në ndërfaqe nuk ka. Kush e çinstalon modulin, merr sërish sjelljen standarde të Odoo.
Nën cilën licencë është?
Nën AGPL-3. Gabimet dhe përmirësimet janë të mirëpritura si issue në repozitorin GitHub .
Mbështetje nga Biricon IT Services
Ne mirëmbajmë instalime Odoo për ndërmarrje të vogla dhe të mesme: nga futja në përdorim, përshtatjet dhe migrimet deri te funksionimi i vazhdueshëm. Nëse dëshironi t'i thjeshtoni procese si arkivimi i firmave të klientëve në Odoo, të ngrini një portal për klientët tuaj ose ta sillni një modul në mënyrë të sigurt në instancën tuaj produktive, ju ndihmojmë me kënaqësi. Zhvillime të tjera të brendshme: Numra dokumentesh nga prefiksi, viti dhe numëruesi, Firmenbuch dhe kontrolli i adresave për klientët austriakë dhe Sete produktesh në ofertë si seksion.
Gjendja: 3 nëntor 2026. Versioni i modulit 19.0.1.0.0 me korrigjimin e së njëjtës ditë. Të gjithë emrat dhe emrat e hyrjes në pamje janë të zgjedhur lirisht.