Closed LivingWithHippos closed 2 years ago
Smanettando un pò ho visto che usando il superutente posso creare la fattura, quindi sembra essere effettivamente un problema di permessi.
Qualche altro dettaglio:
Ho fatto delle prove con i test con questo comando
docker-compose run web \
--test-enable \
--stop-after-init \
-d odoo \
-i l10n_it_fatturapa_sale
e i test sembrano passare, in compenso l'errore salta fuori testando il modulo di vendite sale
(che a quanto pare è diverso dall'applicazione di vendite di sale_management
):
INFO odoo odoo.modules.module: odoo.addons.sale.tests.test_access_rights running tests.
INFO odoo odoo.addons.sale.tests.test_access_rights: test_access_employee (odoo.addons.sale.tests.test_access_rights.TestAccessRights)
INFO odoo odoo.addons.sale.tests.test_access_rights: ` Test classic employee's access rights
INFO odoo odoo.addons.base.models.ir_model: Access Denied by ACLs for operation: read, uid: 48, model: sale.order
INFO odoo odoo.addons.base.models.ir_model: Access Denied by ACLs for operation: write, uid: 48, model: sale.order
INFO odoo odoo.addons.base.models.ir_model: Access Denied by ACLs for operation: create, uid: 48, model: sale.order
INFO odoo odoo.addons.base.models.ir_model: Access Denied by ACLs for operation: read, uid: 48, model: sale.order
INFO odoo odoo.addons.base.models.ir_model: Access Denied by ACLs for operation: read, uid: 48, model: sale.order
INFO odoo odoo.addons.sale.tests.test_access_rights: test_access_portal_user (odoo.addons.sale.tests.test_access_rights.TestAccessRights)
INFO odoo odoo.addons.sale.tests.test_access_rights: ` Test portal user's access rights
INFO odoo odoo.models: L'operazione richiesta non può essere completata a causa delle regole di registrazione: Tipo di documento: sale.order, Operazione: read, Record: 41, Utente: 52
INFO odoo odoo.addons.base.models.ir_model: Access Denied by ACLs for operation: write, uid: 52, model: sale.order
INFO odoo odoo.addons.base.models.ir_model: Access Denied by ACLs for operation: read, uid: 52, model: ir.sequence
INFO odoo odoo.models: Access Denied by ACLs for operation: read, uid: 52, model: sale.order, fields: related_documents
INFO odoo odoo.models: Access Denied by ACLs for operation: read, uid: 52, model: sale.order, fields: related_documents
INFO odoo odoo.addons.sale.tests.test_access_rights: test_access_sales_manager (odoo.addons.sale.tests.test_access_rights.TestAccessRights)
INFO odoo odoo.addons.sale.tests.test_access_rights: ` Test sales manager's access rights
INFO odoo odoo.models: Access Denied by ACLs for operation: read, uid: 54, model: sale.order, fields: related_documents
INFO odoo odoo.models: Access Denied by ACLs for operation: read, uid: 54, model: sale.order, fields: related_documents
ERROR odoo odoo.addons.sale.tests.test_access_rights: ERROR
INFO odoo odoo.addons.sale.tests.test_access_rights: test_access_sales_person (odoo.addons.sale.tests.test_access_rights.TestAccessRights)
INFO odoo odoo.addons.sale.tests.test_access_rights: ` Test Salesperson's access rights
INFO odoo odoo.models: L'operazione richiesta non può essere completata a causa delle regole di registrazione: Tipo di documento: sale.order, Operazione: read, Record: 44, Utente: 61
INFO odoo odoo.models: Access Denied by record rules for operation: read on record ids: [45], uid: 61, model: sale.order
INFO odoo odoo.models: Access Denied by ACLs for operation: read, uid: 61, model: sale.order, fields: related_documents
INFO odoo odoo.models: Access Denied by ACLs for operation: read, uid: 61, model: sale.order, fields: related_documents
INFO odoo odoo.addons.sale.tests.test_access_rights: ======================================================================
ERROR odoo odoo.addons.sale.tests.test_access_rights: ERROR: test_access_sales_manager (odoo.addons.sale.tests.test_access_rights.TestAccessRights)
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` Test sales manager's access rights
ERROR odoo odoo.addons.sale.tests.test_access_rights: Traceback (most recent call last):
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/api.py", line 1049, in get
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` value = self._data[key][field][record._ids[0]]
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` KeyError: 43
ERROR odoo odoo.addons.sale.tests.test_access_rights: `
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` During handling of the above exception, another exception occurred:
ERROR odoo odoo.addons.sale.tests.test_access_rights: `
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` Traceback (most recent call last):
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1065, in __get__
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` value = record.env.cache.get(record, self)
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/api.py", line 1051, in get
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` raise CacheMiss(record, field)
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` odoo.exceptions.CacheMiss: ('sale.order(43,).related_documents', None)
ERROR odoo odoo.addons.sale.tests.test_access_rights: `
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` During handling of the above exception, another exception occurred:
ERROR odoo odoo.addons.sale.tests.test_access_rights: `
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` Traceback (most recent call last):
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/models.py", line 2880, in _prefetch_field
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` result = records.read([f.name for f in fs], load='_classic_write')
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/models.py", line 2800, in read
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` fields = self.check_field_access_rights('read', fields)
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/models.py", line 2780, in check_field_access_rights
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` + ' - ({} {}, {} {})'.format(_('User:'), self._uid, _('Fields:'), ', '.join(invalid_fields))
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` odoo.exceptions.AccessError: ("L'operazione richiesta non può essere completata per questioni di di sicurezza. Si prega di contattare l'amministratore di sistema.\n\n(Tipo documento: Sale Order, Operazione: read) - (Utente: 54, Campi: related_documents)", None)
ERROR odoo odoo.addons.sale.tests.test_access_rights: `
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` During handling of the above exception, another exception occurred:
ERROR odoo odoo.addons.sale.tests.test_access_rights: `
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` Traceback (most recent call last):
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/addons/sale/tests/test_access_rights.py", line 78, in test_access_sales_manager
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` sale_order.sudo(self.user_manager).unlink()
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/mnt/extra-addons/l10n-italy/l10n_it_fatturapa_sale/models/sale_order.py", line 36, in unlink
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` related_documents = self.mapped('related_documents')
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/models.py", line 4914, in mapped
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` recs = recs._mapped_func(operator.itemgetter(name))
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/models.py", line 4893, in _mapped_func
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` vals = [func(rec) for rec in self]
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/models.py", line 4893, in <listcomp>
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` vals = [func(rec) for rec in self]
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/models.py", line 5167, in __getitem__
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` return self._fields[key].__get__(self, type(self))
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1069, in __get__
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` self.determine_value(record)
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1172, in determine_value
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` record._prefetch_field(self)
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/models.py", line 2883, in _prefetch_field
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` result = self.read([f.name for f in fs], load='_classic_write')
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/models.py", line 2800, in read
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` fields = self.check_field_access_rights('read', fields)
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` File "/usr/lib/python3/dist-packages/odoo/models.py", line 2780, in check_field_access_rights
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` + ' - ({} {}, {} {})'.format(_('User:'), self._uid, _('Fields:'), ', '.join(invalid_fields))
ERROR odoo odoo.addons.sale.tests.test_access_rights: ` odoo.exceptions.AccessError: ("L'operazione richiesta non può essere completata per questioni di di sicurezza. Si prega di contattare l'amministratore di sistema.\n\n(Tipo documento: Sale Order, Operazione: read) - (Utente: 54, Campi: related_documents)", None)
INFO odoo odoo.addons.sale.tests.test_access_rights: Ran 4 tests in 3.923s
ERROR odoo odoo.addons.sale.tests.test_access_rights: FAILED
INFO odoo odoo.addons.sale.tests.test_access_rights: (errors=1)
ERROR odoo odoo.modules.module: Module sale: 0 failures, 1 errors
Ho provato a guardare i permessi su regole su record e diritti di accesso ma non ho ancora imparato a destreggiarmi abbastanza... Scusa se ti pingo @SimoRubi , hai qualche suggerimento?
Ciao,
questo succede perché il collegamento tra le righe d'ordine di vendita e i documenti correlati (ossia il campo related_documents
nel modello sale.order.line
) è accessibile solo agli utenti nel gruppo Mostrare funzionalità contabili complete:
https://github.com/OCA/l10n-italy/blob/f01ef9c96319b45ac8e777e338476b60f67ac75a/l10n_it_fatturapa_sale/models/sale_order_line.py#L15
devi quindi assegnare questo gruppo agli utenti che ti interessano per non avere più l'errore.
Volendo cambiare questo comportamento, si può modificare il gruppo che può accedere ai Documenti correlati in account.group_account_invoice
(lo stesso gruppo che può aprire i documenti correlati, le fatture ecc).
@OCA/local-italy-maintainers che ne dite si può chiudere o la teniamo aperta e modifichiamo il comportamento attuale?
Confermo che aggiungere l'utente funziona.
A parte il cambiamento di gruppo posso suggerire di aggiungere una specifica al readme di l10n_it_fatturapa_sale
che indichi di aggiungere l'utente al gruppo "Mostrare funzionalità contabili complete".
Un altra curiosità, dal codice avrei potuto effettivamente trovare il gruppo group_account_user
ma come si può risalire da quello a "Mostrare funzionalità contabili complete"? Il menù gruppi mostra solo i nomi "funzionali"
Un altra curiosità, dal codice avrei potuto effettivamente trovare il gruppo
group_account_user
ma come si può risalire da quello a "Mostrare funzionalità contabili complete"? Il menù gruppi mostra solo i nomi "funzionali"
In Settings > Technical > Sequences & Identifiers > External Identifiers puoi cercare group_account_user
e troverai:
che mostra il nome funzionale.
Aprendo la riga puoi anche trovare un collegamento al record del gruppo
In generale se il campo è accessibile solo da "Mostrare funzionalità contabili complete" , gli utenti che non hanno quel gruppo non dovrebbero ottenere errore, dovrebbero non accedere al (non vedere il) campo
In generale se il campo è accessibile solo da "Mostrare funzionalità contabili complete" , gli utenti che non hanno quel gruppo non dovrebbero ottenere errore, dovrebbero non accedere al (non vedere il) campo
Vero, infatti l'errore non c'è perché l'interfaccia prova a visualizzarlo (in quel caso semplicemente non si vedrebbe), ma perché lo si cerca di leggere lato codice, nello specifico in https://github.com/OCA/l10n-italy/blob/22bc525078fdfbfb778d652fbfb74670afa39da7/l10n_it_fatturapa_sale/models/sale_order_line.py#L28
Quindi pur restando vero che si può aggirare entrando nel gruppo "Mostrare funzionalità contabili complete", penso sia da correggere il codice: https://github.com/OCA/l10n-italy/pull/2334
@SimoRubi sarebbe ottimo se si riuscisse a mergiare #2334 perchè anche a livello di runbot (oca italy e interno) non si riesce a testare il giro della fatturazione se non perdendo tempo ad investigare come risolvere l'errore, per poi arrivare alla conclusione di dover disinstallare fatturapa_sale o trovare questa issue per capire che bisogna attivare le funzionalità contabili complete (dato che non è scritto nel readme)
@SimoRubi sarebbe ottimo se si riuscisse a mergiare #2334 perchè anche a livello di runbot (oca italy e interno) non si riesce a testare il giro della fatturazione se non perdendo tempo ad investigare come risolvere l'errore, per poi arrivare alla conclusione di dover disinstallare fatturapa_sale o trovare questa issue per capire che bisogna attivare le funzionalità contabili complete (dato che non è scritto nel readme)
Eh sì concordo, puoi lasciare un'approvazione nella PR in modo da sveltire il merge? Lo puoi fare seguendo https://www.odoo-italia.org/documentazione/12.0/sviluppo/review.html#revisione
Sarebbe da provare se la #2084 fixa. L'avevo creata su segnalazione specifica, i dettagli non li ricordo.
@LivingWithHippos puoi verificare se il problema è risolto in 12.0
?
Io ho appena provato in runboat e il comportamento è quello atteso
@LivingWithHippos puoi verificare se il problema è risolto in
12.0
? Io ho appena provato in runboat e il comportamento è quello atteso
in 12.0 è ok in 14.0 crei fattura solo con le funzionalità contabili complete
@OCA/local-italy-maintainers mergiamo e chiudiamo? :)
@OCA/local-italy-maintainers mergiamo e chiudiamo? :)
Questa è una issue. Cosa intendi con mergiare?
v 14: #2767
mergiare la PR che risolve la issue
Merge dell PRs eseguito. Chiudo.
Versioni coinvolte:
12.0
: https://github.com/OCA/l10n-italy/pull/208414.0
: https://github.com/OCA/l10n-italy/pull/2767Installazione "pulita" con fatturazione + magazzino + acquisti + vendite e tutti gli addon installati a seguito di fatturapa_pec
Passi per riprodurre:
Comportamento osservato:
La creazione della fattura fallisce con il messaggio
Dalla console web:
Comportamento atteso:
La fattura viene creata.
Questa funzionalità mi sembra sia stata creata da #1708