Path : /var/www/html/thb_loan_system/app/Http/Controllers/ |
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
Current File : /var/www/html/thb_loan_system/app/Http/Controllers/PayrollController.php |
<?php namespace App\Http\Controllers; use App\Helpers\GeneralHelper; use App\Models\ChartOfAccount; use App\Models\CustomField; use App\Models\JournalEntry; use App\Models\Payroll; use App\Models\PayrollMeta; use App\Models\PayrollTemplate; use App\Models\PayrollTemplateMeta; use App\Models\Setting; use App\Models\User; use Illuminate\Support\Facades\View; use Cartalyst\Sentinel\Laravel\Facades\Sentinel; use Illuminate\Http\Request; use Laracasts\Flash\Flash; class PayrollController extends Controller { public function __construct() { $this->middleware(['sentinel', 'branch']); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { if (!Sentinel::hasAccess('payroll')) { Flash::warning("Permission Denied"); return redirect('/'); } $data = User::orderBy('id','desc')->get(); return view('payroll.data', compact('data')); } public function indexTemplate() { $data = PayrollTemplate::all(); return view('payroll.payroll_template.data', compact('data')); } public function editTemplate($id) { $top_left = PayrollTemplateMeta::where('payroll_template_id', $id)->where('position', 'top_left')->get(); $top_right = PayrollTemplateMeta::where('payroll_template_id', $id)->where('position', 'top_right')->get(); $bottom_left = PayrollTemplateMeta::where('payroll_template_id', $id)->where('position', 'bottom_left')->get(); $bottom_right = PayrollTemplateMeta::where('payroll_template_id', $id)->where('position', 'bottom_right')->get(); return view('payroll.payroll_template.edit', compact('id', 'bottom_right', 'bottom_left', 'top_right', 'top_left')); } public function deleteTemplateMeta(Request $request) { PayrollTemplateMeta::destroy($request->meta_id); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { if (!Sentinel::hasAccess('payroll.create')) { Flash::warning("Permission Denied"); return redirect('/'); } $users = User::all(); $user = array(); foreach ($users as $key) { $user[$key->id] = $key->first_name . ' ' . $key->last_name; } $chart = []; $chart_expenses = array(); foreach (ChartOfAccount::where('account_type', 'expense')->get() as $key) { $chart_expenses[$key->id] = $key->name; } $chart_income = array(); foreach (ChartOfAccount::where('account_type', 'income')->get() as $key) { $chart_income[$key->id] = $key->name; } $chart_liability = array(); foreach (ChartOfAccount::where('account_type', 'liability')->get() as $key) { $chart_liability[$key->id] = $key->name; } $chart_equity = array(); foreach (ChartOfAccount::where('account_type', 'equity')->get() as $key) { $chart_equity[$key->id] = $key->name; } $chart_assets = array(); foreach (ChartOfAccount::where('account_type', 'asset')->get() as $key) { $chart_assets[$key->id] = $key->name; } $chart[translate('asset')]=$chart_assets; $chart[translate('income')]=$chart_income; $chart[translate('liability')]=$chart_liability; $chart[translate('equity')]=$chart_equity; $chart[translate('expense')]=$chart_expenses; //get custom fields $custom_fields = CustomField::where('category', 'payroll')->get(); $template = PayrollTemplate::first(); $top_left = PayrollTemplateMeta::where('payroll_template_id', $template->id)->where('position', 'top_left')->get(); $top_right = PayrollTemplateMeta::where('payroll_template_id', $template->id)->where('position', 'top_right')->get(); $bottom_left = PayrollTemplateMeta::where('payroll_template_id', $template->id)->where('position', 'bottom_left')->get(); $bottom_right = PayrollTemplateMeta::where('payroll_template_id', $template->id)->where('position', 'bottom_right')->get(); return view('payroll.create', compact('user', 'custom_fields', 'bottom_right', 'bottom_left', 'top_right', 'top_left', 'template','chart')); } public function store(Request $request) { if (!Sentinel::hasAccess('payroll.create')) { Flash::warning("Permission Denied"); return redirect('/'); } $payroll = new Payroll(); $payroll->payroll_template_id = $request->payroll_template_id; $payroll->user_id = $request->user_id; $payroll->employee_name = $request->employee_name; $payroll->business_name = $request->business_name; $payroll->payment_method = $request->payment_method; $payroll->branch_id = session('branch_id'); $payroll->bank_name = $request->bank_name; $payroll->account_number = $request->account_number; $payroll->description = $request->description; $payroll->comments = $request->comments; $payroll->paid_amount = $request->paid_amount; $payroll->chart_id = $request->chart_id; $payroll->date = $request->date; $date = explode('-', $request->date); $payroll->recurring = $request->recurring; if ($request->recurring == 1) { $payroll->recur_frequency = $request->recur_frequency; $payroll->recur_start_date = $request->recur_start_date; if (!empty($request->recur_end_date)) { $payroll->recur_end_date = $request->recur_end_date; } $payroll->recur_next_date = date_format(date_add(date_create($request->recur_start_date), date_interval_create_from_date_string($request->recur_frequency . ' ' . $request->recur_type . 's')), 'Y-m-d'); $payroll->recur_type = $request->recur_type; } $payroll->year = $date[0]; $payroll->month = $date[1]; $payroll->save(); //save payroll meta $metas = PayrollTemplateMeta::where('payroll_template_id', $request->template_id)->get();; foreach ($metas as $key) { $meta = new PayrollMeta(); $kid = $key->id; $meta->value = $request->$kid; $meta->payroll_id = $payroll->id; $meta->payroll_template_meta_id = $key->id; $meta->position = $key->position; $meta->save(); } //debit and credit the necessary accounts if (!empty(ChartOfAccount::find(Setting::where('setting_key','payroll_chart_id')->first()->setting_value))) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = Setting::where('setting_key','payroll_chart_id')->setting_value->first(); $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->transaction_type = 'payroll'; $journal->name = "Payroll"; $journal->payroll_id = $payroll->id; $journal->debit = GeneralHelper::single_payroll_total_pay($payroll->id); $journal->reference = $payroll->id; $journal->save(); } if (!empty($payroll->chart)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $payroll->chart->id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->transaction_type = 'payroll'; $journal->name = "Payroll"; $journal->payroll_id = $payroll->id; $journal->credit = GeneralHelper::single_payroll_total_pay($payroll->id); $journal->reference = $payroll->id; $journal->save(); } GeneralHelper::audit_trail("Added payroll with id:".$payroll->id); Flash::success(translate('successfully_saved')); return redirect('payroll/data'); } public function pdfPayslip($payroll) { $top_left = PayrollMeta::where('payroll_id', $payroll->id)->where('position', 'top_left')->get(); $top_right = PayrollMeta::where('payroll_id', $payroll->id)->where('position', 'top_right')->get(); $bottom_left = PayrollMeta::where('payroll_id', $payroll->id)->where('position', 'bottom_left')->get(); $bottom_right = PayrollMeta::where('payroll_id', $payroll->id)->where('position', 'bottom_right')->get(); PDF::AddPage(); PDF::writeHTML(View::make('payroll.pdf_payslip', compact('payroll', 'top_left', 'top_right', 'bottom_left', 'bottom_right'))->render()); PDF::SetAuthor('Tererai Mugova'); PDF::Output($payroll->employee_name . " - Payslip.pdf",'D'); } public function staffPayroll($user) { if (!Sentinel::hasAccess('payroll.view')) { Flash::warning("Permission Denied"); return redirect('/'); } return view('payroll.staff_payroll', compact('user')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function addTemplateRow(Request $request, $id) { $meta = new PayrollTemplateMeta(); $meta->name = $request->name; $meta->payroll_template_id = $id; $meta->position = $request->position; $meta->save(); Flash::success(translate('successfully_saved')); return redirect('payroll/template/' . $id . '/edit'); } public function getUser($id) { $user = User::find($id); return $user->first_name . ' ' . $user->last_name; } public function show($borrower) { if (!Sentinel::hasAccess('payroll.view')) { Flash::warning("Permission Denied"); return redirect('/'); } $users = User::all(); $user = array(); foreach ($users as $key) { $user[$key->id] = $key->first_name . ' ' . $key->last_name; } //get custom fields $custom_fields = CustomField::where('category', 'borrowers')->get(); return view('borrower.show', compact('borrower', 'user', 'custom_fields')); } public function edit($payroll) { if (!Sentinel::hasAccess('payroll.update')) { Flash::warning("Permission Denied"); return redirect('/'); } $users = User::all(); $user = array(); foreach ($users as $key) { $user[$key->id] = $key->first_name . ' ' . $key->last_name; } $chart = []; $chart_expenses = array(); foreach (ChartOfAccount::where('account_type', 'expense')->get() as $key) { $chart_expenses[$key->id] = $key->name; } $chart_income = array(); foreach (ChartOfAccount::where('account_type', 'income')->get() as $key) { $chart_income[$key->id] = $key->name; } $chart_liability = array(); foreach (ChartOfAccount::where('account_type', 'liability')->get() as $key) { $chart_liability[$key->id] = $key->name; } $chart_equity = array(); foreach (ChartOfAccount::where('account_type', 'equity')->get() as $key) { $chart_equity[$key->id] = $key->name; } $chart_assets = array(); foreach (ChartOfAccount::where('account_type', 'asset')->get() as $key) { $chart_assets[$key->id] = $key->name; } $chart[translate('asset')]=$chart_assets; $chart[translate('income')]=$chart_income; $chart[translate('liability')]=$chart_liability; $chart[translate('equity')]=$chart_equity; $chart[translate('expense')]=$chart_expenses; //get custom fields $custom_fields = CustomField::where('category', 'payroll')->get(); $template = PayrollTemplate::first(); $top_left = PayrollTemplateMeta::where('payroll_template_id', $template->id)->where('position', 'top_left')->get(); $top_right = PayrollTemplateMeta::where('payroll_template_id', $template->id)->where('position', 'top_right')->get(); $bottom_left = PayrollTemplateMeta::where('payroll_template_id', $template->id)->where('position', 'bottom_left')->get(); $bottom_right = PayrollTemplateMeta::where('payroll_template_id', $template->id)->where('position', 'bottom_right')->get(); return view('payroll.edit', compact('user', 'custom_fields', 'bottom_right', 'bottom_left', 'top_right', 'top_left', 'template', 'payroll','chart')); } public function update(Request $request, $id) { if (!Sentinel::hasAccess('payroll.update')) { Flash::warning("Permission Denied"); return redirect('/'); } $payroll = Payroll::find($id); $payroll->payroll_template_id = $request->payroll_template_id; $payroll->user_id = $request->user_id; $payroll->employee_name = $request->employee_name; $payroll->business_name = $request->business_name; $payroll->payment_method = $request->payment_method; $payroll->bank_name = $request->bank_name; $payroll->account_number = $request->account_number; $payroll->description = $request->description; $payroll->comments = $request->comments; $payroll->paid_amount = $request->paid_amount; $payroll->date = $request->date; $payroll->chart_id = $request->chart_id; $date = explode('-', $request->date); $payroll->recurring = $request->recurring; if ($request->recurring == 1) { $payroll->recur_frequency = $request->recur_frequency; $payroll->recur_start_date = $request->recur_start_date; if (!empty($request->recur_end_date)) { $payroll->recur_end_date = $request->recur_end_date; } if (empty($payroll->recur_next_date)) { $payroll->recur_next_date = date_format(date_add(date_create($request->recur_start_date), date_interval_create_from_date_string($request->recur_frequency . ' ' . $request->recur_type . 's')), 'Y-m-d'); } $payroll->recur_type = $request->recur_type; } $payroll->year = $date[0]; $payroll->month = $date[1]; $payroll->save(); //save payroll meta $metas = PayrollTemplateMeta::where('payroll_template_id', $request->template_id)->get();; foreach ($metas as $key) { if (!empty(PayrollMeta::where('payroll_template_meta_id', $key->id)->where('payroll_id', $id)->first()) ) { $meta = PayrollMeta::where('payroll_template_meta_id', $key->id)->where('payroll_id', $id)->first(); } else { $meta = new PayrollMeta(); } $kid = $key->id; $meta->value = $request->$kid; $meta->payroll_id = $payroll->id; $meta->payroll_template_meta_id = $key->id; $meta->position = $key->position; $meta->save(); } //debit and credit the necessary accounts JournalEntry::where('payroll_id', $id)->delete(); if (!empty(ChartOfAccount::find(Setting::where('setting_key','payroll_chart_id')->first()->setting_value))) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = Setting::where('setting_key','payroll_chart_id')->setting_value->first(); $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->transaction_type = 'payroll'; $journal->name = "Payroll"; $journal->payroll_id = $payroll->id; $journal->debit = GeneralHelper::single_payroll_total_pay($payroll->id); $journal->reference = $payroll->id; $journal->save(); } if (!empty($payroll->chart)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $payroll->chart->id; $journal->date = $request->date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->transaction_type = 'payroll'; $journal->name = "Payroll"; $journal->payroll_id = $payroll->id; $journal->credit = GeneralHelper::single_payroll_total_pay($payroll->id); $journal->reference = $payroll->id; $journal->save(); } GeneralHelper::audit_trail("Updated payroll with id:".$payroll->id); Flash::success(translate('successfully_saved')); return redirect('payroll/data'); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function updateTemplate(Request $request, $id) { $metas = PayrollTemplateMeta::where('payroll_template_id', $id)->get(); foreach ($metas as $key) { $meta = PayrollTemplateMeta::find($key->id); $kid = $key->id; $meta->name = $request->$kid; $meta->save(); } Flash::success(translate('successfully_saved')); return redirect('payroll/template'); } public function delete($id) { if (!Sentinel::hasAccess('payroll.delete')) { Flash::warning("Permission Denied"); return redirect('/'); } Payroll::destroy($id); PayrollMeta::where('payroll_id',$id)->delete(); GeneralHelper::audit_trail("Deleted payroll with id:".$id); Flash::success(translate('successfully_deleted')); return redirect('payroll/data'); } }