/** * 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 }
/** * * @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'); }
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); }