Merge branch 'develop' into asset_depreciation_schedule
This commit is contained in:
commit
8534390627
@ -533,12 +533,13 @@ def get_accounts(root_type, companies):
|
|||||||
],
|
],
|
||||||
filters={"company": company, "root_type": root_type},
|
filters={"company": company, "root_type": root_type},
|
||||||
):
|
):
|
||||||
if account.account_name not in added_accounts:
|
if account.account_number:
|
||||||
|
account_key = account.account_number + "-" + account.account_name
|
||||||
|
else:
|
||||||
|
account_key = account.account_name
|
||||||
|
|
||||||
|
if account_key not in added_accounts:
|
||||||
accounts.append(account)
|
accounts.append(account)
|
||||||
if account.account_number:
|
|
||||||
account_key = account.account_number + "-" + account.account_name
|
|
||||||
else:
|
|
||||||
account_key = account.account_name
|
|
||||||
added_accounts.append(account_key)
|
added_accounts.append(account_key)
|
||||||
|
|
||||||
return accounts
|
return accounts
|
||||||
|
@ -234,8 +234,11 @@ def modify_report_columns(doctype, field, column):
|
|||||||
if field in ["item_tax_rate", "base_net_amount"]:
|
if field in ["item_tax_rate", "base_net_amount"]:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if doctype == "GL Entry" and field in ["debit", "credit"]:
|
if doctype == "GL Entry":
|
||||||
column.update({"label": _("Amount"), "fieldname": "amount"})
|
if field in ["debit", "credit"]:
|
||||||
|
column.update({"label": _("Amount"), "fieldname": "amount"})
|
||||||
|
elif field == "voucher_type":
|
||||||
|
column.update({"fieldtype": "Data", "options": ""})
|
||||||
|
|
||||||
if field == "taxes_and_charges":
|
if field == "taxes_and_charges":
|
||||||
column.update({"label": _("Taxes and Charges Template")})
|
column.update({"label": _("Taxes and Charges Template")})
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.query_builder.functions import Floor, Sum
|
from frappe.query_builder.functions import Sum
|
||||||
from pypika.terms import ExistsCriterion
|
from pypika.terms import ExistsCriterion
|
||||||
|
|
||||||
|
|
||||||
@ -58,9 +58,9 @@ def get_bom_stock(filters):
|
|||||||
bom_item.description,
|
bom_item.description,
|
||||||
bom_item.stock_qty,
|
bom_item.stock_qty,
|
||||||
bom_item.stock_uom,
|
bom_item.stock_uom,
|
||||||
bom_item.stock_qty * qty_to_produce / bom.quantity,
|
(bom_item.stock_qty / bom.quantity) * qty_to_produce,
|
||||||
Sum(bin.actual_qty).as_("actual_qty"),
|
Sum(bin.actual_qty),
|
||||||
Sum(Floor(bin.actual_qty / (bom_item.stock_qty * qty_to_produce / bom.quantity))),
|
Sum(bin.actual_qty) / (bom_item.stock_qty / bom.quantity),
|
||||||
)
|
)
|
||||||
.where((bom_item.parent == filters.get("bom")) & (bom_item.parenttype == "BOM"))
|
.where((bom_item.parent == filters.get("bom")) & (bom_item.parenttype == "BOM"))
|
||||||
.groupby(bom_item.item_code)
|
.groupby(bom_item.item_code)
|
||||||
|
@ -58,7 +58,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments {
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
in_list(["Sales Invoice", "POS Invoice"], this.frm.doc.doctype)
|
in_list(["Sales Invoice", "POS Invoice"], this.frm.doc.doctype)
|
||||||
&& this.frm.doc.s_pos
|
&& this.frm.doc.is_pos
|
||||||
&& this.frm.doc.is_return
|
&& this.frm.doc.is_return
|
||||||
) {
|
) {
|
||||||
this.set_total_amount_to_default_mop();
|
this.set_total_amount_to_default_mop();
|
||||||
|
@ -30,6 +30,24 @@ class TestQuotation(FrappeTestCase):
|
|||||||
|
|
||||||
self.assertTrue(sales_order.get("payment_schedule"))
|
self.assertTrue(sales_order.get("payment_schedule"))
|
||||||
|
|
||||||
|
def test_maintain_rate_in_sales_cycle_is_enforced(self):
|
||||||
|
from erpnext.selling.doctype.quotation.quotation import make_sales_order
|
||||||
|
|
||||||
|
maintain_rate = frappe.db.get_single_value("Selling Settings", "maintain_same_sales_rate")
|
||||||
|
frappe.db.set_single_value("Selling Settings", "maintain_same_sales_rate", 1)
|
||||||
|
|
||||||
|
quotation = frappe.copy_doc(test_records[0])
|
||||||
|
quotation.transaction_date = nowdate()
|
||||||
|
quotation.valid_till = add_months(quotation.transaction_date, 1)
|
||||||
|
quotation.insert()
|
||||||
|
quotation.submit()
|
||||||
|
|
||||||
|
sales_order = make_sales_order(quotation.name)
|
||||||
|
sales_order.items[0].rate = 1
|
||||||
|
self.assertRaises(frappe.ValidationError, sales_order.save)
|
||||||
|
|
||||||
|
frappe.db.set_single_value("Selling Settings", "maintain_same_sales_rate", maintain_rate)
|
||||||
|
|
||||||
def test_make_sales_order_with_different_currency(self):
|
def test_make_sales_order_with_different_currency(self):
|
||||||
from erpnext.selling.doctype.quotation.quotation import make_sales_order
|
from erpnext.selling.doctype.quotation.quotation import make_sales_order
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ class SalesOrder(SellingController):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if cint(frappe.db.get_single_value("Selling Settings", "maintain_same_sales_rate")):
|
if cint(frappe.db.get_single_value("Selling Settings", "maintain_same_sales_rate")):
|
||||||
self.validate_rate_with_reference_doc([["Quotation", "prev_docname", "quotation_item"]])
|
self.validate_rate_with_reference_doc([["Quotation", "prevdoc_docname", "quotation_item"]])
|
||||||
|
|
||||||
def update_enquiry_status(self, prevdoc, flag):
|
def update_enquiry_status(self, prevdoc, flag):
|
||||||
enq = frappe.db.sql(
|
enq = frappe.db.sql(
|
||||||
|
@ -12,7 +12,10 @@ def get_data():
|
|||||||
"Auto Repeat": "reference_document",
|
"Auto Repeat": "reference_document",
|
||||||
"Maintenance Visit": "prevdoc_docname",
|
"Maintenance Visit": "prevdoc_docname",
|
||||||
},
|
},
|
||||||
"internal_links": {"Quotation": ["items", "prevdoc_docname"]},
|
"internal_links": {
|
||||||
|
"Quotation": ["items", "prevdoc_docname"],
|
||||||
|
"Material Request": ["items", "material_request"],
|
||||||
|
},
|
||||||
"transactions": [
|
"transactions": [
|
||||||
{
|
{
|
||||||
"label": _("Fulfillment"),
|
"label": _("Fulfillment"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user