示例#1
0
 /**
  * Asettaa valmistuksen tilan
  *
  * @param String  $tila
  */
 function setTila($tila)
 {
     global $kukarow;
     /**
      * Sallitut tilat ja niiden mahdolliset vaihtoehdot
      */
     $states = array(Valmistus::ODOTTAA => array(Valmistus::VALMISTUKSESSA, Valmistus::ODOTTAA), Valmistus::VALMISTUKSESSA => array(Valmistus::KESKEYTETTY, Valmistus::VALMIS_TARKASTUKSEEN), Valmistus::KESKEYTETTY => array(Valmistus::VALMISTUKSESSA, Valmistus::ODOTTAA), Valmistus::VALMIS_TARKASTUKSEEN => array(Valmistus::TARKASTETTU));
     // Voidaanko uuteen tilaan vaihtaa,
     // eli löytyykö nykyisen tilan vaihtoehdoista haluttu tila
     if (in_array($tila, $states[$this->tila])) {
         // Mihin tilaan vaihdetaan
         switch ($tila) {
             // Odottaa valmistusta
             case Valmistus::ODOTTAA:
                 // Jos työ on keskeytetty ei sitä poisteta kalenterista!
                 if ($this->getTila() == 'OV') {
                     // Poistetaan kalenterista vain tilassa ODOTTAA olevia valmistuksia (poistaa valmistuksen kalenteri taulusta)
                     $query = "DELETE FROM kalenteri WHERE yhtio='{$kukarow['yhtio']}' AND otunnus={$this->tunnus}";
                     if (!pupe_query($query)) {
                         throw new Exception("Kalenteri merkintää ei poistettu");
                     }
                     $query = "UPDATE lasku\n                    SET\n                      toimaika   = '2099-01-01',\n                      kerayspvm  = '2099-01-01 00:00:00'\n                    WHERE yhtio  = '{$kukarow['yhtio']}'\n                      AND tunnus = {$this->tunnus}";
                     pupe_query($query);
                     $query = "UPDATE tilausrivi\n                    SET\n                      toimaika    = '2099-01-01',\n                      kerayspvm   = '2099-01-01'\n                    WHERE yhtio   = '{$kukarow['yhtio']}'\n                      AND otunnus = {$this->tunnus}";
                     pupe_query($query);
                 } elseif ($this->getTila() == 'TK') {
                     $query = "UPDATE kalenteri SET\n                    henkilo = 0\n                    WHERE yhtio='{$kukarow['yhtio']}'\n                    AND otunnus='{$this->tunnus}'";
                     if (!pupe_query($query)) {
                         throw new Exception("Tilan vaihtamisessa tapahtui virhe. (kalenteri)");
                     }
                     // Valmistuksen keskeytys nollaa myös laskun ja tilausrivin keräyspäivät,
                     // jolloin saldojen laskenta menee oikein.
                     $update_lasku_query = "UPDATE lasku\n                                 SET kerayspvm ='2099-01-01',\n                                 toimaika      ='2099-01-01'\n                                 WHERE yhtio   ='{$kukarow['yhtio']}'\n                                 AND tunnus    ='{$this->tunnus}'\n                                 AND tila = 'V'";
                     if (!pupe_query($update_lasku_query)) {
                         throw new Exception("Tilan vaihtamisessa tapahtui virhe. (valmistus)");
                     }
                     $update_tilausrivi_query = "UPDATE tilausrivi\n                                      SET kerayspvm ='2099-01-01',\n                                      toimaika      ='2099-01-01'\n                                      WHERE yhtio   ='{$kukarow['yhtio']}'\n                                      AND otunnus   ='{$this->tunnus}'";
                     if (!pupe_query($update_tilausrivi_query)) {
                         throw new Exception("Tilan vaihtamisessa tapahtui virhe. (valmisteet)");
                     }
                 }
                 break;
                 // Valmistukseen
             // Valmistukseen
             case Valmistus::VALMISTUKSESSA:
                 // Valmistuslinjalla voi olla vain yksi valmistus VALMISTUKSESSA tilassa kerrallaan
                 $query = "SELECT kalenteri.kuka, otunnus, valmistuksen_tila\n                  FROM kalenteri\n                  JOIN lasku on (kalenteri.yhtio=lasku.yhtio AND kalenteri.otunnus=lasku.tunnus)\n                  WHERE kalenteri.yhtio='{$kukarow['yhtio']}'\n                  AND kalenteri.henkilo='{$this->valmistuslinja}'\n                  AND valmistuksen_tila = 'VA'";
                 $result = pupe_query($query);
                 // Jos keskeneräinen valmistus löytyy
                 if (mysql_num_rows($result) > 0) {
                     throw new Exception("Valmistuslinjalla on keskeneräinen valmistus");
                 }
                 // Pyöristetään aloitusaika (aloitusaikana aikana nykyhetki)
                 $pvmalku = round_time(strtotime('now'));
                 $kesto = valmistuksen_kesto(array('tunnus' => $this->tunnus));
                 $pvmloppu = laske_loppuaika($pvmalku, $kesto * 60, $this->valmistuslinja);
                 // Päivämäärät oikeaan muotoon
                 $pvmalku = date('Y-m-d H:i:s', $pvmalku);
                 $pvmloppu = date('Y-m-d H:i:s', $pvmloppu);
                 // Päivitetään valmistuksen uudet ajat
                 $query = "UPDATE kalenteri\n                  SET pvmalku='{$pvmalku}', pvmloppu='{$pvmloppu}'\n                  WHERE yhtio='{$kukarow['yhtio']}'\n                  AND otunnus='{$this->tunnus}'";
                 // Päivitetään laskun ja tilausrivin keräyspäivät?
                 if (!pupe_query($query)) {
                     throw new Exception("Valmistuksen aikoja ei päivitetty");
                 }
                 break;
                 // Valmistus keskeytetty
             // Valmistus keskeytetty
             case Valmistus::KESKEYTETTY:
                 break;
                 // Valmis tarkastukseen
             // Valmis tarkastukseen
             case Valmistus::VALMIS_TARKASTUKSEEN:
                 //echo "valmistus valmis tarkastukseen";
                 break;
                 // Tarkastettu
             // Tarkastettu
             case Valmistus::TARKASTETTU:
                 //echo "valmistus merkattu tarkastetuksi!";
                 // poistetaan valmistus kalenterista
                 $delete_query = "DELETE FROM kalenteri\n                         WHERE yhtio='{$kukarow['yhtio']}'\n                         AND tyyppi='valmistus'\n                         AND otunnus='{$this->tunnus}'";
                 $result = pupe_query($delete_query);
                 break;
                 // Muut
             // Muut
             default:
                 throw new Exception("Valmistusta yritettiin muuttaa tuntemattomaan tilaan");
                 break;
         }
         // Jos kaikki on ok, päivitetään valmistuksen tila
         $query = "UPDATE lasku\n                SET valmistuksen_tila='{$tila}'\n                WHERE yhtio='{$kukarow['yhtio']}'\n                AND tunnus={$this->tunnus}";
         $result = pupe_query($query);
     } else {
         throw new Exception("Ei voida muuttaa tilasta '{$this->tila}' tilaan '{$tila}'");
     }
 }
