mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-09 15:29:30 +00:00
fix: resolve analytics backport conflicts
This commit is contained in:
@@ -85,8 +85,6 @@ frappe.query_reports["Purchase Analytics"] = {
|
|||||||
default: "Monthly",
|
default: "Monthly",
|
||||||
reqd: 1,
|
reqd: 1,
|
||||||
},
|
},
|
||||||
<<<<<<< HEAD
|
|
||||||
=======
|
|
||||||
{
|
{
|
||||||
fieldname: "curves",
|
fieldname: "curves",
|
||||||
label: __("Curves"),
|
label: __("Curves"),
|
||||||
@@ -100,12 +98,6 @@ frappe.query_reports["Purchase Analytics"] = {
|
|||||||
default: "select",
|
default: "select",
|
||||||
reqd: 1,
|
reqd: 1,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
fieldname: "show_aggregate_value_from_subsidiary_companies",
|
|
||||||
label: __("Show Aggregate Value from Subsidiary Companies"),
|
|
||||||
fieldtype: "Check",
|
|
||||||
},
|
|
||||||
>>>>>>> 3f29cdf (feat(analytics): filter sales and purchase analytics by entity (#58402))
|
|
||||||
],
|
],
|
||||||
get_datatable_options(options) {
|
get_datatable_options(options) {
|
||||||
return Object.assign(options, {
|
return Object.assign(options, {
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
# See license.txt
|
# See license.txt
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
|
from frappe.tests.utils import FrappeTestCase
|
||||||
from frappe.utils import flt
|
from frappe.utils import flt
|
||||||
|
|
||||||
from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order
|
from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order
|
||||||
from erpnext.buying.report.purchase_analytics.purchase_analytics import execute
|
from erpnext.buying.report.purchase_analytics.purchase_analytics import execute
|
||||||
from erpnext.tests.utils import ERPNextTestSuite
|
|
||||||
|
|
||||||
COMPANY = "_Test Company"
|
COMPANY = "_Test Company"
|
||||||
SUPPLIER = "_Test Supplier"
|
SUPPLIER = "_Test Supplier"
|
||||||
@@ -16,7 +16,7 @@ FROM_DATE = "2019-04-01"
|
|||||||
TO_DATE = "2019-06-30"
|
TO_DATE = "2019-06-30"
|
||||||
|
|
||||||
|
|
||||||
class TestPurchaseAnalytics(ERPNextTestSuite):
|
class TestPurchaseAnalytics(FrappeTestCase):
|
||||||
"""purchase_analytics reuses the shared Analytics engine; these tests lock its
|
"""purchase_analytics reuses the shared Analytics engine; these tests lock its
|
||||||
wiring (doc_type=Purchase Order) across the Supplier Group / Item Group trees."""
|
wiring (doc_type=Purchase Order) across the Supplier Group / Item Group trees."""
|
||||||
|
|
||||||
|
|||||||
@@ -18,12 +18,7 @@ def execute(filters=None):
|
|||||||
class Analytics:
|
class Analytics:
|
||||||
def __init__(self, filters=None):
|
def __init__(self, filters=None):
|
||||||
self.filters = frappe._dict(filters or {})
|
self.filters = frappe._dict(filters or {})
|
||||||
<<<<<<< HEAD
|
|
||||||
=======
|
|
||||||
self.entities = self.filters.get("entity") or []
|
self.entities = self.filters.get("entity") or []
|
||||||
if self.filters.doc_type == "Payment Entry" and self.filters.value_quantity == "Quantity":
|
|
||||||
frappe.throw(_("Only Value available for Payment Entry"))
|
|
||||||
>>>>>>> 3f29cdf (feat(analytics): filter sales and purchase analytics by entity (#58402))
|
|
||||||
self.date_field = (
|
self.date_field = (
|
||||||
"transaction_date"
|
"transaction_date"
|
||||||
if self.filters.doc_type in ["Sales Order", "Purchase Order"]
|
if self.filters.doc_type in ["Sales Order", "Purchase Order"]
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
|
from frappe.tests.utils import FrappeTestCase
|
||||||
from frappe.utils import flt
|
from frappe.utils import flt
|
||||||
|
|
||||||
from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order
|
from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order
|
||||||
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
||||||
from erpnext.selling.report.sales_analytics.sales_analytics import execute
|
from erpnext.selling.report.sales_analytics.sales_analytics import execute
|
||||||
from erpnext.tests.utils import ERPNextTestSuite
|
|
||||||
|
|
||||||
# Bootstrap masters reused as-is (see erpnext/tests/utils.py):
|
# Bootstrap masters reused as-is (see erpnext/tests/utils.py):
|
||||||
# "_Test Customer" -> customer_group "_Test Customer Group", territory "_Test Territory"
|
# "_Test Customer" -> customer_group "_Test Customer Group", territory "_Test Territory"
|
||||||
@@ -24,28 +24,48 @@ FROM_DATE = "2019-04-01"
|
|||||||
TO_DATE = "2019-06-30"
|
TO_DATE = "2019-06-30"
|
||||||
|
|
||||||
|
|
||||||
class TestSalesAnalytics(ERPNextTestSuite):
|
class TestSalesAnalytics(FrappeTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
frappe.set_user("Administrator")
|
frappe.set_user("Administrator")
|
||||||
|
self.created_docs = []
|
||||||
# Two submitted Sales Orders for the bootstrap customer inside the report window.
|
# Two submitted Sales Orders for the bootstrap customer inside the report window.
|
||||||
# These roll up into the tree roots the converted tree/order-type queries build.
|
# These roll up into the tree roots the converted tree/order-type queries build.
|
||||||
self.orders = [
|
self.orders = [
|
||||||
make_sales_order(
|
self.make_so(qty=5, rate=100, transaction_date="2019-04-10"),
|
||||||
company=COMPANY,
|
self.make_so(qty=3, rate=100, transaction_date="2019-05-15"),
|
||||||
customer=CUSTOMER,
|
|
||||||
qty=5,
|
|
||||||
rate=100,
|
|
||||||
transaction_date="2019-04-10",
|
|
||||||
),
|
|
||||||
make_sales_order(
|
|
||||||
company=COMPANY,
|
|
||||||
customer=CUSTOMER,
|
|
||||||
qty=3,
|
|
||||||
rate=100,
|
|
||||||
transaction_date="2019-05-15",
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
for doctype, name in reversed(self.created_docs):
|
||||||
|
if not frappe.db.exists(doctype, name):
|
||||||
|
continue
|
||||||
|
|
||||||
|
doc = frappe.get_doc(doctype, name)
|
||||||
|
if doc.docstatus == 1:
|
||||||
|
doc.cancel()
|
||||||
|
frappe.delete_doc(doctype, name, force=True)
|
||||||
|
|
||||||
|
super().tearDown()
|
||||||
|
|
||||||
|
def make_so(self, qty, rate, transaction_date, order_type=None):
|
||||||
|
so = make_sales_order(
|
||||||
|
company=COMPANY,
|
||||||
|
customer=CUSTOMER,
|
||||||
|
qty=qty,
|
||||||
|
rate=rate,
|
||||||
|
transaction_date=transaction_date,
|
||||||
|
do_not_save=True,
|
||||||
|
)
|
||||||
|
# v15's test helper does not populate these hidden analytics dimensions.
|
||||||
|
so.customer_group = CUSTOMER_GROUP
|
||||||
|
so.territory = TERRITORY
|
||||||
|
if order_type:
|
||||||
|
so.order_type = order_type
|
||||||
|
so.insert()
|
||||||
|
so.submit()
|
||||||
|
self.created_docs.append((so.doctype, so.name))
|
||||||
|
return so
|
||||||
|
|
||||||
def _base_filters(self, **overrides):
|
def _base_filters(self, **overrides):
|
||||||
filters = {
|
filters = {
|
||||||
"doc_type": "Sales Order",
|
"doc_type": "Sales Order",
|
||||||
@@ -160,16 +180,12 @@ class TestSalesAnalytics(ERPNextTestSuite):
|
|||||||
postgres, so the report sorts the order-type rows in python (key=str.casefold) to keep them in a
|
postgres, so the report sorts the order-type rows in python (key=str.casefold) to keep them in a
|
||||||
deterministic, case-insensitive order identical on both engines."""
|
deterministic, case-insensitive order identical on both engines."""
|
||||||
for order_type in ("Shopping Cart", "Maintenance", "Sales"): # created out of sorted order
|
for order_type in ("Shopping Cart", "Maintenance", "Sales"): # created out of sorted order
|
||||||
so = make_sales_order(
|
self.make_so(
|
||||||
company=COMPANY,
|
|
||||||
customer=CUSTOMER,
|
|
||||||
qty=1,
|
qty=1,
|
||||||
rate=100,
|
rate=100,
|
||||||
transaction_date="2019-04-12",
|
transaction_date="2019-04-12",
|
||||||
do_not_submit=True,
|
order_type=order_type,
|
||||||
)
|
)
|
||||||
so.order_type = order_type
|
|
||||||
so.submit()
|
|
||||||
|
|
||||||
columns, data, *_ = execute(self._base_filters(tree_type="Order Type"))
|
columns, data, *_ = execute(self._base_filters(tree_type="Order Type"))
|
||||||
|
|
||||||
@@ -213,6 +229,7 @@ class TestSalesAnalytics(ERPNextTestSuite):
|
|||||||
rate=250,
|
rate=250,
|
||||||
transaction_date="2019-04-10",
|
transaction_date="2019-04-10",
|
||||||
)
|
)
|
||||||
|
self.created_docs.append((po.doctype, po.name))
|
||||||
po_value = flt(po.base_net_total)
|
po_value = flt(po.base_net_total)
|
||||||
self.assertGreater(po_value, 0)
|
self.assertGreater(po_value, 0)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user