Example #1
0
 public function store_naplata($id)
 {
     $naplata = new Naplata();
     $rezervacija = Rezervacija::with('predmet', 'predmet.c_m_p', 'klijenti')->find($id);
     if ($rezervacija == null) {
         return $this->itemNotFound();
     }
     if ($rezervacija->tecaj) {
         return Redirect::route('Rezervacija.show', $id)->with(self::DANGER_MESSAGE_KEY, 'Tečajvi se ne naplaćuju!');
     }
     if (strtotime($rezervacija->pocetak_rada) > time()) {
         Session::flash(self::DANGER_MESSAGE_KEY, 'Nije moguće naplatiti instrukcije prije nego se odrade.');
         return Redirect::route('Rezervacija.show', $id);
     }
     $naplata->rezervacija_id = $rezervacija->id;
     $naplata->stvarna_kolicina = $rezervacija->kolicina;
     $naplata->stvarna_mjera = $rezervacija->mjera_id;
     if (Input::get('mjerechanged') == 'yes') {
         $error = $naplata->setStvarneVrijednosti(Input::get('stvarna_kolicina'), Input::get('stvarna_mjera'));
         if ($error) {
             return Redirect::route('Naplata.create')->with(self::DANGER_MESSAGE_KEY, $error)->withInput();
         }
     }
     //
     $polaznici = $rezervacija->klijenti;
     $changes = array();
     $missed_count = 0;
     foreach ($polaznici as $polaznik) {
         if (Input::has('polaznicichanged') && Input::has('klijent-came-' . $polaznik->broj_mobitela)) {
             $changes[$polaznik->broj_mobitela] = array('missed' => 1);
             $missed_count++;
         } else {
             $changes[$polaznik->broj_mobitela] = array('missed' => 0);
         }
     }
     //obracun iznosa
     $broj_polaznika = $polaznici->count() - $missed_count;
     $cjenovnik = $rezervacija->predmet->cjenovnik($naplata->stvarna_mjera);
     $ukupno_satnica = $cjenovnik->getUkupnaSatnica($broj_polaznika);
     $satnica_za_instruktora = $cjenovnik->getIntruktorovaSatnica($broj_polaznika);
     $naplata->ukupno_uplaceno = $ukupno_satnica * $naplata->stvarna_kolicina;
     $naplata->za_instruktora = $satnica_za_instruktora * $naplata->stvarna_kolicina;
     $naplata->za_tvrtku = $naplata->ukupno_uplaceno - $naplata->za_instruktora;
     $naplata->napomena = Input::get('napomena', '');
     if (strlen($naplata->napomena) > 255) {
         return Redirect::route('Naplata.create')->with(self::DANGER_MESSAGE_KEY, 'Napomena treba biti kraća od 255 znakova. Trenutna ima ' . strlen($naplata->napomena) . '.')->withInput();
     }
     $naplata->save();
     if (count($changes) > 0) {
         $rezervacija->klijenti()->sync($changes);
     }
     Session::flash(self::SUCCESS_MESSAGE_KEY, 'Uspješno ste naplatili');
     return Redirect::route('Rezervacija.show', $id);
 }