196 lines
4.3 KiB
JavaScript
196 lines
4.3 KiB
JavaScript
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
|
// License: GNU General Public License v3. See license.txt
|
|
|
|
frappe.query_reports["Accounts Payable"] = {
|
|
filters: [
|
|
{
|
|
fieldname: "company",
|
|
label: __("Company"),
|
|
fieldtype: "Link",
|
|
options: "Company",
|
|
reqd: 1,
|
|
default: frappe.defaults.get_user_default("Company"),
|
|
},
|
|
{
|
|
fieldname: "report_date",
|
|
label: __("Posting Date"),
|
|
fieldtype: "Date",
|
|
default: frappe.datetime.get_today(),
|
|
},
|
|
{
|
|
fieldname: "finance_book",
|
|
label: __("Finance Book"),
|
|
fieldtype: "Link",
|
|
options: "Finance Book",
|
|
},
|
|
{
|
|
fieldname: "cost_center",
|
|
label: __("Cost Center"),
|
|
fieldtype: "Link",
|
|
options: "Cost Center",
|
|
get_query: () => {
|
|
var company = frappe.query_report.get_filter_value("company");
|
|
return {
|
|
filters: {
|
|
company: company,
|
|
},
|
|
};
|
|
},
|
|
},
|
|
{
|
|
fieldname: "party_account",
|
|
label: __("Payable Account"),
|
|
fieldtype: "Link",
|
|
options: "Account",
|
|
get_query: () => {
|
|
var company = frappe.query_report.get_filter_value("company");
|
|
return {
|
|
filters: {
|
|
company: company,
|
|
account_type: "Payable",
|
|
is_group: 0,
|
|
},
|
|
};
|
|
},
|
|
},
|
|
{
|
|
fieldname: "ageing_based_on",
|
|
label: __("Ageing Based On"),
|
|
fieldtype: "Select",
|
|
options: "Posting Date\nDue Date\nSupplier Invoice Date",
|
|
default: "Due Date",
|
|
},
|
|
{
|
|
fieldname: "range1",
|
|
label: __("Ageing Range 1"),
|
|
fieldtype: "Int",
|
|
default: "30",
|
|
reqd: 1,
|
|
},
|
|
{
|
|
fieldname: "range2",
|
|
label: __("Ageing Range 2"),
|
|
fieldtype: "Int",
|
|
default: "60",
|
|
reqd: 1,
|
|
},
|
|
{
|
|
fieldname: "range3",
|
|
label: __("Ageing Range 3"),
|
|
fieldtype: "Int",
|
|
default: "90",
|
|
reqd: 1,
|
|
},
|
|
{
|
|
fieldname: "range4",
|
|
label: __("Ageing Range 4"),
|
|
fieldtype: "Int",
|
|
default: "120",
|
|
reqd: 1,
|
|
},
|
|
{
|
|
fieldname: "payment_terms_template",
|
|
label: __("Payment Terms Template"),
|
|
fieldtype: "Link",
|
|
options: "Payment Terms Template",
|
|
},
|
|
{
|
|
fieldname: "party_type",
|
|
label: __("Party Type"),
|
|
fieldtype: "Autocomplete",
|
|
options: get_party_type_options(),
|
|
on_change: function () {
|
|
frappe.query_report.set_filter_value("party", "");
|
|
frappe.query_report.toggle_filter_display(
|
|
"supplier_group",
|
|
frappe.query_report.get_filter_value("party_type") !== "Supplier"
|
|
);
|
|
},
|
|
},
|
|
{
|
|
fieldname: "party",
|
|
label: __("Party"),
|
|
fieldtype: "MultiSelectList",
|
|
get_data: function (txt) {
|
|
if (!frappe.query_report.filters) return;
|
|
|
|
let party_type = frappe.query_report.get_filter_value("party_type");
|
|
if (!party_type) return;
|
|
|
|
return frappe.db.get_link_options(party_type, txt);
|
|
},
|
|
},
|
|
{
|
|
fieldname: "supplier_group",
|
|
label: __("Supplier Group"),
|
|
fieldtype: "Link",
|
|
options: "Supplier Group",
|
|
hidden: 1,
|
|
},
|
|
{
|
|
fieldname: "group_by_party",
|
|
label: __("Group By Supplier"),
|
|
fieldtype: "Check",
|
|
},
|
|
{
|
|
fieldname: "based_on_payment_terms",
|
|
label: __("Based On Payment Terms"),
|
|
fieldtype: "Check",
|
|
},
|
|
{
|
|
fieldname: "show_remarks",
|
|
label: __("Show Remarks"),
|
|
fieldtype: "Check",
|
|
},
|
|
{
|
|
fieldname: "show_future_payments",
|
|
label: __("Show Future Payments"),
|
|
fieldtype: "Check",
|
|
},
|
|
{
|
|
fieldname: "in_party_currency",
|
|
label: __("In Party Currency"),
|
|
fieldtype: "Check",
|
|
},
|
|
{
|
|
fieldname: "for_revaluation_journals",
|
|
label: __("Revaluation Journals"),
|
|
fieldtype: "Check",
|
|
},
|
|
{
|
|
fieldname: "ignore_accounts",
|
|
label: __("Group by Voucher"),
|
|
fieldtype: "Check",
|
|
},
|
|
],
|
|
|
|
formatter: function (value, row, column, data, default_formatter) {
|
|
value = default_formatter(value, row, column, data);
|
|
if (data && data.bold) {
|
|
value = value.bold();
|
|
}
|
|
return value;
|
|
},
|
|
|
|
onload: function (report) {
|
|
report.page.add_inner_button(__("Accounts Payable Summary"), function () {
|
|
var filters = report.get_values();
|
|
frappe.set_route("query-report", "Accounts Payable Summary", { company: filters.company });
|
|
});
|
|
},
|
|
};
|
|
|
|
erpnext.utils.add_dimensions("Accounts Payable", 9);
|
|
|
|
function get_party_type_options() {
|
|
let options = [];
|
|
frappe.db
|
|
.get_list("Party Type", { filters: { account_type: "Payable" }, fields: ["name"] })
|
|
.then((res) => {
|
|
res.forEach((party_type) => {
|
|
options.push(party_type.name);
|
|
});
|
|
});
|
|
return options;
|
|
}
|