Merge branch 'master' of github.com:webnotes/erpnext
This commit is contained in:
commit
a112981ca2
@ -162,7 +162,7 @@ cur_frm.cscript.update_stock = function(doc, dt, dn) {
|
||||
|
||||
cur_frm.cscript.warehouse = function(doc, cdt , cdn) {
|
||||
var d = locals[cdt][cdn];
|
||||
if (!d.item_code) {alert("please enter item code first"); return};
|
||||
if (!d.item_code) { msgprint("please enter item code first"); return };
|
||||
if (d.warehouse) {
|
||||
arg = "{'item_code':'" + d.item_code + "','warehouse':'" + d.warehouse +"'}";
|
||||
get_server_fields('get_actual_qty',arg,'entries',doc,cdt,cdn,1);
|
||||
|
@ -902,7 +902,7 @@ def assign_task_to_owner(inv, msg, users):
|
||||
def get_bank_cash_account(mode_of_payment):
|
||||
val = webnotes.conn.get_value("Mode of Payment", mode_of_payment, "default_account")
|
||||
if not val:
|
||||
webnotes.msgprint("Default Account not set in Mode of Payment: ")
|
||||
webnotes.msgprint("Default Account not set in Mode of Payment: %s" % mode_of_payment)
|
||||
return {
|
||||
"cash_bank_account": val
|
||||
}
|
@ -1,5 +1,12 @@
|
||||
erpnext.updates = [
|
||||
["4rd December 2012", [
|
||||
["5th December 2012", [
|
||||
"Production Order is now linked with sales order.",
|
||||
"Production Planning Tool: The field 'Allow SA items as raw material' has been renamed to 'Use multi-level BOM', 'Include in plan' column from SO table has been deleted",
|
||||
"Batch nos are now filtered with item and available qty",
|
||||
"BOM: 'Update Costing' button has been deleted, once submitted cost are fixed.",
|
||||
"[For indian customer only] Deprecated TDS related documents and fields. Old TDS amount added into tax table in Purchase Invoice and entries table in case of JV",
|
||||
]],
|
||||
["4th December 2012", [
|
||||
"POS / Mode of Payment: Select default bank / cash account in Mode of Payment and it will be automatically selected in POS Invoice.",
|
||||
"Email: Add contact name as 'Dear so-and-so' in Email.",
|
||||
"Report Builder: Remember last column setup for users",
|
||||
@ -9,6 +16,7 @@ erpnext.updates = [
|
||||
"Linked With: Added new Linked with in all Forms.",
|
||||
"Rename Tool: Documents that can be renamed will have a 'Rename' option in the sidebar (wherever applicable).",
|
||||
"Chart of Accounts: Ability to rename / delete from Chart of Accounts.",
|
||||
"Delivery and Billing status now updated in sales order, if POS made against that sales order"
|
||||
]],
|
||||
["30th November 2012", [
|
||||
"Auto Notifications: System will prompt user with pre-set message for auto-notification.",
|
||||
|
@ -8,11 +8,11 @@
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// On REFRESH
|
||||
cur_frm.cscript.refresh = function(doc,dt,dn){
|
||||
@ -50,33 +50,42 @@ cur_frm.cscript.hour_rate = function(doc, dt, dn) {
|
||||
cur_frm.cscript.time_in_mins = cur_frm.cscript.hour_rate;
|
||||
|
||||
|
||||
cur_frm.cscript.item_code = function(doc,dt,dn) {
|
||||
get_bom_material_detail(doc, dt, dn);
|
||||
cur_frm.cscript.item_code = function(doc, cdt, cdn) {
|
||||
get_bom_material_detail(doc, cdt, cdn);
|
||||
}
|
||||
|
||||
|
||||
cur_frm.cscript.bom_no = function(doc,dt,dn) {
|
||||
get_bom_material_detail(doc, dt, dn);
|
||||
cur_frm.cscript.bom_no = function(doc, cdt, cdn) {
|
||||
get_bom_material_detail(doc, cdt, cdn);
|
||||
}
|
||||
|
||||
|
||||
var get_bom_material_detail= function(doc,dt,dn) {
|
||||
var d = locals[dt][dn];
|
||||
var callback = function(doc, dt, dn) {
|
||||
calculate_rm_cost(doc, dt, dn);
|
||||
calculate_total(doc);
|
||||
}
|
||||
|
||||
var bom_no = (d.bom_no!=null) ? d.bom_no:''
|
||||
var get_bom_material_detail= function(doc, cdt, cdn) {
|
||||
var d = locals[cdt][cdn];
|
||||
if (d.item_code) {
|
||||
arg = {'item_code': d.item_code, 'bom_no': bom_no, 'qty': d.qty};
|
||||
get_server_fields('get_bom_material_detail', JSON.stringify(arg), 'bom_materials', doc, dt, dn, 1, callback);
|
||||
wn.call({
|
||||
doc: cur_frm.doc,
|
||||
method: "get_bom_material_detail",
|
||||
args: {
|
||||
'item_code': d.item_code,
|
||||
'bom_no': d.bom_no != null ? d.bom_no: '',
|
||||
'qty': d.qty
|
||||
},
|
||||
callback: function(r) {
|
||||
d = locals[cdt][cdn];
|
||||
$.extend(d, r.message);
|
||||
refresh_field("bom_materials");
|
||||
doc = locals[doc.doctype][doc.name];
|
||||
calculate_rm_cost(doc, cdt, cdn);
|
||||
calculate_total(doc);
|
||||
},
|
||||
freeze: true
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
cur_frm.cscript.qty = function(doc, dt, dn) {
|
||||
calculate_rm_cost(doc, dt, dn);
|
||||
cur_frm.cscript.qty = function(doc, cdt, cdn) {
|
||||
calculate_rm_cost(doc, cdt, cdn);
|
||||
calculate_total(doc);
|
||||
}
|
||||
|
||||
@ -84,9 +93,9 @@ cur_frm.cscript.qty = function(doc, dt, dn) {
|
||||
cur_frm.cscript.rate = cur_frm.cscript.qty;
|
||||
|
||||
|
||||
cur_frm.cscript.is_default = function(doc, dt, dn) {
|
||||
cur_frm.cscript.is_default = function(doc, cdt, cdn) {
|
||||
if (doc.docstatus == 1)
|
||||
$c_obj(make_doclist(dt, dn), 'manage_default_bom', '', '');
|
||||
$c_obj(make_doclist(cdt, cdn), 'manage_default_bom', '', '');
|
||||
}
|
||||
|
||||
|
||||
@ -97,11 +106,11 @@ cur_frm.cscript.is_active = function(doc, dt, dn) {
|
||||
|
||||
|
||||
// Calculate Operating Cost
|
||||
var calculate_op_cost = function(doc, dt, dn) {
|
||||
var calculate_op_cost = function(doc, dt, dn) {
|
||||
var op = getchildren('BOM Operation', doc.name, 'bom_operations');
|
||||
total_op_cost = 0;
|
||||
for(var i=0;i<op.length;i++) {
|
||||
op_cost = flt(op[i].hour_rate) * flt(op[i].time_in_mins) / 60;
|
||||
op_cost = flt(op[i].hour_rate) * flt(op[i].time_in_mins) / 60;
|
||||
set_multiple('BOM Operation',op[i].name, {'operating_cost': op_cost}, 'bom_operations');
|
||||
total_op_cost += op_cost;
|
||||
}
|
||||
@ -111,11 +120,11 @@ var calculate_op_cost = function(doc, dt, dn) {
|
||||
|
||||
|
||||
// Calculate Raw Material Cost
|
||||
var calculate_rm_cost = function(doc, dt, dn) {
|
||||
var calculate_rm_cost = function(doc, dt, dn) {
|
||||
var rm = getchildren('BOM Item', doc.name, 'bom_materials');
|
||||
total_rm_cost = 0;
|
||||
for(var i=0;i<rm.length;i++) {
|
||||
amt = flt(rm[i].rate) * flt(rm[i].qty);
|
||||
amt = flt(rm[i].rate) * flt(rm[i].qty);
|
||||
set_multiple('BOM Item',rm[i].name, {'amount': amt}, 'bom_materials');
|
||||
set_multiple('BOM Item',rm[i].name, {'qty_consumed_per_unit': flt(rm[i].qty)/flt(doc.quantity)}, 'bom_materials');
|
||||
total_rm_cost += amt;
|
||||
|
@ -31,7 +31,8 @@ class DocType:
|
||||
self.doclist = doclist
|
||||
|
||||
def autoname(self):
|
||||
last_name = sql("select max(name) from `tabBOM` where name like 'BOM/%s/%%'" % self.doc.item)
|
||||
last_name = sql("""select max(name) from `tabBOM`
|
||||
where name like 'BOM/%s/%%'""" % self.doc.item)
|
||||
if last_name:
|
||||
idx = cint(cstr(last_name[0][0]).split('/')[-1]) + 1
|
||||
else:
|
||||
@ -40,9 +41,10 @@ class DocType:
|
||||
|
||||
|
||||
def get_item_det(self, item_code):
|
||||
item = sql("""select name, is_asset_item, is_purchase_item, docstatus, is_sub_contracted_item,
|
||||
description, stock_uom, default_bom, last_purchase_rate, standard_rate, is_manufactured_item from `tabItem`
|
||||
where item_code = %s""", item_code, as_dict = 1)
|
||||
item = sql("""select name, is_asset_item, is_purchase_item, docstatus,
|
||||
is_sub_contracted_item, description, stock_uom, default_bom,
|
||||
last_purchase_rate, standard_rate, is_manufactured_item
|
||||
from `tabItem` where item_code = %s""", item_code, as_dict = 1)
|
||||
|
||||
return item
|
||||
|
||||
@ -84,10 +86,13 @@ class DocType:
|
||||
|
||||
|
||||
|
||||
def get_bom_material_detail(self, arg):
|
||||
def get_bom_material_detail(self):
|
||||
""" Get raw material details like uom, desc and rate"""
|
||||
|
||||
arg = eval(arg)
|
||||
arg = webnotes.form_dict.get('args')
|
||||
import json
|
||||
arg = json.loads(arg)
|
||||
|
||||
item = self.get_item_det(arg['item_code'])
|
||||
self.validate_rm_item(item)
|
||||
|
||||
@ -96,10 +101,10 @@ class DocType:
|
||||
|
||||
rate = self.get_rm_rate(arg)
|
||||
ret_item = {
|
||||
'description' : item and arg['description'] or '',
|
||||
'stock_uom' : item and arg['stock_uom'] or '',
|
||||
'bom_no' : arg['bom_no'],
|
||||
'rate' : rate
|
||||
'description' : item and arg['description'] or '',
|
||||
'stock_uom' : item and arg['stock_uom'] or '',
|
||||
'bom_no' : arg['bom_no'],
|
||||
'rate' : rate
|
||||
}
|
||||
return ret_item
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user