Fix timestamps, delete requests, invoice dates and GR quantities
Apply the configured timezone to PHP and both DB connections, wrap unwrapped ajax payloads so delete buttons reach their engines, normalise and validate invoice due dates, reject stock quantities below the stored 4dp scale, and list stock movements across all warehouses.
This commit is contained in:
@@ -160,6 +160,8 @@
|
||||
|
||||
var invoice_id = <?php echo $invoice_id; ?>;
|
||||
var invoice_data = null;
|
||||
var issued_date = ''; // ISO issue date — lower bound for the due date
|
||||
var due_picker = null; // flatpickr instance on #due_date
|
||||
|
||||
function doc_type_badge(doc_type) {
|
||||
const map = {
|
||||
@@ -226,6 +228,11 @@
|
||||
$('#display_contact').text(inv.contact_name || '—');
|
||||
$('#display_department').text(get_dept_label(inv.department_id));
|
||||
$('#display_issued').text(format_date(inv.issued_date) || '—');
|
||||
|
||||
// A due date before the issue date is not a valid payment term, so
|
||||
// stop the picker from offering one.
|
||||
issued_date = inv.issued_date ? String(inv.issued_date).split(' ')[0] : '';
|
||||
if (due_picker && issued_date) due_picker.set('minDate', issued_date);
|
||||
$('#due_date').val(inv.due_date ? format_date_input(inv.due_date) : '');
|
||||
$('#notes').val(inv.notes || '');
|
||||
|
||||
@@ -311,6 +318,12 @@
|
||||
}
|
||||
|
||||
function save_invoice() {
|
||||
var due_val = $('#due_date').val().trim();
|
||||
if (due_val && issued_date && to_iso_date(due_val) < issued_date) {
|
||||
bootbox.alert('The due date cannot be earlier than the issue date.');
|
||||
return;
|
||||
}
|
||||
|
||||
ajax_request({
|
||||
url: '<?php echo $server_url?>order/api/engine/manage_invoice.php',
|
||||
autoPrepare: true,
|
||||
@@ -346,6 +359,10 @@
|
||||
bootbox.alert('Please enter a due date before issuing this purchase invoice.');
|
||||
return;
|
||||
}
|
||||
if (!is_dn && due_date && issued_date && to_iso_date(due_date) < issued_date) {
|
||||
bootbox.alert('The due date cannot be earlier than the issue date.');
|
||||
return;
|
||||
}
|
||||
var label = is_dn ? 'Issue Supplier Credit Note' : 'Issue Purchase Invoice';
|
||||
bootbox.confirm({
|
||||
message: is_dn ? 'Issue this supplier credit note?' : 'Issue this purchase invoice?',
|
||||
@@ -419,8 +436,8 @@
|
||||
|
||||
$(function() {
|
||||
load_dept_cache();
|
||||
due_picker = flatpickr('#due_date', { dateFormat: 'd/m/Y', allowInput: true });
|
||||
if (invoice_id) retrieve_invoice();
|
||||
flatpickr('#due_date', { dateFormat: 'd/m/Y', allowInput: true });
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user