def openView(self, mvcsession): if mvcsession.paramDataset.IsEmpty: raise Exception('Program GLS452 could not be load directly by user') params = mvcsession.paramDataset.FieldsAsDict() proxy = self.getBusinessObjectProxy() usrobj = proxy.getObject('USROBJ') glsobj = proxy.getObject('GLSOBJ') info = usrobj.retrieveUserInfoDict(mvcsession) cono = info['USRCONO'] glopt = glsobj.getGLOpt(cono) if (cono in (None, '')): raise Exception('Default company for user % is not assigned' % mvcsession.cookies['user_name'].encode('utf8')) acct = GLACCT.get((cono, params['GLRVACID'])) if acct: mvcsession.paramDataset.Edit() mvcsession.paramDataset.SetFieldValue('GLRVACFM', acct.GLACACFM) mvcsession.paramDataset.SetFieldValue('GLRVACNM', acct.GLACACNM) mvcsession.paramDataset.Post() q = GLACRV.query q = q.filter_by(GLRVCONO = cono) q = q.filter_by(GLRVACID = params['GLRVACID']) q = q.order_by(sa.asc(GLACRV.GLRVCONO)) q = q.order_by(sa.asc(GLACRV.GLRVACID)) q = q.order_by(sa.asc(GLACRV.GLRVCUCD)) obj = q.all() mvcsession.listDataset.CopyFromORMList( 'GLRVCUCD;GLRVCUNM;GLRVRVST;GLRVRVNM', 'GLRVCUCD;GLRVCUNM;GLRVRVST;GLRVRVNM', obj ) return mvcsession
def synchronizeData(self, mvcsession, fieldName, fieldType): proxy = self.getBusinessObjectProxy() usrobj = proxy.getObject('USROBJ') glsobj = proxy.getObject('GLSOBJ') info = usrobj.retrieveUserInfoDict(mvcsession) cono = info['USRCONO'] glopt = glsobj.getGLOpt(cono) if cono is None: cono = '' fields = mvcsession.entryDataset.FieldsAsDict() if fieldName not in ('GLARCUCD', 'GLAPCUCD'): fldNameAC = fieldName[:6] + 'AC' fldNameFM = fieldName[:6] + 'FM' fldNameNM = fieldName[:6] + 'NM' if (fields[fldNameFM] in (None, '')): raise Exception('Account ID must not empty') acct = GLACCT.stripedacct(fields[fldNameFM]) obj = GLACCT.get((cono, acct)) if not obj: raise Exception('Account ID does not exist') mvcsession.entryDataset.Edit() mvcsession.entryDataset.SetFieldValue(fldNameAC, obj.GLACACID) mvcsession.entryDataset.SetFieldValue(fldNameFM, obj.GLACACFM) mvcsession.entryDataset.SetFieldValue(fldNameNM, obj.GLACACNM) mvcsession.entryDataset.Post() return mvcsession
def retrieveData(self, mvcsession): lists = mvcsession.listDataset.FieldsAsDict() params = mvcsession.paramDataset.FieldsAsDict() proxy = self.getBusinessObjectProxy() usrobj = proxy.getObject('USROBJ') glsobj = proxy.getObject('GLSOBJ') info = usrobj.retrieveUserInfoDict(mvcsession) cono = info['USRCONO'] glopt = glsobj.getGLOpt(cono) if (cono in (None, '')): raise Exception('Default company for user % is not assigned' % mvcsession.cookies['user_name'].encode('utf8')) if mvcsession.execType in (MVCExecAppend, MVCExecCopy): acctid = GLACCT.get((cono, params['GLALACID'])) if not acctid: raise Exception('Master account is not found') if acctid.GLACALST != 1: raise Exception('Master account is not marked to use allocation') if mvcsession.execType in (MVCExecShow, MVCExecEdit, MVCExecDelete, MVCExecCopy): q = GLALAC.query q = q.filter_by(GLALCONO = cono) q = q.filter_by(GLALACID = params['GLALACID']) q = q.filter_by(GLALALID = lists['GLALALID']) obj = q.first() if (mvcsession.execType != MVCExecCopy): mvcsession.entryDataset.CopyFromORM( 'GLALALFM;GLALALNM;GLALALRF;GLALALPC', 'GLALALFM;GLALALNM;GLALALRF;GLALALPC', obj) else: mvcsession.entryDataset.CopyFromORM( 'GLALALRF;GLALALPC', 'GLALALRF;GLALALPC', obj) if mvcsession.execType == MVCExecEdit: mvcsession.fieldDefs.GLALALFM.enabled = False return mvcsession
def retrieveData(self, mvcsession): lists = mvcsession.listDataset.FieldsAsDict() params = mvcsession.paramDataset.FieldsAsDict() proxy = self.getBusinessObjectProxy() usrobj = proxy.getObject('USROBJ') glsobj = proxy.getObject('GLSOBJ') info = usrobj.retrieveUserInfoDict(mvcsession) cono = info['USRCONO'] glopt = glsobj.getGLOpt(cono) if (cono in (None, '')): raise Exception('Default company for user % is not assigned' % mvcsession.cookies['user_name'].encode('utf8')) if mvcsession.execType in (MVCExecAppend, MVCExecCopy): acctid = GLACCT.get((cono, params['GLRVACID'])) if not acctid: raise Exception('Master account is not found') mvcsession.entryDataset.Edit() mvcsession.entryDataset.SetFieldValue('GLRVRVST', 0) mvcsession.entryDataset.Post() if mvcsession.execType in (MVCExecShow, MVCExecEdit, MVCExecDelete, MVCExecCopy): obj = GLACRV.get((cono, params['GLRVACID'], lists['GLRVCUCD'])) if (mvcsession.execType != MVCExecCopy): mvcsession.entryDataset.CopyFromORM( 'GLRVCUCD;GLRVCUNM;GLRVRVST;GLRVRVNM', 'GLRVCUCD;GLRVCUNM;GLRVRVST;GLRVRVNM', obj) else: mvcsession.entryDataset.CopyFromORM( 'GLRVRVST;GLRVRVNM', 'GLRVRVST;GLRVRVNM', obj) if mvcsession.execType == MVCExecEdit: mvcsession.fieldDefs.GLRVCUCD.enabled = False return mvcsession
def verifyYearEnd(self): if self.info_dict['glopt'].GLOPCLCD in (None, ''): raise Exception( 'Default closing account has not been setup properly') acctid = GLACCT.stripedacct(self.info_dict['glopt'].GLOPCLCD) closacct = GLACCT.get((self.info_dict['cono'], acctid)) if not closacct: raise Exception('Default closing account is not found') if closacct.GLACACST == 0: raise Exception('Default closing account is disabled') if closacct.GLACACTP != 'R': raise Exception( 'Default closing account is not on Retained Earnings type') self.info_dict['clossing_acct'] = closacct #check next fiscal yr q = CSYFSC.query q = q.filter_by(SYFSFSTP=self.info_dict['fstp']) q = q.filter(CSYFSC.SYFSFSYR > self.info_dict['fsyr']) nfsyr = q.first() if not nfsyr: raise Exception('Next fiscal year has not been created') self.info_dict['nfsyr'] = nfsyr.SYFSFSYR
def do_updateRetEarnItm(self): rearnsumrz = {} for name, item in self.ret_earningcl.iteritems(): acctid = GLACCT.stripedacct(name) acct = GLACCT.get((self.info_dict['cono'], acctid)) if not acct: raise Exception('Clossing account %s is lost' % acct) td = dt.datetime.today() # ret earning does not have allocation if (acct.GLACALST == 0): for curtp, infoitem in item.iteritems(): smrz = GLSMRZ.get((self.info_dict['cono'], acct.GLACACID, \ self.info_dict['fstp'], self.info_dict['fsyr'], 1, infoitem[0], infoitem[1])) if smrz: end_bal = self.get_EndBalance(smrz) else: dcm.getcontext().prec = 9 end_bal = (dcm.Decimal(0, CurrencyContext), dcm.Decimal(0, CurrencyContext), dcm.Decimal(0, CurrencyContext)) if not rearnsumrz.has_key( '%s_%s_%s' % (acct.GLACACID, infoitem[0], infoitem[1])): rearnsumrz['%s_%s_%s' % (acct.GLACACID, infoitem[0], infoitem[1])] = [False, None] rsmrz = rearnsumrz['%s_%s_%s' % (acct.GLACACID, infoitem[0], infoitem[1])] if not rsmrz[1]: update_only = True nsmrz = GLSMRZ.get((self.info_dict['cono'], acct.GLACACID, \ self.info_dict['fstp'], self.info_dict['nfsyr'], 1, infoitem[0], infoitem[1])) if not nsmrz: update_only = False nsmrz = GLSMRZ() nsmrz.GLSMCONO = self.info_dict['cono'] nsmrz.GLSMACID = acct.GLACACID nsmrz.GLSMFSTP = self.info_dict['fstp'] nsmrz.GLSMFSYR = self.info_dict['nfsyr'] nsmrz.GLSMSMTP = 1 nsmrz.GLSMCUCD = infoitem[0] nsmrz.GLSMCUTP = infoitem[1] nsmrz.GLNTOPBL = dcm.Decimal(0, CurrencyContext) nsmrz.GLCROPBL = dcm.Decimal(0, CurrencyContext) nsmrz.GLDBOPBL = dcm.Decimal(0, CurrencyContext) rsmrz[0] = update_only rsmrz[1] = nsmrz nsmrz = rsmrz[1] dcm.getcontext().prec = 9 nsmrz.GLNTOPBL = dcm.Decimal(end_bal[0] + infoitem[3], CurrencyContext) nsmrz.GLCROPBL = dcm.Decimal(end_bal[1] + infoitem[4], CurrencyContext) nsmrz.GLDBOPBL = dcm.Decimal(end_bal[2] + infoitem[5], CurrencyContext) nsmrz.GLSMAUDT = td.date().tointeger() nsmrz.GLSMAUTM = td.time().tointeger() nsmrz.GLSMAUUS = self.info_dict['usr_info'][3] # ret earning does have allocation accounts elif (acct.GLACALST == 1): alaccts = GLALAC.getObj(True, GLALCONO = acct.GLACCONO, \ GLALACID = acct.GLACACID) for alacct in alaccts: _alacct = GLACCT.stripedacct(alacct.GLALALID) if not GLACCT.acctexists(acct.GLACCONO, _alacct)[0]: raise Exception('Allocation account %s is not found' % alacct.GLALALID) for curtp, infoitem in item.iteritems(): smrz = GLSMRZ.get((self.info_dict['cono'], _alacct, \ self.info_dict['fstp'], self.info_dict['fsyr'], 1, infoitem[0], infoitem[1])) if smrz: end_bal = self.get_EndBalance(smrz) else: dcm.getcontext().prec = 9 end_bal = (dcm.Decimal(0, CurrencyContext), dcm.Decimal(0, CurrencyContext), dcm.Decimal(0, CurrencyContext)) if not rearnsumrz.has_key( '%s_%s_%s' % (_alacct, infoitem[0], infoitem[1])): rearnsumrz['%s_%s_%s' % (_alacct, infoitem[0], infoitem[1])] = [ False, None ] rsmrz = rearnsumrz['%s_%s_%s' % (_alacct, infoitem[0], infoitem[1])] if not rsmrz[1]: update_only = True nsmrz = GLSMRZ.get((self.info_dict['cono'], _alacct, \ self.info_dict['fstp'], self.info_dict['nfsyr'], 1, infoitem[0], infoitem[1])) if not nsmrz: update_only = False nsmrz = GLSMRZ() nsmrz.GLSMCONO = self.info_dict['cono'] nsmrz.GLSMACID = _alacct nsmrz.GLSMFSTP = self.info_dict['fstp'] nsmrz.GLSMFSYR = self.info_dict['nfsyr'] nsmrz.GLSMSMTP = 1 nsmrz.GLSMCUCD = infoitem[0] nsmrz.GLSMCUTP = infoitem[1] nsmrz.GLNTOPBL = dcm.Decimal( 0, CurrencyContext) nsmrz.GLCROPBL = dcm.Decimal( 0, CurrencyContext) nsmrz.GLDBOPBL = dcm.Decimal( 0, CurrencyContext) rsmrz[0] = update_only rsmrz[1] = nsmrz nsmrz = rsmrz[1] dcm.getcontext().prec = 9 alcuam = (dcm.Decimal(infoitem[3]) * dcm.Decimal( alacct.GLALALPC)) / dcm.Decimal(100) alcucr = (dcm.Decimal(infoitem[4]) * dcm.Decimal( alacct.GLALALPC)) / dcm.Decimal(100) alcudb = (dcm.Decimal(infoitem[5]) * dcm.Decimal( alacct.GLALALPC)) / dcm.Decimal(100) nsmrz.GLNTOPBL = dcm.Decimal(end_bal[0] + alcuam, CurrencyContext) nsmrz.GLCROPBL = dcm.Decimal(end_bal[1] + alcucr, CurrencyContext) nsmrz.GLDBOPBL = dcm.Decimal(end_bal[2] + alcudb, CurrencyContext) nsmrz.GLSMAUDT = td.date().tointeger() nsmrz.GLSMAUTM = td.time().tointeger() nsmrz.GLSMAUUS = self.info_dict['usr_info'][3] for name, item in rearnsumrz.iteritems(): if item[0] == True: self.session.update(item[1]) else: self.session.save(item[1])
def postData(self, mvcsession): params = mvcsession.paramDataset.FieldsAsDict() fields = mvcsession.entryDataset.FieldsAsDict() validators.NotEmpty(messages={'empty': 'Curr code must not empty'}).to_python(fields['GLRVCUCD']) proxy = self.getBusinessObjectProxy() usrobj = proxy.getObject('USROBJ') glsobj = proxy.getObject('GLSOBJ') info = usrobj.retrieveUserInfoDict(mvcsession) cono = info['USRCONO'] glopt = glsobj.getGLOpt(cono) if (cono in (None, '')): raise Exception('Default company for user % is not assigned' % mvcsession.cookies['user_name'].encode('utf8')) sacct = GLACCT.get((cono, params['GLRVACID'])) if not sacct: raise Exception('Master account does not exist') cur = MSTCUR.get((fields['GLRVCUCD'])) if not cur: raise Exception('Currency does not exist') rval = None if fields['GLRVRVNM'] not in (None, ''): obj = GLRVAL.get((cono, fields['GLRVRVNM'])) if not obj: raise Exception('Revaluation code does not exist') rval = obj.GLRVRVNM obj = GLACRV.get((cono, params['GLRVACID'], fields['GLRVCUCD'])) td = dt.datetime.now() if (mvcsession.execType in (MVCExecAppend, MVCExecCopy)): if obj: raise Exception('Duplicate record found') obj = GLACRV() obj.GLRVCONO = cono obj.GLRVACID = sacct.GLACACID obj.GLRVCUCD = cur.CMCRCUCD obj.GLRVCUNM = cur.CMCRCUNM obj.GLRVRVST = fields['GLRVRVST'] obj.GLRVRVNM = rval obj.GLRVAUDT = td.date().tointeger() obj.GLRVAUTM = td.time().tointeger() obj.GLRVAUUS = mvcsession.cookies['user_name'].encode('utf8') if not session.transaction_started(): session.begin() try: session.save(obj) session.commit() except: session.rollback() session.expunge(obj) raise if (mvcsession.execType == MVCExecEdit): if not obj: raise Exception('Record could not be found') obj.GLRVRVST = fields['GLRVRVST'] obj.GLRVRVNM = rval obj.GLRVAUDT = td.date().tointeger() obj.GLRVAUTM = td.time().tointeger() obj.GLRVAUUS = mvcsession.cookies['user_name'].encode('utf8') if not session.transaction_started(): session.begin() try: session.update(obj) session.commit() except: session.rollback() session.expunge(obj) raise if (mvcsession.execType == MVCExecDelete): if not obj: raise Exception('Record could not be found') if not session.transaction_started(): session.begin() try: session.delete(obj) session.commit() except: session.rollback() raise return mvcsession
def postData(self, mvcsession): params = mvcsession.paramDataset.FieldsAsDict() fields = mvcsession.entryDataset.FieldsAsDict() validators.NotEmpty(messages={'empty': 'Acct code must not empty'}).to_python(fields['GLALALFM']) validators.NotEmpty(messages={'empty': 'Allocation percentage must not empty'}).to_python(fields['GLALALPC']) proxy = self.getBusinessObjectProxy() usrobj = proxy.getObject('USROBJ') glsobj = proxy.getObject('GLSOBJ') info = usrobj.retrieveUserInfoDict(mvcsession) cono = info['USRCONO'] glopt = glsobj.getGLOpt(cono) if (cono in (None, '')): raise Exception('Default company for user % is not assigned' % mvcsession.cookies['user_name'].encode('utf8')) pre = re.compile('\w+') acct = ''.join(pre.findall(fields['GLALALFM'])) if acct == params['GLALACID']: raise Exception('Account used to be allocated could not be reused with allocation detail') sacct = GLACCT.get((cono, params['GLALACID'])) if not sacct: raise Exception('Master account does not exist') ret = GLACCT.get((cono, acct)) if not ret: raise Exception('Account does not exist') fmtvalue = ret.GLACACFM q = GLALAC.query q = q.filter_by(GLALCONO = cono) q = q.filter_by(GLALACID = params['GLALACID']) q = q.filter_by(GLALALID = acct) obj = q.first() td = dt.datetime.now() if (mvcsession.execType in (MVCExecAppend, MVCExecCopy)): if obj: raise Exception('Duplicate record found') rec = GLALAC( GLALCONO = cono, GLALACID = sacct.GLACACID, GLALALID = ret.GLACACID, GLALALFM = ret.GLACACFM, GLALALNM = ret.GLACACNM, GLALALRF = fields['GLALALRF'], GLALALPC = fields['GLALALPC'], GLALAUDT = td.date().tointeger(), GLALAUTM = td.time().tointeger(), GLALAUUS = mvcsession.cookies['user_name'].encode('utf8') ) dcm.getcontext().prec = 9 sacct.GLACALPC = dcm.Decimal(sacct.GLACALPC + dcm.Decimal(rec.GLALALPC, CurrencyContext), CurrencyContext) if not session.transaction_started(): session.begin() try: session.save(rec) session.update(sacct) session.commit() except: session.rollback() session.expunge(rec) raise if (mvcsession.execType == MVCExecEdit): if not obj: raise Exception('Record could not be found') dcm.getcontext().prec = 9 sacct.GLACALPC = dcm.Decimal(sacct.GLACALPC - dcm.Decimal(obj.GLALALPC, CurrencyContext), CurrencyContext) mvcsession.entryDataset.CopyIntoORM( 'GLALALRF;GLALALPC', 'GLALALRF;GLALALPC', obj) obj.GLALAUDT = td.date().tointeger() obj.GLALAUTM = td.time().tointeger() obj.GLALAUUS = mvcsession.cookies['user_name'].encode('utf8') if not session.transaction_started(): session.begin() try: dcm.getcontext().prec = 9 sacct.GLACALPC = dcm.Decimal(sacct.GLACALPC + dcm.Decimal(obj.GLALALPC, CurrencyContext), CurrencyContext) session.update(obj) session.update(sacct) session.commit() except: session.rollback() session.expunge(obj) raise if (mvcsession.execType == MVCExecDelete): if not obj: raise Exception('Record could not be found') if not session.transaction_started(): session.begin() try: dcm.getcontext().prec = 9 sacct.GLACALPC = dcm.Decimal(sacct.GLACALPC - dcm.Decimal(obj.GLALALPC, CurrencyContext), CurrencyContext) session.delete(obj) session.update(sacct) session.commit() except: session.rollback() raise return mvcsession