130 lines
3.2 KiB
JavaScript
130 lines
3.2 KiB
JavaScript
// custom scripts
|
|
// Zusatzfunktionen zur schnelleren Datumseingabe
|
|
|
|
|
|
/**
|
|
*
|
|
*/
|
|
$(document).ready(function () {
|
|
initFaelligkeit();
|
|
|
|
});
|
|
|
|
/*
|
|
* Hier setzen wir einen Event handler und berechnen anhand der Eingabe im Feld alexander-logistic-date-days
|
|
* ein neues Datum auf basis des Rechnungsdatum (date_invoice)
|
|
*/
|
|
function initFaelligkeit(ajax_event) {
|
|
$(".alexander-logistic-date-days").change(function (e) {
|
|
var days = $(this).val();
|
|
if (days == '') {
|
|
return true;
|
|
}
|
|
|
|
// find the basis date 'date_invoice'
|
|
var basisDateString = $("input[id$='date_invoice']").val();
|
|
const parts = basisDateString.split(".");
|
|
var basisDay = parts[0];
|
|
var basisMonth = (parts[1]) - 1;
|
|
var basisYear = parts[2];
|
|
var basisDate = new Date(basisYear, basisMonth, basisDay);
|
|
var newDate = new Date(basisYear, basisMonth, basisDay);
|
|
newDate.setDate(newDate.getDate() + (Number(days)));
|
|
|
|
var day = '' + newDate.getDate();
|
|
if (day.length == 1) {
|
|
day = '0' + day;
|
|
}
|
|
var month = '' + (newDate.getMonth() + 1);
|
|
if (month.length == 1) {
|
|
month = '0' + month;
|
|
}
|
|
var year = '' + newDate.getFullYear();
|
|
year = year.substring(2);
|
|
|
|
// ddmmyy
|
|
var dateFormated = day + month + year;
|
|
//alert(dateFormated);
|
|
|
|
var dateInput = $(this).next();
|
|
dateInput.val(dateFormated);
|
|
validateBuchungsDatum(dateInput);
|
|
|
|
// clear input
|
|
$(this).val('');
|
|
|
|
});
|
|
}
|
|
|
|
// erweitere datums eingabe
|
|
// TTMM
|
|
// TTMMYY
|
|
// TT-MM-YY
|
|
// TT.MM.YY
|
|
// jahreszahl falls zweistellig
|
|
function validateBuchungsDatum(item) {
|
|
|
|
//var mhd = $("[id$=mhdinput_id]");
|
|
var mhd = $(item);
|
|
var text = $(mhd).val();
|
|
|
|
while (text.indexOf('-') > -1) {
|
|
text = text.replace("-", ".");
|
|
}
|
|
var d = new Date();
|
|
|
|
|
|
// check for TTMMYY
|
|
if (text.length == 6 && text.indexOf('.') == -1) {
|
|
text = text.substring(0, 2) + "." + text.substring(2, 4)
|
|
+ ".20" + text.substring(4);
|
|
}
|
|
// check TTMMYYYY
|
|
if (text.length == 8 && text.indexOf('.') == -1) {
|
|
text = text.substring(0, 2) + "." + text.substring(2, 4)
|
|
+ "." + text.substring(4);
|
|
}
|
|
|
|
// check for TTMM
|
|
if (text.length == 4 && text.indexOf('.') == -1) {
|
|
text = text.substring(0, 2) + "." + text.substring(2);
|
|
text = text + "." + d.getFullYear();
|
|
}
|
|
|
|
// check for missing full year
|
|
var n = text.lastIndexOf(".");
|
|
if (n > 0 && n > text.length - 4) {
|
|
// we insert 20
|
|
var left = text.substring(0, n + 1);
|
|
var right = text.substring(n + 1);
|
|
text = left + "20" + right;
|
|
}
|
|
|
|
|
|
// validate if year has more then 4 digits
|
|
// TT.MM.YYYY is allowed
|
|
if (text.length != 10) {
|
|
console.log("Invalid Date=" + text);
|
|
text = "";
|
|
}
|
|
|
|
// update field....
|
|
$(mhd).val(text);
|
|
|
|
|
|
// hier aktualisiereh wir die Fälligkeit wenn das Rechnungsdatum sich ändert
|
|
// und wir ein Zahlungsziel kennen.
|
|
var inputElementZahlungszielCdtr = $("input[id$='cdtr_creditperiod']");
|
|
var itemID = item.id;
|
|
if (itemID && itemID.endsWith('date_invoice')) {
|
|
// update zahlungsziel
|
|
if (inputElementZahlungszielCdtr && inputElementZahlungszielCdtr.val() != '') {
|
|
var inputElementZahlungsziel = $("input[data-item='cdtr.creditperiod']");
|
|
if (inputElementZahlungsziel) {
|
|
inputElementZahlungsziel.val(inputElementZahlungszielCdtr.val());
|
|
inputElementZahlungsziel.change();
|
|
$('.alexander-logistic-date').focus().select();
|
|
}
|
|
}
|
|
}
|
|
}
|