Merge branch 'master' of github.com:webnotes/erpnext

This commit is contained in:
Rushabh Mehta
2012-12-25 15:09:58 +05:30
38 changed files with 470 additions and 431 deletions

View File

@@ -42,7 +42,7 @@ class DocType:
self.doc.total_amount = 0.0
for d in dl:
nl = addchild(self.doc, 'entries', 'Bank Reconciliation Detail', 1, self.doclist)
nl = addchild(self.doc, 'entries', 'Bank Reconciliation Detail', self.doclist)
nl.posting_date = cstr(d[5])
nl.voucher_id = cstr(d[0])
nl.cheque_number = cstr(d[1])

View File

@@ -31,7 +31,8 @@ class DocType:
'October','November','December']
idx =1
for m in month_list:
mnth = addchild(self.doc,'budget_distribution_details','Budget Distribution Detail',1,self.doclist)
mnth = addchild(self.doc, 'budget_distribution_details',
'Budget Distribution Detail', self.doclist)
mnth.month = m or ''
mnth.idx = idx
idx += 1

View File

@@ -223,7 +223,7 @@ class DocType:
obj.doclist = obj.doc.clear_table(obj.doclist,table_field_name)
# Create advance table
for d in jv_detail:
add = addchild(obj.doc, table_field_name, table_name, 1, obj.doclist)
add = addchild(obj.doc, table_field_name, table_name, obj.doclist)
add.journal_voucher = d[0]
add.jv_detail_no = d[3]
add.remarks = d[1]
@@ -286,7 +286,7 @@ class DocType:
webnotes.conn.sql("update `tabJournal Voucher Detail` set %s = '%s', %s = '%s' where name = '%s'" % (dr_or_cr, flt(allocate), doctype == "Purchase Invoice" and 'against_voucher' or 'against_invoice',cstr(against_document_no), jv_detail_no))
# new entry with balance amount
add = addchild(jv_obj.doc, 'entries', 'Journal Voucher Detail', 1, jv_obj.doclist)
add = addchild(jv_obj.doc, 'entries', 'Journal Voucher Detail', jv_obj.doclist)
add.account = account_head
add.cost_center = cstr(jvd[0][1])
add.balance = cstr(jvd[0][2])
@@ -353,7 +353,7 @@ class DocType:
if d['allocated_amt'] < d['unadjusted_amt']:
jvd = webnotes.conn.sql("select cost_center, balance, against_account, is_advance from `tabJournal Voucher Detail` where name = '%s'" % d['voucher_detail_no'])
# new entry with balance amount
ch = addchild(jv_obj.doc, 'entries', 'Journal Voucher Detail', 1)
ch = addchild(jv_obj.doc, 'entries', 'Journal Voucher Detail')
ch.account = d['account']
ch.cost_center = cstr(jvd[0][0])
ch.balance = cstr(jvd[0][1])

View File

@@ -174,7 +174,7 @@ class DocType:
# Set the diff in a new row
if flag == 0 and (flt(diff) != 0):
jd = addchild(self.doc, 'entries', 'Journal Voucher Detail', 1, self.doclist)
jd = addchild(self.doc, 'entries', 'Journal Voucher Detail', self.doclist)
if diff>0:
jd.credit = flt(diff)
elif diff<0:
@@ -256,7 +256,7 @@ class DocType:
total = 0
for d in self.get_values():
total += flt(d[2])
jd = addchild(self.doc, 'entries', 'Journal Voucher Detail', 1, self.doclist)
jd = addchild(self.doc, 'entries', 'Journal Voucher Detail', self.doclist)
jd.account = cstr(d[1])
if self.doc.write_off_based_on == 'Accounts Receivable':
jd.credit = flt(d[2])
@@ -265,7 +265,7 @@ class DocType:
jd.debit = flt(d[2])
jd.against_voucher = cstr(d[0])
jd.save(1)
jd = addchild(self.doc, 'entries', 'Journal Voucher Detail', 1, self.doclist)
jd = addchild(self.doc, 'entries', 'Journal Voucher Detail', self.doclist)
if self.doc.write_off_based_on == 'Accounts Receivable':
jd.debit = total
elif self.doc.write_off_based_on == 'Accounts Payable':

