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