| Server IP : 103.161.17.216 / Your IP : 216.73.216.1 Web Server : nginx/1.18.0 System : Linux tipsysaigoncharming 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/app.ansachsongkhoe.net/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use App\BusinessLocation;
use App\CashRegister;
use App\Utils\CashRegisterUtil;
use App\Utils\ModuleUtil;
use Illuminate\Http\Request;
class CashRegisterController extends Controller
{
/**
* All Utils instance.
*
*/
protected $cashRegisterUtil;
protected $moduleUtil;
/**
* Constructor
*
* @param CashRegisterUtil $cashRegisterUtil
* @return void
*/
public function __construct(CashRegisterUtil $cashRegisterUtil, ModuleUtil $moduleUtil)
{
$this->cashRegisterUtil = $cashRegisterUtil;
$this->moduleUtil = $moduleUtil;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('cash_register.index');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//like:repair
$sub_type = request()->get('sub_type');
//Check if there is a open register, if yes then redirect to POS screen.
if ($this->cashRegisterUtil->countOpenedRegister() != 0) {
return redirect()->action('SellPosController@create', ['sub_type' => $sub_type]);
}
$business_id = request()->session()->get('user.business_id');
$business_locations = BusinessLocation::forDropdown($business_id);
return view('cash_register.create')->with(compact('business_locations', 'sub_type'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//like:repair
$sub_type = request()->get('sub_type');
try {
$initial_amount = 0;
if (!empty($request->input('amount'))) {
$initial_amount = $this->cashRegisterUtil->num_uf($request->input('amount'));
}
$user_id = $request->session()->get('user.id');
$business_id = $request->session()->get('user.business_id');
$register = CashRegister::create([
'business_id' => $business_id,
'user_id' => $user_id,
'status' => 'open',
'location_id' => $request->input('location_id'),
'created_at' => \Carbon::now()->format('Y-m-d H:i:00')
]);
if (!empty($initial_amount)) {
$register->cash_register_transactions()->create([
'amount' => $initial_amount,
'pay_method' => 'cash',
'type' => 'credit',
'transaction_type' => 'initial'
]);
}
} catch (\Exception $e) {
\Log::emergency("File:" . $e->getFile(). "Line:" . $e->getLine(). "Message:" . $e->getMessage());
}
return redirect()->action('SellPosController@create', ['sub_type' => $sub_type]);
}
/**
* Display the specified resource.
*
* @param \App\CashRegister $cashRegister
* @return \Illuminate\Http\Response
*/
public function show($id)
{
if (!auth()->user()->can('view_cash_register')) {
abort(403, 'Unauthorized action.');
}
$business_id = request()->session()->get('user.business_id');
$register_details = $this->cashRegisterUtil->getRegisterDetails($id);
$user_id = $register_details->user_id;
$open_time = $register_details['open_time'];
$close_time = !empty($register_details['closed_at']) ? $register_details['closed_at'] : \Carbon::now()->toDateTimeString();
$details = $this->cashRegisterUtil->getRegisterTransactionDetails($user_id, $open_time, $close_time);
$payment_types = $this->cashRegisterUtil->payment_types(null, false, $business_id);
return view('cash_register.register_details')
->with(compact('register_details', 'details', 'payment_types', 'close_time'));
}
/**
* Shows register details modal.
*
* @param void
* @return \Illuminate\Http\Response
*/
public function getRegisterDetails()
{
if (!auth()->user()->can('view_cash_register')) {
abort(403, 'Unauthorized action.');
}
$business_id = request()->session()->get('user.business_id');
$register_details = $this->cashRegisterUtil->getRegisterDetails();
$user_id = auth()->user()->id;
$open_time = $register_details['open_time'];
$close_time = \Carbon::now()->toDateTimeString();
$is_types_of_service_enabled = $this->moduleUtil->isModuleEnabled('types_of_service');
$details = $this->cashRegisterUtil->getRegisterTransactionDetails($user_id, $open_time, $close_time, $is_types_of_service_enabled);
$payment_types = $this->cashRegisterUtil->payment_types($register_details->location_id, true, $business_id);
return view('cash_register.register_details')
->with(compact('register_details', 'details', 'payment_types', 'close_time'));
}
/**
* Shows close register form.
*
* @param void
* @return \Illuminate\Http\Response
*/
public function getCloseRegister($id = null)
{
if (!auth()->user()->can('close_cash_register')) {
abort(403, 'Unauthorized action.');
}
$business_id = request()->session()->get('user.business_id');
$register_details = $this->cashRegisterUtil->getRegisterDetails($id);
$user_id = $register_details->user_id;
$open_time = $register_details['open_time'];
$close_time = \Carbon::now()->toDateTimeString();
$is_types_of_service_enabled = $this->moduleUtil->isModuleEnabled('types_of_service');
$details = $this->cashRegisterUtil->getRegisterTransactionDetails($user_id, $open_time, $close_time, $is_types_of_service_enabled);
$payment_types = $this->cashRegisterUtil->payment_types($register_details->location_id, true, $business_id);
$pos_settings = !empty(request()->session()->get('business.pos_settings')) ? json_decode(request()->session()->get('business.pos_settings'), true) : [];
return view('cash_register.close_register_modal')
->with(compact('register_details', 'details', 'payment_types', 'pos_settings'));
}
/**
* Closes currently opened register.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function postCloseRegister(Request $request)
{
if (!auth()->user()->can('close_cash_register')) {
abort(403, 'Unauthorized action.');
}
try {
//Disable in demo
if (config('app.env') == 'demo') {
$output = ['success' => 0,
'msg' => 'Feature disabled in demo!!'
];
return redirect()->action('HomeController@index')->with('status', $output);
}
$input = $request->only(['closing_amount', 'total_card_slips', 'total_cheques', 'closing_note']);
$input['closing_amount'] = $this->cashRegisterUtil->num_uf($input['closing_amount']);
$user_id = $request->input('user_id');
$input['closed_at'] = \Carbon::now()->format('Y-m-d H:i:s');
$input['status'] = 'close';
$input['denominations'] = !empty(request()->input('denominations')) ? json_encode(request()->input('denominations')) : null;
CashRegister::where('user_id', $user_id)
->where('status', 'open')
->update($input);
$output = ['success' => 1,
'msg' => __('cash_register.close_success')
];
} catch (\Exception $e) {
\Log::emergency("File:" . $e->getFile(). "Line:" . $e->getLine(). "Message:" . $e->getMessage());
$output = ['success' => 0,
'msg' => __("messages.something_went_wrong")
];
}
return redirect()->back()->with('status', $output);
}
}