View File

@@ -100,7 +100,7 @@ class DocType:
#--------------------------------------------------
def create_payment_table(self, gle):
for d in gle:
ch = addchild(self.doc, 'ir_payment_details', 'Payment to Invoice Matching Tool Detail', 1, self.doclist)
ch = addchild(self.doc, 'ir_payment_details', 'Payment to Invoice Matching Tool Detail', self.doclist)
ch.voucher_no = d.get('voucher_no')
ch.posting_date = d.get('posting_date')
ch.amt_due = self.acc_type == 'debit' and flt(d.get('amt_due')) or -1*flt(d.get('amt_due'))

View File

@@ -612,7 +612,8 @@ class DocType(TransactionBase):
idx = 0
for other in other_charge:
d = addchild(obj.doc, 'purchase_tax_details', 'Purchase Taxes and Charges', 1, obj.doclist)
d = addchild(obj.doc, 'purchase_tax_details', 'Purchase Taxes and Charges',
obj.doclist)
d.category = other['category']
d.add_deduct_tax = other['add_deduct_tax']
d.charge_type = other['charge_type']

View File

@@ -314,7 +314,7 @@ class DocType(TransactionBase):
for i in bom_det:
if i and not sql("select name from `tabPurchase Order Item Supplied` where reference_name = '%s' and bom_detail_no = '%s' and parent = '%s' " %(d.name, i[6], self.doc.name)):
rm_child = addchild(self.doc, 'po_raw_material_details', 'Purchase Order Item Supplied', 1, self.doclist)
rm_child = addchild(self.doc, 'po_raw_material_details', 'Purchase Order Item Supplied', self.doclist)
rm_child.reference_name = d.name
rm_child.bom_detail_no = i and i[6] or ''

View File

@@ -41,7 +41,7 @@ class DocType:
specification = sql("select specification, value from `tabItem Quality Inspection Parameter` \
where parent = '%s' order by idx" % (self.doc.item_code))
for d in specification:
child = addchild(self.doc, 'qa_specification_details', 'Quality Inspection Reading', 1, self.doclist)
child = addchild(self.doc, 'qa_specification_details', 'Quality Inspection Reading', self.doclist)
child.specification = d[0]
child.value = d[1]
child.status = 'Accepted'

View File

@@ -19,7 +19,7 @@ import webnotes
import webnotes.model
from webnotes import _, msgprint
from webnotes.utils import cint, flt
from webnotes.model.utils import round_doc
from webnotes.model.utils import round_floats_in_doc
import json
from controllers.transaction_controller import TransactionController
@@ -83,7 +83,7 @@ class TaxController(TransactionController):
self.precision.item[base_field])
for item in self.item_doclist:
round_doc(item, self.precision.item)
round_floats_in_doc(item, self.precision.item)
if item.fields.get(self.fmap.discount) == 100:
if not item.fields.get(self.fmap.print_ref_rate):
@@ -126,7 +126,7 @@ class TaxController(TransactionController):
self.validate_included_tax(tax)
# round relevant values
round_doc(tax, self.precision.tax)
round_floats_in_doc(tax, self.precision.tax)
def calculate_net_total(self):
self.doc.net_total = 0

View File

@@ -99,7 +99,7 @@ class DocType:
yr_start_date, yr_end_date = self.get_fy_start_end_dates()
date_list = self.get_weekly_off_date_list(yr_start_date, yr_end_date)
for d in date_list:
ch = addchild(self.doc, 'holiday_list_details', 'Holiday', 1, self.doclist)
ch = addchild(self.doc, 'holiday_list_details', 'Holiday', self.doclist)
ch.description = self.doc.weekly_off
ch.holiday_date = d

View File

