100,'bd5' => 500,'bd10' => 1000,'bd20' => 1000,'bd50' => 5000,'bd100' => 5000, 'txtsen1' => 0.01,'txtsen5' => 0.05,'txtsen10' => 0.10,'txtsen20' => 0.20,'txtsen50' => 0.50, 'txtring1' => 1,'txtring5' => 5,'txtring10' => 10,'txtring20' => 20,'txtring50' => 50, 'txtring100' => 100,'txtring1000' => 1000, ]; public function __construct($kodcaw){ $this->cawangan = $kodcaw; } private function calculation_denominasi($array_deno = [],$denominasi = [],$jenis_panjar){ if(isset($array_deno) <= 0 || isset($denominasi) <= 0){ return 'no data'; } if($jenis_panjar != 'masuk' || $jenis_panjar != 'keluar') return 'no data'; $records = []; foreach($this->namelist_deno as $deno => $value){ $total_deno = 0;$total = 0; $total_deno = ($jenis_panjar == 'masuk') ? $denominasi[$deno] += intval($array_deno[$deno]) : $denominasi[$deno] -= intval($array_deno[$deno]); $total = ($total_deno * $value); $records[$deno] = [ 'keping' => $total_deno, 'jumlah' => $total ]; } /* total Keping */ $total_keping = array_sum(array_column($records, 'jumlah')); /* Total Bundle */ $filteredKeys = array_filter(array_keys($records), function($key) { return strpos($key, 'bd') !== false; }); $filteredRecords = array_filter($records, function($record,$key) use ($filteredKeys) { return in_array($key, $filteredKeys); }, ARRAY_FILTER_USE_BOTH); $total_bundle = array_sum(array_column($filteredRecords, 'jumlah')); return [ 'deno' => $records, 'total' => $total_keping, 'total_bundle' => $total_bundle, 'total_all' => ($total_keping + $total_bundle), ]; } public function delete(Request $request){ $current = Carbon::now(); $current = new Carbon(); $cawangan = Cawangan::on('mysql7')->where('kodcaw', $this->cawangan)->first(); $denominasi = Denominasi::on($cawangan['mysql'])->latest('tarikh')->first(); $panjar = Panjar::on($cawangan['mysql'])->latest('tarikh')->where('nobaucer', $request->nobaucer)->first(); $vault = Vault::on($cawangan['mysql'])->latest('tarikh')->first(); $deno_panjar = DenoPanjar::on('mysql7')->where('kodcaw', $this->cawangan)->where('recno', $request->recno)->latest('tarikh','masa')->first(); try{ if (!$panjar) throw new \Exception('Custom Exception: Panjar Does Not Exist!'); if (!$denominasi) throw new \Exception('Custom Exception: Denominasi Does Not Exist!'); if (!$vault) throw new \Exception('Custom Exception: Vault Does Not Exist!'); if (!$deno_panjar) throw new \Exception('Custom Exception: Denominasi Panjar Does Not Exist!'); DB::transaction(function () use ($cawangan,$deno_panjar,$panjar,$denominasi,$current,$vault) { $return_data = $this->calculation_denominasi($deno_panjar,$denominasi,'masuk'); if($return_data == 'no data') throw new \Exception('Custom Exception: Denominasi Panjar Not Return Data'); Denominasi::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()]])->update(array( 'bd1' => $return_data['deno']['bd1']['keping'], 'b1'=> $return_data['deno']['bd1']['jumlah'], 'bd5'=> $return_data['deno']['bd5']['keping'], 'b5'=> $return_data['deno']['bd5']['keping'], 'bd10'=> $return_data['deno']['bd10']['keping'], 'b10'=> $return_data['deno']['bd10']['jumlah'], 'bd20'=> $return_data['deno']['bd20']['keping'], 'b20'=> $return_data['deno']['bd20']['jumlah'], 'bd50'=> $return_data['deno']['bd50']['keping'], 'b50'=> $return_data['deno']['bd50']['jumlah'], 'bd100'=> $return_data['deno']['bd100']['keping'], 'b100'=> $return_data['deno']['bd100']['jumlah'], 'txtring1'=> $return_data['deno']['txtring1']['keping'], 'k1'=> $return_data['deno']['txtring1']['jumlah'], 'txtring5'=> $return_data['deno']['txtring5']['keping'], 'k5'=> $return_data['deno']['txtring5']['jumlah'], 'txtsen1'=> $return_data['deno']['txtsen1']['keping'], 'k01'=> $return_data['deno']['txtsen1']['jumlah'], 'txtsen5'=> $return_data['deno']['txtsen5']['keping'], 'k05'=> $return_data['deno']['txtsen5']['jumlah'], 'txtsen10'=> $return_data['deno']['txtsen10']['keping'], 'k010'=> $return_data['deno']['txtsen10']['jumlah'], 'txtsen20'=> $return_data['deno']['txtsen20']['keping'], 'k020'=> $return_data['deno']['txtsen20']['jumlah'], 'txtsen50'=> $return_data['deno']['txtsen50']['keping'], 'k050'=> $return_data['deno']['txtsen50']['jumlah'], 'txtring10'=> $return_data['deno']['txtring10']['keping'], 'k10'=> $return_data['deno']['txtring10']['jumlah'], 'txtring20'=> $return_data['deno']['txtring20']['keping'], 'k20'=> $return_data['deno']['txtring20']['jumlah'], 'txtring50'=> $return_data['deno']['txtring50']['keping'], 'k50'=> $return_data['deno']['txtring50']['jumlah'], 'txtring100'=> $return_data['deno']['txtring100']['keping'], 'k100'=> $return_data['deno']['txtring100']['jumlah'], 'txtring1000'=> $return_data['deno']['txtring1000']['keping'], 'k1000'=> $return_data['deno']['txtring1000']['jumlah'], 'jumlahbundle'=> $return_data['total_bundle'], 'txtjumlah'=> $return_data['total_all'], 'jumlahkeping' => $return_data['total'] ) ); $totalpanjar = ($vault['totpanjar'] - $deno_panjar['serahan']); $bakiakhir = ($vault['bakiawal'] - $vault['keluar'] + $vault['masuk'] + $vault['pendahuluan'] - $vault['serahan'] - $totalpanjar); if($bakiakhir <= 0) throw new \Exception('Custom Exception: Amaun Baki Akhir Cannot Be Zero'); if($totalpanjar < 0) throw new \Exception('Custom Exception: Amaun Panjar Cannot Be Zero'); Vault::on($cawangan['mysql'])->where('kodcaw','=', $cawangan['kodcaw'])->latest('tarikh')->update(array( 'totpanjar' => $totalpanjar, 'bakiakhir'=>$bakiakhir, 'bakieod'=>$bakiakhir )); DenoPanjar::on('mysql7')->where('kodcaw', $this->cawangan)->where('recno', $panjar['recno'])->latest('tarikh','masa')->delete(); Panjar::on($cawangan['mysql'])->where('recno',$panjar['recno'])->delete(); $audit = new Audit(); $audit->users = $request->tuntutoleh; $audit->actions = "Keluarkan Perbelanjaan"; $audit->new_data = $panjar; $audit->kodcaw = $this->cawangan; $audit->created_at = $current; $audit->updated_at = $current; $audit->save(); }); }catch(\Exception $e){ dd($e->getMessage()); Log::error('Exception: ' , $e->getMessage()); } } public function create(Request $request){ $current = Carbon::now(); $current = new Carbon(); $cawangan = Cawangan::on('mysql7')->where('kodcaw', $this->cawangan)->first(); $denominasi = Denominasi::on($cawangan['mysql'])->latest('tarikh')->first(); $vault = Vault::on($cawangan['mysql'])->latest('tarikh')->first(); try{ if (!$denominasi) throw new \Exception('Custom Exception: Denominasi Does Not Exist!'); if (!$vault) throw new \Exception('Custom Exception: Vault Does Not Exist!'); DB::transaction(function () use ($cawangan,$denominasi,$current,$vault,$request) { $panjar = Panjar::on($cawangan['mysql']) ->create([ 'tarikh'=> $current->toDateString(), 'deskripsi'=> $request->deskripsi, 'bayaran' => $request->bayaran, 'tag' => $request->tag, 'kategori' => $request->kategori, 'id' => $request->id, 'bakiperubatan' => $request->bakiperubatan, 'nobaucer' => $request->nobaucer, 'nobil' => $request->nobil, 'tuntutoleh' => $request->tuntutoleh ]); $denopanjar = DenoPanjar::on('mysql7')->create([ 'tarikh' => $current->toDateString(), 'masa' => $current->toTimeString(), 'kodcaw' => $this->cawangan, 'kodlaluan' => $request->kodlaluan, 'serahan' => $request->serahan, 'bd1' => $request->bd1, 'bd5' => $request->bd5, 'bd10' => $request->bd10, 'bd20' => $request->bd20, 'bd50' => $request->bd50, 'bd100' => $request->bd100, 'txtring1' => $request->txtring1, 'txtring5' => $request->txtring5, 'txtring10' => $request->txtring10, 'txtring20' => $request->txtring20, 'txtring50' => $request->txtring50, 'txtring100' => $request->txtring100, 'txtring1000' => $request->txtring1000, 'txtsen1' => $request->txtsen1, 'txtsen5' => $request->txtsen5, 'txtsen10' => $request->txtsen10, 'txtsen20' => $request->txtsen20, 'txtsen50' => $request->txtsen50, 'jenis' =>$request->jenis, 'recno' =>$panjar['recno'], 'update' => '0' ]); $return_data = $this->calculation_denominasi($denopanjar,$denominasi,'masuk'); if($return_data == 'no data') throw new \Exception('Custom Exception: Denominasi Panjar Not Return Data'); Denominasi::on($cawangan['mysql'])->where([['tarikh','=',$current->toDateString()]])->update(array( 'bd1' => $return_data['deno']['bd1']['keping'], 'b1'=> $return_data['deno']['bd1']['jumlah'], 'bd5'=> $return_data['deno']['bd5']['keping'], 'b5'=> $return_data['deno']['bd5']['keping'], 'bd10'=> $return_data['deno']['bd10']['keping'], 'b10'=> $return_data['deno']['bd10']['jumlah'], 'bd20'=> $return_data['deno']['bd20']['keping'], 'b20'=> $return_data['deno']['bd20']['jumlah'], 'bd50'=> $return_data['deno']['bd50']['keping'], 'b50'=> $return_data['deno']['bd50']['jumlah'], 'bd100'=> $return_data['deno']['bd100']['keping'], 'b100'=> $return_data['deno']['bd100']['jumlah'], 'txtring1'=> $return_data['deno']['txtring1']['keping'], 'k1'=> $return_data['deno']['txtring1']['jumlah'], 'txtring5'=> $return_data['deno']['txtring5']['keping'], 'k5'=> $return_data['deno']['txtring5']['jumlah'], 'txtsen1'=> $return_data['deno']['txtsen1']['keping'], 'k01'=> $return_data['deno']['txtsen1']['jumlah'], 'txtsen5'=> $return_data['deno']['txtsen5']['keping'], 'k05'=> $return_data['deno']['txtsen5']['jumlah'], 'txtsen10'=> $return_data['deno']['txtsen10']['keping'], 'k010'=> $return_data['deno']['txtsen10']['jumlah'], 'txtsen20'=> $return_data['deno']['txtsen20']['keping'], 'k020'=> $return_data['deno']['txtsen20']['jumlah'], 'txtsen50'=> $return_data['deno']['txtsen50']['keping'], 'k050'=> $return_data['deno']['txtsen50']['jumlah'], 'txtring10'=> $return_data['deno']['txtring10']['keping'], 'k10'=> $return_data['deno']['txtring10']['jumlah'], 'txtring20'=> $return_data['deno']['txtring20']['keping'], 'k20'=> $return_data['deno']['txtring20']['jumlah'], 'txtring50'=> $return_data['deno']['txtring50']['keping'], 'k50'=> $return_data['deno']['txtring50']['jumlah'], 'txtring100'=> $return_data['deno']['txtring100']['keping'], 'k100'=> $return_data['deno']['txtring100']['jumlah'], 'txtring1000'=> $return_data['deno']['txtring1000']['keping'], 'k1000'=> $return_data['deno']['txtring1000']['jumlah'], 'jumlahbundle'=> $return_data['total_bundle'], 'txtjumlah'=> $return_data['total_all'], 'jumlahkeping' => $return_data['total'] ) ); $totalpanjar = ($vault['totpanjar'] + $denopanjar['serahan']); $bakiakhir = ($vault['bakiawal'] - $vault['keluar'] + $vault['masuk'] + $vault['pendahuluan'] - $vault['serahan'] - $totalpanjar); if($bakiakhir <= 0) throw new \Exception('Custom Exception: Amaun Baki Akhir Cannot Be Zero'); if($totalpanjar < 0) throw new \Exception('Custom Exception: Amaun Panjar Cannot Be Zero'); Vault::on($cawangan['mysql'])->where('kodcaw','=', $cawangan['kodcaw'])->latest('tarikh')->update(array( 'totpanjar' => $totalpanjar, 'bakiakhir'=>$bakiakhir, 'bakieod'=>$bakiakhir )); $audit = new Audit(); $audit->users = $request->tuntutoleh; $audit->actions = "Daftar Perbelanjaan"; $audit->new_data = $panjar; $audit->kodcaw = $this->cawangan; $audit->created_at = $current; $audit->updated_at = $current; $audit->save(); }); }catch(\Exception $e){ dd($e->getMessage()); Log::error('Exception: ' , $e->getMessage()); } } }