Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mejora en automatización de envío de reportes #467

Open
wants to merge 8 commits into
base: diamoerp-develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"actions": [],
"creation": "2024-09-13 07:54:03.379269",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"link_doctype",
"link_name"
],
"fields": [
{
"fieldname": "link_doctype",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Link Document Type",
"options": "DocType",
"reqd": 1
},
{
"fieldname": "link_name",
"fieldtype": "Dynamic Link",
"in_list_view": 1,
"label": "Link Name",
"options": "link_doctype",
"reqd": 1
}
],
"istable": 1,
"links": [],
"modified": "2024-09-13 08:03:56.175310",
"modified_by": "Administrator",
"module": "Core",
"name": "Auto Email Report Party",
"owner": "Administrator",
"permissions": [],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Copyright (c) 2024, Frappe Technologies and contributors
# For license information, please see license.txt

# import frappe
from frappe.model.document import Document

class AutoEmailReportParty(Document):
pass
123 changes: 122 additions & 1 deletion frappe/email/doctype/auto_email_report/auto_email_report.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ frappe.ui.form.on('Auto Email Report', {
frm.set_value('email_to', frappe.session.user);
}
}
frm.trigger('setup_queries');
manage_filters(frm);

},
onload: function(frm) {
frm.trigger('setup_queries');
},
party: function(frm) {
frm.trigger('clear_recipients_table');
manage_filters(frm);
},
report: function(frm) {
frm.set_value('filters', '');
Expand All @@ -50,10 +60,12 @@ frappe.ui.form.on('Auto Email Report', {
frappe.dom.eval(r.message.script || "");
frm.script_setup_for = frm.doc.report;
frm.trigger('show_filters');
frm.trigger('populate_filter_to_override_options');
}
});
} else {
frm.trigger('show_filters');
frm.trigger('populate_filter_to_override_options');
}
},
show_filters: function(frm) {
Expand Down Expand Up @@ -91,7 +103,7 @@ frappe.ui.form.on('Auto Email Report', {
var report_filters_list = []
$.each(report_filters, function(key, val){
// Remove break fieldtype from the filters
if(val.fieldtype != 'Break') {
if(val.fieldtype != 'Break' && val.hidden != 1) {
report_filters_list.push(val)
}
})
Expand Down Expand Up @@ -135,5 +147,114 @@ frappe.ui.form.on('Auto Email Report', {
frm.set_df_property('to_date_field', 'options', date_fields);
frm.toggle_display('dynamic_report_filters_section', date_fields.length > 0);
}
},
setup_queries: function(frm) {
frm.set_query("party", function() {
return {
query: "frappe.contacts.address_and_contact.filter_dynamic_link_doctypes",
filters: {
fieldtype: ["in", ["HTML", "Text Editor"]],
fieldname: ["in", ["contact_html", "company_description"]],
}
};
});
frm.fields_dict['recipients'].grid.get_field('link_doctype').get_query = function() {
return {
filters: {
name: frm.doc.party
}
};
};
},
clear_recipients_table: function(frm) {
let party_value = frm.doc.party;
if (party_value) {
frm.clear_table('recipients');
frm.refresh_field('recipients');
}
},
populate_filter_to_override_options: function(frm) {
if (!frm.doc.report_type) {
return
}
let report_filters;
if (frm.doc.report_type === 'Custom Report'
&& frappe.query_reports[frm.doc.reference_report]
&& frappe.query_reports[frm.doc.reference_report].filters) {
report_filters = frappe.query_reports[frm.doc.reference_report].filters;
} else {
report_filters = frappe.query_reports[frm.doc.report].filters;
}
if (!report_filters) {
return
}
const keys = report_filters.filter(item => item.fieldname).map(item => item.fieldname);
keys.unshift('');
frm.fields_dict['filter_to_override'].df.options = keys.join('\n');
frm.fields_dict['filter_to_override'].refresh();
}
});


frappe.ui.form.on('Auto Email Report Party', {
recipients_add: function(frm, cdt, cdn) {
let party_value = frm.doc.party;
if (party_value) {
frappe.model.set_value(cdt, cdn, 'link_doctype', party_value);
}
}
});

const manage_filters = (frm) => {
if (frm.doc.party) {
frappe.model.with_doctype(frm.doc.party, () => set_field_options(frm));
} else {
reset_filter_and_field(frm);
}
}

const reset_filter_and_field = (frm) => {
const filter_wrapper = frm.fields_dict.filter_list.$wrapper;
filter_wrapper.empty();
frm.filter_list = [];
};

const set_field_options = (frm) => {
const filter_wrapper = frm.fields_dict.filter_list.$wrapper;
filter_wrapper.empty();
frm.filter_list = new frappe.ui.FilterGroup({
parent: filter_wrapper,
doctype: frm.doc.party,
on_change: () => {
frm.call({
method: 'frappe.email.doctype.auto_email_report.auto_email_report.get_recipients_by_filter',
args: {
doctype: frm.doc.party,
filters: get_filters(frm),
},
callback: function(response) {
if (response.message) {
frm.clear_table('recipients');
let names = response.message;
names.forEach(name => {
frm.add_child('recipients', {
link_doctype: frm.doc.party,
link_name: name,
});
});
frm.refresh_field('recipients');
} else {
frm.clear_table('recipients');
frm.refresh_field('recipients');
}
}
});
},
});
};

const get_filters = (frm) => {
return frm.filter_list.get_filters().map(filter => {
return filter.slice(0, 4);
});
}
Loading
Loading