I solved it already using sqlform factory then if form accepted do the loops... and thanks for your help
On Tuesday, September 27, 2016 at 5:48:14 AM UTC+3, Jim S wrote: > > You don't have to pass it. Just use the DAL to insert the records you > need. > > What fields are you having the user enter data into when the form is > displayed? > > You can just use SQLFORM.factory to gather them. Then in the 'if > form.process().accepted:' put the code to insert the records into the > database. > > Tell me what fields you're gathering from the user and I can write up a > sample for you. > > -Jim > > > On Mon, Sep 26, 2016 at 3:33 PM, Oasis Agano <oasis...@gmail.com > <javascript:>> wrote: > >> Briefly what im trying to do is to create payslips for all contracts in >> the db through a loop, >> i just checked sqlform factory but i have a question where do i pass the >> form(payslip table) to insert in into after if form.process().accepts: >> >> On Monday, September 26, 2016 at 11:09:52 PM UTC+3, Jim S wrote: >>> >>> I think that is all that it should do. >>> >>> Your check_batch function is being called at the validation stage of >>> processing your form. All your check_batch function does is reassign >>> values to the form variables that you've captured. After it is done, the >>> web2py form processing will insert the current values of the form variables >>> into the database for you. See Anthony's first reply. I think your >>> approach to this is somewhat flawed. >>> >>> Here is what I see is happening: >>> >>> 1. User makes a request to the batch_payslips function. Result is that >>> a form is displayed. >>> 2. User enters values into the form and clicks on Submit. >>> 3. Your onvalidation method (check_batch) is invoked. This method >>> resets a bunch of the form variables, but since it is in a loop, the >>> variables set in the last pass through the loop are retained in the form >>> variables. >>> 4. sqlform.process().accepted takes over and inserts a record into >>> payslips based on the current values of the form variables. >>> >>> From what I think you're trying to do, I'd re-architect a bit. >>> >>> 1. Use a SQFORM.factory to gather whatever information it is your asking >>> of the user. >>> http://web2py.com/books/default/chapter/29/07/forms-and-validators#SQLFORM-factory >>> 2. Instead of loop through the RUNNING contracts in the onvalidation >>> function (check_batch), put that code after the "if >>> form.process().accepts:" statement. >>> 3. Update that code to manually insert the records into payslips instead >>> of just assigning values to the form variables. >>> http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#insert >>> >>> I hope this helps. My apologies if I'm misunderstanding your goals. >>> >>> -Jim >>> >>> >>> On Monday, September 26, 2016 at 2:48:32 PM UTC-5, Oasis Agano wrote: >>>> >>>> Well its progressing now, using >>>> >>>> form.vars.employee=contraa.employee >>>> form.vars.payslip_name=contraa.employee.fullname >>>> form.vars.contract=contraa.id >>>> >>>> >>>> Now it is inserting only one payslip(from one contract) but not inserting >>>> the other one >>>> >>>> >>>> On Monday, September 26, 2016 at 7:54:03 PM UTC+3, Jim S wrote: >>>>> >>>>> You're setting form.vars.employee = contraa.employee.fullname >>>>> >>>>> It should be set to the employee id, not the name. Results in the >>>>> same problem as with contract name/id. >>>>> >>>>> Should just be contraa.employee I believe... >>>>> >>>>> -Jim >>>>> >>>>> On Monday, September 26, 2016 at 10:23:15 AM UTC-5, Oasis Agano wrote: >>>>>> >>>>>> i changed it to form.vars.contract = contraa.id >>>>>> but still getting the same error >>>>>> >>>>>> On Monday, September 26, 2016 at 5:39:41 PM UTC+3, Anthony wrote: >>>>>>> >>>>>>> In your model, db.payslip.contract is a reference field, but in your >>>>>>> code, you attempt to assign a string value to it (form.vars.contract = >>>>>>> contraa.contract_name). >>>>>>> >>>>>>> Anthony >>>>>>> >>>>>>> On Monday, September 26, 2016 at 10:04:30 AM UTC-4, Oasis Agano >>>>>>> wrote: >>>>>>>> >>>>>>>> Models are here, if this way cant work can you suggest another way of >>>>>>>> doing it >>>>>>>> >>>>>>>> MARITAL_SET = [ >>>>>>>> T('Single'), >>>>>>>> T('Married'), >>>>>>>> T('Divorced'), >>>>>>>> T('Widower') >>>>>>>> >>>>>>>> >>>>>>>> ] >>>>>>>> TIME_SET = [ >>>>>>>> T('Part time'), >>>>>>>> T('Full time'), >>>>>>>> >>>>>>>> >>>>>>>> ] >>>>>>>> >>>>>>>> STATE_SET = [ >>>>>>>> T('Trial'), >>>>>>>> T('Employed'), >>>>>>>> T('Fired'), >>>>>>>> T('Retired'), >>>>>>>> >>>>>>>> >>>>>>>> ] >>>>>>>> #@auth.requires_login() >>>>>>>> >>>>>>>> db.define_table('employee', >>>>>>>> Field('emp_photo', 'upload',label='Photo'), >>>>>>>> Field('first_name','string',label='First Name'), >>>>>>>> Field('last_name','string',label='Last Name'), >>>>>>>> >>>>>>>> Field('fullname','string',readable='False',compute=lambda r: >>>>>>>> r.first_name+' '+r.last_name), >>>>>>>> Field('email','string'), >>>>>>>> Field('phone','string'), >>>>>>>> Field('marital_status', >>>>>>>> requires=IS_IN_SET(MARITAL_SET, zero=T('--choose marital status--'))), >>>>>>>> Field('number_of_children', 'string'), >>>>>>>> Field('name_of_children','text'), >>>>>>>> Field('address','text'), >>>>>>>> Field('Manager', 'reference employee'), >>>>>>>> #Field('date','datetime'), >>>>>>>> Field('dob', 'datetime', label='Date of Birth'), >>>>>>>> Field('doj', 'datetime', label='Hired Date'), >>>>>>>> Field('ismanager', 'boolean', default=False,label='Is >>>>>>>> Department Manager'), >>>>>>>> Field('department', 'reference >>>>>>>> department',requires=IS_EMPTY_OR(IS_IN_DB(db, "department.id", >>>>>>>> '%(department_name)s'))), >>>>>>>> Field('user', 'reference >>>>>>>> auth_user',requires=IS_EMPTY_OR(IS_IN_DB(db, "auth_user.id", >>>>>>>> '%(fullname)s'))), >>>>>>>> Field('job', 'reference job_title'), >>>>>>>> Field('Other', 'text'), >>>>>>>> Field('state', requires=IS_IN_SET(STATE_SET, >>>>>>>> zero=T('--choose employment status--'))), >>>>>>>> auth.signature, >>>>>>>> format='%(fullname)s' >>>>>>>> >>>>>>>> ) >>>>>>>> db.define_table('job_title', >>>>>>>> Field('job_name', 'string', label='Job Title'), >>>>>>>> auth.signature, >>>>>>>> format='%(job_name)s' >>>>>>>> ) >>>>>>>> #db = DAL(lazy_tables=True) >>>>>>>> db.define_table('department', >>>>>>>> Field('department_name', 'string', label='Department >>>>>>>> Name'), >>>>>>>> Field('parent_dept', 'reference department'), >>>>>>>> Field('Other', 'text'), >>>>>>>> format='%(department_name)s' >>>>>>>> ) >>>>>>>> #db.employee.department.requires = IS_IN_DB(db, db.department.id, >>>>>>>> '%(department_name)s') >>>>>>>> >>>>>>>> CONTRACTTYPE_SET = [ >>>>>>>> T('Employee'), >>>>>>>> T('Consultant'), >>>>>>>> T('Freelance'), >>>>>>>> T('Internship'), >>>>>>>> >>>>>>>> ] >>>>>>>> >>>>>>>> SALARYSTRUCTURE_SET = [ >>>>>>>> T('Less than 30000'), >>>>>>>> T('Between 30000 and 100000'), >>>>>>>> T('Great than 100000') >>>>>>>> >>>>>>>> ] >>>>>>>> >>>>>>>> CONTRACTSTATE_SET = [ >>>>>>>> T('Draft'), >>>>>>>> T('Running'), >>>>>>>> T('Expired/To Renew'), >>>>>>>> T('Closed'), >>>>>>>> T('Cancelled'), >>>>>>>> >>>>>>>> >>>>>>>> ] >>>>>>>> >>>>>>>> >>>>>>>> db.define_table('contract', >>>>>>>> Field('employee', 'reference employee', >>>>>>>> required='true', >>>>>>>> requires=IS_IN_DB(db, "employee.id", >>>>>>>> '%(fullname)s')), >>>>>>>> # Field('date','datetime'), >>>>>>>> Field('contract_name', 'string', label='Contract >>>>>>>> Title'), >>>>>>>> Field('contract_type', >>>>>>>> requires=IS_IN_SET(CONTRACTTYPE_SET, zero=T('--choose contract >>>>>>>> type--'))), >>>>>>>> Field('salary_structure', >>>>>>>> requires=IS_IN_SET(SALARYSTRUCTURE_SET, zero=T('--choose salary >>>>>>>> type--'))), >>>>>>>> Field('job', 'reference job_title'), >>>>>>>> Field('contract_scan', 'upload',label='Contract >>>>>>>> Upload'), >>>>>>>> Field('date_trial_start', 'datetime', label='Starting >>>>>>>> Trial Date'), >>>>>>>> Field('date_trial_end', 'datetime', label='End Trial >>>>>>>> Date'), >>>>>>>> Field('date_work_start', 'datetime', label='Starting >>>>>>>> Working Date'), >>>>>>>> Field('date_work_end', 'datetime', label='End of >>>>>>>> Contract'), >>>>>>>> Field('wage', 'float'), >>>>>>>> Field('rssb', 'boolean', default=True, label='Pay >>>>>>>> RSSB'), >>>>>>>> Field('batch', 'boolean', default=True, label='Enable >>>>>>>> Batch Payslip'), >>>>>>>> Field('allowances', 'float'), >>>>>>>> Field('visa_no', 'string', label='Visa No'), >>>>>>>> Field('work_permit_no', 'string', label='Work Permit >>>>>>>> No'), >>>>>>>> Field('visa_exp', 'datetime', label='Visa Expiry >>>>>>>> Date'), >>>>>>>> Field('other','text'), >>>>>>>> Field('state', requires=IS_IN_SET(CONTRACTSTATE_SET, >>>>>>>> zero=T('--State--'))), >>>>>>>> auth.signature >>>>>>>> ) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> LOANSTATE_SET = [ >>>>>>>> T('Draft'), >>>>>>>> T('Confirmed'), >>>>>>>> T('Refused'), >>>>>>>> T('Paid'), >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> ] >>>>>>>> >>>>>>>> LOANTYPE_SET = [ >>>>>>>> T('Advance'), >>>>>>>> T('Long Term'), >>>>>>>> >>>>>>>> ] >>>>>>>> db.define_table('loans', >>>>>>>> Field('loan_name', 'string', label='Loan Title'), >>>>>>>> Field('employee', 'reference employee', >>>>>>>> required='true', >>>>>>>> requires=IS_IN_DB(db, "employee.id", >>>>>>>> '%(fullname)s')), >>>>>>>> Field('contract', 'reference contract', >>>>>>>> required='true', >>>>>>>> requires=IS_IN_DB(db, "contract.id", >>>>>>>> '%(contract_name)s')), >>>>>>>> Field('loan_type', requires=IS_IN_SET(LOANTYPE_SET, >>>>>>>> zero=T('--Type--'))), >>>>>>>> Field('loan_amount', 'float',label='Loan Amount'), >>>>>>>> Field('paid', 'float', label='Amount >>>>>>>> Paid',default='0.0'), >>>>>>>> Field('balance', 'float', label='Loan Amount >>>>>>>> Remaining',default='0.0',readable=False), >>>>>>>> Field('date','datetime',label='Date >>>>>>>> request',default=lambda:datetime.now()), >>>>>>>> Field('date_start', 'datetime', label='Start of >>>>>>>> Payment'), >>>>>>>> Field('no_of_months', 'integer',label='No of Months'), >>>>>>>> Field('state', requires=IS_IN_SET(LOANSTATE_SET, >>>>>>>> zero=T('--State--')),default='Draft'), >>>>>>>> auth.signature >>>>>>>> ) >>>>>>>> >>>>>>>> db.define_table('loanpayment', >>>>>>>> Field('loanpayment_name', 'string', label='Payment >>>>>>>> Title'), >>>>>>>> Field('employee', 'reference employee', >>>>>>>> required='true', >>>>>>>> requires=IS_IN_DB(db, "employee.id", >>>>>>>> '%(fullname)s')), >>>>>>>> Field('loan', 'reference loans', required='true', >>>>>>>> requires=IS_IN_DB(db, "loans.id", >>>>>>>> '%(loan_name)s')), >>>>>>>> Field('amount_payed', 'float', label='Loan Amount >>>>>>>> Payed'), >>>>>>>> Field('date', 'datetime', label='Date of Payment'), >>>>>>>> auth.signature >>>>>>>> ) >>>>>>>> >>>>>>>> PAYSLIPSTATE_SET = [ >>>>>>>> T('Draft'), >>>>>>>> T('Confirmed'), >>>>>>>> T('Closed'), >>>>>>>> T('Cancelled'), >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> ] >>>>>>>> db.define_table('payslip', >>>>>>>> Field('employee', 'reference employee', >>>>>>>> required='true', >>>>>>>> requires=IS_IN_DB(db, "employee.id", >>>>>>>> '%(fullname)s')), >>>>>>>> Field('contract', 'reference contract', >>>>>>>> required='true', >>>>>>>> requires=IS_EMPTY_OR(IS_IN_DB(db, "contract.id", >>>>>>>> '%(contract_name)s'))), >>>>>>>> Field('payslip_name', 'string', label='Payslip Title'), >>>>>>>> Field('gross', 'float',readable=False, writable=False), >>>>>>>> Field('net', 'float',readable=False, writable=False), >>>>>>>> Field('rssb_emp','float',readable=False, >>>>>>>> writable=False), >>>>>>>> Field('rssb_comp','float',readable=False, >>>>>>>> writable=False), >>>>>>>> Field('rssb_tot','float',readable=False, >>>>>>>> writable=False), >>>>>>>> Field('paye','float',readable=False, writable=False), >>>>>>>> #Field('loan','float',default='0'), >>>>>>>> Field('loan', 'reference loanpayment',label='Loan >>>>>>>> ',requires=IS_EMPTY_OR(IS_IN_DB(db, "loanpayment.id", >>>>>>>> '%(loanpayment_name)s'))), >>>>>>>> Field('date','datetime',default=lambda:datetime.now()), >>>>>>>> Field('date_pay_start', 'datetime', label='Start of >>>>>>>> Payment Period'), >>>>>>>> Field('date_pay_end', 'datetime', label='End of >>>>>>>> Payment Period'), >>>>>>>> #Field('contract_type', >>>>>>>> requires=IS_IN_SET(CONTRACTTYPE_SET, zero=T('--choose contract >>>>>>>> type--')),readable=False, writable=False), >>>>>>>> #Field('salary_structure', >>>>>>>> requires=IS_IN_SET(SALARYSTRUCTURE_SET, zero=T('--choose salary >>>>>>>> type--')),readable=False, writable=False), >>>>>>>> #Field('job', 'reference job_title',readable=False, >>>>>>>> writable=False), >>>>>>>> Field('user', 'reference auth_user',label='Link to >>>>>>>> User',requires=IS_EMPTY_OR(IS_IN_DB(db, "auth_user.id", >>>>>>>> '%(fullname)s'))), >>>>>>>> Field('state', requires=IS_IN_SET(PAYSLIPSTATE_SET, >>>>>>>> zero=T('--State--'))), >>>>>>>> >>>>>>>> auth.signature >>>>>>>> ) >>>>>>>> >>>>>>>> >>>>>>>> On Monday, September 26, 2016 at 5:00:14 PM UTC+3, Anthony wrote: >>>>>>>>> >>>>>>>>> Well, you still haven't shown your models. My guess is one of your >>>>>>>>> fields is a reference field, which stores long int values >>>>>>>>> representing the >>>>>>>>> record ID of the referenced record, but you are attempting to insert >>>>>>>>> a >>>>>>>>> string value. >>>>>>>>> >>>>>>>>> Anyway, your approach won't work because SQLFORM only does a >>>>>>>>> single insert, which happens after the onvalidation callback runs. >>>>>>>>> So, only >>>>>>>>> the last set of form.vars values assigned in the onvalidation for >>>>>>>>> loop will >>>>>>>>> end up being inserted in the database. >>>>>>>>> >>>>>>>>> Anthony >>>>>>>>> >>>>>>>>> On Monday, September 26, 2016 at 9:56:34 AM UTC-4, Oasis Agano >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> 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 a topic in the >> Google Groups "web2py-users" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/web2py/OAORXQMAY6Q/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> web2py+un...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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.