Fix QA review findings: server-side validation, notes encoding, dashboard totals
Validate document lines on the server and recompute their totals, store notes with quotes/markup/emoji (utf8mb4, idempotent escaping, decode in form fields), exclude transfers from company-wide stock in/out, count revenue from confirmed orders only, one low-stock rule everywhere, list unapproved lots, natural bin sort, stable order/PO sort, status tiles that add up.
This commit is contained in:
@@ -262,7 +262,7 @@
|
||||
'<td>' + escape_html(r.doc_number) + '</td>' +
|
||||
'<td>' + escape_html(r.contact_name || '—') + '</td>' +
|
||||
'<td class="text-end">' + format_number(r.grand_total, 2) + '</td>' +
|
||||
'<td>' + escape_html(r.doc_date || '—') + '</td>' +
|
||||
'<td>' + escape_html(format_date(r.doc_date)) + '</td>' +
|
||||
'<td>' + mapping_badge + '</td>' +
|
||||
'<td>' + status_badge + '</td>' +
|
||||
'</tr>';
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
export_data.push({ date:r.entry_date||'', period:r.period||'', department:r.dept_code||'', reference:r.reference||'', description:r.line_description||r.gl_description||'', debit:dr||'', credit:cr||'', balance:running });
|
||||
var bal_color = running >= 0 ? '' : 'text-danger';
|
||||
html += '<tr>' +
|
||||
'<td class="small">' + escape_html(r.entry_date || '—') + '</td>' +
|
||||
'<td class="small">' + escape_html(format_date(r.entry_date)) + '</td>' +
|
||||
'<td class="small">' + escape_html(r.period) + '</td>' +
|
||||
'<td class="small">' + (r.dept_code ? escape_html(r.dept_code) : '<span class="text-muted">—</span>') + '</td>' +
|
||||
'<td class="small">' + escape_html(r.reference || '—') + '</td>' +
|
||||
|
||||
@@ -281,7 +281,7 @@
|
||||
'<td class="text-muted small">' + escape_html(r.formula_name || '—') + '</td>' +
|
||||
'<td class="text-end">' + format_number(r.total_debit, 2) + '</td>' +
|
||||
'<td class="text-end">' + format_number(r.total_credit, 2) + '</td>' +
|
||||
'<td class="text-muted small">' + escape_html(r.posted_at) + '</td>' +
|
||||
'<td class="text-muted small">' + escape_html(format_date(r.posted_at)) + '</td>' +
|
||||
'<td>' +
|
||||
'<a href="javascript:;" onclick="show_journal_detail(' + r.id + ',\'' + escape_html(r.doc_number || '') + '\')" title="View lines">' +
|
||||
'<i class="ti ti-eye fs-5"></i></a>' +
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
var html = '';
|
||||
rows.forEach(function(r) {
|
||||
html += '<tr>' +
|
||||
'<td class="small">' + escape_html(r.entry_date || '—') + '</td>' +
|
||||
'<td class="small">' + escape_html(format_date(r.entry_date)) + '</td>' +
|
||||
'<td class="small">' + escape_html(r.period) + '</td>' +
|
||||
'<td class="small"><span class="badge bg-secondary bg-opacity-10 text-secondary">' + escape_html(src_labels[r.source_type] || r.source_type) + '</span></td>' +
|
||||
'<td class="small">' + (r.dept_code ? escape_html(r.dept_code) : '<span class="text-muted">—</span>') + '</td>' +
|
||||
|
||||
Reference in New Issue
Block a user