예제 #1
0
 /**
  * pridobitev podatkov o uprizoritvi, ki se uporabljajo v programu dela
  * 
  * Podatke, ki jih pridobi ta procedura lahko uporabnik po želji prenese v enoto programa - 
  * npr. v program premiera, program ponovitve premiere ipd.
  * 
  * @param entity  $uprizoritev
  * @param string $zacetek       začetek programa dela v ISO8601 obliki, npr. "1970-01-01T01:00:00+0100"
  * @param string $konec         konec programa dela v ISO8601 obliki, npr. "2999-01-01T01:00:00+0100"
  * 
  * @returns data                strukturirani podatki uprizoritve 
  */
 public function podatkiUprizoritve($uprizoritev, $zacetek = \Max\Consts::MINISODATE, $konec = \Max\Consts::MAXISODATE)
 {
     $data = $this->initData();
     $tr = $this->getServiceLocator()->get('translator');
     $data['naziv'] = $uprizoritev->getNaslov();
     /**
      * seštejem stroške iz Stroškov uprizoritve
      */
     $data['Do']['materialni'] = $data['Na']['materialni'] = 0;
     //init
     foreach ($uprizoritev->getStroski() as $numObject => $strosekU) {
         switch ($strosekU->getTipstroska()) {
             case 'materialni':
                 $data['Do']['materialni'] += $strosekU->getVrednostDo();
                 $data['Na']['materialni'] += $strosekU->getVrednostNa();
                 break;
             default:
                 $this->expect(false, "Tip stroška uprizoritve je lahko le materialni, je pa:" . $strosekU->getTipstroska(), 1000951);
         }
     }
     /**
      * seštejem stroške iz pogodb 
      */
     foreach ($uprizoritev->getFunkcije() as $numFun => $funkcija) {
         $tipfunkcije = $funkcija->getTipFunkcije();
         if ($tipfunkcije) {
             $podrocje = $tipfunkcije->getPodrocje();
         }
         foreach ($funkcija->getAlternacije() as $numAlt => $alternacija) {
             /**
              * upoštevamo le tiste alternacije, ki se vsaj delno prekrivajo z intervalom začetka in konca programa dela 
              * 
              * $$ tu bi bilo bolje, da bi primerjali datume v datetime obliki zaradi morebitnih različnih con
              */
             $az = is_null($alternacija->getZacetek()) ? null : $alternacija->getZacetek()->format('c');
             $ak = is_null($alternacija->getKonec()) ? null : $alternacija->getKonec()->format('c');
             if ((!is_null($az) ? $az <= $konec : true) && (!is_null($ak) ? $ak >= $zacetek : true)) {
                 if ($alternacija->getZaposlen()) {
                     if (in_array($podrocje, ["igralec", "umetnik"])) {
                         $data['stZaposUmet'] += 1;
                     } else {
                         $data['stZaposDrug'] += 1;
                     }
                 }
                 if ($alternacija->getPomembna()) {
                     $oseba = $alternacija->getOseba();
                     $this->expect($oseba, "Ni osebe pri alternaciji " . $alternacija->getSifra(), 1000952);
                     array_push($data['Funkcije'], ["funkcija" => $funkcija->getNaziv(), "ime" => $oseba->getIme(), "priimek" => $oseba->getPriimek(), "sort" => $alternacija->getSort()]);
                 }
                 if ($alternacija->getImaPogodbo()) {
                     $pogodba = $alternacija->getPogodba();
                     if ($pogodba) {
                         if ($pogodba->getJeAvtorskePravice()) {
                             /**
                              * avtorske pravice
                              */
                             $data['Do']['avtorskePravice'] += $pogodba->getVrednostDoPremiere();
                             $data['Na']['avtorskePravice'] += $pogodba->getVrednostPredstave();
                             // to so tantieme
                         } else {
                             /**
                              * avtorski honorarji
                              * $$ tu obstaja možnost, da bo honorarje 2x štel, če bo ista pogodba na več alternacijah
                              */
                             if ($pogodba->getVrednostDoPremiere() > 0.008999999999999999) {
                                 //vsaj 1 cent, a da preprečimo floating point težave
                                 $data['Do']['avtorskiHonorarji'] += $pogodba->getVrednostDoPremiere();
                             }
                             if ($pogodba->getVrednostPredstave() > 0.008999999999999999) {
                                 //vsaj 1 cent, a da preprečimo floating point težave
                                 $data['Na']['avtorskiHonorarji'] += $pogodba->getVrednostPredstave();
                             }
                             if ($pogodba->getSamozaposlen()) {
                                 if ($pogodba->getVrednostDoPremiere() > 0.008999999999999999) {
                                     //vsaj 1 cent, a da preprečimo floating point težave
                                     $data['Do']['avtorskiHonorarjiSamoz'] += $pogodba->getVrednostDoPremiere();
                                 }
                                 if ($pogodba->getVrednostPredstave() > 0.008999999999999999) {
                                     //vsaj 1 cent, a da preprečimo floating point težave
                                     $data['Na']['avtorskiHonorarjiSamoz'] += $pogodba->getVrednostPredstave();
                                 }
                             }
                             /**
                              * štejemo le zunanje sodelavce
                              */
                             if (!$alternacija->getZaposlen()) {
                                 if ($pogodba->getVrednostDoPremiere() > 0.008999999999999999) {
                                     //vsaj 1 cent, a da preprečimo floating point težave
                                     $data['Do']['stHonorarnihZun'] += 1;
                                 }
                                 if ($pogodba->getVrednostPredstave() > 0.008999999999999999) {
                                     //vsaj 1 cent, a da preprečimo floating point težave
                                     $data['Na']['stHonorarnihZun'] += 1;
                                 }
                                 /**
                                  * samozaposlenih
                                  */
                                 if ($pogodba->getSamozaposlen()) {
                                     if ($pogodba->getVrednostDoPremiere() > 0.008999999999999999) {
                                         //vsaj 1 cent, a da preprečimo floating point težave
                                         $data['Do']['stHonorarnihZunSamoz'] += 1;
                                     }
                                     if ($pogodba->getVrednostPredstave() > 0.008999999999999999) {
                                         //vsaj 1 cent, a da preprečimo floating point težave
                                         $data['Na']['stHonorarnihZunSamoz'] += 1;
                                     }
                                 }
                                 /**
                                  * igralcev
                                  */
                                 if ($pogodba->getIgralec()) {
                                     if ($pogodba->getVrednostDoPremiere() > 0.008999999999999999) {
                                         //vsaj 1 cent, a da preprečimo floating point težave
                                         $data['Do']['stHonorarnihZunIgr'] += 1;
                                     }
                                     if ($pogodba->getVrednostPredstave() > 0.008999999999999999) {
                                         //vsaj 1 cent, a da preprečimo floating point težave
                                         $data['Na']['stHonorarnihZunIgr'] += 1;
                                     }
                                     if ($pogodba->getZaposlenVDrJz()) {
                                         if ($pogodba->getVrednostDoPremiere() > 0.008999999999999999) {
                                             //vsaj 1 cent, a da preprečimo floating point težave
                                             $data['Do']['stHonorarnihZunIgrTujJZ'] += 1;
                                         }
                                         if ($pogodba->getVrednostPredstave() > 0.008999999999999999) {
                                             //vsaj 1 cent, a da preprečimo floating point težave
                                             $data['Na']['stHonorarnihZunIgrTujJZ'] += 1;
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     $data['avtor'] = $uprizoritev->getAvtor();
     $data['Do']['nasDelez'] = $data['Do']['avtorskiHonorarji'] + $data['Do']['avtorskePravice'] + $data['Do']['materialni'];
     $data['datumZacStudija'] = $uprizoritev->getDatumZacStudija() ? date(\DateTime::ISO8601, strtotime($uprizoritev->getDatumZacStudija()->format('c'))) : null;
     // datum v ISO8601 obliki
     $data['datumPremiere'] = $uprizoritev->getDatumPremiere() ? date(\DateTime::ISO8601, strtotime($uprizoritev->getDatumPremiere()->format('c'))) : null;
     // datum v ISO8601 obliki
     //$$ še naziv , izpostavljene funkcije ...
     //        upr.naslov naziv Naslov upr.
     //
     //        funkcija: (naziv fje, oseba)  funkcija.naziv, alternacija.oseba.  ime, priimek
     //        alternacija.pomembna:
     //
     //
     return $data;
 }