コード例 #1
0
 def __init__(self, parent):
     super(ContactTab, self).__init__(parent=parent)
     layout = QVBoxLayout(self)
     q = Transaction.query(keys_only=False,
                           include_subclasses=True,
                           raw=True)
     q.add_aggregate("amt", name="total", groupby=Contact, func="SUM")
     q.add_join(Contact, "contact", jointype="RIGHT")
     self.table = grumpy.view.TableView(q, [
         bucks.app.base.DebitCreditColumn(
             attr='total', sign=bucks.app.base.DebitCreditColumn.Debit),
         bucks.app.DebitCreditColumn(
             attr='total', sign=bucks.app.base.DebitCreditColumn.Credit),
         grumpy.model.TableColumn(attr='contact."contact_name"',
                                  header='Name')
     ],
                                        key_attr='contact."_key"')
     self.table.setMinimumSize(400, 300)
     layout.addWidget(self.table)
     self.form = ContactForm(self)
     layout.addWidget(self.form)
     self.setLayout(layout)
     self.table.objectSelected.connect(self.form.set_instance)
     self.form.refresh.connect(self.table.refresh)
     QCoreApplication.instance().importer.imported.connect(
         self.table.refresh)
コード例 #2
0
 def __init__(self, tab):
     super(ContactForm, self).__init__(tab, Contact)
     self.addProperty(Contact,
                      "^",
                      0,
                      1,
                      refclass=Contact,
                      query=self.query,
                      label="Alias for",
                      required=False)
     self.addProperty(Contact, "contact_name", 2, 1)
     q = Transaction.query(keys_only=False,
                           include_subclasses=True,
                           raw=True)
     q.add_parent_join(Account)
     q.add_filter("contact", "XX")
     self.tx_list = grumpy.view.TableView(q, [
         grumpy.model.TableColumn(attr='date', header='Date'),
         grumpy.model.TableColumn(attr='+p."acc_name"', header='Account'),
         bucks.app.base.DebitCreditColumn(
             attr='amt', sign=bucks.app.base.DebitCreditColumn.Debit),
         bucks.app.base.DebitCreditColumn(
             attr='amt', sign=bucks.app.base.DebitCreditColumn.Credit),
         grumpy.model.TableColumn(attr='description', header='Description')
     ],
                                          key_attr='_key')
     self.addTab(self.tx_list, "Transactions")
コード例 #3
0
ファイル: balance.py プロジェクト: JanDeVisser/sweattrails
 def getvalue(self, instance):
     if not instance.is_new():
         from bucks.datamodel.account import Transaction
         q = Transaction.query()
         q.add_filter(self.entity_prop, "->", instance)
         q.add_aggregate("amt")
         return q.singleton()
コード例 #4
0
ファイル: category.py プロジェクト: JanDeVisser/sweattrails
 def get_categories(cls):
     from bucks.datamodel.account import Transaction
     q = Transaction.query(keys_only=False,
                           include_subclasses=True,
                           alias="category")
     q.add_synthetic_column("debit",
                            "(CASE WHEN amt < 0 THEN -amt ELSE 0 END)")
     q.add_synthetic_column("credit",
                            "(CASE WHEN amt > 0 THEN amt ELSE 0 END)")
     q.add_aggregate("k.debit",
                     name="total_debit",
                     groupby=Category,
                     func="SUM",
                     default=0.0)
     q.add_aggregate("k.credit",
                     name="total_credit",
                     groupby=Category,
                     func="SUM",
                     default=0.0)
     q.add_aggregate("k.amt",
                     name="total",
                     groupby=Category,
                     func="SUM",
                     default=0.0)
     q.add_join(Category, "category", jointype="RIGHT")
     q.add_sort("category.cat_name")
     return q
コード例 #5
0
ファイル: category.py プロジェクト: JanDeVisser/sweattrails
 def transactions(self):
     from bucks.datamodel.account import Account
     from bucks.datamodel.account import Transaction
     from bucks.datamodel.project import Project
     from bucks.datamodel.contact import Contact
     q = Transaction.query(keys_only=False)
     q.add_parent_join(Account)
     q.add_filter("category", "->", self)
     q.add_synthetic_column("debit",
                            "(CASE WHEN amt < 0 THEN -amt ELSE 0 END)")
     q.add_synthetic_column("credit",
                            "(CASE WHEN amt > 0 THEN amt ELSE 0 END)")
     q.add_join(Project, "project", jointype="LEFT", alias="prj")
     q.add_join(Contact, "contact", jointype="LEFT", alias="ctc")
     q.add_sort("date")
     return q
コード例 #6
0
ファイル: project.py プロジェクト: JanDeVisser/sweattrails
    def __init__(self, parent):
        super(ProjectTab, self).__init__(parent=parent)
        layout = QVBoxLayout(self)

        q = Transaction.query(keys_only=False,
                              include_subclasses=True,
                              alias="project")
        q.add_synthetic_column("debit",
                               "(CASE WHEN amt < 0 THEN -amt ELSE 0 END)")
        q.add_synthetic_column("credit",
                               "(CASE WHEN amt > 0 THEN amt ELSE 0 END)")
        q.add_aggregate("k.debit",
                        name="total_debit",
                        groupby=Project,
                        func="SUM")
        q.add_aggregate("k.credit",
                        name="total_credit",
                        groupby=Project,
                        func="SUM")
        q.add_aggregate("k.amt", name="total", groupby=Project, func="SUM")
        q.add_join(Project, "project", jointype="RIGHT")
        self.tree = grumpy.view.TreeView(
            self,
            kind=Project,
            query=q,
            root=None,
            columns=[
                grumpy.model.TableColumn("total_debit", header="Debit"),
                grumpy.model.TableColumn("total_credit", header="Credit"),
                grumpy.model.TableColumn("total", header="Total"),
            ])
        self.tree.setMinimumSize(400, 300)
        layout.addWidget(self.tree)
        self.form = ProjectForm(self)
        layout.addWidget(self.form)
        self.setLayout(layout)
        self.tree.objectSelected.connect(self.form.set_instance)
        self.form.refresh.connect(self.tree.refresh)
        QCoreApplication.instance().importer.imported.connect(
            self.tree.refresh)