Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Controller\FrontDesk;
- use Slim\Http\Request;
- use Slim\Http\Response;
- use App\Controller\Controller;
- use App\Model\Addcharge;
- use App\Model\Addchargedetail;
- use App\Model\Addchargetype;
- use App\Model\Reservation;
- use App\Model\Reservationdetail;
- use App\Model\ResGuest;
- use App\Model\Option;
- use Kulkul\Accounting\AccountingServiceProvider;
- use Kulkul\CodeGenerator\AddchargeCode;
- use Kulkul\CurrencyFormater\FormaterAdapter;
- class AddchargeController extends Controller
- {
- public function __invoke(Request $request, Response $response, Array $args)
- {
- $data['addcharges'] = Addcharge::orderBy('id','desc')->limit(10)->get();
- // $data['addcharges'] = Addcharge::select('addcharges.*')
- // ->join('accjurnals','accjurnals.id','=','addcharges.accjurnals_id')
- // ->orderBy('addcharges.id','desc')->get();
- $data['app_profile'] = $this->app_profile;
- return $this->renderer->render($response, 'frontdesk/addcharge', $data);
- }
- public function form(Request $request, Response $response, Array $args)
- {
- $data = [];
- // if update
- $data['errors'] = $this->session->getFlash('error_messages');
- $data["checkins"]=Reservationdetail::whereNotNull("checkin_at")
- ->get();
- //$data["types"]=Addchargetype::where("is_active","=",1)->get();
- $data["types"]=Addchargetype::all();
- $data["addcharge"]=(object)["nobukti"=>AddchargeCode::generate(),"tanggal"=>date("Y-m-d")];
- if (isset($args['id'])){
- $data["addcharge"]=Addcharge::find($args["id"]);
- }
- // if error
- $data['errors'] = $this->session->getFlash('error_messages');
- if (!is_null($data['errors'])) {
- $data['type'] = (object) $this->session->getFlash('post_data');
- }
- return $this->renderer->render($response, 'frontdesk/addcharge-form', $data);
- }
- public function save(Request $request, Response $response, Array $args)
- {
- $postData = $request->getParsedBody();
- $this->validation->validate([
- 'reservationdetails_id|Kamar' => [$postData['reservationdetails_id'], 'required'],
- ]);
- if (!$this->validation->passes()) {
- $this->session->setFlash('error_messages', $this->validation->errors()->all());
- $this->session->setFlash('post_data', $postData);
- return $response->withRedirect($this->router->pathFor('frontdesk-addcharge-new'));
- }
- function convert_date($date){
- $exp = explode('-', $date);
- if (count($exp)==3) {
- $date = $exp[2].'-'.$exp[1].'-'.$exp[0];
- }
- return $date;
- }
- if (!$this->validation->passes()) {
- $this->session->setFlash('error_messages', $this->validation->errors()->all());
- $this->session->setFlash('post_data', $postData);
- if ($postData['id'] == '') {
- return $response->withRedirect($this->router->pathFor('frontdesk-addcharge-new'));
- } else {
- return $response->withRedirect($this->router->pathFor('frontdesk-addcharge-update', ["id" => $postData['id']]));
- }
- }
- // insert
- if ($postData['id'] == '') {
- $this->session->setFlash('success', 'Biaya tambahan ditambahkan');
- $addcharge = new Addcharge();
- } else {
- // update
- $this->session->setFlash('success', 'Biaya tambahan diperbarui');
- $addcharge = Addcharge::find($postData['id']);
- $addcharge->users_id_edit=$this->session->get('activeUser')["id"];
- }
- $addcharge->nobukti = $postData['nobukti'];
- $addcharge->tanggal = convert_date($postData['tanggal']);
- $addcharge->reservationdetails_id = $postData['reservationdetails_id'];
- $addcharge->remark=$postData["remark"];
- $addcharge->users_id=$this->session->get('activeUser')["id"];
- $addcharge->ntotal=FormaterAdapter::reverse($postData["total"]);
- if($postData['reservationdetails_id'] > 0){
- $addcharge->guests_id = ResGuest::where('reservationdetails_id',$postData['reservationdetails_id'])->first()->guests_id;
- }
- $addcharge->save();
- $addcharge_id=$addcharge->id;
- $addchargdet=Addchargedetail::where("addcharges_id","=",$addcharge->id);
- foreach ($addchargdet->get() as $key => $det) {
- $Accprovider=new AccountingServiceProvider();
- $res=$Accprovider->jurnal_delete($det->accjurnals_id);
- }
- $addchargdet->delete();
- foreach ($postData["types_id"] as $key => $type_id)
- {
- // input jurnal
- if($type_id!=0)
- {
- $Accprovider=new AccountingServiceProvider();
- $type=Addchargetype::find($type_id);
- $jurnal=[
- "id"=>"",
- "code" => "",
- "tanggal" => convert_date($postData['tanggal']),
- "nobukti" => @$postData['nobukti'],
- "keterangan" => "Detail Piutang biaya tambahan ".@$postData['nobukti']. " untuk ".$type->name." ($type->code) ",
- "details"=>[]
- ];
- $jurnal["details"][]=["accounts_id"=>Option::where("name","=","piutang")->first()->value,
- "debet"=>$postData['sell'][$key],
- "qty"=>$postData['qty'][$key],
- "kredit"=>0]; // simpan ke piutang
- $jurnal["details"][]=["accounts_id"=>$type->accincome,
- "debet"=>0,
- "qty"=>$postData['qty'][$key],
- "kredit"=>$postData['sell'][$key]
- ]; // simpan ke pendapatan
- //var_dump($jurnal);
- // $a = $postData['sell'];
- // var_dump($a);
- // die();
- if($postData['reservationdetails_id'] <= 0){
- $res=$Accprovider->jurnal_charges_save($jurnal);
- }
- // input detail
- $addchargedet=new Addchargedetail();
- $addchargedet->addchargetypes_id=$type_id;
- $addchargedet->addcharges_id=$addcharge_id;
- $addchargedet->remark=$postData["remarks"][$key];
- $addchargedet->qty=$postData["qty"][$key];
- $addchargedet->buy=0;
- $addchargedet->sell=FormaterAdapter::reverse($postData["sell"][$key]);
- $addchargedet->accjurnals_id=($res["accjurnals_id"] != '')?$res["accjurnals_id"]:0;
- $addchargedet->users_id=$this->session->get('activeUser')["id"];
- $addchargedet->save();
- }
- }
- //return $response;
- return $response->withRedirect($this->router->pathFor('frontdesk-addcharge'));
- }
- public function delete(Request $request, Response $response, Array $args)
- {
- $Accprovider=new AccountingServiceProvider();
- $Addcharge = Addcharge::find($args['id']);
- $res=$Accprovider->jurnal_delete($Addcharge->accjurnals_id);
- $Addcharge->delete();
- $Addchargedetail = Addchargedetail::where("Addcharges_id","=",$args['id']);
- foreach ($Addchargedetail->get() as $key => $det) {
- $Accprovider=new AccountingServiceProvider();
- $res=$Accprovider->jurnal_delete($det->accjurnals_id);
- }
- $Addchargedetail->delete();
- $this->session->setFlash('success', 'Data biaya jenis telah dihapus');
- return $response->withRedirect($this->router->pathFor('frontdesk-addcharge'));
- }
- public function print(Request $request, Response $response, Array $args)
- {
- $data['addcharge'] = Addcharge::find($args['id']);
- $opt = Option::all();
- $Options=[];
- foreach ($opt as $value) {
- $Options[$value->name] = $value->value;
- }
- $data['options'] = $Options;
- // return var_dump($data);
- return $this->renderer->render($response, 'frontdesk/reports/print', $data);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement