TRACEBACK Traceback (most recent call last): File "D:\lab\PycharmProjects\Smartwork\web2py\gluon\restricted.py", line 227, in restricted exec ccode in environment File "D:/lab/PycharmProjects/Smartwork/web2py/applications/smartwork/controllers/default.py" <http://127.0.0.1:8000/admin/default/edit/smartwork/controllers/default.py>, line 708, in <module> File "D:\lab\PycharmProjects\Smartwork\web2py\gluon\globals.py", line 417, in <lambda> self._caller = lambda f: f() File "D:/lab/PycharmProjects/Smartwork/web2py/applications/smartwork/controllers/default.py" <http://127.0.0.1:8000/admin/default/edit/smartwork/controllers/default.py>, line 300, in batch_payslip if form.process(onvalidation=check_batch).accepted: File "D:\lab\PycharmProjects\Smartwork\web2py\gluon\html.py", line 2298, in process self.validate(**kwargs) File "D:\lab\PycharmProjects\Smartwork\web2py\gluon\html.py", line 2236, in validate if self.accepts(**kwargs): File "D:\lab\PycharmProjects\Smartwork\web2py\gluon\sqlhtml.py", line 1746, in accepts self.vars.id = self.table.insert(**fields) File "D:\lab\PycharmProjects\Smartwork\web2py\gluon\packages\dal\pydal\objects.py", line 726, in insert ret = self._db._adapter.insert(self, self._listify(fields)) File "D:\lab\PycharmProjects\Smartwork\web2py\gluon\packages\dal\pydal\adapters\base.py", line 739, in insert query = self._insert(table,fields) File "D:\lab\PycharmProjects\Smartwork\web2py\gluon\packages\dal\pydal\adapters\base.py", line 730, in _insert values = ','.join(self.expand(v, f.type) for f, v in fields) File "D:\lab\PycharmProjects\Smartwork\web2py\gluon\packages\dal\pydal\adapters\base.py", line 730, in <genexpr> values = ','.join(self.expand(v, f.type) for f, v in fields) File "D:\lab\PycharmProjects\Smartwork\web2py\gluon\packages\dal\pydal\adapters\base.py", line 962, in expand rv = self.represent(expression, field_type) File "D:\lab\PycharmProjects\Smartwork\web2py\gluon\packages\dal\pydal\adapters\base.py", line 1442, in represent return str(long(obj)) ValueError: invalid literal for long() with base 10: 'Jul Contract'
Note that this contract is the second in the database Basically what im trying to do is create a loop(from a form) that will create payslips for all running contracts On Monday, September 26, 2016 at 4:21:56 PM UTC+3, Anthony wrote: > > Hard to say what the problem is without seeing the full traceback as well > as your models. > > Also, what are you trying to do in the check_batch function? You are > looping through some records and making assignments to form.vars, but only > the final run of the loop will end up taking effect -- so what is the point > of the loop? > > Anthony > > On Monday, September 26, 2016 at 8:29:35 AM UTC-4, Oasis Agano wrote: >> >> Greetings >> im creating a payroll app and i need a to create a batch of payslips >> >> i want to create payslips for all contracts in the database within the >> running state >> the code >> >> def check_batch(form): >> >> contraaa = db(db.contract.state == 'Running').select(db.contract.ALL) >> for contraa in contraaa: >> >> if contraa.salary_structure == 'Less than 30000': >> totgross=contraa.wage+contraa.allowances >> >> form.vars.employee=contraa.employee.fullname >> form.vars.payslip_name=contraa.employee.fullname >> form.vars.contract=contraa.contract_name >> >> form.vars.gross=totgross >> form.vars.rssb_emp = totgross*0.03 >> form.vars.rssb_comp = totgross*0.05 >> form.vars.paye = 0 >> totrssb=form.vars.rssb_emp+form.vars.rssb_comp >> form.vars.rssb_tot=form.vars.rssb_emp+form.vars.rssb_comp >> if type(form.vars.loan) !=int : >> >> form.vars.net = totgross-form.vars.rssb_emp >> else: >> payy=db(db.loanpayment.id == >> form.vars.loan).select(db.loanpayment.ALL) >> for pay in payy: >> loanpay=int(pay.amount_payed) >> form.vars.net = totgross-form.vars.rssb_emp-loanpay >> >> elif contraa.salary_structure == 'Between 30000 and 100000': >> >> form.vars.employee=contraa.employee.fullname >> form.vars.payslip_name=contraa.employee.fullname >> form.vars.contract=contraa.contract_name >> >> totgross=contraa.wage+contraa.allowances >> form.vars.gross=totgross >> form.vars.rssb_emp = totgross*0.03 >> form.vars.rssb_comp = totgross*0.05 >> varia =totgross-30000 >> form.vars.paye = varia*0.2 >> totrssb=form.vars.rssb_emp+form.vars.rssb_comp >> form.vars.rssb_tot=form.vars.rssb_emp+form.vars.rssb_comp >> if type(form.vars.loan) !=int : >> form.vars.net = totgross-form.vars.rssb_emp-form.vars.paye >> else: >> payy=db(db.loanpayment.id == >> form.vars.loan).select(db.loanpayment.ALL) >> for pay in payy: >> loanpay=int(pay.amount_payed) >> form.vars.net = >> totgross-form.vars.rssb_emp-form.vars.paye-loanpay >> >> >> #form = SQLFORM(db.payslip) >> >> >> >> elif contraa.salary_structure=='Great than 100000': >> >> form.vars.employee=contraa.employee >> form.vars.payslip_name=contraa.employee >> form.vars.contract=contraa.contract_name >> >> totgross=contraa.wage+contraa.allowances >> form.vars.gross=totgross >> form.vars.rssb_emp = totgross*0.03 >> form.vars.rssb_comp = totgross*0.05 >> varia2 =totgross-100000 >> variah = varia2*0.3 >> varia3 =70000*0.2 >> form.vars.paye = variah+varia3 >> totrssb=form.vars.rssb_emp+form.vars.rssb_comp >> form.vars.rssb_tot=form.vars.rssb_emp+form.vars.rssb_comp >> if type(form.vars.loan) !=int : >> form.vars.net = totgross-form.vars.rssb_emp-form.vars.paye >> else: >> payy=db(db.loanpayment.id == >> form.vars.loan).select(db.loanpayment.ALL) >> for pay in payy: >> loanpay=int(pay.amount_payed) >> form.vars.net = >> totgross-form.vars.rssb_emp-form.vars.paye-loanpay >> >> #form = SQLFORM(db.payslip) >> >> else: >> response.flash=T('Select a salary structure and contract') >> >> >> def batch_payslip(): >> db.payslip.gross.readonly =True >> db.payslip.net.readable =False >> db.payslip.rssb_emp.readable =False >> #db.payslip.salary_structure.readable =False >> db.payslip.rssb_comp.readable =False >> db.payslip.paye.readable =False >> db.payslip.employee.readable =False >> db.payslip.employee.writable =False >> db.payslip.contract.readable =False >> db.payslip.contract.writable =False >> db.payslip.payslip_name.readable =False >> db.payslip.payslip_name.writable =False >> db.payslip.loan.readable =False >> db.payslip.loan.writable =False >> db.payslip.user.readable =False >> db.payslip.user.writable =False >> form = SQLFORM(db.payslip) >> >> if form.process(onvalidation=check_batch).accepted: >> response.flash=T('Payslip Added') >> return dict(form=form) >> >> >> im getting this error >> >> ValueError: invalid literal for long() with base 10: 'with a contract name' >> >> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.