@@ -70,7 +70,7 @@ class DocType:
def make_table(self, doct_name, tab_fname, tab_name):
list1 = sql("select name from `tab%s` where docstatus != 2" % doct_name)
for li in list1:
child = addchild(self.doc, tab_fname, tab_name, 1, self.doclist)
child = addchild(self.doc, tab_fname, tab_name, self.doclist)
if(tab_fname == 'earning_details'):
child.e_type = cstr(li[0])
child.modified_value = 0

View File

@@ -357,7 +357,8 @@ class DocType:
"Add items to Flat BOM table"
self.doclist = self.doc.clear_table(self.doclist, 'flat_bom_details', 1)
for d in self.cur_exploded_items:
ch = addchild(self.doc, 'flat_bom_details', 'BOM Explosion Item', 1, self.doclist)
ch = addchild(self.doc, 'flat_bom_details', 'BOM Explosion Item',
self.doclist)
for i in d.keys():
ch.fields[i] = d[i]
ch.docstatus = self.doc.docstatus

View File

@@ -91,7 +91,7 @@ cur_frm.cscript.make_se = function(doc, purpose) {
se.company = doc.company;
se.fg_completed_qty = doc.qty - doc.produced_qty;
se.bom_no = doc.bom_no;
se.use_multi_level_bom = 1;
se.use_multi_level_bom = doc.use_multi_level_bom;
loaddoc('Stock Entry', se.name);
}

View File

@@ -4,7 +4,7 @@
"docstatus": 0,
"creation": "2012-12-20 14:31:18",
"modified_by": "Administrator",
"modified": "2012-12-20 15:50:43"
"modified": "2012-12-24 18:39:00"
},
{
"is_submittable": 1,
@@ -142,6 +142,14 @@
"fieldtype": "Data",
"depends_on": "production_item"
},
{
"description": "If checked, BOM for sub-assembly items will be considered for getting raw materials. Otherwise, all sub-assembly items will be treated as a raw material.",
"default": "1",
"doctype": "DocField",
"label": "Use Multi-Level BOM",
"fieldname": "use_multi_level_bom",
"fieldtype": "Check"
},
{
"read_only": 0,
"doctype": "DocField",

View File

@@ -2,9 +2,9 @@
{
"owner": "Administrator",
"docstatus": 0,
"creation": "2012-07-03 13:30:04",
"creation": "2012-12-20 18:14:55",
"modified_by": "Administrator",
"modified": "2012-12-10 18:30:00"
"modified": "2012-12-24 19:37:34"
},
{
"istable": 1,
@@ -18,6 +18,7 @@
"parent": "Production Plan Item",
"doctype": "DocField",
"parenttype": "DocType",
"permlevel": 0,
"parentfield": "fields"
},
{
@@ -25,14 +26,11 @@
"doctype": "DocType"
},
{
"permlevel": 0,
"oldfieldtype": "Link",
"colour": "White:FFF",
"doctype": "DocField",
"label": "Item Code",
"oldfieldname": "item_code",
"width": "150px",
"trigger": "Client",
"fieldname": "item_code",
"fieldtype": "Link",
"reqd": 1,
@@ -44,11 +42,10 @@
"label": "BOM No",
"oldfieldname": "bom_no",
"width": "100px",
"options": "BOM",
"fieldname": "bom_no",
"fieldtype": "Link",
"reqd": 1,
"permlevel": 0
"options": "BOM"
},
{
"default": "0.00",
@@ -59,20 +56,20 @@
"width": "100px",
"fieldname": "planned_qty",
"fieldtype": "Currency",
"reqd": 1,
"permlevel": 0
"reqd": 1
},
{
"read_only": 1,
"oldfieldtype": "Data",
"doctype": "DocField",
"label": "Sales Order",
"oldfieldname": "source_docname",
"options": "Sales Order",
"fieldname": "sales_order",
"fieldtype": "Link",
"permlevel": 1
"options": "Sales Order"
},
{
"read_only": 1,
"default": "0.00",
"oldfieldtype": "Currency",
"doctype": "DocField",
@@ -81,10 +78,10 @@
"width": "100px",
"fieldname": "so_pending_qty",
"fieldtype": "Currency",
"reqd": 0,
"permlevel": 1
"reqd": 0
},
{
"read_only": 1,
"oldfieldtype": "Data",
"doctype": "DocField",
"label": "UOM",
@@ -92,17 +89,16 @@
"width": "80px",
"fieldname": "stock_uom",
"fieldtype": "Data",
"reqd": 1,
"permlevel": 1
"reqd": 1
},
{
"read_only": 1,
"oldfieldtype": "Text",
"doctype": "DocField",
"label": "Description",
"oldfieldname": "description",
"width": "200px",
"fieldname": "description",
"fieldtype": "Text",
"permlevel": 1
"fieldtype": "Text"
}
]

