Merge branch 'hotfix'
This commit is contained in:
commit
bbd8b04012
@ -5,7 +5,7 @@ import frappe
|
|||||||
from erpnext.hooks import regional_overrides
|
from erpnext.hooks import regional_overrides
|
||||||
from frappe.utils import getdate
|
from frappe.utils import getdate
|
||||||
|
|
||||||
__version__ = '10.1.59'
|
__version__ = '10.1.60'
|
||||||
|
|
||||||
def get_default_company(user=None):
|
def get_default_company(user=None):
|
||||||
'''Get default company for user'''
|
'''Get default company for user'''
|
||||||
|
@ -167,7 +167,7 @@
|
|||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= format_currency(data[i]["paid_amount"], data[i]["currency"]) %}</td>
|
{%= format_currency(data[i]["paid_amount"], data[i]["currency"]) %}</td>
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["credit_note"], data[i]["currency"]) : format_currency(data[i]["Debit Note"], data[i]["currency"]) %}</td>
|
{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["credit_note"], data[i]["currency"]) : format_currency(data[i]["debit_note"], data[i]["currency"]) %}</td>
|
||||||
{% } %}
|
{% } %}
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= format_currency(data[i]["outstanding_amount"], data[i]["currency"]) %}</td>
|
{%= format_currency(data[i]["outstanding_amount"], data[i]["currency"]) %}</td>
|
||||||
@ -189,15 +189,15 @@
|
|||||||
{% } %}
|
{% } %}
|
||||||
<td><b>{%= __("Total") %}</b></td>
|
<td><b>{%= __("Total") %}</b></td>
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= format_currency(data[i]["Invoiced Amount"], data[i]["currency"] ) %}</td>
|
{%= format_currency(data[i]["invoiced_amount"], data[i]["currency"] ) %}</td>
|
||||||
|
|
||||||
{% if(!filters.show_pdc_in_print) { %}
|
{% if(!filters.show_pdc_in_print) { %}
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= format_currency(data[i]["Paid Amount"], data[i]["currency"]) %}</td>
|
{%= format_currency(data[i]["paid_amount"], data[i]["currency"]) %}</td>
|
||||||
<td style="text-align: right">{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["Credit Note"], data[i]["currency"]) : format_currency(data[i]["Debit Note"], data[i]["currency"]) %} </td>
|
<td style="text-align: right">{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["credit_note"], data[i]["currency"]) : format_currency(data[i]["Debit Note"], data[i]["currency"]) %} </td>
|
||||||
{% } %}
|
{% } %}
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= format_currency(data[i]["Outstanding Amount"], data[i]["currency"]) %}</td>
|
{%= format_currency(data[i]["outstanding_amount"], data[i]["currency"]) %}</td>
|
||||||
|
|
||||||
{% if(filters.show_pdc_in_print) { %}
|
{% if(filters.show_pdc_in_print) { %}
|
||||||
{% if(report.report_name === "Accounts Receivable") { %}
|
{% if(report.report_name === "Accounts Receivable") { %}
|
||||||
@ -238,4 +238,4 @@
|
|||||||
{% } %}
|
{% } %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p class="text-right text-muted">{{ __("Printed On ") }}{%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}</p>
|
<p class="text-right text-muted">{{ __("Printed On ") }}{%= dateutil.str_to_user(dateutil.get_datetime_as_string()) %}</p>
|
||||||
|
@ -354,7 +354,8 @@ class BOM(WebsiteGenerator):
|
|||||||
bom_list = self.traverse_tree(bom_list)
|
bom_list = self.traverse_tree(bom_list)
|
||||||
for bom in bom_list:
|
for bom in bom_list:
|
||||||
bom_obj = frappe.get_doc("BOM", bom)
|
bom_obj = frappe.get_doc("BOM", bom)
|
||||||
bom_obj.on_update()
|
bom_obj.check_recursion()
|
||||||
|
bom_obj.update_exploded_items()
|
||||||
|
|
||||||
return bom_list
|
return bom_list
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ class BOMUpdateTool(Document):
|
|||||||
bom_list.append(d[0])
|
bom_list.append(d[0])
|
||||||
self.get_parent_boms(d[0], bom_list)
|
self.get_parent_boms(d[0], bom_list)
|
||||||
|
|
||||||
return bom_list
|
return list(set(bom_list))
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def enqueue_replace_bom(args):
|
def enqueue_replace_bom(args):
|
||||||
|
@ -5,6 +5,7 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe import msgprint, _
|
from frappe import msgprint, _
|
||||||
from frappe.utils import flt
|
from frappe.utils import flt
|
||||||
|
from erpnext import get_company_currency
|
||||||
|
|
||||||
def execute(filters=None):
|
def execute(filters=None):
|
||||||
if not filters: filters = {}
|
if not filters: filters = {}
|
||||||
@ -14,12 +15,14 @@ def execute(filters=None):
|
|||||||
item_details = get_item_details()
|
item_details = get_item_details()
|
||||||
data = []
|
data = []
|
||||||
|
|
||||||
|
company_currency = get_company_currency(filters["company"])
|
||||||
|
|
||||||
for d in entries:
|
for d in entries:
|
||||||
if d.stock_qty > 0 or filters.get('show_return_entries', 0):
|
if d.stock_qty > 0 or filters.get('show_return_entries', 0):
|
||||||
data.append([
|
data.append([
|
||||||
d.name, d.customer, d.territory, d.posting_date, d.item_code,
|
d.name, d.customer, d.territory, d.posting_date, d.item_code,
|
||||||
item_details.get(d.item_code, {}).get("item_group"), item_details.get(d.item_code, {}).get("brand"),
|
item_details.get(d.item_code, {}).get("item_group"), item_details.get(d.item_code, {}).get("brand"),
|
||||||
d.stock_qty, d.base_net_amount, d.sales_person, d.allocated_percentage, d.contribution_amt
|
d.stock_qty, d.base_net_amount, d.sales_person, d.allocated_percentage, d.contribution_amt, company_currency
|
||||||
])
|
])
|
||||||
|
|
||||||
if data:
|
if data:
|
||||||
@ -32,12 +35,105 @@ def get_columns(filters):
|
|||||||
if not filters.get("doc_type"):
|
if not filters.get("doc_type"):
|
||||||
msgprint(_("Please select the document type first"), raise_exception=1)
|
msgprint(_("Please select the document type first"), raise_exception=1)
|
||||||
|
|
||||||
return [filters["doc_type"] + ":Link/" + filters["doc_type"] + ":140",
|
columns = [
|
||||||
_("Customer") + ":Link/Customer:140", _("Territory") + ":Link/Territory:100", _("Posting Date") + ":Date:100",
|
{
|
||||||
_("Item Code") + ":Link/Item:120", _("Item Group") + ":Link/Item Group:120",
|
"label": _(filters["doc_type"]),
|
||||||
_("Brand") + ":Link/Brand:120", _("Qty") + ":Float:100", _("Amount") + ":Currency:120",
|
"options": filters["doc_type"],
|
||||||
_("Sales Person") + ":Link/Sales Person:140", _("Contribution %") + "::110",
|
"fieldname": frappe.scrub(filters['doc_type']),
|
||||||
_("Contribution Amount") + ":Currency:140"]
|
"fieldtype": "Link",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Customer"),
|
||||||
|
"options": "Customer",
|
||||||
|
"fieldname": "customer",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Territory"),
|
||||||
|
"options": "Territory",
|
||||||
|
"fieldname": "territory",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Warehouse"),
|
||||||
|
"options": "Warehouse",
|
||||||
|
"fieldname": "warehouse",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Posting Date"),
|
||||||
|
"fieldname": "posting_date",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Item Code"),
|
||||||
|
"options": "Item",
|
||||||
|
"fieldname": "item_code",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Item Group"),
|
||||||
|
"options": "Item Group",
|
||||||
|
"fieldname": "item_group",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Brand"),
|
||||||
|
"options": "Brand",
|
||||||
|
"fieldname": "brand",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Qty"),
|
||||||
|
"fieldname": "qty",
|
||||||
|
"fieldtype": "Float",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Amount"),
|
||||||
|
"options": "currency",
|
||||||
|
"fieldname": "amount",
|
||||||
|
"fieldtype": "Currency",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Sales Person"),
|
||||||
|
"options": "Sales Person",
|
||||||
|
"fieldname": "sales_person",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Contribution %"),
|
||||||
|
"fieldname": "contribution",
|
||||||
|
"fieldtype": "Float",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _("Contribution Amount"),
|
||||||
|
"options": "currency",
|
||||||
|
"fieldname": "contribution_amt",
|
||||||
|
"fieldtype": "Currency",
|
||||||
|
"width": 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label":_("Currency"),
|
||||||
|
"options": "Currency",
|
||||||
|
"fieldname":"currency",
|
||||||
|
"fieldtype":"Link",
|
||||||
|
"hidden" : 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
return columns
|
||||||
|
|
||||||
def get_entries(filters):
|
def get_entries(filters):
|
||||||
date_field = filters["doc_type"] == "Sales Order" and "transaction_date" or "posting_date"
|
date_field = filters["doc_type"] == "Sales Order" and "transaction_date" or "posting_date"
|
||||||
|
@ -255,13 +255,13 @@ erpnext.stock.delivery_note.set_print_hide = function(doc, cdt, cdn){
|
|||||||
var dn_item_fields = frappe.meta.docfield_map['Delivery Note Item'];
|
var dn_item_fields = frappe.meta.docfield_map['Delivery Note Item'];
|
||||||
var dn_fields_copy = dn_fields;
|
var dn_fields_copy = dn_fields;
|
||||||
var dn_item_fields_copy = dn_item_fields;
|
var dn_item_fields_copy = dn_item_fields;
|
||||||
|
|
||||||
if (doc.print_without_amount) {
|
if (doc.print_without_amount) {
|
||||||
dn_fields['currency'].print_hide = 1;
|
dn_fields['currency'].print_hide = 1;
|
||||||
dn_item_fields['rate'].print_hide = 1;
|
dn_item_fields['rate'].print_hide = 1;
|
||||||
dn_item_fields['discount_percentage'].print_hide = 1;
|
dn_item_fields['discount_percentage'].print_hide = 1;
|
||||||
dn_item_fields['price_list_rate'].print_hide = 1;
|
dn_item_fields['price_list_rate'].print_hide = 1;
|
||||||
dn_item_fields['amount'].print_hide = 1;
|
dn_item_fields['amount'].print_hide = 1;
|
||||||
|
dn_item_fields['discount_amount'].print_hide = 1;
|
||||||
dn_fields['taxes'].print_hide = 1;
|
dn_fields['taxes'].print_hide = 1;
|
||||||
} else {
|
} else {
|
||||||
if (dn_fields_copy['currency'].print_hide != 1)
|
if (dn_fields_copy['currency'].print_hide != 1)
|
||||||
@ -270,6 +270,8 @@ erpnext.stock.delivery_note.set_print_hide = function(doc, cdt, cdn){
|
|||||||
dn_item_fields['rate'].print_hide = 0;
|
dn_item_fields['rate'].print_hide = 0;
|
||||||
if (dn_item_fields_copy['amount'].print_hide != 1)
|
if (dn_item_fields_copy['amount'].print_hide != 1)
|
||||||
dn_item_fields['amount'].print_hide = 0;
|
dn_item_fields['amount'].print_hide = 0;
|
||||||
|
if (dn_item_fields_copy['discount_amount'].print_hide != 1)
|
||||||
|
dn_item_fields['discount_amount'].print_hide = 0;
|
||||||
if (dn_fields_copy['taxes'].print_hide != 1)
|
if (dn_fields_copy['taxes'].print_hide != 1)
|
||||||
dn_fields['taxes'].print_hide = 0;
|
dn_fields['taxes'].print_hide = 0;
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ class DeliveryNote(SellingController):
|
|||||||
item_meta = frappe.get_meta("Delivery Note Item")
|
item_meta = frappe.get_meta("Delivery Note Item")
|
||||||
print_hide_fields = {
|
print_hide_fields = {
|
||||||
"parent": ["grand_total", "rounded_total", "in_words", "currency", "total", "taxes"],
|
"parent": ["grand_total", "rounded_total", "in_words", "currency", "total", "taxes"],
|
||||||
"items": ["rate", "amount", "price_list_rate", "discount_percentage"]
|
"items": ["rate", "amount", "discount_amount", "price_list_rate", "discount_percentage"]
|
||||||
}
|
}
|
||||||
|
|
||||||
for key, fieldname in print_hide_fields.items():
|
for key, fieldname in print_hide_fields.items():
|
||||||
|
@ -13,12 +13,18 @@ def execute(filters=None):
|
|||||||
def get_columns():
|
def get_columns():
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
"label": _("Item Name"),
|
"label": _("Item Code"),
|
||||||
"fieldname": "item_name",
|
"fieldname": "item_code",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"options": "Item",
|
"options": "Item",
|
||||||
"width": 120
|
"width": 120
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"label": _("Item Name"),
|
||||||
|
"fieldname": "item_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"width": 120
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"label": _("Warehouse"),
|
"label": _("Warehouse"),
|
||||||
"fieldname": "warehouse",
|
"fieldname": "warehouse",
|
||||||
@ -70,7 +76,7 @@ def get_item_price_qty_data(filters):
|
|||||||
if filters.get("item_code"):
|
if filters.get("item_code"):
|
||||||
conditions += "where a.item_code=%(item_code)s"
|
conditions += "where a.item_code=%(item_code)s"
|
||||||
|
|
||||||
item_results = frappe.db.sql("""select a.item_code as item_name, a.name as price_list_name,
|
item_results = frappe.db.sql("""select a.item_code, a.item_name, a.name as price_list_name,
|
||||||
b.warehouse as warehouse, b.actual_qty as actual_qty
|
b.warehouse as warehouse, b.actual_qty as actual_qty
|
||||||
from `tabItem Price` a left join `tabBin` b
|
from `tabItem Price` a left join `tabBin` b
|
||||||
ON a.item_code = b.item_code
|
ON a.item_code = b.item_code
|
||||||
@ -86,6 +92,7 @@ def get_item_price_qty_data(filters):
|
|||||||
if item_results:
|
if item_results:
|
||||||
for item_dict in item_results:
|
for item_dict in item_results:
|
||||||
data = {
|
data = {
|
||||||
|
'item_code': item_dict.item_code,
|
||||||
'item_name': item_dict.item_name,
|
'item_name': item_dict.item_name,
|
||||||
'warehouse': item_dict.warehouse,
|
'warehouse': item_dict.warehouse,
|
||||||
'stock_available': item_dict.actual_qty or 0,
|
'stock_available': item_dict.actual_qty or 0,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user