Skip to Content
Menu
This question has been flagged
2 Replies
1466 Views

I have create and write method in project.project model , the problem is the create function always give me user error in any situation and does not work well unless i comment out the write function . 

@api.model

defcreate(self, vals):

fdi = vals.get('soucre_fund_FDI',0)

ddi = vals.get('soucre_fund_DDI',0)

gov = vals.get('soucre_fund_GOV',0)
​total = fdi + ddi + gov

​iftotal != 100:

​raise UserError(_("The total of Source of fund (FDI %), Source of fund (DDI ​%), and Source of fund (GOV %) must equal 100."))
​self.clear_caches()

​returnsuper(Project, self).create(vals)


defwrite(self, vals):

fdi = vals.get('soucre_fund_FDI', self.soucre_fund_FDI)

ddi = vals.get('soucre_fund_DDI', self.soucre_fund_DDI)

gov = vals.get('soucre_fund_GOV', self.soucre_fund_GOV)
​total = fdi + ddi + goviftotal != 100:raise UserError(_("The total of Source of fund ​(FDI %), Source of fund (DDI %), and Source of fund (GOV %) must equal 100."))
​self.clear_caches()

​returnsuper(Project, self).write(vals)

Avatar
Discard
Author Best Answer

i solved it by add a if statement to the write function.

def write(self, vals):

​if 'soucre_fund_FDI' in vals or 'soucre_fund_DDI' in vals or 'soucre_fund_GOV' in ​vals:

​fdi = vals.get('soucre_fund_FDI', self.soucre_fund_FDI)

​ddi = vals.get('soucre_fund_DDI', self.soucre_fund_DDI)

​gov = vals.get('soucre_fund_GOV', self.soucre_fund_GOV)
​total = fdi + ddi + gov

​if total != 100:

​raise UserError(_("The total of Source of fund (FDI %), Source of fund (DDI %), and ​Source of fund (GOV %) ​must equal 100."))

​self.clear_caches()

​return super(Project, self).write(vals)

Avatar
Discard
Best Answer

Dear Mazinsali,


I think you need give space before function definition like this def create and def write

Avatar
Discard
Related Posts Replies Views Activity
1
Jun 20
34370
1
Nov 17
2604
1
Jun 16
4067
2
Aug 15
4844
1
Aug 23
2359