100 lines
3 KiB
Java
100 lines
3 KiB
Java
package com.alexanderlogistics;
|
|
|
|
import java.util.Calendar;
|
|
import java.util.Date;
|
|
import java.util.logging.Logger;
|
|
|
|
/**
|
|
* Speichert Payment statistik
|
|
*/
|
|
public class DebitorStatistikData {
|
|
private static Logger logger = Logger.getLogger(DebitorStatistikData.class.getName());
|
|
|
|
int month;
|
|
int year;
|
|
|
|
long count = 0;
|
|
long averageDueDays; // Zahlungsziel
|
|
long averagePaymentDays; // Tatsächliche Zahlung
|
|
long totalDueDays;
|
|
long totalPaymentDays;
|
|
|
|
public DebitorStatistikData(Date date) {
|
|
// Create a Calendar instance and set the date
|
|
Calendar calendar = Calendar.getInstance();
|
|
calendar.setTime(date);
|
|
|
|
// Get the year from the Calendar object
|
|
this.year = calendar.get(Calendar.YEAR);
|
|
// Get the month from the Calendar object
|
|
this.month = calendar.get(Calendar.MONTH);
|
|
// Increment the month by 1 since Calendar months are zero-based
|
|
this.month++;
|
|
|
|
}
|
|
|
|
public DebitorStatistikData(int year, int month) {
|
|
this.month = month;
|
|
this.year = year;
|
|
}
|
|
|
|
/**
|
|
* Aktualisiert die statistischen werte
|
|
*
|
|
* @param invoiceDate
|
|
* @param paymentDate
|
|
*/
|
|
public void compute(Date invoiceDate, Date invoiceDueDate, Date paymentDate) {
|
|
// und was nun?
|
|
count++;
|
|
|
|
logger.fine("...invoiceDate= " + invoiceDate);
|
|
logger.fine("...invoiceDueDate= " + invoiceDueDate);
|
|
logger.fine("...paymentDate= " + paymentDate);
|
|
|
|
// Fälligkeit in Tagen
|
|
long milliseconds1 = invoiceDate.getTime();
|
|
long milliseconds2 = invoiceDueDate.getTime();
|
|
// Berechnen Sie die Differenz in Millisekunden
|
|
long diffMilliseconds = milliseconds2 - milliseconds1;
|
|
long dueTime = diffMilliseconds / (24 * 60 * 60 * 1000);
|
|
logger.fine("...Fälligkeit in tagen= " + dueTime);
|
|
|
|
totalDueDays = totalDueDays + dueTime;
|
|
// averageDueDays = (long) (totalDueDays / count);
|
|
averageDueDays = Math.round((double) totalDueDays / count);
|
|
|
|
// Bezahlt nach Tagen
|
|
milliseconds1 = invoiceDate.getTime();
|
|
milliseconds2 = paymentDate.getTime();
|
|
// Berechnen Sie die Differenz in Millisekunden
|
|
diffMilliseconds = milliseconds2 - milliseconds1;
|
|
long paymentTime = diffMilliseconds / (24 * 60 * 60 * 1000);
|
|
|
|
// Fix differenz
|
|
// paymentTime = paymentTime - dueTime;
|
|
logger.fine("...Zahlung erfolgte nach tagen= " + paymentTime);
|
|
totalPaymentDays = totalPaymentDays + paymentTime;
|
|
// averagePaymentDays = (long) (totalPaymentDays / count);
|
|
averagePaymentDays = Math.round((double) totalPaymentDays / count);
|
|
|
|
}
|
|
|
|
public long getAverageDueDays() {
|
|
return averageDueDays;
|
|
}
|
|
|
|
public long getAveragePaymentDays() {
|
|
return averagePaymentDays;
|
|
}
|
|
|
|
/**
|
|
* returns
|
|
*
|
|
* 202304
|
|
*/
|
|
public String toString() {
|
|
return "" + year + (month < 10 ? "0" + month : "" + month);
|
|
}
|
|
|
|
}
|