View File

@@ -2,9 +2,9 @@
{
"owner": "Administrator",
"docstatus": 0,
"creation": "2012-07-03 13:30:04",
"creation": "2012-12-20 18:14:56",
"modified_by": "Administrator",
"modified": "2012-12-10 18:30:00"
"modified": "2012-12-24 19:38:10"
},
{
"istable": 1,
@@ -18,6 +18,7 @@
"parent": "Production Plan Sales Order",
"doctype": "DocField",
"parenttype": "DocType",
"permlevel": 0,
"parentfield": "fields"
},
{
@@ -39,37 +40,36 @@
"label": "Sales Order",
"oldfieldname": "prevdoc_docname",
"width": "150px",
"options": "Sales Order",
"fieldname": "sales_order",
"fieldtype": "Link",
"permlevel": 0
"options": "Sales Order"
},
{
"read_only": 1,
"oldfieldtype": "Date",
"doctype": "DocField",
"label": "SO Date",
"oldfieldname": "document_date",
"width": "120px",
"fieldname": "sales_order_date",
"fieldtype": "Date",
"permlevel": 1
"fieldtype": "Date"
},
{
"read_only": 1,
"doctype": "DocField",
"label": "Customer",
"width": "150px",
"options": "Customer",
"fieldname": "customer",
"fieldtype": "Link",
"permlevel": 1
"options": "Customer"
},
{
"read_only": 1,
"doctype": "DocField",
"label": "Grand Total",
"width": "120px",
"fieldname": "grand_total",
"fieldtype": "Currency",
"permlevel": 1
"fieldtype": "Currency"
},
{
"write": 1,

View File

@@ -101,7 +101,7 @@ class DocType:
for r in open_so:
if cstr(r['name']) not in so_list:
pp_so = addchild(self.doc, 'pp_so_details',
'Production Plan Sales Order', 1, self.doclist)
'Production Plan Sales Order', self.doclist)
pp_so.sales_order = r['name']
pp_so.sales_order_date = cstr(r['transaction_date'])
pp_so.customer = cstr(r['customer'])
@@ -150,7 +150,7 @@ class DocType:
for p in items:
item_details = sql("""select description, stock_uom, default_bom
from tabItem where name=%s""", p['item_code'])
pi = addchild(self.doc, 'pp_details', 'Production Plan Item', 1, self.doclist)
pi = addchild(self.doc, 'pp_details', 'Production Plan Item', self.doclist)
pi.sales_order = p['parent']
pi.item_code = p['item_code']
pi.description = item_details and item_details[0][0] or ''

View File

@@ -7,7 +7,7 @@ def execute():
webnotes.conn.sql("delete from `tabDocPerm` where role = 'All' and permlevel = 0 and parent in ('Appraisal', 'Ticket', 'Project')")
appr = get_obj('DocType', 'Appraisal', with_children=1)
ch = addchild(appr.doc, 'permissions', 'DocPerm', 0)
ch = addchild(appr.doc, 'permissions', 'DocPerm')
ch.permlevel = 0
ch.role = 'Employee'
ch.read = 1

View File

