/** * Laskee valmistuksen raaka-aineiden saldot ja palauttaa riittämättämien tuotteiden tuotenumeron * ja saldot. Huomio muiden valmistusten varaamat saldot ja mahdolliset ostotilaukset jotka saapuvat * ennen kyseisen valmistuksen aloitushetkeä. * * @return array puutteet Puuttuvat raaka-aineet ja niiden saldot. */ function puutteet() { global $kukarow; $aloitus_pvm = $this->alkupvm(); // Haetaan raaka-aineet $query = "SELECT *\n FROM tilausrivi\n WHERE yhtio='{$kukarow['yhtio']}'\n AND otunnus='{$this->tunnus}'\n AND tuoteno!='TYÖ'\n AND tyyppi='V'"; $result = pupe_query($query); $puutteet = array(); // Tarkistetaan kaikkien raaka-aineiden saldot while ($raaka_aine = mysql_fetch_assoc($result)) { $saldo = array(); list($saldo['saldo'], $saldo['hyllyssa'], $saldo['myytavissa']) = saldo_myytavissa($raaka_aine['tuoteno'], '', '', '', '', '', '', '', '', $aloitus_pvm); // Varatut kappaleet valmistuksilta jotka ovat jo valmistuslinjalla. // Valmistuslinjalla olevat valmistukset varaavat saldoa ja uuden valmistuksen on // tarkistettava paljon ne vähentävät raaka-aineiden saldoa. $muut_query = "SELECT tilausrivi.otunnus, COALESCE(sum(tilausrivi.varattu), 0) AS varattu\n FROM kalenteri\n JOIN lasku ON (kalenteri.yhtio=lasku.yhtio AND kalenteri.otunnus=lasku.tunnus)\n JOIN tilausrivi ON (lasku.yhtio=tilausrivi.yhtio AND lasku.tunnus=tilausrivi.otunnus)\n WHERE kalenteri.yhtio='{$kukarow['yhtio']}'\n AND kalenteri.tyyppi='valmistus'\n AND tilausrivi.tyyppi='V'\n AND tilausrivi.tuoteno='{$raaka_aine['tuoteno']}'\n AND kalenteri.pvmalku < '{$aloitus_pvm}'"; $muut_valmistukset_result = pupe_query($muut_query); $muut_valmistukset = mysql_fetch_assoc($muut_valmistukset_result); error_log("Tuoteno: " . $raaka_aine['tuoteno']); error_log("Muut valmistukset: " . $muut_valmistukset['varattu']); // Haetaan raaka-aineen ostotilauksia, jotka vaikuttavat valmistuksen aloitukseen $query = "SELECT COALESCE(sum(varattu), 0) AS varattu\n FROM tilausrivi\n WHERE yhtio='{$kukarow['yhtio']}'\n AND tuoteno='{$raaka_aine['tuoteno']}'\n AND tyyppi='O'\n #AND kerattyaika != '0000-00-00 00:00:00'\n AND kerattyaika < '{$aloitus_pvm}'"; $ostotilaukset_result = pupe_query($query); $ostotilaukset = mysql_fetch_assoc($ostotilaukset_result); error_log("Ostotilaukset: " . $ostotilaukset['varattu']); $_saldo = $saldo['myytavissa']; if ($_saldo <= $raaka_aine['varattu']) { $puutteet[$raaka_aine['tuoteno']] = $_saldo; } } return $puutteet; }
$worksheet->write($excelrivi, $i, t('Kehahin'), $format_bold); $i++; } $worksheet->write($excelrivi, $i, t('Myyntihinta'), $format_bold); $i++; $worksheet->write($excelrivi, $i, t('Saldo'), $format_bold); $i++; $worksheet->write($excelrivi, $i, t('Tryno'), $format_bold); $i++; $worksheet->write($excelrivi, $i, t('Try'), $format_bold); $i++; $worksheet->write($excelrivi, $i, t('EAN'), $format_bold); $i = 0; $excelrivi++; while ($productrow = mysql_fetch_array($productqueryresult)) { list(, , $apu_myytavissa) = saldo_myytavissa($productrow["tuoteno"]); $sresult = t_avainsana("TRY", "", "and avainsana.selite = '{$productrow['try']}'"); $srow = mysql_fetch_array($sresult); if ($myytavissao == "" or $apu_myytavissa > 0) { $worksheet->writeString($excelrivi, $i, $productrow['tuoteno']); $i++; $worksheet->writeString($excelrivi, $i, $productrow['nimitys']); $i++; if ($kehahinnat != "") { $worksheet->writeNumber($excelrivi, $i, $productrow['kehahin']); $i++; } $worksheet->writeNumber($excelrivi, $i, $productrow['myyntihinta']); $i++; $worksheet->writeNumber($excelrivi, $i, $apu_myytavissa); $i++;
} elseif (($jtrow["tyyppi"] == "W" or $jtrow["tyyppi"] == "M") and $jtrow["tilaustyyppi"] == "W") { $tyyppi = t("Valmistus"); $merkki = "+"; } elseif (($jtrow["tyyppi"] == "W" or $jtrow["tyyppi"] == "M") and $jtrow["tilaustyyppi"] == "V") { $tyyppi = t("Asiakkaallevalmistus"); $merkki = "+"; } $yhteensa[$tyyppi] += $jtrow["kpl"]; if ($jtrow["varasto"] != "") { $tyyppi = $tyyppi . " - " . $jtrow["varasto"]; } if ((int) str_replace("-", "", $jtrow["pvm"]) > (int) date("Ymd") and $ekotettiin == 0) { echo "<tr>\n <td colspan='6' align='right' class='spec'>" . t("Myytävissä nyt") . ":</td>\n <td align='right' class='spec'>" . sprintf('%.2f', $myyta) . "</td>\n </tr>"; $ekotettiin = 1; } list(, , $myyta) = saldo_myytavissa($tuoteno, "KAIKKI", '', '', '', '', '', '', '', $jtrow["pvm"]); echo "<tr>\n <td>{$jtrow['nimi']}</td>\n <td>{$jtrow['tunnus']}</td>\n <td>{$tyyppi}</td>\n <td>" . tv1dateconv($jtrow["laadittu"]) . "</td>\n <td>" . tv1dateconv($jtrow["pvm"]) . "{$vahvistettu}</td>\n <td align='right'>{$merkki}" . abs($jtrow["kpl"]) . "</td>\n <td align='right'>" . sprintf('%.2f', $myyta) . "</td>\n </tr>"; } foreach ($yhteensa as $type => $kappale) { echo "<tr>"; echo "<th colspan='5'>{$type} " . t("yhteensä") . "</th>"; echo "<th style='text-align:right;'>{$kappale}</th>"; echo "<th></th>"; echo "</tr>"; } echo "</table><br>"; } echo "</td></tr><tr><td class='back' valign='top'><br>"; echo "<table>"; echo "<form action='{$PHP_SELF}#Tapahtumat' method='post'>"; if ($historia == "") {
echo "</tr>"; if (mysql_num_rows($paikatresult1) > 0) { $query = "SELECT *\n FROM tuotepaikat\n WHERE tuoteno = '{$tuoteno}'\n and yhtio = '{$kukarow['yhtio']}'\n and oletus != ''"; $result = pupe_query($query); $oletusrow = mysql_fetch_array($result); mysql_data_seek($paikatresult1, 0); while ($saldorow = mysql_fetch_array($paikatresult1)) { if ($oletusvarasto_chk != '' and kuuluukovarastoon($saldorow["hyllyalue"], $saldorow["hyllynro"], $oletusvarasto_chk) == 0) { continue; } if ($saldorow["tunnus"] == $oletusrow["tunnus"]) { $checked = "CHECKED"; } else { $checked = ""; } list($saldo, $hyllyssa, $myytavissa) = saldo_myytavissa($tuoteno, 'JTSPEC', '', '', $saldorow["hyllyalue"], $saldorow["hyllynro"], $saldorow["hyllyvali"], $saldorow["hyllytaso"]); echo "<tr>"; echo "<td>{$saldorow['nimitys']}</td>"; echo "<td>"; if (tarkista_oikeus('inventoi.php', '', 1)) { echo "<a href='{$palvelin2}inventoi.php?tee=INVENTOI&tuoteno=" . urlencode($saldorow["tuoteno"]) . "&lopetus={$lopetus}/SPLIT/muuvarastopaikka.php////tee=M//tuoteno=" . urlencode($saldorow["tuoteno"]) . "'>{$saldorow['hyllyalue']} {$saldorow['hyllynro']} {$saldorow['hyllyvali']} {$saldorow['hyllytaso']}</a>"; } elseif (tarkista_oikeus('inventoi.php', 'OLETUSVARASTO', 1)) { echo "<a href='{$palvelin2}inventoi.php?toim=OLETUSVARASTO&tee=INVENTOI&tuoteno=" . urlencode($saldorow["tuoteno"]) . "&lopetus={$lopetus}/SPLIT/muuvarastopaikka.php////toim=OLETUSVARASTO//tee=M//tuoteno=" . urlencode($saldorow["tuoteno"]) . "'>{$saldorow['hyllyalue']} {$saldorow['hyllynro']} {$saldorow['hyllyvali']} {$saldorow['hyllytaso']}</a>"; } else { echo "{$saldorow['hyllyalue']} {$saldorow['hyllynro']} {$saldorow['hyllyvali']} {$saldorow['hyllytaso']}"; } echo "</td><td align='right'>{$saldorow['saldo']}</td><td align='right'>{$hyllyssa}</td><td align='right'>{$myytavissa}</td>"; if (kuuluukovarastoon($saldorow["hyllyalue"], $saldorow["hyllynro"])) { echo "<td>"; if ($oletusvarasto_chk == '' or $oletusvarasto_chk != '' and kuuluukovarastoon($oletusrow["hyllyalue"], $oletusrow["hyllynro"], $oletusvarasto_chk) != 0) { echo "<input type = 'radio' name='oletus' value='{$saldorow['tunnus']}' {$checked}>";
$total_rows = mysql_num_rows($eresult); $current_row = 0; if ($total_rows > 0) { echo "<font class='message'>", t("Käsitellään"), " {$total_rows} ", t("tuotetta"), ".</font>"; require 'inc/ProgressBar.class.php'; $bar = new ProgressBar(); $bar->initialize($total_rows); // print the empty bar while ($row = mysql_fetch_assoc($eresult)) { $bar->increase(); // ostopuoli $query = "SELECT min(toimaika) toimaika,\n sum(varattu) tulossa\n FROM tilausrivi\n WHERE yhtio = '{$kukarow["yhtio"]}'\n AND tuoteno = '{$row["tuoteno"]}'\n AND tyyppi = 'O'\n AND varattu > 0"; $ostoresult = pupe_query($query); $ostorivi = mysql_fetch_assoc($ostoresult); // Ajetaan saldomyytävissä niin, että JT-rivejä ei huomioida suuntaaan eikä toiseen list($saldo, $hyllyssa, $myytavissa) = saldo_myytavissa($row["tuoteno"], 'JTSPEC'); $query = "SELECT sum(jt {$lisavarattu}) jt\n FROM tilausrivi use index (yhtio_tyyppi_tuoteno_laskutettuaika)\n WHERE yhtio = '{$kukarow["yhtio"]}'\n and tyyppi in ('L','G')\n and tuoteno = '{$row["tuoteno"]}'\n and laskutettuaika = '0000-00-00'\n and jt {$lisavarattu} > 0\n and kpl = 0\n and var = 'J'"; $juresult = pupe_query($query); $jurow = mysql_fetch_assoc($juresult); if ($myytavissa - $jurow["jt"] + $ostorivi["tulossa"] < 0) { $osastores = t_avainsana("OSASTO", "", "and avainsana.selite ='{$row['osasto']}'"); $osastorow = mysql_fetch_assoc($osastores); if ($osastorow['selitetark'] != "") { $row['osasto'] = $row['osasto'] . " - " . $osastorow['selitetark']; } $tryres = t_avainsana("TRY", "", "and avainsana.selite ='{$row['try']}'"); $tryrow = mysql_fetch_assoc($tryres); if ($tryrow['selitetark'] != "") { $row['try'] = $row['try'] . " - " . $tryrow['selitetark']; } $vajaasaldot_table .= "<tr class='aktiivi'>";
} echo "<td valign='top' {$class}>{$prow['paikka']}</td>"; // tehdään pop-up divi jos keikalla on kommentti... if ($prow["tunnus"] != "") { $_varastot = array($laskurow['varasto']); if ($laskurow['vanhatunnus'] != 0) { $query = "SELECT GROUP_CONCAT(tunnus) AS tunnukset\n FROM varastopaikat\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tyyppi != 'P'\n AND toimipaikka = '{$laskurow['vanhatunnus']}'"; $vares = pupe_query($query); $varow = mysql_fetch_assoc($vares); $saldo = $hyllyssa = $myytavissa = 0; if (!empty($varow['tunnukset'])) { $_varastot_tmp = explode(",", $varow['tunnukset']); $_varastot = array_merge($_varastot, $_varastot_tmp); } } list($saldo, $hyllyssa, $myytavissa, $bool) = saldo_myytavissa($prow["tuoteno"], '', $_varastot); $pop_yks = t_avainsana("Y", "", "and avainsana.selite='{$prow['yksikko']}'", "", "", "selite"); echo "<div id='div_{$prow['tunnus']}' class='popup' style='width: 400px;'>"; echo "<ul>"; echo "<li>" . t("Saldo") . ": {$saldo} {$pop_yks}</li><li>" . t("Hyllyssä") . ": {$hyllyssa} {$pop_yks}</li><li>" . t("Myytävissä") . ": {$myytavissa} {$pop_yks}</li>"; echo "<li>" . t("Tilattu") . ": {$prow['tilattu']} {$pop_yks}</li><li>" . t("Varattu") . ": {$prow['varattukpl']} {$pop_yks}</li>"; if ($prow['paikka'] != '') { list($_hyllyalue, $_hyllynro, $_hyllyvali, $_hyllytaso) = explode(" ", $prow['paikka']); $query = "SELECT halytysraja\n FROM tuotepaikat\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tuoteno = '{$prow['tuoteno']}'\n AND hyllyalue = '{$_hyllyalue}'\n AND hyllynro = '{$_hyllynro}'\n AND hyllyvali = '{$_hyllyvali}'\n AND hyllytaso = '{$_hyllytaso}'"; $halyraja_chk_res = pupe_query($query); $halyraja_chk_row = mysql_fetch_assoc($halyraja_chk_res); echo "<li>", t("Hälytysraja"), ": {$halyraja_chk_row['halytysraja']} {$pop_yks}</li>"; } echo "<li>" . t("Keskihinta") . ": {$prow['keskihinta']} {$prow['valuutta']}</li><li>" . t("Ostohinta") . ": {$prow['ostohinta']} {$prow['valuutta']}</li>"; echo "</ul>"; echo "</div>";
echo "<tr>\n <td valign='top'><a href='../inventoi.php?tee=INVENTOI&tuoteno=" . urlencode($row["tuoteno"]) . "'>{$row['tuoteno']}</a></td><td valign='top'>{$row['nimitys']}</td>\n <td valign='top'>{$saldorow['nimitys']} {$saldorow['tyyppi']}</td>\n <td valign='top'>{$saldorow['hyllyalue']} {$saldorow['hyllynro']} {$saldorow['hyllyvali']} {$saldorow['hyllytaso']}</td>"; echo "<td valign='top' align='right'>" . sprintf("%.2f", $saldo) . "</td>"; if (in_array($row["sarjanumeroseuranta"], array("S", "T", "V"))) { echo "<td valign='top' align='right'>" . sprintf("%.2f", $sarjarow["kpl"]) . "</td>"; } else { echo "<td valign='top' align='right'>" . sprintf("%.2f", $sarjarow["era_kpl"]) . "</td>"; } echo "<td valign='top'>{$sarjarow['sarjanumerot']}</td>"; if (in_array($row["sarjanumeroseuranta"], array("S", "G"))) { echo "<td>" . t("YKSI") . "</td>"; } else { echo "<td>" . t("KESKI") . "</td>"; } echo "</tr>"; } } } list($saldo, $hyllyssa, $myytavissa) = saldo_myytavissa($tuoteno, "ORVOT", '', '', '', '', '', '', '', $aikalisa); if ($saldo != 0) { echo "<tr><td valign='top'>" . t("Tuntematon") . "</td><td valign='top'>?</td>"; echo "<td valign='top' align='right'>" . sprintf("%.2f", $saldo) . "</td>\n <td valign='top' align='right'>" . sprintf("%.2f", $hyllyssa) . "</td>\n <td valign='top' align='right'>" . sprintf("%.2f", $myytavissa) . "</td>\n <td></td>\n <td></td>"; if (in_array($row["sarjanumeroseuranta"], array("S", "G"))) { echo "<td>" . t("YKSI") . "</td>"; } else { echo "<td>" . t("KESKI") . "</td>"; } echo "</tr>"; } } echo "</table>"; require "../inc/footer.inc";
$kojarj = $vanhaojarj; echo "<th align='left'><a href = '{$PHP_SELF}?tee={$tee}&atoimvko={$atoimvko}<oimvko={$ltoimvko}&vanhat={$vanhat}&kojarj=6,7'>" . t("Tyyppi") . "</a></th>"; echo "</tr>"; $summat = 0; $arvot = 0; $rivit = array(); while ($prow = mysql_fetch_array($result)) { if (strpos($prow[$i], '@@') !== FALSE) { $pvmma = substr($prow["Toimitusaika"], 3); } else { $pvmma = $prow["Toimitusaika"]; } if (strtotime($pvmma) < strtotime("now")) { $pvmma = ""; } list(, , $myyta) = saldo_myytavissa($prow["Tuotenumero"], "KAIKKI", '', '', '', '', '', '', '', $pvmma); if ($myyta < $prow["Määrä"]) { $rivit[] = $prow["tunnus"]; } } if (is_resource($result) and mysql_num_rows($result)) { mysql_data_seek($result, 0); } while ($prow = mysql_fetch_array($result)) { if (in_array($prow["tunnus"], $rivit)) { $ero = "td"; if ($tunnus == $prow['Tilausnro']) { $ero = "th"; } echo "<tr class='aktiivi'>"; for ($i = 0; $i < mysql_num_fields($result) - 3; $i++) {
// Päivitetään myyntihinta $mihin_yhtio $query = "UPDATE tuote SET\n myyntihinta = '{$tuoterow['myyntihinta']}'\n WHERE yhtio = '{$mihin_yhtio}'\n AND tuoteno = '{$tuoteno}'"; pupe_query($query); // Haetaan tuotteen toimittajan liitos $mihin_yhtio $query = "SELECT tunnus\n FROM tuotteen_toimittajat\n WHERE yhtio = '{$mihin_yhtio}'\n AND tuoteno = '{$tuoteno}'\n AND liitostunnus = {$mista_yhtion_toimittajan_tunnus}"; $mihin_tuoteres = pupe_query($query); while ($mihin_tuoterow2 = mysql_fetch_assoc($mihin_tuoteres)) { // Lasketaan ja päivitetään ostohinta list($hinta, $netto, $ale, $alehinta_alv, $alehinta_val) = alehinta($laskurow, $tuoterow, 1, '', '', array()); for ($alepostfix = 1; $alepostfix <= $yhtiorow['myynnin_alekentat']; $alepostfix++) { $hinta *= 1 - $ale["ale{$alepostfix}"] / 100; } // Päivitetään ostohinta $query = "UPDATE tuotteen_toimittajat SET\n ostohinta = '{$hinta}'\n WHERE yhtio = '{$mihin_yhtio}'\n AND tunnus = '{$mihin_tuoterow2['tunnus']}'"; pupe_query($query); } } // Haetaan saldot tuotteille, joille on tehty tietyn ajan sisällä tilausrivi tai tapahtuma $query = "(SELECT DISTINCT tapahtuma.tuoteno\n FROM tapahtuma\n JOIN tuote ON (tuote.yhtio = tapahtuma.yhtio\n AND tuote.tuoteno = tapahtuma.tuoteno\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.ei_saldoa = '')\n WHERE tapahtuma.yhtio = '{$mista_yhtio}'\n AND tapahtuma.tuoteno IN (SELECT tuoteno FROM tuotteen_toimittajat WHERE yhtio = '{$mihin_yhtio}' AND liitostunnus = {$mista_yhtion_toimittajan_tunnus})\n AND tapahtuma.laadittu >= '{$datetime_checkpoint}')\n\n UNION\n\n (SELECT DISTINCT tilausrivi.tuoteno\n FROM tilausrivi\n JOIN tuote ON (tuote.yhtio = tilausrivi.yhtio\n AND tuote.tuoteno = tilausrivi.tuoteno\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.ei_saldoa = '')\n WHERE tilausrivi.yhtio = '{$mista_yhtio}'\n AND tilausrivi.tyyppi NOT IN ('D','O')\n AND tilausrivi.tuoteno IN (SELECT tuoteno FROM tuotteen_toimittajat WHERE yhtio = '{$mihin_yhtio}' AND liitostunnus = {$mista_yhtion_toimittajan_tunnus})\n AND tilausrivi.laadittu >= '{$datetime_checkpoint}')"; $result = pupe_query($query); while ($row = mysql_fetch_assoc($result)) { list($saldo, $hyllyssa, $myytavissa, $devnull) = saldo_myytavissa($row['tuoteno']); $query = "UPDATE tuotteen_toimittajat SET\n tehdas_saldo = '{$myytavissa}'\n WHERE yhtio = '{$mihin_yhtio}'\n AND tuoteno = '{$row['tuoteno']}'\n AND liitostunnus = {$mista_yhtion_toimittajan_tunnus}"; pupe_query($query); } // Kun kaikki onnistui, päivitetään lopuksi timestamppi talteen $query = "UPDATE avainsana SET\n selite = '{$datetime_checkpoint_uusi}'\n WHERE yhtio = '{$mista_yhtio}'\n AND laji = 'HINNAT_CRON'"; pupe_query($query); if (mysql_affected_rows() != 1) { echo "Timestamp päivitys epäonnistui!\n"; }
function hae_ja_piirra_saldo($row, $yhtiot, $oleasrow) { global $toim_kutsu, $verkkokauppa, $kukarow, $verkkokauppa_saldotsk, $laskurow, $saldoaikalisa, $yhtiorow, $rivin_yksikko, $vari, $classrigh, $hinta_rajaus, $ostoskori, $yht_i, $lisatiedot, $hae_ja_selaa_row; if ($toim_kutsu != "EXTENNAKKO" and ($verkkokauppa == "" or $verkkokauppa != "" and $kukarow["kuka"] != "www" and $verkkokauppa_saldotsk)) { // Tuoteperheen isät, mutta ei sarjanumerollisisa isiä (Normi, Extranet ja Verkkokauppa) if ($row["tuoteperhe"] == $row["tuoteno"] and $row["sarjanumeroseuranta"] != "S") { // Extranet ja verkkokauppa if ($kukarow["extranet"] != "" or $verkkokauppa != "") { $saldot = tuoteperhe_myytavissa($row["tuoteno"], "KAIKKI", "", 0, "", "", "", "", "", $laskurow["toim_maa"], $saldoaikalisa); $kokonaismyytavissa = 0; foreach ($saldot as $varasto => $myytavissa) { $kokonaismyytavissa += $myytavissa; } if ($yhtiorow["extranet_nayta_saldo"] == "Y") { $naytettava_saldo = sprintf("%.2f", $kokonaismyytavissa) . " {$rivin_yksikko}"; $_vari = ""; } elseif ($kokonaismyytavissa > 0) { $naytettava_saldo = t("On"); $_vari = "green"; } else { $naytettava_saldo = t("Ei"); $_vari = "red"; } echo "<td valign='top' class='{$vari}' {$classrigh}>"; echo "<font class='{$_vari}'>"; if ($hinta_rajaus != "") { echo t("Päävarasto") . ": "; } echo $naytettava_saldo; echo "</font>"; echo "</td>"; } else { $saldot = tuoteperhe_myytavissa($row["tuoteno"], "", "KAIKKI", 0, "", "", "", "", "", $laskurow["toim_maa"], $saldoaikalisa); $classrighx = substr($classrigh, 0, -2) . " padding: 0px;' "; echo "<td valign='top' class='{$vari}' {$classrighx}>"; echo "<table style='width:100%;'>"; $ei_tyhja = ""; foreach ($saldot as $varaso => $saldo) { if ($saldo != 0) { $ei_tyhja = 'yes'; $_saldo = sprintf("%.2f", $saldo); echo "<tr class='aktiivi'>"; echo "<td class='{$vari}' nowrap>{$varaso}</td>"; echo "<td class='{$vari}' align='right' nowrap>{$_saldo} {$rivin_yksikko}</td>"; echo "</tr>"; } } if ($ei_tyhja == '') { echo "<tr class='aktiivi'><td class='{$vari}' nowrap colspan='2'><font class='red'>" . t("Tuote loppu") . "</font></td></tr>"; } echo "</table></td>"; } } elseif ($row['ei_saldoa'] != '') { if ($kukarow["extranet"] != "" or $verkkokauppa != "") { echo "<td valign='top' class='{$vari}' {$classrigh}><font class='green'>" . t("On") . "</font></td>"; } else { echo "<td valign='top' class='{$vari}' {$classrigh}><font class='green'>" . t("Saldoton") . "</font></td>"; } } elseif ($verkkokauppa == "" and ($row["sarjanumeroseuranta"] == "S" and ($row["tuoteperhe"] == "" or $row["tuoteperhe"] == $row["tuoteno"]) and $row["osaluettelo"] == "")) { if ($kukarow["extranet"] != "") { echo "<td valign='top' class='{$vari}' {$classrigh}>{$row['sarjanumero']} "; } else { echo "<td valign='top' class='{$vari}' {$classrigh}><a onClick=\"javascript:sarjanumeronlisatiedot_popup('{$row['sarjatunnus']}')\">{$row['sarjanumero']}</a> "; } if (!isset($row["sarjadisabled"]) and $row["sarjayhtio"] == $kukarow["yhtio"] and ($kukarow["kuka"] != "" or is_numeric($ostoskori))) { echo "<input type='hidden' name='tiltuoteno[{$yht_i}]' value = '{$row['tuoteno']}'>"; echo "<input type='hidden' name='tilsarjatunnus[{$yht_i}]' value = '{$row['sarjatunnus']}'>"; echo "<input type='checkbox' name='tilkpl[{$yht_i}]' value='1'> "; $yht_i++; } echo "</td>"; if ($lisatiedot != "" and $kukarow["extranet"] == "") { echo "<td class='{$vari}' {$classrigh}></td>"; } } elseif ($kukarow["extranet"] != "" or $verkkokauppa != "") { piirra_extranet_saldo($row, $oleasrow); } else { $sallitut_maat_lisa = ""; if ($laskurow["toim_maa"] != '') { $sallitut_maat_lisa = " and (varastopaikat.sallitut_maat like '%{$laskurow['toim_maa']}%' or varastopaikat.sallitut_maat = '') "; } // Käydään läpi tuotepaikat if ($row["sarjanumeroseuranta"] == "E" or $row["sarjanumeroseuranta"] == "F" or $row["sarjanumeroseuranta"] == "G") { $query = "SELECT tuote.yhtio, tuote.tuoteno, tuote.ei_saldoa, varastopaikat.tunnus varasto, varastopaikat.tyyppi varastotyyppi, varastopaikat.maa varastomaa,\n tuotepaikat.oletus, tuotepaikat.hyllyalue, tuotepaikat.hyllynro, tuotepaikat.hyllyvali, tuotepaikat.hyllytaso,\n sarjanumeroseuranta.sarjanumero era,\n concat(rpad(upper(tuotepaikat.hyllyalue), 5, '0'),lpad(upper(tuotepaikat.hyllynro), 5, '0'),lpad(upper(tuotepaikat.hyllyvali), 5, '0'),lpad(upper(tuotepaikat.hyllytaso), 5, '0')) sorttauskentta,\n varastopaikat.nimitys, if (varastopaikat.tyyppi!='', concat('(',varastopaikat.tyyppi,')'), '') tyyppi\n FROM tuote\n JOIN tuotepaikat ON (tuotepaikat.yhtio = tuote.yhtio and tuotepaikat.tuoteno = tuote.tuoteno)\n JOIN varastopaikat ON (varastopaikat.yhtio = tuotepaikat.yhtio\n {$sallitut_maat_lisa}\n AND varastopaikat.tunnus = tuotepaikat.varasto)\n JOIN sarjanumeroseuranta ON sarjanumeroseuranta.yhtio = tuote.yhtio\n AND sarjanumeroseuranta.tuoteno = tuote.tuoteno\n AND sarjanumeroseuranta.hyllyalue = tuotepaikat.hyllyalue\n AND sarjanumeroseuranta.hyllynro = tuotepaikat.hyllynro\n AND sarjanumeroseuranta.hyllyvali = tuotepaikat.hyllyvali\n AND sarjanumeroseuranta.hyllytaso = tuotepaikat.hyllytaso\n AND sarjanumeroseuranta.myyntirivitunnus = 0\n AND sarjanumeroseuranta.era_kpl != 0\n WHERE tuote.yhtio in ('" . implode("','", $yhtiot) . "')\n and tuote.tuoteno = '{$row['tuoteno']}'\n GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15\n ORDER BY tuotepaikat.oletus DESC, varastopaikat.nimitys, sorttauskentta"; } else { $query = "SELECT tuote.yhtio, tuote.tuoteno, tuote.ei_saldoa, varastopaikat.tunnus varasto, varastopaikat.tyyppi varastotyyppi, varastopaikat.maa varastomaa,\n tuotepaikat.oletus, tuotepaikat.hyllyalue, tuotepaikat.hyllynro, tuotepaikat.hyllyvali, tuotepaikat.hyllytaso,\n concat(rpad(upper(hyllyalue), 5, '0'),lpad(upper(hyllynro), 5, '0'),lpad(upper(hyllyvali), 5, '0'),lpad(upper(hyllytaso), 5, '0')) sorttauskentta,\n varastopaikat.nimitys, if (varastopaikat.tyyppi!='', concat('(',varastopaikat.tyyppi,')'), '') tyyppi\n FROM tuote\n JOIN tuotepaikat ON (tuotepaikat.yhtio = tuote.yhtio and tuotepaikat.tuoteno = tuote.tuoteno)\n JOIN varastopaikat ON (varastopaikat.yhtio = tuotepaikat.yhtio\n {$sallitut_maat_lisa}\n AND varastopaikat.tunnus = tuotepaikat.varasto)\n WHERE tuote.yhtio in ('" . implode("','", $yhtiot) . "')\n AND tuote.tuoteno = '{$row['tuoteno']}'\n ORDER BY tuotepaikat.oletus DESC, varastopaikat.nimitys, sorttauskentta"; } $varresult = pupe_query($query); $classrighx = substr($classrigh, 0, -2) . " padding: 0px;' "; echo "<td valign='top' class='{$vari}' {$classrighx}>"; echo "<table style='width:100%;'>"; $loytyko = false; $loytyko_normivarastosta = false; $myytavissa_sum = 0; if (mysql_num_rows($varresult) > 0) { $hyllylisa = ""; // katotaan jos meillä on tuotteita varaamassa saldoa joiden varastopaikkaa ei enää ole olemassa... list($saldo, $hyllyssa, $orvot) = saldo_myytavissa($row["tuoteno"], 'ORVOT', '', '', '', '', '', '', '', $saldoaikalisa); $orvot *= -1; while ($saldorow = mysql_fetch_assoc($varresult)) { if (!isset($saldorow["era"])) { $saldorow["era"] = ""; } list($saldo, $hyllyssa, $myytavissa, $sallittu) = saldo_myytavissa($saldorow["tuoteno"], '', '', $saldorow["yhtio"], $saldorow["hyllyalue"], $saldorow["hyllynro"], $saldorow["hyllyvali"], $saldorow["hyllytaso"], $laskurow["toim_maa"], $saldoaikalisa, $saldorow["era"]); // Listataan vain varasto jo se ei ole kielletty if ($sallittu === true) { // hoidetaan pois problematiikka jos meillä on orpoja (tuotepaikattomia) tuotteita varaamassa saldoa if ($orvot > 0) { if ($myytavissa >= $orvot and $saldorow["yhtio"] == $kukarow["yhtio"]) { // poistaan orpojen varaamat tuotteet tältä paikalta $myytavissa = $myytavissa - $orvot; $orvot = 0; } elseif ($orvot > $myytavissa and $saldorow["yhtio"] == $kukarow["yhtio"]) { // poistetaan niin paljon orpojen saldoa ku voidaan $orvot = $orvot - $myytavissa; $myytavissa = 0; } } if ($myytavissa != 0 or $lisatiedot != "" and $hyllyssa != 0) { $id2 = md5(uniqid()); echo "<tr>"; echo "<td class='{$vari}' nowrap>"; echo "<a class='tooltip' id='{$id2}'>{$saldorow['nimitys']}</a> {$saldorow['tyyppi']}"; echo "<div id='div_{$id2}' class='popup' style='width: 300px'>({$saldorow['hyllyalue']}-{$saldorow['hyllynro']}-{$saldorow['hyllyvali']}-{$saldorow['hyllytaso']})</div>"; echo "</td>"; echo "<td class='{$vari}' align='right' nowrap>"; if ($hae_ja_selaa_row['selite'] == 'B') { echo "<font class='green'>"; } echo sprintf("%.2f", $myytavissa) . " " . $rivin_yksikko; if ($hae_ja_selaa_row['selite'] == 'B') { echo "</font>"; } echo "</td></tr>"; } if ($myytavissa > 0) { $loytyko = true; } if ($myytavissa > 0 and $saldorow["varastotyyppi"] != "E") { $loytyko_normivarastosta = true; } if ($lisatiedot != "" and $hyllyssa != 0) { $hyllylisa .= " <tr class='aktiivi'>\n <td class='{$vari}' align='right' nowrap>" . sprintf("%.2f", $hyllyssa) . "</td>\n </tr>"; } if ($saldorow["tyyppi"] != "E") { $myytavissa_sum += $myytavissa; } } } } $tulossalisat = hae_tuotteen_saapumisaika($row['tuoteno'], $row['status'], $myytavissa_sum, $loytyko, $loytyko_normivarastosta); foreach ($tulossalisat as $tulossalisa) { list($o, $v) = explode("!¡!", $tulossalisa); echo "<tr><td>{$o}</td><td>{$v}</td></tr>"; } echo "</table></td>"; if ($lisatiedot != "") { echo "<td valign='top' {$classrigh} class='{$vari}'>"; if (mysql_num_rows($varresult) > 0 and $hyllylisa != "") { echo "<table width='100%'>"; echo "{$hyllylisa}"; echo "</table></td>"; } echo "</td>"; } } } }
function rest_tilaa($params) { global $kukarow, $yhtiorow; // Hyväksytään seuraavat parametrit $kpl = isset($params["kpl"]) ? (double) trim($params["kpl"]) : ""; $tilausnumero = isset($params["tilausnumero"]) ? mysql_real_escape_string(trim($params["tilausnumero"])) : 0; $tuoteno = isset($params["tuoteno"]) ? mysql_real_escape_string(trim($params["tuoteno"])) : ""; $tunnus = isset($params["asiakastunnus"]) ? (int) trim($params["asiakastunnus"]) : ""; $kommentti = isset($params["tilauskommentti"]) ? mysql_real_escape_string(trim($params["tilauskommentti"])) : ""; $toim = "RIVISYOTTO"; // Määritellään luo_myyntitilausotsikko -funkkari require "tilauskasittely/luo_myyntitilausotsikko.inc"; if ($tuoteno == "") { rest_virhe_header("Tuotenumero puuttuu"); } if ($kpl <= 0) { rest_virhe_header("Kappalemäärä ei saa olla 0 tai negatiivinen"); } // tähän haaraan ei voida edes teoriassakaan tulla. if ($tunnus == "" or $tunnus == 0) { rest_virhe_header("Asiakastunnus puuttuu"); } // asiakas tarkistus // Haetaan asiakkaan tiedot $query = "SELECT *\n FROM asiakas\n WHERE yhtio = '{$kukarow["yhtio"]}'\n AND tunnus = '{$tunnus}'"; $tulos = pupe_query($query); if (mysql_num_rows($tulos) == 0) { rest_virhe_header("Asiakasta ei löytynyt järjestelmästä"); } // haetaan tuotteen tiedot $query = "SELECT *\n FROM tuote\n WHERE yhtio = '{$kukarow["yhtio"]}'\n AND tuoteno = '{$tuoteno}'"; $tuoteres = pupe_query($query); if (mysql_num_rows($tuoteres) == 0) { rest_virhe_header("Tuotetta \"{$tuoteno}\" ei löytynyt järjestelmästä"); } // tuote löytyi ok $trow = mysql_fetch_assoc($tuoteres); // ei löytynyt tilausta tällä tunnisteella, pitää tehä uus! if ($tilausnumero == 0) { // varmistetaan, että käyttäjällä ei ole mitään kesken $kukarow["kesken"] = 0; $query = "UPDATE kuka\n SET kesken = 0\n WHERE yhtio = '{$kukarow["yhtio"]}'\n AND kuka = '{$kukarow["kuka"]}'"; $update = pupe_query($query); // tässä kaattuuu $tilausnumero = luo_myyntitilausotsikko($toim, $tunnus, "", "", $kommentti, "", ""); } $kukarow["kesken"] = $tilausnumero; $query = "SELECT *\n FROM lasku\n WHERE yhtio = '{$kukarow["yhtio"]}'\n AND laatija = '{$kukarow["kuka"]}'\n AND liitostunnus = '{$tunnus}'\n AND tila = 'N'\n AND tunnus = '{$tilausnumero}'"; $kesken = pupe_query($query); if (mysql_num_rows($kesken) == 0) { rest_virhe_header("Tilausta ei löytynyt järjestelmästä"); } $laskurow = mysql_fetch_assoc($kesken); // Tarkistetaan saldo list($saldo, $hyllyssa, $myytavissa, $bool) = saldo_myytavissa($tuoteno); if ($myytavissa < $kpl) { rest_virhe_header("Virhe. Saldo ei riitä"); } $ytunnus = $laskurow["ytunnus"]; $kpl = $kpl; $tuoteno = $trow["tuoteno"]; $toimaika = $laskurow["toimaika"]; $kerayspvm = $laskurow["kerayspvm"]; $hinta = ""; $netto = ""; $var = ""; $alv = ""; $paikka = ""; $varasto = ""; $rivitunnus = ""; $korvaavakielto = ""; $jtkielto = $laskurow["jtkielto"]; $varataan_saldoa = "EI"; $kommentti = $kommentti; for ($alepostfix = 1; $alepostfix <= $yhtiorow["myynnin_alekentat"]; $alepostfix++) { ${"ale" . $alepostfix} = ""; } require "tilauskasittely/lisaarivi.inc"; rest_ok_header($tilausnumero); }
while ($ketju = mysql_fetch_assoc($result)) { // Haetaan ketjun tuotteet $tuotteet_query = "SELECT korvaavat.id, korvaavat.tuoteno, korvaavat.jarjestys, tuote.hinnastoon\n FROM korvaavat\n JOIN tuote on (tuote.yhtio=korvaavat.yhtio and tuote.tuoteno=korvaavat.tuoteno)\n WHERE korvaavat.yhtio='{$kukarow['yhtio']}'\n AND id='{$ketju['id']}'\n ORDER BY if(jarjestys=0, 9999, jarjestys), tuoteno;"; $tuotteet_result = pupe_query($tuotteet_query); // Eka tuote on AINA ketjun päätuote $paa_tuote = mysql_fetch_assoc($tuotteet_result); // Jos päätuotteen tuote.hinnastoon on 'E' if ($paa_tuote['hinnastoon'] == 'E') { $myytavissa = saldo_myytavissa($paa_tuote['tuoteno']); // Jos päätuotteella on saldoa if ($myytavissa[0] > 0) { $yhteensa += 1; $paivitetaanko = false; // Loopataan ketjun tuotteet while ($ketjun_tuote = mysql_fetch_assoc($tuotteet_result)) { $tuote_myytavissa = saldo_myytavissa($ketjun_tuote['tuoteno']); // Päivitetään päätuote hinnastoon jos ketjussa on tuotteita joiden myytavissa on 0, // ja hinnastoon KYLLÄ if ($tuote_myytavissa[2] == 0 and $ketjun_tuote['hinnastoon'] != 'E') { $paivitetaanko = true; } } // Jos hinnastoon on setattu, niin ketjun päätuote pitää päivittää if ($paivitetaanko) { // Päivitetään tuote.hinnastoon $query = "UPDATE tuote SET hinnastoon='' WHERE yhtio='{$kukarow['yhtio']}' AND tuoteno='{$paa_tuote['tuoteno']}'"; if ($result2 = pupe_query($query)) { $muutettu += 1; } echo "Ketjun {$paa_tuote['id']} päätuote {$paa_tuote['tuoteno']} päivitetty hinnastoon kylläksi.\n"; }
} $selectlisa = ''; if ($kayta_ostotilausta == '') { $selectlisa = ", lasku.ytunnus,\n lasku.nimi,\n lasku.postitp,\n lasku.tunnus,\n tilausrivi.nimitys,\n sum(tilausrivi.varattu+tilausrivi.jt) myydyt,\n tilausrivi.yksikko,\n sum(tilausrivi.tilkpl * tilausrivi.hinta) arvo,\n lasku.tila,\n lasku.alatila"; } else { $selectlisa = ", group_concat(tilausrivi.tunnus) tunnukset, sum(tilausrivi.varattu+tilausrivi.jt) myydyt"; } $query = "SELECT lasku.toimaika,\n tilausrivi.tuoteno,\n trlt.korvamerkinta,\n tilausrivi.tunnus AS tilausrivitunnus\n {$selectlisa}\n FROM tilausrivi use index (yhtio_tyyppi_laskutettuaika)\n JOIN lasku ON (tilausrivi.yhtio = lasku.yhtio and tilausrivi.otunnus = lasku.tunnus and lasku.tila IN ('L','N') and lasku.toimaika <= '{$myovv}-{$myokk}-{$myopp}')\n JOIN tuote ON (tuote.yhtio = lasku.yhtio and tuote.tuoteno = tilausrivi.tuoteno)\n JOIN asiakas ON (asiakas.yhtio = lasku.yhtio and asiakas.tunnus = lasku.liitostunnus)\n JOIN tilausrivin_lisatiedot AS trlt ON (trlt.yhtio = lasku.yhtio AND trlt.tilausrivitunnus = tilausrivi.tunnus)\n {$toimjoin}\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n and tilausrivi.tyyppi != 'D'\n and tilausrivi.laskutettuaika = '0000-00-00'\n and tilausrivi.toimitettuaika = '0000-00-00'\n and tilausrivi.var != 'P'\n {$lisa}\n group by lasku.toimaika, tilausrivi.tuoteno\n ORDER BY lasku.toimaika {$suunta}"; $result = pupe_query($query); if (mysql_num_rows($result) == 0) { echo "<tr><td class='back'><font class='message'>", t("Yhtään tilausta ei löytynyt"), "!</font></td></tr>"; } while ($tulrow = mysql_fetch_array($result)) { list(, , $myytavissa) = saldo_myytavissa($tulrow["tuoteno"], '', '', '', '', '', '', '', '', ''); if ($yhtiorow['saldo_kasittely'] != '') { list(, , $myytavissa_tul) = saldo_myytavissa($tulrow["tuoteno"], '', '', '', '', '', '', '', '', $myovv . "-" . $myokk . "-" . $myopp); } if (isset($kayta_ostotilausta) and $kayta_ostotilausta != '') { if ($myytavissa > $tulrow['myydyt']) { continue; } $ostotilaus_varattu_kpl = 0; $query = "SELECT *\n FROM tilausrivi\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tuoteno = '{$tulrow['tuoteno']}'\n AND kpl = 0\n AND varattu != 0\n AND tyyppi = 'O'\n AND toimaika <= '{$tulrow['toimaika']}'\n ORDER BY toimaika {$suunta}"; $ostotilausres = pupe_query($query); while ($ostotilausrow = mysql_fetch_assoc($ostotilausres)) { $ostotilaus_varattu_kpl += $ostotilausrow['varattu']; } if ($ostotilaus_varattu_kpl > $ostotilausrow['varattu']) { continue; } $kpl_pvm = array();
} echo date("d.m.Y @ G:i:s") . " - Haetaan saldot.\n"; if ($ajetaanko_kaikki == "NO") { $muutoslisa1 = "AND tapahtuma.laadittu >= '{$datetime_checkpoint}'"; $muutoslisa2 = "AND tilausrivi.laadittu >= '{$datetime_checkpoint}'"; $muutoslisa3 = "AND tuote.muutospvm >= '{$datetime_checkpoint}'"; } else { $muutoslisa1 = ""; $muutoslisa2 = ""; $muutoslisa3 = ""; } // Haetaan saldot tuotteille, joille on tehty tunnin sisällä tilausrivi tai tapahtuma $query = "(SELECT tapahtuma.tuoteno,\n tuote.eankoodi\n FROM tapahtuma\n JOIN tuote ON (tuote.yhtio = tapahtuma.yhtio\n AND tuote.tuoteno = tapahtuma.tuoteno\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != '')\n WHERE tapahtuma.yhtio = '{$kukarow["yhtio"]}'\n {$muutoslisa1})\n\n UNION\n\n (SELECT tilausrivi.tuoteno,\n tuote.eankoodi\n FROM tilausrivi\n JOIN tuote ON (tuote.yhtio = tilausrivi.yhtio\n AND tuote.tuoteno = tilausrivi.tuoteno\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != '')\n WHERE tilausrivi.yhtio = '{$kukarow["yhtio"]}'\n {$muutoslisa2})\n\n UNION\n\n (SELECT tuote.tuoteno,\n tuote.eankoodi\n FROM tuote\n WHERE tuote.yhtio = '{$kukarow["yhtio"]}'\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != ''\n {$muutoslisa3})\n\n ORDER BY 1"; $result = pupe_query($query); while ($row = mysql_fetch_assoc($result)) { list(, , $myytavissa) = saldo_myytavissa($row["tuoteno"], '', $verkkokauppa_saldo_varasto); $dnstock[] = array('tuoteno' => $row["tuoteno"], 'ean' => $row["eankoodi"], 'myytavissa' => $myytavissa); } if ($ajetaanko_kaikki == "NO") { $muutoslisa = "AND (try_fi.muutospvm >= '{$datetime_checkpoint}'\n OR try_se.muutospvm >= '{$datetime_checkpoint}'\n OR try_en.muutospvm >= '{$datetime_checkpoint}'\n OR osasto_fi.muutospvm >= '{$datetime_checkpoint}'\n OR osasto_se.muutospvm >= '{$datetime_checkpoint}'\n OR osasto_en.muutospvm >= '{$datetime_checkpoint}')"; } else { $muutoslisa = ""; } echo date("d.m.Y @ G:i:s") . " - Haetaan osastot/tuoteryhmät.\n"; // Haetaan kaikki TRY ja OSASTO:t, niiden muutokset. $query = "SELECT DISTINCT tuote.osasto,\n tuote.try,\n try_fi.selitetark try_fi_nimi,\n try_se.selitetark try_se_nimi,\n try_en.selitetark try_en_nimi,\n osasto_fi.selitetark osasto_fi_nimi,\n osasto_se.selitetark osasto_se_nimi,\n osasto_en.selitetark osasto_en_nimi\n FROM tuote\n LEFT JOIN avainsana as try_fi ON (try_fi.yhtio = tuote.yhtio\n and try_fi.selite = tuote.try\n and try_fi.laji = 'try'\n and try_fi.kieli = 'fi')\n LEFT JOIN avainsana as try_se ON (try_se.yhtio = tuote.yhtio\n and try_se.selite = tuote.try\n and try_se.laji = 'try'\n and try_se.kieli = 'se')\n LEFT JOIN avainsana as try_en ON (try_en.yhtio = tuote.yhtio\n and try_en.selite = tuote.try\n and try_en.laji = 'try'\n and try_en.kieli = 'en')\n LEFT JOIN avainsana as osasto_fi ON (osasto_fi.yhtio = tuote.yhtio\n and osasto_fi.selite = tuote.osasto\n and osasto_fi.laji = 'osasto'\n and osasto_fi.kieli = 'fi')\n LEFT JOIN avainsana as osasto_se ON (osasto_se.yhtio = tuote.yhtio\n and osasto_se.selite = tuote.osasto\n and osasto_se.laji = 'osasto'\n and osasto_se.kieli = 'se')\n LEFT JOIN avainsana as osasto_en ON (osasto_en.yhtio = tuote.yhtio\n and osasto_en.selite = tuote.osasto\n and osasto_en.laji = 'osasto'\n and osasto_en.kieli = 'en')\n WHERE tuote.yhtio = '{$kukarow["yhtio"]}'\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != ''\n {$muutoslisa}\n ORDER BY 1, 2"; $try_result = pupe_query($query); while ($row = mysql_fetch_assoc($try_result)) { // Osasto/tuoteryhmä array $dnsryhma[$row["osasto"]][$row["try"]] = array('osasto' => $row["osasto"], 'try' => $row["try"], 'osasto_fi' => $row["osasto_fi_nimi"], 'try_fi' => $row["try_fi_nimi"], 'osasto_se' => $row["osasto_se_nimi"], 'try_se' => $row["try_se_nimi"], 'osasto_en' => $row["osasto_en_nimi"], 'try_en' => $row["try_en_nimi"]); // Kerätään myös pelkät tuotenumerot Magentoa varten
// Poislukien päätuote $paa_tuote = mysql_fetch_assoc($tuotteet_result); $edellinen_tuote = $paa_tuote; // Loopataan ketjun muut tuotteet läpi while ($tuote = mysql_fetch_assoc($tuotteet_result)) { // Muutetaan tuotteen nimitys // Jos tuotteen järjestys on 0, laitetaan päätuote, muuten edellinen if ($tuote['jarjestys'] == 0) { $tuoteno = $paa_tuote['tuoteno']; } else { $tuoteno = $edellinen_tuote['tuoteno']; } $uusi_nimitys = "KORVAAVA " . $tuoteno; if ($uusi_nimitys != $tuote['nimitys']) { // Tuotteen saldo $myytavissa = saldo_myytavissa($tuote['tuoteno']); // Huomioidaan vain tuotteet joilla saldo on nolla if ($myytavissa[0] == 0) { $muutos_query = "UPDATE tuote SET\n nimitys='{$uusi_nimitys}'\n WHERE yhtio='{$kukarow['yhtio']}'\n AND tuoteno='{$tuote['tuoteno']}'"; // Ajetaan päivitysquery ja poistetaan tuote vastaavuusketjuista if (pupe_query($muutos_query)) { $muutettu++; $poista_vastaavat_query = "DELETE FROM vastaavat\n WHERE yhtio='{$kukarow['yhtio']}'\n AND tuoteno='{$tuote['tuoteno']}'"; if (pupe_query($poista_vastaavat_query)) { $poistettu++; } } } } // Laitetaan ketjun edellinen tuote talteen $edellinen_tuote = $tuote;
echo "<font class='error'>" . t("Virhe sisäänluettavan tiedoston rivillä %s, riviä ei huomioida", "", $rowkey + 1) . "...{$seliseli}</font><br>"; unset($kaikki_tiedostorivit[$rowkey]); continue; } // LÄHDEVARASTOPAIKKA list($lhyllyalue, $lhyllynro, $lhyllyvali, $lhyllytaso) = explode("-", $lahdevarastopk); // Tarkistetaan onko tuotepaikka ja tuote olemassa $query = "SELECT tuotepaikat.*\n FROM tuotepaikat use index (tuote_index)\n JOIN tuote ON (tuote.yhtio = tuotepaikat.yhtio AND tuote.tuoteno = tuotepaikat.tuoteno)\n WHERE tuotepaikat.yhtio = '{$kukarow['yhtio']}'\n and tuotepaikat.tuoteno = '{$tuoteno}'\n and tuotepaikat.hyllyalue = '{$lhyllyalue}'\n and tuotepaikat.hyllynro = '{$lhyllynro}'\n and tuotepaikat.hyllyvali = '{$lhyllyvali}'\n and tuotepaikat.hyllytaso = '{$lhyllytaso}'"; $tvresult = pupe_query($query); if (mysql_num_rows($tvresult) == 0) { unset($kaikki_tiedostorivit[$rowkey]); continue; } else { $tvrow = mysql_fetch_assoc($tvresult); $tiedr[2] = $tvrow['tunnus']; list($saldo, $hyllyssa, $myytavissa) = saldo_myytavissa($tuoteno, '', $varasto_valinta, '', $lhyllyalue, $lhyllynro, $lhyllyvali, $lhyllytaso); if ($kpl == "X" or $kpl > $myytavissa) { $tiedr[1] = $myytavissa; } } // Tarkistetaan onko annettu lähdevarastopaikka valitussa varastossa $lahdetsekki = kuuluukovarastoon($lhyllyalue, $lhyllynro, $varasto_valinta); if ($lahdetsekki == 0) { echo "<font class='error'>" . t("Tuotteen %s lähdevarastopaikka %s %s %s %s ei ole valitussa varastossa", "", $tuoteno, $lhyllyalue, $lhyllynro, $lhyllyvali, $lhyllytaso) . "!</font><br>"; unset($kaikki_tiedostorivit[$rowkey]); continue; } // KOHDEVARASTOPAIKKA list($ahyllyalue, $ahyllynro, $ahyllyvali, $ahyllytaso) = explode("-", $kohdevarastopk); // Tarkistetaan onko annettu kohdevarastopaikka valitussa varastossa $kohdetsekki = kuuluukovarastoon($ahyllyalue, $ahyllynro, $varasto_valinta);
$query = "DELETE FROM tuotteen_avainsanat\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND laji like 'VARASTORYHMA%'"; $tuotteen_avainsana_res = pupe_query($query); $query = "SELECT *\n FROM avainsana\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND laji = 'VARASTORYHMA'\n AND selitetark != ''"; $avainsana_res = pupe_query($query); if (mysql_num_rows($avainsana_res) == 0) { echo date("d.m.Y @ G:i:s") . " - Varastoryhmiä ei ole perustettu.\n"; } else { $query = "SELECT tuote.tuoteno, ifnull((SELECT isatuoteno FROM tuoteperhe WHERE tuoteperhe.yhtio = tuote.yhtio AND tuoteperhe.isatuoteno = tuote.tuoteno AND tuoteperhe.tyyppi = 'P' LIMIT 1), '') isa\n FROM tuote\n WHERE tuote.yhtio = '{$kukarow['yhtio']}'"; $res = pupe_query($query); echo date("d.m.Y @ G:i:s") . " - Aloitetaan " . mysql_num_rows($res) . " tuotteen päivitys. ({$kukarow['yhtio']})\n"; while ($row = mysql_fetch_assoc($res)) { mysql_data_seek($avainsana_res, 0); while ($avainsana_row = mysql_fetch_assoc($avainsana_res)) { $varastot = explode(',', $avainsana_row['selitetark']); $myytavissa = 0; if ($row['isa'] != '') { $saldot = tuoteperhe_myytavissa($row["tuoteno"], '', '', $varastot); foreach ($saldot as $varasto => $myytavissa_apu) { $myytavissa += $myytavissa_apu; } } else { list($saldo, $hyllyssa, $myytavissa) = saldo_myytavissa($row["tuoteno"], '', $varastot); } if ($myytavissa > 0) { $query = "INSERT INTO tuotteen_avainsanat SET\n yhtio = '{$kukarow['yhtio']}',\n tuoteno = '{$row['tuoteno']}',\n kieli = '{$avainsana_row['kieli']}',\n laji = 'VARASTORYHMA_{$avainsana_row['selite']}',\n selite = '{$myytavissa}',\n laatija = '{$kukarow['kuka']}',\n luontiaika = now(),\n muutospvm = now(),\n muuttaja = '{$kukarow['kuka']}'"; $tuotteen_avainsana_res = pupe_query($query); } } } } echo date("d.m.Y @ G:i:s") . " - Varastoryhmien päivitys. Done!\n\n";
echo 'haly'; echo '</th>'; echo '<tr>'; $pdf_data = array(); foreach ($oletuspaikat as $row) { $saldo_info = saldo_myytavissa($row['tuoteno'], '', $row['varasto'], $kukarow['yhtio'], $row['alue'], $row['nro'], $row['vali'], $row['taso']); $row['myytavissa'] = $saldo_info[2]; if ($row['myytavissa'] >= $row['haly']) { continue; } $query2 = "SELECT CONCAT(hyllyalue, '-', hyllynro, '-', hyllyvali, '-', hyllytaso ) AS tuotepaikka,\n hyllyalue AS alue,\n hyllynro AS nro,\n hyllyvali AS vali,\n hyllytaso AS taso\n FROM tuotepaikat\n WHERE tuoteno = '{$row['tuoteno']}'\n AND yhtio = '{$kukarow['yhtio']}'\n AND oletus != 'X'\n AND varasto = {$row['varasto']}"; $result2 = pupe_query($query2); $varapaikka_echo = ''; $varapaikat = array(); while ($row2 = mysql_fetch_assoc($result2)) { $saldo_info = saldo_myytavissa($row['tuoteno'], '', $row['varasto'], $kukarow['yhtio'], $row2['alue'], $row2['nro'], $row2['vali'], $row2['taso']); $row2['myytavissa'] = $saldo_info[2]; if ($row2['myytavissa'] < 1) { continue; } $varapaikka_echo .= '<tr>'; $varapaikka_echo .= '<th>'; $varapaikka_echo .= 'Varapaikka'; $varapaikka_echo .= '</th>'; $varapaikka_echo .= '<td style="color:silver;">'; $varapaikka_echo .= $row['tuoteno']; $varapaikka_echo .= '</td>'; $varapaikka_echo .= '<td>'; $varapaikka_echo .= $row2['tuotepaikka']; $varapaikka_echo .= '</td>'; $varapaikka_echo .= '<td>';
if (count($verkkokauppa_saldo_varasto) == 0) { echo "verkkokauppa_saldo_varasto pitää määritellä!\n"; exit; } // Haetaan aika jolloin tämä skripti on viimeksi ajettu $datetime_checkpoint = cron_aikaleima("MYY_STATIC_CRON"); echo date("d.m.Y @ G:i:s") . " - Aloitetaan myytavissa_static-päivitys.\n"; echo date("d.m.Y @ G:i:s") . " - Haetaan saldot.\n"; if ($datetime_checkpoint != "" and $ajetaanko_kaikki == "NO") { $muutoslisa1 = "AND tapahtuma.laadittu >= '{$datetime_checkpoint}'"; $muutoslisa2 = "AND tilausrivi.laadittu >= '{$datetime_checkpoint}'"; $muutoslisa3 = "AND tuote.muutospvm >= '{$datetime_checkpoint}'"; // Haetaan saldot tuotteille, joille on tehty tunnin sisällä tilausrivi tai tapahtuma $query = "(SELECT tapahtuma.tuoteno\n FROM tapahtuma\n JOIN tuote ON (tuote.yhtio = tapahtuma.yhtio\n AND tuote.tuoteno = tapahtuma.tuoteno\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != '')\n WHERE tapahtuma.yhtio = '{$kukarow["yhtio"]}'\n {$muutoslisa1})\n\n UNION\n\n (SELECT tilausrivi.tuoteno\n FROM tilausrivi\n JOIN tuote ON (tuote.yhtio = tilausrivi.yhtio\n AND tuote.tuoteno = tilausrivi.tuoteno\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != '')\n WHERE tilausrivi.yhtio = '{$kukarow["yhtio"]}'\n {$muutoslisa2})\n\n UNION\n\n (SELECT tuote.tuoteno\n FROM tuote\n WHERE tuote.yhtio = '{$kukarow["yhtio"]}'\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != ''\n {$muutoslisa3})\n\n ORDER BY 1"; } else { $query = "SELECT tuote.tuoteno\n FROM tuote\n WHERE tuote.yhtio = '{$kukarow["yhtio"]}'\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != ''"; } $result = pupe_query($query); while ($row = mysql_fetch_assoc($result)) { foreach ($verkkokauppa_saldo_varasto as $varasto) { $query = "SELECT hyllyalue, hyllynro, hyllyvali, hyllytaso, tunnus\n FROM tuotepaikat\n WHERE yhtio = '{$kukarow["yhtio"]}'\n AND tuoteno = '{$row["tuoteno"]}'\n AND varasto = '{$varasto}'"; $tpres = pupe_query($query); while ($tprow = mysql_fetch_assoc($tpres)) { list(, , $myytavissa) = saldo_myytavissa($row["tuoteno"], '', '', '', $tprow["hyllyalue"], $tprow["hyllynro"], $tprow["hyllyvali"], $tprow["hyllytaso"]); $query = "UPDATE tuotepaikat\n SET myytavissa_static = '{$myytavissa}'\n WHERE tunnus = '{$tprow["tunnus"]}'"; pupe_query($query); } } } // Kun kaikki onnistui, päivitetään lopuksi timestamppi talteen cron_aikaleima("MYY_STATIC_CRON", date('Y-m-d H:i:s'));
$yksikko = "PAR"; } // haetaan oletus varastopaikka $query = "select * from tuotepaikat where yhtio='{$kukarow['yhtio']}' and tuoteno='{$row['tuoteno']}' and oletus='X'"; $kores = pupe_query($query); $korow = mysql_fetch_array($kores); $hyllyalue = $korow['hyllyalue']; $hyllynro = $korow['hyllynro']; $hyllyvali = $korow['hyllyvali']; $hyllytaso = $korow['hyllytaso']; // asiakkaiden järjestelmät on paskoja if ($row['eankoodi'] == 0) { $row['eankoodi'] = ""; } // katotaan paljon myytävissä list(, , $saldo) = saldo_myytavissa($row["tuoteno"]); if ($saldo > 1) { $saldo = 1; } if ($saldo < 1) { $saldo = 0; } // tehdään tietuetta $ulos = sprintf("%-20.20s", $row['tuoteno']); $ulos .= sprintf("%-2.2s", $row['osasto']); $ulos .= sprintf("%-5.5s", $row['try']); $ulos .= sprintf("%-15.15s", $row['aleryhma']); $ulos .= sprintf("%-50.50s", $row['nimitys']); $ulos .= sprintf("%-10.10s", $row['myyntihinta']); $ulos .= sprintf("%-10.10s", $saldo); $ulos .= sprintf("%-1.1s", $hyllyalue);
$tarve_kohdevarasto = (double) $test; } if ($myyntiera == 'X') { $kokonaisluku = ceil($tarve_kohdevarasto / $pairow['myynti_era']); $test = $kokonaisluku * $pairow['myynti_era']; $tarve_kohdevarasto = (double) $test; } } if ($tarve_kohdevarasto <= 0) { continue; } // Lähdevaraston myytävissämäärä if ($lahdevyohykkeet) { list(, , $saldo_myytavissa_lahde) = saldo_myytavissa($pairow["tuoteno"], "KAIKKI", $lahdevarasto . "##" . $lahdevyohyke); } else { list(, , $saldo_myytavissa_lahde) = saldo_myytavissa($pairow["tuoteno"], "KAIKKI", $lahdevarasto); } // jos lähdevarasto on sama kuin kohdevarasto, niin silloin kohdepaikka on aina oletuspaikka, joten poistetaan sen myytävissämäärä lähdepuolelta if ($kohdevarasto == $lahdevarasto) { if ($saldo_myytavissa_kohde > 0) { $saldo_myytavissa_lahde = (double) $saldo_myytavissa_lahde - $saldo_myytavissa_kohde; } else { $saldo_myytavissa_lahde = (double) $saldo_myytavissa_lahde; } } else { $saldo_myytavissa_lahde = (double) $saldo_myytavissa_lahde; } //echo "TUOTENO: $kala $pairow[tuoteno]<br>"; //echo "MENOSSA_PAIKALLE: $menossa_paikalle<br>"; //echo "MENOSSA_VARASTOON: $menossa_varastoon<br>"; //echo "MYYTAVISSÄ_KOHDE: $saldo_myytavissa_kohde<br>";
if ($varow['maa'] != '' and $yhtiorow['varastopaikan_lippu'] != '') { echo "<td {$class} align='left' valign='top'><font class='error'><img src='{$palvelin2}pics/flag_icons/gif/" . strtolower($varow['maa']) . ".gif'> {$row['hyllyalue']} {$row['hyllynro']} {$row['hyllyvali']} {$row['hyllytaso']}</font></td>"; } elseif ($varow['maa'] != '' and strtoupper($varow['maa']) != strtoupper($yhtiorow['maa'])) { echo "<td {$class} align='left' valign='top'><font class='error'>" . strtoupper($varow['maa']) . " {$row['hyllyalue']} {$row['hyllynro']} {$row['hyllyvali']} {$row['hyllytaso']}</font></td>"; } else { echo "<td {$class} align='left' valign='top'> {$row['hyllyalue']} {$row['hyllynro']} {$row['hyllyvali']} {$row['hyllytaso']}</td>"; } } elseif (($toim != "TARJOUS" and $toim != "EXTTARJOUS" or $yhtiorow['tarjouksen_tuotepaikat'] == "") and $kukarow['extranet'] != '' and $yhtiorow['varastopaikan_lippu'] != '') { if ($varow['maa'] != '') { echo "<td {$class} align='left' valign='top'><img src='{$palvelin2}pics/flag_icons/gif/" . strtolower($varow['maa']) . ".gif'></td>"; } else { echo "<td {$class} align='left' valign='top'></td>"; } } if ($saldo_valmistuksella) { list($_saldo, $_hyllyssa, $_myytavissa) = saldo_myytavissa($row["tuoteno"], '', $row["varasto"]); echo "<td {$class} align='left' valign='top'>{$_myytavissa}</td>"; } if ($kukarow['extranet'] == '' and $tuotekyslinkki != "") { echo "<td {$class} valign='top'><a href='{$palvelin2}{$tuotekyslinkki}?" . $tuotekyslinkkilisa . "tee=Z&tuoteno=" . urlencode($row["tuoteno"]) . "&toim_kutsu={$toim}&lopetus={$tilmyy_lopetus}//from=LASKUTATILAUS'>{$row['tuoteno']}</a>"; } else { echo "<td {$class} valign='top'>{$row['tuoteno']}"; } // Näytetäänkö sarjanumerolinkki if (($row["sarjanumeroseuranta"] == "S" or $row["sarjanumeroseuranta"] == "T" or $row["sarjanumeroseuranta"] == "V" or ($row["sarjanumeroseuranta"] == "E" or $row["sarjanumeroseuranta"] == "F" or $row["sarjanumeroseuranta"] == "G") and $row["varattu"] < 0) and $row["var"] != 'P' and $row["var"] != 'T' and $row["var"] != 'U') { if ($toim == "SIIRTOLISTA" or $toim == "SIIRTOTYOMAARAYS") { $tunken1 = "siirtorivitunnus"; $tunken2 = "siirtorivitunnus"; } elseif (($toim == "VALMISTAVARASTOON" or $toim == "VALMISTAASIAKKAALLE") and $row["tyyppi"] != "V") { // Valmisteet $tunken1 = "ostorivitunnus";
$sivulaskuri++; fwrite($fh, str_replace("<SIVUNUMERO>", "{$sivulaskuri} / {$kokonaissivumaara}", $ots)); $rivit = 1; } if ($naytasaldo != '') { //katotaan mihin varastooon tilausrivillä tuotepaikka kuuluu $rivipaikka = kuuluukovarastoon($tuoterow["hyllyalue"], $tuoterow["hyllynro"]); $query = "SELECT tuote.yhtio, tuote.tuoteno, tuote.ei_saldoa, varastopaikat.tunnus varasto,\n varastopaikat.tyyppi varastotyyppi, varastopaikat.maa varastomaa,\n tuotepaikat.oletus, tuotepaikat.hyllyalue, tuotepaikat.hyllynro, tuotepaikat.hyllyvali, tuotepaikat.hyllytaso,\n concat(rpad(upper(hyllyalue), 5, '0'),lpad(upper(hyllynro), 5, '0'),lpad(upper(hyllyvali), 5, '0'),lpad(upper(hyllytaso), 5, '0')) sorttauskentta,\n varastopaikat.nimitys, if(varastopaikat.tyyppi!='', concat('(',varastopaikat.tyyppi,')'), '') tyyppi\n FROM tuote\n JOIN tuotepaikat ON (tuotepaikat.yhtio = tuote.yhtio and tuotepaikat.tuoteno = tuote.tuoteno)\n JOIN varastopaikat ON (varastopaikat.yhtio = tuotepaikat.yhtio\n AND varastopaikat.tunnus = tuotepaikat.varasto\n AND varastopaikat.tunnus = '{$rivipaikka}')\n WHERE tuote.yhtio = '{$kukarow['yhtio']}'\n AND tuote.tuoteno = '{$tuoterow['tuoteno']}'\n ORDER BY tuotepaikat.oletus DESC, varastopaikat.nimitys, sorttauskentta"; $sresult = pupe_query($query); $rivipaikkahyllyssa = 0; $rivivarastohyllyssa = 0; $rivipaikkasaldo = 0; $rivivarastosaldo = 0; if (mysql_num_rows($sresult) > 0) { while ($saldorow = mysql_fetch_assoc($sresult)) { list($saldo, $hyllyssa, $myytavissa) = saldo_myytavissa($saldorow["tuoteno"], '', '', '', $saldorow["hyllyalue"], $saldorow["hyllynro"], $saldorow["hyllyvali"], $saldorow["hyllytaso"], '', '', $saldorow["era"]); if ($saldorow['hyllyalue'] == $tuoterow['hyllyalue'] and $saldorow['hyllynro'] == $tuoterow['hyllynro'] and $saldorow['hyllyvali'] == $tuoterow['hyllyvali'] and $saldorow['hyllytaso'] == $tuoterow['hyllytaso']) { $rivipaikkahyllyssa += $hyllyssa; $rivipaikkasaldo += $saldo; } $rivivarastohyllyssa += $hyllyssa; $rivivarastosaldo += $saldo; } } } else { $rivipaikkahyllyssa = 0; $rivivarastohyllyssa = 0; $rivipaikkasaldo = 0; $rivivarastosaldo = 0; } if ($tuoterow["inventointiaika"] == '0000-00-00 00:00:00') {
if (!empty($alusta_tunnus) and $yhtiorow['suuntalavat'] != "") { $res = suuntalavan_tuotteet(array($alusta_tunnus), $liitostunnus, "", "", "", $tilausrivi); $row = mysql_fetch_assoc($res); } elseif (isset($tullaan) and $tullaan == 'tuotteen_hyllypaikan_muutos') { $query = "SELECT tuotepaikat.*, tuote.yksikko\n FROM tuotepaikat\n JOIN tuote ON (tuote.yhtio = tuotepaikat.yhtio AND tuote.tuoteno = tuotepaikat.tuoteno)\n WHERE tuotepaikat.yhtio = '{$kukarow['yhtio']}'\n AND tuotepaikat.tunnus = '{$tuotepaikan_tunnus}'"; $res = pupe_query($query); $row = mysql_fetch_assoc($res); } else { $query = "SELECT\n tilausrivi.*,\n tuotteen_toimittajat.toim_tuoteno\n FROM tilausrivi\n LEFT JOIN tuotteen_toimittajat on (tuotteen_toimittajat.tuoteno=tilausrivi.yhtio and tuotteen_toimittajat.tuoteno=tilausrivi.tuoteno)\n WHERE tilausrivi.tunnus = '{$tilausrivi}'\n AND tilausrivi.yhtio = '{$kukarow['yhtio']}'"; $row = mysql_fetch_assoc(pupe_query($query)); } $_varasto = kuuluukovarastoon($row['hyllyalue'], $row['hyllynro']); $onko_varaston_hyllypaikat_kaytossa = onko_varaston_hyllypaikat_kaytossa($_varasto); if (!isset($tullaan) or $tullaan != 'tuotteen_hyllypaikan_muutos') { // Tarkistetaan tuotteen saldo list($saldo['saldo'], $saldo['hyllyssa'], $saldo['myytavissa']) = saldo_myytavissa($row['tuoteno'], '', '', '0', $row['hyllyalue'], $row['hyllynro'], $row['hyllyvali'], $row['hyllytaso']); $saldo['myytavissa'] = $saldo['myytavissa'] > 0 ? $saldo['myytavissa'] : 0; } if (isset($submit) and trim($submit) != '') { switch ($submit) { case 'submit': // Parsitaan uusi tuotepaikka // Jos tuotepaikka on luettu viivakoodina, muotoa (C21 045) tai (21C 03V) if (preg_match('/^([a-zåäö#0-9]{2,4} [a-zåäö#0-9]{2,4})/i', $tuotepaikka)) { // Pilkotaan viivakoodilla luettu tuotepaikka välilyönnistä list($alku, $loppu) = explode(' ', $tuotepaikka); // Mätsätään numerot ja kirjaimet erilleen preg_match_all('/([0-9]+)|([a-z]+)/i', $alku, $alku); preg_match_all('/([0-9]+)|([a-z]+)/i', $loppu, $loppu); // Hyllyn tiedot oikeisiin muuttujiin $hyllyalue = $alku[0][0];
$summa = 0; $edtuoteno = ""; } echo "<td>" . t_tuotteen_avainsanat($row, 'nimitys') . "</td>"; echo "<td>{$row['status']}</td>"; echo "<td>{$ryhmanimet[$a]} {$ryhmanimet[$b]} {$ryhmanimet[$c]}</td>"; // tutkaillaan myynti $query = "SELECT\n sum(if (laadittu >= '{$vva1}-{$kka1}-{$ppa1}' and laadittu <= '{$vvl1}-{$kkl1}-{$ppl1}' and var='P', tilkpl,0)) puutekpl1,\n sum(if (laadittu >= '{$vva2}-{$kka2}-{$ppa2}' and laadittu <= '{$vvl2}-{$kkl2}-{$ppl2}' and var='P', tilkpl,0)) puutekpl2,\n sum(if (laadittu >= '{$vva3}-{$kka3}-{$ppa3}' and laadittu <= '{$vvl3}-{$kkl3}-{$ppl3}' and var='P', tilkpl,0)) puutekpl3,\n sum(if (laadittu >= '{$vva4}-{$kka4}-{$ppa4}' and laadittu <= '{$vvl4}-{$kkl4}-{$ppl4}' and var='P', tilkpl,0)) puutekpl4,\n sum(if (laskutettuaika >= '{$vva1}-{$kka1}-{$ppa1}' and laskutettuaika <= '{$vvl1}-{$kkl1}-{$ppl1}' ,kpl,0)) kpl1,\n sum(if (laskutettuaika >= '{$vva2}-{$kka2}-{$ppa2}' and laskutettuaika <= '{$vvl2}-{$kkl2}-{$ppl2}' ,kpl,0)) kpl2,\n sum(if (laskutettuaika >= '{$vva3}-{$kka3}-{$ppa3}' and laskutettuaika <= '{$vvl3}-{$kkl3}-{$ppl3}' ,kpl,0)) kpl3,\n sum(if (laskutettuaika >= '{$vva4}-{$kka4}-{$ppa4}' and laskutettuaika <= '{$vvl4}-{$kkl4}-{$ppl4}' ,kpl,0)) kpl4,\n sum(if (laskutettuaika >= '{$vva1}-{$kka1}-{$ppa1}' and laskutettuaika <= '{$vvl1}-{$kkl1}-{$ppl1}' and\n concat(rpad(upper('{$row['alkuhyllyalue']}') ,5,'0'),lpad(upper('{$row['alkuhyllynro']}') ,5,'0')) <= concat(rpad(upper(hyllyalue) ,5,'0'),lpad(upper(hyllynro) ,5,'0')) and\n concat(rpad(upper('{$row['loppuhyllyalue']}') ,5,'0'),lpad(upper('{$row['loppuhyllynro']}') ,5,'0')) >= concat(rpad(upper(hyllyalue) ,5,'0'),lpad(upper(hyllynro) ,5,'0')), kpl, 0)) varastonkpl1,\n sum(if (laskutettuaika >= '{$vva2}-{$kka2}-{$ppa2}' and laskutettuaika <= '{$vvl2}-{$kkl2}-{$ppl2}' and\n concat(rpad(upper('{$row['alkuhyllyalue']}') ,5,'0'),lpad(upper('{$row['alkuhyllynro']}') ,5,'0')) <= concat(rpad(upper(hyllyalue) ,5,'0'),lpad(upper(hyllynro) ,5,'0')) and\n concat(rpad(upper('{$row['loppuhyllyalue']}') ,5,'0'),lpad(upper('{$row['loppuhyllynro']}') ,5,'0')) >= concat(rpad(upper(hyllyalue) ,5,'0'),lpad(upper(hyllynro) ,5,'0')), kpl, 0)) varastonkpl2,\n sum(if (laskutettuaika >= '{$vva3}-{$kka3}-{$ppa3}' and laskutettuaika <= '{$vvl3}-{$kkl3}-{$ppl3}' and\n concat(rpad(upper('{$row['alkuhyllyalue']}') ,5,'0'),lpad(upper('{$row['alkuhyllynro']}') ,5,'0')) <= concat(rpad(upper(hyllyalue) ,5,'0'),lpad(upper(hyllynro) ,5,'0')) and\n concat(rpad(upper('{$row['loppuhyllyalue']}') ,5,'0'),lpad(upper('{$row['loppuhyllynro']}') ,5,'0')) >= concat(rpad(upper(hyllyalue) ,5,'0'),lpad(upper(hyllynro) ,5,'0')), kpl, 0)) varastonkpl3,\n sum(if (laskutettuaika >= '{$vva4}-{$kka4}-{$ppa4}' and laskutettuaika <= '{$vvl4}-{$kkl4}-{$ppl4}' and\n concat(rpad(upper('{$row['alkuhyllyalue']}') ,5,'0'),lpad(upper('{$row['alkuhyllynro']}') ,5,'0')) <= concat(rpad(upper(hyllyalue) ,5,'0'),lpad(upper(hyllynro) ,5,'0')) and\n concat(rpad(upper('{$row['loppuhyllyalue']}') ,5,'0'),lpad(upper('{$row['loppuhyllynro']}') ,5,'0')) >= concat(rpad(upper(hyllyalue) ,5,'0'),lpad(upper(hyllynro) ,5,'0')), kpl, 0)) varastonkpl4\n FROM tilausrivi use index (yhtio_tyyppi_tuoteno_laskutettuaika)\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n and tyyppi = 'L'\n and tuoteno = '{$row['tuoteno']}'\n and ((laskutettuaika >= '{$apvm}' and laskutettuaika <= '{$lpvm}') or laskutettuaika = '0000-00-00')"; $result = pupe_query($query); $summarow = mysql_fetch_array($result); echo "<td align='right'>{$summarow['puutekpl1']}</td>"; // saldo myytävissa kaikki varastot list(, , $saldo) = saldo_myytavissa($row["tuoteno"], "KAIKKI"); echo "<td align='right'>" . sprintf("%.2f", $saldo) . "<br>"; // saldo myytävissa tämä varasto list(, , $saldo) = saldo_myytavissa($row["tuoteno"], "KAIKKI", $row["tunnus"]); echo sprintf("%.2f", $saldo) . "</td>"; echo "<td align='right' class='tooltip' id='{$row['paikkatunnus']}'>{$summarow['kpl1']}<br>{$summarow['varastonkpl1']}</td>"; echo "<td align='right'>{$row['halytysraja']}</td>"; echo "</tr>\n"; // tehään popup divi myynneistä $divit .= "<div id='div_{$row['paikkatunnus']}' class='popup' style='width:250px;'>"; $divit .= "<table style='width:250px;'>"; $divit .= "<tr><th nowrap>" . t("Kok.Myynti 1") . "</th>"; $divit .= "<td align='right'>{$summarow['kpl1']}</td></tr>"; $divit .= "<tr><th nowrap>" . t("Var.Myynti 1") . "</th>"; $divit .= "<td align='right'>{$summarow['varastonkpl1']}</td></tr>"; $divit .= "<tr><th nowrap>" . t("Kok.Myynti 2") . "</th>"; $divit .= "<td align='right'>{$summarow['kpl2']}</td></tr>"; $divit .= "<tr><th nowrap>" . t("Var.Myynti 2") . "</th>"; $divit .= "<td align='right'>{$summarow['varastonkpl2']}</td></tr>";
echo "<td><input type='submit' name='submit_button' id='submit_button' value = 'Etsi'></td>"; echo "</tr>"; echo "</table><br/>"; echo "</form>"; if ($lisa != "") { $query = "SELECT\n tuoteno,\n nimitys,\n myyntihinta\n FROM tuote\n WHERE yhtio = '{$kukarow["yhtio"]}'\n {$lisa}\n AND (status not in ('P','X') or (SELECT sum(saldo) FROM tuotepaikat WHERE tuotepaikat.yhtio=tuote.yhtio and tuotepaikat.tuoteno=tuote.tuoteno and tuotepaikat.saldo > 0) > 0)\n and tuotetyyppi NOT IN ('A', 'B')\n and ei_saldoa = ''\n and hinnastoon != 'E'\n {$ei_try}\n ORDER BY tuoteno, nimitys\n Limit 500"; $tuoteres = pupe_query($query); if (mysql_num_rows($tuoteres) > 0) { echo "<table>"; echo "<tr>"; echo "<th>Tuotekoodi</th>"; echo "<th>Nimitys</th>"; echo "<th>Hinta</th>"; echo "<th>Saldo</th>"; echo "</tr>"; while ($tuoterow = mysql_fetch_assoc($tuoteres)) { list(, , $myytavissa) = saldo_myytavissa($tuoterow["tuoteno"], "", $varastot); echo "<tr>"; echo "<td>{$tuoterow["tuoteno"]}</td>"; echo "<td>{$tuoterow["nimitys"]}</td>"; echo "<td align='right'>" . sprintf('%0.2f', round($tuoterow["myyntihinta"], $yhtiorow["hintapyoristys"])) . "</td>"; echo "<td align='right'>{$myytavissa}</td>"; echo "</tr>"; } echo "</table>"; } else { echo "Ei tuotteita!"; } } else { echo "Anna hakuehto!"; }
$query = "SELECT\n sarjanumeroseuranta.sarjanumero era,\n tuote.ei_saldoa,\n tuote.tuoteno,\n tuote.vakkoodi,\n tuote.yhtio,\n tuotepaikat.hyllyalue,\n tuotepaikat.hyllynro,\n tuotepaikat.hyllytaso,\n tuotepaikat.hyllyvali,\n tuotepaikat.oletus,\n varastopaikat.erikoistoimitus_alarajasumma,\n varastopaikat.maa varastomaa,\n varastopaikat.nimitys,\n varastopaikat.tunnus varasto,\n varastopaikat.tyyppi varastotyyppi,\n concat(rpad(upper(tuotepaikat.hyllyalue), 5, '0'),lpad(upper(tuotepaikat.hyllynro), 5, '0'),lpad(upper(tuotepaikat.hyllyvali), 5, '0'),lpad(upper(tuotepaikat.hyllytaso), 5, '0')) sorttauskentta,\n if(varastopaikat.tyyppi!='', concat('(',varastopaikat.tyyppi,')'), '') tyyppi,\n {$pepvmlisa1}\n group_concat(sarjanumeroseuranta.ostorivitunnus) ostorivitunnus\n FROM tuote\n JOIN tuotepaikat ON tuotepaikat.yhtio = tuote.yhtio and tuotepaikat.tuoteno = tuote.tuoteno\n JOIN varastopaikat ON (varastopaikat.yhtio = tuotepaikat.yhtio\n AND varastopaikat.tunnus = tuotepaikat.varasto)\n JOIN sarjanumeroseuranta ON sarjanumeroseuranta.yhtio = tuote.yhtio\n and sarjanumeroseuranta.tuoteno = tuote.tuoteno\n and sarjanumeroseuranta.hyllyalue = tuotepaikat.hyllyalue\n and sarjanumeroseuranta.hyllynro = tuotepaikat.hyllynro\n and sarjanumeroseuranta.hyllyvali = tuotepaikat.hyllyvali\n and sarjanumeroseuranta.hyllytaso = tuotepaikat.hyllytaso\n and sarjanumeroseuranta.myyntirivitunnus = 0\n and sarjanumeroseuranta.era_kpl != 0\n WHERE tuote.yhtio = '{$kukarow['yhtio']}'\n and tuote.tuoteno = '{$row['puhdas_tuoteno']}'\n GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 {$pepvmlisa2}\n ORDER BY tuotepaikat.oletus DESC, varastopaikat.nimitys, sorttauskentta"; $omavarastores = pupe_query($query); $paikat = "<option value=''>" . t("Valitse erä") . "</option>"; $selpaikka = ""; $query = "SELECT sarjanumeroseuranta.sarjanumero era, sarjanumeroseuranta.parasta_ennen\n FROM sarjanumeroseuranta\n WHERE yhtio = '{$kukarow['yhtio']}'\n and tuoteno = '{$row['puhdas_tuoteno']}'\n and {$tunken1} = '{$row['tunnus']}'\n LIMIT 1"; $sarjares = pupe_query($query); $sarjarow = mysql_fetch_assoc($sarjares); echo t("Erä") . ": "; while ($alkurow = mysql_fetch_assoc($omavarastores)) { if ($alkurow["hyllyalue"] != "!!M" and ($alkurow["varastotyyppi"] != "E" or $laskurow["varasto"] == $alkurow["varasto"] or $alkurow["hyllyalue"] == $row["hyllyalue"] and $alkurow["hyllynro"] == $row["hyllynro"] and $alkurow["hyllyvali"] == $row["hyllyvali"] and $alkurow["hyllytaso"] == $row["hyllytaso"])) { if ($yhtiorow["saldo_kasittely"] == "T") { $saldoaikalisa = date("Y-m-d"); } else { $saldoaikalisa = ""; } list($saldo, $hyllyssa, $myytavissa) = saldo_myytavissa($row["puhdas_tuoteno"], '', '', '', $alkurow["hyllyalue"], $alkurow["hyllynro"], $alkurow["hyllyvali"], $alkurow["hyllytaso"], $laskurow["toim_maa"], $saldoaikalisa, $alkurow["era"]); $myytavissa = (double) $myytavissa; $lisa_row = array(); if ($alkurow["ostorivitunnus"] != "" and in_array($row["sarjanumeroseuranta"], array("E", "F", "G"))) { //Jos erä on keksitty käsin täältä keräyksestä $query = "SELECT tyyppi, (varattu+kpl+jt) kpl, tunnus, laskutettu\n FROM tilausrivi\n WHERE yhtio = '{$kukarow['yhtio']}'\n and tuoteno = '{$row['puhdas_tuoteno']}'\n and tunnus in ({$alkurow['ostorivitunnus']})"; $lisa_res = pupe_query($query); $lisa_row = mysql_fetch_assoc($lisa_res); } // varmistetaan, että tämä erä on käytettävissä, eli ostorivitunnus pointtaa ostoriviin, hyvitysriviin tai laskutettuun myyntiriviin tai tähän riviin itsessään if (($lisa_row["tyyppi"] == "O" or $lisa_row["kpl"] < 0 or $lisa_row["laskutettu"] != "" or $lisa_row["tunnus"] == $row["tunnus"]) and (in_array($yhtiorow["puute_jt_oletus"], array('H', 'O')) or $myytavissa >= $row["varattu"] or $row["var"] != "P" and $alkurow["hyllyalue"] == $row["hyllyalue"] and $alkurow["hyllynro"] == $row["hyllynro"] and $alkurow["hyllyvali"] == $row["hyllyvali"] and $alkurow["hyllytaso"] == $row["hyllytaso"] and $sarjarow["era"] == $alkurow["era"])) { $sel = ""; if ($sarjarow["era"] == $alkurow["era"] and !in_array($row["var"], array("P", "S")) and $alkurow["hyllyalue"] == $row["hyllyalue"] and $alkurow["hyllynro"] == $row["hyllynro"] and $alkurow["hyllyvali"] == $row["hyllyvali"] and $alkurow["hyllytaso"] == $row["hyllytaso"]) { $sel = "SELECTED"; $selpaikka = "{$alkurow['hyllyalue']}#{$alkurow['hyllynro']}#{$alkurow['hyllyvali']}#{$alkurow['hyllytaso']}#{$alkurow['era']}"; } elseif (isset($_POST) and $_POST["era_new_paikka"][$row["tunnus"]] == "{$alkurow['hyllyalue']}#{$alkurow['hyllynro']}#{$alkurow['hyllyvali']}#{$alkurow['hyllytaso']}#{$alkurow['era']}") {
$query = "SELECT * from korvaavat where tuoteno='{$jtrow['tuoteno']}' and yhtio='{$kukarow['yhtio']}'"; $korvaresult = pupe_query($query); if (mysql_num_rows($korvaresult) > 0) { // tuote löytyi, joten haetaan sen id... $korvarow = mysql_fetch_assoc($korvaresult); $query = "SELECT * from korvaavat where id='{$korvarow['id']}' and tuoteno<>'{$jtrow['tuoteno']}' and yhtio='{$kukarow['yhtio']}' order by jarjestys, tuoteno"; $korva2result = pupe_query($query); if (mysql_num_rows($korva2result) > 0) { while ($krow2row = mysql_fetch_assoc($korva2result)) { $vapaana = 0; $jt_saldopvm = ""; if ($yhtiorow["saldo_kasittely"] != "") { $jt_saldopvm = date("Y-m-d"); } foreach ($varastosta as $vara) { list($saldo, $hyllyssa, $myytavissa) = saldo_myytavissa($krow2row["tuoteno"], $jtspec, $vara, "", "", "", "", "", $asiakasmaa, $jt_saldopvm); if ($saldolaskenta == "hyllysaldo") { $vapaana += $hyllyssa; } else { $vapaana += $myytavissa; } } if ($vapaana >= $jurow["jt"]) { echo "<tr class='aktiivi'>"; echo "<td><font style='color:red;'>" . t("Korvaava") . "</font></td>"; echo "<td align='left' style='vertical-align:top'>"; echo "{$krow2row['tuoteno']} ({$vapaana}) <font style='color:green;'>" . t("Riittää kaikille") . "!{$varalisa}</font><br>"; echo "</td><td colspan='9' align='left'><input type='button' value='" . t("Korvaa tuote") . " {$jtrow['tuoteno']}' onClick='javascript:update_params(\"{$jtrow['tuoteno']}\", \"{$krow2row['tuoteno']}\", \"{$jtrow['tunnus']}\");javascript:submit();'></td></tr>"; } elseif ($vapaana >= $jtrow["jt"]) { echo "<tr class='aktiivi'>"; echo "<td><font style='color:red;'>" . t("Korvaava") . "</font></td>";
if (is_object($xml)) { if (isset($xml->MessageHeader) and isset($xml->MessageHeader->MessageType) and trim($xml->MessageHeader->MessageType) == 'StockReport') { // tuki vain yhdelle Posten-varastolle $query = "SELECT *\n FROM varastopaikat\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND ulkoinen_jarjestelma = 'P'\n LIMIT 1"; $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']; } }
function hae_valmistukset_joissa_raaka_aine_ei_riita($request) { global $kukarow, $yhtiorow; $lasku_where = ""; $valmistuksen_tila = search_array_key_for_value_recursive($request['valmistuksien_tilat'], 'value', $request['valmistuksen_tila']); $lasku_where .= $valmistuksen_tila[0]['query_where']; if (isset($request['valmistuslinja']) and $request['valmistuslinja'] != '') { $lasku_where .= " AND lasku.kohde = '{$request['valmistuslinja']}'"; } $tuote_join = ""; if (!empty($request['mul_osasto'])) { $tuote_join .= " AND tuote.osasto IN ('" . implode("','", $request['mul_osasto']) . "')"; } if (!empty($request['mul_try'])) { $tuote_join .= " AND tuote.try IN ('" . implode("','", $request['mul_try']) . "')"; } if (!empty($request['mul_tme'])) { $tuote_join .= " AND tuote.tuotemerkki IN ('" . implode("','", $request['mul_tme']) . "')"; } //Haetaan valmisteet $query = "SELECT lasku.tunnus AS lasku_tunnus,\n tilausrivi.tunnus AS tilausrivi_tunnus,\n tilausrivi.tuoteno,\n tilausrivi.nimitys,\n tilausrivi.tyyppi,\n lasku.kohde as valmistuslinja,\n lasku.tila,\n lasku.alatila,\n lasku.kerayspvm,\n lasku.toimaika,\n ( SELECT toimi.nimi\n FROM tuotteen_toimittajat\n JOIN toimi\n ON ( toimi.yhtio = tuotteen_toimittajat.yhtio\n AND toimi.tunnus = tuotteen_toimittajat.liitostunnus )\n WHERE tuotteen_toimittajat.yhtio = '{$kukarow['yhtio']}'\n AND tuotteen_toimittajat.tuoteno = tilausrivi.tuoteno\n ORDER BY tuotteen_toimittajat.jarjestys ASC\n LIMIT 1\n ) AS toimittaja,\n sum(tilausrivi.varattu) AS valmistettava_kpl\n FROM lasku\n JOIN tilausrivi\n ON ( tilausrivi.yhtio = lasku.yhtio\n AND tilausrivi.otunnus = lasku.tunnus\n AND tilausrivi.tyyppi IN ('W')\n AND tilausrivi.varattu > 0)\n JOIN tuote\n ON ( tuote.yhtio = tilausrivi.yhtio\n AND tuote.tuoteno = tilausrivi.tuoteno\n AND tuote.tuotetyyppi not in ('A', 'B')\n AND tuote.ei_saldoa = ''\n {$tuote_join} )\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n AND lasku.toimaika BETWEEN '{$request['alku_pvm']}' AND '{$request['loppu_pvm']}'\n {$lasku_where}\n GROUP BY 1,2,3,4,5,6,7,8,9,10,11\n ORDER BY lasku.tunnus ASC, tilausrivi.perheid ASC, tilausrivi.tyyppi DESC"; $result = pupe_query($query); $valmistukset_joissa_raaka_aine_ei_riita = array(); while ($valmiste_rivi = mysql_fetch_assoc($result)) { //Haetaan valmisteen raaka-aineet $query = "SELECT lasku.tunnus AS lasku_tunnus,\n tilausrivi.tunnus AS tilausrivi_tunnus,\n tilausrivi.tuoteno,\n tilausrivi.nimitys,\n tilausrivi.tyyppi,\n lasku.kohde as valmistuslinja,\n lasku.tila,\n lasku.alatila,\n lasku.kerayspvm,\n lasku.toimaika,\n ( SELECT toimi.nimi\n FROM tuotteen_toimittajat\n JOIN toimi\n ON ( toimi.yhtio = tuotteen_toimittajat.yhtio\n AND toimi.tunnus = tuotteen_toimittajat.liitostunnus )\n WHERE tuotteen_toimittajat.yhtio = '{$kukarow['yhtio']}'\n AND tuotteen_toimittajat.tuoteno = tilausrivi.tuoteno\n ORDER BY tuotteen_toimittajat.jarjestys ASC\n LIMIT 1\n ) AS toimittaja,\n sum(tilausrivi.varattu) AS valmistettava_kpl\n FROM lasku\n JOIN tilausrivi\n ON ( tilausrivi.yhtio = lasku.yhtio\n AND tilausrivi.otunnus = lasku.tunnus\n AND tilausrivi.tyyppi IN ('V')\n AND tilausrivi.varattu > 0\n AND tilausrivi.otunnus = '{$valmiste_rivi['lasku_tunnus']}'\n AND tilausrivi.perheid = '{$valmiste_rivi['tilausrivi_tunnus']}' )\n JOIN tuote\n ON ( tuote.yhtio = tilausrivi.yhtio\n AND tuote.tuoteno = tilausrivi.tuoteno\n AND tuote.tuotetyyppi not in ('A', 'B')\n AND tuote.ei_saldoa = '' )\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n GROUP BY 1,2,3,4,5,6,7,8,9,10,11"; $valmistus_result = pupe_query($query); while ($valmistus_rivi = mysql_fetch_assoc($valmistus_result)) { list($saldo, $hyllyssa, $myytavissa) = saldo_myytavissa($valmistus_rivi['tuoteno']); if ($saldo < $valmistus_rivi['valmistettava_kpl']) { $valmistus_rivi['tilattu'] = hae_tilattu_kpl($valmistus_rivi['tuoteno']); $valmistus_rivi['saldo'] = $saldo; $valmistus_rivi['hyllyssa'] = $hyllyssa; $valmistus_rivi['myytavissa'] = $myytavissa; if (empty($valmistukset_joissa_raaka_aine_ei_riita[$valmiste_rivi['lasku_tunnus']]['tilausrivit'][$valmiste_rivi['tilausrivi_tunnus']])) { $valmistukset_joissa_raaka_aine_ei_riita[$valmiste_rivi['lasku_tunnus']]['tilausrivit'][$valmiste_rivi['tilausrivi_tunnus']] = $valmiste_rivi; } $valmistukset_joissa_raaka_aine_ei_riita[$valmiste_rivi['lasku_tunnus']]['tilausrivit'][$valmiste_rivi['tilausrivi_tunnus']]['raaka_aineet'][] = $valmistus_rivi; } } } return $valmistukset_joissa_raaka_aine_ei_riita; }