目标是获取销售日期并创建一个自动访问计划,三年内每年 2 次访问,我可以在旧版本的 odoo 中做到这一点,但现在我收到此错误。
在 Openerp 7 中有效,但现在我想在 Odoo 11.0 Python 3 中做到这一点,真的我不明白我错过了什么
class garantias(models.Model):
_name = 'itriplee.garantias'
equipo = fields.Many2one('itriplee.equipos', 'Equipo')
fecha_de_venta = fields.Date('Fecha de Venta', related='equipo.venta', readonly=True)
@api.model
def create(self, vals):
obj_visita = self.pool.get('itriplee.servicio')
obj = self.env['itriplee.garantias']
cliente = obj.cliente.id
fecha_compra = obj.fecha_de_venta
fm = ('%Y-%m-%d')
cantidad_meses = 6
ind = 0
now = datetime.now()
now_str = now.strftime(fm)
now_int = datetime.strptime(now_str, fm)
# fecha_compra_original = datetime.strptime(fecha_compra, fm)
fecha_compra_inicial = datetime.strptime(fecha_compra, fm)
while ind < cantidad_meses:
fecha_6_meses = fecha_compra_inicial + relativedelta(months=6)
if fecha_6_meses >= now_int:
obj_visita.create({'cliente':cliente,'visita':fecha_6_meses,'estado':'confirmar','visitas':obj.id},context=None)
ind = ind + 1
fecha_compra_inicial = fecha_6_meses
return True
并收到此错误:
Traceback (most recent call last):
File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 651, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 310, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/home/openerp/odoo-dev/odoo/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 693, in dispatch
result = self._call_function(**self.params)
File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 342, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/openerp/odoo-dev/odoo/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 335, in checked_call
result = self.endpoint(*a, **kw)
File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 937, in __call__
return self.method(*args, **kw)
File "/home/openerp/odoo-dev/odoo/odoo/http.py", line 515, in response_wrap
response = f(*args, **kw)
File "/home/openerp/odoo-dev/odoo/addons/web/controllers/main.py", line 934, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/home/openerp/odoo-dev/odoo/addons/web/controllers/main.py", line 926, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/openerp/odoo-dev/odoo/odoo/api.py", line 687, in call_kw
return call_kw_model(method, model, args, kwargs)
File "/home/openerp/odoo-dev/odoo/odoo/api.py", line 672, in call_kw_model
result = method(recs, *args, **kwargs)
File "/home/openerp/odoo-dev/odoo/addons/itriplee/models/garantias.py", line 53, in create
fecha_compra_inicial = datetime.strptime(fecha_compra, fm).date()
TypeError: strptime() argument 1 must be str, not bool
当该字段不是日期字符串或包含空值时,会发生此错误,因此在调用时返回 False 值。因此,首先确保在调用函数时该字段包含日期str.strptime方法需要日期字符串值。
您可以使用 if 条件来检查字段继续 strptime 方法中是否存在数据,或者如果您使用的是 pycharm,则可以添加断点来检查值