예제 #1
0
    def test_claimed_status(self):
        # CLAIMED Status check, full amount claimed
        payable_account = get_payable_account("_Test Company")
        claim = make_expense_claim(payable_account,
                                   1000,
                                   1000,
                                   "_Test Company",
                                   "Travel Expenses - _TC",
                                   do_not_submit=True)

        advance = make_employee_advance(claim.employee)
        pe = make_payment_entry(advance)
        pe.submit()

        claim = get_advances_for_claim(claim, advance.name)
        claim.save()
        claim.submit()

        advance.reload()
        self.assertEqual(advance.claimed_amount, 1000)
        self.assertEqual(advance.status, "Claimed")

        # advance should not be shown in claims
        advances = get_advances(claim.employee)
        advances = [entry.name for entry in advances]
        self.assertTrue(advance.name not in advances)

        # cancel claim; status should be Paid
        claim.cancel()
        advance.reload()
        self.assertEqual(advance.claimed_amount, 0)
        self.assertEqual(advance.status, "Paid")
예제 #2
0
    def test_payment_entry_against_ec(self):

        payable = frappe.db.get_value('Company', "_Test Company",
                                      'default_payable_account')
        ec = make_expense_claim(payable, 300, 300, "_Test Company",
                                "Travel Expenses - _TC")
        pe = get_payment_entry("Expense Claim",
                               ec.name,
                               bank_account="_Test Bank USD - _TC",
                               bank_amount=300)
        pe.reference_no = "1"
        pe.reference_date = "2016-01-01"
        pe.source_exchange_rate = 1
        pe.paid_to = payable
        pe.insert()
        pe.submit()

        expected_gle = dict((d[0], d)
                            for d in [[payable, 300, 0, ec.name],
                                      ["_Test Bank USD - _TC", 0, 300, None]])

        self.validate_gl_entries(pe.name, expected_gle)

        outstanding_amount = flt(frappe.db.get_value("Expense Claim", ec.name, "total_sanctioned_amount")) - \
         flt(frappe.db.get_value("Expense Claim", ec.name, "total_amount_reimbursed"))
        self.assertEqual(outstanding_amount, 0)
예제 #3
0
	def test_payment_entry_against_ec(self):

		payable = frappe.db.get_value('Company', "_Test Company", 'default_payable_account')
		ec =  make_expense_claim(payable, 300, 300, "_Test Company","Travel Expenses - _TC")
		pe = get_payment_entry("Expense Claim", ec.name, bank_account="_Test Bank USD - _TC", bank_amount=300)
		pe.reference_no = "1"
		pe.reference_date = "2016-01-01"
		pe.source_exchange_rate = 1
		pe.insert()
		pe.submit()

		expected_gle = dict((d[0], d) for d in [
			[payable, 300, 0, ec.name],
			["_Test Bank USD - _TC", 0, 300, None]
		])

		self.validate_gl_entries(pe.name, expected_gle)

		outstanding_amount = flt(frappe.db.get_value("Expense Claim", ec.name, "total_sanctioned_amount")) - \
			flt(frappe.db.get_value("Expense Claim", ec.name, "total_amount_reimbursed"))
		self.assertEqual(outstanding_amount, 0)
예제 #4
0
    def test_partly_claimed_and_returned_status(self):
        payable_account = get_payable_account("_Test Company")
        claim = make_expense_claim(payable_account,
                                   1000,
                                   1000,
                                   "_Test Company",
                                   "Travel Expenses - _TC",
                                   do_not_submit=True)

        advance = make_employee_advance(claim.employee)
        pe = make_payment_entry(advance)
        pe.submit()

        # PARTLY CLAIMED AND RETURNED status check
        # 500 Claimed, 500 Returned
        claim = make_expense_claim(payable_account,
                                   500,
                                   500,
                                   "_Test Company",
                                   "Travel Expenses - _TC",
                                   do_not_submit=True)

        advance = make_employee_advance(claim.employee)
        pe = make_payment_entry(advance)
        pe.submit()

        claim = get_advances_for_claim(claim, advance.name, amount=500)
        claim.save()
        claim.submit()

        advance.reload()
        self.assertEqual(advance.claimed_amount, 500)
        self.assertEqual(advance.status, "Paid")

        entry = make_return_entry(
            employee=advance.employee,
            company=advance.company,
            employee_advance_name=advance.name,
            return_amount=flt(advance.paid_amount - advance.claimed_amount),
            advance_account=advance.advance_account,
            mode_of_payment=advance.mode_of_payment,
            currency=advance.currency,
            exchange_rate=advance.exchange_rate,
        )

        entry = frappe.get_doc(entry)
        entry.insert()
        entry.submit()

        advance.reload()
        self.assertEqual(advance.return_amount, 500)
        self.assertEqual(advance.status, "Partly Claimed and Returned")

        # advance should not be shown in claims
        advances = get_advances(claim.employee)
        advances = [entry.name for entry in advances]
        self.assertTrue(advance.name not in advances)

        # Cancel return entry; status should change to PAID
        entry.cancel()
        advance.reload()
        self.assertEqual(advance.return_amount, 0)
        self.assertEqual(advance.status, "Paid")

        # advance should be shown in claims
        advances = get_advances(claim.employee)
        advances = [entry.name for entry in advances]
        self.assertTrue(advance.name in advances)