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()
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
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)
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()
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))
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
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()