0
votes

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

1
I just delete required=true in model and add in view and it's okay !Youri Le Barch

1 Answers

1
votes

It's because you have specified that mode_reglement this field is mandatory in account.invoice so you have to provide value for that or set default value for that field in account.invoice model.

You should provide mandatory fields on UI because user can create invoice from other options as well.