brotherton-erpnext/erpnext/selling/report/sales_analytics/test_analytics.py
Deepesh Garg 6714214951 Server side script report for sales analytics (#15589)
* Sales Analytics Report

* Codacy issue fixes and  name column addition

* Minor Fixes

* Minor Changes

* Codacy Issue Fixes

* Codacy Issue Fixes

* Bug Fixes

* Code cleaning and optimization

* Deleted Duplicate code

* Indentation Issue Fixes

* Added Supplier Condition

* Cleaned code and better function naming

* Added report link for sales analytics in selling.py

* fix(patch): Patch to delete old analytics reports

* feat(refactor): Created class and refactored code using object oriented paradigm

* Column condition fix

* Minor condition fix

* Minor fix

* parent child map for purchase analytics

* Minor Fixes in get_periodic_data

* Used dots for filters instead of brackets

* Minor Bug fix in get_period_date_ranges

* Test Cases for Analytics Report
2018-11-12 16:15:54 +05:30

251 lines
4.9 KiB
Python

# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
import frappe
import frappe.defaults
import unittest
from erpnext.selling.report.sales_analytics.sales_analytics import execute
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
class TestAnalytics(unittest.TestCase):
def tearDown(self):
frappe.db.sql(""" DELETE FROM `tabSales Order` """)
def test_by_entity(self):
create_sales_order()
filters = {
'doc_type': 'Sales Order',
'range': 'Monthly',
'to_date': '2018-03-31',
'tree_type': 'Customer',
'company': '_Test Company',
'from_date': '2017-04-01',
'value_quantity': 'Value'
}
report = execute(filters)
expected_data = [
{
"entity": "_Test Customer 1",
"entity_name": "_Test Customer 1",
"apr": 0.0,
"may": 0.0,
"jun": 0.0,
"jul": 0.0,
"aug": 0.0,
"sep": 0.0,
"oct": 0.0,
"nov": 0.0,
"dec": 0.0,
"jan": 0.0,
"feb": 2000.0,
"mar": 0.0,
"total":2000.0
},
{
"entity": "_Test Customer 3",
"entity_name": "_Test Customer 3",
"apr": 0.0,
"may": 0.0,
"jun": 2000.0,
"jul": 1000.0,
"aug": 0.0,
"sep": 0.0,
"oct": 0.0,
"nov": 0.0,
"dec": 0.0,
"jan": 0.0,
"feb": 0.0,
"mar": 0.0,
"total": 3000.0
},
{
"entity": "_Test Customer 2",
"entity_name": "_Test Customer 2",
"apr": 0.0,
"may": 0.0,
"jun": 0.0,
"jul": 0.0,
"aug": 0.0,
"sep": 1500.0,
"oct": 1000.0,
"nov": 0.0,
"dec": 0.0,
"jan": 0.0,
"feb": 0.0,
"mar": 0.0,
"total":2500.0
}
]
self.assertEqual(expected_data, report[1])
def test_by_group(self):
create_sales_order()
filters = {
'doc_type': 'Sales Order',
'range': 'Monthly',
'to_date': '2018-03-31',
'tree_type': 'Customer Group',
'company': '_Test Company',
'from_date': '2017-04-01',
'value_quantity': 'Value'
}
report = execute(filters)
expected_data = [
{
"entity": "All Customer Groups",
"indent": 0,
"apr": 0.0,
"may": 0.0,
"jun": 2000.0,
"jul": 1000.0,
"aug": 0.0,
"sep": 1500.0,
"oct": 1000.0,
"nov": 0.0,
"dec": 0.0,
"jan": 0.0,
"feb": 2000.0,
"mar": 0.0,
"total":7500.0
},
{
"entity": "Individual",
"indent": 1,
"apr": 0.0,
"may": 0.0,
"jun": 0.0,
"jul": 0.0,
"aug": 0.0,
"sep": 0.0,
"oct": 0.0,
"nov": 0.0,
"dec": 0.0,
"jan": 0.0,
"feb": 0.0,
"mar": 0.0,
"total": 0.0
},
{
"entity": "_Test Customer Group",
"indent": 1,
"apr": 0.0,
"may": 0.0,
"jun": 0.0,
"jul": 0.0,
"aug": 0.0,
"sep": 0.0,
"oct": 0.0,
"nov": 0.0,
"dec": 0.0,
"jan": 0.0,
"feb": 0.0,
"mar": 0.0,
"total":0.0
},
{
"entity": "_Test Customer Group 1",
"indent": 1,
"apr": 0.0,
"may": 0.0,
"jun": 0.0,
"jul": 0.0,
"aug": 0.0,
"sep": 0.0,
"oct": 0.0,
"nov": 0.0,
"dec": 0.0,
"jan": 0.0,
"feb": 0.0,
"mar": 0.0,
"total":0.0
}
]
self.assertEqual(expected_data, report[1])
def test_by_quantity(self):
create_sales_order()
filters = {
'doc_type': 'Sales Order',
'range': 'Monthly',
'to_date': '2018-03-31',
'tree_type': 'Customer',
'company': '_Test Company',
'from_date': '2017-04-01',
'value_quantity': 'Quantity'
}
report = execute(filters)
expected_data = [
{
"entity": "_Test Customer 1",
"entity_name": "_Test Customer 1",
"apr": 0.0,
"may": 0.0,
"jun": 0.0,
"jul": 0.0,
"aug": 0.0,
"sep": 0.0,
"oct": 0.0,
"nov": 0.0,
"dec": 0.0,
"jan": 0.0,
"feb": 20.0,
"mar": 0.0,
"total":20.0
},
{
"entity": "_Test Customer 3",
"entity_name": "_Test Customer 3",
"apr": 0.0,
"may": 0.0,
"jun": 20.0,
"jul": 10.0,
"aug": 0.0,
"sep": 0.0,
"oct": 0.0,
"nov": 0.0,
"dec": 0.0,
"jan": 0.0,
"feb": 0.0,
"mar": 0.0,
"total": 30.0
},
{
"entity": "_Test Customer 2",
"entity_name": "_Test Customer 2",
"apr": 0.0,
"may": 0.0,
"jun": 0.0,
"jul": 0.0,
"aug": 0.0,
"sep": 15.0,
"oct": 10.0,
"nov": 0.0,
"dec": 0.0,
"jan": 0.0,
"feb": 0.0,
"mar": 0.0,
"total":25.0
}
]
self.assertEqual(expected_data, report[1])
def create_sales_order():
frappe.set_user("Administrator")
make_sales_order(qty=10, customer = "_Test Customer 1", transaction_date='2018-02-10')
make_sales_order(qty=10, customer = "_Test Customer 1", transaction_date='2018-02-15')
make_sales_order(qty=15, customer = "_Test Customer 2", transaction_date='2017-09-23')
make_sales_order(qty=10, customer = "_Test Customer 2", transaction_date='2017-10-10')
make_sales_order(qty=20, customer = "_Test Customer 3", transaction_date='2017-06-15')
make_sales_order(qty=10, customer = "_Test Customer 3", transaction_date='2017-07-10')