This question has been flagged

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 <module>

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),

}

Avatar
Discard

Did you add the 'required=True' condition to the fields at a later stage? This normally occurs because some records have been saved with an empty 'name' or 'mode_reglement' field. Then when you try to impose a constraint on it, it throws this error. So filling up the empty columns before adding the constraint will work. Hope this helps.