コード例 #1
0
 def setUp(self):
     """Create an Asset and Liability account."""
     asset_header = create_header('Asset Header', cat_type=1)
     self.asset_account = create_account('Asset Account', asset_header, 0)
     liability_header = create_header('Liability Header')
     self.liability_account = create_account('Liability Account',
                                             liability_header, 0)
コード例 #2
0
    def test_get_profit_loss_header_totals_flipped(self):
        """
        The totals for Expenses, Cost of Goods Sold and Other Expenses should
        display the value total, not the credit/debit total.
        """
        child_header = create_header("Child Expense", self.expense_header, 6)
        gchild_account = create_account("GrandChild Expense", child_header, 0,
                                        6)
        gchild_header = create_header("Grandchild Expense", child_header, 6)
        ggchild_account = create_account("Great Grandchild Expense",
                                         gchild_header, 0, 6)

        entry = create_entry(datetime.date.today(), "test entry")
        create_transaction(entry, self.expense_account, 25)
        create_transaction(entry, gchild_account, 47)
        create_transaction(entry, ggchild_account, 82)

        start_date = datetime.date(1, 1, 1)
        stop_date = datetime.date.today()

        root_header = _get_profit_loss_header_totals(6, start_date, stop_date)
        child_header_result = root_header.descendants[0]
        gchild_header_result = child_header_result.descendants[0]

        self.assertEqual(root_header.total, -154)
        self.assertSequenceEqual(root_header.descendants, [child_header])
        self.assertEqual(child_header_result.total, -129)
        self.assertSequenceEqual(child_header_result.descendants,
                                 [gchild_header])
        self.assertEqual(gchild_header_result.total, -82)
コード例 #3
0
ファイル: tests.py プロジェクト: clehner/AcornAccounting
    def test_get_profit_loss_header_totals(self):
        """
        The function should return a root Header with the descendants and
        total attributes.
        """
        child_header = create_header("Child Income", self.income_header, 4)
        gchild_account = create_account("GrandChild Income", child_header,
                                        0, 4)
        gchild_header = create_header("Grandchild Income", child_header, 4)
        ggchild_account = create_account("Great Grandchild Income",
                                         gchild_header, 0, 4)

        entry = create_entry(datetime.date.today(), "test entry")
        create_transaction(entry, self.income_account, 25)
        create_transaction(entry, gchild_account, 47)
        create_transaction(entry, ggchild_account, 82)

        start_date = datetime.date(1, 1, 1)
        stop_date = datetime.date.today()

        root_header = _get_profit_loss_header_totals(4, start_date, stop_date)
        child_header_result = root_header.descendants[0]
        gchild_header_result = child_header_result.descendants[0]

        self.assertEqual(root_header.total, 154)
        self.assertSequenceEqual(root_header.descendants, [child_header])
        self.assertEqual(child_header_result.total, 129)
        self.assertSequenceEqual(child_header_result.descendants,
                                 [gchild_header])
        self.assertEqual(gchild_header_result.total, 82)
コード例 #4
0
ファイル: tests.py プロジェクト: priestd09/AcornAccounting
 def setUp(self):
     """Create an initial Account, CreditCard & some CreditCardEntries."""
     create_and_login_user(self)
     self.liability_header = create_header('liability', cat_type=2)
     self.cc_account = create_account(
         "Credit Card", self.liability_header, 0)
     self.creditcard = CreditCard.objects.create(account=self.cc_account)
     self.expense_header = create_header("expenses", None, 6)
     self.expense_account = create_account(
         "expense", self.expense_header, 0, 6)
     entry_date = datetime.date(2015, 6, 11)
     self.entry = CreditCardEntry.objects.create(
         date=entry_date, card=self.creditcard, name='test anarch',
         merchant='test merch', amount=20,
     )
     self.transaction = CreditCardTransaction.objects.create(
         creditcard_entry=self.entry, account=self.expense_account,
         amount=20,
     )
     self.older_entry = CreditCardEntry.objects.create(
         date=entry_date - datetime.timedelta(days=1), card=self.creditcard,
         name='test anarch', merchant='test merch', amount=20)
     self.older_transaction = CreditCardTransaction.objects.create(
         creditcard_entry=self.older_entry, account=self.expense_account,
         amount=20)
