// صفحه مدیریت حقوق هر ماه
add_action('admin_menu', function () {
add_submenu_page('gf-accounting', '📅 حقوق ماهانه', '📅 حقوق ماهانه', 'manage_options', 'gf-monthly-payroll', 'gf_monthly_payroll_page');
});
function gf_monthly_payroll_page() {
global $wpdb;
$user_tbl = $wpdb->prefix . 'users';
$profile_tbl = $wpdb->prefix . 'gf_employee_profiles';
$edu_tbl = $wpdb->prefix . 'gf_education_levels';
$pay_tbl = $wpdb->prefix . 'gf_payrolls';
$year = $_POST['year'] ?? date('Y');
$month = $_POST['month'] ?? date('n');
// مدیریت ارسال
if (isset($_POST['calculate_payroll']) && isset($_POST['user_id'])) {
$uid = intval($_POST['user_id']);
$extra_hours = floatval($_POST['extra_hours']);
$quality_percent = floatval($_POST['quality_percent']);
$student_bonus = floatval($_POST['student_bonus']);
$manager_percent = floatval($_POST['manager_percent']);
$work_hours = floatval($_POST['work_hours']);
$p = $wpdb->get_row("SELECT * FROM $profile_tbl WHERE user_id = $uid");
if (!$p) {
echo '
';
return;
}
$edu = $wpdb->get_row("SELECT * FROM $edu_tbl WHERE id = " . intval($p->education_level_id));
$edu_percent = $edu ? floatval($edu->percentage) : 0;
$exp_percent = floatval($wpdb->get_var("SELECT percent FROM {$wpdb->prefix}gf_experience_levels WHERE years = " . intval($p->experience_years))) ?: 0;
$base = floatval($p->base_salary);
$education_bonus = $base * $edu_percent / 100;
$experience_bonus = $base * $exp_percent / 100;
$base_pay = $base + $education_bonus + $experience_bonus;
$hourly = $base_pay / ($p->assigned_hours ?: 160);
$quality_bonus = $base * $quality_percent / 100;
$extra_bonus = $extra_hours * $hourly;
$manager_bonus = $base * $manager_percent / 100;
$work_pay = $hourly * $work_hours;
$total = $work_pay + $student_bonus + $quality_bonus + $extra_bonus + $manager_bonus;
// ذخیره
$wpdb->insert($pay_tbl, [
'user_id' => $uid,
'year' => $year,
'month' => $month,
'base_salary' => $base,
'education_bonus' => $education_bonus,
'experience_bonus' => $experience_bonus,
'base_pay' => $base_pay,
'hourly_wage' => $hourly,
'work_hours' => $work_hours,
'student_bonus' => $student_bonus,
'quality_percent' => $quality_percent,
'quality_bonus' => $quality_bonus,
'extra_hours' => $extra_hours,
'extra_bonus' => $extra_bonus,
'manager_percent' => $manager_percent,
'manager_bonus' => $manager_bonus,
'total_pay' => $total,
]);
echo '';
}
$users = get_users(['role__not_in' => ['Administrator']]);
echo '📅 محاسبه حقوق ماهانه
';
echo '
';
echo '
';
}