office-alexander-logistics/office-alexander-logistics-app/src/main/webapp/js/imixs-office.workitem.custom.js

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();
}
}
}
}