проблемы с отчетом о доходах php - PullRequest
1 голос
/ 13 июля 2011

Мне нужно создать отчет с разбивкой членских взносов за финансовые годы.

Финансовый год начинается 31 июля. срок членства 1 или 2 года.

Я хотел бы прокомментировать членство, чтобы определить, какая часть их взносов относится к какому финансовому году.

например, членство в течение 1 года, в зависимости от того, когда он начал свою работу, будет охватывать 2 финансовых года.

Т.е. 365 дней, 50 дней в 1 финансовом году и 315 дней во втором финансовом году. Таким образом, общая сумма будет (Dues / 365) x 50 за 1 год и (Dues / 365) год 2.

Как я могу отразить это в моем отчете?

Спасибо!

Edit:

это фактический пример текущего членства. Финансовый год на 31 июля

Участник 1, взносы $ 50, полученные 09.10.2009, дни 730, Разбивка за 2010 финансовый год 20,82, за 2011 финансовый год 25,00, за 2012 финансовый год 4,18

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Джон, Вот процедура получения следующей даты счета-фактуры - http://www.php.net/manual/en/function.date.php#103196, которую можно изменить, чтобы получить следующие две даты окончания финансового года, поскольку они всегда заканчиваются в одну и ту же дату, но в разные годы.

Объедините это с разницей в дате, такой как функция http://php.net/manual/en/function.date-diff.php, и вы сможете рассчитать, сколько времени осталось в каждом финансовом году.

0 голосов
/ 14 июля 2011

Спасибо Брайану Гуверу, который привел меня к нужной информации.

Я хочу показать код для других, чтобы увидеть, как вы можете оценивать вещи (это сложно!) Если у вас есть какие-либо предложения по улучшению кода, пожалуйста, сообщите. Я просто новичок.

<?php 

//setup of the dates and values to play with

$now = $row->Membership_Date;
$membership_date = strtotime($now);
$fy2010 = strtotime("2010-07-31");
$fy2011 = strtotime("2011-07-31");
$fy2012 = strtotime("2012-07-31");
$fy2013 = strtotime("2013-07-31");
$fy2014 = strtotime("2014-07-31");

//doing the math to determine time span in unix timecode

$datedifffy2010 = $fy2010 - $membership_date;
$datedifffy2011 = $fy2011 - $membership_date;
$datedifffy2012 = $fy2012 - $membership_date;
$datedifffy2013 = $fy2013 - $membership_date;
$datedifffy2014 = $fy2014 - $membership_date;

//doing the math to transform it into full days

$fulldays2010 = floor($datedifffy2010/(60*60*24));
$fulldays2011 = floor($datedifffy2011/(60*60*24));
$fulldays2012 = floor($datedifffy2012/(60*60*24));
$fulldays2013 = floor($datedifffy2013/(60*60*24));
$fulldays2014 = floor($datedifffy2014/(60*60*24));

//Some values come back as negative, so we are making those zero

if ($fulldays2010 <= 0)
{
    $fulldays2010 = 0;  
};

if ($fulldays2011 <= 0)
{
    $fulldays2011 = 0;  
};

if ($fulldays2012 <= 0)
{
    $fulldays2012 = 0;  
};

if ($fulldays2013 <= 0)
{
    $fulldays2013 = 0;  
};

if ($fulldays2014 <= 0)
{
    $fulldays2014 = 0;  
};

//arithmetic to determine how many days belong to which fiscal year

if ($row->Membership_Length == 2)
{
$fy11remainder = 730 - $fulldays2010;
if ($fy11remainder >= 365) $fy11remainder = 365;
$fy12remainder = 730 - $fy11remainder - $fulldays2010;
if ($fy12remainder >= 365) $fy12remainder = 365;
$fy13remainder = 730 - $fy12remainder - $fy11remainder - $fulldays2010;
if ($fy13remainder >= 365) $fy13remainder = 365;
$fy14remainder = 730 - $fy13remainder - $fy12remainder - $fy11remainder - $fulldays2010;
}
else
{
$fy11remainder = 365 - $fulldays2010;
if ($fy11remainder >= 365) $fy11remainder = 365;
$fy12remainder = 365 - $fy11remainder - $fulldays2010;
if ($fy12remainder >= 365) $fy12remainder = 365;
$fy13remainder = 365 - $fy12remainder - $fy11remainder - $fulldays2010;
if ($fy13remainder >= 365) $fy13remainder = 365;
$fy14remainder = 365 - $fy13remainder - $fy12remainder - $fy11remainder - $fulldays2010;

};

//determining the mill rate for days (our organization has discounts for 2 year memberships, and different types of memberships have different prices

if ($length == 2)
{
    $income = $row->Dues_Paid;
    $daily_income = $income / 730;
}
else
{
    $income = $row->Dues_Paid;
    $daily_income = $income / 365;
};

//Mutiplying days by the mill rate for that specific entry or member

$fy10inc = $fulldays2010 * $daily_income;
$fy11inc = $fy11remainder * $daily_income;
$fy12inc = $fy12remainder * $daily_income;
$fy13inc = $fy13remainder * $daily_income;
$fy14inc = $fy14remainder * $daily_income;

//display pro-rate for fiscal year

echo $fy10inc;


?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...