Changeset 752


Ignore:
Timestamp:
Nov 4, 2021 5:23:07 AM (2 years ago)
Author:
anonymous
Message:

Add prorate() function (copied from ~/bin/prorate)

Location:
trunk/lib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/App.inc.php

    r751 r752  
    14271427    *
    14281428    * @access   public
     1429    * @return   void
    14291430    * @author   Quinn Comendant <quinn@strangecode.com>
    14301431    * @since    14 Oct 2021 17:35:19
  • trunk/lib/Utilities.inc.php

    r750 r752  
    619619    $final_time = sprintf($format, $final_time);
    620620    return sprintf('%s %s', $final_time, (1 == $final_time ? $units[$final_unit][1] : $units[$final_unit][2]));
     621}
     622
     623/*
     624*
     625*
     626* @access   public
     627* @param
     628* @return
     629* @author   Quinn Comendant <quinn@strangecode.com>
     630* @since    03 Nov 2021 22:44:30
     631*/
     632function prorate($amount, $duration='year', $start_date, $end_date)
     633{
     634    $app =& App::getInstance();
     635
     636    switch ($duration) {
     637    case 'yr':
     638    case 'year':
     639        $amount_per_day = $amount / 365;
     640        break;
     641
     642    case 'quarter':
     643        $amount_per_day = $amount / 91.25;
     644        break;
     645
     646    case 'mo':
     647    case 'month':
     648        $amount_per_day = $amount / 30.4167;
     649        break;
     650
     651    case 'week':
     652        $amount_per_day = $amount / 7;
     653        break;
     654
     655    case 'day':
     656        $amount_per_day = $amount;
     657        break;
     658
     659    default:
     660        $app->logMsg(sprintf('Unknown prorate duration “%s”. Please use one of: year, yr, quarter, month, mo, week, day.', $duration), LOG_ERR, __FILE__, __LINE__);
     661        return false;
     662    }
     663
     664    $diff_time = strtotime($end_date) - strtotime($start_date);
     665    $days = $diff_time / (60 * 60 * 24);
     666    return $amount_per_day * $days;
    621667}
    622668
Note: See TracChangeset for help on using the changeset viewer.