Skip to content

Commit

Permalink
test: sales partner targets with invoices
Browse files Browse the repository at this point in the history
  • Loading branch information
GursheenK committed Mar 18, 2024
1 parent 1ac8887 commit 1a3ea0c
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import frappe
from frappe.tests.utils import FrappeTestCase
from frappe.utils import flt, nowdate

from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.accounts.utils import get_fiscal_year
from erpnext.selling.report.sales_partner_target_variance_based_on_item_group.sales_partner_target_variance_based_on_item_group import (
execute,
)
from erpnext.selling.report.sales_person_target_variance_based_on_item_group.test_sales_person_target_variance_based_on_item_group import (
create_sales_target_doc,
create_target_distribution,
)


class TestSalesPartnerTargetVarianceBasedOnItemGroup(FrappeTestCase):
def setUp(self):
self.fiscal_year = get_fiscal_year(nowdate())[0]

def tearDown(self):
frappe.db.rollback()

def test_achieved_target_and_variance_for_partner(self):
# Create a Target Distribution
distribution = create_target_distribution(self.fiscal_year)

# Create Sales Partner with targets for the current fiscal year
sales_partner = create_sales_target_doc(
"Sales Partner", "partner_name", "Sales Partner 1", self.fiscal_year, distribution.name
)

# Create a Sales Invoice for the Partner
si = create_sales_invoice(
rate=1000,
qty=20,
do_not_submit=True,
)
si.sales_partner = sales_partner
si.commission_rate = 5
si.submit()

# Check Achieved Target and Variance for the Sales Partner
result = execute(
frappe._dict(
{
"fiscal_year": self.fiscal_year,
"doctype": "Sales Invoice",
"period": "Yearly",
"target_on": "Quantity",
}
)
)[1]
row = frappe._dict(result[0])
self.assertSequenceEqual(
[flt(value, 2) for value in (row.total_target, row.total_achieved, row.total_variance)],
[50, 20, -30],
)
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@ def tearDown(self):

def test_achieved_target_and_variance(self):
# Create a Target Distribution
distribution = frappe.new_doc("Monthly Distribution")
distribution.distribution_id = "Target Report Distribution"
distribution.fiscal_year = self.fiscal_year
distribution.get_months()
distribution.insert()
distribution = create_target_distribution(self.fiscal_year)

# Create sales people with targets
person_1 = create_sales_person_with_target("Sales Person 1", self.fiscal_year, distribution.name)
person_2 = create_sales_person_with_target("Sales Person 2", self.fiscal_year, distribution.name)
# Create sales people with targets for the current fiscal year
person_1 = create_sales_target_doc(
"Sales Person", "sales_person_name", "Sales Person 1", self.fiscal_year, distribution.name
)
person_2 = create_sales_target_doc(
"Sales Person", "sales_person_name", "Sales Person 2", self.fiscal_year, distribution.name
)

# Create a Sales Order with 50-50 contribution
# Create a Sales Order with 50-50 contribution between both Sales people
so = make_sales_order(
rate=1000,
qty=20,
Expand Down Expand Up @@ -69,10 +69,20 @@ def test_achieved_target_and_variance(self):
)


def create_sales_person_with_target(sales_person_name, fiscal_year, distribution_id):
sales_person = frappe.new_doc("Sales Person")
sales_person.sales_person_name = sales_person_name
sales_person.append(
def create_target_distribution(fiscal_year):
distribution = frappe.new_doc("Monthly Distribution")
distribution.distribution_id = "Target Report Distribution"
distribution.fiscal_year = fiscal_year
distribution.get_months()
return distribution.insert()


def create_sales_target_doc(
sales_field_dt, sales_field_name, sales_field_value, fiscal_year, distribution_id
):
sales_target_doc = frappe.new_doc(sales_field_dt)
sales_target_doc.set(sales_field_name, sales_field_value)
sales_target_doc.append(
"targets",
{
"fiscal_year": fiscal_year,
Expand All @@ -81,4 +91,6 @@ def create_sales_person_with_target(sales_person_name, fiscal_year, distribution
"distribution_id": distribution_id,
},
)
return sales_person.insert()
if sales_field_dt == "Sales Partner":
sales_target_doc.commission_rate = 5
return sales_target_doc.insert()

0 comments on commit 1a3ea0c

Please sign in to comment.