Bonjour
Dans une tache demandée : On demande d'ajouter un bouton dans le module : "stock.picking" qui doit ou bien envoyer ( send ) ou imprimer ( print ) le "invoice" ( "account.move" ) concernée . Pour ceci , j'ai ajouté le bouton et créé une fonction qui fait appel à la fonction "send_and_print_action()" qui se trouve dans le model "account.invoice.send". Voici le code que j'ai pu établir :
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 def send_and_print_invoice(self): print("Start Send and Print") # vals = {'invoice_ids' : self.sale_id.invoice_ids.ids} vals = [] invoice_ids = self.sale_id.mapped('invoice_ids.id') for elt in invoice_ids : print(elt) vals.append(elt) print(self.sale_id.invoice_ids.id) try : print('try ok') self.env['account.invoice.send'].create({'invoice_ids': [(6, 0, vals)]}) # self.env['account.invoice.send'].update({'group_id_test': [[6, 0, vals]]}) #self.env['account.invoice.send'].write({'invoice_ids': [[6, 0, vals]]}) except: traceback.print_exc() print("here") object = self.env['account.invoice.send'].search([]) # object = self.env['account.invoice.send'].search([('id', '!=', 0)]) if object : print('object existe') #for elt in object : # print(object.id) try : object.send_and_print_action() except: traceback.print_exc() else : print('object does not existe')
le problème est sur la ligne :C'est pour crée un record de "account.invoice.send" pour l'utiliser dans l'appel de la fonction avec : record.send_and_print_action().
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part self.env['account.invoice.send'].create({'invoice_ids': [(6, 0, vals)]})
La fonction que j'ai créé indique ce message d'erreur :J'aimerais bien savoir, qu'est ce qui ne va pas dans ma fonction, ce qui cause cet erreur. Merci.Traceback (most recent call last):
File "/opt/odoo13/odoo/odoo-custom-addons/exercice1/models/exercice1_stock_picking.py", line 28, in send_and_print_invoice
self.env['account.invoice.send'].create({'invoice_ids': [(6, 0, vals)]})
File "<decorator-gen-3>", line 2, in create
File "/opt/odoo13/odoo/odoo/api.py", line 335, in _model_create_multi
return create(self, [arg])
File "/opt/odoo13/odoo/odoo/models.py", line 3677, in create
vals = self._add_missing_default_values(vals)
File "/opt/odoo13/odoo/odoo/models.py", line 1738, in _add_missing_default_values
defaults = self.default_get(list(missing_defaults))
File "/opt/odoo13/odoo/addons/account/wizard/account_invoice_send.py", line 31, in default_get
invoices = self.env['account.move'].browse(res_ids).filtered(lambda move: move.is_invoice(include_receipts=True))
File "/opt/odoo13/odoo/odoo/models.py", line 5234, in filtered
return self.browse([rec.id for rec in self if func(rec)])
File "/opt/odoo13/odoo/odoo/models.py", line 5234, in <listcomp>
return self.browse([rec.id for rec in self if func(rec)])
File "/opt/odoo13/odoo/addons/account/wizard/account_invoice_send.py", line 31, in <lambda>
invoices = self.env['account.move'].browse(res_ids).filtered(lambda move: move.is_invoice(include_receipts=True))
File "/opt/odoo13/odoo/addons/account/models/account_move.py", line 1689, in is_invoice
return self.type in self.get_invoice_types(include_receipts)
File "/opt/odoo13/odoo/odoo/fields.py", line 1009, in __get__
_("(Record: %s, User: %s)") % (record, env.uid),
odoo.exceptions.MissingError: ('Record does not exist or has been deleted.\n(Record: account.move(33,), User: 2)', None)
Partager