mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-31 10:49:09 +00:00
Merge branch 'version-11-hotfix' into version-11
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -13,4 +13,5 @@ erpnext/docs/current
|
|||||||
__pycache__
|
__pycache__
|
||||||
*~
|
*~
|
||||||
.vscode/
|
.vscode/
|
||||||
node_modules/
|
node_modules/
|
||||||
|
.idea/
|
||||||
@@ -5,7 +5,7 @@ import frappe
|
|||||||
from erpnext.hooks import regional_overrides
|
from erpnext.hooks import regional_overrides
|
||||||
from frappe.utils import getdate
|
from frappe.utils import getdate
|
||||||
|
|
||||||
__version__ = '11.1.59'
|
__version__ = '11.1.60'
|
||||||
|
|
||||||
def get_default_company(user=None):
|
def get_default_company(user=None):
|
||||||
'''Get default company for user'''
|
'''Get default company for user'''
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({
|
|||||||
filters: {
|
filters: {
|
||||||
'account': row.account
|
'account': row.account
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
me.frm.set_query("reference_name", "accounts", function(doc, cdt, cdn) {
|
me.frm.set_query("reference_name", "accounts", function(doc, cdt, cdn) {
|
||||||
|
|||||||
@@ -1,275 +1,269 @@
|
|||||||
<style>
|
<style>
|
||||||
.print-format {
|
.print-format {
|
||||||
padding: 4mm;
|
padding: 4mm;
|
||||||
font-size: 8.0pt !important;
|
font-size: 8.0pt !important;
|
||||||
}
|
}
|
||||||
.print-format td {
|
.print-format td {
|
||||||
vertical-align:middle !important;
|
vertical-align:middle !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<h2 class="text-center" style="margin-top:0">{%= __(report.report_name) %}</h2>
|
<h2 class="text-center" style="margin-top:0">{%= __(report.report_name) %}</h2>
|
||||||
<h4 class="text-center">
|
<h4 class="text-center">
|
||||||
{% if (filters.customer_name) { %}
|
{% if (filters.customer_name) { %}
|
||||||
{%= filters.customer_name %}
|
{%= filters.customer_name %}
|
||||||
{% } else { %}
|
{% } else { %}
|
||||||
{%= filters.customer || filters.supplier %}
|
{%= filters.customer || filters.supplier %}
|
||||||
{% } %}
|
|
||||||
</h4>
|
|
||||||
<h6 class="text-center">
|
|
||||||
{% if (filters.tax_id) { %}
|
|
||||||
{%= __("Tax Id: ")%} {%= filters.tax_id %}
|
|
||||||
{% } %}
|
{% } %}
|
||||||
</h6>
|
</h4>
|
||||||
<h5 class="text-center">
|
<h6 class="text-center">
|
||||||
{%= __(filters.ageing_based_on) %}
|
{% if (filters.tax_id) { %}
|
||||||
{%= __("Until") %}
|
{%= __("Tax Id: ")%} {%= filters.tax_id %}
|
||||||
{%= frappe.datetime.str_to_user(filters.report_date) %}
|
{% } %}
|
||||||
</h5>
|
</h6>
|
||||||
|
<h5 class="text-center">
|
||||||
|
{%= __(filters.ageing_based_on) %}
|
||||||
|
{%= __("Until") %}
|
||||||
|
{%= frappe.datetime.str_to_user(filters.report_date) %}
|
||||||
|
</h5>
|
||||||
|
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<div class="pull-left">
|
<div class="pull-left">
|
||||||
{% if(filters.payment_terms) { %}
|
{% if(filters.payment_terms) { %}
|
||||||
<strong>{%= __("Payment Terms") %}:</strong> {%= filters.payment_terms %}
|
<strong>{%= __("Payment Terms") %}:</strong> {%= filters.payment_terms %}
|
||||||
{% } %}
|
{% } %}
|
||||||
|
</div>
|
||||||
|
<div class="pull-right">
|
||||||
|
{% if(filters.credit_limit) { %}
|
||||||
|
<strong>{%= __("Credit Limit") %}:</strong> {%= format_currency(filters.credit_limit) %}
|
||||||
|
{% } %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right">
|
|
||||||
{% if(filters.credit_limit) { %}
|
{% if(filters.show_future_payments) { %}
|
||||||
<strong>{%= __("Credit Limit") %}:</strong> {%= format_currency(filters.credit_limit) %}
|
{% var balance_row = data.slice(-1).pop();
|
||||||
|
var range1 = report.columns[11].label;
|
||||||
|
var range2 = report.columns[12].label;
|
||||||
|
var range3 = report.columns[13].label;
|
||||||
|
var range4 = report.columns[14].label;
|
||||||
|
var range5 = report.columns[15].label;
|
||||||
|
%}
|
||||||
|
{% if(balance_row) { %}
|
||||||
|
<table class="table table-bordered table-condensed">
|
||||||
|
<caption class="text-right">(Amount in {%= data[0]["currency"] || "" %})</caption>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 30mm;">
|
||||||
|
<col style="width: 18mm;">
|
||||||
|
<col style="width: 18mm;">
|
||||||
|
<col style="width: 18mm;">
|
||||||
|
<col style="width: 18mm;">
|
||||||
|
<col style="width: 18mm;">
|
||||||
|
<col style="width: 18mm;">
|
||||||
|
<col style="width: 18mm;">
|
||||||
|
</colgroup>
|
||||||
|
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{%= __(" ") %}</th>
|
||||||
|
<th>{%= __(range1) %}</th>
|
||||||
|
<th>{%= __(range2) %}</th>
|
||||||
|
<th>{%= __(range3) %}</th>
|
||||||
|
<th>{%= __(range4) %}</th>
|
||||||
|
<th>{%= __(range5) %}</th>
|
||||||
|
<th>{%= __("Total") %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>{%= __("Total Outstanding") %}</td>
|
||||||
|
<td class="text-right">{%= format_number(balance_row["range1"], null, 2) %}</td>
|
||||||
|
<td class="text-right">{%= format_currency(balance_row["range2"]) %}</td>
|
||||||
|
<td class="text-right">{%= format_currency(balance_row["range3"]) %}</td>
|
||||||
|
<td class="text-right">{%= format_currency(balance_row["range4"]) %}</td>
|
||||||
|
<td class="text-right">{%= format_currency(balance_row["range5"]) %}</td>
|
||||||
|
<td class="text-right">
|
||||||
|
{%= format_currency(flt(balance_row["outstanding"]), data[data.length-1]["currency"]) %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<td>{%= __("Future Payments") %}</td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="text-right">
|
||||||
|
{%= format_currency(flt(balance_row[("future_amount")]), data[data.length-1]["currency"]) %}
|
||||||
|
</td>
|
||||||
|
<tr class="cvs-footer">
|
||||||
|
<th class="text-left">{%= __("Cheques Required") %}</th>
|
||||||
|
<th></th>
|
||||||
|
<th></th>
|
||||||
|
<th></th>
|
||||||
|
<th></th>
|
||||||
|
<th></th>
|
||||||
|
<th class="text-right">
|
||||||
|
{%= format_currency(flt(balance_row["outstanding"] - balance_row[("future_amount")]), data[data.length-1]["currency"]) %}</th>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
{% } %}
|
||||||
{% } %}
|
{% } %}
|
||||||
</div>
|
<table class="table table-bordered">
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if(filters.show_future_payments) { %}
|
|
||||||
{% var balance_row = data.slice(-1).pop();
|
|
||||||
var range1 = report.columns[11].label;
|
|
||||||
var range2 = report.columns[12].label;
|
|
||||||
var range3 = report.columns[13].label;
|
|
||||||
var range4 = report.columns[14].label;
|
|
||||||
var range5 = report.columns[15].label;
|
|
||||||
var range6 = report.columns[16].label;
|
|
||||||
%}
|
|
||||||
{% if(balance_row) { %}
|
|
||||||
<table class="table table-bordered table-condensed">
|
|
||||||
<caption class="text-right">(Amount in {%= data[0][__("currency")] || "" %})</caption>
|
|
||||||
<colgroup>
|
|
||||||
<col style="width: 30mm;">
|
|
||||||
<col style="width: 18mm;">
|
|
||||||
<col style="width: 18mm;">
|
|
||||||
<col style="width: 18mm;">
|
|
||||||
<col style="width: 18mm;">
|
|
||||||
<col style="width: 18mm;">
|
|
||||||
<col style="width: 18mm;">
|
|
||||||
<col style="width: 18mm;">
|
|
||||||
<col style="width: 18mm;">
|
|
||||||
</colgroup>
|
|
||||||
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{%= __(" ") %}</th>
|
{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
|
||||||
<th>{%= __(range1) %}</th>
|
<th style="width: 10%">{%= __("Date") %}</th>
|
||||||
<th>{%= __(range2) %}</th>
|
<th style="width: 4%">{%= __("Age (Days)") %}</th>
|
||||||
<th>{%= __(range3) %}</th>
|
|
||||||
<th>{%= __(range4) %}</th>
|
{% if(report.report_name === "Accounts Receivable" && filters.show_sales_person) { %}
|
||||||
<th>{%= __(range5) %}</th>
|
<th style="width: 14%">{%= __("Reference") %}</th>
|
||||||
<th>{%= __(range6) %}</th>
|
<th style="width: 10%">{%= __("Sales Person") %}</th>
|
||||||
<th>{%= __("Total") %}</th>
|
{% } else { %}
|
||||||
|
<th style="width: 24%">{%= __("Reference") %}</th>
|
||||||
|
{% } %}
|
||||||
|
{% if(!filters.show_future_payments) { %}
|
||||||
|
<th style="width: 20%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
|
||||||
|
{% } %}
|
||||||
|
<th style="width: 10%; text-align: right">{%= __("Invoiced Amount") %}</th>
|
||||||
|
{% if(!filters.show_future_payments) { %}
|
||||||
|
<th style="width: 10%; text-align: right">{%= __("Paid Amount") %}</th>
|
||||||
|
<th style="width: 10%; text-align: right">{%= report.report_name === "Accounts Receivable" ? __('Credit Note') : __('Debit Note') %}</th>
|
||||||
|
{% } %}
|
||||||
|
<th style="width: 10%; text-align: right">{%= __("Outstanding Amount") %}</th>
|
||||||
|
{% if(filters.show_future_payments) { %}
|
||||||
|
{% if(report.report_name === "Accounts Receivable") { %}
|
||||||
|
<th style="width: 12%">{%= __("Customer LPO No.") %}</th>
|
||||||
|
{% } %}
|
||||||
|
<th style="width: 10%">{%= __("Future Payment Ref") %}</th>
|
||||||
|
<th style="width: 10%">{%= __("Future Payment Amount") %}</th>
|
||||||
|
<th style="width: 10%">{%= __("Remaining Balance") %}</th>
|
||||||
|
{% } %}
|
||||||
|
{% } else { %}
|
||||||
|
<th style="width: 40%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
|
||||||
|
<th style="width: 15%">{%= __("Total Invoiced Amount") %}</th>
|
||||||
|
<th style="width: 15%">{%= __("Total Paid Amount") %}</th>
|
||||||
|
<th style="width: 15%">{%= report.report_name === "Accounts Receivable Summary" ? __('Credit Note Amount') : __('Debit Note Amount') %}</th>
|
||||||
|
<th style="width: 15%">{%= __("Total Outstanding Amount") %}</th>
|
||||||
|
{% } %}
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
{% for(var i=0, l=data.length; i<l; i++) { %}
|
||||||
<td>{%= __("Total Outstanding") %}</td>
|
<tr>
|
||||||
<td class="text-right">{%= format_number(balance_row[range1], null, 2) %}</td>
|
{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
|
||||||
<td class="text-right">{%= format_currency(balance_row[range2]) %}</td>
|
{% if(data[i]["party"]) { %}
|
||||||
<td class="text-right">{%= format_currency(balance_row[range3]) %}</td>
|
<td>{%= frappe.datetime.str_to_user(data[i]["posting_date"]) %}</td>
|
||||||
<td class="text-right">{%= format_currency(balance_row[range4]) %}</td>
|
<td style="text-align: right">{%= data[i]["age"] %}</td>
|
||||||
<td class="text-right">{%= format_currency(balance_row[range5]) %}</td>
|
<td>
|
||||||
<td class="text-right">{%= format_currency(balance_row[range6]) %}</td>
|
{% if(!filters.show_future_payments) { %}
|
||||||
<td class="text-right">
|
{%= data[i]["voucher_type"] %}
|
||||||
{%= format_currency(flt(balance_row[("outstanding_amount")]), data[data.length-1]["currency"]) %}
|
<br>
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<td>{%= __("PDC/LC") %}</td>
|
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
<td class="text-right">
|
|
||||||
{%= format_currency(flt(balance_row[("pdc/lc_amount")]), data[data.length-1]["currency"]) %}
|
|
||||||
</td>
|
|
||||||
<tr class="cvs-footer">
|
|
||||||
<th class="text-left">{%= __("Cheques Required") %}</th>
|
|
||||||
<th></th>
|
|
||||||
<th></th>
|
|
||||||
<th></th>
|
|
||||||
<th></th>
|
|
||||||
<th></th>
|
|
||||||
<th></th>
|
|
||||||
<th class="text-right">
|
|
||||||
{%= format_currency(flt(balance_row[("outstanding_amount")]-balance_row[("pdc/lc_amount")]), data[data.length-1]["currency"]) %}</th>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
|
|
||||||
</table>
|
|
||||||
{% } %}
|
|
||||||
{% } %}
|
|
||||||
<table class="table table-bordered">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
|
|
||||||
<th style="width: 10%">{%= __("Date") %}</th>
|
|
||||||
<th style="width: 4%">{%= __("Age (Days)") %}</th>
|
|
||||||
|
|
||||||
{% if(report.report_name === "Accounts Receivable" && filters.show_sales_person) { %}
|
|
||||||
<th style="width: 14%">{%= __("Reference") %}</th>
|
|
||||||
<th style="width: 10%">{%= __("Sales Person") %}</th>
|
|
||||||
{% } else { %}
|
|
||||||
<th style="width: 24%">{%= __("Reference") %}</th>
|
|
||||||
{% } %}
|
|
||||||
{% if(!filters.show_future_payments) { %}
|
|
||||||
<th style="width: 20%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
|
|
||||||
{% } %}
|
|
||||||
<th style="width: 10%; text-align: right">{%= __("Invoiced Amount") %}</th>
|
|
||||||
{% if(!filters.show_future_payments) { %}
|
|
||||||
<th style="width: 10%; text-align: right">{%= __("Paid Amount") %}</th>
|
|
||||||
<th style="width: 10%; text-align: right">{%= report.report_name === "Accounts Receivable" ? __('Credit Note') : __('Debit Note') %}</th>
|
|
||||||
{% } %}
|
|
||||||
<th style="width: 10%; text-align: right">{%= __("Outstanding Amount") %}</th>
|
|
||||||
{% if(filters.show_future_payments) { %}
|
|
||||||
{% if(report.report_name === "Accounts Receivable") { %}
|
|
||||||
<th style="width: 12%">{%= __("Customer LPO No.") %}</th>
|
|
||||||
{% } %}
|
|
||||||
<th style="width: 10%">{%= __("PDC/LC Ref") %}</th>
|
|
||||||
<th style="width: 10%">{%= __("PDC/LC Amount") %}</th>
|
|
||||||
<th style="width: 10%">{%= __("Remaining Balance") %}</th>
|
|
||||||
{% } %}
|
|
||||||
{% } else { %}
|
|
||||||
<th style="width: 40%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
|
|
||||||
<th style="width: 15%">{%= __("Total Invoiced Amount") %}</th>
|
|
||||||
<th style="width: 15%">{%= __("Total Paid Amount") %}</th>
|
|
||||||
<th style="width: 15%">{%= report.report_name === "Accounts Receivable Summary" ? __('Credit Note Amount') : __('Debit Note Amount') %}</th>
|
|
||||||
<th style="width: 15%">{%= __("Total Outstanding Amount") %}</th>
|
|
||||||
{% } %}
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for(var i=0, l=data.length; i<l; i++) { %}
|
|
||||||
<tr>
|
|
||||||
{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
|
|
||||||
{% if(data[i][__("Customer")] || data[i][__("Supplier")]) { %}
|
|
||||||
<td>{%= frappe.datetime.str_to_user(data[i]["posting_date"]) %}</td>
|
|
||||||
<td style="text-align: right">{%= data[i][__("Age (Days)")] %}</td>
|
|
||||||
<td>
|
|
||||||
{% if(!filters.show_future_payments) { %}
|
|
||||||
{%= data[i]["voucher_type"] %}
|
|
||||||
<br>
|
|
||||||
{% } %}
|
|
||||||
{%= data[i]["voucher_no"] %}
|
|
||||||
</td>
|
|
||||||
|
|
||||||
{% if(report.report_name === "Accounts Receivable" && filters.show_sales_person) { %}
|
|
||||||
<td>{%= data[i]["sales_person"] %}</td>
|
|
||||||
{% } %}
|
|
||||||
|
|
||||||
{% if(!filters.show_future_payments) { %}
|
|
||||||
<td>
|
|
||||||
{% if(!(filters.customer || filters.supplier)) { %}
|
|
||||||
{%= data[i][__("Customer")] || data[i][__("Supplier")] %}
|
|
||||||
{% if(data[i][__("Customer Name")] && data[i][__("Customer Name")] != data[i][__("Customer")]) { %}
|
|
||||||
<br> {%= data[i][__("Customer Name")] %}
|
|
||||||
{% } else if(data[i][__("Supplier Name")] != data[i][__("Supplier")]) { %}
|
|
||||||
<br> {%= data[i][__("Supplier Name")] %}
|
|
||||||
{% } %}
|
{% } %}
|
||||||
|
{%= data[i]["voucher_no"] %}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
{% if(report.report_name === "Accounts Receivable" && filters.show_sales_person) { %}
|
||||||
|
<td>{%= data[i]["sales_person"] %}</td>
|
||||||
{% } %}
|
{% } %}
|
||||||
<div>
|
|
||||||
{% if data[i][__("Remarks")] %}
|
|
||||||
{%= __("Remarks") %}:
|
|
||||||
{%= data[i][__("Remarks")] %}
|
|
||||||
{% } %}
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
{% } %}
|
|
||||||
|
|
||||||
<td style="text-align: right">
|
{% if(!filters.show_future_payments) { %}
|
||||||
{%= format_currency(data[i]["invoiced_amount"], data[i]["currency"]) %}</td>
|
|
||||||
|
|
||||||
{% if(!filters.show_future_payments) { %}
|
|
||||||
<td style="text-align: right">
|
|
||||||
{%= format_currency(data[i]["paid_amount"], data[i]["currency"]) %}</td>
|
|
||||||
<td style="text-align: right">
|
|
||||||
{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["credit_note"], data[i]["currency"]) : format_currency(data[i]["debit_note"], data[i]["currency"]) %}</td>
|
|
||||||
{% } %}
|
|
||||||
<td style="text-align: right">
|
|
||||||
{%= format_currency(data[i]["outstanding_amount"], data[i]["currency"]) %}</td>
|
|
||||||
|
|
||||||
{% if(filters.show_future_payments) { %}
|
|
||||||
{% if(report.report_name === "Accounts Receivable") { %}
|
|
||||||
<td style="text-align: right">
|
|
||||||
{%= data[i]["po_no"] %}</td>
|
|
||||||
{% } %}
|
|
||||||
<td style="text-align: right">{%= data[i][("pdc/lc_ref")] %}</td>
|
|
||||||
<td style="text-align: right">{%= format_currency(data[i][("pdc/lc_amount")], data[i]["currency"]) %}</td>
|
|
||||||
<td style="text-align: right">{%= format_currency(data[i][("remaining_balance")], data[i]["currency"]) %}</td>
|
|
||||||
{% } %}
|
|
||||||
{% } else { %}
|
|
||||||
<td></td>
|
|
||||||
{% if(!filters.show_future_payments) { %}
|
|
||||||
<td></td>
|
|
||||||
{% } %}
|
|
||||||
{% if(report.report_name === "Accounts Receivable" && filters.show_sales_person) { %}
|
|
||||||
<td></td>
|
|
||||||
{% } %}
|
|
||||||
<td></td>
|
|
||||||
<td style="text-align: right"><b>{%= __("Total") %}</b></td>
|
|
||||||
<td style="text-align: right">
|
|
||||||
{%= format_currency(data[i]["invoiced_amount"], data[i]["currency"] ) %}</td>
|
|
||||||
|
|
||||||
{% if(!filters.show_future_payments) { %}
|
|
||||||
<td style="text-align: right">
|
|
||||||
{%= format_currency(data[i]["paid_amount"], data[i]["currency"]) %}</td>
|
|
||||||
<td style="text-align: right">{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["credit_note"], data[i]["currency"]) : format_currency(data[i]["debit_note"], data[i]["currency"]) %} </td>
|
|
||||||
{% } %}
|
|
||||||
<td style="text-align: right">
|
|
||||||
{%= format_currency(data[i]["outstanding_amount"], data[i]["currency"]) %}</td>
|
|
||||||
|
|
||||||
{% if(filters.show_future_payments) { %}
|
|
||||||
{% if(report.report_name === "Accounts Receivable") { %}
|
|
||||||
<td style="text-align: right">
|
|
||||||
{%= data[i][__("Customer LPO")] %}</td>
|
|
||||||
{% } %}
|
|
||||||
<td style="text-align: right">{%= data[i][("pdc/lc_ref")] %}</td>
|
|
||||||
<td style="text-align: right">{%= format_currency(data[i][("pdc/lc_amount")], data[i]["currency"]) %}</td>
|
|
||||||
<td style="text-align: right">{%= format_currency(data[i][("remaining_balance")], data[i]["currency"]) %}</td>
|
|
||||||
{% } %}
|
|
||||||
{% } %}
|
|
||||||
{% } else { %}
|
|
||||||
{% if(data[i][__("Customer")] || data[i][__("Supplier")]|| " ") { %}
|
|
||||||
{% if((data[i][__("Customer")] || data[i][__("Supplier")]) != __("'Total'")) { %}
|
|
||||||
<td>
|
<td>
|
||||||
{% if(!(filters.customer || filters.supplier)) { %}
|
{% if(!(filters.customer || filters.supplier)) { %}
|
||||||
{%= data[i][__("Customer")] || data[i][__("Supplier")] %}
|
{%= data[i]["party"] %}
|
||||||
{% if(data[i][__("Customer Name")] && data[i][__("Customer Name")] != data[i][__("Customer")]) { %}
|
{% if(data[i]["customer_name"] && data[i]["customer_name"] != data[i]["party"]) { %}
|
||||||
<br> {%= data[i][__("Customer Name")] %}
|
<br> {%= data[i]["customer_name"] %}
|
||||||
{% } else if(data[i][__("Supplier Name")] != data[i][__("Supplier")]) { %}
|
{% } else if(data[i]["supplier_name"] != data[i]["party"]) { %}
|
||||||
<br> {%= data[i][__("Supplier Name")] %}
|
<br> {%= data[i]["supplier_name"] %}
|
||||||
{% } %}
|
{% } %}
|
||||||
{% } %}
|
{% } %}
|
||||||
<br>{%= __("Remarks") %}:
|
<div>
|
||||||
{%= data[i][__("Remarks")] %}
|
{% if data[i]["remarks"] %}
|
||||||
|
{%= __("Remarks") %}:
|
||||||
|
{%= data[i]["remarks"] %}
|
||||||
|
{% } %}
|
||||||
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
{% } %}
|
||||||
|
|
||||||
|
<td style="text-align: right">
|
||||||
|
{%= format_currency(data[i]["invoiced"], data[i]["currency"]) %}</td>
|
||||||
|
|
||||||
|
{% if(!filters.show_future_payments) { %}
|
||||||
|
<td style="text-align: right">
|
||||||
|
{%= format_currency(data[i]["paid"], data[i]["currency"]) %}</td>
|
||||||
|
<td style="text-align: right">
|
||||||
|
{%= format_currency(data[i]["credit_note"], data[i]["currency"]) %}</td>
|
||||||
|
{% } %}
|
||||||
|
<td style="text-align: right">
|
||||||
|
{%= format_currency(data[i]["outstanding"], data[i]["currency"]) %}</td>
|
||||||
|
|
||||||
|
{% if(filters.show_future_payments) { %}
|
||||||
|
{% if(report.report_name === "Accounts Receivable") { %}
|
||||||
|
<td style="text-align: right">
|
||||||
|
{%= data[i]["po_no"] %}</td>
|
||||||
|
{% } %}
|
||||||
|
<td style="text-align: right">{%= data[i]["future_ref"] %}</td>
|
||||||
|
<td style="text-align: right">{%= format_currency(data[i]["future_amount"], data[i]["currency"]) %}</td>
|
||||||
|
<td style="text-align: right">{%= format_currency(data[i]["remaining_balance"], data[i]["currency"]) %}</td>
|
||||||
|
{% } %}
|
||||||
{% } else { %}
|
{% } else { %}
|
||||||
<td><b>{%= __("Total") %}</b></td>
|
<td></td>
|
||||||
|
{% if(!filters.show_future_payments) { %}
|
||||||
|
<td></td>
|
||||||
|
{% } %}
|
||||||
|
{% if(report.report_name === "Accounts Receivable" && filters.show_sales_person) { %}
|
||||||
|
<td></td>
|
||||||
|
{% } %}
|
||||||
|
<td></td>
|
||||||
|
<td style="text-align: right"><b>{%= __("Total") %}</b></td>
|
||||||
|
<td style="text-align: right">
|
||||||
|
{%= format_currency(data[i]["invoiced"], data[i]["currency"] ) %}</td>
|
||||||
|
|
||||||
|
{% if(!filters.show_future_payments) { %}
|
||||||
|
<td style="text-align: right">
|
||||||
|
{%= format_currency(data[i]["paid"], data[i]["currency"]) %}</td>
|
||||||
|
<td style="text-align: right">{%= format_currency(data[i]["credit_note"], data[i]["currency"]) %} </td>
|
||||||
|
{% } %}
|
||||||
|
<td style="text-align: right">
|
||||||
|
{%= format_currency(data[i]["outstanding"], data[i]["currency"]) %}</td>
|
||||||
|
|
||||||
|
{% if(filters.show_future_payments) { %}
|
||||||
|
{% if(report.report_name === "Accounts Receivable") { %}
|
||||||
|
<td style="text-align: right">
|
||||||
|
{%= data[i]["po_no"] %}</td>
|
||||||
|
{% } %}
|
||||||
|
<td style="text-align: right">{%= data[i]["future_ref"] %}</td>
|
||||||
|
<td style="text-align: right">{%= format_currency(data[i]["future_amount"], data[i]["currency"]) %}</td>
|
||||||
|
<td style="text-align: right">{%= format_currency(data[i]["remaining_balance"], data[i]["currency"]) %}</td>
|
||||||
|
{% } %}
|
||||||
|
{% } %}
|
||||||
|
{% } else { %}
|
||||||
|
{% if(data[i]["party"]|| " ") { %}
|
||||||
|
{% if((data[i]["party"]) != __("'Total'")) { %}
|
||||||
|
<td>
|
||||||
|
{% if(!(filters.customer || filters.supplier)) { %}
|
||||||
|
{%= data[i]["party"] %}
|
||||||
|
{% if(data[i]["customer_name"] && data[i]["customer_name"] != data[i]["party"]) { %}
|
||||||
|
<br> {%= data[i]["customer_name"] %}
|
||||||
|
{% } else if(data[i]["supplier_name"] != data[i]["party"]) { %}
|
||||||
|
<br> {%= data[i]["supplier_name"] %}
|
||||||
|
{% } %}
|
||||||
|
{% } %}
|
||||||
|
<br>{%= __("Remarks") %}:
|
||||||
|
{%= data[i]["remarks"] %}
|
||||||
|
</td>
|
||||||
|
{% } else { %}
|
||||||
|
<td><b>{%= __("Total") %}</b></td>
|
||||||
|
{% } %}
|
||||||
|
<td style="text-align: right">{%= format_currency(data[i]["invoiced"], data[i]["currency"]) %}</td>
|
||||||
|
<td style="text-align: right">{%= format_currency(data[i]["paid"], data[i]["currency"]) %}</td>
|
||||||
|
<td style="text-align: right">{%= format_currency(data[i]["credit_note"], data[i]["currency"]) %}</td>
|
||||||
|
<td style="text-align: right">{%= format_currency(data[i]["outstanding"], data[i]["currency"]) %}</td>
|
||||||
{% } %}
|
{% } %}
|
||||||
<td style="text-align: right">{%= format_currency(data[i][("total_invoiced_amt")], data[i]["currency"]) %}</td>
|
|
||||||
<td style="text-align: right">{%= format_currency(data[i][("total_paid_amt")], data[i]["currency"]) %}</td>
|
|
||||||
<td style="text-align: right">{%= report.report_name === "Accounts Receivable Summary" ? format_currency(data[i][__("credit_note_amt")], data[i]["currency"]) : format_currency(data[i][__("debit_note_amt")], data[i]["currency"]) %}</td>
|
|
||||||
<td style="text-align: right">{%= format_currency(data[i][("total_outstanding_amt")], data[i]["currency"]) %}</td>
|
|
||||||
{% } %}
|
{% } %}
|
||||||
|
</tr>
|
||||||
{% } %}
|
{% } %}
|
||||||
</tr>
|
</tbody>
|
||||||
{% } %}
|
</table>
|
||||||
</tbody>
|
<p class="text-right text-muted">{{ __("Printed On ") }}{%= frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string()) %}</p>
|
||||||
</table>
|
|
||||||
<p class="text-right text-muted">{{ __("Printed On ") }}{%= frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string()) %}</p>
|
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ def get_cash_flow_data(fiscal_year, companies, filters):
|
|||||||
section_data.append(net_profit_loss)
|
section_data.append(net_profit_loss)
|
||||||
|
|
||||||
for account in cash_flow_account['account_types']:
|
for account in cash_flow_account['account_types']:
|
||||||
account_data = get_account_type_based_data(account['account_type'], companies, fiscal_year)
|
account_data = get_account_type_based_data(account['account_type'], companies, fiscal_year, filters)
|
||||||
account_data.update({
|
account_data.update({
|
||||||
"account_name": account['label'],
|
"account_name": account['label'],
|
||||||
"account": account['label'],
|
"account": account['label'],
|
||||||
@@ -148,12 +148,12 @@ def get_cash_flow_data(fiscal_year, companies, filters):
|
|||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def get_account_type_based_data(account_type, companies, fiscal_year):
|
def get_account_type_based_data(account_type, companies, fiscal_year, filters):
|
||||||
data = {}
|
data = {}
|
||||||
total = 0
|
total = 0
|
||||||
for company in companies:
|
for company in companies:
|
||||||
amount = get_account_type_based_gl_data(company,
|
amount = get_account_type_based_gl_data(company,
|
||||||
fiscal_year.year_start_date, fiscal_year.year_end_date, account_type)
|
fiscal_year.year_start_date, fiscal_year.year_end_date, account_type, filters)
|
||||||
|
|
||||||
if amount and account_type == "Depreciation":
|
if amount and account_type == "Depreciation":
|
||||||
amount *= -1
|
amount *= -1
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ frappe.query_reports["Payment Period Based On Invoice Date"] = {
|
|||||||
fieldname:"payment_type",
|
fieldname:"payment_type",
|
||||||
label: __("Payment Type"),
|
label: __("Payment Type"),
|
||||||
fieldtype: "Select",
|
fieldtype: "Select",
|
||||||
options: "Incoming\nOutgoing",
|
options: __("Incoming")+"\n"+__("Outgoing"),
|
||||||
default: "Incoming"
|
default: __("Incoming")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname":"party_type",
|
"fieldname":"party_type",
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from frappe.utils import cint, cstr, getdate
|
from frappe.utils import cint, cstr, getdate, flt
|
||||||
import dateutil
|
import dateutil
|
||||||
from frappe.model.naming import set_name_by_naming_series
|
from frappe.model.naming import set_name_by_naming_series
|
||||||
from erpnext.healthcare.doctype.healthcare_settings.healthcare_settings import get_receivable_account,get_income_account,send_registration_sms
|
from erpnext.healthcare.doctype.healthcare_settings.healthcare_settings import get_receivable_account,get_income_account,send_registration_sms
|
||||||
@@ -64,7 +64,7 @@ class Patient(Document):
|
|||||||
def invoice_patient_registration(self):
|
def invoice_patient_registration(self):
|
||||||
frappe.db.set_value("Patient", self.name, "disabled", 0)
|
frappe.db.set_value("Patient", self.name, "disabled", 0)
|
||||||
send_registration_sms(self)
|
send_registration_sms(self)
|
||||||
if(frappe.get_value("Healthcare Settings", None, "registration_fee")>0):
|
if(flt(frappe.get_value("Healthcare Settings", None, "registration_fee"))>0):
|
||||||
company = frappe.defaults.get_user_default('company')
|
company = frappe.defaults.get_user_default('company')
|
||||||
if not company:
|
if not company:
|
||||||
company = frappe.db.get_value("Global Defaults", None, "default_company")
|
company = frappe.db.get_value("Global Defaults", None, "default_company")
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ class ProductionPlan(Document):
|
|||||||
self.get_mr_items()
|
self.get_mr_items()
|
||||||
|
|
||||||
def get_so_items(self):
|
def get_so_items(self):
|
||||||
so_list = [d.sales_order for d in self.sales_orders if d.sales_order]
|
so_list = [d.sales_order for d in self.get("sales_orders", []) if d.sales_order]
|
||||||
if not so_list:
|
if not so_list:
|
||||||
msgprint(_("Please enter Sales Orders in the above table"))
|
msgprint(_("Please enter Sales Orders in the above table"))
|
||||||
return []
|
return []
|
||||||
@@ -132,7 +132,7 @@ class ProductionPlan(Document):
|
|||||||
self.calculate_total_planned_qty()
|
self.calculate_total_planned_qty()
|
||||||
|
|
||||||
def get_mr_items(self):
|
def get_mr_items(self):
|
||||||
mr_list = [d.material_request for d in self.material_requests if d.material_request]
|
mr_list = [d.material_request for d in self.get("material_requests", []) if d.material_request]
|
||||||
if not mr_list:
|
if not mr_list:
|
||||||
msgprint(_("Please enter Material Requests in the above table"))
|
msgprint(_("Please enter Material Requests in the above table"))
|
||||||
return []
|
return []
|
||||||
|
|||||||
@@ -147,6 +147,15 @@ frappe.ui.form.on("Timesheet Detail", {
|
|||||||
calculate_time_and_amount(frm);
|
calculate_time_and_amount(frm);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
task: (frm, cdt, cdn) => {
|
||||||
|
let row = frm.selected_doc;
|
||||||
|
if (row.task) {
|
||||||
|
frappe.db.get_value("Task", row.task, "project", (r) => {
|
||||||
|
frappe.model.set_value(cdt, cdn, "project", r.project);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
from_time: function(frm, cdt, cdn) {
|
from_time: function(frm, cdt, cdn) {
|
||||||
calculate_end_time(frm, cdt, cdn);
|
calculate_end_time(frm, cdt, cdn);
|
||||||
},
|
},
|
||||||
@@ -200,9 +209,6 @@ frappe.ui.form.on("Timesheet Detail", {
|
|||||||
},
|
},
|
||||||
|
|
||||||
activity_type: function(frm, cdt, cdn) {
|
activity_type: function(frm, cdt, cdn) {
|
||||||
frm.script_manager.copy_from_first_row('time_logs', frm.selected_doc,
|
|
||||||
'project');
|
|
||||||
|
|
||||||
frappe.call({
|
frappe.call({
|
||||||
method: "erpnext.projects.doctype.timesheet.timesheet.get_activity_cost",
|
method: "erpnext.projects.doctype.timesheet.timesheet.get_activity_cost",
|
||||||
args: {
|
args: {
|
||||||
|
|||||||
@@ -148,12 +148,17 @@ class Timesheet(Document):
|
|||||||
def validate_time_logs(self):
|
def validate_time_logs(self):
|
||||||
for data in self.get('time_logs'):
|
for data in self.get('time_logs'):
|
||||||
self.validate_overlap(data)
|
self.validate_overlap(data)
|
||||||
|
self.validate_task_project()
|
||||||
|
|
||||||
def validate_overlap(self, data):
|
def validate_overlap(self, data):
|
||||||
settings = frappe.get_single('Projects Settings')
|
settings = frappe.get_single('Projects Settings')
|
||||||
self.validate_overlap_for("user", data, self.user, settings.ignore_user_time_overlap)
|
self.validate_overlap_for("user", data, self.user, settings.ignore_user_time_overlap)
|
||||||
self.validate_overlap_for("employee", data, self.employee, settings.ignore_employee_time_overlap)
|
self.validate_overlap_for("employee", data, self.employee, settings.ignore_employee_time_overlap)
|
||||||
|
|
||||||
|
def validate_task_project(self):
|
||||||
|
for log in self.time_logs:
|
||||||
|
log.project = log.project or frappe.db.get_value("Task", log.task, "project")
|
||||||
|
|
||||||
def validate_overlap_for(self, fieldname, args, value, ignore_validation=False):
|
def validate_overlap_for(self, fieldname, args, value, ignore_validation=False):
|
||||||
if not value or ignore_validation:
|
if not value or ignore_validation:
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -40,6 +40,16 @@ class Analytics(object):
|
|||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"width": 140
|
"width": 140
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if self.filters.tree_type == "Item":
|
||||||
|
self.columns.append({
|
||||||
|
"label": _("UOM"),
|
||||||
|
"fieldname": 'stock_uom',
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"options": "UOM",
|
||||||
|
"width": 100
|
||||||
|
})
|
||||||
|
|
||||||
for end_date in self.periodic_daterange:
|
for end_date in self.periodic_daterange:
|
||||||
period = self.get_period(end_date)
|
period = self.get_period(end_date)
|
||||||
self.columns.append({
|
self.columns.append({
|
||||||
@@ -107,7 +117,7 @@ class Analytics(object):
|
|||||||
value_field = 'qty'
|
value_field = 'qty'
|
||||||
|
|
||||||
self.entries = frappe.db.sql("""
|
self.entries = frappe.db.sql("""
|
||||||
select i.item_code as entity, i.item_name as entity_name, i.{value_field} as value_field, s.{date_field}
|
select i.item_code as entity, i.item_name as entity_name, i.stock_uom, i.{value_field} as value_field, s.{date_field}
|
||||||
from `tab{doctype} Item` i , `tab{doctype}` s
|
from `tab{doctype} Item` i , `tab{doctype}` s
|
||||||
where s.name = i.parent and i.docstatus = 1 and s.company = %s
|
where s.name = i.parent and i.docstatus = 1 and s.company = %s
|
||||||
and s.{date_field} between %s and %s
|
and s.{date_field} between %s and %s
|
||||||
@@ -176,6 +186,10 @@ class Analytics(object):
|
|||||||
total += amount
|
total += amount
|
||||||
|
|
||||||
row["total"] = total
|
row["total"] = total
|
||||||
|
|
||||||
|
if self.filters.tree_type == "Item":
|
||||||
|
row["stock_uom"] = period_data.get("stock_uom")
|
||||||
|
|
||||||
self.data.append(row)
|
self.data.append(row)
|
||||||
|
|
||||||
def get_rows_by_group(self):
|
def get_rows_by_group(self):
|
||||||
@@ -210,6 +224,9 @@ class Analytics(object):
|
|||||||
self.entity_periodic_data.setdefault(d.entity, frappe._dict()).setdefault(period, 0.0)
|
self.entity_periodic_data.setdefault(d.entity, frappe._dict()).setdefault(period, 0.0)
|
||||||
self.entity_periodic_data[d.entity][period] += flt(d.value_field)
|
self.entity_periodic_data[d.entity][period] += flt(d.value_field)
|
||||||
|
|
||||||
|
if self.filters.tree_type == "Item":
|
||||||
|
self.entity_periodic_data[d.entity]['stock_uom'] = d.stock_uom
|
||||||
|
|
||||||
def get_period(self, posting_date):
|
def get_period(self, posting_date):
|
||||||
if self.filters.range == 'Weekly':
|
if self.filters.range == 'Weekly':
|
||||||
period = "Week " + str(posting_date.isocalendar()[1]) + " " + str(posting_date.year)
|
period = "Week " + str(posting_date.isocalendar()[1]) + " " + str(posting_date.year)
|
||||||
|
|||||||
@@ -287,19 +287,20 @@ def set_price_list_and_rate(quotation, cart_settings):
|
|||||||
|
|
||||||
def _set_price_list(quotation, cart_settings):
|
def _set_price_list(quotation, cart_settings):
|
||||||
"""Set price list based on customer or shopping cart default"""
|
"""Set price list based on customer or shopping cart default"""
|
||||||
if quotation.selling_price_list:
|
from erpnext.accounts.party import get_default_price_list
|
||||||
return
|
|
||||||
|
|
||||||
# check if customer price list exists
|
# check if customer price list exists
|
||||||
selling_price_list = None
|
selling_price_list = None
|
||||||
if quotation.party_name:
|
if quotation.party_name:
|
||||||
from erpnext.accounts.party import get_default_price_list
|
selling_price_list = frappe.db.get_value('Customer', quotation.party_name, 'default_price_list')
|
||||||
selling_price_list = get_default_price_list(frappe.get_doc("Customer", quotation.party_name))
|
|
||||||
|
|
||||||
# else check for territory based price list
|
# else check for territory based price list
|
||||||
if not selling_price_list:
|
if not selling_price_list:
|
||||||
selling_price_list = cart_settings.price_list
|
selling_price_list = cart_settings.price_list
|
||||||
|
|
||||||
|
if not selling_price_list and quotation.party_name:
|
||||||
|
selling_price_list = get_default_price_list(frappe.get_doc("Customer", quotation.party_name))
|
||||||
|
|
||||||
quotation.selling_price_list = selling_price_list
|
quotation.selling_price_list = selling_price_list
|
||||||
|
|
||||||
def set_taxes(quotation, cart_settings):
|
def set_taxes(quotation, cart_settings):
|
||||||
|
|||||||
@@ -340,7 +340,7 @@ def get_directions(route, optimize):
|
|||||||
try:
|
try:
|
||||||
directions = maps_client.directions(**directions_data)
|
directions = maps_client.directions(**directions_data)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
frappe.throw(_(e.message))
|
frappe.throw(_(e))
|
||||||
|
|
||||||
return directions[0] if directions else False
|
return directions[0] if directions else False
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ def get_stock_value_from_bin(warehouse=None, item_code=None):
|
|||||||
values = {}
|
values = {}
|
||||||
conditions = ""
|
conditions = ""
|
||||||
if warehouse:
|
if warehouse:
|
||||||
conditions += """ and warehouse in (
|
conditions += """ and `tabBin`.warehouse in (
|
||||||
select w2.name from `tabWarehouse` w1
|
select w2.name from `tabWarehouse` w1
|
||||||
join `tabWarehouse` w2 on
|
join `tabWarehouse` w2 on
|
||||||
w1.name = %(warehouse)s
|
w1.name = %(warehouse)s
|
||||||
@@ -25,11 +25,12 @@ def get_stock_value_from_bin(warehouse=None, item_code=None):
|
|||||||
values['warehouse'] = warehouse
|
values['warehouse'] = warehouse
|
||||||
|
|
||||||
if item_code:
|
if item_code:
|
||||||
conditions += " and item_code = %(item_code)s"
|
conditions += " and `tabBin`.item_code = %(item_code)s"
|
||||||
|
|
||||||
values['item_code'] = item_code
|
values['item_code'] = item_code
|
||||||
|
|
||||||
query = "select sum(stock_value) from `tabBin` where 1 = 1 %s" % conditions
|
query = """select sum(stock_value) from `tabBin`, `tabItem` where 1 = 1
|
||||||
|
and `tabItem`.name = `tabBin`.item_code and ifnull(`tabItem`.disabled, 0) = 0 %s""" % conditions
|
||||||
|
|
||||||
stock_value = frappe.db.sql(query, values)
|
stock_value = frappe.db.sql(query, values)
|
||||||
|
|
||||||
|
|||||||
@@ -51,14 +51,14 @@ erpnext.SupportAnalytics = frappe.views.GridReportWithPlot.extend({
|
|||||||
// add Opening, Closing, Totals rows
|
// add Opening, Closing, Totals rows
|
||||||
// if filtered by account and / or voucher
|
// if filtered by account and / or voucher
|
||||||
var me = this;
|
var me = this;
|
||||||
var total_tickets = {name:"All Tickets", "id": "all-tickets",
|
var total_tickets = {name:__("All Tickets"), "id": "all-tickets",
|
||||||
checked:true};
|
checked:true};
|
||||||
var days_to_close = {name:"Days to Close", "id":"days-to-close",
|
var days_to_close = {name:__("Days to Close"), "id":"days-to-close",
|
||||||
checked:false};
|
checked:false};
|
||||||
var total_closed = {};
|
var total_closed = {};
|
||||||
var hours_to_close = {name:"Hours to Close", "id":"hours-to-close",
|
var hours_to_close = {name:__("Hours to Close"), "id":"hours-to-close",
|
||||||
checked:false};
|
checked:false};
|
||||||
var hours_to_respond = {name:"Hours to Respond", "id":"hours-to-respond",
|
var hours_to_respond = {name:__("Hours to Respond"), "id":"hours-to-respond",
|
||||||
checked:false};
|
checked:false};
|
||||||
var total_responded = {};
|
var total_responded = {};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user