尝试转换发票中的订单时出错

Error when try to convert order in invoice

当我尝试在自定义字段中选择要开具发票的选项(all/percent/ect ...)后转换发票中的订单时遇到问题 "mode_reglement"

我在开发环境中没有问题,但在生产环境中: 踪迹:


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

'

当我想在手动发票中做贷方时出现类似的问题(而 mode_reglement 字段不为空且不为空):

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]

我的代码:


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

这是因为您已指定 mode_reglement 此字段在 account.invoice 中是必填字段,因此您必须为其提供值或在 account.invoice 模型中为该字段设置默认值。

您应该在 UI 中提供必填字段,因为用户也可以从其他选项创建发票。