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