Логика программирования для расчета подоходного налога - PullRequest
3 голосов
/ 21 января 2012

Любой, кто может помочь мне создать код PHP или mysql для нашей таблицы налога на зарплату сотрудника Office. Вот база для нашего налогового регулирования.

 If salary is >= 0 and <= 150 it will be 0% (Nill),
 If salary is >= 151 and <= 650 it will be 10% - 15.00,
 If salary is >= 651 and <= 1400 it will be 15% - 47.50,
 If salary is >= 1401 and <= 2350 it will be 20% -117.50,
 If salary is >= 2351 and <= 3550 it will be 25% - 235.00,
 If salary is >= 3551 and <= 5000 it will be 30% - 412.5,
 If salary is >= 5001 it will be 35% - 662.50

Ответы [ 4 ]

2 голосов
/ 26 мая 2014

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

Как это действительно работает: вы платите налог в разных процентах, за каждую часть вашего дохода, которая попадает в каждую налоговую группу. Таким образом, если вы зарабатываете 11 000 долларов США, и существует налоговая скобка от 0 до 10 000, а другая от 10 000 до 20 000, то первые 10 000 заработанных будут облагаться налогом по ставке первой сетки, а оставшиеся 1 000 будут облагаться налогом по более высокой ставке второго налога. кронштейн.

Код для расчета налога следующим образом:

//the tops of each tax band
$band1_top = 14000;
$band2_top = 48000;
$band3_top = 70000;
//no top of band 4

//the tax rates of each band
$band1_rate = 0.105;
$band2_rate = 0.175;
$band3_rate = 0.30;
$band4_rate = 0.33;

$starting_income = $income = 71000; //set this to your income

$band1 = $band2 = $band3 = $band4 = 0;

if($income > $band3_top) {
    $band4 = ($income - $band3_top) * $band4_rate;
    $income = $band3_top;
}

if($income > $band2_top) {
    $band3 = ($income - $band2_top) * $band3_rate;
    $income = $band2_top;
}

if($income > $band1_top) {
    $band2 = ($income - $band1_top) * $band2_rate;
    $income = $band1_top;
}

$band1 = $income * $band1_rate;

$total_tax_paid = $band1 + $band2 + $band3 + $band4;

echo "Tax paid on $starting_income is $total_tax_paid";

?>
2 голосов
/ 21 января 2012
function get_taxed_salary($salary){
  if ($salary <= 150 ){
    return $salary;
  };
  if ($salary <= 650){
    return ( 0.9 * $salary - 15.0 );
  };

 ...
}

позже в вашем коде вы используете такую ​​функцию как:

$taxed_salary = get_taxed_salary($salary);
1 голос
/ 21 января 2012

Вы должны изучить базовый PHP. Решение тривиально.

function getTax($salary) {
    $percent = 0;
    $subt = 0;

    if ($salary >= 0 && $salary <= 150) {
        $percent = 10;
        $subt = 15;
    } elseif ($salary >= 151 && $salary <= 650) {
        ...
    } ...

    // do calculations here, ex:
    $final = $salary * $percent / 100 - $subt;
    return $final;
}

Редактировать: Спасибо Константину за напоминание о функции

0 голосов
/ 21 января 2012

Проверьте это, логика в PHP и Perl.

function calc_tax($salary) {
    $params = array(array(5001,662.50), array(3551,412.5), array(2351,235.00), array(1401,117.50), array(651,47.50), array(151,15.00), array(0,0));

    foreach ($params as $p) {
        if($salary >= $p[0]) {
            return $p[1];
        }
    }

    return 0;
}

foreach (array(100,150,3500,8900) as $sal) {
    echo $sal."==".calc_tax($sal)."\n";
}

Perl:

sub calc_tax {
    my $sal = shift;
    my @params = ( [ 5001, 662.50 ], [ 3551, 412.5 ], [ 2351, 235.00 ], [ 1401, 117.50 ], [ 651, 47.50 ], [ 151, 15.00 ], [ 0, 0 ] );

    foreach $p (@params) {
        if ( $sal >= $p->[0] ) {
            return $p->[1];
        }
    }

    return 0;
}

foreach my $sal (qw[160 3200 8900]) {
    print $sal,"==",calc_tax($sal),"\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...