function hae_tuotteettomat() { global $kukarow; $query = "SELECT tuotepaikat.tunnus ttun,\n tuotepaikat.tuoteno,\n tuotepaikat.saldo,\n tuotepaikat.oletus,\n concat_ws('-', tuotepaikat.hyllyalue,\n tuotepaikat.hyllynro,\n tuotepaikat.hyllyvali,\n tuotepaikat.hyllytaso) paikka,\n tuote.tunnus\n FROM tuotepaikat\n LEFT JOIN tuote ON (tuote.yhtio = tuotepaikat.yhtio\n AND tuote.tuoteno = tuotepaikat.tuoteno)\n WHERE tuotepaikat.yhtio = '{$kukarow['yhtio']}'\n AND (tuote.tunnus is null or tuote.ei_saldoa != '')\n ORDER BY tuotepaikat.tuoteno"; $result = pupe_query($query); return $result; }
function massamuuttaja($taulu, $sarake, $korvattava, $korvaava) { global $yhtiorow, $kukarow; $paivityslause = "UPDATE {$taulu} SET\n {$sarake} = '{$korvaava}',\n muuttaja = '{$kukarow['kuka']}',\n muutospvm = now()\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND {$sarake} = '{$korvattava}'"; $resultpaivitys = pupe_query($paivityslause); return mysql_affected_rows(); }
/** * Palauttaa ketjun kaikki tuotteet */ function tuotteet($ketju, $options = array()) { global $kukarow; $tuotteet = array(); $conditions = ''; if (!empty($options)) { if ($options['skippaa_vaihtoehtoiset']) { $conditions .= " AND vaihtoehtoinen = '' "; } // Tsekataan tarvittavat parametrit if ($options['vastaavuusketjun_jarjestys'] == 'K') { // Haetaan tuotteen järjestys jolla ketju on alunperin haettu $query = "SELECT if (jarjestys=0, 9999, jarjestys) jarjestys\n FROM vastaavat\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND id = '{$ketju}'\n AND tuoteno = '{$this->tuote}'"; $result = pupe_query($query); $jarjestys = mysql_fetch_assoc($result); $conditions .= "HAVING jarjestys >= {$jarjestys['jarjestys']}"; } } // Haetaan korvaavat ketju ja tuotteiden tiedot $query = "SELECT 'vastaava' as tyyppi, if (vastaavat.jarjestys=0, 9999, vastaavat.jarjestys) jarjestys, vastaavat.vaihtoehtoinen, vastaavat.tunnus as vastaavat_tunnus, tuote.*\n FROM vastaavat\n JOIN tuote ON vastaavat.yhtio=tuote.yhtio AND vastaavat.tuoteno=tuote.tuoteno\n WHERE vastaavat.yhtio = '{$kukarow['yhtio']}'\n AND vastaavat.id = '{$ketju}'\n {$conditions}\n ORDER BY jarjestys, tuoteno"; $result = pupe_query($query); while ($tuote = mysql_fetch_assoc($result)) { $tuotteet[] = $tuote; } return $tuotteet; }
function hae($viivakoodi = '', $tuoteno = '', $tuotepaikka = '') { global $kukarow; // Poistetaan tuotepaikasta välimerkit $hylly = preg_replace("/[^a-zA-ZåäöÅÄÖ0-9]/", "", $tuotepaikka); // Hakuehdot if ($tuoteno != '') { $params['tuoteno'] = "tuote.tuoteno = '{$tuoteno}'"; } if ($tuotepaikka != '') { $params['tuotepaikka'] = "hyllypaikka LIKE '{$hylly}%'"; } // Viivakoodi case if ($viivakoodi != '') { $tuotenumerot = hae_viivakoodilla($viivakoodi); $param_viivakoodi = array(); foreach ($tuotenumerot as $_tuoteno => $_arr) { array_push($param_viivakoodi, $_tuoteno); } $params['viivakoodi'] = "tuote.tuoteno in ('" . implode($param_viivakoodi, "','") . "')"; } $osumat = array(); if (!empty($params)) { $haku_ehto = implode($params, " AND "); $query = "SELECT\n tuote.tuoteno,\n inventointilistarivi.otunnus as inventointilista,\n inventointilistarivi.aika as inventointilista_aika,\n concat( lpad(upper(tuotepaikat.hyllyalue), 5, '0'),\n lpad(upper(tuotepaikat.hyllynro), 5, '0'),\n lpad(upper(tuotepaikat.hyllyvali), 5, '0'),\n lpad(upper(tuotepaikat.hyllytaso), 5, '0')) as sorttauskentta,\n concat_ws('-',tuotepaikat.hyllyalue, tuotepaikat.hyllynro,\n tuotepaikat.hyllyvali, tuotepaikat.hyllytaso) tuotepaikka\n FROM tuotepaikat\n JOIN varastopaikat ON (varastopaikat.yhtio = tuotepaikat.yhtio\n AND varastopaikat.tunnus = tuotepaikat.varasto\n AND varastopaikat.toimipaikka = '{$kukarow['toimipaikka']}'\n AND varastopaikat.tyyppi = ''\n )\n JOIN tuote on (tuote.yhtio=tuotepaikat.yhtio and tuote.tuoteno=tuotepaikat.tuoteno)\n LEFT JOIN inventointilistarivi ON (inventointilistarivi.yhtio = tuotepaikat.yhtio\n AND inventointilistarivi.tuotepaikkatunnus = tuotepaikat.tunnus\n AND inventointilistarivi.tila = 'A')\n WHERE tuotepaikat.yhtio = '{$kukarow['yhtio']}'\n AND {$haku_ehto}\n LIMIT 200"; $result = pupe_query($query); while ($row = mysql_fetch_assoc($result)) { $osumat[] = $row; } } return $osumat; }
function datansisalto_e3($e3_ehdotuskansio, $dfile, $otunnus, $toimituspaiva) { global $yhtiorow, $kukarow; $laskuquery = "SELECT *\n FROM lasku\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tunnus = '{$otunnus}'"; $lasku_result = pupe_query($laskuquery); $laskurow = mysql_fetch_array($lasku_result); $lines = file($e3_ehdotuskansio . "/" . $dfile); foreach ($lines as $line) { $tuoteno = pupesoft_cleanstring(substr($line, 12, 17)); $varasto = pupesoft_cleanstring(substr($line, 30, 3)); $tuotenimi = pupesoft_cleanstring(substr($line, 33, 34)); $kpl = pupesoft_cleannumber(substr($line, 68, 7)); //$hinta = pupesoft_cleannumber(substr($line, 91, 13)); //$hinta = $hinta / 10000; $tuote_query = "SELECT tuote.try,\n tuote.osasto,\n tuote.tuoteno,\n tuote.nimitys,\n tuote.yksikko,\n tuotepaikat.hyllyalue,\n tuotepaikat.hyllynro,\n tuotepaikat.hyllytaso,\n tuotepaikat.hyllyvali\n FROM tuote\n LEFT JOIN tuotepaikat ON (tuotepaikat.yhtio = tuote.yhtio and tuotepaikat.tuoteno = tuote.tuoteno)\n WHERE tuote.yhtio = '{$kukarow['yhtio']}'\n AND tuote.tuoteno = '{$tuoteno}'\n ORDER BY tuotepaikat.oletus DESC\n LIMIT 1"; $tuote_result = pupe_query($tuote_query); $tuote_row = mysql_fetch_array($tuote_result); if ($tuote_row['tuoteno'] == '') { echo "<br>"; echo "<font class='error'>" . t("Tiedostosta %s tuotetietoja tuotteelle %s ei löydy tuotehallinnasta. Tuotetta ei lisätty ostoehdotukseen.", "", $file, $tuoteno) . "</font>"; echo "<br>"; } else { list($hinta, $netto, $ale, ) = alehinta_osto($laskurow, $tuote_row, $kpl); $insert_query = "INSERT INTO tilausrivi SET\n yhtio = '{$kukarow['yhtio']}',\n tyyppi = 'O',\n toimaika = '{$toimituspaiva}',\n otunnus = '{$otunnus}',\n tuoteno = '{$tuoteno}',\n try = '{$tuote_row['try']}',\n osasto = '{$tuote_row['osasto']}',\n nimitys = '{$tuote_row['nimitys']}',\n tilkpl = '{$kpl}',\n yksikko = '{$tuote_row['yksikko']}',\n varattu = '{$kpl}',\n hinta = '{$hinta}',\n netto = '{$netto}',\n ale1 = '{$ale['ale1']}',\n ale2 = '{$ale['ale2']}',\n ale3 = '{$ale['ale3']}',\n laatija = 'E3',\n laadittu = now(),\n hyllyalue = '{$tuote_row['hyllyalue']}',\n hyllynro = '{$tuote_row['hyllynro']}',\n hyllytaso = '{$tuote_row['hyllytaso']}',\n hyllyvali = '{$tuote_row['hyllyvali']}'"; $insertdata = pupe_query($insert_query); } } echo "<br>"; echo "<font class='message'>" . t("Ostoehdotus %s siirretty ostotilaukseksi %s.", "", $filunloppu, $otunnus) . "</font>"; echo "<br><br>"; // Siirretään done kansioon rename($e3_ehdotuskansio . "/" . $dfile, $e3_ehdotuskansio . "/done/" . $dfile); }
function alku() { global $yhtiorow, $firstpage, $pdf, $rectparam, $norm, $norm_bold, $pieni, $ytunnus, $asiakasid, $kukarow, $kala, $tid, $otsikkotid; static $sivu; $sivu++; if (!isset($pdf)) { //PDF parametrit $pdf = new pdffile(); $pdf->enable('template'); $pdf->set_default('margin-top', 0); $pdf->set_default('margin-bottom', 0); $pdf->set_default('margin-left', 0); $pdf->set_default('margin-right', 0); $rectparam["width"] = 0.3; $norm["height"] = 12; $norm["font"] = "Courier"; $norm_bold["height"] = 12; $norm_bold["font"] = "Courier-Bold"; $pieni["height"] = 8; $pieni["font"] = "Courier"; $query = "SELECT *\n FROM asiakas\n WHERE yhtio = '{$kukarow['yhtio']}'\n and tunnus = '{$asiakasid}'"; $assresult = pupe_query($query); $assrow = mysql_fetch_assoc($assresult); // Tehdään firstpage $firstpage = $pdf->new_page("a4"); // Tehdään headertemplate $tid = $pdf->template->create(); $pdf->template->rectangle($tid, 20, 20, 0, 580, $rectparam); $pdf->template->text($tid, 30, 5, $yhtiorow["nimi"], $pieni); $pdf->template->text($tid, 170, 5, "{$assrow['nimi']} {$assrow['nimitark']} ({$ytunnus}) " . t("alennustaulukko")); $pdf->template->place($tid, $firstpage, 0, 800); // Tehdään otsikkoheader $otsikkotid = $pdf->template->create(); $pdf->template->text($otsikkotid, 30, 20, t("Osasto"), $norm_bold); $pdf->template->text($otsikkotid, 30, 0, t("Tuoteryhmä") . "/" . t("Tuotenumero"), $norm_bold); $pdf->template->text($otsikkotid, 330, 0, t("Aleryhmä"), $norm_bold); $pdf->template->text($otsikkotid, 450, 0, t("Alennus"), $norm_bold); if ($yhtiorow['myynnin_alekentat'] > 1) { $pdf->template->text($otsikkotid, 520, 0, t("Alelaji"), $norm_bold); } $pdf->template->place($otsikkotid, $firstpage, 0, 665, $norm_bold); $kala = 650; // Asiakastiedot //$pdf->draw_rectangle(737, 20, 674, 300, $firstpage, $rectparam); $pdf->draw_text(50, 759, t("Osoite", $kieli), $firstpage, $pieni); $pdf->draw_text(50, 747, $assrow["nimi"], $firstpage, $norm); $pdf->draw_text(50, 737, $assrow["nimitark"], $firstpage, $norm); $pdf->draw_text(50, 727, $assrow["osoite"], $firstpage, $norm); $pdf->draw_text(50, 717, $assrow["postino"] . " " . $assrow["postitp"], $firstpage, $norm); $pdf->draw_text(50, 707, $assrow["maa"], $firstpage, $norm); } else { // Liitetään vaan valmiit templatet uudelle sivulle $firstpage = $pdf->new_page("a4"); $pdf->template->place($tid, $firstpage, 0, 800); $pdf->template->place($otsikkotid, $firstpage, 0, 760); } $pdf->draw_text(520, 805, t("Sivu") . ": {$sivu}", $firstpage, $norm); }
function va_ti_en_jt($tuoteno, $hyllyalue, $hyllynro, $hyllyvali, $hyllytaso) { global $kukarow, $yhtiorow, $lisavarattu; //tilauksessa, ennakkopoistot ja jt $query = "SELECT\n sum(if(tyyppi in ('W','M'), varattu, 0)) valmistuksessa,\n sum(if(tyyppi = 'O', varattu, 0)) tilattu,\n sum(if(tyyppi = 'E', varattu, 0)) ennakot,\n sum(if(tyyppi in ('L','V') and var not in ('P','J','O','S'), varattu, 0)) ennpois,\n sum(if(tyyppi in ('L','G') and var = 'J', jt {$lisavarattu}, 0)) jt\n FROM tilausrivi use index (yhtio_tyyppi_tuoteno_laskutettuaika)\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tyyppi in ('L','V','O','G','E','W','M')\n AND tuoteno = '{$tuoteno}'\n AND laskutettuaika = '0000-00-00'\n AND hyllyalue = '{$hyllyalue}'\n AND hyllynro = '{$hyllynro}'\n AND hyllyvali = '{$hyllyvali}'\n AND hyllytaso = '{$hyllytaso}'\n AND (varattu+jt > 0)"; $result = pupe_query($query); $ennp = mysql_fetch_assoc($result); return array($ennp['tilattu'], $ennp['valmistuksessa'], $ennp['ennpois'], $ennp['jt']); }
function hae_skannattu_lasku($kasittele_seuraava = "") { global $kukarow, $yhtiorow; $dir = $yhtiorow['skannatut_laskut_polku']; if (!is_dir($dir) or !is_writable($dir)) { return false; } // käydään läpi ensin käsiteltävät kuvat $files = listdir($dir); $files_count = count($files); // Jos ei ole yhtään tiedostoa, palautetaan false if ($files_count == 0) { return false; } // Tehdään palautusta varten array, palautetaan aina laskujen lukumäärä $palautus = array("lukumaara" => $files_count); // Katsotaan onko laskuja, jota käyttäjä voisi käsitellä $query = "SELECT kesken\n FROM kuka\n WHERE yhtio = '{$kukarow["yhtio"]}'\n AND extranet = ''"; $kesken_chk_res = pupe_query($query); foreach ($files as $file) { $path_parts = pathinfo($file); mysql_data_seek($kesken_chk_res, 0); while ($kesken_chk_row = mysql_fetch_assoc($kesken_chk_res)) { // Jos tiedosto on tällä käyttäjällä kesken if (is_numeric($path_parts['filename']) and $path_parts['filename'] == $kukarow['kesken']) { // Palautetaan kesken -key, jos tämä on meillä kesken $palautus["kesken"] = $path_parts["basename"]; $palautus["seuraava"] = $path_parts["basename"]; return $palautus; } elseif ($path_parts['filename'] == $kesken_chk_row['kesken']) { continue 2; } } // Jos halutaan ottaa seuraava lasku käsittelyyn, päivitetään kuka -tiedot if ($kasittele_seuraava != "") { // Tämän tiedoston voi käsitellä seuraavaksi, laitetaan se käyttäjälle keskeneräiseksi list($micro, $timestamp) = explode(" ", microtime()); $file_basename = substr($timestamp . substr($micro * 10, 0, 1), 2); $kukarow['kesken'] = $file_basename; $file_new = $dir . "/" . $file_basename . "." . $path_parts['extension']; $query = "UPDATE kuka SET kesken = '{$kukarow["kesken"]}'\n WHERE yhtio = '{$kukarow["yhtio"]}'\n AND kuka = '{$kukarow["kuka"]}'"; $kesken_upd_res = pupe_query($query); if (!rename($file, $file_new)) { echo t("Ei pystytä nimeämään tiedostoa") . "<br>"; return false; } // Otetaan path parts uudesta tiedostonimestä $path_parts = pathinfo($file_new); } // Tämän laskun voi käsitellä $palautus["seuraava"] = $path_parts["basename"]; return $palautus; } // Ei löytynyt yhtään sopivaa laskua return false; }
function kuka_kayttaja($keta_haetaan) { global $kukarow, $yhtiorow; $query = "SELECT kuka.nimi\n FROM kuka\n WHERE kuka.yhtio = '{$kukarow['yhtio']}'\n AND kuka.kuka ='{$keta_haetaan}'"; $kukares = pupe_query($query); $row = mysql_fetch_assoc($kukares); if ($row["nimi"] != "") { return $row["nimi"]; } else { return $keta_haetaan; } }
/** * Hakee ketjun päätuotteen */ function paatuote() { global $kukarow; // Haetaan ketjun päätuote if ($this->id) { $query = "SELECT *\n FROM korvaavat\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND id = {$this->id}\n ORDER BY if (jarjestys=0, 9999, jarjestys), tuoteno\n LIMIT 1"; $result = pupe_query($query); $ketju = mysql_fetch_assoc($result); $this->paatuote = $ketju; } return $this->paatuote['tuoteno']; }
function getnoderow($toim, $nodeid) { global $yhtiorow, $kukarow; $qu = "SELECT *\n FROM dynaaminen_puu\n WHERE dynaaminen_puu.yhtio = '{$yhtiorow['yhtio']}'\n AND dynaaminen_puu.laji = '{$toim}'\n AND dynaaminen_puu.tunnus = '{$nodeid}'"; $re = pupe_query($qu); $numres = mysql_num_rows($re); if ($numres > 0) { $row = mysql_fetch_assoc($re); return $row; } else { return false; } }
function laskeveroja($taso, $tulos) { global $kukarow, $startmonth, $endmonth; if ($tulos == '22' or $tulos == 'veronmaara' or $tulos == 'summa') { if ($taso == 'fi307') { $vainsuomi = "JOIN lasku ON lasku.yhtio=tiliointi.yhtio and lasku.tunnus=tiliointi.ltunnus and lasku.maa in ('FI', '')"; } else { $vainsuomi = ''; } if ($taso == 'fi309' or $taso == 'fi310') { $_309lisa = " or alv_taso like '%fi300%' "; $vainveroton = " and tiliointi.vero = 0 "; } else { $_309lisa = ""; $vainveroton = ''; } $query = "SELECT ifnull(group_concat(if(alv_taso like '%fi300%', concat(\"'\",tilino,\"'\"), NULL)), '') tilit300,\n ifnull(group_concat(if(alv_taso not like '%fi300%', concat(\"'\",tilino,\"'\"), NULL)), '') tilitMUU\n FROM tili\n WHERE yhtio = '{$kukarow['yhtio']}'\n and (alv_taso like '%{$taso}%' {$_309lisa})"; $tilires = pupe_query($query); $tilirow = mysql_fetch_array($tilires); $vero = 0.0; if ($tilirow['tilit300'] != '' or $tilirow['tilitMUU'] != '') { $tiliointilisa = ''; if ($ryhma == 'fi307') { $tiliointilisa = " and tiliointi.vero > 0 "; } $query = "SELECT sum(round(tiliointi.summa * if('{$tulos}'='22', 22, vero) / 100, 2)) veronmaara,\n sum(tiliointi.summa) summa,\n count(*) kpl\n FROM tiliointi\n {$vainsuomi}\n WHERE tiliointi.yhtio = '{$kukarow['yhtio']}'\n {$tiliointilisa}\n AND korjattu = ''\n AND ("; if ($tilirow["tilit300"] != "") { $query .= " (tilino in ({$tilirow['tilit300']}) {$vainveroton})"; } if ($tilirow["tilit300"] != "" and $tilirow["tilitMUU"] != "") { $query .= " or "; } if ($tilirow["tilitMUU"] != "") { $query .= " tilino in ({$tilirow['tilitMUU']})"; } $query .= " )\n AND tiliointi.tapvm >= '{$startmonth}'\n AND tiliointi.tapvm <= '{$endmonth}'"; $verores = pupe_query($query); while ($verorow = mysql_fetch_array($verores)) { if ($tulos == '22') { $tulos = 'veronmaara'; } $vero += $verorow[$tulos]; } } } else { $vero = 0; } return sprintf('%.2f', $vero); }
function tuoteryhman_varastonarvo($parametrit) { global $kukarow, $yhtiorow; $osasto = $parametrit['osasto']; $try = $parametrit['try']; $pvm1 = $parametrit['pvm1']; $pvm2 = $parametrit['pvm2']; if ($pvm1 == "" or $osasto == "" or $try == "") { return false; } // saldo nyt $query = "SELECT sum(saldo) saldo_nyt\n FROM tuote\n JOIN tuotepaikat on (tuote.yhtio = tuotepaikat.yhtio AND tuote.tuoteno = tuotepaikat.tuoteno)\n WHERE tuote.yhtio = '{$kukarow["yhtio"]}'\n AND tuote.osasto = '{$osasto}'\n AND tuote.try = '{$try}'"; $result = pupe_query($query); $arvo = mysql_fetch_assoc($result); $saldo_nyt = $arvo['saldo_nyt']; // varastonmuutos $query = "SELECT\n sum(if(tapahtuma.laadittu >= '{$pvm1} 00:00:00', tapahtuma.kpl, 0)) muutoskpl1,\n sum(if(tapahtuma.laadittu >= '{$pvm2} 00:00:00', tapahtuma.kpl, 0)) muutoskpl2\n FROM tuote\n JOIN tapahtuma on (tuote.yhtio = tapahtuma.yhtio AND tuote.tuoteno = tapahtuma.tuoteno and tapahtuma.laadittu >= '{$pvm2} 00:00:00' and tapahtuma.laji != 'Epäkurantti')\n WHERE tuote.yhtio = '{$kukarow['yhtio']}'\n AND tuote.osasto = '{$osasto}'\n AND tuote.try = '{$try}'\n ORDER BY tapahtuma.laadittu desc, tapahtuma.tunnus desc"; $muutosres = pupe_query($query); $row = mysql_fetch_assoc($muutosres); $arvo1 = $saldo_nyt + $row['muutoskpl1']; $arvo2 = $saldo_nyt + $row['muutoskpl2']; return array($arvo1, $arvo2); }
$api_keys["user_api_key"] = $maventa_keys['maventa_api_avain']; $api_keys["vendor_api_key"] = $maventa_keys['maventa_ohjelmisto_api_avain']; // Vaihtoehtoinen company_uuid if ($maventa_keys['maventa_yrityksen_uuid'] != "") { $api_keys["company_uuid"] = $maventa_keys['maventa_yrityksen_uuid']; } // Kellonaika Maventan serverillä "YYYYMMDDHHMMSS" $maventan_kellonaika = $client->server_time(); $maventan_kellonaika = date("Y-m-d H:i:s", strtotime(substr($maventan_kellonaika, 0, 8) . "T" . substr($maventan_kellonaika, 8))); // Haetaan uudet laskut // $maventa_keys["maventa_aikaleima"] --> viimeisin laskuhaku kannassa, tästä otettu 5 minsaa pois niin pelataan aikaikkunoiden suhteen varman päälle. // Duplikaattitsekki kuitenkin laskuloopissa. $uudet_laskut = $client->invoice_list_inbound($api_keys, preg_replace("/[^0-9]/", "", $maventa_keys["maventa_aikaleima"])); // Päivitetään aikaleima kantaan $aika_query = "UPDATE yhtion_parametrit\n SET maventa_aikaleima = '{$maventan_kellonaika}'\n WHERE yhtio = '{$maventa_keys['yhtio']}'"; $aika_res = pupe_query($aika_query); // Jos uusia laskuja ei löydy if (!$uudet_laskut) { continue; } // Haetaan uudet laskut ja niiden liitteet foreach ($uudet_laskut as $lasku) { // Jos id on tyhjää niin ohitetaan if ($lasku->id == "") { continue; } $find = exec("find {$verkkolaskut_in} -name \"*maventa_{$lasku->id}_maventa*\""); // Tsekataan ettei tää lasku oo jo noudettu if ($find != "") { continue; }
if ($mikataso > 0) { if (!$php_cli) { echo "<tr><td><a target='Tuotekysely' href='{$palvelin2}tuote.php?tee=Z&tuoteno=" . urlencode($epakurantti_row['tuoteno']) . "'>{$epakurantti_row['tuoteno']}</a>"; } // Näytetään varastossa olevat erät/sarjanumerot if ($epakurantti_row["sarjanumeroseuranta"] == "V" or $epakurantti_row['sarjanumeroseuranta'] == 'T') { $query = "SELECT sarjanumeroseuranta.*, sarjanumeroseuranta.tunnus sarjatunnus,\n tilausrivi_osto.tunnus osto_rivitunnus,\n tilausrivi_osto.perheid2 osto_perheid2,\n tilausrivi_osto.nimitys nimitys,\n lasku_myynti.nimi myynimi\n FROM sarjanumeroseuranta\n LEFT JOIN tilausrivi tilausrivi_myynti use index (PRIMARY) ON tilausrivi_myynti.yhtio=sarjanumeroseuranta.yhtio and tilausrivi_myynti.tunnus=sarjanumeroseuranta.myyntirivitunnus\n LEFT JOIN tilausrivi tilausrivi_osto use index (PRIMARY) ON tilausrivi_osto.yhtio=sarjanumeroseuranta.yhtio and tilausrivi_osto.tunnus=sarjanumeroseuranta.ostorivitunnus\n LEFT JOIN lasku lasku_osto use index (PRIMARY) ON lasku_osto.yhtio=sarjanumeroseuranta.yhtio and lasku_osto.tunnus=tilausrivi_osto.uusiotunnus\n LEFT JOIN lasku lasku_myynti use index (PRIMARY) ON lasku_myynti.yhtio=sarjanumeroseuranta.yhtio and lasku_myynti.tunnus=tilausrivi_myynti.otunnus\n WHERE sarjanumeroseuranta.yhtio = '{$kukarow['yhtio']}'\n and sarjanumeroseuranta.tuoteno = '{$epakurantti_row['tuoteno']}'\n and sarjanumeroseuranta.myyntirivitunnus != -1\n and (tilausrivi_myynti.tunnus is null or tilausrivi_myynti.laskutettuaika = '0000-00-00')\n and tilausrivi_osto.laskutettuaika != '0000-00-00'"; $sarjares = pupe_query($query); while ($sarjarow = mysql_fetch_assoc($sarjares)) { if (!$php_cli) { echo "<br>" . t("S:nro") . "{$sarjarow['sarjanumero']}"; } } } elseif ($epakurantti_row["sarjanumeroseuranta"] == "E" or $epakurantti_row["sarjanumeroseuranta"] == "F") { $query = "SELECT sarjanumeroseuranta.sarjanumero, sarjanumeroseuranta.parasta_ennen, sarjanumeroseuranta.lisatieto,\n sarjanumeroseuranta.hyllyalue, sarjanumeroseuranta.hyllynro, sarjanumeroseuranta.hyllyvali, sarjanumeroseuranta.hyllytaso,\n sarjanumeroseuranta.era_kpl kpl,\n sarjanumeroseuranta.tunnus sarjatunnus\n FROM sarjanumeroseuranta\n LEFT JOIN tilausrivi tilausrivi_osto use index (PRIMARY) ON tilausrivi_osto.yhtio=sarjanumeroseuranta.yhtio and tilausrivi_osto.tunnus=sarjanumeroseuranta.ostorivitunnus\n WHERE sarjanumeroseuranta.yhtio = '{$kukarow['yhtio']}'\n and sarjanumeroseuranta.tuoteno = '{$epakurantti_row['tuoteno']}'\n and sarjanumeroseuranta.myyntirivitunnus = 0\n and sarjanumeroseuranta.era_kpl != 0\n and tilausrivi_osto.laskutettuaika != '0000-00-00'"; $sarjares = pupe_query($query); while ($sarjarow = mysql_fetch_assoc($sarjares)) { if (!$php_cli) { echo "<br>" . t("E:nro") . " {$sarjarow['sarjanumero']} ({$sarjarow['kpl']})"; } } } if (!$php_cli) { echo "</td>"; } $tuotensarake = $excelsarake; $worksheet->writeString($excelrivi, $excelsarake++, $epakurantti_row['tuoteno']); if (!$php_cli) { echo "<td>{$epakurantti_row['nimitys']}</td>"; } $worksheet->writeString($excelrivi, $excelsarake++, $epakurantti_row['nimitys']);
echo "</form><br>"; } else { echo t("Ei tulostamattomia keräyserätarroja"); } echo "<br><br><font class='head'>" . t("Tulostetut keräyserätarrat") . "</font><hr>"; $query = "SELECT DATE_FORMAT(lasku.luontiaika, '%Y-%m-%d %H:%i') luontiaika, lasku.toimaika, lasku.ytunnus, lasku.nimi, lasku.toim_nimi, group_concat(lasku.tunnus) laskutunnukset, count(tilausrivi.tunnus) riveja, sum(tilausrivi.tilkpl) myyntieria\n FROM lasku\n JOIN tilausrivi ON lasku.yhtio = tilausrivi.yhtio and lasku.tunnus = tilausrivi.otunnus and tilausrivi.tyyppi = 'Z'\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n and lasku.tila = 'Z'\n and lasku.alatila = 'X'\n and lasku.luontiaika >= date_sub(now(), INTERVAL 30 DAY)\n GROUP BY 1,2,3,4,5\n ORDER BY 1 DESC,2 DESC,3,4,5"; $tarrares = pupe_query($query); if (mysql_num_rows($tarrares) > 0) { echo "<form method='post'>"; echo "<input type='hidden' name='tee' value='vanhat'>"; echo "<table>"; echo "<tr><th>" . t("Vastaanotettu") . "</th><th>" . t("Toimitusaika") . "</th><th>" . t("Ytunnus") . "</th><th>" . t("Nimi") . "</th><th>" . t("Toim.Nimi") . "</th><th>" . t("Rivejä") . "</th><th>" . t("Myyntieriä") . "</th><th>" . t("Tulosta") . "</th></tr>"; $yhtriveja = 0; $yhteria = 0; $query = "SELECT *\n from kirjoittimet\n where yhtio = '{$kukarow['yhtio']}'"; $kires2 = pupe_query($query); while ($tarrarow = mysql_fetch_array($tarrares)) { echo "<tr><td>" . tv1dateconv($tarrarow["luontiaika"], "P") . "</td><td>" . tv1dateconv($tarrarow["toimaika"]) . "</td><td>{$tarrarow['ytunnus']}</td><td>{$tarrarow['nimi']}</td><td>{$tarrarow['toim_nimi']}</td><td align='right'>{$tarrarow['riveja']}</td><td align='right'>{$tarrarow['myyntieria']}</td>"; echo "<td align='center'><input type='checkbox' name='vanhatunnukset[]' value='{$tarrarow['laskutunnukset']}'></td></tr>"; } echo "</table><br>"; echo "<select name='kirjoitinvan'>"; echo "<option value='{$kirow2['komento']}'>" . t("Valitse kirjoitin") . "</option>"; while ($kirow2 = mysql_fetch_array($kires2)) { if ($kirow2['komento'] == $kirjoitinvan) { $select = 'SELECTED'; } else { $select = ''; } echo "<option value='{$kirow2['komento']}' {$select}>{$kirow2['kirjoitin']}</option>"; }
function hae_rivit($tyyppi, $kukarow, $vva, $kka, $ppa, $vvl, $kkl, $ppl, $apaikka, $lpaikka, $varastot, $keraysvyohykkeet, $lisa_kentat, $kerayksettomat_tuotepaikat, $lisa) { global $yhtiorow; $ostoehdotukset = array('' => t("Ehdotetaan ostoehdotusohjelmissa tilattavaksi"), 'E' => "Ei ehdoteta ostoehdotusohjelmissa tilattavaksi"); if (strtotime("{$vva}-{$kka}-{$ppa}") < strtotime('now - 12 months')) { $_date = "AND tilausrivi.kerattyaika >= '{$vva}-{$kka}-{$ppa} 00:00:00'\n AND tilausrivi.kerattyaika <= '{$vvl}-{$kkl}-{$ppl} 23:59:59'"; } else { $_date = "AND tilausrivi.kerattyaika >= Date_sub(CURRENT_DATE, INTERVAL 12 month)"; } $tuotepaikka_where = ""; $a = array_filter($apaikka); $l = array_filter($lpaikka); if (!empty($a) or !empty($l)) { $ahyllyalue = $apaikka['ahyllyalue']; $ahyllynro = $apaikka['ahyllynro']; $ahyllyvali = $apaikka['ahyllyvali']; $ahyllytaso = $apaikka['ahyllytaso']; $lhyllyalue = $lpaikka['lhyllyalue']; $lhyllynro = $lpaikka['lhyllynro']; $lhyllyvali = $lpaikka['lhyllyvali']; $lhyllytaso = $lpaikka['lhyllytaso']; $tuotepaikka_where = "and concat(rpad(upper(tilausrivi.hyllyalue) ,5,'0'),lpad(upper(tilausrivi.hyllynro) ,5,'0'),lpad(upper(tilausrivi.hyllyvali) ,5,'0'),lpad(upper(tilausrivi.hyllytaso) ,5,'0')) >=\n concat(rpad(upper('{$ahyllyalue}'), 5, '0'),lpad(upper('{$ahyllynro}'), 5, '0'),lpad(upper('{$ahyllyvali}'), 5, '0'),lpad(upper('{$ahyllytaso}'),5, '0'))\n and concat(rpad(upper(tilausrivi.hyllyalue) ,5,'0'),lpad(upper(tilausrivi.hyllynro) ,5,'0'),lpad(upper(tilausrivi.hyllyvali) ,5,'0'),lpad(upper(tilausrivi.hyllytaso) ,5,'0')) <=\n concat(rpad(upper('{$lhyllyalue}'), 5, '0'),lpad(upper('{$lhyllynro}'), 5, '0'),lpad(upper('{$lhyllyvali}'), 5, '0'),lpad(upper('{$lhyllytaso}'),5, '0'))"; } $varasto_lisa1 = ""; $varasto_lisa2 = ""; if (!empty($varastot)) { $varasto_lisa1 = " AND tuotepaikat.varasto IN (" . implode(",", $varastot) . ") "; $varasto_lisa2 = " AND tilausrivi.varasto IN (" . implode(",", $varastot) . ") "; } $tuote_select = ""; $keraysvyohyke_select = ""; $keraysvyohyke_join = ""; $varaston_hyllypaikat_join = ""; $group = ","; if ($yhtiorow['kerayserat'] == "K") { $keraysvyohyke_select = "keraysvyohyke.nimitys as keraysvyohykkeen_nimitys,"; $keraysvyohyke_join = " JOIN keraysvyohyke ON (keraysvyohyke.yhtio = vh.yhtio AND keraysvyohyke.tunnus = vh.keraysvyohyke)"; $varaston_hyllypaikat_join = " JOIN varaston_hyllypaikat AS vh\n ON (\n vh.yhtio = tilausrivi.yhtio\n AND vh.hyllyalue = tilausrivi.hyllyalue\n AND vh.hyllynro = tilausrivi.hyllynro\n AND vh.hyllytaso = tilausrivi.hyllytaso\n AND vh.hyllyvali = tilausrivi.hyllyvali"; if (!empty($keraysvyohykkeet)) { $varaston_hyllypaikat_join .= " AND vh.keraysvyohyke IN (" . implode(",", $keraysvyohykkeet) . ")"; } $varaston_hyllypaikat_join .= ")"; $group .= "keraysvyohykkeen_nimitys,"; } if ($tyyppi == "TUOTE") { $vresult = t_avainsana("S"); $tuote_statukset = array(); while ($status = mysql_fetch_assoc($vresult)) { $tuote_statukset[$status['selite']] = $status['selitetark']; } $checked_count = 0; if (!empty($lisa_kentat)) { foreach ($lisa_kentat as $lisa_kentta) { if (!empty($lisa_kentta['checked'])) { $tuote_select .= $lisa_kentta['kolumni'] . ', '; $group .= $lisa_kentta['kolumni'] . ', '; $checked_count++; } } // Ruksattiin jotain lisävalintoita (tuotekohtaisia), voidaan näyttää saldo if ($checked_count > 0) { $tuote_select .= "tuotepaikat.saldo,"; $group .= "tuotepaikat.saldo,"; } } $tuote_select .= "tilausrivi.hyllyalue, tilausrivi.hyllynro, tilausrivi.hyllyvali, tilausrivi.hyllytaso, "; $tuote_select .= "CONCAT_WS(' ', tilausrivi.hyllyalue, tilausrivi.hyllynro, tilausrivi.hyllyvali, tilausrivi.hyllytaso) as hylly, "; $tuote_select .= "group_concat(distinct tuotepaikat.tunnus) paikkatun, "; $group .= "tilausrivi.hyllyalue, tilausrivi.hyllynro, tilausrivi.hyllyvali, tilausrivi.hyllytaso, hylly,"; if (empty($kerayksettomat_tuotepaikat)) { $tuote_select .= "if (tuotepaikat.tunnus IS NULL , 1, 0) poistettu, "; $group .= "poistettu,"; } } $group = rtrim($group, " ,"); if (!empty($kerayksettomat_tuotepaikat)) { $kerayksettomat_tuotepaikat_varaston_hyllypaikat_join = str_replace('tilausrivi', 'tuotepaikat', $varaston_hyllypaikat_join); $kerayksettomat_tuotepaikat_group = str_replace('tilausrivi', 'tuotepaikat', $group); $kerayksettomat_tuotepaikka_where = str_replace('tilausrivi', 'tuotepaikat', $tuotepaikka_where); $kerayksettomat_tuote_select = str_replace('tilausrivi', 'tuotepaikat', $tuote_select); $query = "SELECT varastopaikat.nimitys as varaston_nimitys,\n {$keraysvyohyke_select}\n {$kerayksettomat_tuote_select}\n sum(if (tilausrivi.kerattyaika >= '{$vva}-{$kka}-{$ppa} 00:00:00' AND tilausrivi.kerattyaika <= '{$vvl}-{$kkl}-{$ppl} 23:59:59', 1, 0)) kpl_valittu_aika,\n sum(if (tilausrivi.kerattyaika >= '{$vva}-{$kka}-{$ppa} 00:00:00' AND tilausrivi.kerattyaika <= '{$vvl}-{$kkl}-{$ppl} 23:59:59', tilausrivi.kpl+tilausrivi.varattu, 0)) tuokpl_valittu_aika,\n sum(if (tilausrivi.kerattyaika >= Date_sub(CURRENT_DATE, INTERVAL 6 month), 1, 0)) kpl_6,\n sum(if (tilausrivi.kerattyaika >= Date_sub(CURRENT_DATE, INTERVAL 6 month), tilausrivi.kpl+tilausrivi.varattu, 0)) tuo_kpl_6,\n sum(if (tilausrivi.kerattyaika >= Date_sub(CURRENT_DATE, INTERVAL 12 month), 1, 0)) kpl_12,\n sum(if (tilausrivi.kerattyaika >= Date_sub(CURRENT_DATE, INTERVAL 12 month), tilausrivi.kpl+tilausrivi.varattu, 0)) tuo_kpl_12\n FROM tuotepaikat\n JOIN tuote USE INDEX (tuoteno_index) ON (tuotepaikat.yhtio = tuote.yhtio\n AND tuotepaikat.tuoteno = tuote.tuoteno\n AND tuote.ei_saldoa = '')\n JOIN varastopaikat ON (varastopaikat.yhtio = tuotepaikat.yhtio\n AND varastopaikat.tunnus = tuotepaikat.varasto)\n {$kerayksettomat_tuotepaikat_varaston_hyllypaikat_join}\n {$keraysvyohyke_join}\n LEFT JOIN tilausrivi ON ( tilausrivi.tyyppi = 'L'\n AND tilausrivi.yhtio = tuotepaikat.yhtio\n AND tilausrivi.hyllyalue = tuotepaikat.hyllyalue\n AND tilausrivi.hyllynro = tuotepaikat.hyllynro\n AND tilausrivi.hyllyvali = tuotepaikat.hyllyvali\n AND tilausrivi.hyllytaso = tuotepaikat.hyllytaso\n AND tilausrivi.tuoteno = tuotepaikat.tuoteno\n {$_date})\n WHERE tuotepaikat.yhtio = '{$kukarow['yhtio']}'\n {$kerayksettomat_tuotepaikka_where}\n {$varasto_lisa1}\n GROUP BY 1\n {$kerayksettomat_tuotepaikat_group}\n ORDER BY kpl_valittu_aika DESC\n {$lisa}"; } else { $query = "SELECT varastopaikat.nimitys as varaston_nimitys,\n {$keraysvyohyke_select}\n {$tuote_select}\n sum(if (tilausrivi.kerattyaika >= '{$vva}-{$kka}-{$ppa} 00:00:00' AND tilausrivi.kerattyaika <= '{$vvl}-{$kkl}-{$ppl} 23:59:59', 1, 0)) kpl_valittu_aika,\n sum(if (tilausrivi.kerattyaika >= '{$vva}-{$kka}-{$ppa} 00:00:00' AND tilausrivi.kerattyaika <= '{$vvl}-{$kkl}-{$ppl} 23:59:59', tilausrivi.kpl+tilausrivi.varattu, 0)) tuokpl_valittu_aika,\n sum(if (tilausrivi.kerattyaika >= Date_sub(CURRENT_DATE, INTERVAL 6 month), 1, 0)) kpl_6,\n sum(if (tilausrivi.kerattyaika >= Date_sub(CURRENT_DATE, INTERVAL 6 month), tilausrivi.kpl+tilausrivi.varattu, 0)) tuo_kpl_6,\n sum(if (tilausrivi.kerattyaika >= Date_sub(CURRENT_DATE, INTERVAL 12 month), 1, 0)) kpl_12,\n sum(if (tilausrivi.kerattyaika >= Date_sub(CURRENT_DATE, INTERVAL 12 month), tilausrivi.kpl+tilausrivi.varattu, 0)) tuo_kpl_12\n FROM tilausrivi\n JOIN tuote USE INDEX (tuoteno_index) ON (tilausrivi.yhtio = tuote.yhtio\n AND tilausrivi.tuoteno = tuote.tuoteno\n AND tuote.ei_saldoa = '')\n JOIN varastopaikat ON (varastopaikat.yhtio = tilausrivi.yhtio\n AND varastopaikat.tunnus = tilausrivi.varasto)\n {$varaston_hyllypaikat_join}\n {$keraysvyohyke_join}\n LEFT JOIN tuotepaikat USE INDEX (yhtio_tuoteno_paikka) ON ( tilausrivi.yhtio = tuotepaikat.yhtio\n AND tilausrivi.hyllyalue = tuotepaikat.hyllyalue\n AND tilausrivi.hyllynro = tuotepaikat.hyllynro\n AND tilausrivi.hyllyvali = tuotepaikat.hyllyvali\n AND tilausrivi.hyllytaso = tuotepaikat.hyllytaso\n AND tilausrivi.tuoteno = tuotepaikat.tuoteno )\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n AND tilausrivi.tyyppi = 'L'\n {$tuotepaikka_where}\n {$_date}\n {$varasto_lisa2}\n GROUP BY 1\n {$group}\n ORDER BY kpl_valittu_aika DESC\n {$lisa}"; } $result = pupe_query($query); //päiviä aikajaksossa $epa1 = (int) date('U', mktime(0, 0, 0, $kka, $ppa, $vva)); $epa2 = (int) date('U', mktime(0, 0, 0, $kkl, $ppl, $vvl)); //Diff in workdays (5 day week) $pva = abs($epa2 - $epa1) / 60 / 60 / 24 / 7 * 5; $poistettu = t('Poistettu'); $rows = array(); $saldolliset = array(); if (mysql_num_rows($result) > 0) { $progress_bar = new ProgressBar(t("Haetaan tiedot")); $progress_bar->initialize(mysql_num_rows($result)); } while ($row = mysql_fetch_assoc($result)) { if (isset($progress_bar)) { $progress_bar->increase(); } if ($tyyppi == 'TUOTE') { if (!empty($lisa_kentat['nimitys']['checked'])) { $row['nimitys'] = t_tuotteen_avainsanat($row, 'nimitys'); } if (isset($row['status']) and array_key_exists($row['status'], $tuote_statukset)) { $row['status'] = $tuote_statukset[$row['status']]; } if (isset($row['ostoehdotus']) and array_key_exists($row['ostoehdotus'], $ostoehdotukset)) { $row['ostoehdotus'] = $ostoehdotukset[$row['ostoehdotus']]; } elseif (isset($row['ostoehdotus']) and !array_key_exists($row['ostoehdotus'], $ostoehdotukset)) { $row['ostoehdotus'] = t("Tuntematon"); } } $row['kpl_kerays'] = number_format($row["kpl_valittu_aika"] > 0 ? round($row["tuokpl_valittu_aika"] / $row["kpl_valittu_aika"]) : 0, 0); $row['kpl_valittu_aika_pvm'] = number_format($row["kpl_valittu_aika"] / $pva, 0); if (is_numeric($row['poistettu'])) { if ($row['poistettu'] == 1) { $row['poistettu'] = $poistettu; } elseif ($row['poistettu'] == 0) { $saldolliset[] = $row["paikkatun"]; $row['poistettu'] = ''; } } unset($row['tuokpl_valittu_aika']); unset($row['tuo_kpl_6']); unset($row['tuo_kpl_12']); unset($row['paikkatun']); $rows[] = $row; } echo "<br/>"; return array($rows, $saldolliset); }
$ivero = array(); $maara = 1; $valkoodi = ''; $lopelink = "&lopetus={$PHP_SELF}////tee={$tee}//tilikausi={$tilikausi}"; $linkkilisa = "&tkausi={$tilikausi}"; while ($trow = mysql_fetch_assoc($result)) { if ($trow['saldo'] == 0 or $trow['vientejä'] == 0) { continue; } $summa2 += $trow['saldo']; $isumma[$maara] = $trow['saldo']; $itili[$maara] = $trow['tilino']; $iselite[$maara] = t("Avaavat saldot") . " " . tv1dateconv($tpv); $ivero[$maara] = 0; $query = "SELECT nimi\n FROM tili\n WHERE yhtio = '{$kukarow['yhtio']}'\n and tilino = '{$trow['tilino']}'"; $tilires = pupe_query($query); $tilinimirow = mysql_fetch_assoc($tilires); echo "<tr class='aktiivi'>"; echo "<td><a name='tili2_{$trow['tilino']}' href='raportit.php?toim=paakirja&tee=K&tili={$trow['tilino']}{$linkkilisa}{$lopelink}///tili2_{$trow['tilino']}'>{$trow['tilino']}</a></td>"; echo "<td>{$tilinimirow['nimi']}</td>"; echo "<td>{$trow['vientejä']}</td>"; echo "<td align='right'>{$trow['saldo']}</td>"; echo "</tr>"; $maara++; } echo "<tr class='aktiivi'>"; echo "<td></td>"; echo "<td>" . t("Tilikauden tulos") . "</td><td></td><td align='right'>{$tulosrow['summa']}</td>"; echo "</tr>"; $summa2 += $tulosrow['summa']; $isumma[$maara] = $tulosrow['summa'];
echo "<td>" . $rivi[$sync_otsikot["fi"]] . "</td><td>" . $rivi[$sync_otsikot["fi"]] . "</td>"; foreach ($kieliarray as $kieli) { echo "<td>" . $rivi[$sync_otsikot[$kieli]] . "</td><td>" . $rivi[$sync_otsikot[$kieli]] . "</td>"; } } else { echo "<td><font class='error'>" . t("Sana puuttuu") . "!</font></td><td>" . $rivi[$sync_otsikot["fi"]] . "</td>"; foreach ($kieliarray as $kieli) { echo "<td><font class='error'>" . t("Sana puuttuu") . "!</font></td><td>" . $rivi[$sync_otsikot[$kieli]] . "</td>"; } } echo "</tr>"; } } } $sanakirjaquery = "SELECT kysytty,fi,se,no,en,de,dk,ee,muutospvm\n FROM sanakirja\n WHERE synkronoi = ''\n and (se !='' or no !='' or en !='' or de !='' or dk !='' or ee !='')\n and kysytty > 1\n ORDER BY kysytty desc"; $sanakirjaresult = pupe_query($sanakirjaquery); while ($sanakirjarow = mysql_fetch_assoc($sanakirjaresult)) { echo "<tr><td>" . $sanakirjarow["kysytty"] . "</td>"; echo "<td>" . $sanakirjarow["fi"] . "</td><td><font class='error'>" . t("Puuttuu referenssistä") . "</font></td>"; foreach ($kieliarray as $kieli) { echo "<td>" . $sanakirjarow[$kieli] . "</td><td><font class='error'>" . t("Puuttuu referenssistä") . "</font></td>"; } echo "</tr>"; } echo "</table><br><br>"; echo " <form method='post'>\n <input type='hidden' name='tee' value='UPDATE'>\n <input type='submit' value='" . t("Synkronoi") . "'>\n\n </form>"; } } } else { echo " <br><br>\n <form method='post'>\n <input type='hidden' name='tee' value='TEE'>\n <input type='submit' value='" . t("Vertaa sanakirjoja") . "'>\n </form>"; }
$oslappkpl_hidden = 0; $disabled = ''; // jos unifaun + hetitulostus tai erätulostus // --> ei tulosteta osoitelappuja Pupessa $_ei_koonti = ($otsik_row['tulostustapa'] == 'H' or $otsik_row['tulostustapa'] == 'E'); $_onko_unifaun = $otsik_row["rahtikirja"] == 'rahtikirja_unifaun_ps_siirto.inc'; $_onko_unifaun = ($_onko_unifaun or $otsik_row["rahtikirja"] == 'rahtikirja_unifaun_uo_siirto.inc'); if (!empty($oslappkpl) and $_onko_unifaun and $_ei_koonti) { $yhtiorow["oletus_oslappkpl"] = 0; $oslappkpl = 0; } if ($yhtiorow["oletus_oslappkpl"] != 0 and ($yhtiorow['kerayserat'] == 'P' or $yhtiorow['kerayserat'] == 'A')) { $kaikki_ok = true; if ($yhtiorow['kerayserat'] == 'A') { $query = "SELECT kerayserat\n FROM asiakas\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tunnus = '{$otsik_row['liitostunnus']}'\n AND kerayserat = 'A'"; $asiakas_chk_res = pupe_query($query); if (mysql_num_rows($asiakas_chk_res) == 0) { $kaikki_ok = false; } } if ($kaikki_ok) { $oslappkpl_hidden = 1; $oslappkpl = ''; $disabled = 'disabled'; } } echo "<input type='text' size='4' name='oslappkpl' value='{$oslappkpl}' {$disabled}>"; if ($oslappkpl_hidden != 0) { echo "<input type='hidden' name='oslappkpl' value='{$oslappkpl_hidden}' />"; } echo "</th>";
$timestamp = gmdate("YmdHis"); // Muodostetaan apixin vaatima salaus ja url $digest_src = "{$software}+{$version}+" . $apix_keys['apix_tunnus'] . "+" . $timestamp . "+" . $apix_keys['apix_avain']; $dt = substr(hash("sha256", $digest_src), 0, 64); $real_url = "{$url}?TraID={$apix_keys['apix_tunnus']}&t={$timestamp}&soft={$software}&ver={$version}&d=SHA-256:{$dt}"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $real_url); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); curl_close($ch); return $response; } // Haetaan api_keyt yhtion_parametreistä $sql_query = "SELECT yhtion_parametrit.apix_tunnus, yhtion_parametrit.apix_avain, yhtio.nimi\n FROM yhtio\n JOIN yhtion_parametrit USING (yhtio)\n WHERE yhtion_parametrit.apix_tunnus != ''\n AND yhtion_parametrit.apix_avain != ''"; $apix_result = pupe_query($sql_query); while ($apix_keys = mysql_fetch_assoc($apix_result)) { while (($response = apix_receive($apix_keys)) != "") { // Randomstringi filenimiin $apix_nimi = md5(uniqid(mt_rand(), true)); // Luodaan temppidirikka jonne työnnetään tän haun kaikki apixfilet $apix_tmpdirnimi = "/tmp/apix-" . md5(uniqid(mt_rand(), true)); if (mkdir($apix_tmpdirnimi)) { $tiedosto = $apix_tmpdirnimi . "/apix_laskupaketti.zip"; $fd = fopen($tiedosto, "w") or die("Tiedostoa ei voitu luoda!"); fwrite($fd, $response); $zip = new ZipArchive(); if ($zip->open($tiedosto) === TRUE) { if ($zip->extractTo($apix_tmpdirnimi)) { // Loopataan tiedostot läpi for ($i = 0; $i < $zip->numFiles; $i++) {
} $pull_ids = implode(",", $pull_ids); // jos ei ollut yhtään pulkkaria, niin skipataan koko rivi if ($pull_ids == "") { continue; } echo "<tr><th>"; if (!$php_cli) { echo "<img style='float:left;' class='nayta_rivit' id='{$taveto_hash}' src='{$palvelin2}pics/lullacons/switch.png' />"; } echo "Pupesoft-" . t("päivitys") . ": " . tv1dateconv($veto["date"], "P") . "</th></tr>"; echo "<tr><td class='back' style='padding:0px;'><table id='table_{$taveto_hash}' style='{$display_h}'>"; } if ($pull_ids != "") { $query = "SELECT *\n FROM git_pulkkarit\n WHERE id in ({$pull_ids})\n ORDER BY feature DESC, id"; $pulres = pupe_query($query); while ($pulrow = mysql_fetch_assoc($pulres)) { $pulkkaridata = unserialize($pulrow["pull_request"]); $title = utf8_decode($pulkkaridata->title); $body = utf8_decode($pulkkaridata->body); echo "<tr>"; if ($pulrow['feature'] == 1) { $title = ltrim($title, " *"); $class = "spec"; $fclass = "message"; $titlelisa = t("Uusi ominaisuus"); } else { $class = ""; $fclass = ""; $titlelisa = t("Pienkehitys"); }
} fputs($toot, $ulos); //Kustannuspaikan koodien haku echo "<font class='message'>" . t("Tarkenteet") . "</font><br>"; $query = "SELECT tunnus, nimi\n FROM kustannuspaikka\n WHERE yhtio = '{$kukarow['yhtio']}'\n and kaytossa != 'E'\n ORDER BY tyyppi, koodi+0, koodi, nimi"; $result = pupe_query($query); $ulos = ''; while ($trow = mysql_fetch_assoc($result)) { $ulos .= '#DIM' . $erotin . $trow['tunnus'] . $erotin . '"' . $trow['nimi'] . '"' . $riviloppu; } fputs($toot, $ulos); } echo "<font class='message'>" . t("Tapahtumat") . "</font><br>"; //Itse tapahtumat $query = "SELECT date_format(tiliointi.tapvm, '%Y%m%d') tapvm,\n tiliointi.tilino,\n tiliointi.kustp,\n tiliointi.projekti,\n tiliointi.summa summa,\n tiliointi.selite,\n lasku.ytunnus,\n tiliointi.ltunnus,\n lasku.mapvm,\n tiliointi.tunnus tunnus,\n lasku.laskunro laskunro,\n lasku.nimi\n FROM tiliointi\n JOIN lasku ON (tiliointi.yhtio=lasku.yhtio and lasku.tunnus=tiliointi.ltunnus)\n WHERE tiliointi.yhtio = '{$kukarow['yhtio']}'\n and left(tiliointi.tapvm, 7) = '{$kausi}'\n and tiliointi.korjattu = ''\n and tiliointi.tosite = ''\n ORDER BY tiliointi.ltunnus, tiliointi.tapvm, tiliointi.tilino, tiliointi.kustp, tiliointi.projekti"; $result = pupe_query($query); while ($trow = mysql_fetch_assoc($result)) { if ($vanhaltunnus != $trow['ltunnus'] or $vanhatapvm != $trow['tapvm']) { // Uusi tosite if ($kesken == 1) { $ulos .= $riviloppu . "}"; fputs($toot, $ulos . $riviloppu); $kesken = 0; } $ulos = '#VER' . $erotin . '""' . $erotin . '""' . $erotin . $trow['tapvm'] . $erotin . '"'; if ($trow['nimi'] == '') { $ulos .= $trow['nimi']; } else { $ulos .= $trow['selite']; } $ulos .= '"' . $riviloppu . "{" . $riviloppu;
} else { $tunken = "ostorivitunnus"; } $query = "UPDATE sarjanumeroseuranta SET\n {$tunken} = 0\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND {$tunken} = '{$srow['tunnus']}'"; $sarjares = pupe_query($query); } } // poistetaan lukot $query = "UNLOCK TABLES"; $locre = pupe_query($query); } $tee = "valitse"; } if ($tunnus != "" and $tee == "valitse") { $tila_query = "SELECT *\n FROM lasku\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tila in ('L','N','A','V','C')\n AND tunnus = '{$tunnus}'"; $tila_result = pupe_query($tila_query); if (mysql_num_rows($tila_result) == 1) { $tila_row = mysql_fetch_assoc($tila_result); // vain laskuttamattomille myyntitilaukille voi tehdä jotain if ($tila_row["tila"] == "L" and $tila_row["alatila"] != "X" or $tila_row["tila"] == "N" and in_array($tila_row["alatila"], array('A', '')) or $tila_row["tila"] == "V" and in_array($tila_row["alatila"], array('', 'A', 'J', 'C')) or $tila_row["tila"] == "C" and in_array($tila_row["alatila"], array('', 'A', 'B', 'C'))) { echo "<form method='post'>"; echo "<input type='hidden' name='parametrit' value='{$parametrit}' />"; echo "<input type='hidden' name='tee' value='vaihda' />"; echo "<input type='hidden' name='tunnus' value='{$tila_row['tunnus']}' />"; echo "<table><tr>"; echo "<th>", t("Vaihda tilauksen tila"), ": </th>"; echo "<td><select name='tila'>"; echo "<option value = ''>", t("Valitse uusi tila"), "</option>"; echo "<option value = '999'>", t("Mitätöity"), "</option>"; if ($tila_row['tila'] == "C") { if ($tila_row["alatila"] != "") {
echo "<td align='right'>{$row_per_asiakas['vienti_nimikkeita']}</td>"; echo "<td align='right'>{$row_per_asiakas['ei_eu_riveja']}</td>"; echo "<td align='right'>{$row_per_asiakas['ei_eu_nimikkeita']}</td>"; } echo "<td align='right'>{$row_per_asiakas['sahkoisia_riveja']}</td>"; echo "<td align='right'>{$row_per_asiakas['sahkoisia_nimikkeita']}</td>"; echo "</tr>"; } } $vientilisa = ""; if ($nayta_viennit == '') { $vientilisa = " sum(IF(lasku.vienti = 'E', 1, 0)) vienti_riveja,\n round(sum(IF(lasku.vienti = 'E', kpl + varattu + jt, 0))) vienti_nimikkeita,\n sum(IF(lasku.vienti = 'K', 1, 0)) ei_eu_riveja,\n round(sum(IF(lasku.vienti = 'K', kpl + varattu + jt, 0))) ei_eu_nimikkeita,"; } ///* Yhteensärivi, annetaan tietokannan tehä työ, en jakssa summata while loopissa t. juppe*/// $query = "SELECT\n count(*) yhteensa_riveja,\n round(sum(kpl + varattu + jt)) yhteensa_nimikkeita,\n {$vientilisa}\n SUM(IF(lasku.ohjelma_moduli IN ('EDIFACT911', 'FUTURSOFT', 'MAGENTO'), 1, 0)) sahkoisia_riveja,\n ROUND(SUM(IF(lasku.ohjelma_moduli IN ('EDIFACT911', 'FUTURSOFT', 'MAGENTO'), kpl + varattu + jt, 0))) sahkoisia_nimikkeita\n FROM tilausrivi USE INDEX ({$ajoindex})\n JOIN lasku ON (lasku.yhtio = tilausrivi.yhtio and lasku.tunnus = tilausrivi.otunnus and lasku.tila = 'L' {$tilaustyyppilisa})\n {$lahdotlisa}\n {$saldotonjoin}\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n AND {$ajotapa} >= '{$vva}-{$kka}-{$ppa} 00:00:00'\n AND {$ajotapa} <= '{$vvl}-{$kkl}-{$ppl} 23:59:59'\n AND tilausrivi.tyyppi = 'L'\n {$ei_laskutusajo_tuotteita}"; $res = pupe_query($query); $row = mysql_fetch_array($res); echo "<tr>"; echo "<th>" . t("Yhteensä") . ":</th>"; echo "<th style='text-align:right;'>{$row['yhteensa_riveja']}</th>"; echo "<th style='text-align:right;'>{$row['yhteensa_nimikkeita']}</th>"; if ($nayta_viennit == '') { echo "<th style='text-align:right;'>{$row['vienti_riveja']}</th>"; echo "<th style='text-align:right;'>{$row['vienti_nimikkeita']}</th>"; echo "<th style='text-align:right;'>{$row['ei_eu_riveja']}</th>"; echo "<th style='text-align:right;'>{$row['ei_eu_nimikkeita']}</th>"; } echo "<th style='text-align:right;'>{$row['sahkoisia_riveja']}</th>"; echo "<th style='text-align:right;'>{$row['sahkoisia_nimikkeita']}</th>"; echo "</tr>"; echo "</table>";
$kkvikapva = date("t", mktime(0, 0, 0, $pvmloop_kk, 1, $pvmloop_vv)); foreach (explode(',', $row["sopimus_pp"]) as $ruksattu_paiva) { if ($ruksattu_paiva > $kkvikapva) { $ruksatut_paivat[$pvmloop_kk][$kkvikapva] = $kkvikapva; } else { $ruksatut_paivat[$pvmloop_kk][$ruksattu_paiva] = $ruksattu_paiva; } } } if (in_array($pvmloop_kk, explode(',', $row["sopimus_kk"])) and in_array($pvmloop_pp, $ruksatut_paivat[$pvmloop_kk])) { // katotaan ollaanko tämä lasku laskutettu $query = "SELECT *\n FROM lasku USE INDEX (yhtio_tila_luontiaika)\n WHERE yhtio = '{$kukarow['yhtio']}'\n and liitostunnus = '{$row['liitostunnus']}'\n and tila = 'L'\n and alatila in ('X','D')\n and luontiaika = '{$pvmloop_vv}-{$pvmloop_kk}-{$pvmloop_pp}'\n and clearing = 'sopimus'\n and swift = '{$row['laskutunnus']}'"; $chkres = pupe_query($query); if (mysql_num_rows($chkres) == 0) { $query = "SELECT *\n FROM lasku USE INDEX (yhtio_tila_luontiaika)\n WHERE yhtio = '{$kukarow['yhtio']}'\n and liitostunnus = '{$row['liitostunnus']}'\n and tila = 'N'\n and alatila = ''\n and clearing = 'sopimus'\n and swift = '{$row['laskutunnus']}'"; $chkres2 = pupe_query($query); if (mysql_num_rows($chkres2) == 0) { $laskuttamatta .= " <input type='checkbox' name='laskutapvm[{$pointteri}]' value='{$pvmloop_vv}-{$pvmloop_kk}-{$pvmloop_pp}'>\n <input type='hidden' name='laskutatun[{$pointteri}]' value='{$row['laskutunnus']}'>\n {$pvmloop_pp}.{$pvmloop_kk}.{$pvmloop_vv}<br>"; // tehdään arraytä cronijobia varten $cron_pvm[$pointteri] = "{$pvmloop_vv}-{$pvmloop_kk}-{$pvmloop_pp}"; $cron_tun[$pointteri] = "{$row['laskutunnus']}"; $pointteri++; $arvoyhteensa += $row["arvo"]; $summayhteensa += $row["summa"]; } } else { $chkrow = mysql_fetch_assoc($chkres); $laskutettu .= "{$pvmloop_pp}.{$pvmloop_kk}.{$pvmloop_vv} ({$chkrow['laskunro']})<br>"; $laskutettu_vika = "{$pvmloop_pp}.{$pvmloop_kk}.{$pvmloop_vv} ({$chkrow['laskunro']})"; } }
echo "<tr><td class='back' colspan='5'><br/><font class='head'>{$tama_rivi['nimi']}</font></td></tr>"; // Otsikkorivi echo "\n <th>" . t("Saapuminen") . "</th>\n <th style='text-align: right;'>" . t("Vaihto-omaisuuslaskut") . "</th>\n <th style='text-align: right;'>" . t("Saapuminen") . "</th>\n <th style='text-align: right;'>" . t("Kuluja") . "</th>\n <th style='text-align: right;'>%</th>\n </tr>"; } $query = "SELECT group_concat(vanhatunnus) as vanhatunnus\n FROM lasku\n WHERE tila = 'K'\n AND vanhatunnus != 0\n AND laskunro = {$tama_rivi['laskunro']}\n AND yhtio = '{$kukarow['yhtio']}'"; $vanhatunnus = mysql_fetch_assoc(pupe_query($query)); $vols["summa"] = 0; if ($vanhatunnus['vanhatunnus'] != "") { //vols, Vaihto-omaisuuslaskujen summa $vols_query = "SELECT round(sum(summa),2) as summa\n FROM tiliointi\n WHERE ltunnus IN ({$vanhatunnus['vanhatunnus']})\n AND korjattu = ''\n AND tilino = '{$yhtiorow['varasto']}'\n AND yhtio = '{$kukarow['yhtio']}'"; $vols = mysql_fetch_assoc(pupe_query($vols_query)); } if ($tama_rivi['tunnus'] != "") { //sks, Saapumisen kokonaissumma $sks_query = "SELECT round(sum(tilausrivi.rivihinta),2) as saapumisen_summa\n FROM tilausrivi\n WHERE uusiotunnus = {$tama_rivi['tunnus']}\n AND yhtio = '{$kukarow['yhtio']}'"; $sks = mysql_fetch_assoc(pupe_query($sks_query)); echo "<tr class='aktiivi'>"; echo "<td>" . $tama_rivi["laskunro"] . "</td>"; echo "<td style='text-align: right;'>" . $vols["summa"] . "</td>"; echo "<td style='text-align: right;'>" . $sks["saapumisen_summa"] . "</td>"; echo "<td style='text-align: right;'>" . round($sks["saapumisen_summa"] - $vols["summa"], 2) . "</td>"; echo "<td style='text-align: right;'>" . round(($sks["saapumisen_summa"] / $vols["summa"] - 1) * 100, 2) . "</td>"; echo "</tr>"; $yhteensa['vols'] += $vols["summa"]; $yhteensa['sks'] += $sks["saapumisen_summa"]; $yhteensa['kulut'] += $sks["saapumisen_summa"] - $vols["summa"]; } $edellinen_rivi = $tama_rivi; } // VIELÄ viimeisen rivin yhteensä tulos if (mysql_num_rows($saapumiset_result) > 0) {
$tables["yhtio"][] = "ostolasku_ei_eu_kulu"; $tables["yhtio"][] = "ostolasku_ei_eu_rahti"; $tables["yhtio"][] = "ostolasku_ei_eu_vaihto_omaisuus"; $tables["yhtio"][] = "ostolasku_ei_eu_raaka_aine"; $tables["yhtion_toimipaikat"][] = "tilino"; $tables["yhtion_toimipaikat"][] = "tilino_eu"; $tables["yhtion_toimipaikat"][] = "tilino_ei_eu"; $tables["yhtion_toimipaikat"][] = "tilino_kaanteinen"; $tables["yhtion_toimipaikat"][] = "tilino_marginaali"; $tables["yhtion_toimipaikat"][] = "tilino_osto_marginaali"; $tables["yhtion_toimipaikat"][] = "tilino_triang"; $tables["yhtion_toimipaikat"][] = "toim_alv"; $tables["yriti"][] = "oletus_kulutili"; $tables["yriti"][] = "oletus_rahatili"; $tables["yriti"][] = "oletus_selvittelytili"; foreach ($tables as $taulu => $kentat) { echo "<br><font class='message'>Tarkastetaan taulu {$taulu}</font><br>"; foreach ($kentat as $kentta) { $query = "SELECT distinct {$kentta} tilino\n FROM {$taulu}\n WHERE yhtio = '{$kukarow['yhtio']}'\n and {$kentta} not in ('','0')"; $haku = pupe_query($query); while ($row = mysql_fetch_assoc($haku)) { $query = "SELECT tunnus\n FROM tili\n WHERE yhtio = '{$kukarow['yhtio']}'\n and tilino = '{$row['tilino']}'"; $tarkresr = pupe_query($query); if (mysql_num_rows($tarkresr) == 0) { echo "<font class='error'>{$taulu}.{$kentta} '{$row['tilino']}' tiliä ei löydy.</font><br>"; } } } } } require "inc/footer.inc";
$varastores = pupe_query($query); $varastorow = mysql_fetch_assoc($varastores); $luontiaika = $xml->InvCounting->TransDate; unset($xml->InvCounting->TransDate); $saldoeroja = array(); foreach ($xml->InvCounting->Line as $line) { $eankoodi = $line->ItemNumber; $kpl = (double) $line->Quantity; $query = "SELECT tuoteno, nimitys\n FROM tuote\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND eankoodi = '{$eankoodi}'"; $tuoteres = pupe_query($query); $tuoterow = mysql_fetch_assoc($tuoteres); list($saldo, $hyllyssa, $myytavissa, $devnull) = saldo_myytavissa($tuoterow["tuoteno"], "KAIKKI", $varastorow['tunnus']); // Etukäteen maksetut tilaukset, jotka ovat keräämättä mutta tilaus jo laskutettu // Lasketaan ne mukaan Pupen hyllyssä määrään, koska saldo_myytavissa ei huomioi niitä $query = "SELECT ifnull(sum(tilausrivi.kpl), 0) AS keraamatta\n FROM tilausrivi\n INNER JOIN lasku on (lasku.yhtio = tilausrivi.yhtio\n AND lasku.tunnus = tilausrivi.otunnus\n AND lasku.mapvm != '0000-00-00'\n AND lasku.chn = '999')\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n AND tilausrivi.tyyppi = 'L'\n AND tilausrivi.var != 'P'\n AND tilausrivi.keratty = ''\n AND tilausrivi.kerattyaika = '0000-00-00 00:00:00'\n AND tilausrivi.tuoteno = '{$tuoterow['tuoteno']}'"; $ker_result = pupe_query($query); $ker_rivi = mysql_fetch_assoc($ker_result); $hyllyssa += $ker_rivi['keraamatta']; // Vertailukonversio $a = (int) $kpl * 10000; $b = (int) $hyllyssa * 10000; if ($a != $b) { $saldoeroja[$tuoterow['tuoteno']]['posten'] = $kpl; $saldoeroja[$tuoterow['tuoteno']]['pupe'] = $hyllyssa; $saldoeroja[$tuoterow['tuoteno']]['nimitys'] = $tuoterow['nimitys']; } } if (count($saldoeroja) > 0) { $body = t("Seuraavien tuotteiden saldovertailuissa on havaittu eroja") . ":<br><br>\n\n"; $body .= t("Tuoteno") . ";" . t("Nimitys") . ";" . t("Posten") . ";" . t("Pupe") . "<br>\n"; foreach ($saldoeroja as $tuoteno => $_arr) {
function piirra_tuntiraportti($asentaja = "", $kukarow, $yhtiorow, $vva, $kka, $ppa, $vvl, $kkl, $ppl, $tyom_nro = '', $asiakasid = '', $asiakasosasto = '', $asiakasryhma = '', $tyojono = '', $tyostatus = '', $ytunnus = '') { if (trim($asentaja) != "") { $asentaja = mysql_real_escape_string($asentaja); $asenlisa = " and kuka.kuka = '{$asentaja}' "; $keiklisa = " and matkalasku.toim_ovttunnus = '{$asentaja}' "; } else { $asenlisa = ""; $keiklisa = ""; } if (trim($tyom_nro) != '') { $lisa .= " and lasku.tunnus = '" . (int) $tyom_nro . "' "; } if (trim($asiakasid) != '') { $lisa .= " and lasku.liitostunnus = '" . (int) $asiakasid . "' "; } $asiakaslisa = ""; if (trim($asiakasosasto) != '') { $asiakaslisa .= " and asiakas.osasto = '" . mysql_real_escape_string($asiakasosasto) . "' "; } if (trim($asiakasryhma) != '') { $asiakaslisa .= " and asiakas.ryhma = '" . mysql_real_escape_string($asiakasryhma) . "' "; } if (trim($ytunnus) != '') { $asiakaslisa .= " and asiakas.ytunnus = '" . mysql_real_escape_string($ytunnus) . "' "; } $tyomaarayslisa = ''; if (trim($tyojono) != '') { $tyomaarayslisa .= " and tyomaarays.tyojono = '" . mysql_real_escape_string($tyojono) . "' "; } if (trim($tyostatus) != '') { $tyomaarayslisa .= " and tyomaarays.tyostatus = '" . mysql_real_escape_string($tyostatus) . "' "; } if (trim($tyom_nro) == '' and trim($vva) != '' and trim($kka) != '' and trim($ppa) != '' and trim($vvl) != '' and trim($kkl) != '' and trim($ppl) != '') { $vva = (int) $vva; $kka = (int) $kka; $ppa = (int) $ppa; $vvl = (int) $vvl; $kkl = (int) $kkl; $ppl = (int) $ppl; $lisa = " and lasku.luontiaika >= '{$vva}-{$kka}-{$ppa} 00:00:00' and lasku.luontiaika <= '{$vvl}-{$kkl}-{$ppl} 23:59:59' "; } $query = "SELECT\n lasku.tunnus, lasku.nimi, lasku.nimitark, lasku.ytunnus, lasku.luontiaika,\n (SELECT selitetark FROM avainsana WHERE avainsana.yhtio = lasku.yhtio AND avainsana.selite = tyomaarays.tyostatus AND avainsana.laji = 'TYOM_TYOSTATUS') tyostatus,\n lasku.erikoisale, lasku.valkoodi,\n group_concat(DISTINCT concat(left(kalenteri.pvmalku,16), '##', left(kalenteri.pvmloppu,16), '##', kuka.nimi, '##', kuka.kuka) ORDER BY kalenteri.pvmalku) asennuskalenteri\n FROM lasku\n JOIN yhtio ON (lasku.yhtio = yhtio.yhtio)\n JOIN tyomaarays ON (tyomaarays.yhtio = lasku.yhtio and tyomaarays.otunnus = lasku.tunnus {$tyomaarayslisa})\n JOIN asiakas ON (asiakas.yhtio = lasku.yhtio AND asiakas.tunnus = lasku.liitostunnus {$asiakaslisa})\n LEFT JOIN kalenteri ON (kalenteri.yhtio = lasku.yhtio and kalenteri.tyyppi = 'asennuskalenteri' and kalenteri.liitostunnus = lasku.tunnus)\n LEFT JOIN kuka ON (kuka.yhtio = kalenteri.yhtio and kuka.kuka = kalenteri.kuka {$asenlisa})\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n and lasku.tila IN ('A','L','N','S','C')\n and lasku.tilaustyyppi = 'A'\n {$lisa}\n GROUP BY 1,2,3,4,5,6,7,8\n ORDER BY lasku.tunnus"; $sresult = pupe_query($query); if (mysql_num_rows($sresult) > 0) { $echootsikot = "<tr><th>" . t("Työmääräys") . ":<br>" . t("Nimi") . ":<br>" . t("Ytunnus") . ":</th><th>" . t("Työnjohdon työtunnit") . ":</th><th>" . t("Asentajien työtunnit") . "</th><th>" . t("Työstatus") . ":</th><th>" . t("Matkalaskut") . ":</th></tr>"; $kaletunnit = array(); $asekaletunnit = array(); $rivihinnat = array(); $kplyht = ''; $i = 0; $query_ale_lisa = generoi_alekentta('M'); while ($row = mysql_fetch_array($sresult)) { $query = "SELECT DISTINCT matkalasku.nimi, tilausrivi.tunnus, tilausrivi.tuoteno, tilausrivi.yksikko, tilausrivi.nimitys, tilausrivi.hinta, tilausrivi.kpl, tilausrivi.kommentti, tilausrivi.rivihinta\n FROM lasku keikka\n JOIN lasku liitosotsikko ON (keikka.yhtio = liitosotsikko.yhtio and keikka.laskunro = liitosotsikko.laskunro and keikka.tila = liitosotsikko.tila and liitosotsikko.alatila = '' and liitosotsikko.vanhatunnus != 0)\n JOIN lasku matkalasku ON (matkalasku.yhtio = liitosotsikko.yhtio and matkalasku.tunnus = liitosotsikko.vanhatunnus and matkalasku.tilaustyyppi = 'M')\n JOIN tilausrivi ON (tilausrivi.yhtio = matkalasku.yhtio and tilausrivi.otunnus = matkalasku.tunnus)\n WHERE keikka.yhtio = '{$kukarow['yhtio']}'\n and keikka.tila = 'K'\n and keikka.alatila = 'T'\n and keikka.liitostunnus = '{$row['tunnus']}'\n and keikka.ytunnus = '{$row['tunnus']}'\n and tilausrivi.kpl > 0\n and tilausrivi.tyyppi != 'D'\n {$keiklisa}"; $keikkares = pupe_query($query); if ($asentaja == "" or mysql_num_rows($keikkares) > 0 or $row["asennuskalenteri"] != "") { echo "{$echootsikot}"; if ($asentaja == "") { $echootsikot = ""; } echo "<tr>\n <td valign='top'>{$row['tunnus']}<br/>{$row['nimi']}"; if (trim($row['nimitark']) != '') { echo "<br/>{$row['nimitark']}"; } if (trim($row['ytunnus']) != '') { echo "<br/>{$row['ytunnus']}"; } echo "</td>\n <td valign='top' style='padding: 0px;' align='right'>"; if ($row["asennuskalenteri"] != "") { echo "<table width='100%'>"; foreach (explode(",", $row["asennuskalenteri"]) as $asekale) { list($alku, $loppu, $nimi, $kuka) = explode("##", $asekale); $atstamp = mktime(substr($alku, 11, 2), substr($alku, 14, 2), 0, substr($alku, 5, 2), substr($alku, 8, 2), substr($alku, 0, 4)); $ltstamp = mktime(substr($loppu, 11, 2), substr($loppu, 14, 2), 0, substr($loppu, 5, 2), substr($loppu, 8, 2), substr($loppu, 0, 4)); if (!isset($kaletunnit[$nimi])) { $kaletunnit[$nimi] = 0; } $kaletunnit[$nimi] += ($ltstamp - $atstamp) / 60; echo "<tr><td>{$nimi}:</td><td align='right'>" . tv1dateconv($alku, "P") . " - " . tv1dateconv($loppu, "P") . "</td></tr>"; } echo "</table>"; } $query = "SELECT GROUP_CONCAT(tilausrivi.yksikko,'#',if(tuote.tuotetyyppi = 'K', tilausrivi.varattu, 0)) yksikko,\n sum(if(tuote.tuotetyyppi = '', round(tilausrivi.hinta * (tilausrivi.varattu+tilausrivi.jt+tilausrivi.kpl) * {$query_ale_lisa},2), 0)) rivihinta_tuote,\n sum(if(tuote.tuotetyyppi = 'K', round(tilausrivi.hinta * (tilausrivi.varattu+tilausrivi.jt+tilausrivi.kpl) * {$query_ale_lisa},2), 0)) rivihinta_tyo\n FROM tilausrivi\n JOIN tuote ON (tuote.yhtio = tilausrivi.yhtio AND tuote.tuoteno = tilausrivi.tuoteno)\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n AND tilausrivi.otunnus = '{$row['tunnus']}'"; $rivihinta_res = pupe_query($query); $rivihinta_row = mysql_fetch_assoc($rivihinta_res); if (!isset($rivihinnat['Tuotteet'][$row['valkoodi']])) { $rivihinnat['Tuotteet'][$row['valkoodi']] = 0; } if (!isset($rivihinnat['Työt'][$row['valkoodi']])) { $rivihinnat['Työt'][$row['valkoodi']] = 0; } $rivihinnat['Tuotteet'][$row['valkoodi']] += $rivihinta_row['rivihinta_tuote']; $rivihinnat['Työt'][$row['valkoodi']] += $rivihinta_row['rivihinta_tyo']; if ($rivihinta_row['yksikko'] != '') { $kplyht = $rivihinta_row['yksikko']; } echo "</td>"; echo "<td valign='top' style='padding: 0px'>"; if ($row["tunnus"] != "") { $query = "SELECT concat(left(kalenteri2.pvmalku,16), '##', left(kalenteri2.pvmloppu,16), '##', kuka.nimi, '##', kuka.kuka) kalenteri\n FROM kalenteri kalenteri2\n LEFT JOIN kuka ON (kuka.yhtio = kalenteri2.yhtio and kuka.kuka = kalenteri2.kuka {$asenlisa})\n WHERE kalenteri2.yhtio = '{$kukarow['yhtio']}'\n AND kalenteri2.tyyppi = 'kalenteri'\n AND kalenteri2.kentta02 = '{$row['tunnus']}'"; $kalenteri_res = pupe_query($query); while ($kalenteri_row = mysql_fetch_assoc($kalenteri_res)) { echo "<table width='100%'>"; foreach (explode(",", $kalenteri_row["kalenteri"]) as $asekale) { list($alku, $loppu, $nimi, $kuka) = explode("##", $asekale); $atstamp = mktime(substr($alku, 11, 2), substr($alku, 14, 2), 0, substr($alku, 5, 2), substr($alku, 8, 2), substr($alku, 0, 4)); $ltstamp = mktime(substr($loppu, 11, 2), substr($loppu, 14, 2), 0, substr($loppu, 5, 2), substr($loppu, 8, 2), substr($loppu, 0, 4)); if (!isset($asekaletunnit[$nimi])) { $asekaletunnit[$nimi] = 0; } $asekaletunnit[$nimi] += ($ltstamp - $atstamp) / 60; echo "<tr><td>{$nimi}:</td><td align='right'>" . tv1dateconv($alku, "P") . " - " . tv1dateconv($loppu, "P") . "</td></tr>"; } echo "</table>"; } } echo "</td>"; echo "<td valign='top' style='padding: 0px'>{$row['tyostatus']}</td>"; echo "<td valign='top' style='padding: 0px;'>"; if (mysql_num_rows($keikkares) > 0) { echo "<table width='100%'>"; while ($keikkarow = mysql_fetch_array($keikkares)) { echo "<tr><td>{$keikkarow['nimi']}:</td><td>{$keikkarow['nimitys']}</td><td align='right'>" . (double) $keikkarow["kpl"] . "</td><td align='right'>" . sprintf("%.2f", $keikkarow["hinta"]) . " {$yhtiorow['valkoodi']}</td></tr>"; $matkakulut[$keikkarow["nimi"]][$keikkarow["nimitys"]] += $keikkarow["rivihinta"]; } echo "</table>"; } echo "</td>"; echo "</tr>"; } $i++; } if (isset($rivihinnat) and count($rivihinnat) > 0) { echo "<tr><td class='spec' valign='top'>" . t("Tuotteet ja työt yhteensä") . ":</td>"; echo "<td class='spec' style='padding: 0px;' valign='top'><table width='100%'>"; $hinnatyht = array(); foreach ($rivihinnat as $tuotetyyppi => $hinta) { foreach ($hinta as $valuutta => $rivihinta) { if ($rivihinta == 0) { continue; } echo "<tr><td class='spec' align='left'>", t("{$tuotetyyppi}") . ":"; if ($tuotetyyppi == 'Työt') { echo "<br/>"; $yksgroup = array(); foreach (explode(',', $kplyht) as $yksikko_kpl) { list($yksikko, $kpl) = explode('#', $yksikko_kpl); if ($yksikko != '' and $kpl != 0) { $yksgroup[$yksikko] += $kpl; } } $i = 0; foreach ($yksgroup as $yksikko => $kpl) { if ($i != 0) { echo "<br/>"; } echo "{$kpl} " . t_avainsana("Y", "", " and avainsana.selite='{$yksikko}'", "", "", "selite"); $i++; } } echo "</td><td class='spec' align='right'>{$rivihinta} {$valuutta}</td></tr>"; if (!isset($hinnatyht[$valuutta])) { $hinnatyht[$valuutta] = 0; } $hinnatyht[$valuutta] += $rivihinta; } } echo "<tr><td class='spec'>", t("Yhteensä"), ":</td>"; foreach ($hinnatyht as $val => $hinta) { echo "<td class='spec' align='right'>{$hinta} {$valuutta}</td>"; } echo "</tr></table></td>"; echo "<td class='spec'> </td><td class='spec'> </td><td class='spec'> </td></tr>"; } if (isset($kaletunnit) and count($kaletunnit) > 0 or isset($matkakulut) and count($matkakulut) > 0 or isset($asekaletunnit) and count($asekaletunnit) > 0) { echo "<tr><td class='spec' valign='top'>" . t("Tunnit yhteensä") . ":</td>"; echo "<td class='spec' style='padding: 0px;' valign='top'><table width='100%'>"; if (count($kaletunnit) > 0) { foreach ($kaletunnit as $kuka => $minuutit) { $tunti = floor($minuutit / 60); $minuutti = sprintf('%02d', $minuutit - $tunti * 60); echo "<tr><td class='spec'>{$kuka}:</td><td class='spec' align='right'>{$tunti}:{$minuutti} " . t("tuntia") . "</td></tr>"; } } echo "</table></td>"; echo "<td class='spec' style='padding: 0px' valign='top'><table width='100%'>"; if (count($asekaletunnit) > 0) { foreach ($asekaletunnit as $kuka => $minuutit) { $tunti = floor($minuutit / 60); $minuutti = sprintf('%02d', $minuutit - $tunti * 60); echo "<tr><td class='spec'>{$kuka}:</td><td class='spec' align='right'>{$tunti}:{$minuutti} " . t("tuntia") . "</td></tr>"; } } echo "</table></td>"; echo "<td class='spec'> </td><td class='spec' style='padding: 0px;' valign='top'><table width='100%'>"; if (isset($matkakulut) and count($matkakulut) > 0) { foreach ($matkakulut as $kuka => $matkat) { foreach ($matkat as $tuoteno => $hinta) { echo "<tr><td class='spec'>{$kuka}:</td><td class='spec'>{$tuoteno}</td><td class='spec'> </td><td class='spec' align='right'>" . sprintf("%.2f", $hinta) . " {$yhtiorow['valkoodi']}</td></tr>"; } } } echo "</table></td>"; echo "</tr>"; echo "<tr><td class='back'><br></td></tr>"; } } }