コード例 #1
0
    def account(self, nmbr, act=None, parent=None):
        nmbr = number.fmt(nmbr)

        if act is not None:
            if act.is_vendor():
                self.vendor_.append(act.name())
                return None

            if act.number() != nmbr:
                raise ValueError("Account number mismatch: " + nmbr)

            if parent is not None:
                parent = number.fmt(parent)

                if act.parent() is not None and act.parent() != parent:
                    raise ValueError("Parent already defined for " + nmbr)

                act.parent(parent)
                if act.is_income():
                    self.account_[parent].income(nmbr)
                elif act.is_expense():
                    self.account_[parent].expense(nmbr)
                else:
                    self.account_[parent].children(nmbr)

            self.account_[nmbr] = act
            self.number(act.name(), nmbr)

        if nmbr is None:
            return None
        return self.account_[nmbr]
コード例 #2
0
 def load_subfunds(self, balance):
     for name, nmbr, children in balance.subfunds():
         name = clean(name)
         nmbr = number.fmt(nmbr)
         act = account.Account("Fund", name, nmbr)
         for child in children:
             child = number.fmt(child)
             self.account_[child].parent(nmbr)
             act.children(child)
         self.account_[nmbr] = act
         self.number_[name] = nmbr
コード例 #3
0
 def expense(self, nmbr=None):
     expense = {}
     numbers = self.account_
     if nmbr is not None:
         nmbr = number.fmt(nmbr)
         numbers = self.account_[nmbr].expense()
     for num in numbers:
         expense[num] = self.account_[num]
     return expense
コード例 #4
0
 def income(self, nmbr=None):
     income = {}
     numbers = self.account_
     if nmbr is not None:
         nmbr = number.fmt(nmbr)
         numbers = self.account_[nmbr].income()
     for num in numbers:
         income[num] = self.account_[num]
     return income
コード例 #5
0
 def number(self, name, num=None):
     name = clean(name)
     if num is not None:
         self.number_[name] = number.fmt(num)
     try:
         return self.number_[name]
     except KeyError:
         if name in self.vendor_:
             return None
         raise
コード例 #6
0
    def set(self, key, val):
        if key is None:
            return None

        key = clean(key)
        if not key in KEYS:
            raise ValueError("Unknown entry key "+key)

        if val is None:
            return self.element.get(key)

        if key in ["number"]:
            self.element[key] = number.fmt(val)
        elif key in ["opening", "month", "month_prior", "month_diff",
                     "ytd", "ytd_prior", "ytd_diff"]:
            self.element[key] = amount.fmt(val)
        else:
            self.element[key] = clean(val)

        return self.element.get(key)
コード例 #7
0
    def set(self, key, val):
        if key is None:
            return None

        key = clean(key)
        if not key in KEYS:
            raise ValueError("Unknown entry key "+key)

        if val is None:
            return self.element.get(key)

        if key in ["number"]:
            self.element[key] = number.fmt(val)
        elif key in ["credit", "debit"]:
            self.element[key] = amount.fmt(val)
        elif key in ["date", "posted", "date_due"]:
            self.element[key] = date.fmt(val)
        elif key in ["id", "check_number"]:
            self.element[key] = int(clean(val))
        else:
            self.element[key] = clean(val)

        return self.element.get(key)
コード例 #8
0
 def expense(self, string=None):
     if string is not None:
         self.expense_.append(number.fmt(string))
     return self.expense_
コード例 #9
0
 def income(self, string=None):
     if string is not None:
         self.income_.append(number.fmt(string))
     return self.income_
コード例 #10
0
 def children(self, string=None):
     if string is not None:
         self.children_.append(number.fmt(string))
     return self.children_
コード例 #11
0
 def parent(self, string=None):
     if string is not None:
         self.parent_ = number.fmt(string)
     return self.parent_
コード例 #12
0
 def number(self, string=None):
     if string is not None:
         self.number_ = number.fmt(string)
     return self.number_