/**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
     Schema::create('cjenovnici', function (Blueprint $table) {
         $table->increments('id');
         $table->string('ime', 50);
         $table->text('opis')->nullable();
         $table->integer('cijena_1_osoba')->unsigned();
         $table->integer('cijena_2_osobe')->unsigned();
         $table->integer('cijena_3_osobe')->unsigned();
         $table->integer('cijena_4_osobe')->unsigned();
         $table->integer('cijena_vise_osoba')->unsigned();
         $table->integer('instruktor_1_osoba')->unsigned();
         $table->integer('instruktor_2_osobe')->unsigned();
         $table->integer('instruktor_3_osobe')->unsigned();
         $table->integer('instruktor_4_osobe')->unsigned();
         $table->integer('instruktor_udio_vise_osoba')->unsigned();
         $table->timestamps();
     });
     //Populate
     $res = DB::table('cijene')->groupBy('individualno', 'popust', 'minimalno')->get();
     $po_osobi = function ($t, $n) {
         $x = $t->individualno - ($n - 1) * $t->popust;
         if ($x < $t->minimalno) {
             return $t->minimalno;
         }
         return $x;
     };
     $instruktoru = function ($t, $n) use($po_osobi) {
         $u = $po_osobi($t, $n) * $n;
         return $u - Naplata::getSatnicaZaTvrtku($u);
     };
     $i = 0;
     foreach ($res as $triplet) {
         $i++;
         $triplet->cjenovnik_id = Cjenovnik::create(array('ime' => "Cjenovnik {$i}", 'cijena_1_osoba' => $po_osobi($triplet, 1), 'cijena_2_osobe' => $po_osobi($triplet, 2), 'cijena_3_osobe' => $po_osobi($triplet, 3), 'cijena_4_osobe' => $po_osobi($triplet, 4), 'cijena_vise_osoba' => $triplet->minimalno, 'instruktor_1_osoba' => $instruktoru($triplet, 1), 'instruktor_2_osobe' => $instruktoru($triplet, 2), 'instruktor_3_osobe' => $instruktoru($triplet, 3), 'instruktor_4_osobe' => $instruktoru($triplet, 4), 'instruktor_udio_vise_osoba' => 50))->id;
     }
     //Populated
     Schema::create('c_m_p', function (Blueprint $table) {
         $table->integer('cjenovnik_id')->unsigned()->index();
         $table->integer('mjera_id')->unsigned()->index();
         $table->integer('predmet_id')->unsigned()->index();
         $table->primary(array('mjera_id', 'predmet_id'));
     });
     Schema::table('c_m_p', function (Blueprint $table) {
         $table->foreign('cjenovnik_id')->references('id')->on('cjenovnici')->onUpdate('cascade')->onDelete('cascade');
         $table->foreign('mjera_id')->references('id')->on('mjere')->onUpdate('cascade')->onDelete('cascade');
         $table->foreign('predmet_id')->references('id')->on('predmeti')->onUpdate('cascade')->onDelete('cascade');
     });
     // Populate c_m_p
     foreach ($res as $triplet) {
         $relations = DB::table('cijene')->where('individualno', '=', $triplet->individualno)->where('popust', '=', $triplet->popust)->where('minimalno', '=', $triplet->minimalno)->get();
         foreach ($relations as $relation) {
             DB::table('c_m_p')->insert(array('cjenovnik_id' => $triplet->cjenovnik_id, 'mjera_id' => $relation->mjera_id, 'predmet_id' => $relation->predmet_id));
         }
     }
     // populated c_m_p
 }
예제 #2
0
 /**
  * 
  * @param int $id Id of naplata to be deleted
  * @return Response
  */
 public function destroy_naplata($id)
 {
     $naplata = Naplata::find($id);
     if ($naplata) {
         $naplata->delete();
     }
     $rezervacija = Rezervacija::with('klijenti')->find($id);
     $updates = array();
     foreach ($rezervacija->klijenti as $klijent) {
         $updates[$klijent->broj_mobitela] = array('missed' => 0);
     }
     $rezervacija->klijenti()->sync($updates);
     return Redirect::route('Rezervacija.show', $id)->with(self::SUCCESS_MESSAGE_KEY, 'Naplata je uspješno poništena');
 }
예제 #3
0
 private function g_izvjestaj($id, $godina)
 {
     if (is_null($godina)) {
         $godina = date('Y');
     }
     $primanja = Naplata::select(DB::raw('month(pocetak_rada) as mjesec, ' . 'COALESCE(sum(stvarna_kolicina*trajanje),0) as minuta, ' . 'COALESCE(sum(za_instruktora),0) as za_instruktora, ' . 'COALESCE(sum(za_tvrtku),0) as za_tvrtku, ' . 'COALESCE(sum(ukupno_uplaceno),0) as ukupno_uplaceno'))->leftJoin('rezervacije', 'naplate.rezervacija_id', '=', 'rezervacije.id')->join('mjere', 'mjere.id', '=', 'naplate.stvarna_mjera');
     if (!is_null($id)) {
         $primanja = $primanja->where('rezervacije.instruktor_id', '=', $id);
     }
     $primanja = $primanja->where(DB::raw('year(pocetak_rada)'), '=', $godina)->groupBy(DB::raw('month(pocetak_rada)'))->get();
     $mjeseci = array(1 => 'Siječanj', 'Veljača', 'Ožujak', 'Travanj', 'Svibanj', 'Lipanj', 'Srpanj', 'Kolovoz', 'Rujan', 'Listopad', 'Studeni', 'Prosinac');
     foreach ($mjeseci as $m) {
         $zarada[$m] = array('sati' => 0, 'za_instruktora' => 0, 'za_tvrtku' => 0, 'ukupno_uplaceno' => 0);
     }
     $minuta = 0;
     $za_instruktora = 0;
     $za_tvrtku = 0;
     $ukupno_uplaceno = 0;
     foreach ($primanja as $p) {
         $zarada[$mjeseci[$p['mjesec']]]['sati'] = $p['minuta'] / 60;
         $minuta += $p['minuta'];
         $zarada[$mjeseci[$p['mjesec']]]['za_instruktora'] = $p['za_instruktora'];
         $za_instruktora += $p['za_instruktora'];
         $zarada[$mjeseci[$p['mjesec']]]['za_tvrtku'] = $p['za_tvrtku'];
         $za_tvrtku += $p['za_tvrtku'];
         $zarada[$mjeseci[$p['mjesec']]]['ukupno_uplaceno'] = $p['ukupno_uplaceno'];
         $ukupno_uplaceno += $p['ukupno_uplaceno'];
     }
     $zarada['Ukupno'] = array('sati' => $minuta / 60, 'za_instruktora' => $za_instruktora, 'za_tvrtku' => $za_tvrtku, 'ukupno_uplaceno' => $ukupno_uplaceno);
     return View::make('Izvjestaj.godisnji_izvjestaj')->with('godina', $godina)->with('zarada', $zarada);
 }