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->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(); }