Merge branch 'edge' of github.com:webnotes/erpnext into edge
This commit is contained in:
commit
b7df1af8dc
@ -436,13 +436,15 @@ class DocType(BuyingController):
|
|||||||
# tax table gl entries
|
# tax table gl entries
|
||||||
for tax in getlist(self.doclist, "purchase_tax_details"):
|
for tax in getlist(self.doclist, "purchase_tax_details"):
|
||||||
if tax.category in ("Total", "Valuation and Total") and flt(tax.tax_amount):
|
if tax.category in ("Total", "Valuation and Total") and flt(tax.tax_amount):
|
||||||
valuation_tax += flt(tax.tax_amount)
|
valuation_tax += tax.add_deduct_tax == "Add" \
|
||||||
|
and flt(tax.tax_amount) or -1 * flt(tax.tax_amount)
|
||||||
|
|
||||||
gl_entries.append(
|
gl_entries.append(
|
||||||
self.get_gl_dict({
|
self.get_gl_dict({
|
||||||
"account": tax.account_head,
|
"account": tax.account_head,
|
||||||
"against": self.doc.credit_to,
|
"against": self.doc.credit_to,
|
||||||
"debit": tax.tax_amount,
|
"debit": tax.add_deduct_tax == "Add" and tax.tax_amount or 0,
|
||||||
|
"credit": tax.add_deduct_tax == "Deduct" and tax.tax_amount or 0,
|
||||||
"remarks": self.doc.remarks,
|
"remarks": self.doc.remarks,
|
||||||
"cost_center": tax.cost_center
|
"cost_center": tax.cost_center
|
||||||
}, is_cancel)
|
}, is_cancel)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-01-10 16:34:11",
|
"creation": "2013-01-10 16:34:11",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-01-22 14:47:56",
|
"modified": "2013-02-04 09:52:22",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -26,6 +26,7 @@
|
|||||||
"name": "Purchase Request Item"
|
"name": "Purchase Request Item"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"allow_on_submit": 0,
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"fieldname": "schedule_date",
|
"fieldname": "schedule_date",
|
||||||
"fieldtype": "Date",
|
"fieldtype": "Date",
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
erpnext.updates = [
|
erpnext.updates = [
|
||||||
|
["2nd February, 2013", [
|
||||||
|
"Warehouse: Added table Warehouse User to restrict Warehouse Entry per user.",
|
||||||
|
]],
|
||||||
["28st January, 2013", [
|
["28st January, 2013", [
|
||||||
"List Views are now configurable: To set list views, check 'In List View' in Setup > Customize Form View in the fields table.",
|
"List Views are now configurable: To set list views, check 'In List View' in Setup > Customize Form View in the fields table.",
|
||||||
]],
|
]],
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-01-10 16:34:14",
|
"creation": "2013-01-10 16:34:14",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-01-29 17:43:18",
|
"modified": "2013-02-04 09:22:51",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "harshada@webnotestech.com"
|
"owner": "harshada@webnotestech.com"
|
||||||
},
|
},
|
||||||
|
5
startup/query_handlers.py
Normal file
5
startup/query_handlers.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
standard_queries = {
|
||||||
|
"Warehouse": "stock.utils.get_warehouse_list"
|
||||||
|
}
|
@ -1,8 +1,8 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"creation": "2013-01-23 19:57:19",
|
"creation": "2013-01-29 17:54:12",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-01-29 16:28:03",
|
"modified": "2013-02-02 19:18:38",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -862,8 +862,9 @@
|
|||||||
"description": "% of materials billed against this Delivery Note",
|
"description": "% of materials billed against this Delivery Note",
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"fieldname": "per_billed",
|
"fieldname": "per_billed",
|
||||||
"fieldtype": "Float",
|
"fieldtype": "Percent",
|
||||||
"in_filter": 1,
|
"in_filter": 1,
|
||||||
|
"in_list_view": 1,
|
||||||
"label": "% Amount Billed",
|
"label": "% Amount Billed",
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldname": "per_billed",
|
"oldfieldname": "per_billed",
|
||||||
@ -888,8 +889,9 @@
|
|||||||
"description": "% of materials delivered against this Delivery Note",
|
"description": "% of materials delivered against this Delivery Note",
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"fieldname": "per_installed",
|
"fieldname": "per_installed",
|
||||||
"fieldtype": "Float",
|
"fieldtype": "Percent",
|
||||||
"in_filter": 1,
|
"in_filter": 1,
|
||||||
|
"in_list_view": 1,
|
||||||
"label": "% Installed",
|
"label": "% Installed",
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldname": "per_installed",
|
"oldfieldname": "per_installed",
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-01-22 15:24:18",
|
"creation": "2013-01-22 15:24:18",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-01-29 16:28:01",
|
"modified": "2013-02-02 19:09:37",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -627,7 +627,8 @@
|
|||||||
"description": "% of materials billed against this Purchase Receipt",
|
"description": "% of materials billed against this Purchase Receipt",
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"fieldname": "per_billed",
|
"fieldname": "per_billed",
|
||||||
"fieldtype": "Float",
|
"fieldtype": "Percent",
|
||||||
|
"in_list_view": 1,
|
||||||
"label": "% Billed",
|
"label": "% Billed",
|
||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldname": "per_billed",
|
"oldfieldname": "per_billed",
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import webnotes
|
import webnotes
|
||||||
|
from webnotes import _
|
||||||
|
|
||||||
from webnotes.utils import cint, flt, getdate
|
from webnotes.utils import cint, flt, getdate
|
||||||
|
|
||||||
@ -33,6 +34,7 @@ class DocType:
|
|||||||
def validate(self):
|
def validate(self):
|
||||||
self.validate_mandatory()
|
self.validate_mandatory()
|
||||||
self.validate_item()
|
self.validate_item()
|
||||||
|
self.validate_warehouse_user()
|
||||||
self.actual_amt_check()
|
self.actual_amt_check()
|
||||||
self.check_stock_frozen_date()
|
self.check_stock_frozen_date()
|
||||||
self.scrub_posting_time()
|
self.scrub_posting_time()
|
||||||
@ -51,6 +53,15 @@ class DocType:
|
|||||||
|
|
||||||
self.doc.fields.pop('batch_bal')
|
self.doc.fields.pop('batch_bal')
|
||||||
|
|
||||||
|
def validate_warehouse_user(self):
|
||||||
|
if webnotes.session.user=="Administrator":
|
||||||
|
return
|
||||||
|
warehouse_users = [p[0] for p in webnotes.conn.sql("""select user from `tabWarehouse User`
|
||||||
|
where parent=%s""", self.doc.warehouse)]
|
||||||
|
|
||||||
|
if warehouse_users and not webnotes.session.user in warehouse_users:
|
||||||
|
webnotes.msgprint(_("User not allowed entry in the Warehouse") \
|
||||||
|
+ ": " + webnotes.session.user + " / " + self.doc.warehouse, raise_exception = 1)
|
||||||
|
|
||||||
def validate_mandatory(self):
|
def validate_mandatory(self):
|
||||||
mandatory = ['warehouse','posting_date','voucher_type','voucher_no','actual_qty','company']
|
mandatory = ['warehouse','posting_date','voucher_type','voucher_no','actual_qty','company']
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-01-10 16:34:30",
|
"creation": "2013-01-10 16:34:30",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-01-29 13:29:21",
|
"modified": "2013-02-04 11:35:53",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -80,6 +80,21 @@
|
|||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"search_index": 1
|
"search_index": 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"doctype": "DocField",
|
||||||
|
"fieldname": "column_break_4",
|
||||||
|
"fieldtype": "Column Break",
|
||||||
|
"permlevel": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "If set, data entry is only allowed for specified users. Else, entry is allowed for all users with requisite permissions.",
|
||||||
|
"doctype": "DocField",
|
||||||
|
"fieldname": "warehouse_users",
|
||||||
|
"fieldtype": "Table",
|
||||||
|
"label": "Warehouse Users",
|
||||||
|
"options": "Warehouse User",
|
||||||
|
"permlevel": 0
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"description": "For Reference Only.",
|
"description": "For Reference Only.",
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
|
0
stock/doctype/warehouse_user/__init__.py
Normal file
0
stock/doctype/warehouse_user/__init__.py
Normal file
8
stock/doctype/warehouse_user/warehouse_user.py
Normal file
8
stock/doctype/warehouse_user/warehouse_user.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
import webnotes
|
||||||
|
|
||||||
|
class DocType:
|
||||||
|
def __init__(self, d, dl):
|
||||||
|
self.doc, self.doclist = d, dl
|
36
stock/doctype/warehouse_user/warehouse_user.txt
Normal file
36
stock/doctype/warehouse_user/warehouse_user.txt
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"creation": "2013-02-04 11:33:57",
|
||||||
|
"docstatus": 0,
|
||||||
|
"modified": "2013-02-04 11:36:16",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"owner": "Administrator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"doctype": "DocType",
|
||||||
|
"document_type": "Other",
|
||||||
|
"istable": 1,
|
||||||
|
"module": "Stock",
|
||||||
|
"name": "__common__"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"doctype": "DocField",
|
||||||
|
"fieldname": "user",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "User",
|
||||||
|
"name": "__common__",
|
||||||
|
"options": "Profile",
|
||||||
|
"parent": "Warehouse User",
|
||||||
|
"parentfield": "fields",
|
||||||
|
"parenttype": "DocType",
|
||||||
|
"permlevel": 0,
|
||||||
|
"width": "200px"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"doctype": "DocType",
|
||||||
|
"name": "Warehouse User"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"doctype": "DocField"
|
||||||
|
}
|
||||||
|
]
|
@ -208,7 +208,7 @@ erpnext.StockLedger = erpnext.StockGridReport.extend({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(me.item_code != me.item_code_default && !me.voucher_no) {
|
if(me.item_code && !me.voucher_no) {
|
||||||
var closing = {
|
var closing = {
|
||||||
item_code: "On " + dateutil.str_to_user(this.to_date),
|
item_code: "On " + dateutil.str_to_user(this.to_date),
|
||||||
balance: (out.length ? out[out.length-1].balance : 0), qty: 0,
|
balance: (out.length ? out[out.length-1].balance : 0), qty: 0,
|
||||||
|
@ -147,3 +147,20 @@ def get_valid_serial_nos(sr_nos, qty=0, item_code=''):
|
|||||||
raise_exception=1)
|
raise_exception=1)
|
||||||
|
|
||||||
return valid_serial_nos
|
return valid_serial_nos
|
||||||
|
|
||||||
|
def get_warehouse_list(doctype, txt, searchfield, start, page_len):
|
||||||
|
"""used in search queries"""
|
||||||
|
wlist = []
|
||||||
|
for w in webnotes.conn.sql_list("""select name from tabWarehouse
|
||||||
|
where name like '%%%s%%'""" % txt):
|
||||||
|
if webnotes.session.user=="Administrator":
|
||||||
|
wlist.append([w])
|
||||||
|
else:
|
||||||
|
warehouse_users = webnotes.conn.sql_list("""select user from `tabWarehouse User`
|
||||||
|
where parent=%s""", w)
|
||||||
|
if not warehouse_users:
|
||||||
|
wlist.append([w])
|
||||||
|
elif webnotes.session.user in warehouse_users:
|
||||||
|
wlist.append([w])
|
||||||
|
return wlist
|
||||||
|
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-01-10 16:34:31",
|
"creation": "2013-01-10 16:34:31",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-01-22 14:47:02",
|
"modified": "2013-02-04 10:30:18",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -70,7 +70,7 @@
|
|||||||
"oldfieldname": "actual_date",
|
"oldfieldname": "actual_date",
|
||||||
"oldfieldtype": "Date",
|
"oldfieldtype": "Date",
|
||||||
"print_hide": 1,
|
"print_hide": 1,
|
||||||
"read_only": 1,
|
"read_only": 0,
|
||||||
"report_hide": 1
|
"report_hide": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -25,10 +25,12 @@ def get_list(arg=None):
|
|||||||
webnotes.form_dict['user'] = webnotes.session['user']
|
webnotes.form_dict['user'] = webnotes.session['user']
|
||||||
|
|
||||||
# set all messages as read
|
# set all messages as read
|
||||||
|
webnotes.conn.begin()
|
||||||
webnotes.conn.sql("""UPDATE `tabComment`
|
webnotes.conn.sql("""UPDATE `tabComment`
|
||||||
set docstatus = 1 where comment_doctype in ('My Company', 'Message')
|
set docstatus = 1 where comment_doctype in ('My Company', 'Message')
|
||||||
and comment_docname = %s
|
and comment_docname = %s
|
||||||
""", webnotes.user.name)
|
""", webnotes.user.name)
|
||||||
|
webnotes.conn.commit()
|
||||||
|
|
||||||
if webnotes.form_dict['contact'] == webnotes.session['user']:
|
if webnotes.form_dict['contact'] == webnotes.session['user']:
|
||||||
# return messages
|
# return messages
|
||||||
|
Loading…
x
Reference in New Issue
Block a user