コード例 #5
0
ファイル: tests.py プロジェクト: clehner/AcornAccounting
    def test_get_profit_loss_header_totals_flipped(self):
        """
        The totals for Expenses, Cost of Goods Sold and Other Expenses should
        display the value total, not the credit/debit total.
        """
        child_header = create_header("Child Expense", self.expense_header, 6)
        gchild_account = create_account("GrandChild Expense", child_header,
                                        0, 6)
        gchild_header = create_header("Grandchild Expense", child_header, 6)
        ggchild_account = create_account("Great Grandchild Expense",
                                         gchild_header, 0, 6)

        entry = create_entry(datetime.date.today(), "test entry")
        create_transaction(entry, self.expense_account, 25)
        create_transaction(entry, gchild_account, 47)
        create_transaction(entry, ggchild_account, 82)

        start_date = datetime.date(1, 1, 1)
        stop_date = datetime.date.today()

        root_header = _get_profit_loss_header_totals(6, start_date, stop_date)
        child_header_result = root_header.descendants[0]
        gchild_header_result = child_header_result.descendants[0]

        self.assertEqual(root_header.total, -154)
        self.assertSequenceEqual(root_header.descendants, [child_header])
        self.assertEqual(child_header_result.total, -129)
        self.assertSequenceEqual(child_header_result.descendants,
                                 [gchild_header])
        self.assertEqual(gchild_header_result.total, -82)
コード例 #6
0
ファイル: tests.py プロジェクト: clehner/AcornAccounting
 def setUp(self):
     """Create an Asset and Liability account."""
     asset_header = create_header('Asset Header', cat_type=1)
     self.asset_account = create_account('Asset Account', asset_header, 0)
     liability_header = create_header('Liability Header')
     self.liability_account = create_account('Liability Account',
                                             liability_header, 0)
コード例 #7
0
    def setUp(self):
        """Create initial Headers, Accounts, an Entry & Transactions."""
        self.liability_header = create_header('liability', cat_type=2)
        self.trip_advances = create_account(
            "Trip Advances", self.liability_header, 0)
        self.store_account = create_account(
            "Local Store Credit Account", self.liability_header, 0)
        self.store = StoreAccount.objects.create(
            name='Local Store', account=self.store_account)
        self.expense_header = create_header("expenses", None, 6)
        self.expense_account = create_account(
            "expense", self.expense_header, 0, 6)

        entry_date = datetime.date(2015, 6, 11)
        self.entry = TripEntry.objects.create(
            date=entry_date, name='Testeroni', number='42',
            total_trip_advance=100, amount=50)
        self.trans1 = TripTransaction.objects.create(
            trip_entry=self.entry, account=self.expense_account, amount=25)
        self.trans2 = TripTransaction.objects.create(
            trip_entry=self.entry, account=self.expense_account, amount=25)
        self.store_trans = TripStoreTransaction.objects.create(
            trip_entry=self.entry, store=self.store,
            account=self.expense_account, amount=25
        )
