/** * Preveri, če datum dela prost dan * * @param string $datum datum, za katerega preverjamo, če je dela prost dan v ISO8601 obliki, npr. "2017-01-01T01:00:00+0100" * @return true|false true če je dela prost dan, false sicer * @throws \Max\Exception\UnauthException */ public function delaProstDan($datum) { // preverjanje avtorizacije $this->expectPermission("Praznik-read"); $this->expectIsoDate($datum, $this->translate("Datum ({$datum}) ni datum v ISO8601 obliki"), 1001110); $datumD = Functions::stringToDateTime($datum); /** * preračun imamo v posebnem servisu, tako, da ga lahko kličemo direktno iz PHP-ja na strežniški strani */ $service = $this->serviceLocator->get('praznik.service'); return $service->delaProstDan($datumD); }
public function validate($mode = 'update') { $this->expect($this->getUprizoritev(), "Uprizoritev je obvezen podatek", 1000452); if ($this->getDokument()) { // preveriti, ali že obstaja program pon. prem. z isto uprizoritvijo $obstaja = true; //init if ($this->getDokument()->getPonovitvePremiere()) { $id = $this->getId(); $obstaja = $this->getDokument()->getPonovitvePremiere()->exists(function ($key, $ponovitvePremiere) use(&$id) { return $ponovitvePremiere->getUprizoritev() == $this->getUprizoritev() && $ponovitvePremiere->getId() !== $id; //vrne true, če obstaja drug program pon. prem. z isto uprizoritvijo }); $this->expect(!$obstaja, "Program premiere z isto uprizoritvijo že obstaja v programu dela", 1000450); } } $zaproseno = \Max\Functions::euroRoundS($this->zaproseno); $maxZaproseno = \Max\Functions::euroRoundS(0.7 * ($this->avtorskiHonorarji + $this->tantieme)); // glede na procent upravičenih stroškov $this->expect($zaproseno <= $maxZaproseno, "Zaprošeno (" . $zaproseno . ") je lahko največ 70% vsote avt.honor in tantiem (" . $maxZaproseno . ")", 1000452); parent::validate(); }
public function validate($mode = 'update') { $this->expect(!$this->getTipProgramskeEnote(), "Tip programske enote obstaja, a ne sme obstajati za program izjemni", 1000541); $this->expect(!$this->getUprizoritev(), "Uprizoritev obstaja, a ne sme obstajati za program izjemni", 1000542); $this->expect($this->getNaziv(), "Naziv ne sme biti prazen", 1000545); $this->expect($this->getTrajanje(), "Trajanje ne sme biti prazno", 1000546); $this->expect($this->getPrizorisce(), "Prizorišče ne sme biti prazno", 1000547); $this->expect($this->getZvrst(), "Zvrst je obvezen podatek", 1000548); $this->expect($this->getAvtor(), "Avtor je obvezen podatek", 1001230); $this->expect($this->getReziser(), "Režiser je obvezen podatek", 1001231); $this->expect($this->getDatum(), "Datum je obvezen podatek", 1001232); $nd = \Max\Functions::euroRoundS($this->getNasDelez()); $sumStr = \Max\Functions::euroRoundS($this->avtorskiHonorarji + $this->tantieme + $this->avtorskePravice + $this->materialni); $this->expect($nd >= $sumStr, "Našega delež (" . $nd . ") mora biti večji ali enak vsoti avtorskih honor, tantiem, avt.pravic in mat. str. (" . $sumStr . ")", 1000543); $zaproseno = \Max\Functions::euroRoundS($this->zaproseno); $maxZaproseno = \Max\Functions::euroRoundS(1.0 * $this->nasDelez); // glede na procent upravičenih stroškov $this->expect($zaproseno <= $maxZaproseno, "Zaprošeno (" . $zaproseno . ") je lahko največ 100% deleža mat. JZ(" . $maxZaproseno . ")", 1000544); parent::validate(); }
public function validate($mode = 'update') { $this->expect($this->getTipProgramskeEnote(), "Tip programske enote ne obstaja", 1000443); $this->expect($this->getUprizoritev(), "Uprizoritev je obvezen podatek", 1000444); $this->validateIntGE0($this->obiskDoma, "", 1000447); /** * preveri vrednost za tip programske enote * - glede na vrednost matičnega * - glede na vsoto koproducentov (v entiteti prod. delitev) */ $this->validateNumberGE0($this->kpe, "Koeficient programske enote", 1000445); $kpe = \Max\Functions::numberRoundS($this->kpe); $maxfaktor = \Max\Functions::numberRoundS($this->getTipProgramskeEnote()->getMaxFaktor()); $this->expect($kpe <= $maxfaktor, "Koeficient programske enote (" . $kpe . ") ne sme biti večji kot maks. koeficient (" . $maxfaktor . ")", 1000446); if ($this->getDokument()) { /** * preveriti, ali že obstaja programpremiere z isto uprizoritvijo */ $obstaja = true; //init if (!$this->getDokument()->getPremiere()->isEmpty()) { $id = $this->getId(); $obstaja = $this->getDokument()->getPremiere()->exists(function ($key, $progPremiere) use(&$id) { return !empty($this->getUprizoritev()) && $progPremiere->getUprizoritev() == $this->getUprizoritev() && $progPremiere->getId() !== $id; //vrne true, če obstaja drug programpremiere z isto uprizoritvijo }); $this->expect(!$obstaja, "Program premiere z isto uprizoritvijo že obstaja v programu dela", 1000440); } } $zaproseno = \Max\Functions::euroRoundS($this->zaproseno); $maxZaproseno = \Max\Functions::euroRoundS(0.7 * $this->nasDelez); // glede na procent upravičenih stroškov $this->expect($zaproseno <= $maxZaproseno, "Zaprošeno (" . $zaproseno . ") je lahko največ 70% deleža mat. JZ(" . $maxZaproseno . ")", 1000442); parent::validate(); }
public function validate($mode = 'update') { $this->expect($this->getEnotaPrograma(), 'Ni enote programa za to koprodukcijo', 1000410); $this->validateNumberGE0($this->kpe, "Koeficient programske enote", 1000417); $this->validateProcGE0LE100($this->odstotekFinanciranja, "Odstotek financiranja", 1000412); $this->validateEuroGE0($this->delez, "Delež", 1000416); $delez = \Max\Functions::procRoundS($this->delez); //$$ kontrole za vsoto procentov // za isto enoto programa je lahko le 1 delitev z isto produkcijsko hišo if (!$this->getEnotaPrograma()->getKoprodukcije()->isEmpty()) { $id = $this->getId(); $obstaja = $this->getEnotaPrograma()->getKoprodukcije()->exists(function ($key, $kopr) use(&$id) { return $kopr->getKoproducent() == $this->getKoproducent() && $kopr->getId() !== $id; //vrne true, če obstaja drug koprodukcija z istim koproducentom }); $this->expect(!$obstaja, "Koprodukcija z istim koproducentom že obstaja v enoti programa", 1000411); /** * preveri število matičnih koprodukcij? */ $maticniCollection = $this->getEnotaPrograma()->getKoprodukcije()->filter(function ($kopr) { return $kopr->getMaticniKop(); //vrne vse zapise matičnih koproducentov }); $stMaticnihKoproducentov = $maticniCollection->count(); $this->expect($stMaticnihKoproducentov == 1, "Dovoljen natanko 1 matični koproducent, jih je pa " . $stMaticnihKoproducentov, 1000414); } /** * pri premieri mora biti vsota kpe vseh koproducentov <= maksimalnemu koeficientu iz tabele */ $sumkpe = 0; //init /** * $$ if program premiera * pri drugih ne bi smel biti problem, ker so KPE-ji =0 $$? */ foreach ($this->getEnotaPrograma()->getKoprodukcije() as $numObject => $kopr) { $sumkpe += $kopr->getKpe(); } $sumkpe = \Max\Functions::numberRoundS($sumkpe); $maxvsifaktor = $this->getEnotaPrograma()->getTipProgramskeEnote() ? $this->getEnotaPrograma()->getTipProgramskeEnote()->getMaxVsi() : 0; $maxvsifaktor = \Max\Functions::numberRoundS($maxvsifaktor); $this->expect($sumkpe <= $maxvsifaktor, "Vsota kpe vseh koproducentov (" . $sumkpe . ") ne sme biti večji kot maks. koeficient (" . $maxvsifaktor . ")", 1000415); }
public function validate($mode = 'update') { $this->expect($this->getUprizoritev(), "Uprizoritev je obvezen podatek", 1000434); $this->validateEuroGE0($this->strosekOdkPred, "Strošek odkupa predstave", 1000433); if ($this->getDokument()) { // preveriti, ali že obstaja programgostujoča z isto uprizoritvijo $obstaja = true; //init if (!$this->getDokument()->getGostujoci()->isEmpty()) { $id = $this->getId(); $obstaja = $this->getDokument()->getGostujoci()->exists(function ($key, $progGostujoca) use(&$id) { return $progGostujoca->getUprizoritev() == $this->getUprizoritev() && $progGostujoca->getId() !== $id; //vrne true, če obstaja drug programGostujoča z isto uprizoritvijo }); $this->expect(!$obstaja, "Program gostujoča z isto uprizoritvijo že obstaja v programu dela", 1000430); } } $this->expect(!$this->getTipProgramskeEnote(), "Tip programske enote obstaja, a ne sme obstajati za gostujočo", 1000431); $zaproseno = \Max\Functions::euroRoundS($this->zaproseno); $maxZaproseno = \Max\Functions::euroRoundS(0.5 * $this->strosekOdkPred); // glede na procent upravičenih stroškov $this->expect($zaproseno <= $maxZaproseno, "Zaprošeno (" . $zaproseno . ") je lahko največ 50% stroška odkupa predstave (" . $maxZaproseno . ")", 1000432); $strOdkPred = \Max\Functions::euroRoundS($this->strosekOdkPred); $nd = \Max\Functions::euroRoundS($this->nasDelez); $this->expect($strOdkPred <= $nd, "Strošek odkupa predstave (" . $strOdkPred . ") ne sme biti večji od našega deleža (" . $nd . ")", 1000433); parent::validate(); }
public function validate($mode = 'update') { $this->validateIntGE0($this->stPredstav, "Št. predstav", 1000534); $this->validateIntGE0($this->stOkroglihMiz, "Št. okroglih miz", 1000535); $this->validateIntGE0($this->stPredstavitev, "Št. predstavitev", 1000536); $this->validateIntGE0($this->stDelavnic, "Št. delavnic", 1000537); $this->validateIntGE0($this->stDrugiDogodki, "Št. drugih dogodkov", 1000538); $this->validateIntGE0($this->stProdukcij, "Št. produkcij", 1000539); $this->validateIntGE0($this->stTujihSelektorjev, "Št. tujih selektorev", 1000700); $this->expect(!$this->getTipProgramskeEnote(), "Tip programske enote obstaja, a ne sme obstajati za program festival", 1000531); $this->expect(!$this->getUprizoritev(), "Uprizoritev obstaja, a ne sme obstajati za program festival", 1000532); $this->expect($this->getNaziv(), "Naziv ne sme biti prazen", 1000570); $zaproseno = \Max\Functions::euroRoundS($this->zaproseno); $maxZaproseno = \Max\Functions::euroRoundS(0.7 * $this->nasDelez); // glede na procent upravičenih stroškov $this->expect($zaproseno <= $maxZaproseno, "Zaprošeno (" . $zaproseno . ") je lahko največ 70% deleža mat. JZ(" . $maxZaproseno . ")", 1000533); parent::validate(); }
/** * preveri vhodne parametre RPC klicev in nasilno prekini program, če niso v redu * */ private function preveriVhodneParametre($uprizoritveIds, $alternacije, $zacetek, $konec) { foreach ($uprizoritveIds as $u) { $this->expectUUID($u, 'Pričakujem ID uprizoritev v prvem parametru', 1001670); } foreach ($alternacije as $key => $foo) { $this->expect(is_array($foo) && is_integer($key), 'Pričakujem array fun:(os,os,..) v drugem parametru', 1001676); foreach ($foo as $fun => $osebe) { $this->expectUUID($fun, 'Pričakujem Id funkcije kot ključ v drugem parametru', 1001674); foreach ($osebe as $o) { $this->expectUUID($o, 'Pričakujem Id oseb v drugem parametru', 1001675); } } } if (!empty($zacetek)) { $this->expectIsoDate($zacetek, $this->translate('Začetek (' . $zacetek . ') ni datum v ISO8601 obliki'), 1001671); } if (!empty($konec)) { $this->expectIsoDate($konec, $this->translate('Konec (' . $konec . ') ni datum v ISO8601 obliki'), 1001672); } $this->expect(empty($zacetek) && empty($konec) || !empty($zacetek) && !empty($konec), "Začetek in konec morata biti ali oba prazna ali oba čas", 1001673); /** * konec mora biti >=začetek */ if (!empty($zacetek) && !empty($konec)) { /* * pretvorimo v datum za vsak slučaj, če bi bila $zacetek in $konec * v različnih time zone-ah */ $zacTime = Functions::stringToDateTime($zacetek); $konTime = Functions::stringToDateTime($konec); $this->expect($zacTime <= $konTime, "Konec ne sme biti pred začetkom", 1001677); } }
public function validate($mode = 'update') { $this->expect($this->getUprizoritev(), "Uprizoritev je obvezen podatek", 1001303); $this->expect($this->getGostitelj(), "Gostitelj je obvezen podatek", 1001304); $this->expect($this->getDrzavaGostovanja(), "Država gostovanja je obvezen podatek", 1001305); $this->validateEuroGE0($this->transportniStroski, "Transportni stroški", 1001300); $this->validateEuroGE0($this->dnevPrvZad, "Dnevnice za prvi in zadnji dan", 1001301); $this->expect(!$this->getTipProgramskeEnote(), "Tip programske enote obstaja, a ne sme obstajati za gostovanje", 1001302); $zaproseno = \Max\Functions::euroRoundS($this->zaproseno); $maxZaproseno = \Max\Functions::euroRoundS(0.6 * $this->avtorskiHonorarji + 1.0 * $this->transportniStroski + 1.0 * $this->dnevPrvZad); // glede na procent upravičenih stroškov $this->expect($zaproseno <= $maxZaproseno, "Zaprošeno (" . $zaproseno . ") je lahko največ 60% avtorskih in tantiem in 70% odkupa avtorskih pravic in transportnih stroskov in dnevnic za 1. in zadnji dan (" . $maxZaproseno . ")", 1001304); parent::validate(); }
/** * preračun kazalnikov * * @param type $smer */ public function preracunaj($smer = false) { /** * init */ $this->stPonPrejVelikih = 0; $this->stPonPrejMalih = 0; $this->stPonPrejMalihKopr = 0; $this->stPonPrejSredKopr = 0; $this->stPonPrejVelikihKopr = 0; $this->stPremierVelikih = 0; $this->stPremierMalih = 0; $this->stPremierMalihKopr = 0; $this->stPremierSredKopr = 0; $this->stPremierVelikihKopr = 0; $this->vrPS1 = 0; $this->vrPS1Do = 0; $this->vrPS1Mat = 0; $this->vrPS1GostovSZ = 0; $this->stVsehPredstav = 0; $this->stIzvNekomerc = 0; $this->stIzvPrem = 0; $this->stIzvPremDoma = 0; $this->stIzvPremKopr = 0; $this->stIzvPonPrem = 0; $this->stIzvPonPremDoma = 0; $this->stIzvPonPremZamejo = 0; $this->stIzvPonPremKoprZamejo = 0; $this->stIzvPonPremGost = 0; $this->stIzvPonPremKoprGost = 0; $this->stIzvPonPremKopr = 0; $this->stIzvPonPremInt = 0; $this->stIzvPonPremKoprInt = 0; $this->stIzvPonPrej = 0; $this->stIzvPonPrejDoma = 0; $this->stIzvPonPrejKoprZamejo = 0; $this->stIzvPonPrejZamejo = 0; $this->stIzvPonPrejGost = 0; $this->stIzvPonPrejKoprGost = 0; $this->stIzvPonPrejKopr = 0; $this->stIzvPonPrejInt = 0; $this->stIzvPonPrejKoprInt = 0; $this->stIzvGostuj = 0; $this->stIzvOstalihNek = 0; $this->stIzvGostovanjSlo = 0; $this->stIzvGostovanjZam = 0; $this->stIzvGostovanjInt = 0; $this->stObiskNekom = 0; $this->stObiskNekomMat = 0; $this->stObiskNekomGostSlo = 0; $this->stObiskNekomGostZam = 0; $this->stObiskNekomGostInt = 0; $this->stObiskPrem = 0; $this->stObiskPremDoma = 0; $this->stObiskPremKopr = 0; $this->stObiskPonPrem = 0; $this->stObiskPonPremDoma = 0; $this->stObiskPonPremGost = 0; $this->stObiskPonPremZamejo = 0; $this->stObiskPonPremZamejoKopr = 0; $this->stObiskPonPremGostKopr = 0; $this->stObiskPonPrejZamejoKopr = 0; $this->stObiskPonPrejGostKopr = 0; $this->stObiskPonPremKopr = 0; $this->stObiskPonPremKoprInt = 0; $this->stObiskPonPrejKopr = 0; $this->stObiskPonPrejKoprInt = 0; $this->stObiskPonPremInt = 0; $this->stHonorarnihZun = 0; $this->stHonorarnihZunIgr = 0; $this->stHonorarnihZunIgrTujJZ = 0; $this->stHonorarnihZunSamoz = 0; $this->sredstvaAvt = 0; $this->sredstvaAvtSamoz = 0; $this->sredstvaInt = 0; $this->stKoprodukcij = 0; $this->stKoprodukcijInt = 0; $this->stKoprodukcijNVO = 0; $this->sredstvaZaprosenoPrem = 0; $this->sredstvaZaprosenoPonPrem = 0; $this->sredstvaZaprosenoPonPrej = 0; $this->sredstvaZaprosenoGostujo = 0; $this->sredstvaZaprosenoInt = 0; $this->sredstvaZaprosenoFest = 0; $this->sredstvaZaprosenoRazno = 0; $this->sredstvaZaprosenoIzjem = 0; $this->sredstvaDrugiJavniPrem = 0; $this->sredstvaDrugiJavniPonPrem = 0; $this->sredstvaDrugiJavniPonPrej = 0; $this->sredstvaDrugiJavniGostujo = 0; $this->sredstvaDrugiJavniInt = 0; $this->sredstvaDrugiJavniFest = 0; $this->sredstvaDrugiJavniRazno = 0; $this->sredstvaDrugiJavniIzjem = 0; $this->sredstvaDrugiViriPrem = 0; $this->sredstvaDrugiViriPonPrem = 0; $this->sredstvaDrugiViriPonPrej = 0; $this->sredstvaDrugiViriGostujo = 0; $this->sredstvaDrugiViriInt = 0; $this->sredstvaDrugiViriFest = 0; $this->sredstvaDrugiViriRazno = 0; $this->sredstvaDrugiViriIzjem = 0; $this->sredstvaVlozekGostiteljaPrem = 0; $this->sredstvaVlozekGostiteljaPonPrem = 0; $this->sredstvaVlozekGostiteljaPonPrej = 0; $this->sredstvaVlozekGostiteljaGostujo = 0; $this->sredstvaVlozekGostiteljaInt = 0; $this->sredstvaVlozekGostiteljaFest = 0; $this->sredstvaVlozekGostiteljaRazno = 0; $this->sredstvaVlozekGostiteljaIzjem = 0; $this->sredstvaLastnaPrem = 0; $this->sredstvaLastnaPonPrem = 0; $this->sredstvaLastnaPonPrej = 0; $this->sredstvaLastnaGostujo = 0; $this->sredstvaLastnaInt = 0; $this->sredstvaLastnaFest = 0; $this->sredstvaLastnaRazno = 0; $this->sredstvaLastnaIzjem = 0; /** * init za izračun zasedenosti igralcev * */ $stNastopovZaposIgralcev = 0; /** * init za izračun povprečne zasedenosti dvoran */ $obiskDomaUpriz = 0; $maxKapaciteta = 0; $this->stPremier = $this->getPremiere()->count(); $this->stPonPrem = $this->getPonovitvePremiere()->count(); $this->stPonPrej = $this->getPonovitvePrejsnjih()->count(); $this->stGostujo = $this->getGostujoci()->count(); $this->stInt = $this->getGostovanja()->count(); $this->stFest = $this->getProgramiFestival()->count(); $this->stRazno = $this->getProgramiRazno()->count(); $this->stIzjem = $this->getIzjemni()->count(); /** * premiere */ foreach ($this->getPremiere() as $numObject => $object) { if ($smer == Consts::DOWN) { $object->preracunaj(Consts::DOWN); } $this->vrPS1 += $object->getNasDelez(); $this->vrPS1Do += $object->getNasDelez(); $this->stVsehPredstav = $object->getPonoviDoma() + $object->getPonoviKopr(); $this->stIzvNekomerc += $object->getPonoviDoma(); $this->stIzvPrem += $object->getPonoviDoma(); $this->stIzvPremDoma += $object->getPonoviDoma(); $this->stIzvPremKopr += $object->getPonoviKopr(); $this->stObiskNekom += $object->getObiskDoma(); $this->stObiskNekomMat += $object->getObiskDoma(); $this->stObiskPrem += $object->getObiskDoma(); $this->stObiskPremDoma += $object->getObiskDoma(); $this->stObiskPremKopr += $object->getObiskKopr(); $this->stHonorarnihZun += $object->getStHonorarnihZun(); $this->stHonorarnihZunIgr += $object->getStHonorarnihZunIgr(); $this->stHonorarnihZunIgrTujJZ += $object->getStHonorarnihZunIgrTujJZ(); $this->stHonorarnihZunSamoz += $object->getStHonorarnihZunSamoz(); $this->sredstvaZaprosenoPrem += $object->getZaproseno(); $this->sredstvaDrugiJavniPrem += $object->getDrugiJavni(); $this->sredstvaDrugiViriPrem += $this->sestejDrugeVire($object); $this->sredstvaVlozekGostiteljaPrem += $object->getVlozekGostitelja(); $this->sredstvaLastnaPrem += $object->getLastnaSredstva(); $this->sredstvaAvt += $object->getAvtorskiHonorarji(); $this->sredstvaAvtSamoz += $object->getAvtorskiHonorarjiSamoz(); $this->prerStKopr($object); $obiskDomaUpriz += $object->getObiskDoma(); $this->expect($object->getUprizoritev(), "Uprizoritev je obvezen podatek", 1000790); if (!$object->getPriKoproducentu()) { $this->expect($object->getUprizoritev()->getMaticniOder(), "Matični oder je obvezen podatek", 1000791); if ($object->getUprizoritev()->getMaticniOder()) { $maxKapaciteta += $object->getUprizoritev()->getMaticniOder()->getKapaciteta() * $object->getPonoviDoma(); } } $this->pristejKStNastopovZaposIgr($object, $stNastopovZaposIgralcev); switch ($object->getTipProgramskeEnote()->getSifra()) { case "01": $this->stPremierVelikih += 1; // Velike predstave break; case "02": $this->stPremierMalih += 1; break; case "03": $this->stPremierMalihKopr += 1; break; case "04": $this->stPremierSredKopr += 1; break; case "05": $this->stPremierVelikihKopr += 1; break; default: $this->expect(FALSE, "Premiera ima napačen tip programske enote:" . $object->getTipProgramskeEnote()->getSifra(), 1000491); } } /** * ponovitve premier */ foreach ($this->getPonovitvePremiere() as $numObject => $object) { if ($smer == Consts::DOWN) { $object->preracunaj(Consts::DOWN); } $this->vrPS1 += $object->getNasDelez(); $this->vrPS1Mat += $object->getCelotnaVrednostMat(); $this->vrPS1GostovSZ += $object->getCelotnaVrednostGostovSZ(); $this->stIzvNekomerc += $object->getPonoviDoma() + $object->getPonoviZamejo() + $object->getPonoviGost(); //$$ ali prištevvamo tudi mednarodne? $this->stIzvPonPrem += $object->getPonoviDoma() + $object->getPonoviZamejo() + $object->getPonoviGost(); //$$ ali prištevvamo tudi mednarodne? $this->stIzvPonPremDoma += $object->getPonoviDoma(); $this->stIzvPonPremZamejo += $object->getPonoviZamejo(); $this->stIzvPonPremKoprZamejo += $object->getPonoviKoprZamejo(); $this->stIzvPonPremGost += $object->getPonoviGost(); $this->stIzvPonPremKoprGost += $object->getPonoviKoprGost(); $this->stIzvPonPremKopr += $object->getPonoviKopr(); $this->stIzvGostovanjSlo += $object->getPonoviGost(); $this->stIzvGostovanjZam += $object->getPonoviZamejo(); $this->stObiskNekom += $object->getObiskDoma() + $object->getObiskGost() + $object->getObiskZamejo(); $this->stObiskNekomMat += $object->getObiskDoma(); $this->stObiskNekomGostSlo += $object->getObiskGost(); $this->stObiskNekomGostZam += $object->getObiskZamejo(); $this->stObiskPonPrem += $object->getObiskDoma() + $object->getObiskGost() + $object->getObiskZamejo(); $this->stObiskPonPremDoma += $object->getObiskDoma(); $this->stObiskPonPremKopr += $object->getObiskKopr(); $this->stObiskPonPremGost += $object->getObiskGost(); $this->stObiskPonPremZamejo += $object->getObiskZamejo(); $this->stObiskPonPremGostKopr += $object->getObiskKoprGost(); $this->stObiskPonPremZamejoKopr += $object->getObiskKoprZamejo(); $this->sredstvaAvt += $object->getAvtorskiHonorarji(); $this->sredstvaAvtSamoz += $object->getAvtorskiHonorarjiSamoz(); $this->sredstvaZaprosenoPonPrem += $object->getZaproseno(); $this->sredstvaDrugiJavniPonPrem += $object->getDrugiJavni(); $this->sredstvaDrugiViriPonPrem += $this->sestejDrugeVire($object); $this->sredstvaVlozekGostiteljaPonPrem += $object->getVlozekGostitelja(); $this->sredstvaLastnaPonPrem += $object->getLastnaSredstva(); $this->prerStKopr($object); $obiskDomaUpriz += $object->getObiskDoma(); $this->expect($object->getUprizoritev(), "Uprizoritev je obvezen podatek", 1000792); $this->expect($object->getUprizoritev()->getMaticniOder(), "Matični oder je obvezen podatek", 1000793); if ($object->getUprizoritev()->getMaticniOder()) { $maxKapaciteta += $object->getUprizoritev()->getMaticniOder()->getKapaciteta() * $object->getPonoviDoma(); } $this->pristejKStNastopovZaposIgr($object, $stNastopovZaposIgralcev); } /** * ponovitve prejšnjih sezon */ foreach ($this->getPonovitvePrejsnjih() as $numObject => $object) { if ($smer == Consts::DOWN) { $object->preracunaj(Consts::DOWN); } $this->vrPS1 += $object->getNasDelez(); //$$ tu še preveriti ali celotna vrednost ali le delež matičnega koproducenta $this->vrPS1Mat += $object->getCelotnaVrednostMat(); $this->vrPS1GostovSZ += $object->getCelotnaVrednostGostovSZ(); $this->stIzvNekomerc += $object->getPonoviDoma() + $object->getPonoviZamejo() + $object->getPonoviGost(); //$$ ali prištevvamo tudi mednarodne? $this->stIzvPonPrej += $object->getPonoviDoma() + $object->getPonoviZamejo() + $object->getPonoviGost(); //$$ ali prištevvamo tudi mednarodne? $this->stIzvPonPrejDoma += $object->getPonoviDoma(); $this->stIzvPonPrejZamejo += $object->getPonoviZamejo(); $this->stIzvPonPrejKoprZamejo += $object->getPonoviKoprZamejo(); $this->stIzvPonPrejGost += $object->getPonoviGost(); $this->stIzvPonPrejKoprGost += $object->getPonoviKoprGost(); $this->stIzvPonPrejKopr += $object->getPonoviKopr(); $this->stIzvGostovanjSlo += $object->getPonoviGost(); $this->stIzvGostovanjZam += $object->getPonoviZamejo(); $this->stObiskNekom += $object->getObiskDoma() + $object->getObiskGost() + $object->getObiskZamejo(); $this->stObiskNekomMat += $object->getObiskDoma(); $this->stObiskNekomGostSlo += $object->getObiskGost(); $this->stObiskNekomGostZam += $object->getObiskZamejo(); $this->stObiskPonPrejKopr += $object->getObiskKopr(); $this->stObiskPonPrejGostKopr += $object->getObiskKoprGost(); $this->stObiskPonPrejZamejoKopr += $object->getObiskKoprZamejo(); $this->stHonorarnihZun += $object->getStHonorarnihZun(); $this->stHonorarnihZunIgr += $object->getStHonorarnihZunIgr(); $this->stHonorarnihZunIgrTujJZ += $object->getStHonorarnihZunIgrTujJZ(); $this->stHonorarnihZunSamoz += $object->getStHonorarnihZunSamoz(); $this->sredstvaAvt += $object->getAvtorskiHonorarji(); $this->sredstvaAvtSamoz += $object->getAvtorskiHonorarjiSamoz(); switch ($object->getTipProgramskeEnote()->getSifra()) { case "01": $this->stPonPrejVelikih += 1; // Velike predstave break; case "02": $this->stPonPrejMalih += 1; break; case "03": $this->stPonPrejMalihKopr += 1; break; case "04": $this->stPonPrejSredKopr += 1; break; case "05": $this->stPonPrejVelikihKopr += 1; break; default: $this->expect(FALSE, "Ponovitev prejšnjih ima napačen tip programske enote:" . $object->getTipProgramskeEnote()->getSifra(), 1000490); } $this->sredstvaZaprosenoPonPrej += $object->getZaproseno(); $this->sredstvaDrugiJavniPonPrej += $object->getDrugiJavni(); $this->sredstvaDrugiViriPonPrej += $this->sestejDrugeVire($object); $this->sredstvaVlozekGostiteljaPonPrej += $object->getVlozekGostitelja(); $this->sredstvaLastnaPonPrej += $object->getLastnaSredstva(); $this->prerStKopr($object); $obiskDomaUpriz += $object->getObiskDoma(); $this->expect($object->getUprizoritev(), "Uprizoritev je obvezen podatek", 1000794); $this->expect($object->getUprizoritev()->getMaticniOder(), "Matični oder je obvezen podatek", 1000795); if ($object->getUprizoritev()->getMaticniOder()) { $maxKapaciteta += $object->getUprizoritev()->getMaticniOder()->getKapaciteta() * $object->getPonoviDoma(); } $this->pristejKStNastopovZaposIgr($object, $stNastopovZaposIgralcev); } /** * gostujoče predstave */ foreach ($this->getGostujoci() as $numObject => $object) { if ($smer == Consts::DOWN) { $object->preracunaj(Consts::DOWN); } $this->stIzvNekomerc += $object->getPonoviDoma(); $this->stIzvGostuj += $object->getPonoviDoma(); $this->stObiskNekom += $object->getObiskDoma(); $this->stObiskNekomMat += $object->getObiskDoma(); $this->sredstvaZaprosenoGostujo += $object->getZaproseno(); $this->sredstvaDrugiJavniGostujo += $object->getDrugiJavni(); $this->sredstvaDrugiViriGostujo += $this->sestejDrugeVire($object); $this->sredstvaVlozekGostiteljaGostujo += $object->getVlozekGostitelja(); $this->sredstvaLastnaGostujo += $object->getLastnaSredstva(); $this->prerStKopr($object); $obiskDomaUpriz += $object->getObiskDoma(); $this->expect($object->getUprizoritev(), "Uprizoritev je obvezen podatek", 1000796); $this->expect($object->getUprizoritev()->getMaticniOder(), "Matični oder je obvezen podatek", 1000797); if ($object->getUprizoritev()->getMaticniOder()) { $maxKapaciteta += $object->getUprizoritev()->getMaticniOder()->getKapaciteta() * $object->getPonoviDoma(); } $this->pristejKStNastopovZaposIgr($object, $stNastopovZaposIgralcev); } /** * mednarodna gostovanja */ foreach ($this->getGostovanja() as $numObject => $object) { if ($smer == Consts::DOWN) { $object->preracunaj(Consts::DOWN); } $this->stIzvNekomerc += $object->getPonoviInt(); $this->stIzvGostovanjInt += $object->getPonoviInt(); $this->stObiskNekom += $object->getObiskInt(); $this->stObiskNekomGostInt += $object->getObiskInt(); $this->sredstvaAvt += $object->getAvtorskiHonorarji(); $this->sredstvaAvtSamoz += $object->getAvtorskiHonorarjiSamoz(); // $$ glede na to, ali je mednarodno gostovanje za premiero, ki bo letos, ali iz prejšnjih sezon $idUpr = $object->getUprizoritev(); $obstajaPremiera = false; //init if (!empty($idUpr)) { $obstajaPremiera = $this->getPremiere()->exists(function ($key, $premiera) use(&$idUpr) { return $premiera->getUprizoritev() == $idUpr; //vrne true, če obstaja premiera z isto uprizoritvijo }); } if ($obstajaPremiera) { $this->stIzvPonPrem += $object->getPonoviInt(); $this->stIzvPonPremInt += $object->getPonoviInt(); $this->stIzvPonPremKoprInt += $object->getPonoviKoprInt(); $this->stObiskPonPrem += $object->getObiskInt(); $this->stObiskPonPremInt += $object->getObiskInt(); $this->stObiskPonPremKoprInt += $object->getObiskKoprInt(); } else { // če uprizoritev ni iz (letošnje) premiere je najverjetneje iz ponovitve premiere prejšnjih sezon $this->stIzvPonPrej += $object->getPonoviInt(); $this->stIzvPonPrejInt += $object->getPonoviInt(); $this->stIzvPonPrejKoprInt += $object->getPonoviKoprInt(); $this->stObiskPonPrejKoprInt += $object->getObiskKoprInt(); } $this->sredstvaZaprosenoInt += $object->getZaproseno(); $this->sredstvaDrugiJavniInt += $object->getDrugiJavni(); $this->sredstvaDrugiViriInt += $this->sestejDrugeVire($object); $this->sredstvaVlozekGostiteljaInt += $object->getVlozekGostitelja(); $this->sredstvaLastnaInt += $object->getLastnaSredstva(); $this->prerStKopr($object); $this->pristejKStNastopovZaposIgr($object, $stNastopovZaposIgralcev); } /** * festivali */ foreach ($this->getProgramiFestival() as $numObject => $object) { if ($smer == Consts::DOWN) { $object->preracunaj(Consts::DOWN); } /** * 1 festival ena prireditev + ostale prireditve festivala */ $this->stIzvNekomerc += 1 + $object->getStPredstav() + $object->getStPredstavitev() + $object->getStDelavnic() + $object->getStOkroglihMiz() + $object->getStDrugiDogodki() + $object->getStProdukcij(); /** * 1 festival ena prireditev + ostale prireditve festivala $$ tu zaenkrat ne upošteva deleža koproducentov */ $this->stIzvOstalihNek += 1 + $object->getStPredstav() + $object->getStPredstavitev() + $object->getStDelavnic() + $object->getStOkroglihMiz() + $object->getStDrugiDogodki() + $object->getStProdukcij(); $this->stObiskNekom += $object->getObiskDoma(); $this->stObiskNekomMat += $object->getObiskDoma(); $this->stHonorarnihZun += $object->getStHonorarnihZun(); $this->sredstvaZaprosenoFest += $object->getZaproseno(); $this->sredstvaDrugiJavniFest += $object->getDrugiJavni(); $this->sredstvaDrugiViriFest += $this->sestejDrugeVire($object); $this->sredstvaVlozekGostiteljaFest += $object->getVlozekGostitelja(); $this->sredstvaLastnaFest += $object->getLastnaSredstva(); $this->prerStKopr($object); } /** * razno */ foreach ($this->getProgramiRazno() as $numObject => $object) { if ($smer == Consts::DOWN) { $object->preracunaj(Consts::DOWN); } $this->stIzvNekomerc += $object->getStDogodkov(); $this->stIzvOstalihNek += $object->getStDogodkov(); $this->stObiskNekom += $object->getObiskDoma(); $this->stObiskNekomMat += $object->getObiskDoma(); $this->stHonorarnihZun += $object->getStHonorarnihZun(); $this->sredstvaZaprosenoRazno += $object->getZaproseno(); $this->sredstvaDrugiJavniRazno += $object->getDrugiJavni(); $this->sredstvaDrugiViriRazno += $this->sestejDrugeVire($object); $this->sredstvaVlozekGostiteljaRazno += $object->getVlozekGostitelja(); $this->sredstvaLastnaRazno += $object->getLastnaSredstva(); $this->prerStKopr($object); } /** * izjemni dogodki */ foreach ($this->getIzjemni() as $numObject => $object) { if ($smer == Consts::DOWN) { $object->preracunaj(Consts::DOWN); } $this->stIzvNekomerc += $object->getPonoviDoma() + $object->getPonoviZamejo() + $object->getPonoviGost() + $object->getPonoviInt(); $this->stIzvOstalihNek += $object->getPonoviDoma() + $object->getPonoviZamejo() + $object->getPonoviGost() + $object->getPonoviInt(); $this->stObiskNekom += $object->getObiskDoma() + $object->getObiskGost() + $object->getObiskZamejo() + $object->getObiskInt(); $this->stObiskNekomMat += $object->getObiskDoma(); $this->stObiskNekomGostSlo += $object->getObiskGost(); $this->stObiskNekomGostZam += $object->getObiskZamejo(); $this->stObiskNekomGostInt += $object->getObiskInt(); $this->sredstvaAvt += $object->getAvtorskiHonorarji(); $this->sredstvaAvtSamoz += $object->getAvtorskiHonorarjiSamoz(); $this->sredstvaZaprosenoIzjem += $object->getZaproseno(); $this->sredstvaDrugiJavniIzjem += $object->getDrugiJavni(); $this->sredstvaDrugiViriIzjem += $this->sestejDrugeVire($object); $this->sredstvaVlozekGostiteljaIzjem += $object->getVlozekGostitelja(); $this->sredstvaLastnaIzjem += $object->getLastnaSredstva(); $this->prerStKopr($object); } if ($this->stIzvNekomerc > 0) { $this->avgObiskPrired = Functions::numberRound($this->stObiskNekom / $this->stIzvNekomerc); } else { $this->avgObiskPrired = 0; } $this->avgZasedDvoran = $maxKapaciteta > 0 ? $obiskDomaUpriz / $maxKapaciteta * 100 : 0; //$$ to je v primeru, če kapacitete prostorov niso vnešene $this->avgStNastopovIgr = $this->stZaposIgralcev > 0 ? $stNastopovZaposIgralcev / $this->stZaposIgralcev : 0; }
public function validate($mode = 'update') { $this->validateEuroGE0($this->celotnaVrednost, "Celotna vrednost", 1000622); $this->validateEuroGE0($this->nasDelez, "Naš delež", 1000623); $this->validateEuroGE0($this->celotnaVrednostMat, "Celotna vrednost na matičnem odru", 1000624); $this->validateEuroGE0($this->celotnaVrednostGostovSZ, "Celotna vrednost gostovanj v Slo in zamejstvu", 1000625); $this->validateEuroGE0($this->zaproseno, "Zaprošeno", 1000626); // $this->validateEuroGE0($this->lastnaSredstva, "Lastna sredstva", 1000627); $this->validateEuroGE0($this->avtorskiHonorarji, "Avtorski honorarji", 1000628); $this->validateEuroGE0($this->avtorskiHonorarjiSamoz, "Avtorski honorarji samozaposlenih", 1000629); $this->validateEuroGE0($this->tantieme, "Tantieme", 1000680); $this->validateEuroGE0($this->avtorskePravice, "Avtorske pravice", 1000681); $this->validateEuroGE0($this->vlozekGostitelja, "Vložek gostitelja", 1000682); $this->validateEuroGE0($this->drugiJavni, "Drugi javni", 1000683); $this->validateIntGE0($this->stZaposlenih, "", 1000684); $this->validateIntGE0($this->stZaposUmet, "", 1000685); $this->validateIntGE0($this->stZaposDrug, "", 1000686); $this->validateIntGE0($this->stHonorarnihZun, "", 1000687); $this->validateIntGE0($this->stHonorarnihZunIgr, "", 1000688); $this->validateIntGE0($this->stHonorarnihZunIgrTujJZ, "", 1000689); $this->validateIntGE0($this->stHonorarnihZunSamoz, "", 1000690); $this->validateIntGE0($this->obiskDoma, "", 1000691); $this->validateIntGE0($this->obiskKopr, "", 1001201); $this->validateIntGE0($this->obiskGost, "", 1000692); $this->validateIntGE0($this->obiskZamejo, "", 1000693); $this->validateIntGE0($this->obiskInt, "", 1000694); $this->validateIntGE0($this->ponoviDoma, "", 1000695); $this->validateNumberGE0($this->ponoviZamejo, "", 1000696); $this->validateNumberGE0($this->ponoviKoprZamejo, "", 1001205); $this->validateNumberGE0($this->ponoviGost, "", 1000697); $this->validateNumberGE0($this->ponoviKoprGost, "", 1001206); $this->validateIntGE0($this->ponoviInt, "", 1000698); $this->validateIntGE0($this->ponoviKopr, "", 1001202); $this->validateIntGE0($this->sort, "", 1000699); $this->validateEuroGE0($this->materialni, "Materialni", 1001200); /** * pred primerjanjem damo števila s plavajočo vejico v string */ $nd = \Max\Functions::euroRoundS($this->getNasDelez()); $cv = \Max\Functions::euroRoundS($this->getCelotnaVrednost()); $cvSZ = \Max\Functions::euroRoundS($this->celotnaVrednostGostovSZ); $this->expect($nd <= $cv, "Delež matičnega JZ (" . $nd . ") ne sme biti večji od celotne vrednosti (" . $cv . ")", 1000621); $this->expect($cvSZ <= $cv, "Celotna vrednost gostovanj v Slo in zam. (" . $cvSZ . ") ne sme biti večja od celotne vrednosti (" . $cv . ")", 1000622); $ah = \Max\Functions::euroRoundS($this->getAvtorskiHonorarji()); $ahs = \Max\Functions::euroRoundS($this->getAvtorskiHonorarjiSamoz()); $this->expect($ahs <= $ah, "Avtorski honorarji samozaposlenih (" . $ahs . ") ne smejo biti večji od avtorskih honorarjev (" . $ah . ")", 1001204); /** * za tiste ep, ki imajo uprizoritev je lahko obisk doma lahko največ število ponovitev doma * kapaciteta matičnega odra */ if ($this->uprizoritev) { $this->expect($this->obiskDoma <= $this->ponoviDoma * $this->uprizoritev->getMaticniOder()->getKapaciteta(), "Obisk doma ne sme biti večji kot št. ponovitev doma * kapaciteta matičnega odra (" . $this->uprizoritev->getMaticniOder()->getKapaciteta() . ")", 1001203); } }
public function validate($mode = 'update') { $this->validateIntGE0($this->stPE, "Št. PE", 1000555); $this->expect(!$this->getTipProgramskeEnote(), "Tip programske enote obstaja, a ne sme obstajati za program razno", 1000551); $this->expect(!$this->getUprizoritev(), "Uprizoritev obstaja, a ne sme obstajati za program razno", 1000552); $this->expect($this->naziv, "Nima naziva. Naziv je obvezen podatek", 1000553); $zaproseno = \Max\Functions::euroRoundS($this->zaproseno); $maxZaproseno = \Max\Functions::euroRoundS(0.7 * $this->nasDelez); // glede na procent upravičenih stroškov $this->expect($zaproseno <= $maxZaproseno, "Zaprošeno (" . $zaproseno . ") je lahko največ 70% deleža mat. JZ(" . $maxZaproseno . ")", 1000554); parent::validate(); }
/** * Razmnoži dogodek * * novi dogodki so v obdobju začetek obdobja - konec obdobja (oz. število ponovitev), * upoštevajoč flage za praznik, soboto in nedelj * in tedenske termine, če ni števila ponovitev * * @param uuid $dogodekId dogodek, ki ga kopiramo * @param string $zacetekObdobja začetek obdobja, kjer naj bodo kopirani dogodki v ISO obliki * @param string $konecObdobja začetek obdobja, kjer naj bodo kopirani dogodki * @param boolean $upostevajPraznike če true, potem novi dogodki ne bodo na praznik * @param boolean $upostevajSobote če true, potem novi dogodki ne bodo v soboto * @param boolean $upostevajNedelje če true, potem novi dogodki ne bodo v nedeljo * [ h => ura, m=> minuta] * @param integer $steviloPonovitev če polje obstaja, se kreira toliko novih dogodkov * * spodnji parametri se upoštevajo le, če ni števila ponovitev: * @param array $dopoldanOd čas začetka dopoldanskega termina v obliki * [ h => ura, m=> minuta] * @param array $popoldanOd čas začetka popoldanskega termina v obliki * [ h => ura, m=> minuta] * @param array $zvecerOd čas začetka večernega termina v obliki * [ h => ura, m=> minuta] * @param array $tedenskiTermini če polje obstaja, se dogodki kreirajo v sklopu teh omejitev * oblika: [ [dan_v_tednu], [termin,...]] pri čemer je: * dan_v_tednu 1-ponedeljek .. 7 - nedelja * termin DOP-dopoldan, POP-popoldan, ZVE-zvečer * * @return array id-ji kreiranih dogodkov * @throws \Max\Exception\UnauthException */ public function razmnozi($dogodekId, $zacetekObdobja = null, $konecObdobja = null, $upostevajPraznike = false, $upostevajSobote = false, $upostevajNedelje = false, $dopoldanOd = null, $popoldanOd = null, $zvecerOd = null, $steviloPonovitev = null, $tedenskiTermini = null) { /* * preverjanje avtorizacije */ $this->expectPermission("Dogodek-write"); $this->expectPermission("TerminStoritve-write"); $this->expectPermission("Option-read"); $this->expectPermission("OptionValue-read"); $this->expectPermission("Praznik-read"); $em = $this->serviceLocator->get("\\Doctrine\\ORM\\EntityManager"); /* * preverjanje parametrov */ $dogodek = $em->getRepository("Koledar\\Entity\\Dogodek")->findOneById($dogodekId); if (!$dogodek) { throw new \Max\Exception\UnauthException($this->translate('Ni dogodka'), 1001249); } if (!empty($zacetekObdobja)) { $this->expectIsoDate($zacetekObdobja, $this->translate('Začetek obdobja (' . $zacetekObdobja . ') ni datum v ISO8601 obliki'), 1001250); } else { /* * takoj naslednji dan zjutraj */ $zacetekObdobja = clone $dogodek->getKonec(); $zacetekObdobja->modify("+1 day"); $zacetekObdobja->setTime(0, 0); } $zacetekObdobjaD = Functions::stringToDateTime($zacetekObdobja); if (!empty($steviloPonovitev)) { $this->expect(is_integer($steviloPonovitev), 'Število ponovitev ' . $steviloPonovitev . 'mora biti integer', 1001251); $this->expect($steviloPonovitev > 0, 'Število ponovitev (' . $steviloPonovitev . ') mora biti pozitivno število', 1001254); $strategijaPoStevilu = TRUE; } else { $strategijaPoStevilu = false; // strategija po tedenskih terminih } if (!empty($konecObdobja)) { $this->expectIsoDate($konecObdobja, $this->translate('Konec obdobja(' . $konecObdobja . ') ni datum v ISO8601 obliki'), 1001252); $konecObdobjaD = Functions::stringToDateTime($konecObdobja); $this->expect($zacetekObdobjaD < $konecObdobjaD, 'Konec obdobja(' . $konecObdobja . 'mora biti po začetku', 1001253); } else { $konecObdobjaD = null; } $this->expect(!empty($konecObdobja) || $strategijaPoStevilu, "Prisoten mora biti parameter ali konec obdobja ali število ponovitev", 1001255); if (!$strategijaPoStevilu) { /* * strategija kopiranja po tedenskih terminih */ $this->expect(!empty($zacetekObdobja) && !empty($konecObdobja) && !empty($tedenskiTermini), 'V kolikor ni parametra steviloPonovitev, so parametri ' . 'zacetekObdobja,konecObdobja in tedenskiTermini obvezni', 1001263); array_walk_recursive($tedenskiTermini, function ($val, $key) { $this->expect(in_array($val, [self::DOPOLDAN, self::POPOLDAN, self::ZVECER]), "Dovoljene vrednosti za tedenskiTermini so le" . self::DOPOLDAN . "," . self::POPOLDAN . "," . self::ZVECER, 1001264); }); array_walk($tedenskiTermini, function ($val, $key) { $this->expect(is_integer($key) && $key >= 0 && $key <= 7, "Dovoljeno ključi za tedenskiTermini so med 1 in 7", 1001266); $this->expect(is_array($val), "Vrednosti morajo biti v array-u", 1001267); }); /* * napolni $tedenskiTerminiBA (boolean array) iz parametra $tedenskiTermini , * tako da imamo v polju termine posortirane naraščujoče */ for ($dow = 1; $dow <= 7; $dow++) { // dan v tednu for ($dpz = 1; $dpz <= 3; $dpz++) { // dopoldan, popoldan , zvečer $tedenskiTerminiBA[$dow][$dpz] = false; //init } } foreach ($tedenskiTermini as $dow => $dpzA) { foreach ($dpzA as $dpz) { switch ($dpz) { case self::DOPOLDAN: $tedenskiTerminiBA[$dow][1] = true; break; case self::POPOLDAN: $tedenskiTerminiBA[$dow][2] = true; break; case self::ZVECER: $tedenskiTerminiBA[$dow][3] = true; break; default: $this->expect(false, "Dovoljene vrednosti za tedenskiTermini so le" . self::DOPOLDAN . ", " . self::POPOLDAN . ", " . self::ZVECER, 1001265); break; } } } $dopoldanOd = $this->preveriOdParameter($dopoldanOd, self::DOPOLDAN); $popoldanOd = $this->preveriOdParameter($popoldanOd, self::POPOLDAN); $zvecerOd = $this->preveriOdParameter($zvecerOd, self::ZVECER); /* * dopoldanOd < popoldanOd < zvečerOd */ $this->expect($dopoldanOd['h'] * 60 + $dopoldanOd['m'] < $popoldanOd['h'] * 60 + $popoldanOd['m'] && $popoldanOd['h'] * 60 + $popoldanOd['m'] < $zvecerOd['h'] * 60 + $zvecerOd['m'], "Veljati mora dopoldanOd < popoldanOd < zvecerOd", 1001268); } /* * izvedba kopiranj */ $stNovih = 0; $noviIds = []; if ($strategijaPoStevilu) { $zacetekNaslednjega = clone $zacetekObdobjaD; $zacetekNaslednjega->modify('-1 day'); $zacetekNaslednjega->setTime(intval($dogodek->getZacetek()->format('G')), intval($dogodek->getZacetek()->format('i'))); /* * glede na št. ponovitev */ $konec = FALSE; $i = 1; while ($i <= $steviloPonovitev && !$konec) { /* * določi naslednji datum dogodka */ do { $zacetekNaslednjega->modify("+1 day"); $ustrezenCas = TRUE; //init $this->preveriZacetekNaslednjega($zacetekNaslednjega, $konecObdobjaD, $upostevajSobote, $upostevajNedelje, $upostevajPraznike, $konec, $ustrezenCas); } while (!$ustrezenCas && !$konec); if (!$konec) { $this->kopirajEnega($dogodek, $zacetekNaslednjega, $noviIds, $stNovih); } $i++; } } else { /* * kopiranje po tedenskem vzorcu */ $zacetekNaslednjega = clone $zacetekObdobjaD; $zacetekNaslednjega->modify('-1 minute'); $konec = FALSE; while (!$konec) { /* * določi naslednji datum dogodka */ do { $najdenNoviZacetekKorak2 = false; $konec = false; while (!$konec && !$najdenNoviZacetekKorak2) { /* * najdi naslednji čas glede na dopoldanske, popoldanske in večerne termine */ $danNasl = intval($zacetekNaslednjega->format('N')); // dan $uraNasl = intval($zacetekNaslednjega->format('G')); // ura $minNasl = intval($zacetekNaslednjega->format('i')); // min /* * najkasneje do jutrišnjega dopoldanskega termina * -> $zacetekNaslednjega, $dow, $dpz */ $j = 1; $najdenNoviZacetekKorak1 = FALSE; while ($j <= 4 && !$najdenNoviZacetekKorak1) { $jmod = fmod($j - 1, 3) + 1; $hj = $this->hmDopPopZve($jmod, $dopoldanOd, $popoldanOd, $zvecerOd)['h']; $mj = $this->hmDopPopZve($jmod, $dopoldanOd, $popoldanOd, $zvecerOd)['m']; if ($j == 4 || $hj * 60 + $mj > $uraNasl * 60 + $minNasl) { $dpz = $jmod; $dow = $danNasl; if ($j == 4) { // naslednji dan dopoldan $dow++; $zacetekNaslednjega->modify('+1 day'); } $dow = fmod($dow - 1, 7) + 1; $zacetekNaslednjega->setTime($hj, $mj); $najdenNoviZacetekKorak1 = true; } $j++; } $this->expect($najdenNoviZacetekKorak1, "Novi začetek v koraku 1 ni najden " . $zacetekNaslednjega->format('d.m.Y H:i O'), 1001261); if (!is_null($konecObdobjaD) && $zacetekNaslednjega > $konecObdobjaD) { /* * $$ zaenkrat še vedno dovoli, da je konec dogodka po koncu obdobja */ $konec = true; } if ($tedenskiTerminiBA[$dow][$dpz]) { $najdenNoviZacetekKorak2 = true; } } $ustrezenCas = TRUE; //init if (!$konec) { $this->preveriZacetekNaslednjega($zacetekNaslednjega, $konecObdobjaD, $upostevajSobote, $upostevajNedelje, $upostevajPraznike, $konec, $ustrezenCas); } } while (!$ustrezenCas && !$konec); if (!$konec) { $this->kopirajEnega($dogodek, $zacetekNaslednjega, $noviIds, $stNovih); } } } /* * $$ ali kontrole, da se novi dogodki ne prekrivajo med sabo? */ $em->flush(); return $noviIds; }
public function preracunaj($smer = false) { if ($this->placiloNaVajo) { $this->vrednostDoPremiere = $this->vrednostVaje * $this->planiranoSteviloVaj; } else { $this->vrednostDoPremiere = $this->vrednostVaj; } $this->vrednostDoPremiere = \Max\Functions::euroRound($this->vrednostDoPremiere); //Zaokrožimo na 2 decimalki predno shranimo }