@@ -11,7 +11,7 @@ def execute():
addr = get_obj('DocType', 'Address', with_children=1)
for d in role1+role2:
ch = addchild(addr.doc, 'permissions', 'DocPerm', 0)
ch = addchild(addr.doc, 'permissions', 'DocPerm')
ch.role = d
ch.read = 1
ch.write = 1

View File

@@ -7,3 +7,6 @@ def execute():
webnotes.conn.sql("""update `tabStock Entry`
set use_multi_level_bom = if(consider_sa_items_as_raw_materials='Yes', 0, 1)""")
webnotes.conn.sql("""update `tabProduction Order`
set use_multi_level_bom = if(consider_sa_items_as_raw_materials='Yes', 0, 1)
where use_multi_level_bom is null""")

View File

@@ -14,15 +14,29 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
cur_frm.fields_dict['project'].get_query = function(doc,cdt,cdn){
var cond='';
if(doc.customer) cond = 'ifnull(`tabProject`.customer, "") = "'+doc.customer+'" AND';
return repl('SELECT distinct `tabProject`.`name` FROM `tabProject` \
WHERE %(cond)s `tabProject`.`name` LIKE "%s" \
ORDER BY `tabProject`.`name` ASC LIMIT 50', {cond:cond});
}
wn.provide("erpnext.projects");
erpnext.projects.Task = erpnext.utils.Controller.extend({
setup: function() {
this.frm.fields_dict.project.get_query = function() {
return "select name from `tabProject` \
where %(key)s like \"%s\" \
order by name asc limit 50";
};
},
project: function() {
if(this.frm.doc.project) {
get_server_fields('get_project_details', '','', doc, cdt, cdn, 1);
}
},
after_save: function() {
this.frm.doc.project && wn.model.remove_from_locals("Project",
this.frm.doc.project);
},
});
cur_frm.cscript.project = function(doc, cdt, cdn){
if(doc.project) get_server_fields('get_project_details', '','', doc, cdt, cdn, 1);
}
cur_frm.cscript = new erpnext.projects.Task({frm: cur_frm});

View File