コード例 #8
0
    def test_get_profit_loss_header_totals(self):
        """
        The function should return a root Header with the descendants and
        total attributes.
        """
        child_header = create_header("Child Income", self.income_header, 4)
        gchild_account = create_account("GrandChild Income", child_header, 0,
                                        4)
        gchild_header = create_header("Grandchild Income", child_header, 4)
        ggchild_account = create_account("Great Grandchild Income",
                                         gchild_header, 0, 4)

        entry = create_entry(datetime.date.today(), "test entry")
        create_transaction(entry, self.income_account, 25)
        create_transaction(entry, gchild_account, 47)
        create_transaction(entry, ggchild_account, 82)

        start_date = datetime.date(1, 1, 1)
        stop_date = datetime.date.today()

        root_header = _get_profit_loss_header_totals(4, start_date, stop_date)
        child_header_result = root_header.descendants[0]
        gchild_header_result = child_header_result.descendants[0]

        self.assertEqual(root_header.total, 154)
        self.assertSequenceEqual(root_header.descendants, [child_header])
        self.assertEqual(child_header_result.total, 129)
        self.assertSequenceEqual(child_header_result.descendants,
                                 [gchild_header])
        self.assertEqual(gchild_header_result.total, 82)
コード例 #9
0
ファイル: tests.py プロジェクト: priestd09/AcornAccounting
 def setUp(self):
     """Create an initial Account & CreditCard."""
     self.liability_header = create_header('liability', cat_type=2)
     self.cc_account = create_account(
         "Credit Card", self.liability_header, 0)
     self.creditcard = CreditCard.objects.create(account=self.cc_account)
     self.expense_header = create_header("expenses", None, 6)
     self.expense_account = create_account(
         "expense", self.expense_header, 0, 6)
コード例 #10
0
 def setUp(self):
     """Add some accounts and an exisiting BankReceivingEntry."""
     self.header = create_header('Initial')
     self.bank_account = create_account(
         'B Account', self.header, 0, 0, True)
     self.income_account = create_account(
         'I Account', self.header, 0, 4, False)
     self.day = datetime.date(2014, 4, 20)
     self.main_transaction = Transaction.objects.create(
         account=self.bank_account, balance_delta=50)
     self.entry = BankReceivingEntry.objects.create(
         main_transaction=self.main_transaction, date=self.day, memo="test",
         payor="payor")
     Transaction.objects.create(
         bankreceive_entry=self.entry, account=self.income_account,
         balance_delta=-50, detail="")
コード例 #11
0
 def test_get_importer_returns_imported_class(self):
     """Test that `get_importer_class` returns the correct class."""
     header = create_header('Assets')
     account = create_account('Account', header, 0, 0, True)
     bank_account = BankAccount.objects.create(
         account=account, bank=BankAccount.VCB_CSV_IMPORTER)
     self.assertEqual(bank_account.get_importer_class(), CSVImporter)
コード例 #12
0
ファイル: tests.py プロジェクト: priestd09/AcornAccounting
 def setUp(self):
     """Create Headers, Accounts and an Event."""
     self.liability_header = create_header("Liability Account")
     self.liability_account = create_account("Liability Account", self.liability_header, 0)
     self.event = Event.objects.create(
         name="test", abbreviation="T", date=datetime.date.today(), city="Louisa", state="MD"
     )
コード例 #13
0
    def setUp(self):
        """Create Banks and Income/Expense Accounts."""
        create_and_login_user(self)

        self.asset_header = create_header('asset', cat_type=1)
        self.expense_header = create_header('expense', cat_type=6)
        self.income_header = create_header('income', cat_type=4)
        self.asset_account = create_account(
            'asset', self.asset_header, 0, 1, True)
        self.other_asset = create_account(
            'other asset', self.asset_header, 0, 1, True)
        self.expense_account = create_account(
            'expense', self.expense_header, 0, 6)
        self.income_account = create_account(
            'income', self.income_header, 0, 4)
        self.bank_account = BankAccount.objects.create(
            account=self.asset_account, bank=BankAccount.VCB_CSV_IMPORTER)
コード例 #14
0
ファイル: tests.py プロジェクト: priestd09/AcornAccounting
 def setUp(self):
     """
     Events are tied to Transactions which require an Account.
     """
     self.asset_header = create_header("asset", cat_type=1)
     self.bank_account = create_account("bank", self.asset_header, 0, 1, True)
     self.event = Event.objects.create(
         name="test event", city="mineral", state="VA", date=datetime.date.today(), abbreviation="TE"
     )
