Merge pull request #22701 from deepeshgarg007/gstr3b_cess
fix: Cess amount in GSTR 3B report
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index ee1d54a..3785ebf 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -8,6 +8,7 @@
import re
from past.builtins import cmp
import functools
+import math
import frappe, erpnext
from erpnext.accounts.report.utils import get_currency, convert_to_presentation_currency
@@ -45,10 +46,7 @@
start_date = year_start_date
months = get_months(year_start_date, year_end_date)
- if (months // months_to_add) != (months / months_to_add):
- months += months_to_add
-
- for i in range(months // months_to_add):
+ for i in range(math.ceil(months / months_to_add)):
period = frappe._dict({
"from_date": start_date
})
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index 256c957..8062342 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -494,7 +494,7 @@
'image' : d.image,
'stock_uom' : d.stock_uom,
'stock_qty' : flt(d.stock_qty),
- 'rate' : d.base_rate,
+ 'rate' : flt(d.base_rate) / flt(d.conversion_factor),
'include_item_in_manufacturing': d.include_item_in_manufacturing
}))
diff --git a/erpnext/patches/v13_0/update_actual_start_and_end_date_in_wo.py b/erpnext/patches/v13_0/update_actual_start_and_end_date_in_wo.py
index 331c559..adfa20e 100644
--- a/erpnext/patches/v13_0/update_actual_start_and_end_date_in_wo.py
+++ b/erpnext/patches/v13_0/update_actual_start_and_end_date_in_wo.py
@@ -6,7 +6,6 @@
import frappe
from frappe.utils import add_to_date
-from frappe.utils.dashboard import get_config, make_records
def execute():
frappe.reload_doc("manufacturing", "doctype", "work_order")
diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js
index 3a8deb6..60f5ff3 100644
--- a/erpnext/stock/doctype/material_request/material_request.js
+++ b/erpnext/stock/doctype/material_request/material_request.js
@@ -180,9 +180,8 @@
});
},
- get_item_data: function(frm, item) {
+ get_item_data: function(frm, item, overwrite_warehouse=false) {
if (item && !item.item_code) { return; }
-
frm.call({
method: "erpnext.stock.get_item_details.get_item_details",
child: item,
@@ -203,7 +202,8 @@
plc_conversion_rate: 1,
rate: item.rate,
conversion_factor: item.conversion_factor
- }
+ },
+ overwrite_warehouse: overwrite_warehouse
},
callback: function(r) {
const d = item;
@@ -354,29 +354,29 @@
}
const item = locals[doctype][name];
- frm.events.get_item_data(frm, item);
+ frm.events.get_item_data(frm, item, false);
},
from_warehouse: function(frm, doctype, name) {
const item = locals[doctype][name];
- frm.events.get_item_data(frm, item);
+ frm.events.get_item_data(frm, item, false);
},
warehouse: function(frm, doctype, name) {
const item = locals[doctype][name];
- frm.events.get_item_data(frm, item);
+ frm.events.get_item_data(frm, item, false);
},
rate: function(frm, doctype, name) {
const item = locals[doctype][name];
- frm.events.get_item_data(frm, item);
+ frm.events.get_item_data(frm, item, false);
},
item_code: function(frm, doctype, name) {
const item = locals[doctype][name];
item.rate = 0;
set_schedule_date(frm);
- frm.events.get_item_data(frm, item);
+ frm.events.get_item_data(frm, item, true);
},
schedule_date: function(frm, cdt, cdn) {
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
index 0cb85d3..df9eb50 100755
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
@@ -108,7 +108,6 @@
"amended_from",
"range",
"column_break4",
- "project",
"per_billed",
"is_internal_supplier",
"inter_company_reference",
@@ -933,6 +932,7 @@
"width": "50%"
},
{
+ "description": "Track this Purchase Receipt against any Project",
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
@@ -1100,20 +1100,13 @@
"fieldtype": "Small Text",
"label": "Billing Address",
"read_only": 1
- },
- {
- "description": "Track this Purchase Receipt against any Project",
- "fieldname": "project",
- "fieldtype": "Link",
- "label": "Project",
- "options": "Project"
}
],
"icon": "fa fa-truck",
"idx": 261,
"is_submittable": 1,
"links": [],
- "modified": "2020-07-13 14:01:39.302238",
+ "modified": "2020-07-15 10:01:39.302238",
"modified_by": "Administrator",
"module": "Stock",
"name": "Purchase Receipt",
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index b1a1614..b8554c8 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -47,6 +47,8 @@
"""
args = process_args(args)
+ for_validate = process_string_args(for_validate)
+ overwrite_warehouse = process_string_args(overwrite_warehouse)
item = frappe.get_cached_doc("Item", args.item_code)
validate_item_details(args, item)
@@ -166,6 +168,10 @@
set_transaction_type(args)
return args
+def process_string_args(args):
+ if isinstance(args, string_types):
+ args = json.loads(args)
+ return args
@frappe.whitelist()
def get_item_code(barcode=None, serial_no=None):
diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py
index abf959e..a5f92e2 100644
--- a/erpnext/stock/report/stock_ledger/stock_ledger.py
+++ b/erpnext/stock/report/stock_ledger/stock_ledger.py
@@ -4,10 +4,10 @@
from __future__ import unicode_literals
import frappe
+from frappe.utils import cint, flt
from erpnext.stock.utils import update_included_uom_in_report
from frappe import _
-
def execute(filters=None):
include_uom = filters.get("include_uom")
columns = get_columns()
@@ -15,6 +15,7 @@
sl_entries = get_stock_ledger_entries(filters, items)
item_details = get_item_details(items, sl_entries, include_uom)
opening_row = get_opening_balance(filters, columns)
+ precision = cint(frappe.db.get_single_value("System Settings", "float_precision"))
data = []
conversion_factors = []
@@ -29,7 +30,7 @@
sle.update(item_detail)
if filters.get("batch_no"):
- actual_qty += sle.actual_qty
+ actual_qty += flt(sle.actual_qty, precision)
stock_value += sle.stock_value_difference
if sle.voucher_type == 'Stock Reconciliation':
diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
index 61b66a9..70c4696 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
@@ -6,7 +6,7 @@
import frappe
from frappe.model.document import Document
from frappe import _
-from frappe.utils import getdate, get_weekdays
+from frappe.utils import getdate, get_weekdays, get_link_to_form
class ServiceLevelAgreement(Document):
@@ -73,8 +73,9 @@
frappe.throw(_("Workday {0} has been repeated.").format(repeated_days))
def validate_doc(self):
- if not frappe.db.get_single_value("Support Settings", "track_service_level_agreement"):
- frappe.throw(_("Service Level Agreement tracking is not enabled."))
+ if not frappe.db.get_single_value("Support Settings", "track_service_level_agreement") and self.enable:
+ frappe.throw(_("{0} is not enabled in {1}").format(frappe.bold("Track Service Level Agreement"),
+ get_link_to_form("Support Settings", "Support Settings")))
if self.default_service_level_agreement:
if frappe.db.exists("Service Level Agreement", {"default_service_level_agreement": "1", "name": ["!=", self.name]}):