rename Profile to User frappe/frappe#470
This commit is contained in:
parent
c379c78fec
commit
7c932003ed
@ -74,5 +74,5 @@ cur_frm.fields_dict['select_print_heading'].get_query = function(doc, cdt, cdn)
|
|||||||
|
|
||||||
|
|
||||||
cur_frm.fields_dict.user.get_query = function(doc,cdt,cdn) {
|
cur_frm.fields_dict.user.get_query = function(doc,cdt,cdn) {
|
||||||
return{ query:"frappe.core.doctype.profile.profile.profile_query"}
|
return{ query:"frappe.core.doctype.user.user.user_query"}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-05-24 12:15:51",
|
"creation": "2013-05-24 12:15:51",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2014-01-29 13:08:24",
|
"modified": "2014-01-29 13:08:25",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -48,7 +48,7 @@
|
|||||||
"label": "User",
|
"label": "User",
|
||||||
"oldfieldname": "user",
|
"oldfieldname": "user",
|
||||||
"oldfieldtype": "Link",
|
"oldfieldtype": "Link",
|
||||||
"options": "Profile",
|
"options": "User",
|
||||||
"read_only": 0
|
"read_only": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -744,9 +744,9 @@ def send_notification(new_rv):
|
|||||||
message = get_html(new_rv.doc, new_rv.doclist, "SalesInvoice"))
|
message = get_html(new_rv.doc, new_rv.doclist, "SalesInvoice"))
|
||||||
|
|
||||||
def notify_errors(inv, customer, owner):
|
def notify_errors(inv, customer, owner):
|
||||||
from frappe.profile import get_system_managers
|
from frappe.utils.user import get_system_managers
|
||||||
|
|
||||||
frappe.sendmail(recipients=get_system_managers() + [frappe.db.get_value("Profile", owner, "email")],
|
frappe.sendmail(recipients=get_system_managers() + [frappe.db.get_value("User", owner, "email")],
|
||||||
subject="[Urgent] Error while creating recurring invoice for %s" % inv,
|
subject="[Urgent] Error while creating recurring invoice for %s" % inv,
|
||||||
message = frappe.get_template("template/emails/recurring_invoice_failed.html").render({
|
message = frappe.get_template("template/emails/recurring_invoice_failed.html").render({
|
||||||
"name": inv,
|
"name": inv,
|
||||||
|
@ -42,7 +42,7 @@ pscript['onload_Accounts Browser'] = function(wrapper){
|
|||||||
'</ol>'+
|
'</ol>'+
|
||||||
'<p>'+frappe._('Please setup your chart of accounts before you start Accounting Entries')+'</p></div>').appendTo(main);
|
'<p>'+frappe._('Please setup your chart of accounts before you start Accounting Entries')+'</p></div>').appendTo(main);
|
||||||
|
|
||||||
if (frappe.boot.profile.can_create.indexOf("Company") !== -1) {
|
if (frappe.boot.user.can_create.indexOf("Company") !== -1) {
|
||||||
wrapper.appframe.add_button(frappe._('New Company'), function() { newdoc('Company'); },
|
wrapper.appframe.add_button(frappe._('New Company'), function() { newdoc('Company'); },
|
||||||
'icon-plus');
|
'icon-plus');
|
||||||
}
|
}
|
||||||
@ -137,7 +137,7 @@ erpnext.AccountsChart = Class.extend({
|
|||||||
{
|
{
|
||||||
condition: function(node) {
|
condition: function(node) {
|
||||||
return !node.root && me.ctype === 'Account'
|
return !node.root && me.ctype === 'Account'
|
||||||
&& frappe.boot.profile.can_read.indexOf("GL Entry") !== -1
|
&& frappe.boot.user.can_read.indexOf("GL Entry") !== -1
|
||||||
},
|
},
|
||||||
label: __("View Ledger"),
|
label: __("View Ledger"),
|
||||||
click: function(node, btn) {
|
click: function(node, btn) {
|
||||||
|
@ -23,7 +23,7 @@ frappe.pages['activity'].onload = function(wrapper) {
|
|||||||
wrapper.appframe.set_title_right("Refresh", function() { list.run(); });
|
wrapper.appframe.set_title_right("Refresh", function() { list.run(); });
|
||||||
|
|
||||||
// Build Report Button
|
// Build Report Button
|
||||||
if(frappe.boot.profile.can_get_report.indexOf("Feed")!=-1) {
|
if(frappe.boot.user.can_get_report.indexOf("Feed")!=-1) {
|
||||||
wrapper.appframe.add_primary_action(frappe._('Build Report'), function() {
|
wrapper.appframe.add_primary_action(frappe._('Build Report'), function() {
|
||||||
frappe.set_route('Report', "Feed");
|
frappe.set_route('Report', "Feed");
|
||||||
}, 'icon-th')
|
}, 'icon-th')
|
||||||
|
@ -5,7 +5,7 @@ frappe.provide("erpnext.hr");
|
|||||||
erpnext.hr.EmployeeController = frappe.ui.form.Controller.extend({
|
erpnext.hr.EmployeeController = frappe.ui.form.Controller.extend({
|
||||||
setup: function() {
|
setup: function() {
|
||||||
this.frm.fields_dict.user_id.get_query = function(doc, cdt, cdn) {
|
this.frm.fields_dict.user_id.get_query = function(doc, cdt, cdn) {
|
||||||
return { query:"frappe.core.doctype.profile.profile.profile_query"} }
|
return { query:"frappe.core.doctype.user.user.user_query"} }
|
||||||
this.frm.fields_dict.reports_to.get_query = function(doc, cdt, cdn) {
|
this.frm.fields_dict.reports_to.get_query = function(doc, cdt, cdn) {
|
||||||
return { query: "erpnext.controllers.queries.employee_query"} }
|
return { query: "erpnext.controllers.queries.employee_query"} }
|
||||||
},
|
},
|
||||||
@ -33,8 +33,8 @@ erpnext.hr.EmployeeController = frappe.ui.form.Controller.extend({
|
|||||||
callback: function(r) {
|
callback: function(r) {
|
||||||
var df = frappe.meta.get_docfield("Employee Leave Approver", "leave_approver",
|
var df = frappe.meta.get_docfield("Employee Leave Approver", "leave_approver",
|
||||||
me.frm.doc.name);
|
me.frm.doc.name);
|
||||||
df.options = $.map(r.message, function(profile) {
|
df.options = $.map(r.message, function(user) {
|
||||||
return {value: profile, label: frappe.user_info(profile).fullname};
|
return {value: user, label: frappe.user_info(user).fullname};
|
||||||
});
|
});
|
||||||
me.frm.fields_dict.employee_leave_approvers.refresh();
|
me.frm.fields_dict.employee_leave_approvers.refresh();
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ class DocType(DocListController):
|
|||||||
if self.doc.user_id:
|
if self.doc.user_id:
|
||||||
self.restrict_user()
|
self.restrict_user()
|
||||||
self.update_user_default()
|
self.update_user_default()
|
||||||
self.update_profile()
|
self.update_user()
|
||||||
|
|
||||||
self.update_dob_event()
|
self.update_dob_event()
|
||||||
self.restrict_leave_approver()
|
self.restrict_leave_approver()
|
||||||
@ -71,47 +71,47 @@ class DocType(DocListController):
|
|||||||
|
|
||||||
frappe.defaults.add_default("Employee", self.doc.name, user, "Restriction")
|
frappe.defaults.add_default("Employee", self.doc.name, user, "Restriction")
|
||||||
|
|
||||||
def update_profile(self):
|
def update_user(self):
|
||||||
# add employee role if missing
|
# add employee role if missing
|
||||||
if not "Employee" in frappe.db.sql_list("""select role from tabUserRole
|
if not "Employee" in frappe.db.sql_list("""select role from tabUserRole
|
||||||
where parent=%s""", self.doc.user_id):
|
where parent=%s""", self.doc.user_id):
|
||||||
from frappe.profile import add_role
|
from frappe.utils.user import add_role
|
||||||
add_role(self.doc.user_id, "Employee")
|
add_role(self.doc.user_id, "Employee")
|
||||||
|
|
||||||
profile_wrapper = frappe.bean("Profile", self.doc.user_id)
|
user_wrapper = frappe.bean("User", self.doc.user_id)
|
||||||
|
|
||||||
# copy details like Fullname, DOB and Image to Profile
|
# copy details like Fullname, DOB and Image to User
|
||||||
if self.doc.employee_name:
|
if self.doc.employee_name:
|
||||||
employee_name = self.doc.employee_name.split(" ")
|
employee_name = self.doc.employee_name.split(" ")
|
||||||
if len(employee_name) >= 3:
|
if len(employee_name) >= 3:
|
||||||
profile_wrapper.doc.last_name = " ".join(employee_name[2:])
|
user_wrapper.doc.last_name = " ".join(employee_name[2:])
|
||||||
profile_wrapper.doc.middle_name = employee_name[1]
|
user_wrapper.doc.middle_name = employee_name[1]
|
||||||
elif len(employee_name) == 2:
|
elif len(employee_name) == 2:
|
||||||
profile_wrapper.doc.last_name = employee_name[1]
|
user_wrapper.doc.last_name = employee_name[1]
|
||||||
|
|
||||||
profile_wrapper.doc.first_name = employee_name[0]
|
user_wrapper.doc.first_name = employee_name[0]
|
||||||
|
|
||||||
if self.doc.date_of_birth:
|
if self.doc.date_of_birth:
|
||||||
profile_wrapper.doc.birth_date = self.doc.date_of_birth
|
user_wrapper.doc.birth_date = self.doc.date_of_birth
|
||||||
|
|
||||||
if self.doc.gender:
|
if self.doc.gender:
|
||||||
profile_wrapper.doc.gender = self.doc.gender
|
user_wrapper.doc.gender = self.doc.gender
|
||||||
|
|
||||||
if self.doc.image:
|
if self.doc.image:
|
||||||
if not profile_wrapper.doc.user_image == self.doc.image:
|
if not user_wrapper.doc.user_image == self.doc.image:
|
||||||
profile_wrapper.doc.user_image = self.doc.image
|
user_wrapper.doc.user_image = self.doc.image
|
||||||
try:
|
try:
|
||||||
frappe.doc({
|
frappe.doc({
|
||||||
"doctype": "File Data",
|
"doctype": "File Data",
|
||||||
"file_name": self.doc.image,
|
"file_name": self.doc.image,
|
||||||
"attached_to_doctype": "Profile",
|
"attached_to_doctype": "User",
|
||||||
"attached_to_name": self.doc.user_id
|
"attached_to_name": self.doc.user_id
|
||||||
}).insert()
|
}).insert()
|
||||||
except frappe.DuplicateEntryError, e:
|
except frappe.DuplicateEntryError, e:
|
||||||
# already exists
|
# already exists
|
||||||
pass
|
pass
|
||||||
profile_wrapper.ignore_permissions = True
|
user_wrapper.ignore_permissions = True
|
||||||
profile_wrapper.save()
|
user_wrapper.save()
|
||||||
|
|
||||||
def validate_date(self):
|
def validate_date(self):
|
||||||
if self.doc.date_of_birth and self.doc.date_of_joining and getdate(self.doc.date_of_birth) >= getdate(self.doc.date_of_joining):
|
if self.doc.date_of_birth and self.doc.date_of_joining and getdate(self.doc.date_of_birth) >= getdate(self.doc.date_of_joining):
|
||||||
@ -143,7 +143,7 @@ class DocType(DocListController):
|
|||||||
throw(_("Please enter relieving date."))
|
throw(_("Please enter relieving date."))
|
||||||
|
|
||||||
def validate_for_enabled_user_id(self):
|
def validate_for_enabled_user_id(self):
|
||||||
enabled = frappe.db.sql("""select name from `tabProfile` where
|
enabled = frappe.db.sql("""select name from `tabUser` where
|
||||||
name=%s and enabled=1""", self.doc.user_id)
|
name=%s and enabled=1""", self.doc.user_id)
|
||||||
if not enabled:
|
if not enabled:
|
||||||
throw("{id}: {user_id} {msg}".format(**{
|
throw("{id}: {user_id} {msg}".format(**{
|
||||||
@ -164,11 +164,11 @@ class DocType(DocListController):
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
def validate_employee_leave_approver(self):
|
def validate_employee_leave_approver(self):
|
||||||
from frappe.profile import Profile
|
from frappe.utils.user import User
|
||||||
from erpnext.hr.doctype.leave_application.leave_application import InvalidLeaveApproverError
|
from erpnext.hr.doctype.leave_application.leave_application import InvalidLeaveApproverError
|
||||||
|
|
||||||
for l in self.doclist.get({"parentfield": "employee_leave_approvers"}):
|
for l in self.doclist.get({"parentfield": "employee_leave_approvers"}):
|
||||||
if "Leave Approver" not in Profile(l.leave_approver).get_roles():
|
if "Leave Approver" not in User(l.leave_approver).get_roles():
|
||||||
throw(_("Invalid Leave Approver") + ": \"" + l.leave_approver + "\"",
|
throw(_("Invalid Leave Approver") + ": \"" + l.leave_approver + "\"",
|
||||||
exc=InvalidLeaveApproverError)
|
exc=InvalidLeaveApproverError)
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-03-07 09:04:18",
|
"creation": "2013-03-07 09:04:18",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2014-02-03 18:06:03",
|
"modified": "2014-02-03 18:06:04",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -126,7 +126,7 @@
|
|||||||
"fieldname": "user_id",
|
"fieldname": "user_id",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"label": "User ID",
|
"label": "User ID",
|
||||||
"options": "Profile"
|
"options": "User"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
|
@ -16,8 +16,8 @@ cur_frm.cscript.onload = function(doc, dt, dn) {
|
|||||||
method: "erpnext.hr.utils.get_leave_approver_list",
|
method: "erpnext.hr.utils.get_leave_approver_list",
|
||||||
callback: function(r) {
|
callback: function(r) {
|
||||||
cur_frm.set_df_property("leave_approver", "options", $.map(r.message,
|
cur_frm.set_df_property("leave_approver", "options", $.map(r.message,
|
||||||
function(profile) {
|
function(user) {
|
||||||
return {value: profile, label: frappe.user_info(profile).fullname};
|
return {value: user, label: frappe.user_info(user).fullname};
|
||||||
}));
|
}));
|
||||||
if(leave_approver) cur_frm.set_value("leave_approver", leave_approver);
|
if(leave_approver) cur_frm.set_value("leave_approver", leave_approver);
|
||||||
cur_frm.cscript.get_leave_balance(cur_frm.doc);
|
cur_frm.cscript.get_leave_balance(cur_frm.doc);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-02-20 11:18:11",
|
"creation": "2013-02-20 11:18:11",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2014-01-20 17:48:55",
|
"modified": "2014-01-20 17:48:56",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -55,7 +55,7 @@
|
|||||||
"fieldname": "leave_approver",
|
"fieldname": "leave_approver",
|
||||||
"fieldtype": "Select",
|
"fieldtype": "Select",
|
||||||
"label": "Leave Approver",
|
"label": "Leave Approver",
|
||||||
"options": "link:Profile",
|
"options": "link:User",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -41,7 +41,7 @@ class TestLeaveApplication(unittest.TestCase):
|
|||||||
def test_block_list(self):
|
def test_block_list(self):
|
||||||
self._clear_roles()
|
self._clear_roles()
|
||||||
|
|
||||||
from frappe.profile import add_role
|
from frappe.utils.user import add_role
|
||||||
add_role("test1@example.com", "HR User")
|
add_role("test1@example.com", "HR User")
|
||||||
|
|
||||||
frappe.db.set_value("Department", "_Test Department",
|
frappe.db.set_value("Department", "_Test Department",
|
||||||
@ -64,7 +64,7 @@ class TestLeaveApplication(unittest.TestCase):
|
|||||||
self._clear_roles()
|
self._clear_roles()
|
||||||
self._clear_applications()
|
self._clear_applications()
|
||||||
|
|
||||||
from frappe.profile import add_role
|
from frappe.utils.user import add_role
|
||||||
add_role("test@example.com", "Employee")
|
add_role("test@example.com", "Employee")
|
||||||
add_role("test2@example.com", "Leave Approver")
|
add_role("test2@example.com", "Leave Approver")
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ class TestLeaveApplication(unittest.TestCase):
|
|||||||
def test_global_block_list(self):
|
def test_global_block_list(self):
|
||||||
self._clear_roles()
|
self._clear_roles()
|
||||||
|
|
||||||
from frappe.profile import add_role
|
from frappe.utils.user import add_role
|
||||||
add_role("test1@example.com", "Employee")
|
add_role("test1@example.com", "Employee")
|
||||||
add_role("test@example.com", "Leave Approver")
|
add_role("test@example.com", "Leave Approver")
|
||||||
|
|
||||||
@ -105,7 +105,7 @@ class TestLeaveApplication(unittest.TestCase):
|
|||||||
def test_leave_approval(self):
|
def test_leave_approval(self):
|
||||||
self._clear_roles()
|
self._clear_roles()
|
||||||
|
|
||||||
from frappe.profile import add_role
|
from frappe.utils.user import add_role
|
||||||
add_role("test@example.com", "Employee")
|
add_role("test@example.com", "Employee")
|
||||||
add_role("test1@example.com", "Leave Approver")
|
add_role("test1@example.com", "Leave Approver")
|
||||||
add_role("test2@example.com", "Leave Approver")
|
add_role("test2@example.com", "Leave Approver")
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-02-22 01:27:47",
|
"creation": "2013-02-22 01:27:47",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-12-20 19:23:19",
|
"modified": "2013-12-20 19:23:18",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -19,7 +19,7 @@
|
|||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"label": "Allow User",
|
"label": "Allow User",
|
||||||
"name": "__common__",
|
"name": "__common__",
|
||||||
"options": "Profile",
|
"options": "User",
|
||||||
"parent": "Leave Block List Allow",
|
"parent": "Leave Block List Allow",
|
||||||
"parentfield": "fields",
|
"parentfield": "fields",
|
||||||
"parenttype": "DocType",
|
"parenttype": "DocType",
|
||||||
|
@ -6,8 +6,8 @@ import frappe
|
|||||||
|
|
||||||
def execute():
|
def execute():
|
||||||
from frappe.core.page.user_properties import user_properties
|
from frappe.core.page.user_properties import user_properties
|
||||||
for warehouse, profile in frappe.db.sql("""select parent, user from `tabWarehouse User`"""):
|
for warehouse, user in frappe.db.sql("""select parent, user from `tabWarehouse User`"""):
|
||||||
user_properties.add(profile, "Warehouse", warehouse)
|
user_properties.add(user, "Warehouse", warehouse)
|
||||||
|
|
||||||
frappe.delete_doc("DocType", "Warehouse User")
|
frappe.delete_doc("DocType", "Warehouse User")
|
||||||
frappe.reload_doc("stock", "doctype", "warehouse")
|
frappe.reload_doc("stock", "doctype", "warehouse")
|
@ -42,10 +42,10 @@ def update_user_match():
|
|||||||
meta = frappe.get_doctype(doctype)
|
meta = frappe.get_doctype(doctype)
|
||||||
|
|
||||||
# for each user with roles of this doctype, check if match condition applies
|
# for each user with roles of this doctype, check if match condition applies
|
||||||
for profile in frappe.db.sql_list("""select name from `tabProfile`
|
for user in frappe.db.sql_list("""select name from `tabUser`
|
||||||
where enabled=1 and user_type='System User'"""):
|
where enabled=1 and user_type='System User'"""):
|
||||||
|
|
||||||
user_roles = frappe.get_roles(profile)
|
user_roles = frappe.get_roles(user)
|
||||||
|
|
||||||
perms = meta.get({"doctype": "DocPerm", "permlevel": 0,
|
perms = meta.get({"doctype": "DocPerm", "permlevel": 0,
|
||||||
"role": ["in", [["All"] + user_roles]], "read": 1})
|
"role": ["in", [["All"] + user_roles]], "read": 1})
|
||||||
@ -69,9 +69,9 @@ def update_user_match():
|
|||||||
# add that doc's restriction to that user
|
# add that doc's restriction to that user
|
||||||
for match in user_matches:
|
for match in user_matches:
|
||||||
for name in frappe.db.sql_list("""select name from `tab{doctype}`
|
for name in frappe.db.sql_list("""select name from `tab{doctype}`
|
||||||
where `{field}`=%s""".format(doctype=doctype, field=match.split(":")[0]), profile):
|
where `{field}`=%s""".format(doctype=doctype, field=match.split(":")[0]), user):
|
||||||
|
|
||||||
frappe.defaults.add_default(doctype, name, profile, "Restriction")
|
frappe.defaults.add_default(doctype, name, user, "Restriction")
|
||||||
|
|
||||||
def add_employee_restrictions_to_leave_approver():
|
def add_employee_restrictions_to_leave_approver():
|
||||||
from frappe.core.page.user_properties import user_properties
|
from frappe.core.page.user_properties import user_properties
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-03-05 09:11:06",
|
"creation": "2013-03-05 09:11:06",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-12-20 19:21:53",
|
"modified": "2013-12-20 19:21:54",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -40,7 +40,7 @@
|
|||||||
"fieldname": "created_by",
|
"fieldname": "created_by",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"label": "Created By",
|
"label": "Created By",
|
||||||
"options": "Profile",
|
"options": "User",
|
||||||
"read_only": 1
|
"read_only": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -15,7 +15,7 @@ def execute(filters=None):
|
|||||||
"To Datetime::140", "Hours::70", "Activity Type::120", "Task:Link/Task:150",
|
"To Datetime::140", "Hours::70", "Activity Type::120", "Task:Link/Task:150",
|
||||||
"Task Subject::180", "Project:Link/Project:120", "Status::70"]
|
"Task Subject::180", "Project:Link/Project:120", "Status::70"]
|
||||||
|
|
||||||
profile_map = get_profile_map()
|
user_map = get_user_map()
|
||||||
task_map = get_task_map()
|
task_map = get_task_map()
|
||||||
|
|
||||||
conditions = build_conditions(filters)
|
conditions = build_conditions(filters)
|
||||||
@ -23,17 +23,17 @@ def execute(filters=None):
|
|||||||
where docstatus < 2 %s order by owner asc""" % (conditions, ), filters, as_dict=1)
|
where docstatus < 2 %s order by owner asc""" % (conditions, ), filters, as_dict=1)
|
||||||
|
|
||||||
if time_logs:
|
if time_logs:
|
||||||
profiles = [time_logs[0].owner]
|
users = [time_logs[0].owner]
|
||||||
|
|
||||||
data = []
|
data = []
|
||||||
total_hours = total_employee_hours = count = 0
|
total_hours = total_employee_hours = count = 0
|
||||||
for tl in time_logs:
|
for tl in time_logs:
|
||||||
if tl.owner not in profiles:
|
if tl.owner not in users:
|
||||||
profiles.append(tl.owner)
|
users.append(tl.owner)
|
||||||
data.append(["", "", "", "Total", total_employee_hours, "", "", "", "", ""])
|
data.append(["", "", "", "Total", total_employee_hours, "", "", "", "", ""])
|
||||||
total_employee_hours = 0
|
total_employee_hours = 0
|
||||||
|
|
||||||
data.append([tl.name, profile_map[tl.owner], tl.from_time, tl.to_time, tl.hours,
|
data.append([tl.name, user_map[tl.owner], tl.from_time, tl.to_time, tl.hours,
|
||||||
tl.activity_type, tl.task, task_map.get(tl.task), tl.project, tl.status])
|
tl.activity_type, tl.task, task_map.get(tl.task), tl.project, tl.status])
|
||||||
|
|
||||||
count += 1
|
count += 1
|
||||||
@ -48,15 +48,15 @@ def execute(filters=None):
|
|||||||
|
|
||||||
return columns, data
|
return columns, data
|
||||||
|
|
||||||
def get_profile_map():
|
def get_user_map():
|
||||||
profiles = frappe.db.sql("""select name,
|
users = frappe.db.sql("""select name,
|
||||||
concat(first_name, if(last_name, (' ' + last_name), '')) as fullname
|
concat(first_name, if(last_name, (' ' + last_name), '')) as fullname
|
||||||
from tabProfile""", as_dict=1)
|
from tabUser""", as_dict=1)
|
||||||
profile_map = {}
|
user_map = {}
|
||||||
for p in profiles:
|
for p in users:
|
||||||
profile_map.setdefault(p.name, []).append(p.fullname)
|
user_map.setdefault(p.name, []).append(p.fullname)
|
||||||
|
|
||||||
return profile_map
|
return user_map
|
||||||
|
|
||||||
def get_task_map():
|
def get_task_map():
|
||||||
tasks = frappe.db.sql("""select name, subject from tabTask""", as_dict=1)
|
tasks = frappe.db.sql("""select name, subject from tabTask""", as_dict=1)
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||||
// License: GNU General Public License v3. See license.txt
|
// License: GNU General Public License v3. See license.txt
|
||||||
|
|
||||||
// searches for enabled profiles
|
// searches for enabled users
|
||||||
frappe.provide("erpnext.queries");
|
frappe.provide("erpnext.queries");
|
||||||
$.extend(erpnext.queries, {
|
$.extend(erpnext.queries, {
|
||||||
profile: function() {
|
user: function() {
|
||||||
return { query: "frappe.core.doctype.profile.profile.profile_query" };
|
return { query: "frappe.core.doctype.user.user.user_query" };
|
||||||
},
|
},
|
||||||
|
|
||||||
lead: function() {
|
lead: function() {
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
frappe.provide('erpnext.toolbar');
|
frappe.provide('erpnext.toolbar');
|
||||||
|
|
||||||
erpnext.toolbar.setup = function() {
|
erpnext.toolbar.setup = function() {
|
||||||
// profile
|
// user
|
||||||
var $user = $('#toolbar-user');
|
var $user = $('#toolbar-user');
|
||||||
$user.append('<li><a href="#Form/Profile/'+user+'"><i class="icon-fixed-width icon-user"></i> '
|
$user.append('<li><a href="#Form/User/'+user+'"><i class="icon-fixed-width icon-user"></i> '
|
||||||
+frappe._("My Settings")+'...</a></li>');
|
+frappe._("My Settings")+'...</a></li>');
|
||||||
$user.append('<li class="divider"></li>');
|
$user.append('<li class="divider"></li>');
|
||||||
$user.append('<li><a href="https://erpnext.com/manual" target="_blank">\
|
$user.append('<li><a href="https://erpnext.com/manual" target="_blank">\
|
||||||
|
@ -12,14 +12,14 @@ erpnext.LeadController = frappe.ui.form.Controller.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
onload: function() {
|
onload: function() {
|
||||||
if(cur_frm.fields_dict.lead_owner.df.options.match(/^Profile/)) {
|
if(cur_frm.fields_dict.lead_owner.df.options.match(/^User/)) {
|
||||||
cur_frm.fields_dict.lead_owner.get_query = function(doc, cdt, cdn) {
|
cur_frm.fields_dict.lead_owner.get_query = function(doc, cdt, cdn) {
|
||||||
return { query:"frappe.core.doctype.profile.profile.profile_query" } }
|
return { query:"frappe.core.doctype.user.user.user_query" } }
|
||||||
}
|
}
|
||||||
|
|
||||||
if(cur_frm.fields_dict.contact_by.df.options.match(/^Profile/)) {
|
if(cur_frm.fields_dict.contact_by.df.options.match(/^User/)) {
|
||||||
cur_frm.fields_dict.contact_by.get_query = function(doc, cdt, cdn) {
|
cur_frm.fields_dict.contact_by.get_query = function(doc, cdt, cdn) {
|
||||||
return { query:"frappe.core.doctype.profile.profile.profile_query" } }
|
return { query:"frappe.core.doctype.user.user.user_query" } }
|
||||||
}
|
}
|
||||||
|
|
||||||
if(in_list(user_roles,'System Manager')) {
|
if(in_list(user_roles,'System Manager')) {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-04-10 11:45:37",
|
"creation": "2013-04-10 11:45:37",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2014-01-20 17:48:53",
|
"modified": "2014-01-20 17:48:54",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -171,7 +171,7 @@
|
|||||||
"label": "Lead Owner",
|
"label": "Lead Owner",
|
||||||
"oldfieldname": "lead_owner",
|
"oldfieldname": "lead_owner",
|
||||||
"oldfieldtype": "Link",
|
"oldfieldtype": "Link",
|
||||||
"options": "Profile",
|
"options": "User",
|
||||||
"search_index": 1
|
"search_index": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -190,7 +190,7 @@
|
|||||||
"label": "Next Contact By",
|
"label": "Next Contact By",
|
||||||
"oldfieldname": "contact_by",
|
"oldfieldname": "contact_by",
|
||||||
"oldfieldtype": "Link",
|
"oldfieldtype": "Link",
|
||||||
"options": "Profile",
|
"options": "User",
|
||||||
"print_hide": 0,
|
"print_hide": 0,
|
||||||
"reqd": 0,
|
"reqd": 0,
|
||||||
"width": "100px"
|
"width": "100px"
|
||||||
|
@ -45,8 +45,8 @@ erpnext.selling.Opportunity = frappe.ui.form.Controller.extend({
|
|||||||
setup_queries: function() {
|
setup_queries: function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
if(this.frm.fields_dict.contact_by.df.options.match(/^Profile/)) {
|
if(this.frm.fields_dict.contact_by.df.options.match(/^User/)) {
|
||||||
this.frm.set_query("contact_by", erpnext.queries.profile);
|
this.frm.set_query("contact_by", erpnext.queries.user);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.frm.set_query("customer_address", function() {
|
this.frm.set_query("customer_address", function() {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-03-07 18:50:30",
|
"creation": "2013-03-07 18:50:30",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2014-01-20 17:48:58",
|
"modified": "2014-01-20 17:48:59",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -400,7 +400,7 @@
|
|||||||
"label": "Next Contact By",
|
"label": "Next Contact By",
|
||||||
"oldfieldname": "contact_by",
|
"oldfieldname": "contact_by",
|
||||||
"oldfieldtype": "Link",
|
"oldfieldtype": "Link",
|
||||||
"options": "Profile",
|
"options": "User",
|
||||||
"read_only": 0,
|
"read_only": 0,
|
||||||
"width": "75px"
|
"width": "75px"
|
||||||
},
|
},
|
||||||
|
@ -281,10 +281,10 @@ class TestSalesOrder(unittest.TestCase):
|
|||||||
|
|
||||||
def test_warehouse_user(self):
|
def test_warehouse_user(self):
|
||||||
frappe.defaults.add_default("Warehouse", "_Test Warehouse 1 - _TC1", "test@example.com", "Restriction")
|
frappe.defaults.add_default("Warehouse", "_Test Warehouse 1 - _TC1", "test@example.com", "Restriction")
|
||||||
frappe.bean("Profile", "test@example.com").get_controller()\
|
frappe.bean("User", "test@example.com").get_controller()\
|
||||||
.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
|
.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
|
||||||
|
|
||||||
frappe.bean("Profile", "test2@example.com").get_controller()\
|
frappe.bean("User", "test2@example.com").get_controller()\
|
||||||
.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
|
.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
|
||||||
|
|
||||||
frappe.set_user("test@example.com")
|
frappe.set_user("test@example.com")
|
||||||
|
@ -57,8 +57,8 @@ erpnext.SalesChart = Class.extend({
|
|||||||
var me = this;
|
var me = this;
|
||||||
me.ctype = ctype;
|
me.ctype = ctype;
|
||||||
me.can_read = frappe.model.can_read(this.ctype);
|
me.can_read = frappe.model.can_read(this.ctype);
|
||||||
me.can_create = frappe.boot.profile.can_create.indexOf(this.ctype) !== -1 ||
|
me.can_create = frappe.boot.user.can_create.indexOf(this.ctype) !== -1 ||
|
||||||
frappe.boot.profile.in_create.indexOf(this.ctype) !== -1;
|
frappe.boot.user.in_create.indexOf(this.ctype) !== -1;
|
||||||
me.can_write = frappe.model.can_write(this.ctype);
|
me.can_write = frappe.model.can_write(this.ctype);
|
||||||
me.can_delete = frappe.model.can_delete(this.ctype);
|
me.can_delete = frappe.model.can_delete(this.ctype);
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
"is_standard": "Yes",
|
"is_standard": "Yes",
|
||||||
"module": "Selling",
|
"module": "Selling",
|
||||||
"name": "__common__",
|
"name": "__common__",
|
||||||
"query": "SELECT\n `tabLead`.name as \"Lead Id:Link/Lead:120\",\n `tabLead`.lead_name as \"Lead Name::120\",\n\t`tabLead`.company_name as \"Company Name::120\",\n\t`tabLead`.status as \"Status::120\",\n\tconcat_ws(', ', \n\t\ttrim(',' from `tabAddress`.address_line1), \n\t\ttrim(',' from tabAddress.address_line2), \n\t\ttabAddress.state, tabAddress.pincode, tabAddress.country\n\t) as 'Address::180',\n\t`tabLead`.phone as \"Phone::100\",\n\t`tabLead`.mobile_no as \"Mobile No::100\",\n\t`tabLead`.email_id as \"Email Id::120\",\n\t`tabLead`.lead_owner as \"Lead Owner::120\",\n\t`tabLead`.source as \"Source::120\",\n\t`tabLead`.territory as \"Territory::120\",\n `tabLead`.owner as \"Owner:Link/Profile:120\"\nFROM\n\t`tabLead`\n\tleft join `tabAddress` on (\n\t\t`tabAddress`.lead=`tabLead`.name\n\t)\nWHERE\n\t`tabLead`.docstatus<2\nORDER BY\n\t`tabLead`.name asc",
|
"query": "SELECT\n `tabLead`.name as \"Lead Id:Link/Lead:120\",\n `tabLead`.lead_name as \"Lead Name::120\",\n\t`tabLead`.company_name as \"Company Name::120\",\n\t`tabLead`.status as \"Status::120\",\n\tconcat_ws(', ', \n\t\ttrim(',' from `tabAddress`.address_line1), \n\t\ttrim(',' from tabAddress.address_line2), \n\t\ttabAddress.state, tabAddress.pincode, tabAddress.country\n\t) as 'Address::180',\n\t`tabLead`.phone as \"Phone::100\",\n\t`tabLead`.mobile_no as \"Mobile No::100\",\n\t`tabLead`.email_id as \"Email Id::120\",\n\t`tabLead`.lead_owner as \"Lead Owner::120\",\n\t`tabLead`.source as \"Source::120\",\n\t`tabLead`.territory as \"Territory::120\",\n `tabLead`.owner as \"Owner:Link/User:120\"\nFROM\n\t`tabLead`\n\tleft join `tabAddress` on (\n\t\t`tabAddress`.lead=`tabLead`.name\n\t)\nWHERE\n\t`tabLead`.docstatus<2\nORDER BY\n\t`tabLead`.name asc",
|
||||||
"ref_doctype": "Lead",
|
"ref_doctype": "Lead",
|
||||||
"report_name": "Lead Details",
|
"report_name": "Lead Details",
|
||||||
"report_type": "Query Report"
|
"report_type": "Query Report"
|
||||||
|
@ -184,7 +184,7 @@ class DocType(TransactionBase):
|
|||||||
if m['approving_user']:
|
if m['approving_user']:
|
||||||
app_specific_user.append(m['approving_user'])
|
app_specific_user.append(m['approving_user'])
|
||||||
elif m['approving_role']:
|
elif m['approving_role']:
|
||||||
user_lst = [z[0] for z in frappe.db.sql("select distinct t1.name from `tabProfile` t1, `tabUserRole` t2 where t2.role=%s and t2.parent=t1.name and t1.name !='Administrator' and t1.name != 'Guest' and t1.docstatus !=2",m['approving_role'])]
|
user_lst = [z[0] for z in frappe.db.sql("select distinct t1.name from `tabUser` t1, `tabUserRole` t2 where t2.role=%s and t2.parent=t1.name and t1.name !='Administrator' and t1.name != 'Guest' and t1.docstatus !=2",m['approving_role'])]
|
||||||
for x in user_lst:
|
for x in user_lst:
|
||||||
if not x in app_user:
|
if not x in app_user:
|
||||||
app_user.append(x)
|
app_user.append(x)
|
||||||
|
@ -65,11 +65,11 @@ cur_frm.cscript.transaction = function(doc, cdt, cdn){
|
|||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.fields_dict.system_user.get_query = function(doc, cdt, cdn) {
|
cur_frm.fields_dict.system_user.get_query = function(doc, cdt, cdn) {
|
||||||
return { query:"frappe.core.doctype.profile.profile.profile_query" }
|
return { query:"frappe.core.doctype.user.user.user_query" }
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.fields_dict.approving_user.get_query = function(doc, cdt, cdn) {
|
cur_frm.fields_dict.approving_user.get_query = function(doc, cdt, cdn) {
|
||||||
return { query:"frappe.core.doctype.profile.profile.profile_query" }
|
return { query:"frappe.core.doctype.user.user.user_query" }
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.fields_dict['approving_role'].get_query = cur_frm.fields_dict['system_role'].get_query;
|
cur_frm.fields_dict['approving_role'].get_query = cur_frm.fields_dict['system_role'].get_query;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-01-10 16:34:22",
|
"creation": "2013-01-10 16:34:22",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2014-01-20 17:48:24",
|
"modified": "2014-01-20 17:48:25",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -102,7 +102,7 @@
|
|||||||
"label": "Applicable To (User)",
|
"label": "Applicable To (User)",
|
||||||
"oldfieldname": "system_user",
|
"oldfieldname": "system_user",
|
||||||
"oldfieldtype": "Link",
|
"oldfieldtype": "Link",
|
||||||
"options": "Profile"
|
"options": "User"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "This will be used for setting rule in HR module",
|
"description": "This will be used for setting rule in HR module",
|
||||||
@ -142,7 +142,7 @@
|
|||||||
"label": "Approving User",
|
"label": "Approving User",
|
||||||
"oldfieldname": "approving_user",
|
"oldfieldname": "approving_user",
|
||||||
"oldfieldtype": "Link",
|
"oldfieldtype": "Link",
|
||||||
"options": "Profile"
|
"options": "User"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
|
@ -162,7 +162,7 @@ cur_frm.cscript.delete_doc = function(doctype, name) {
|
|||||||
// Render List
|
// Render List
|
||||||
cur_frm.cscript.render_list = function(doc, doctype, wrapper, ListView, make_new_doc) {
|
cur_frm.cscript.render_list = function(doc, doctype, wrapper, ListView, make_new_doc) {
|
||||||
frappe.model.with_doctype(doctype, function(r) {
|
frappe.model.with_doctype(doctype, function(r) {
|
||||||
if((r && r['403']) || frappe.boot.profile.all_read.indexOf(doctype)===-1) {
|
if((r && r['403']) || frappe.boot.user.all_read.indexOf(doctype)===-1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var RecordListView = frappe.views.RecordListView.extend({
|
var RecordListView = frappe.views.RecordListView.extend({
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
table.profile-list {
|
table.user-list {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
line-height: 250%;
|
line-height: 250%;
|
||||||
|
@ -48,8 +48,8 @@ cur_frm.cscript.refresh = function(doc, dt, dn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.addremove_recipients = function(doc, dt, dn) {
|
cur_frm.cscript.addremove_recipients = function(doc, dt, dn) {
|
||||||
// Get profile list
|
// Get user list
|
||||||
return $c_obj(make_doclist(dt, dn), 'get_profiles', '', function(r, rt) {
|
return $c_obj(make_doclist(dt, dn), 'get_users', '', function(r, rt) {
|
||||||
if(r.exc) {
|
if(r.exc) {
|
||||||
msgprint(r.exc);
|
msgprint(r.exc);
|
||||||
} else {
|
} else {
|
||||||
@ -60,10 +60,10 @@ cur_frm.cscript.addremove_recipients = function(doc, dt, dn) {
|
|||||||
width: 400
|
width: 400
|
||||||
});
|
});
|
||||||
var dialog_div = $a(d.body, 'div', 'dialog-div', '', '');
|
var dialog_div = $a(d.body, 'div', 'dialog-div', '', '');
|
||||||
var tab = make_table(dialog_div, r.profile_list.length+2, 2, '', ['15%', '85%']);
|
var tab = make_table(dialog_div, r.user_list.length+2, 2, '', ['15%', '85%']);
|
||||||
tab.className = 'profile-list';
|
tab.className = 'user-list';
|
||||||
var add_or_update = 'Add';
|
var add_or_update = 'Add';
|
||||||
$.each(r.profile_list, function(i, v) {
|
$.each(r.user_list, function(i, v) {
|
||||||
var check = $a_input($td(tab, i+1, 0), 'checkbox');
|
var check = $a_input($td(tab, i+1, 0), 'checkbox');
|
||||||
check.value = v.name;
|
check.value = v.name;
|
||||||
if(v.checked==1) {
|
if(v.checked==1) {
|
||||||
@ -75,18 +75,18 @@ cur_frm.cscript.addremove_recipients = function(doc, dt, dn) {
|
|||||||
if(v.enabled==0) {
|
if(v.enabled==0) {
|
||||||
v.name = repl("<span style='color: red'> %(name)s (disabled user)</span>", {name: v.name});
|
v.name = repl("<span style='color: red'> %(name)s (disabled user)</span>", {name: v.name});
|
||||||
}
|
}
|
||||||
var profile = $a($td(tab, i+1, 1), 'span', '', '', v.name);
|
var user = $a($td(tab, i+1, 1), 'span', '', '', v.name);
|
||||||
//profile.onclick = function() { check.checked = !check.checked; }
|
//user.onclick = function() { check.checked = !check.checked; }
|
||||||
});
|
});
|
||||||
|
|
||||||
// Display add recipients button
|
// Display add recipients button
|
||||||
if(r.profile_list.length>15) {
|
if(r.user_list.length>15) {
|
||||||
$btn($td(tab, 0, 1), add_or_update + ' Recipients', function() {
|
$btn($td(tab, 0, 1), add_or_update + ' Recipients', function() {
|
||||||
cur_frm.cscript.add_to_rec_list(doc, tab, r.profile_list.length);
|
cur_frm.cscript.add_to_rec_list(doc, tab, r.user_list.length);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$btn($td(tab, r.profile_list.length+1, 1), add_or_update + ' Recipients', function() {
|
$btn($td(tab, r.user_list.length+1, 1), add_or_update + ' Recipients', function() {
|
||||||
cur_frm.cscript.add_to_rec_list(doc, tab, r.profile_list.length);
|
cur_frm.cscript.add_to_rec_list(doc, tab, r.user_list.length);
|
||||||
});
|
});
|
||||||
|
|
||||||
cur_frm.rec_dialog = d;
|
cur_frm.rec_dialog = d;
|
||||||
@ -96,7 +96,7 @@ cur_frm.cscript.addremove_recipients = function(doc, dt, dn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.add_to_rec_list = function(doc, tab, length) {
|
cur_frm.cscript.add_to_rec_list = function(doc, tab, length) {
|
||||||
// add checked profiles to list of recipients
|
// add checked users to list of recipients
|
||||||
var rec_list = [];
|
var rec_list = [];
|
||||||
for(var i = 1; i <= length; i++) {
|
for(var i = 1; i <= length; i++) {
|
||||||
var input = $($td(tab, i, 0)).find('input');
|
var input = $($td(tab, i, 0)).find('input');
|
||||||
|
@ -52,10 +52,10 @@ class DocType(DocListController):
|
|||||||
self.currency = frappe.db.get_value("Company", self.doc.company,
|
self.currency = frappe.db.get_value("Company", self.doc.company,
|
||||||
"default_currency")
|
"default_currency")
|
||||||
|
|
||||||
def get_profiles(self):
|
def get_users(self):
|
||||||
"""get list of profiles"""
|
"""get list of users"""
|
||||||
profile_list = frappe.db.sql("""
|
user_list = frappe.db.sql("""
|
||||||
select name, enabled from tabProfile
|
select name, enabled from tabUser
|
||||||
where docstatus=0 and name not in ('Administrator', 'Guest')
|
where docstatus=0 and name not in ('Administrator', 'Guest')
|
||||||
and user_type = "System User"
|
and user_type = "System User"
|
||||||
order by enabled desc, name asc""", as_dict=1)
|
order by enabled desc, name asc""", as_dict=1)
|
||||||
@ -64,14 +64,14 @@ class DocType(DocListController):
|
|||||||
recipient_list = self.doc.recipient_list.split("\n")
|
recipient_list = self.doc.recipient_list.split("\n")
|
||||||
else:
|
else:
|
||||||
recipient_list = []
|
recipient_list = []
|
||||||
for p in profile_list:
|
for p in user_list:
|
||||||
p["checked"] = p["name"] in recipient_list and 1 or 0
|
p["checked"] = p["name"] in recipient_list and 1 or 0
|
||||||
|
|
||||||
frappe.response['profile_list'] = profile_list
|
frappe.response['user_list'] = user_list
|
||||||
|
|
||||||
def send(self):
|
def send(self):
|
||||||
# send email only to enabled users
|
# send email only to enabled users
|
||||||
valid_users = [p[0] for p in frappe.db.sql("""select name from `tabProfile`
|
valid_users = [p[0] for p in frappe.db.sql("""select name from `tabUser`
|
||||||
where enabled=1""")]
|
where enabled=1""")]
|
||||||
recipients = filter(lambda r: r in valid_users,
|
recipients = filter(lambda r: r in valid_users,
|
||||||
self.doc.recipient_list.split("\n"))
|
self.doc.recipient_list.split("\n"))
|
||||||
|
@ -23,9 +23,9 @@ class DocType(DocTypeNestedSet):
|
|||||||
self.validate_one_root()
|
self.validate_one_root()
|
||||||
|
|
||||||
def get_email_id(self):
|
def get_email_id(self):
|
||||||
profile = frappe.db.get_value("Employee", self.doc.employee, "user_id")
|
user = frappe.db.get_value("Employee", self.doc.employee, "user_id")
|
||||||
if not profile:
|
if not user:
|
||||||
frappe.throw("User ID (Profile) not set for Employee %s" % self.doc.employee)
|
frappe.throw("User ID not set for Employee %s" % self.doc.employee)
|
||||||
else:
|
else:
|
||||||
return frappe.db.get_value("Profile", profile, "email") or profile
|
return frappe.db.get_value("User", user, "email") or user
|
||||||
|
|
@ -67,16 +67,16 @@ frappe.pages['setup-wizard'].onload = function(wrapper) {
|
|||||||
reqd:1, "description":"Your Login Id", "options":"Email"},
|
reqd:1, "description":"Your Login Id", "options":"Email"},
|
||||||
{"fieldname": "password", "label": frappe._("Password"), "fieldtype": "Password",
|
{"fieldname": "password", "label": frappe._("Password"), "fieldtype": "Password",
|
||||||
reqd:1},
|
reqd:1},
|
||||||
{fieldtype:"Attach Image", fieldname:"attach_profile",
|
{fieldtype:"Attach Image", fieldname:"attach_user",
|
||||||
label:"Attach Your Profile..."},
|
label:"Attach Your User..."},
|
||||||
],
|
],
|
||||||
help: frappe._('The first user will become the System Manager (you can change that later).'),
|
help: frappe._('The first user will become the System Manager (you can change that later).'),
|
||||||
onload: function(slide) {
|
onload: function(slide) {
|
||||||
if(user!=="Administrator") {
|
if(user!=="Administrator") {
|
||||||
slide.form.fields_dict.password.$wrapper.toggle(false);
|
slide.form.fields_dict.password.$wrapper.toggle(false);
|
||||||
slide.form.fields_dict.email.$wrapper.toggle(false);
|
slide.form.fields_dict.email.$wrapper.toggle(false);
|
||||||
slide.form.fields_dict.first_name.set_input(frappe.boot.profile.first_name);
|
slide.form.fields_dict.first_name.set_input(frappe.boot.user.first_name);
|
||||||
slide.form.fields_dict.last_name.set_input(frappe.boot.profile.last_name);
|
slide.form.fields_dict.last_name.set_input(frappe.boot.user.last_name);
|
||||||
|
|
||||||
delete slide.form.fields_dict.email;
|
delete slide.form.fields_dict.email;
|
||||||
delete slide.form.fields_dict.password;
|
delete slide.form.fields_dict.password;
|
||||||
|
@ -19,7 +19,7 @@ def setup_account(args=None):
|
|||||||
args = json.loads(args)
|
args = json.loads(args)
|
||||||
args = frappe._dict(args)
|
args = frappe._dict(args)
|
||||||
|
|
||||||
update_profile_name(args)
|
update_user_name(args)
|
||||||
create_fiscal_year_and_company(args)
|
create_fiscal_year_and_company(args)
|
||||||
set_defaults(args)
|
set_defaults(args)
|
||||||
create_territories()
|
create_territories()
|
||||||
@ -41,12 +41,12 @@ def setup_account(args=None):
|
|||||||
|
|
||||||
return "okay"
|
return "okay"
|
||||||
|
|
||||||
def update_profile_name(args):
|
def update_user_name(args):
|
||||||
if args.get("email"):
|
if args.get("email"):
|
||||||
args['name'] = args.get("email")
|
args['name'] = args.get("email")
|
||||||
frappe.flags.mute_emails = True
|
frappe.flags.mute_emails = True
|
||||||
frappe.bean({
|
frappe.bean({
|
||||||
"doctype":"Profile",
|
"doctype":"User",
|
||||||
"email": args.get("email"),
|
"email": args.get("email"),
|
||||||
"first_name": args.get("first_name"),
|
"first_name": args.get("first_name"),
|
||||||
"last_name": args.get("last_name")
|
"last_name": args.get("last_name")
|
||||||
@ -58,16 +58,16 @@ def update_profile_name(args):
|
|||||||
else:
|
else:
|
||||||
args['name'] = frappe.session.user
|
args['name'] = frappe.session.user
|
||||||
|
|
||||||
# Update Profile
|
# Update User
|
||||||
if not args.get('last_name') or args.get('last_name')=='None':
|
if not args.get('last_name') or args.get('last_name')=='None':
|
||||||
args['last_name'] = None
|
args['last_name'] = None
|
||||||
frappe.db.sql("""update `tabProfile` SET first_name=%(first_name)s,
|
frappe.db.sql("""update `tabUser` SET first_name=%(first_name)s,
|
||||||
last_name=%(last_name)s WHERE name=%(name)s""", args)
|
last_name=%(last_name)s WHERE name=%(name)s""", args)
|
||||||
|
|
||||||
if args.get("attach_profile"):
|
if args.get("attach_user"):
|
||||||
filename, filetype, content = args.get("attach_profile").split(",")
|
filename, filetype, content = args.get("attach_user").split(",")
|
||||||
fileurl = save_file(filename, content, "Profile", args.get("name"), decode=True).file_name
|
fileurl = save_file(filename, content, "User", args.get("name"), decode=True).file_name
|
||||||
frappe.db.set_value("Profile", args.get("name"), "user_image", fileurl)
|
frappe.db.set_value("User", args.get("name"), "user_image", fileurl)
|
||||||
|
|
||||||
add_all_roles_to(args.get("name"))
|
add_all_roles_to(args.get("name"))
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ def create_feed_and_todo():
|
|||||||
'ERNext Setup Complete!', '#6B24B3')
|
'ERNext Setup Complete!', '#6B24B3')
|
||||||
|
|
||||||
def create_email_digest():
|
def create_email_digest():
|
||||||
from frappe.profile import get_system_managers
|
from frappe.utils.user import get_system_managers
|
||||||
system_managers = get_system_managers(only_name=True)
|
system_managers = get_system_managers(only_name=True)
|
||||||
if not system_managers:
|
if not system_managers:
|
||||||
return
|
return
|
||||||
@ -335,10 +335,10 @@ def create_letter_head(args):
|
|||||||
|
|
||||||
|
|
||||||
def add_all_roles_to(name):
|
def add_all_roles_to(name):
|
||||||
profile = frappe.doc("Profile", name)
|
user = frappe.doc("User", name)
|
||||||
for role in frappe.db.sql("""select name from tabRole"""):
|
for role in frappe.db.sql("""select name from tabRole"""):
|
||||||
if role[0] not in ["Administrator", "Guest", "All", "Customer", "Supplier", "Partner"]:
|
if role[0] not in ["Administrator", "Guest", "All", "Customer", "Supplier", "Partner"]:
|
||||||
d = profile.addchild("user_roles", "UserRole")
|
d = user.addchild("user_roles", "UserRole")
|
||||||
d.role = role[0]
|
d.role = role[0]
|
||||||
d.insert()
|
d.insert()
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -16,13 +16,13 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# 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/>.
|
||||||
|
|
||||||
# default settings that can be made for a profile.
|
# default settings that can be made for a user.
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
|
|
||||||
product_name = "ERPNext"
|
product_name = "ERPNext"
|
||||||
profile_defaults = {
|
user_defaults = {
|
||||||
"Company": "company",
|
"Company": "company",
|
||||||
"Territory": "territory"
|
"Territory": "territory"
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,9 @@ def on_session_creation(login_manager):
|
|||||||
if frappe.session['user'] not in ('Guest'):
|
if frappe.session['user'] not in ('Guest'):
|
||||||
# create feed
|
# create feed
|
||||||
from frappe.utils import nowtime
|
from frappe.utils import nowtime
|
||||||
from frappe.profile import get_user_fullname
|
from frappe.utils.user import get_user_fullname
|
||||||
frappe.db.begin()
|
frappe.db.begin()
|
||||||
make_feed('Login', 'Profile', login_manager.user, login_manager.user,
|
make_feed('Login', 'User', login_manager.user, login_manager.user,
|
||||||
'%s logged in at %s' % (get_user_fullname(login_manager.user), nowtime()),
|
'%s logged in at %s' % (get_user_fullname(login_manager.user), nowtime()),
|
||||||
login_manager.user=='Administrator' and '#8CA2B3' or '#1B750D')
|
login_manager.user=='Administrator' and '#8CA2B3' or '#1B750D')
|
||||||
frappe.db.commit()
|
frappe.db.commit()
|
@ -68,7 +68,7 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({
|
|||||||
this.show_general_ledger();
|
this.show_general_ledger();
|
||||||
|
|
||||||
if(this.frm.doc.docstatus === 1 &&
|
if(this.frm.doc.docstatus === 1 &&
|
||||||
frappe.boot.profile.can_create.indexOf("Journal Voucher")!==-1) {
|
frappe.boot.user.can_create.indexOf("Journal Voucher")!==-1) {
|
||||||
if(this.frm.doc.purpose === "Sales Return") {
|
if(this.frm.doc.purpose === "Sales Return") {
|
||||||
this.frm.add_custom_button(frappe._("Make Credit Note"), function() { me.make_return_jv(); });
|
this.frm.add_custom_button(frappe._("Make Credit Note"), function() { me.make_return_jv(); });
|
||||||
this.add_excise_button();
|
this.add_excise_button();
|
||||||
|
@ -765,7 +765,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
def test_warehouse_company_validation(self):
|
def test_warehouse_company_validation(self):
|
||||||
set_perpetual_inventory(0)
|
set_perpetual_inventory(0)
|
||||||
self._clear_stock_account_balance()
|
self._clear_stock_account_balance()
|
||||||
frappe.bean("Profile", "test2@example.com").get_controller()\
|
frappe.bean("User", "test2@example.com").get_controller()\
|
||||||
.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
|
.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
|
||||||
frappe.set_user("test2@example.com")
|
frappe.set_user("test2@example.com")
|
||||||
|
|
||||||
@ -783,9 +783,9 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
|
|
||||||
frappe.defaults.add_default("Warehouse", "_Test Warehouse 1 - _TC1", "test@example.com", "Restriction")
|
frappe.defaults.add_default("Warehouse", "_Test Warehouse 1 - _TC1", "test@example.com", "Restriction")
|
||||||
frappe.defaults.add_default("Warehouse", "_Test Warehouse 2 - _TC1", "test2@example.com", "Restriction")
|
frappe.defaults.add_default("Warehouse", "_Test Warehouse 2 - _TC1", "test2@example.com", "Restriction")
|
||||||
frappe.bean("Profile", "test@example.com").get_controller()\
|
frappe.bean("User", "test@example.com").get_controller()\
|
||||||
.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
|
.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
|
||||||
frappe.bean("Profile", "test2@example.com").get_controller()\
|
frappe.bean("User", "test2@example.com").get_controller()\
|
||||||
.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
|
.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
|
||||||
|
|
||||||
frappe.set_user("test@example.com")
|
frappe.set_user("test@example.com")
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"label": "User",
|
"label": "User",
|
||||||
"name": "__common__",
|
"name": "__common__",
|
||||||
"options": "Profile",
|
"options": "User",
|
||||||
"parent": "Warehouse User",
|
"parent": "Warehouse User",
|
||||||
"parentfield": "fields",
|
"parentfield": "fields",
|
||||||
"parenttype": "DocType",
|
"parenttype": "DocType",
|
||||||
|
@ -289,7 +289,7 @@ def send_email_notification(mr_list):
|
|||||||
""" Notify user about auto creation of indent"""
|
""" Notify user about auto creation of indent"""
|
||||||
|
|
||||||
email_list = frappe.db.sql_list("""select distinct r.parent
|
email_list = frappe.db.sql_list("""select distinct r.parent
|
||||||
from tabUserRole r, tabProfile p
|
from tabUserRole r, tabUser p
|
||||||
where p.name = r.parent and p.enabled = 1 and p.docstatus < 2
|
where p.name = r.parent and p.enabled = 1 and p.docstatus < 2
|
||||||
and r.role in ('Purchase Manager','Material Manager')
|
and r.role in ('Purchase Manager','Material Manager')
|
||||||
and p.name not in ('Administrator', 'All', 'Guest')""")
|
and p.name not in ('Administrator', 'All', 'Guest')""")
|
||||||
@ -320,5 +320,5 @@ def notify_errors(exceptions_list):
|
|||||||
Regards,
|
Regards,
|
||||||
Administrator""" % ("\n\n".join(["\n".join(msg) for msg in exceptions_list]),)
|
Administrator""" % ("\n\n".join(["\n".join(msg) for msg in exceptions_list]),)
|
||||||
|
|
||||||
from frappe.profile import get_system_managers
|
from frappe.utils.user import get_system_managers
|
||||||
sendmail(get_system_managers(), subject=subject, msg=msg)
|
sendmail(get_system_managers(), subject=subject, msg=msg)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-01-10 16:34:30",
|
"creation": "2013-01-10 16:34:30",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2014-01-20 17:48:34",
|
"modified": "2014-01-20 17:48:35",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "harshada@webnotestech.com"
|
"owner": "harshada@webnotestech.com"
|
||||||
},
|
},
|
||||||
@ -250,7 +250,7 @@
|
|||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"oldfieldname": "resolved_by",
|
"oldfieldname": "resolved_by",
|
||||||
"oldfieldtype": "Link",
|
"oldfieldtype": "Link",
|
||||||
"options": "Profile",
|
"options": "User",
|
||||||
"search_index": 1
|
"search_index": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -15,7 +15,7 @@ cur_frm.cscript.onload = function(doc) {
|
|||||||
cur_frm.cscript.refresh = function(doc) {
|
cur_frm.cscript.refresh = function(doc) {
|
||||||
erpnext.hide_naming_series();
|
erpnext.hide_naming_series();
|
||||||
if(!doc.__islocal && !cint(doc.email_sent) && !doc.__unsaved
|
if(!doc.__islocal && !cint(doc.email_sent) && !doc.__unsaved
|
||||||
&& inList(frappe.boot.profile.can_write, doc.doctype)) {
|
&& inList(frappe.boot.user.can_write, doc.doctype)) {
|
||||||
cur_frm.add_custom_button(frappe._('Send'), function() {
|
cur_frm.add_custom_button(frappe._('Send'), function() {
|
||||||
return $c_obj(make_doclist(doc.doctype, doc.name), 'send_emails', '', function(r) {
|
return $c_obj(make_doclist(doc.doctype, doc.name), 'send_emails', '', function(r) {
|
||||||
cur_frm.refresh();
|
cur_frm.refresh();
|
||||||
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,يوصى به Itemwise إعادة ترتيب
|
|||||||
JV,JV
|
JV,JV
|
||||||
Job Applicant,طالب العمل
|
Job Applicant,طالب العمل
|
||||||
Job Opening,افتتاح العمل
|
Job Opening,افتتاح العمل
|
||||||
Job Profile,العمل الشخصي
|
Job User,العمل الشخصي
|
||||||
Job Title,المسمى الوظيفي
|
Job Title,المسمى الوظيفي
|
||||||
"Job profile, qualifications required etc.",العمل الشخصي، المؤهلات المطلوبة الخ.
|
"Job User, qualifications required etc.",العمل الشخصي، المؤهلات المطلوبة الخ.
|
||||||
Jobs Email Settings,إعدادات البريد الإلكتروني وظائف
|
Jobs Email Settings,إعدادات البريد الإلكتروني وظائف
|
||||||
Journal Entries,مجلة مقالات
|
Journal Entries,مجلة مقالات
|
||||||
Journal Entry,إدخال دفتر اليومية
|
Journal Entry,إدخال دفتر اليومية
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,أمرت الكمية
|
|||||||
Orders released for production.,أوامر الإفراج عن الإنتاج.
|
Orders released for production.,أوامر الإفراج عن الإنتاج.
|
||||||
Organization,منظمة
|
Organization,منظمة
|
||||||
Organization Name,اسم المنظمة
|
Organization Name,اسم المنظمة
|
||||||
Organization Profile,الملف الشخصي المنظمة
|
Organization User,الملف الشخصي المنظمة
|
||||||
Other,آخر
|
Other,آخر
|
||||||
Other Details,تفاصيل أخرى
|
Other Details,تفاصيل أخرى
|
||||||
Out Qty,من الكمية
|
Out Qty,من الكمية
|
||||||
|
|
@ -1352,9 +1352,9 @@ Itemwise Recommended Reorder Level,Itemwise Empfohlene Meldebestand
|
|||||||
JV,JV
|
JV,JV
|
||||||
Job Applicant,Job Applicant
|
Job Applicant,Job Applicant
|
||||||
Job Opening,Stellenangebot
|
Job Opening,Stellenangebot
|
||||||
Job Profile,Job Profil
|
Job User,Job Profil
|
||||||
Job Title,Berufsbezeichnung
|
Job Title,Berufsbezeichnung
|
||||||
"Job profile, qualifications required etc.","Job-Profil, etc. erforderlichen Qualifikationen."
|
"Job User, qualifications required etc.","Job-Profil, etc. erforderlichen Qualifikationen."
|
||||||
Jobs Email Settings,Jobs per E-Mail Einstellungen
|
Jobs Email Settings,Jobs per E-Mail Einstellungen
|
||||||
Journal Entries,Journal Entries
|
Journal Entries,Journal Entries
|
||||||
Journal Entry,Journal Entry
|
Journal Entry,Journal Entry
|
||||||
@ -1752,7 +1752,7 @@ Ordered Quantity,Bestellte Menge
|
|||||||
Orders released for production.,Bestellungen für die Produktion freigegeben.
|
Orders released for production.,Bestellungen für die Produktion freigegeben.
|
||||||
Organization,Organisation
|
Organization,Organisation
|
||||||
Organization Name,Name der Organisation
|
Organization Name,Name der Organisation
|
||||||
Organization Profile,Organisation Profil
|
Organization User,Organisation Profil
|
||||||
Other,Andere
|
Other,Andere
|
||||||
Other Details,Weitere Details
|
Other Details,Weitere Details
|
||||||
Out Qty,out Menge
|
Out Qty,out Menge
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Itemwise Συνιστάται Αναδιάτ
|
|||||||
JV,JV
|
JV,JV
|
||||||
Job Applicant,Αιτών εργασία
|
Job Applicant,Αιτών εργασία
|
||||||
Job Opening,Άνοιγμα θέσεων εργασίας
|
Job Opening,Άνοιγμα θέσεων εργασίας
|
||||||
Job Profile,Προφίλ Εργασίας
|
Job User,Προφίλ Εργασίας
|
||||||
Job Title,Τίτλος εργασίας
|
Job Title,Τίτλος εργασίας
|
||||||
"Job profile, qualifications required etc.","Προφίλ δουλειά, προσόντα που απαιτούνται κ.λπ."
|
"Job User, qualifications required etc.","Προφίλ δουλειά, προσόντα που απαιτούνται κ.λπ."
|
||||||
Jobs Email Settings,Εργασία Ρυθμίσεις Email
|
Jobs Email Settings,Εργασία Ρυθμίσεις Email
|
||||||
Journal Entries,Εφημερίδα Καταχωρήσεις
|
Journal Entries,Εφημερίδα Καταχωρήσεις
|
||||||
Journal Entry,Journal Entry
|
Journal Entry,Journal Entry
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,Διέταξε ποσότητα
|
|||||||
Orders released for production.,Παραγγελίες κυκλοφόρησε για την παραγωγή.
|
Orders released for production.,Παραγγελίες κυκλοφόρησε για την παραγωγή.
|
||||||
Organization,οργάνωση
|
Organization,οργάνωση
|
||||||
Organization Name,Όνομα Οργανισμού
|
Organization Name,Όνομα Οργανισμού
|
||||||
Organization Profile,Προφίλ Οργανισμού
|
Organization User,Προφίλ Οργανισμού
|
||||||
Other,Άλλος
|
Other,Άλλος
|
||||||
Other Details,Άλλες λεπτομέρειες
|
Other Details,Άλλες λεπτομέρειες
|
||||||
Out Qty,out Ποσότητα
|
Out Qty,out Ποσότητα
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Itemwise Recomendado Nivel de Reabastecimient
|
|||||||
JV,JV
|
JV,JV
|
||||||
Job Applicant,Solicitante de empleo
|
Job Applicant,Solicitante de empleo
|
||||||
Job Opening,Job Opening
|
Job Opening,Job Opening
|
||||||
Job Profile,Job perfil
|
Job User,Job perfil
|
||||||
Job Title,Título del trabajo
|
Job Title,Título del trabajo
|
||||||
"Job profile, qualifications required etc.","Perfil de trabajo, calificaciones requeridas, etc"
|
"Job User, qualifications required etc.","Perfil de trabajo, calificaciones requeridas, etc"
|
||||||
Jobs Email Settings,Trabajos Configuración del correo electrónico
|
Jobs Email Settings,Trabajos Configuración del correo electrónico
|
||||||
Journal Entries,Entradas de diario
|
Journal Entries,Entradas de diario
|
||||||
Journal Entry,Asientos de diario
|
Journal Entry,Asientos de diario
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,Cantidad ordenada
|
|||||||
Orders released for production.,Los pedidos a producción.
|
Orders released for production.,Los pedidos a producción.
|
||||||
Organization,organización
|
Organization,organización
|
||||||
Organization Name,Nombre de la organización
|
Organization Name,Nombre de la organización
|
||||||
Organization Profile,Perfil de la organización
|
Organization User,Perfil de la organización
|
||||||
Other,Otro
|
Other,Otro
|
||||||
Other Details,Otros detalles
|
Other Details,Otros detalles
|
||||||
Out Qty,Salir Cant.
|
Out Qty,Salir Cant.
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Itemwise recommandée SEUIL DE COMMANDE
|
|||||||
JV,JV
|
JV,JV
|
||||||
Job Applicant,Demandeur d'emploi
|
Job Applicant,Demandeur d'emploi
|
||||||
Job Opening,Offre d'emploi
|
Job Opening,Offre d'emploi
|
||||||
Job Profile,Profil d'emploi
|
Job User,Profil d'emploi
|
||||||
Job Title,Titre d'emploi
|
Job Title,Titre d'emploi
|
||||||
"Job profile, qualifications required etc.","Profil de poste, qualifications requises, etc"
|
"Job User, qualifications required etc.","Profil de poste, qualifications requises, etc"
|
||||||
Jobs Email Settings,Paramètres de messagerie Emploi
|
Jobs Email Settings,Paramètres de messagerie Emploi
|
||||||
Journal Entries,Journal Entries
|
Journal Entries,Journal Entries
|
||||||
Journal Entry,Journal Entry
|
Journal Entry,Journal Entry
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,Quantité commandée
|
|||||||
Orders released for production.,Commandes validé pour la production.
|
Orders released for production.,Commandes validé pour la production.
|
||||||
Organization,organisation
|
Organization,organisation
|
||||||
Organization Name,Nom de l'organisme
|
Organization Name,Nom de l'organisme
|
||||||
Organization Profile,Profil de l'organisation
|
Organization User,Profil de l'organisation
|
||||||
Other,Autre
|
Other,Autre
|
||||||
Other Details,Autres détails
|
Other Details,Autres détails
|
||||||
Out Qty,out Quantité
|
Out Qty,out Quantité
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Itemwise स्तर Reorder अनुशं
|
|||||||
JV,जेवी
|
JV,जेवी
|
||||||
Job Applicant,नौकरी आवेदक
|
Job Applicant,नौकरी आवेदक
|
||||||
Job Opening,नौकरी खोलने
|
Job Opening,नौकरी खोलने
|
||||||
Job Profile,नौकरी प्रोफाइल
|
Job User,नौकरी प्रोफाइल
|
||||||
Job Title,कार्य शीर्षक
|
Job Title,कार्य शीर्षक
|
||||||
"Job profile, qualifications required etc.","नौकरी प्रोफाइल योग्यता, आदि की आवश्यकता"
|
"Job User, qualifications required etc.","नौकरी प्रोफाइल योग्यता, आदि की आवश्यकता"
|
||||||
Jobs Email Settings,नौकरियां ईमेल सेटिंग
|
Jobs Email Settings,नौकरियां ईमेल सेटिंग
|
||||||
Journal Entries,जर्नल प्रविष्टियां
|
Journal Entries,जर्नल प्रविष्टियां
|
||||||
Journal Entry,जर्नल प्रविष्टि
|
Journal Entry,जर्नल प्रविष्टि
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,आदेशित मात्रा
|
|||||||
Orders released for production.,उत्पादन के लिए आदेश जारी किया.
|
Orders released for production.,उत्पादन के लिए आदेश जारी किया.
|
||||||
Organization,संगठन
|
Organization,संगठन
|
||||||
Organization Name,संगठन का नाम
|
Organization Name,संगठन का नाम
|
||||||
Organization Profile,संगठन प्रोफाइल
|
Organization User,संगठन प्रोफाइल
|
||||||
Other,अन्य
|
Other,अन्य
|
||||||
Other Details,अन्य विवरण
|
Other Details,अन्य विवरण
|
||||||
Out Qty,मात्रा बाहर
|
Out Qty,मात्रा बाहर
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Itemwise Preporučio redoslijeda Level
|
|||||||
JV,JV
|
JV,JV
|
||||||
Job Applicant,Posao podnositelj
|
Job Applicant,Posao podnositelj
|
||||||
Job Opening,Posao Otvaranje
|
Job Opening,Posao Otvaranje
|
||||||
Job Profile,Posao Profil
|
Job User,Posao Profil
|
||||||
Job Title,Titula
|
Job Title,Titula
|
||||||
"Job profile, qualifications required etc.","Posao profil, kvalifikacije potrebne, itd."
|
"Job User, qualifications required etc.","Posao profil, kvalifikacije potrebne, itd."
|
||||||
Jobs Email Settings,Poslovi Postavke e-pošte
|
Jobs Email Settings,Poslovi Postavke e-pošte
|
||||||
Journal Entries,Časopis upisi
|
Journal Entries,Časopis upisi
|
||||||
Journal Entry,Časopis Stupanje
|
Journal Entry,Časopis Stupanje
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,Količina Ž
|
|||||||
Orders released for production.,Narudžbe objavljen za proizvodnju.
|
Orders released for production.,Narudžbe objavljen za proizvodnju.
|
||||||
Organization,organizacija
|
Organization,organizacija
|
||||||
Organization Name,Naziv organizacije
|
Organization Name,Naziv organizacije
|
||||||
Organization Profile,Organizacija Profil
|
Organization User,Organizacija Profil
|
||||||
Other,Drugi
|
Other,Drugi
|
||||||
Other Details,Ostali podaci
|
Other Details,Ostali podaci
|
||||||
Out Qty,Od kol
|
Out Qty,Od kol
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Itemwise consigliata riordino Livello
|
|||||||
JV,JV
|
JV,JV
|
||||||
Job Applicant,Candidato di lavoro
|
Job Applicant,Candidato di lavoro
|
||||||
Job Opening,Apertura di lavoro
|
Job Opening,Apertura di lavoro
|
||||||
Job Profile,Profilo di lavoro
|
Job User,Profilo di lavoro
|
||||||
Job Title,Professione
|
Job Title,Professione
|
||||||
"Job profile, qualifications required etc.","Profilo professionale, le qualifiche richieste, ecc"
|
"Job User, qualifications required etc.","Profilo professionale, le qualifiche richieste, ecc"
|
||||||
Jobs Email Settings,Impostazioni email Lavoro
|
Jobs Email Settings,Impostazioni email Lavoro
|
||||||
Journal Entries,Prime note
|
Journal Entries,Prime note
|
||||||
Journal Entry,Journal Entry
|
Journal Entry,Journal Entry
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,Ordinato Quantità
|
|||||||
Orders released for production.,Gli ordini rilasciati per la produzione.
|
Orders released for production.,Gli ordini rilasciati per la produzione.
|
||||||
Organization,organizzazione
|
Organization,organizzazione
|
||||||
Organization Name,Nome organizzazione
|
Organization Name,Nome organizzazione
|
||||||
Organization Profile,Profilo dell'organizzazione
|
Organization User,Profilo dell'organizzazione
|
||||||
Other,Altro
|
Other,Altro
|
||||||
Other Details,Altri dettagli
|
Other Details,Altri dettagli
|
||||||
Out Qty,out Quantità
|
Out Qty,out Quantità
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Itemwise Aanbevolen Reorder Niveau
|
|||||||
JV,JV
|
JV,JV
|
||||||
Job Applicant,Sollicitant
|
Job Applicant,Sollicitant
|
||||||
Job Opening,Vacature
|
Job Opening,Vacature
|
||||||
Job Profile,Functieprofiel
|
Job User,Functieprofiel
|
||||||
Job Title,Functie
|
Job Title,Functie
|
||||||
"Job profile, qualifications required etc.","Functieprofiel, kwalificaties, etc. nodig"
|
"Job User, qualifications required etc.","Functieprofiel, kwalificaties, etc. nodig"
|
||||||
Jobs Email Settings,Vacatures E-mailinstellingen
|
Jobs Email Settings,Vacatures E-mailinstellingen
|
||||||
Journal Entries,Journaalposten
|
Journal Entries,Journaalposten
|
||||||
Journal Entry,Journal Entry
|
Journal Entry,Journal Entry
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,Bestelde hoeveelheid
|
|||||||
Orders released for production.,Bestellingen vrijgegeven voor productie.
|
Orders released for production.,Bestellingen vrijgegeven voor productie.
|
||||||
Organization,organisatie
|
Organization,organisatie
|
||||||
Organization Name,Naam van de Organisatie
|
Organization Name,Naam van de Organisatie
|
||||||
Organization Profile,Organisatie Profiel
|
Organization User,Organisatie Profiel
|
||||||
Other,Ander
|
Other,Ander
|
||||||
Other Details,Andere Details
|
Other Details,Andere Details
|
||||||
Out Qty,out Aantal
|
Out Qty,out Aantal
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Itemwise Recomendado nível de reposição
|
|||||||
JV,JV
|
JV,JV
|
||||||
Job Applicant,Candidato a emprego
|
Job Applicant,Candidato a emprego
|
||||||
Job Opening,Vaga de emprego
|
Job Opening,Vaga de emprego
|
||||||
Job Profile,Perfil da vaga
|
Job User,Perfil da vaga
|
||||||
Job Title,Cargo
|
Job Title,Cargo
|
||||||
"Job profile, qualifications required etc.","Perfil da vaga, qualificações exigidas, etc"
|
"Job User, qualifications required etc.","Perfil da vaga, qualificações exigidas, etc"
|
||||||
Jobs Email Settings,Configurações do e-mail de empregos
|
Jobs Email Settings,Configurações do e-mail de empregos
|
||||||
Journal Entries,Lançamentos do livro Diário
|
Journal Entries,Lançamentos do livro Diário
|
||||||
Journal Entry,Lançamento do livro Diário
|
Journal Entry,Lançamento do livro Diário
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,Quantidade encomendada
|
|||||||
Orders released for production.,Ordens liberadas para produção.
|
Orders released for production.,Ordens liberadas para produção.
|
||||||
Organization,organização
|
Organization,organização
|
||||||
Organization Name,Nome da Organização
|
Organization Name,Nome da Organização
|
||||||
Organization Profile,Perfil da Organização
|
Organization User,Perfil da Organização
|
||||||
Other,Outro
|
Other,Outro
|
||||||
Other Details,Outros detalhes
|
Other Details,Outros detalhes
|
||||||
Out Qty,Fora Qtde
|
Out Qty,Fora Qtde
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Itemwise Recomendado nível de reposição
|
|||||||
JV,JV
|
JV,JV
|
||||||
Job Applicant,Candidato a emprego
|
Job Applicant,Candidato a emprego
|
||||||
Job Opening,Abertura de emprego
|
Job Opening,Abertura de emprego
|
||||||
Job Profile,Perfil trabalho
|
Job User,Perfil trabalho
|
||||||
Job Title,Cargo
|
Job Title,Cargo
|
||||||
"Job profile, qualifications required etc.","Profissão de perfil, qualificações exigidas, etc"
|
"Job User, qualifications required etc.","Profissão de perfil, qualificações exigidas, etc"
|
||||||
Jobs Email Settings,E-mail Configurações de empregos
|
Jobs Email Settings,E-mail Configurações de empregos
|
||||||
Journal Entries,Jornal entradas
|
Journal Entries,Jornal entradas
|
||||||
Journal Entry,Journal Entry
|
Journal Entry,Journal Entry
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,Quantidade pedida
|
|||||||
Orders released for production.,Ordens liberado para produção.
|
Orders released for production.,Ordens liberado para produção.
|
||||||
Organization,organisatie
|
Organization,organisatie
|
||||||
Organization Name,Naam van de Organisatie
|
Organization Name,Naam van de Organisatie
|
||||||
Organization Profile,Perfil da Organização
|
Organization User,Perfil da Organização
|
||||||
Other,Outro
|
Other,Outro
|
||||||
Other Details,Outros detalhes
|
Other Details,Outros detalhes
|
||||||
Out Qty,out Aantal
|
Out Qty,out Aantal
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Препоручени ниво Итемви
|
|||||||
JV,ЈВ
|
JV,ЈВ
|
||||||
Job Applicant,Посао захтева
|
Job Applicant,Посао захтева
|
||||||
Job Opening,Посао Отварање
|
Job Opening,Посао Отварање
|
||||||
Job Profile,Посао Профил
|
Job User,Посао Профил
|
||||||
Job Title,Звање
|
Job Title,Звање
|
||||||
"Job profile, qualifications required etc.","Посао профила, квалификације потребне итд"
|
"Job User, qualifications required etc.","Посао профила, квалификације потребне итд"
|
||||||
Jobs Email Settings,Послови Емаил подешавања
|
Jobs Email Settings,Послови Емаил подешавања
|
||||||
Journal Entries,Часопис Ентриес
|
Journal Entries,Часопис Ентриес
|
||||||
Journal Entry,Јоурнал Ентри
|
Journal Entry,Јоурнал Ентри
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,Наручено Количина
|
|||||||
Orders released for production.,Поруџбине пуштен за производњу.
|
Orders released for production.,Поруџбине пуштен за производњу.
|
||||||
Organization,организација
|
Organization,организација
|
||||||
Organization Name,Име организације
|
Organization Name,Име организације
|
||||||
Organization Profile,Организација Профил
|
Organization User,Организација Профил
|
||||||
Other,Други
|
Other,Други
|
||||||
Other Details,Остали детаљи
|
Other Details,Остали детаљи
|
||||||
Out Qty,Од Кол
|
Out Qty,Од Кол
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,இனவாரியாக நிலை ம
|
|||||||
JV,கூட்டு தொழில்
|
JV,கூட்டு தொழில்
|
||||||
Job Applicant,வேலை விண்ணப்பதாரர்
|
Job Applicant,வேலை விண்ணப்பதாரர்
|
||||||
Job Opening,வேலை திறக்கிறது
|
Job Opening,வேலை திறக்கிறது
|
||||||
Job Profile,வேலை செய்தது
|
Job User,வேலை செய்தது
|
||||||
Job Title,வேலை தலைப்பு
|
Job Title,வேலை தலைப்பு
|
||||||
"Job profile, qualifications required etc.","வேலை சுயவிவரத்தை, தகுதிகள் போன்ற தேவை"
|
"Job User, qualifications required etc.","வேலை சுயவிவரத்தை, தகுதிகள் போன்ற தேவை"
|
||||||
Jobs Email Settings,வேலைகள் மின்னஞ்சல் அமைப்புகள்
|
Jobs Email Settings,வேலைகள் மின்னஞ்சல் அமைப்புகள்
|
||||||
Journal Entries,ஜர்னல் பதிவுகள்
|
Journal Entries,ஜர்னல் பதிவுகள்
|
||||||
Journal Entry,பத்திரிகை நுழைவு
|
Journal Entry,பத்திரிகை நுழைவு
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,உத்தரவிட்டார் அளவு
|
|||||||
Orders released for production.,ஆணைகள் உற்பத்தி வெளியிடப்பட்டது.
|
Orders released for production.,ஆணைகள் உற்பத்தி வெளியிடப்பட்டது.
|
||||||
Organization,அமைப்பு
|
Organization,அமைப்பு
|
||||||
Organization Name,நிறுவன பெயர்
|
Organization Name,நிறுவன பெயர்
|
||||||
Organization Profile,அமைப்பு விவரம்
|
Organization User,அமைப்பு விவரம்
|
||||||
Other,வேறு
|
Other,வேறு
|
||||||
Other Details,மற்ற விவரங்கள்
|
Other Details,மற்ற விவரங்கள்
|
||||||
Out Qty,அளவு அவுட்
|
Out Qty,அளவு அவுட்
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,แนะนำ Itemwise Reorder ระดั
|
|||||||
JV,JV
|
JV,JV
|
||||||
Job Applicant,ผู้สมัครงาน
|
Job Applicant,ผู้สมัครงาน
|
||||||
Job Opening,เปิดงาน
|
Job Opening,เปิดงาน
|
||||||
Job Profile,รายละเอียดงาน
|
Job User,รายละเอียดงาน
|
||||||
Job Title,ตำแหน่งงาน
|
Job Title,ตำแหน่งงาน
|
||||||
"Job profile, qualifications required etc.",งานคุณสมบัติรายละเอียดที่จำเป็น ฯลฯ
|
"Job User, qualifications required etc.",งานคุณสมบัติรายละเอียดที่จำเป็น ฯลฯ
|
||||||
Jobs Email Settings,งานการตั้งค่าอีเมล
|
Jobs Email Settings,งานการตั้งค่าอีเมล
|
||||||
Journal Entries,คอมเมนต์วารสาร
|
Journal Entries,คอมเมนต์วารสาร
|
||||||
Journal Entry,รายการวารสาร
|
Journal Entry,รายการวารสาร
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,จำนวนสั่ง
|
|||||||
Orders released for production.,คำสั่งปล่อยให้การผลิต
|
Orders released for production.,คำสั่งปล่อยให้การผลิต
|
||||||
Organization,องค์กร
|
Organization,องค์กร
|
||||||
Organization Name,ชื่อองค์กร
|
Organization Name,ชื่อองค์กร
|
||||||
Organization Profile,รายละเอียดองค์กร
|
Organization User,รายละเอียดองค์กร
|
||||||
Other,อื่น ๆ
|
Other,อื่น ๆ
|
||||||
Other Details,รายละเอียดอื่น ๆ
|
Other Details,รายละเอียดอื่น ๆ
|
||||||
Out Qty,ออก จำนวน
|
Out Qty,ออก จำนวน
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Itemwise推荐级别重新排序
|
|||||||
JV,合资公司
|
JV,合资公司
|
||||||
Job Applicant,求职者
|
Job Applicant,求职者
|
||||||
Job Opening,招聘开幕
|
Job Opening,招聘开幕
|
||||||
Job Profile,工作简介
|
Job User,工作简介
|
||||||
Job Title,职位
|
Job Title,职位
|
||||||
"Job profile, qualifications required etc.",所需的工作概况,学历等。
|
"Job User, qualifications required etc.",所需的工作概况,学历等。
|
||||||
Jobs Email Settings,乔布斯邮件设置
|
Jobs Email Settings,乔布斯邮件设置
|
||||||
Journal Entries,日记帐分录
|
Journal Entries,日记帐分录
|
||||||
Journal Entry,日记帐分录
|
Journal Entry,日记帐分录
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,订购数量
|
|||||||
Orders released for production.,发布生产订单。
|
Orders released for production.,发布生产订单。
|
||||||
Organization,组织
|
Organization,组织
|
||||||
Organization Name,组织名称
|
Organization Name,组织名称
|
||||||
Organization Profile,组织简介
|
Organization User,组织简介
|
||||||
Other,其他
|
Other,其他
|
||||||
Other Details,其他详细信息
|
Other Details,其他详细信息
|
||||||
Out Qty,输出数量
|
Out Qty,输出数量
|
||||||
|
|
@ -1304,9 +1304,9 @@ Itemwise Recommended Reorder Level,Itemwise推薦級別重新排序
|
|||||||
JV,合資公司
|
JV,合資公司
|
||||||
Job Applicant,求職者
|
Job Applicant,求職者
|
||||||
Job Opening,招聘開幕
|
Job Opening,招聘開幕
|
||||||
Job Profile,工作簡介
|
Job User,工作簡介
|
||||||
Job Title,職位
|
Job Title,職位
|
||||||
"Job profile, qualifications required etc.",所需的工作概況,學歷等。
|
"Job User, qualifications required etc.",所需的工作概況,學歷等。
|
||||||
Jobs Email Settings,喬布斯郵件設置
|
Jobs Email Settings,喬布斯郵件設置
|
||||||
Journal Entries,日記帳分錄
|
Journal Entries,日記帳分錄
|
||||||
Journal Entry,日記帳分錄
|
Journal Entry,日記帳分錄
|
||||||
@ -1678,7 +1678,7 @@ Ordered Quantity,訂購數量
|
|||||||
Orders released for production.,發布生產訂單。
|
Orders released for production.,發布生產訂單。
|
||||||
Organization,組織
|
Organization,組織
|
||||||
Organization Name,組織名稱
|
Organization Name,組織名稱
|
||||||
Organization Profile,組織簡介
|
Organization User,組織簡介
|
||||||
Other,其他
|
Other,其他
|
||||||
Other Details,其他詳細信息
|
Other Details,其他詳細信息
|
||||||
Out Qty,輸出數量
|
Out Qty,輸出數量
|
||||||
|
|
@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
"creation": "2013-05-24 14:24:48",
|
"creation": "2013-05-24 14:24:48",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-12-20 19:23:22",
|
"modified": "2013-12-20 19:23:23",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -32,7 +32,7 @@
|
|||||||
"fieldname": "user",
|
"fieldname": "user",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"label": "User",
|
"label": "User",
|
||||||
"options": "Profile",
|
"options": "User",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -47,7 +47,7 @@ class TransactionBase(StatusUpdater):
|
|||||||
"ref_name": self.doc.name
|
"ref_name": self.doc.name
|
||||||
}]
|
}]
|
||||||
|
|
||||||
if frappe.db.exists("Profile", self.doc.contact_by):
|
if frappe.db.exists("User", self.doc.contact_by):
|
||||||
event_doclist.append({
|
event_doclist.append({
|
||||||
"doctype": "Event User",
|
"doctype": "Event User",
|
||||||
"parentfield": "event_individuals",
|
"parentfield": "event_individuals",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user