Ejemplo n.º 1
0
    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])
Ejemplo n.º 2
0
    def do_updateRetEarning(self):
        acct = self.info_dict['clossing_acct']
        if not acct:
            raise Exception('Clossing account is lost')

        td = dt.datetime.today()
        # ret earning does not have allocation
        if (acct.GLACALST == 0):
            for name, item in self.ret_earning.iteritems():
                smrz = GLSMRZ.get((self.info_dict['cono'], acct.GLACACID, \
                        self.info_dict['fstp'], self.info_dict['fsyr'],
                        1, item[0], item[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))

                update_only = True
                nsmrz = GLSMRZ.get((self.info_dict['cono'], acct.GLACACID, \
                        self.info_dict['fstp'], self.info_dict['nfsyr'],
                        1, item[0], item[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 = item[0]
                    nsmrz.GLSMCUTP = item[1]
                    nsmrz.GLNTOPBL = dcm.Decimal(0, CurrencyContext)
                    nsmrz.GLCROPBL = dcm.Decimal(0, CurrencyContext)
                    nsmrz.GLDBOPBL = dcm.Decimal(0, CurrencyContext)

                dcm.getcontext().prec = 9
                nsmrz.GLNTOPBL = dcm.Decimal(end_bal[0] + item[2],
                                             CurrencyContext)
                nsmrz.GLCROPBL = dcm.Decimal(end_bal[1] + item[3],
                                             CurrencyContext)
                nsmrz.GLDBOPBL = dcm.Decimal(end_bal[2] + item[4],
                                             CurrencyContext)
                nsmrz.GLSMAUDT = td.date().tointeger()
                nsmrz.GLSMAUTM = td.time().tointeger()
                nsmrz.GLSMAUUS = self.info_dict['usr_info'][3]

                if update_only:
                    self.session.update(nsmrz)
                else:
                    self.session.save(nsmrz)

        # 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 name, item in self.ret_earning.iteritems():
                    smrz = GLSMRZ.get((self.info_dict['cono'], _alacct, \
                          self.info_dict['fstp'], self.info_dict['fsyr'],
                          1, item[0], item[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))

                    update_only = True
                    nsmrz = GLSMRZ.get((self.info_dict['cono'], _alacct, \
                            self.info_dict['fstp'], self.info_dict['nfsyr'],
                            1, item[0], item[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 = item[0]
                        nsmrz.GLSMCUTP = item[1]
                        nsmrz.GLNTOPBL = dcm.Decimal(0, CurrencyContext)
                        nsmrz.GLCROPBL = dcm.Decimal(0, CurrencyContext)
                        nsmrz.GLDBOPBL = dcm.Decimal(0, CurrencyContext)

                    dcm.getcontext().prec = 9
                    alcuam = (dcm.Decimal(item[2]) *
                              dcm.Decimal(alacct.GLALALPC)) / dcm.Decimal(100)
                    alcucr = (dcm.Decimal(item[3]) *
                              dcm.Decimal(alacct.GLALALPC)) / dcm.Decimal(100)
                    alcudb = (dcm.Decimal(item[4]) *
                              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]

                    if update_only:
                        self.session.update(nsmrz)
                    else:
                        self.session.save(nsmrz)