Merge pull request #3811 from rmehta/opportunity-customer
[minor] add close button in opportunity and project links in customer
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index a2bbbf7..b34f021 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
from __future__ import unicode_literals
-__version__ = '5.5.0'
+__version__ = '5.5.1'
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
index 7729d22..ce3a7fd 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
@@ -92,13 +92,13 @@
with open(os.path.join(path, fname), "r") as f:
_get_chart_name(f.read())
- countries_use_OHADA_system = ["Benin", "Burkina Faso", "Cameroon", "Central African Republic", "Comoros",
- "Congo", "Ivory Coast", "Gabon", "Guinea", "Guinea Bissau", "Equatorial Guinea", "Mali", "Niger",
- "Replica of Democratic Congo", "Senegal", "Chad", "Togo"]
-
- if country in countries_use_OHADA_system:
- with open(os.path.join(os.path.dirname(__file__), "syscohada_syscohada_chart_template.json"), "r") as f:
- _get_chart_name(f.read())
+ # countries_use_OHADA_system = ["Benin", "Burkina Faso", "Cameroon", "Central African Republic", "Comoros",
+ # "Congo", "Ivory Coast", "Gabon", "Guinea", "Guinea Bissau", "Equatorial Guinea", "Mali", "Niger",
+ # "Replica of Democratic Congo", "Senegal", "Chad", "Togo"]
+ #
+ # if country in countries_use_OHADA_system:
+ # with open(os.path.join(os.path.dirname(__file__), "syscohada_syscohada_chart_template.json"), "r") as f:
+ # _get_chart_name(f.read())
if len(charts) != 1:
charts.append("Standard")
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index f0630ce..80d2435 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -192,8 +192,9 @@
if against_field in ["against_invoice", "against_voucher"]:
if (against_voucher[0] !=d.party or against_voucher[1] != d.account):
- frappe.throw(_("Row {0}: Party / Account does not match with \
- Customer / Debit To in {1}").format(d.idx, doctype))
+ frappe.throw(_("Row {0}: Party / Account does not match with {1} / {2} in {3} {4}")
+ .format(d.idx, field_dict.get(doctype)[0], field_dict.get(doctype)[1],
+ doctype, d.get(against_field)))
else:
payment_against_voucher.setdefault(d.get(against_field), []).append(flt(d.get(dr_or_cr)))
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 7fd8feb..5ccf29d 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -112,8 +112,8 @@
valuation_amount_adjustment -= item.item_tax_amount
self.round_floats_in(item)
-
- item.conversion_factor = get_conversion_factor(item.item_code, item.uom).get("conversion_factor") or 1.0
+ if flt(item.conversion_factor)==0:
+ item.conversion_factor = get_conversion_factor(item.item_code, item.uom).get("conversion_factor") or 1.0
qty_in_stock_uom = flt(item.qty * item.conversion_factor)
rm_supp_cost = flt(item.rm_supp_cost) if self.doctype=="Purchase Receipt" else 0.0
diff --git a/erpnext/crm/doctype/newsletter/newsletter.py b/erpnext/crm/doctype/newsletter/newsletter.py
index 30fd101..83d3caf 100644
--- a/erpnext/crm/doctype/newsletter/newsletter.py
+++ b/erpnext/crm/doctype/newsletter/newsletter.py
@@ -138,8 +138,6 @@
_("Click here to verify")
)
- print url
-
content = """
<p>{0}. {1}.</p>
<p><a href="{2}">{3}</a></p>
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index e973b9f..79f70f7 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -27,7 +27,7 @@
"""
app_icon = "icon-th"
app_color = "#e74c3c"
-app_version = "5.5.0"
+app_version = "5.5.1"
github_link = "https://github.com/frappe/erpnext"
error_report_email = "support@erpnext.com"
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/production_order/production_order.js
index 8202f43..657756d 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.js
+++ b/erpnext/manufacturing/doctype/production_order/production_order.js
@@ -152,7 +152,9 @@
method: "erpnext.manufacturing.doctype.production_order.production_order.get_item_details",
args: { item: doc.production_item },
callback: function(r) {
- cur_frm.set_value(r.message);
+ $.each(["description", "stock_uom", "bom_no"], function(i, field) {
+ cur_frm.set_value(field, r.message[field]);
+ });
}
});
},
@@ -187,8 +189,8 @@
bom_no: function() {
return this.frm.call({
- doc: this.frm.doc,
- method: "set_production_order_operations"
+ doc: this.frm.doc,
+ method: "set_production_order_operations"
});
},
diff --git a/erpnext/projects/doctype/time_log_batch/time_log_batch.py b/erpnext/projects/doctype/time_log_batch/time_log_batch.py
index eaccc8c..55d5937 100644
--- a/erpnext/projects/doctype/time_log_batch/time_log_batch.py
+++ b/erpnext/projects/doctype/time_log_batch/time_log_batch.py
@@ -15,6 +15,8 @@
def validate(self):
self.set_status()
+ self.total_hours = 0.0
+ self.total_billing_amount = 0.0
for d in self.get("time_logs"):
tl = frappe.get_doc("Time Log", d.time_log)
self.update_time_log_values(d, tl)
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index d5bdde7..04ef935 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -133,11 +133,12 @@
var me = this;
this.toggle_enable_bom();
- return this.frm.call({
- method: "get_production_order_details",
+ return frappe.call({
+ method: "erpnext.stock.doctype.stock_entry.stock_entry.get_production_order_details",
args: {production_order: this.frm.doc.production_order},
callback: function(r) {
if (!r.exc) {
+ me.frm.set_value(r.message);
if (me.frm.doc.purpose == "Material Transfer for Manufacture" && !me.frm.doc.to_warehouse)
me.frm.set_value("to_warehouse", r.message["wip_warehouse"]);
me.frm.set_value("from_bom", 1);
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index c92663f..c0d5cd0 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -300,22 +300,21 @@
# select first batch or the batch with same rate
batch = self.stock_queue[index]
- if batch[0]:
- if qty_to_pop >= batch[0]:
- # consume current batch
- qty_to_pop = qty_to_pop - batch[0]
- self.stock_queue.pop(index)
- if not self.stock_queue and qty_to_pop:
- # stock finished, qty still remains to be withdrawn
- # negative stock, keep in as a negative batch
- self.stock_queue.append([-qty_to_pop, outgoing_rate or batch[1]])
- break
+ if qty_to_pop >= batch[0]:
+ # consume current batch
+ qty_to_pop = qty_to_pop - batch[0]
+ self.stock_queue.pop(index)
+ if not self.stock_queue and qty_to_pop:
+ # stock finished, qty still remains to be withdrawn
+ # negative stock, keep in as a negative batch
+ self.stock_queue.append([-qty_to_pop, outgoing_rate or batch[1]])
+ break
- else:
- # qty found in current batch
- # consume it and exit
- batch[0] = batch[0] - qty_to_pop
- qty_to_pop = 0
+ else:
+ # qty found in current batch
+ # consume it and exit
+ batch[0] = batch[0] - qty_to_pop
+ qty_to_pop = 0
stock_value = sum((flt(batch[0]) * flt(batch[1]) for batch in self.stock_queue))
stock_qty = sum((flt(batch[0]) for batch in self.stock_queue))
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index 4f1e427..ee4303b 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -133,20 +133,19 @@
qty_to_pop = abs(qty)
while qty_to_pop and previous_stock_queue:
batch = previous_stock_queue[0]
- if batch[0]:
- if 0 < batch[0] <= qty_to_pop:
- # if batch qty > 0
- # not enough or exactly same qty in current batch, clear batch
- available_qty_for_outgoing += flt(batch[0])
- outgoing_cost += flt(batch[0]) * flt(batch[1])
- qty_to_pop -= batch[0]
- previous_stock_queue.pop(0)
- else:
- # all from current batch
- available_qty_for_outgoing += flt(qty_to_pop)
- outgoing_cost += flt(qty_to_pop) * flt(batch[1])
- batch[0] -= qty_to_pop
- qty_to_pop = 0
+ if 0 < batch[0] <= qty_to_pop:
+ # if batch qty > 0
+ # not enough or exactly same qty in current batch, clear batch
+ available_qty_for_outgoing += flt(batch[0])
+ outgoing_cost += flt(batch[0]) * flt(batch[1])
+ qty_to_pop -= batch[0]
+ previous_stock_queue.pop(0)
+ else:
+ # all from current batch
+ available_qty_for_outgoing += flt(qty_to_pop)
+ outgoing_cost += flt(qty_to_pop) * flt(batch[1])
+ batch[0] -= qty_to_pop
+ qty_to_pop = 0
return outgoing_cost / available_qty_for_outgoing
diff --git a/erpnext/templates/pages/product_search.py b/erpnext/templates/pages/product_search.py
index 236fe5c..f4c4534 100644
--- a/erpnext/templates/pages/product_search.py
+++ b/erpnext/templates/pages/product_search.py
@@ -33,7 +33,7 @@
for d in data:
d.route = ((d.parent_website_route + "/") if d.parent_website_route else "") \
- + d.page_name
+ + (d.page_name or "")
return [get_item_for_list_in_html(r) for r in data]
diff --git a/setup.py b/setup.py
index 96cdbc0..264ec61 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
from setuptools import setup, find_packages
-version = "5.5.0"
+version = "5.5.1"
with open("requirements.txt", "r") as f:
install_requires = f.readlines()