I have a problem when i try to convert order in invoice just after choice that i want to invoice (all/percent/ect ...) in a custom field "mode_reglement"
I have no problem in my development environment but in production : The trace :
> Odoo Server Error Traceback (most recent call last): File > "/var/www/odoo/openerp/http.py", line 530, in handle_exception return > super(JsonRequest, self)._handle_exception(exception) File > "/var/www/odoo/openerp/http.py", line 567, in dispatch result = > self._call_function(**self.params) File > "/var/www/odoo/openerp/http.py", line 303, in _call_function return > checked_call(self.db, *args, **kwargs) File > "/var/www/odoo/openerp/service/model.py", line 113, in wrapper return > f(dbname, *args, **kwargs) File "/var/www/odoo/openerp/http.py", line > 300, in checked_call return self.endpoint(*a, **kw) File > "/var/www/odoo/openerp/http.py", line 796, in call return > self.method(*args, **kw) File "/var/www/odoo/openerp/http.py", line > 396, in response_wrap response = f(*args, **kw) File > "/var/www/odoo/openerp/addons/web/controllers/main.py", line 953, in > call_button action = self._call_kw(model, method, args, {}) File > "/var/www/odoo/openerp/addons/web/controllers/main.py", line 941, in > _call_kw return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) File > "/var/www/odoo/openerp/api.py", line 241, in wrapper return > old_api(self, *args, **kwargs) File > "/var/www/odoo/openerp/addons/sale/wizard/sale_make_invoice_advance.py", > line 175, in create_invoices res = sale_obj.manual_invoice(cr, uid, > sale_ids, context) File "/var/www/odoo/openerp/api.py", line 241, in > wrapper return old_api(self, *args, **kwargs) File > "/var/www/odoo/openerp/addons/sale/sale.py", line 455, in > manual_invoice self.signal_workflow(cr, uid, ids, 'manual_invoice') > File "/var/www/odoo/openerp/api.py", line 241, in wrapper return > old_api(self, *args, **kwargs) File "/var/www/odoo/openerp/models.py", > line 3527, in signal_workflow result[res_id] = > workflow.trg_validate(uid, self._name, res_id, signal, cr) File > "/var/www/odoo/openerp/workflow/_init__.py", line 85, in trg_validate > return WorkflowService.new(cr, uid, res_type, res_id).validate(signal) > File "/var/www/odoo/openerp/workflow/service.py", line 91, in validate > res2 = wi.validate(signal) File > "/var/www/odoo/openerp/workflow/instance.py", line 75, in validate > wi.process(signal=signal, force_running=force_running, stack=stack) > File "/var/www/odoo/openerp/workflow/workitem.py", line 120, in > process ok = self._split_test(activity['split_mode'], signal, stack) > File "/var/www/odoo/openerp/workflow/workitem.py", line 248, in > _split_test self._join_test(t0, t1, stack) File "/var/www/odoo/openerp/workflow/workitem.py", line 257, in _join_test > WorkflowItem.create(self.session, self.record, activity, inst_id, > stack=stack) File "/var/www/odoo/openerp/workflow/workitem.py", line > 95, in create workflow_item.process(stack=stack) File > "/var/www/odoo/openerp/workflow/workitem.py", line 116, in process if > not self._execute(activity, stack): File > "/var/www/odoo/openerp/workflow/workitem.py", line 187, in _execute > id_new = self.wkf_expr_execute(activity) File > "/var/www/odoo/openerp/workflow/workitem.py", line 313, in > wkf_expr_execute return self.wkf_expr_eval_expr(activity['action']) > File "/var/www/odoo/openerp/workflow/workitem.py", line 291, in > wkf_expr_eval_expr result = eval(line, env, nocopy=True) File > "/var/www/odoo/openerp/tools/safe_eval.py", line 314, in safe_eval > return eval(c, globals_dict, locals_dict) File "", line 1, in > File "/var/www/odoo/openerp/api.py", line 239, in wrapper return > new_api(self, *args, **kwargs) File "/var/www/odoo/openerp/api.py", > line 546, in new_api result = method(self._model, cr, uid, self.ids, > *args, **kwargs) File "/var/www/odoo/openerp/addons/sale_stock/sale_stock.py", line 143, in > action_invoice_create res = > super(sale_order,self).action_invoice_create(cr, uid, ids, > grouped=grouped, states=states, date_invoice = date_invoice, > context=context) File "/var/www/odoo/openerp/api.py", line 241, in > wrapper return old_api(self, *args, **kwargs) File > "/var/www/odoo/openerp/addons/sale/sale.py", line 559, in > action_invoice_create res = self._make_invoice(cr, uid, order, il, > context=context) File "/var/www/odoo/openerp/api.py", line 241, in > wrapper return old_api(self, *args, **kwargs) File > "/var/www/odoo/openerp/addons/sale/sale.py", line 432, in > _make_invoice inv_id = inv_obj.create(cr, uid, inv, context=context) File "/var/www/odoo/openerp/api.py", line 241, in wrapper return > old_api(self, *args, **kwargs) File > "/var/www/odoo/openerp/addons/mail/mail_thread.py", line 377, in > create thread_id = super(mail_thread, self).create(cr, uid, values, > context=context) File "/var/www/odoo/openerp/api.py", line 241, in > wrapper return old_api(self, *args, **kwargs) File > "/var/www/odoo/openerp/api.py", line 336, in old_api result = > method(recs, *args, **kwargs) File "/var/www/odoo/openerp/models.py", > line 4043, in create record = self.browse(self._create(old_vals)) File > "/var/www/odoo/openerp/api.py", line 239, in wrapper return > new_api(self, *args, **kwargs) File "/var/www/odoo/openerp/api.py", > line 462, in new_api result = method(self._model, cr, uid, *args, > **kwargs) File "/var/www/odoo/openerp/models.py", line 4181, in _create tuple([u2 for u in updates if len(u) > 2]) File "/var/www/odoo/openerp/sql_db.py", line 158, in wrapper return f(self, > *args, **kwargs) File "/var/www/odoo/openerp/sql_db.py", line 234, in execute res = self._obj.execute(query, params) ValueError: "ERREUR: > une valeur NULL viole la contrainte NOT NULL de la colonne \xab > mode_reglement \xbb " while evaluating u'action_invoice_create() '
A similar problem appear when i want to do a credit side in a manual invoice (while mode_reglement field are not empty and not null):
The operation cannot be completed, probably due to the following: - deletion: you may be trying to delete a record while other records still reference it - creation/update: a mandatory field is not correctly set [object with reference: mode_reglement - mode.reglement]
My code :
class mode_reglement(osv.osv): _name = 'cap.mode_reglement' _columns = { 'name' : fields.char('Nom',required=True), } class account_invoice(osv.osv): _inherit = 'account.invoice' _columns = { 'mode_reglement':fields.many2one('cap.mode_reglement','Mode de reglement',auto_join=True,required=True), }