/**
 * Normalize a duration sum using calendar arithmetic
 * Converts excess days to months using average month length (30.4375 days)
 * and excess months to years. Matches the logic used in stored procedures.
 *
 * @param years Total years from sum
 * @param months Total months from sum
 * @param days Total days from sum
 * @returns Normalized { years, months, days }
 */
export function normalizeDurationSumSimple(
  years: number,
  months: number,
  days: number,
): { years: number; months: number; days: number } {
  const DAYS_PER_MONTH = 30.4375; // Average days per month in Gregorian calendar

  let totalMonths = months;
  let totalDays = days;

  // Convert excess days to months
  if (totalDays >= DAYS_PER_MONTH) {
    const additionalMonths = Math.floor(totalDays / DAYS_PER_MONTH);
    totalMonths += additionalMonths;
    totalDays = totalDays - additionalMonths * DAYS_PER_MONTH;
  }

  // Convert excess months to years
  let totalYears = years;
  if (totalMonths >= 12) {
    const additionalYears = Math.floor(totalMonths / 12);
    totalYears += additionalYears;
    totalMonths = totalMonths % 12;
  }

  return { years: totalYears, months: Math.floor(totalMonths), days: Math.floor(totalDays) };
}
