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:
Shreya Shah 2017-12-06 19:17:04 +05:30 committed by Nabin Hait
parent f6aff3de96
commit b13a54ac74
5 changed files with 142 additions and 6 deletions

View File

@ -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",

View 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()
]);
});

View 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()
]);
});

View File

@ -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
})

View File

@ -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