@@ -60,7 +60,7 @@ erpnext.toolbar.add_modules = function() {
for(var i in modules_list) {
var m = modules_list[i]
if(m!='Setup' && wn.boot.profile.allow_modules.indexOf(m)!=-1) {
if(m!='Setup' && wn.boot.profile.allow_modules.indexOf(m)!=-1 && wn.modules[m]) {
args = {
module: m,
module_page: wn.modules[m].link,

View File

@@ -14,6 +14,7 @@ erpnext.send_message = function(opts) {
cmd: "website.send_message",
subject: opts.subject,
sender: opts.sender,
status: opts.status,
message: typeof opts.message == "string"
? opts.message
: JSON.stringify(opts.message)

View File

@@ -123,7 +123,7 @@ class DocType(TransactionBase):
user_lst.append(chk[0][0])
for d in user_lst:
ch = addchild(ev, 'event_individuals', 'Event User', 0)
ch = addchild(ev, 'event_individuals', 'Event User')
ch.person = d
ch.save(1)

View File

@@ -19,7 +19,7 @@ import webnotes
from webnotes.utils import cstr, load_json
from webnotes.model import db_exists
from webnotes.model.doc import Document, addchild
from webnotes.model.doc import Document
from webnotes.model.wrapper import getlist, copy_doclist
from webnotes.model.code import get_obj
from webnotes import msgprint

View File

@@ -75,7 +75,7 @@ class DocType(TransactionBase):
obj.doclist = obj.doc.clear_table(obj.doclist,'sales_team')
idx = 0
for d in webnotes.conn.sql("select sales_person, allocated_percentage, allocated_amount, incentives from `tabSales Team` where parent = '%s'" % obj.doc.customer):
ch = addchild(obj.doc, 'sales_team', 'Sales Team', 1, obj.doclist)
ch = addchild(obj.doc, 'sales_team', 'Sales Team', obj.doclist)
ch.sales_person = d and cstr(d[0]) or ''
ch.allocated_percentage = d and flt(d[1]) or 0
ch.allocated_amount = d and flt(d[2]) or 0
@@ -265,7 +265,7 @@ class DocType(TransactionBase):
for field in default_fields:
if field in other: del other[field]
d = addchild(obj.doc, 'other_charges', 'Sales Taxes and Charges', 1,
d = addchild(obj.doc, 'other_charges', 'Sales Taxes and Charges',
obj.doclist)
d.fields.update(other)
d.rate = flt(d.rate)
@@ -481,7 +481,8 @@ class DocType(TransactionBase):
break
if not exists:
pi = addchild(obj.doc, 'packing_details', 'Delivery Note Packing Item', 1, obj.doclist)
pi = addchild(obj.doc, 'packing_details', 'Delivery Note Packing Item',
obj.doclist)
pi.parent_item = line.item_code
pi.item_code = packing_item_code

View File

@@ -239,13 +239,13 @@ class DocType:
def add_roles(self, pr):
roles_list = ['Accounts Manager', 'Accounts User', 'Blogger', 'HR Manager', 'HR User', 'Maintenance User', 'Maintenance Manager', 'Material Manager', 'Material User', 'Material Master Manager', 'Manufacturing Manager', 'Manufacturing User', 'Projects User', 'Purchase Manager', 'Purchase User', 'Purchase Master Manager', 'Quality Manager', 'Sales Manager', 'Sales User', 'Sales Master Manager', 'Support Manager', 'Support Team', 'System Manager', 'Website Manager']
for r in roles_list:
d = addchild(pr, 'userroles', 'UserRole', 1)
d = addchild(pr, 'userroles', 'UserRole')
d.role = r
d.save(1)
# Add roles to Administrator profile
pr = Document('Profile','Administrator')
for r in roles_list:
d = addchild(pr,'userroles', 'UserRole', 1)
d = addchild(pr,'userroles', 'UserRole')
d.role = r
d.save(1)

View File

@@ -350,7 +350,7 @@ class DocType:
reaches re-order level when %s %s was created""" % (doc_type,doc_name)
indent.save(1)
indent_obj = get_obj('Purchase Request',indent.name,with_children=1)
indent_details_child = addchild(indent_obj.doc,'indent_details','Purchase Request Item',0)
indent_details_child = addchild(indent_obj.doc,'indent_details','Purchase Request Item')
indent_details_child.item_code = self.doc.item_code
indent_details_child.uom = self.doc.stock_uom
indent_details_child.warehouse = self.doc.warehouse

View File

@@ -70,7 +70,8 @@ class DocType:
raise Exception
if not cstr(self.doc.stock_uom) in check_list :
child = addchild( self.doc, 'uom_conversion_details', 'UOM Conversion Detail', 1, self.doclist)
child = addchild( self.doc, 'uom_conversion_details',
'UOM Conversion Detail', self.doclist)
child.uom = self.doc.stock_uom
child.conversion_factor = 1
child.save()

View File

@@ -51,7 +51,8 @@ class DocType:
msgprint("Please enter date of shorter duration as there are too many purchase receipt, hence it cannot be loaded.", raise_exception=1)
for i in pr:
ch = addchild(self.doc, 'lc_pr_details', 'Landed Cost Purchase Receipt', 1, self.doclist)
ch = addchild(self.doc, 'lc_pr_details', 'Landed Cost Purchase Receipt',
self.doclist)
ch.purchase_receipt = i and i['name'] or ''
ch.save()
@@ -62,7 +63,8 @@ class DocType:
idx = 0
landed_cost = sql("select account_head, description from `tabLanded Cost Master Detail` where parent=%s", (self.doc.landed_cost), as_dict = 1)
for cost in landed_cost:
lct = addchild(self.doc, 'landed_cost_details', 'Landed Cost Item', 1, self.doclist)
lct = addchild(self.doc, 'landed_cost_details', 'Landed Cost Item',
self.doclist)
lct.account_head = cost['account_head']
lct.description = cost['description']
@@ -100,7 +102,7 @@ class DocType:
pr_oc_row = sql("select name from `tabPurchase Taxes and Charges` where parent = %s and category = 'Valuation' and add_deduct_tax = 'Add' and charge_type = 'Actual' and account_head = %s",(pr, lc.account_head))
if not pr_oc_row: # add if not exists
ch = addchild(pr_obj.doc, 'purchase_tax_details', 'Purchase Taxes and Charges', 1)
ch = addchild(pr_obj.doc, 'purchase_tax_details', 'Purchase Taxes and Charges')
ch.category = 'Valuation'
ch.add_deduct_tax = 'Add'
ch.charge_type = 'Actual'

View File

@@ -390,7 +390,7 @@ class DocType(TransactionBase):
if i and not sql("select name from `tabPurchase Receipt Item Supplied` where reference_name = '%s' and bom_detail_no = '%s' and parent = '%s' " %(d.name, i[6], self.doc.name)):
rm_child = addchild(self.doc, 'pr_raw_material_details', 'Purchase Receipt Item Supplied', 1, self.doclist)
rm_child = addchild(self.doc, 'pr_raw_material_details', 'Purchase Receipt Item Supplied', self.doclist)
rm_child.reference_name = d.name
rm_child.bom_detail_no = i and i[6] or ''

View File

@@ -52,7 +52,8 @@ class DocType :
def create_item_table(self, det):
self.doclist = self.doc.clear_table(self.doclist, 'return_details', 1)
for i in det:
ch = addchild(self.doc, 'return_details', 'Sales and Purchase Return Item', 1, self.doclist)
ch = addchild(self.doc, 'return_details', 'Sales and Purchase Return Item',
self.doclist)
ch.detail_name = i and i[0] or ''
ch.item_code = i and i[1] or ''
ch.description = i and i[2] or ''

View File

@@ -160,6 +160,7 @@ fld.get_query = function(doc, cdt, cdn) {
return 'SELECT tabItem.name, tabItem.description, tabBin.actual_qty '
+ 'FROM tabItem, tabBin '
+ 'WHERE tabItem.name = tabBin.item_code '
+ 'AND tabItem.is_stock_item = "Yes"'
+ 'AND ifnull(`tabBin`.`actual_qty`,0) > 0 '
+ 'AND tabBin.warehouse="'+ d.s_warehouse +'" '
+ 'AND tabItem.docstatus < 2 '
@@ -171,6 +172,7 @@ fld.get_query = function(doc, cdt, cdn) {
return 'SELECT tabItem.name, tabItem.description '
+ 'FROM tabItem '
+ 'WHERE tabItem.docstatus < 2 '
+ 'AND tabItem.is_stock_item = "Yes"'
+ 'AND (ifnull(`tabItem`.`end_of_life`,"") = "" OR `tabItem`.`end_of_life` > NOW() OR `tabItem`.`end_of_life`="0000-00-00") '
+ 'AND tabItem.%(key)s LIKE "%s" '
+ 'ORDER BY tabItem.name ASC '

View File

@@ -36,7 +36,6 @@ class DocType(TransactionBase):
def validate(self):
self.validate_serial_nos()
pro_obj = self.doc.production_order and \
get_obj('Production Order', self.doc.production_order) or None
@@ -467,7 +466,8 @@ class DocType(TransactionBase):
def add_to_stock_entry_detail(self, source_wh, target_wh, item_dict, bom_no=None):
for d in item_dict:
se_child = addchild(self.doc, 'mtn_details', 'Stock Entry Detail', 0, self.doclist)
se_child = addchild(self.doc, 'mtn_details', 'Stock Entry Detail',
self.doclist)
se_child.s_warehouse = source_wh
se_child.t_warehouse = target_wh
se_child.item_code = cstr(d)
@@ -543,6 +543,6 @@ class DocType(TransactionBase):
@webnotes.whitelist()
def get_production_order_details(production_order):
result = webnotes.conn.sql("""select bom_no,
ifnull(qty, 0) - ifnull(produced_qty, 0) as fg_completed_qty
ifnull(qty, 0) - ifnull(produced_qty, 0) as fg_completed_qty, use_multi_level_bom
from `tabProduction Order` where name = %s""", production_order, as_dict=1)
return result and result[0] or {}

View File

@@ -29,6 +29,14 @@ class DocType:
self.doc = doc
self.doclist = doclist
def validate(self):
self.validate_mandatory()
self.validate_posting_time()
self.validate_item()
self.actual_amt_check()
self.check_stock_frozen_date()
self.scrub_posting_time()
#check for item quantity available in stock
def actual_amt_check(self):
if self.doc.batch_no:
@@ -53,7 +61,9 @@ class DocType:
msgprint("Warehouse: '%s' does not exist in the system. Please check." % self.doc.fields.get(k), raise_exception = 1)
def validate_item(self):
item_det = sql("select name, has_batch_no, docstatus from tabItem where name = '%s'" % self.doc.item_code)
item_det = sql("""select name, has_batch_no, docstatus,
ifnull(is_stock_item, 'No') from tabItem where name=%s""",
self.doc.item_code)
# check item exists
if item_det:
@@ -61,6 +71,10 @@ class DocType:
else:
msgprint("Item: '%s' does not exist in the system. Please check." % self.doc.item_code, raise_exception = 1)
if item_det[3]!='Yes':
webnotes.msgprint("""Item: "%s" is not a Stock Item.""" % self.doc.item_code,
raise_exception=1)
# check if item is trashed
if cint(item_det[2])==2:
msgprint("Item: '%s' is trashed, cannot make a stock transaction against a trashed item" % self.doc.item_code, raise_exception = 1)
@@ -97,11 +111,3 @@ class DocType:
if len(self.doc.posting_time.split(':')) > 2:
self.doc.posting_time = '00:00'
def validate(self):
self.validate_mandatory()
self.validate_posting_time()
self.validate_item()
self.actual_amt_check()
self.check_stock_frozen_date()
self.scrub_posting_time()

View File

@@ -63,7 +63,8 @@ class DocType(TransactionBase):
s_list =[]
s_list = self.create_schedule_list(d.start_date, d.end_date, d.no_of_visits)
for i in range(d.no_of_visits):
child = addchild(self.doc,'maintenance_schedule_detail','Maintenance Schedule Detail',1,self.doclist)
child = addchild(self.doc, 'maintenance_schedule_detail',
'Maintenance Schedule Detail', self.doclist)
child.item_code = d.item_code
child.item_name = d.item_name
child.scheduled_date = s_list[i].strftime('%Y-%m-%d')

View File

@@ -220,7 +220,7 @@ class TransactionBase:
self.doclist = self.doc.clear_table(self.doclist,'sales_team')
idx = 0
for d in webnotes.conn.sql("select sales_person, allocated_percentage, allocated_amount, incentives from `tabSales Team` where parent = '%s'" % name):
ch = addchild(self.doc, 'sales_team', 'Sales Team', 1, self.doclist)
ch = addchild(self.doc, 'sales_team', 'Sales Team', self.doclist)
ch.sales_person = d and cstr(d[0]) or ''
ch.allocated_percentage = d and flt(d[1]) or 0
ch.allocated_amount = d and flt(d[2]) or 0

View File

@@ -11,12 +11,12 @@ max_tickets_per_hour = 200
@webnotes.whitelist(allow_guest=True)
def send_message():
from webnotes.model.doc import Document
args = webnotes.form_dict
d = Document('Support Ticket')
d.subject = webnotes.form_dict.get('subject', 'Website Query')
d.description = webnotes.form_dict.get('message')
d.raised_by = webnotes.form_dict.get('sender')
d.status = webnotes.form_dict.get("status") or "Open"
if not d.description:
webnotes.response["message"] = 'Please write something'