Example #1
0
 def test_single_transaction(self, book_basic):
     today = datetime.today()
     print("today=", today)
     factories.single_transaction(
         today.date(),
         today,
         "my test",
         Decimal(100),
         from_account=book_basic.accounts(name="inc"),
         to_account=book_basic.accounts(name="asset"),
     )
     book_basic.save()
     tr = book_basic.transactions(description="my test")
     assert len(tr.splits) == 2
     sp1, sp2 = tr.splits
     if sp1.value > 0:
         sp2, sp1 = sp1, sp2
     # sp1 has negative value
     assert sp1.account == book_basic.accounts(name="inc")
     assert sp2.account == book_basic.accounts(name="asset")
     assert sp1.value == -sp2.value
     assert sp1.quantity == sp1.value
     assert tr.enter_date == tzlocal.get_localzone().localize(
         today.replace(microsecond=0))
     assert tr.post_date == tzlocal.get_localzone().localize(today).date()
Example #2
0
 def test_single_transaction_rollback(self, book_basic):
     today = tzlocal.get_localzone().localize(datetime.today())
     factories.single_transaction(today,
                                  today,
                                  "my test",
                                  Decimal(100),
                                  from_account=book_basic.accounts(name="inc"),
                                  to_account=book_basic.accounts(name="asset"))
     book_basic.validate()
     assert len(book_basic.transactions) == 1
     book_basic.cancel()
     assert len(book_basic.transactions) == 0
Example #3
0
 def test_single_transaction_tz(self, book_basic):
     today = tzlocal.get_localzone().localize(datetime.today())
     factories.single_transaction(today,
                                  today,
                                  "my test",
                                  Decimal(100),
                                  from_account=book_basic.accounts(name="inc"),
                                  to_account=book_basic.accounts(name="asset"))
     book_basic.save()
     tr = book_basic.transactions(description="my test")
     assert tr.post_date == today.replace(hour=11, minute=0, second=0, microsecond=0)
     assert tr.enter_date == today.replace(microsecond=0)
Example #4
0
    def expenseTransaction(self, assetAccountFullName, expenseAccountFullName,
                           description, value):
        today = datetime.now()

        single_transaction(
            post_date=today,
            enter_date=today,
            description=description,
            value=value,
            from_account=self.book.accounts(fullname=assetAccountFullName),
            to_account=self.book.accounts(fullname=expenseAccountFullName))

        self.book.save()
Example #5
0
 def test_single_transaction(self, book_basic):
     today = datetime.today()
     factories.single_transaction(today,
                                  today,
                                  "my test",
                                  Decimal(100),
                                  from_account=book_basic.accounts(name="inc"),
                                  to_account=book_basic.accounts(name="asset"))
     book_basic.save()
     tr = book_basic.transactions(description="my test")
     assert len(tr.splits) == 2
     sp1, sp2 = tr.splits
     if sp1.value > 0:
         sp2, sp1 = sp1, sp2
     # sp1 has negative value
     assert sp1.account == book_basic.accounts(name="inc")
     assert sp2.account == book_basic.accounts(name="asset")
     assert sp1.value == -sp2.value
     assert sp1.quantity == sp1.value
     assert tr.enter_date == tzlocal.get_localzone().localize(today.replace(microsecond=0))
     assert tr.post_date == tzlocal.get_localzone().localize(today.replace(hour=11, minute=0, second=0, microsecond=0))
Example #6
0
    def new_transaction(self,
                        from_account,
                        to_account,
                        description,
                        value,
                        date=None):

        post_date = datetime.datetime.strptime(
            date, '%d%m%y').date() if date else datetime.date.today()
        enter_date = datetime.datetime.now().replace(microsecond=0)
        value = Decimal(value).quantize(Decimal('1.00'))

        transaction = single_transaction(
            post_date=post_date,
            enter_date=enter_date,
            description=description,
            value=value,
            from_account=self.book.accounts(name=from_account),
            to_account=self.book.accounts(name=to_account))

        self.book.save()

        app.logger.debug("new transaction guid: %s", transaction.guid)
        return transaction
Example #7
0
    num2 = Decimal("100")
    num3 = Decimal("15")

    # create transaction with core objects in one step
    trans1 = Transaction(currency=cad,
                         description="Groceries",
                         splits=[
                             Split(value=num1, account=expenses_acct),
                             Split(value=-num1, account=savings_acct),
                         ])

    # create transaction with core object in multiple steps
    trans2 = Transaction(currency=cad,
                         description="Opening Savings Balance")

    split3 = Split(value=num2,
                   account=savings_acct,
                   transaction=trans2)

    split4 = Split(value=-num2,
                   account=opening_acct,
                   transaction=trans2)

    # create transaction with factory function
    from piecash.core.factories import single_transaction
    trans3 = single_transaction(None,None,"Pharmacy", num3, savings_acct, expenses_acct)

    book.save()