尝试转换发票中的订单时出错
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 中提供必填字段,因为用户也可以从其他选项创建发票。
当我尝试在自定义字段中选择要开具发票的选项(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 中提供必填字段,因为用户也可以从其他选项创建发票。