コード例 #1
0
  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
コード例 #2
0
ファイル: __init__.py プロジェクト: jazlee/csp-accounting
    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
コード例 #3
0
ファイル: __init__.py プロジェクト: jazlee/csp-accounting
  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
コード例 #4
0
  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
コード例 #5
0
ファイル: __init__.py プロジェクト: jazlee/csp-accounting
    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
コード例 #6
0
ファイル: __init__.py プロジェクト: jazlee/csp-accounting
    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])
コード例 #7
0
  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
コード例 #8
0
ファイル: __init__.py プロジェクト: jazlee/csp-accounting
  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