コード例 #15
0
ファイル: tests.py プロジェクト: priestd09/AcornAccounting
 def setUp(self):
     """Create a CreditCardEntry to show."""
     self.liability_header = create_header('liability', cat_type=2)
     self.cc_account = create_account(
         "Credit Card", self.liability_header, 0)
     self.creditcard = CreditCard.objects.create(account=self.cc_account)
     self.expense_header = create_header("expenses", None, 6)
     self.expense_account = create_account(
         "expense", self.expense_header, 0, 6)
     entry_date = datetime.date.today()
     self.entry = CreditCardEntry.objects.create(
         date=entry_date, card=self.creditcard, name='test anarch',
         merchant='test merch', amount=20,
     )
     self.transaction = CreditCardTransaction.objects.create(
         creditcard_entry=self.entry, account=self.expense_account,
         amount=20,
     )
コード例 #16
0
 def setUp(self):
     """Add some accounts and an exisiting BankSpendingEntry."""
     self.header = create_header('Assets')
     self.bank_account = create_account(
         'B Account', self.header, 0, 0, True)
     self.wrapper_account = BankAccount.objects.create(
         account=self.bank_account,
         bank='bank_import.importers.vcb.CSVImporter')
     self.expense_account = create_account(
         'E Account', self.header, 0, 6, False)
     self.day = datetime.date(2014, 4, 20)
     self.main_transaction = Transaction.objects.create(
         account=self.bank_account, balance_delta=-50)
     self.entry = BankSpendingEntry.objects.create(
         main_transaction=self.main_transaction, date=self.day, memo="test",
         payee="payee", ach_payment=True)
     Transaction.objects.create(
         bankspend_entry=self.entry, account=self.expense_account,
         balance_delta=50, detail="")
コード例 #17
0
 def setUp(self):
     """Create Headers, Accounts and an Event."""
     self.liability_header = create_header('Liability Account')
     self.liability_account = create_account('Liability Account',
                                             self.liability_header, 0)
     self.event = Event.objects.create(name="test",
                                       abbreviation="T",
                                       date=datetime.date.today(),
                                       city="Louisa",
                                       state="MD")
コード例 #18
0
ファイル: tests.py プロジェクト: clehner/AcornAccounting
 def setUp(self):
     """
     The report requires Income, Cost of Sales, Expense, Other Income and
     Other Expense Headers and Accounts.
     """
     self.income_header = create_header('Income Header', cat_type=4)
     self.income_account = create_account('Income Account',
                                          self.income_header, 0, 4)
     self.cos_header = create_header('Cost of Sales Header', cat_type=5)
     self.cos_account = create_account('Cost of Sales Account',
                                       self.cos_header, 0, 5)
     self.expense_header = create_header('Expense Header', cat_type=6)
     self.expense_account = create_account('Expense Account',
                                           self.expense_header, 0, 6)
     self.oincome_header = create_header('Other Income Header', cat_type=7)
     self.oincome_account = create_account('Other Income Account',
                                           self.oincome_header, 0, 7)
     self.oexpense_header = create_header('Other Expense Header',
                                          cat_type=8)
     self.oexpense_account = create_account('Other Expense Account',
                                            self.oexpense_header, 0, 8)
コード例 #19
0
 def setUp(self):
     """
     The report requires Income, Cost of Sales, Expense, Other Income and
     Other Expense Headers and Accounts.
     """
     self.income_header = create_header('Income Header', cat_type=4)
     self.income_account = create_account('Income Account',
                                          self.income_header, 0, 4)
     self.cos_header = create_header('Cost of Sales Header', cat_type=5)
     self.cos_account = create_account('Cost of Sales Account',
                                       self.cos_header, 0, 5)
     self.expense_header = create_header('Expense Header', cat_type=6)
     self.expense_account = create_account('Expense Account',
                                           self.expense_header, 0, 6)
     self.oincome_header = create_header('Other Income Header', cat_type=7)
     self.oincome_account = create_account('Other Income Account',
                                           self.oincome_header, 0, 7)
     self.oexpense_header = create_header('Other Expense Header',
                                          cat_type=8)
     self.oexpense_account = create_account('Other Expense Account',
                                            self.oexpense_header, 0, 8)
