Checkbox in Price list for Price not UOM dependant (#11836)
* checkbox price not uom dependant * change price list rate on uom dependancy condition * test case * Update get_item_details.py
This commit is contained in:
parent
f6aff3de96
commit
b13a54ac74
@ -1,5 +1,6 @@
|
||||
{
|
||||
"allow_copy": 0,
|
||||
"allow_guest_to_view": 0,
|
||||
"allow_import": 1,
|
||||
"allow_rename": 1,
|
||||
"autoname": "field:price_list_name",
|
||||
@ -14,6 +15,7 @@
|
||||
"engine": "InnoDB",
|
||||
"fields": [
|
||||
{
|
||||
"allow_bulk_edit": 0,
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
@ -43,6 +45,7 @@
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_bulk_edit": 0,
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
@ -70,6 +73,7 @@
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_bulk_edit": 0,
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
@ -100,6 +104,7 @@
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_bulk_edit": 0,
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
@ -129,6 +134,7 @@
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_bulk_edit": 0,
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
@ -157,6 +163,7 @@
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_bulk_edit": 0,
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
@ -185,6 +192,37 @@
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_bulk_edit": 0,
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"columns": 0,
|
||||
"fieldname": "price_not_uom_dependant",
|
||||
"fieldtype": "Check",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_global_search": 0,
|
||||
"in_list_view": 0,
|
||||
"in_standard_filter": 0,
|
||||
"label": "Price Not UOM Dependant",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_bulk_edit": 0,
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
@ -212,6 +250,7 @@
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_bulk_edit": 0,
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
@ -242,18 +281,18 @@
|
||||
"unique": 0
|
||||
}
|
||||
],
|
||||
"has_web_view": 0,
|
||||
"hide_heading": 0,
|
||||
"hide_toolbar": 0,
|
||||
"icon": "fa fa-tags",
|
||||
"idx": 1,
|
||||
"image_view": 0,
|
||||
"in_create": 0,
|
||||
"in_dialog": 0,
|
||||
"is_submittable": 0,
|
||||
"issingle": 0,
|
||||
"istable": 0,
|
||||
"max_attachments": 1,
|
||||
"modified": "2017-02-20 13:27:30.431064",
|
||||
"modified": "2017-12-01 16:55:00.243382",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Stock",
|
||||
"name": "Price List",
|
||||
|
23
erpnext/stock/doctype/price_list/test_price_list.js
Normal file
23
erpnext/stock/doctype/price_list/test_price_list.js
Normal file
@ -0,0 +1,23 @@
|
||||
/* eslint-disable */
|
||||
// rename this file from _test_[name] to test_[name] to activate
|
||||
// and remove above this line
|
||||
|
||||
QUnit.test("test: Price List", function (assert) {
|
||||
let done = assert.async();
|
||||
|
||||
// number of asserts
|
||||
assert.expect(1);
|
||||
|
||||
frappe.run_serially([
|
||||
// insert a new Price List
|
||||
() => frappe.tests.make('Price List', [
|
||||
// values to be set
|
||||
{key: 'value'}
|
||||
]),
|
||||
() => {
|
||||
assert.equal(cur_frm.doc.key, 'value');
|
||||
},
|
||||
() => done()
|
||||
]);
|
||||
|
||||
});
|
58
erpnext/stock/doctype/price_list/test_price_list_uom.js
Normal file
58
erpnext/stock/doctype/price_list/test_price_list_uom.js
Normal file
@ -0,0 +1,58 @@
|
||||
QUnit.module('Price List');
|
||||
|
||||
QUnit.test("test price list with uom dependancy", function(assert) {
|
||||
assert.expect(2);
|
||||
let done = assert.async();
|
||||
frappe.run_serially([
|
||||
|
||||
() => frappe.set_route('Form', 'Price List', 'Standard Buying'),
|
||||
() => {
|
||||
cur_frm.set_value('price_not_uom_dependant','1');
|
||||
frappe.timeout(1);
|
||||
},
|
||||
() => cur_frm.save(),
|
||||
|
||||
() => frappe.timeout(1),
|
||||
|
||||
() => {
|
||||
return frappe.tests.make('Item Price', [
|
||||
{price_list:'Standard Buying'},
|
||||
{item_code: 'Test Product 3'},
|
||||
{price_list_rate: 200}
|
||||
]);
|
||||
},
|
||||
|
||||
() => cur_frm.save(),
|
||||
|
||||
() => {
|
||||
return frappe.tests.make('Purchase Order', [
|
||||
{supplier: 'Test Supplier'},
|
||||
{currency: 'INR'},
|
||||
{buying_price_list: 'Standard Buying'},
|
||||
{items: [
|
||||
[
|
||||
{"item_code": 'Test Product 3'},
|
||||
{"schedule_date": frappe.datetime.add_days(frappe.datetime.now_date(), 2)},
|
||||
{"uom": 'Nos'},
|
||||
{"conversion_factor": 3}
|
||||
]
|
||||
]},
|
||||
|
||||
]);
|
||||
},
|
||||
|
||||
() => cur_frm.save(),
|
||||
() => frappe.timeout(0.3),
|
||||
|
||||
() => {
|
||||
assert.ok(cur_frm.doc.items[0].item_name == 'Test Product 3', "Item code correct");
|
||||
assert.ok(cur_frm.doc.items[0].price_list_rate == 200, "Price list rate correct");
|
||||
},
|
||||
|
||||
() => frappe.tests.click_button('Submit'),
|
||||
() => frappe.tests.click_button('Yes'),
|
||||
() => frappe.timeout(1),
|
||||
|
||||
() => done()
|
||||
]);
|
||||
});
|
@ -155,6 +155,7 @@ def get_basic_details(args, item):
|
||||
"conversion_rate": 1.0,
|
||||
"selling_price_list": None,
|
||||
"price_list_currency": None,
|
||||
"price_list_uom_dependant": None,
|
||||
"plc_conversion_rate": 1.0,
|
||||
"doctype": "",
|
||||
"name": "",
|
||||
@ -311,8 +312,8 @@ def get_price_list_rate(args, item_doc, out):
|
||||
|
||||
out.price_list_rate = flt(price_list_rate) * flt(args.plc_conversion_rate) \
|
||||
/ flt(args.conversion_rate)
|
||||
|
||||
out.price_list_rate = flt(out.price_list_rate * (args.conversion_factor or 1.0))
|
||||
if args.price_list_uom_dependant == 0:
|
||||
out.price_list_rate = flt(out.price_list_rate * (args.conversion_factor or 1.0))
|
||||
|
||||
if not out.price_list_rate and args.transaction_type=="buying":
|
||||
from erpnext.stock.doctype.item.item import get_last_purchase_details
|
||||
@ -504,6 +505,7 @@ def apply_price_list(args, as_doc=False):
|
||||
"conversion_rate": 1.0,
|
||||
"selling_price_list": None,
|
||||
"price_list_currency": None,
|
||||
"price_list_uom_dependant": None,
|
||||
"plc_conversion_rate": 1.0,
|
||||
"doctype": "",
|
||||
"name": "",
|
||||
@ -530,7 +532,7 @@ def apply_price_list(args, as_doc=False):
|
||||
children.append(item_details)
|
||||
|
||||
if as_doc:
|
||||
args.price_list_currency = parent.price_list_currency
|
||||
args.price_list_currency = parent.price_list_currency,
|
||||
args.plc_conversion_rate = parent.plc_conversion_rate
|
||||
if args.get('items'):
|
||||
for i, item in enumerate(args.get('items')):
|
||||
@ -565,11 +567,23 @@ def get_price_list_currency(price_list):
|
||||
|
||||
return result.currency
|
||||
|
||||
def get_price_list_uom_dependant(price_list):
|
||||
if price_list:
|
||||
result = frappe.db.get_value("Price List", {"name": price_list,
|
||||
"enabled": 1}, ["name", "price_not_uom_dependant"], as_dict=True)
|
||||
|
||||
if not result:
|
||||
throw(_("Price List {0} is disabled or does not exist").format(price_list))
|
||||
|
||||
return result.price_not_uom_dependant
|
||||
|
||||
|
||||
def get_price_list_currency_and_exchange_rate(args):
|
||||
if not args.price_list:
|
||||
return {}
|
||||
|
||||
price_list_currency = get_price_list_currency(args.price_list)
|
||||
price_list_uom_dependant = get_price_list_uom_dependant(args.price_list)
|
||||
plc_conversion_rate = args.plc_conversion_rate
|
||||
|
||||
if (not plc_conversion_rate) or (price_list_currency and args.price_list_currency \
|
||||
@ -580,6 +594,7 @@ def get_price_list_currency_and_exchange_rate(args):
|
||||
|
||||
return frappe._dict({
|
||||
"price_list_currency": price_list_currency,
|
||||
"price_list_uom_dependant": price_list_uom_dependant,
|
||||
"plc_conversion_rate": plc_conversion_rate
|
||||
})
|
||||
|
||||
|
@ -140,6 +140,7 @@ erpnext/stock/doctype/delivery_note/test_delivery_note_with_margin.js
|
||||
erpnext/selling/doctype/sales_order/tests/test_sales_order_with_margin.js
|
||||
erpnext/selling/doctype/quotation/tests/test_quotation_with_margin.js
|
||||
erpnext/accounts/doctype/sales_invoice/tests/test_sales_invoice_with_margin.js
|
||||
erpnext/stock/doctype/price_list/test_price_list_uom.js
|
||||
erpnext/agriculture/doctype/land_unit/test_land_unit.js
|
||||
erpnext/agriculture/doctype/fertilizer/test_fertilizer.js
|
||||
erpnext/agriculture/doctype/water_analysis/test_water_analysis.js
|
||||
@ -153,4 +154,4 @@ erpnext/non_profit/doctype/volunteer_type/test_volunteer_type.js
|
||||
erpnext/non_profit/doctype/volunteer/test_volunteer.js
|
||||
erpnext/non_profit/doctype/donor_type/test_donor_type.js
|
||||
erpnext/non_profit/doctype/donor/test_donor.js
|
||||
erpnext/non_profit/doctype/grant_application/test_grant_application.js
|
||||
erpnext/non_profit/doctype/grant_application/test_grant_application.js
|
||||
|
Loading…
x
Reference in New Issue
Block a user