示例#2
0
 // pekkanen, sairasloma, muu työ, loma, tai vapaa/poissa
 $query = "SELECT kalenteri.pvmalku as start,\n              kalenteri.pvmloppu as end,\n              kalenteri.kuka,\n              kalenteri.henkilo as resource,\n              kalenteri.tyyppi,\n              kalenteri.tunnus\n              FROM kalenteri\n              WHERE yhtio='{$kukarow['yhtio']}'\n              AND henkilo='{$linja['id']}'\n              AND tyyppi IN ('PE', 'SA', 'MT', 'LO', 'PO')";
 $result = pupe_query($query);
 while ($row = mysql_fetch_assoc($result)) {
     $row['allDay'] = false;
     $row['title'] = $row['tyyppi'];
     $all_events[] = $row;
 }
 // Lisätään Valmistuslinjalla olevat valmistukset
 $valmistukset = hae_valmistuslinjan_valmistukset($linja);
 foreach ($valmistukset as $valmistus) {
     //echo "valmistus: $valmistus[otunnus] $valmistus[pvmalku] $valmistus[pvmloppu]<br>";
     $json = array();
     $json['start'] = $valmistus['pvmalku'];
     $json['end'] = $valmistus['pvmloppu'];
     $json['kesto'] = valmistuksen_kesto($valmistus);
     $title = '';
     // Valmistuksella olevat tuotteet
     $tuotteet = hae_valmistuksen_tuotteet($valmistus);
     foreach ($tuotteet as $tuote) {
         //echo "tuote: $tuote[nimitys] $tuote[tuoteno] $tuote[varattu] $tuote[yksikko]<br>";
         $title .= "{$tuote['nimitys']} {$tuote['varattu']} {$tuote['yksikko']}\n";
     }
     // JSON-rakenne
     /*
     {
       'start': '2012-12-12 12:12',  # kalenteri.pvmalku
       'end': '2012-12-12 12:12',    # kalenteri.pvmloppu
       'tila': 'OV',          # lasku.valmistuksen_tila
       'title': 'Otsikko',        # tilausrivi.nimitys
       'varattu': '12',        # tilausrivi.varattu