コード例 #20
0
 def setUp(self):
     """
     Events are tied to Transactions which require an Account.
     """
     self.asset_header = create_header('asset', cat_type=1)
     self.bank_account = create_account('bank', self.asset_header, 0, 1,
                                        True)
     self.event = Event.objects.create(name='test event',
                                       city='mineral',
                                       state='VA',
                                       date=datetime.date.today(),
                                       abbreviation="TE")
コード例 #21
0
ファイル: tests.py プロジェクト: clehner/AcornAccounting
 def setUp(self):
     """Create some events and transactions."""
     liability_header = create_header('Liability Account')
     liability_account = create_account('Liability Account',
                                        liability_header, 0)
     self.event1 = Event.objects.create(name="test", abbreviation="TBMD",
                                        date=datetime.date.today(),
                                        city="Baltimore", state="MD")
     self.event2 = Event.objects.create(name="test", abbreviation="TRVA",
                                        date=datetime.date.today(),
                                        city="Richmond", state="VA")
     entry = create_entry(datetime.date.today(), 'test memo')
     Transaction.objects.create(journal_entry=entry,
                                account=liability_account,
                                balance_delta=25, event=self.event1)
     Transaction.objects.create(journal_entry=entry,
                                account=liability_account,
                                balance_delta=-15, event=self.event2)
コード例 #22
0
    def setUp(self):
        """Create an Account and an Entry of each type."""
        self.header = create_header('Assets')
        self.account = create_account('Account', self.header, 0, 0, True)
        self.bank_account = BankAccount.objects.create(account=self.account)
        self.day = datetime.date(2014, 4, 20)

        self.deposit_transfer = Transaction.objects.create(
            account=self.account, balance_delta=-30, date=self.day)
        self.withdrawal_transfer = Transaction.objects.create(
            account=self.account, balance_delta=30, date=self.day)
        self.deposit_transaction = Transaction.objects.create(
            account=self.account, balance_delta=-20)
        self.deposit = BankReceivingEntry.objects.create(
            main_transaction=self.deposit_transaction,
            memo='deposit memo', payor='payor', date=self.day)
        self.withdrawal_transaction = Transaction.objects.create(
            account=self.account, balance_delta=20)
        self.withdrawal = BankSpendingEntry.objects.create(
            main_transaction=self.withdrawal_transaction, date=self.day,
            memo='withdrawal memo', payee='payee', ach_payment=True)
コード例 #23
0
 def setUp(self):
     """Create some events and transactions."""
     liability_header = create_header('Liability Account')
     liability_account = create_account('Liability Account',
                                        liability_header, 0)
     self.event1 = Event.objects.create(name="test",
                                        abbreviation="TBMD",
                                        date=datetime.date.today(),
                                        city="Baltimore",
                                        state="MD")
     self.event2 = Event.objects.create(name="test",
                                        abbreviation="TRVA",
                                        date=datetime.date.today(),
                                        city="Richmond",
                                        state="VA")
     entry = create_entry(datetime.date.today(), 'test memo')
     Transaction.objects.create(journal_entry=entry,
                                account=liability_account,
                                balance_delta=25,
                                event=self.event1)
     Transaction.objects.create(journal_entry=entry,
                                account=liability_account,
                                balance_delta=-15,
                                event=self.event2)
コード例 #24
0
 def setUp(self):
     """Create a bank account."""
     self.header = create_header('Assets')
     self.account = create_account('Account', self.header, 0, 0, True)
     self.day = datetime.date(2014, 4, 20)
