class delais(models.Model):
_name = 'delais.delais'
_description = "Delais des projets"
project_ids = fields.Many2one('project.project', string='Projet')
delai_arr_mois = fields.Float(string='Délai d\'Arrét en mois de projet', compute='_delai_arret')
this function calculates the sum of the nbr_mission of each project
def _delai_arret(self):
domaine = ('project_ids', '=', self.project_ids.id)
dict = self.env['mission.mission'].search_read([domaine], ['nbr_mission'])
# print(dict)
if not dict:
pass
else:
somme = 0
for key in dict:
# print(key['nbr_mission'])
somme = somme + key['nbr_mission'] / 30
# print('la somme est : {somme}')
self.delai_arr_mois = somme
# print(somme)class Missions(models.Model):
_name = 'mission.mission'
_description = 'Mission de chaque projet'
ordre_arre = fields.Date(string='Ordre d\'Arrét')
ordre_repr = fields.Date(string='Ordre de reprise')
nbr_mission = fields.Float(string='nombre de mission', compute='_delais_mission')
this function calculate number of missions
def _delais_mission(self):
for k in self:
if k.ordre_arre and k.ordre_repr:
date_1 = datetime.strptime(k.ordre_arre, '%Y-%m-%d')
date_2 = datetime.strptime(k.ordre_repr, '%Y-%m-%d')
k.nbr_mission = ((date_2 - date_1).days) / 30
#print(k.nbr_mission)
***the error is whene i try to creat a second deadline it gives me error
thank you for finding me a solutionTraceback (most recent call last): File "D:\Odoo 11.0\server\odoo\fields.py", line 936, in __get__ value = record.env.cache.get(record, self) File "D:\Odoo 11.0\server\odoo\api.py", line 960, in get value = self._data[field][record.id][key] KeyError: <odoo.api.Environment object at 0x000000000B89EF28> During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\Odoo 11.0\server\odoo\http.py", line 647, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "D:\Odoo 11.0\server\odoo\http.py", line 307, in _handle_exception raise pycompat.reraise(type(exception), exception, sys.exc_info()[2]) File "D:\Odoo 11.0\server\odoo\tools\pycompat.py", line 87, in reraise raise value File "D:\Odoo 11.0\server\odoo\http.py", line 689, in dispatch result = self._call_function(**self.params) File "D:\Odoo 11.0\server\odoo\http.py", line 339, in _call_function return checked_call(self.db, *args, **kwargs) File "D:\Odoo 11.0\server\odoo\service\model.py", line 97, in wrapper return f(dbname, *args, **kwargs) File "D:\Odoo 11.0\server\odoo\http.py", line 332, in checked_call result = self.endpoint(*a, **kw) File "D:\Odoo 11.0\server\odoo\http.py", line 933, in __call__ return self.method(*args, **kw) File "D:\Odoo 11.0\server\odoo\http.py", line 512, in response_wrap response = f(*args, **kw) File "D:\Odoo 11.0\server\odoo\addons\web\controllers\main.py", line 872, in search_read return self.do_search_read(model, fields, offset, limit, domain, sort) File "D:\Odoo 11.0\server\odoo\addons\web\controllers\main.py", line 894, in do_search_read offset=offset or 0, limit=limit or False, order=sort or False) File "D:\Odoo 11.0\server\odoo\models.py", line 4169, in search_read result = records.read(fields) File "D:\Odoo 11.0\server\odoo\models.py", line 2535, in read values[name] = field.convert_to_read(record[name], record, use_name_get) File "D:\Odoo 11.0\server\odoo\models.py", line 4688, in __getitem__ return self._fields[key].__get__(self, type(self)) File "D:\Odoo 11.0\server\odoo\fields.py", line 940, in __get__ self.determine_value(record) File "D:\Odoo 11.0\server\odoo\fields.py", line 1051, in determine_value self.compute_value(recs) File "D:\Odoo 11.0\server\odoo\fields.py", line 1007, in compute_value self._compute_value(records) File "D:\Odoo 11.0\server\odoo\fields.py", line 998, in _compute_value getattr(records, self.compute)() File "D:\Odoo 11.0\server\odoo\addons\dev\models\delais.py", line 40, in _delai_arret def _delai_ecoule_projet(self): File "D:\Odoo 11.0\server\odoo\fields.py", line 934, in __get__ record.ensure_one() File "D:\Odoo 11.0\server\odoo\models.py", line 4296, in ensure_one raise ValueError("Expected singleton: %s" % self) ValueError: Expected singleton: delais.delais(2, 18)
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Kế toán
- Tồn kho
- PoS
- Project
- MRP
Câu hỏi này đã bị gắn cờ
Ravi is right, many2one is many, so if you have two records of projects will be ( 'one', '=', 'one, two') that can't be right
why not :
def _delai_arret(self):
for rec in self:
dict = self.env['mission.mission'].search('project_ids', '=', rec.project_ids)
Please send def _delai_ecoule_projet(self): function..
def _delai_ecoule_projet(self):
if self.Date_commen and self.delai_arr_mois:
date_3 = datetime.strptime(self.Date_commen, '%Y-%m-%d')
self.delai_ecoule = ((datetime.now()-date_3).days / 30)-self.delai_arr_mois
thank you
Error raise due to "domaine = ('project_ids', '=', self.project_ids.id)" Here self has multi recordset and you try to get projects_ids from it
according to your business logic either iterate on self and get new domain for each record or
use domaine = ('project_ids', '=', self.mapped('project_ids').ids)
it remains the same error :(
Bạn có hứng thú với cuộc thảo luận không? Đừng chỉ đọc, hãy tham gia nhé!
Tạo tài khoản ngay hôm nay để tận hưởng các tính năng độc đáo và tham gia cộng đồng tuyệt vời của chúng tôi!
Đăng kýBài viết liên quan | Trả lời | Lượt xem | Hoạt động | |
---|---|---|---|---|
|
2
thg 2 24
|
15904 | ||
|
1
thg 12 22
|
5215 | ||
|
2
thg 12 22
|
14795 | ||
|
2
thg 6 22
|
6740 | ||
|
2
thg 6 22
|
4974 |