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