コード例 #25
0
ファイル: tests.py プロジェクト: priestd09/AcornAccounting
    def test_save_and_next_success(self):
        """
        A `POST` using the `Save & View Next` button with valid data should
        only update the CreditCardEntry.

        The page should redirect to the approval page for the next
        CreditCardEntry belonging to the card, by creation date then id.
        """
        other_cc_acount = create_account('Card 2', self.liability_header, 0)
        other_card = CreditCard.objects.create(account=other_cc_acount)
        previous_date = self.entry.date - datetime.timedelta(days=1)
        future_date = self.entry.date + datetime.timedelta(days=1)

        other_card_entry = CreditCardEntry.objects.create(
            date=self.entry.date, card=other_card, name='test anarch',
            merchant='test merch', amount=20)
        CreditCardTransaction.objects.create(
            creditcard_entry=other_card_entry, account=self.expense_account,
            amount=20)
        oldest_entry = CreditCardEntry.objects.create(
            date=previous_date - datetime.timedelta(days=1),
            card=self.creditcard, name='test anarch', merchant='test merch',
            amount=20)
        CreditCardTransaction.objects.create(
            creditcard_entry=oldest_entry, account=self.expense_account,
            amount=20)
        older_entry = CreditCardEntry.objects.create(
            date=previous_date, card=self.creditcard, name='test anarch',
            merchant='test merch', amount=20)
        CreditCardTransaction.objects.create(
            creditcard_entry=older_entry, account=self.expense_account,
            amount=20)
        future_entry = CreditCardEntry.objects.create(
            date=future_date + datetime.timedelta(days=1),
            card=self.creditcard, name='test anarch', merchant='test merch',
            amount=20)
        CreditCardTransaction.objects.create(
            creditcard_entry=future_entry, account=self.expense_account,
            amount=20)
        next_entry = CreditCardEntry.objects.create(
            date=future_date, card=self.creditcard, name='test anarch',
            merchant='test merch', amount=20)
        CreditCardTransaction.objects.create(
            creditcard_entry=next_entry, account=self.expense_account,
            amount=20)
        higher_id_entry = CreditCardEntry.objects.create(
            date=future_date, card=self.creditcard, name='test anarch',
            merchant='test merch', amount=20)
        CreditCardTransaction.objects.create(
            creditcard_entry=higher_id_entry, account=self.expense_account,
            amount=20)

        response = self.client.post(
            reverse('creditcards.views.add_creditcard_entry',
                    args=[str(self.entry.id)]),
            data={'entry-id': self.entry.id,
                  'entry-date': '6/11/2015',
                  'entry-name': self.entry.name,
                  'entry-merchant': 'test merch',
                  'entry-amount': 42,
                  'entry-card': self.creditcard.id,
                  'transaction-TOTAL_FORMS': 1,
                  'transaction-INITIAL_FORMS': 1,
                  'transaction-MAX_NUM_FORMS': 1,
                  'transaction-0-id': self.transaction.id,
                  'transaction-0-creditcard_entry': self.entry.id,
                  'transaction-0-detail': self.transaction.detail,
                  'transaction-0-amount': 42,
                  'transaction-0-account': self.expense_account.id,
                  'subbtn': 'Submit & Open Next'})
        self.assertRedirects(
            response, reverse('creditcards.views.add_creditcard_entry',
                              args=[str(next_entry.id)]))
コード例 #26
0
 def setUp(self):
     """Create an Entry for the Receipt."""
     self.header = create_header("Expense Header", None, 6)
     self.account = create_account("Darmok's Stipend", self.header, 0, 6)
     self.entry = create_entry(datetime.date.today(), 'Unique New York')
コード例 #27
0
ファイル: tests.py プロジェクト: priestd09/AcornAccounting
 def setUp(self):
     """Create an initial Account."""
     self.header = create_header("Credit Cards", None, 2)
     self.account = create_account("Darmok's CC", self.header, 0, 2)