136 lines
2.9 KiB
Python
136 lines
2.9 KiB
Python
import unittest
|
|
from uuid import uuid4 as _uuid4
|
|
|
|
import frappe
|
|
|
|
|
|
def uuid4():
|
|
return str(_uuid4())
|
|
|
|
|
|
class TestTaxes(unittest.TestCase):
|
|
def setUp(self):
|
|
self.company = frappe.get_doc(
|
|
{
|
|
"doctype": "Company",
|
|
"company_name": uuid4(),
|
|
"abbr": "".join(s[0] for s in uuid4().split("-")),
|
|
"default_currency": "USD",
|
|
"country": "United States",
|
|
}
|
|
).insert()
|
|
self.account = frappe.get_doc(
|
|
{
|
|
"doctype": "Account",
|
|
"account_name": uuid4(),
|
|
"account_type": "Tax",
|
|
"company": self.company.name,
|
|
"parent_account": "Duties and Taxes - {self.company.abbr}".format(self=self),
|
|
}
|
|
).insert()
|
|
self.item_group = frappe.get_doc(
|
|
{
|
|
"doctype": "Item Group",
|
|
"item_group_name": uuid4(),
|
|
"parent_item_group": "All Item Groups",
|
|
}
|
|
).insert()
|
|
self.item_tax_template = frappe.get_doc(
|
|
{
|
|
"doctype": "Item Tax Template",
|
|
"title": uuid4(),
|
|
"company": self.company.name,
|
|
"taxes": [
|
|
{
|
|
"tax_type": self.account.name,
|
|
"tax_rate": 2,
|
|
}
|
|
],
|
|
}
|
|
).insert()
|
|
self.item = frappe.get_doc(
|
|
{
|
|
"doctype": "Item",
|
|
"item_code": uuid4(),
|
|
"item_group": self.item_group.name,
|
|
"is_stock_item": 0,
|
|
"taxes": [
|
|
{
|
|
"item_tax_template": self.item_tax_template.name,
|
|
"tax_category": "",
|
|
}
|
|
],
|
|
}
|
|
).insert()
|
|
self.customer = frappe.get_doc(
|
|
{
|
|
"doctype": "Customer",
|
|
"customer_name": uuid4(),
|
|
"customer_group": "All Customer Groups",
|
|
}
|
|
).insert()
|
|
self.supplier = frappe.get_doc(
|
|
{
|
|
"doctype": "Supplier",
|
|
"supplier_name": uuid4(),
|
|
"supplier_group": "All Supplier Groups",
|
|
}
|
|
).insert()
|
|
|
|
def test_taxes(self):
|
|
self.created_docs = []
|
|
for dt in [
|
|
"Purchase Order",
|
|
"Purchase Receipt",
|
|
"Purchase Invoice",
|
|
"Quotation",
|
|
"Sales Order",
|
|
"Delivery Note",
|
|
"Sales Invoice",
|
|
]:
|
|
doc = frappe.get_doc(
|
|
{
|
|
"doctype": dt,
|
|
"company": self.company.name,
|
|
"supplier": self.supplier.name,
|
|
"currency": "USD",
|
|
"schedule_date": frappe.utils.nowdate(),
|
|
"delivery_date": frappe.utils.nowdate(),
|
|
"customer": self.customer.name,
|
|
"buying_price_list"
|
|
if dt.startswith("Purchase")
|
|
else "selling_price_list": "Standard Buying"
|
|
if dt.startswith("Purchase")
|
|
else "Standard Selling",
|
|
"items": [
|
|
{
|
|
"item_code": self.item.name,
|
|
"qty": 300,
|
|
"rate": 100,
|
|
}
|
|
],
|
|
"taxes": [
|
|
{
|
|
"charge_type": "On Item Quantity",
|
|
"account_head": self.account.name,
|
|
"description": "N/A",
|
|
"rate": 0,
|
|
},
|
|
],
|
|
}
|
|
)
|
|
doc.run_method("set_missing_values")
|
|
doc.run_method("calculate_taxes_and_totals")
|
|
doc.insert()
|
|
self.assertEqual(doc.taxes[0].tax_amount, 600)
|
|
self.created_docs.append(doc)
|
|
|
|
def tearDown(self):
|
|
for doc in self.created_docs:
|
|
doc.delete()
|
|
self.item.delete()
|
|
self.item_group.delete()
|
|
self.item_tax_template.delete()
|
|
self.account.delete()
|
|
self.company.delete()
|