Yönetim Girişi
Varsayılan kullanıcı: admin@local / admin123. İlk girişte Ayarlar’dan şifreyi değiştirin.
function quarter_of_month($m){ return (int)ceil($m/3.0); } function build_company_quarterly_tax($pdo){ // Similar logic to monthly, but grouped by (year, quarter) $partial = floatval(setting('partialVAT', '50'))/100.0; $corpRate = floatval(setting('corpTax','25'))/100.0; // Fetch all company records $stmt = $pdo->prepare("SELECT date, type, amount, vatRate, vatIncluded, owner, deductible FROM entries WHERE owner='Şirket'"); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); // Group per year-quarter $grp = []; // [year][q] => accumulators foreach($rows as $e){ $ts = strtotime($e['date']); if(!$ts) continue; $y = (int)date('Y', $ts); $m = (int)date('n', $ts); $q = quarter_of_month($m); if (!isset($grp[$y])) $grp[$y] = []; if (!isset($grp[$y][$q])) $grp[$y][$q] = ['revNet'=>0.0,'expDed'=>0.0,'expNon'=>0.0]; list($net,$vat) = compute_amounts(floatval($e['amount']), floatval($e['vatRate']), $e['vatIncluded']); if ($e['type']==='Gelir'){ $grp[$y][$q]['revNet'] += $net; } else { if ($e['deductible']==='Evet'){ $grp[$y][$q]['expDed'] += $net; } elseif ($e['deductible']==='Kısmi'){ $grp[$y][$q]['expDed'] += $net*$partial; $grp[$y][$q]['expNon'] += $net*(1-$partial); } else { $grp[$y][$q]['expNon'] += $net; } } } // Build rows ordered by year then quarter $out = []; ksort($grp); foreach($grp as $y=>$quarters){ ksort($quarters); $ytdProfit = 0.0; $ytdTaxPrev = 0.0; foreach($quarters as $q=>$acc){ $netProfit = $acc['revNet'] - $acc['expDed']; // approx tax base (non-deductible excluded) $ytdProfit += $netProfit; $ytdTax = max(0.0, $ytdProfit) * $corpRate; $qTax = $ytdTax - $ytdTaxPrev; $ytdTaxPrev = $ytdTax; $out[] = [ 'y'=>$y, 'q'=>$q, 'revNet'=>$acc['revNet'], 'expDed'=>$acc['expDed'], 'expNon'=>$acc['expNon'], 'netProfit'=>$netProfit, 'ytdProfit'=>$ytdProfit, 'ytdCorpTax'=>$ytdTax, 'quarterCorpTax'=>$qTax ]; } } return $out; }
Varsayılan kullanıcı: admin@local / admin123. İlk girişte Ayarlar’dan şifreyi değiştirin.