fix: Energy point UX (#7164)

- Make user mandatory
- Allow data fieldtype for user_field
- Change fieldtype of user selection from select to autocomplete
- Put create_energy_points_log inside try catch to avoid document save failure
This commit is contained in:
Suraj Shetty 2019-03-31 16:42:45 +05:30 committed by Faris Ansari
parent 6f4ef89fb7
commit eae217eaa9
4 changed files with 14 additions and 11 deletions

View file

@ -71,7 +71,7 @@ frappe.ui.form.Review = class Review {
'title': __('Add Review'),
'fields': [{
fieldname: 'to_user',
fieldtype: 'Select',
fieldtype: 'Autocomplete',
label: __('To User'),
options: user_options,
default: user_options.includes(doc_owner) ? doc_owner : user_options[0],

View file

@ -41,7 +41,7 @@
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"reqd": 1,
"search_index": 1,
"set_only_once": 0,
"translatable": 0,
@ -259,7 +259,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
"modified": "2019-03-27 23:49:54.841493",
"modified": "2019-03-29 20:01:05.503043",
"modified_by": "Administrator",
"module": "Social",
"name": "Energy Point Log",

View file

@ -15,7 +15,8 @@ frappe.ui.form.on('Energy Point Rule', {
frappe.model.with_doctype(reference_doctype, () => {
const map_for_options = df => ({ label: df.label, value: df.fieldname });
const fields = frappe.meta.get_docfields(frm.doc.reference_doctype);
const user_fields = fields.filter(df => df.fieldtype === 'Link' && df.options === 'User')
const user_fields = fields.filter(df => (df.fieldtype === 'Link' && df.options === 'User')
|| df.fieldtype === 'Data')
.map(map_for_options)
.concat([{label: __('Owner'), value: 'owner'}]);

View file

@ -14,7 +14,7 @@ class EnergyPointRule(Document):
multiplier = 1
if self.multiplier_field:
multiplier = doc.get(self.multiplier_field, 1)
multiplier = doc.get(self.multiplier_field) or 1
points = round(self.points * multiplier)
reference_doctype = doc.doctype
@ -24,12 +24,14 @@ class EnergyPointRule(Document):
# incase of zero as result after roundoff
if not points: return
create_energy_points_log(reference_doctype, reference_name, {
'points': points,
'user': user,
'rule': rule
})
try:
create_energy_points_log(reference_doctype, reference_name, {
'points': points,
'user': user,
'rule': rule
})
except Exception as e:
frappe.log_error('apply_energy_point', e)
def process_energy_points(doc, state):