Merge pull request #17522 from rohitwaghchaure/invoiced_items_gross_margin_api_develop
feat: Get invoiced item's gross margin using API
diff --git a/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py b/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py
index 7faabf4..01da810 100644
--- a/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py
+++ b/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py
@@ -227,18 +227,18 @@
for d in inter_state_supply.get("Unregistered", []):
self.report_dict["inter_sup"]["unreg_details"].append(d)
- self.report_dict["sup_details"]["osup_det"]["txval"] += d["txval"]
- self.report_dict["sup_details"]["osup_det"]["iamt"] += d["iamt"]
+ self.report_dict["sup_details"]["osup_det"]["txval"] += flt(d["txval"], 2)
+ self.report_dict["sup_details"]["osup_det"]["iamt"] += flt(d["iamt"], 2)
for d in inter_state_supply.get("Registered Composition", []):
self.report_dict["inter_sup"]["comp_details"].append(d)
- self.report_dict["sup_details"]["osup_det"]["txval"] += d["txval"]
- self.report_dict["sup_details"]["osup_det"]["iamt"] += d["iamt"]
+ self.report_dict["sup_details"]["osup_det"]["txval"] += flt(d["txval"], 2)
+ self.report_dict["sup_details"]["osup_det"]["iamt"] += flt(d["iamt"], 2)
for d in inter_state_supply.get("UIN Holders", []):
self.report_dict["inter_sup"]["uin_details"].append(d)
- self.report_dict["sup_details"]["osup_det"]["txval"] += d["txval"]
- self.report_dict["sup_details"]["osup_det"]["iamt"] += d["iamt"]
+ self.report_dict["sup_details"]["osup_det"]["txval"] += flt(d["txval"], 2)
+ self.report_dict["sup_details"]["osup_det"]["iamt"] += flt(d["iamt"], 2)
def get_total_taxable_value(self, doctype, reverse_charge):
diff --git a/erpnext/regional/report/gstr_1/gstr_1.py b/erpnext/regional/report/gstr_1/gstr_1.py
index a29d5b4..f6c4782 100644
--- a/erpnext/regional/report/gstr_1/gstr_1.py
+++ b/erpnext/regional/report/gstr_1/gstr_1.py
@@ -29,10 +29,10 @@
place_of_supply,
ecommerce_gstin,
reverse_charge,
- gst_category,
+ invoice_type,
return_against,
is_return,
- gst_category,
+ invoice_type,
export_type,
port_code,
shipping_bill_number,
@@ -324,8 +324,8 @@
"fieldtype": "Data"
},
{
- "fieldname": "gst_category",
- "label": "GST Category",
+ "fieldname": "invoice_type",
+ "label": "Invoice Type",
"fieldtype": "Data"
},
{
@@ -577,7 +577,7 @@
download_json_file(report_name, filters["type_of_business"], gst_json)
def get_b2b_json(res, gstin):
- inv_type, out = {"Registered Regular": "R", "Deemed Export": "DE", "URD": "URD", "SEZ": "SEZ"}, []
+ inv_type, out = {"Regular": "R", "Deemed Export": "DE", "URD": "URD", "SEZ": "SEZ"}, []
for gst_in in res:
b2b_item, inv = {"ctin": gst_in, "inv": []}, []
if not gst_in: continue
@@ -586,7 +586,7 @@
inv_item = get_basic_invoice_detail(invoice[0])
inv_item["pos"] = "%02d" % int(invoice[0]["place_of_supply"].split('-')[0])
inv_item["rchrg"] = invoice[0]["reverse_charge"]
- inv_item["inv_typ"] = inv_type.get(invoice[0].get("gst_category", ""),"")
+ inv_item["inv_typ"] = inv_type.get(invoice[0].get("invoice_type", ""),"")
if inv_item["pos"]=="00": continue
inv_item["itms"] = []
diff --git a/erpnext/utilities/activation.py b/erpnext/utilities/activation.py
index 5f261fa..63c36b3 100644
--- a/erpnext/utilities/activation.py
+++ b/erpnext/utilities/activation.py
@@ -5,50 +5,35 @@
import frappe, erpnext
from frappe import _
+from six import iteritems
def get_level():
activation_level = 0
+ sales_data = []
+ min_count = 0
+ doctypes = {"Item": 5, "Customer": 5, "Sales Order": 2, "Sales Invoice": 2, "Purchase Order": 2, "Employee": 3, "Lead": 3, "Quotation": 3,
+ "Payment Entry": 2, "User": 5, "Student": 5, "Instructor": 5, "BOM": 3, "Journal Entry": 3, "Stock Entry": 3}
+ for doctype, min_count in iteritems(doctypes):
+ count = frappe.db.count(doctype)
+ if count > min_count:
+ activation_level += 1
+ sales_data.append({doctype: count})
+
if frappe.db.get_single_value('System Settings', 'setup_complete'):
- activation_level = 1
-
- if frappe.db.count('Item') > 5:
activation_level += 1
- if frappe.db.count('Customer') > 5:
+ communication_number = frappe.db.count('Communication', dict(communication_medium='Email'))
+ if communication_number > 10:
activation_level += 1
-
- if frappe.db.count('Sales Order') > 2:
- activation_level += 1
-
- if frappe.db.count('Purchase Order') > 2:
- activation_level += 1
-
- if frappe.db.count('Employee') > 3:
- activation_level += 1
-
- if frappe.db.count('Lead') > 3:
- activation_level += 1
-
- if frappe.db.count('Payment Entry') > 2:
- activation_level += 1
-
- if frappe.db.count('Communication', dict(communication_medium='Email')) > 10:
- activation_level += 1
-
- if frappe.db.count('User') > 5:
- activation_level += 1
-
- if frappe.db.count('Student') > 5:
- activation_level += 1
-
- if frappe.db.count('Instructor') > 5:
- activation_level += 1
+ sales_data.append({"Communication": communication_number})
# recent login
if frappe.db.sql('select name from tabUser where last_login > date_sub(now(), interval 2 day) limit 1'):
activation_level += 1
- return activation_level
+ level = {"activation_level": activation_level, "sales_data": sales_data}
+
+ return level
def get_help_messages():
'''Returns help messages to be shown on Desktop'''