nNumberOfDays = DAY(dSchedDate) - DAY(dStartCalcDate) + 1 *** do the calculation nStorageDue = (nItemRate/nDaysInMonth) * nItemCuft * nNumberOfDays amt_due = ROUND(nStorageDue, 2) ? nStorageDue ? amt_dueand you will see some numbers...
LOCAL dSchedDate, dRcvDate, nItemCuft, nItemRate, nNumberOfDays, nFreeDays, nDaysInMonth, nStorageDue, amt_due > >dSchedDate = ctod('03/16/2003') >dRcvDate = ctod('02/25/2003') >nItemCuft = 90 >nItemRate = .50 >nNumberOfDays = 0 >nStorageDue = 0 >amt_due = 0.00 >nFreeDays = 14 >nDaysInMonth = 31 > >IF MONTH(dRcvDate) = MONTH(dSchedDate) > dStartCalcDate = dRcvDate + nFreeDays > IF dStartCalcDate >= dSchedDate > nNumberOfDays = 0 > ELSE > nNumberOfDays = DAY(dSchedDate) - DAY(dStartCalcDate) + 1 > ENDIF >ENDIF >*** received date was in a previous month >*** determine if we use the first of the month or find how many freedays in last month >IF MONTH(dRcvDate + nFreeDays) < MONTH(dSchedDate) > dStartCalcDate = 1 >ELSE > dStartCalcDate = dRcvDate + nFreedays >ENDIF >nNumberOfDays = DAY(dSchedDate) - DAY(dStartCalcDate) + 1 >*** do the calculation >? nStorageDue = (nItemRate/nDaysInMonth) * nItemCuft * nNumberOfDays >? amt_due = ROUND(nStorageDue, 2) >*** no negative amounts allowed >IF amt_due < 0 > amt_due = 0 >ENDIF>