Esempio n. 1
0
 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);
 }
Esempio n. 2
0
 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();
 }