在 datepicker odoo 10 中禁用以前的日期
Disable previous dates in datepicker odoo 10
我试图在支付发票时禁用之前的日期,但这对我不起作用。
这是我的模型:
from odoo import models, fields, api
from datetime import datetime
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT
class account_payment(models.Model):
_inherit = 'account.payment'
def onchange_date(self, cr, uid, ids, payment_date, context=None):
if datetime.strptime(payment_date, DEFAULT_SERVER_DATE_FORMAT).date() > datetime.now().date():
return False
return payment_date
这是我的 xml 文件:
<odoo>
<data>
<record model="ir.ui.view" id="view_account_payment_invoice_form">
<field name="name">account.payment.invoice.form</field>
<field name="model">account.payment</field>
<field name="inherit_id" ref="account.view_account_payment_invoice_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='payment_date']" position="replace">
<field name="payment_date" on_change="onchange_date(payment_date)"/>
</xpath>
</field>
</record>
</data>
</odoo>
错误:
TypeError: onchange_date() 需要至少 5 个参数(给定 2 个)
请有人帮助我。谢谢!
我认为这可能有用,
您的型号:
@api.onchange('payment_date')
def onchange_date(self):
if datetime.strptime(self.payment_date, DEFAULT_SERVER_DATE_FORMAT).date() > datetime.now().date():
self.payment_date = ''
您的看法:
<odoo>
<data>
<record model="ir.ui.view" id="view_account_payment_invoice_form">
<field name="name">account.payment.invoice.form</field>
<field name="model">account.payment</field>
<field name="inherit_id" ref="account.view_account_payment_invoice_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='payment_date']" position="replace">
<field name="payment_date"/>
</xpath>
</field>
</record>
</data>
</odoo>
您收到错误的原因是您将新旧混合使用 API。如果您想使用旧样式 API(cr, uid, ids, ...
和 XML on_change=...
),那么您必须在新的 API 方法(您的 python 是新的 API 因为你的 class 继承了 models.Model
).
models/account_payment.py
# This decorator provides cr, uid, ids, and context variables
# to your method by default (like the old API had)
@api.cr_uid_ids_context
def onchange_date(self, cr, uid, ids, payment_date, context=None):
...
您可以在 this blog post
上阅读更多关于这些特殊装饰器(在 9.0 版中引入)的信息
我试图在支付发票时禁用之前的日期,但这对我不起作用。
这是我的模型:
from odoo import models, fields, api
from datetime import datetime
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT
class account_payment(models.Model):
_inherit = 'account.payment'
def onchange_date(self, cr, uid, ids, payment_date, context=None):
if datetime.strptime(payment_date, DEFAULT_SERVER_DATE_FORMAT).date() > datetime.now().date():
return False
return payment_date
这是我的 xml 文件:
<odoo>
<data>
<record model="ir.ui.view" id="view_account_payment_invoice_form">
<field name="name">account.payment.invoice.form</field>
<field name="model">account.payment</field>
<field name="inherit_id" ref="account.view_account_payment_invoice_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='payment_date']" position="replace">
<field name="payment_date" on_change="onchange_date(payment_date)"/>
</xpath>
</field>
</record>
</data>
</odoo>
错误:
TypeError: onchange_date() 需要至少 5 个参数(给定 2 个)
请有人帮助我。谢谢!
我认为这可能有用, 您的型号:
@api.onchange('payment_date')
def onchange_date(self):
if datetime.strptime(self.payment_date, DEFAULT_SERVER_DATE_FORMAT).date() > datetime.now().date():
self.payment_date = ''
您的看法:
<odoo>
<data>
<record model="ir.ui.view" id="view_account_payment_invoice_form">
<field name="name">account.payment.invoice.form</field>
<field name="model">account.payment</field>
<field name="inherit_id" ref="account.view_account_payment_invoice_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='payment_date']" position="replace">
<field name="payment_date"/>
</xpath>
</field>
</record>
</data>
</odoo>
您收到错误的原因是您将新旧混合使用 API。如果您想使用旧样式 API(cr, uid, ids, ...
和 XML on_change=...
),那么您必须在新的 API 方法(您的 python 是新的 API 因为你的 class 继承了 models.Model
).
models/account_payment.py
# This decorator provides cr, uid, ids, and context variables
# to your method by default (like the old API had)
@api.cr_uid_ids_context
def onchange_date(self, cr, uid, ids, payment_date, context=None):
...
您可以在 this blog post
上阅读更多关于这些特殊装饰器(在 9.0 版中引入)的信息