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>"; } } }
// tuote löytyi, joten haetaan sen id... $row = mysql_fetch_assoc($vastaresult); $id = $row['id']; $query = "SELECT * FROM vastaavat WHERE id='{$id}' AND tuoteno<>'{$tuoteno}' AND yhtio='{$kukarow['yhtio']}' ORDER BY jarjestys, tuoteno"; $vasta2result = pupe_query($query); while ($row = mysql_fetch_assoc($vasta2result)) { list($saldo, $hyllyssa, ) = saldo_myytavissa($row["tuoteno"], '', '', '', '', '', '', '', '', $saldoaikalisa); echo "<tr>"; echo "<td><a href='{$PHP_SELF}?toim={$toim}&tee=Z&tuoteno=" . urlencode($row["tuoteno"]) . "&lopetus={$lopetus}'>{$row['tuoteno']}</a></td>"; echo "<td align='right'>" . sprintf("%.2f", $saldo) . "</td>"; echo "</tr>"; } echo "</table>"; } echo "</td></tr></table><br>"; $ale_query_lisa = generoi_alekentta('M'); $tyyppilisa = $toim == "EDUSTAJA" ? " and tilausrivi.tyyppi in ('L','E','O','G','V','W','M') " : " and tilausrivi.tyyppi = 'G' "; // Tilausrivit tälle tuotteelle $query = "SELECT if (asiakas.ryhma != '', concat(lasku.nimi,' (',asiakas.ryhma,')'), lasku.nimi) nimi, lasku.tunnus, (tilausrivi.varattu+tilausrivi.jt) kpl,\n if (tilausrivi.tyyppi!='O' and tilausrivi.tyyppi!='W', tilausrivi.kerayspvm, tilausrivi.toimaika) pvm, tilausrivi.laadittu,\n varastopaikat.nimitys varasto, tilausrivi.tyyppi, lasku.laskunro, lasku.tila laskutila, lasku.tilaustyyppi, tilausrivi.var, lasku2.laskunro as keikkanro, tilausrivi.jaksotettu, tilausrivin_lisatiedot.osto_vai_hyvitys\n FROM tilausrivi use index (yhtio_tyyppi_tuoteno_laskutettuaika)\n LEFT JOIN tilausrivin_lisatiedot ON (tilausrivin_lisatiedot.yhtio=tilausrivi.yhtio and tilausrivin_lisatiedot.tilausrivitunnus=tilausrivi.tunnus)\n JOIN lasku use index (PRIMARY) ON lasku.yhtio = tilausrivi.yhtio and lasku.tunnus = tilausrivi.otunnus\n LEFT JOIN varastopaikat ON varastopaikat.yhtio = lasku.yhtio and varastopaikat.tunnus = lasku.varasto\n LEFT JOIN lasku as lasku2 ON lasku2.yhtio = tilausrivi.yhtio and lasku2.tunnus = tilausrivi.uusiotunnus\n LEFT JOIN asiakas ON asiakas.yhtio = lasku.yhtio and asiakas.tunnus = lasku.liitostunnus\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n {$tyyppilisa}\n and tilausrivi.tuoteno = '{$tuoteno}'\n and tilausrivi.laskutettuaika = '0000-00-00'\n and tilausrivi.varattu + tilausrivi.jt != 0\n and tilausrivi.var != 'P'\n ORDER BY pvm, tunnus"; $jtresult = pupe_query($query); if (mysql_num_rows($jtresult) != 0) { // Varastosaldot ja paikat echo "<font class='message'>" . t("Tuotteen tilaukset") . "</font><hr>"; $myyta = $kokonaismyytavissa; // Avoimet rivit echo "<table>"; echo "<tr>\n <th>" . t("Asiakas/Toimittaja") . "</th>\n <th>" . t("Tilaus/Saapuminen") . "</th>\n <th>" . t("Tyyppi") . "</th>\n <th>" . t("Luontiaika") . "</th>\n <th>" . t("Toim.aika") . "</th>\n <th>" . t("Määrä") . "</th>\n <th>" . t("Myytävissä") . "</th>\n </tr>"; $yhteensa = array(); $ekotettiin = 0; while ($jtrow = mysql_fetch_assoc($jtresult)) { $tyyppi = "";
if ($sahkoinen_tilausliitanta and ($yhtiorow['vastaavat_tuotteet_esitysmuoto'] == 'S' or $yhtiorow['vastaavat_tuotteet_esitysmuoto'] == 'A')) { $style = "width: 15px; height: 15px; display: inline-table; border-radius: 50%; -webkit-border-radius: 50%; -moz-border-radius: 50%;"; echo " <span class='tooltip' id='color_tooltip'><span style='{$style} background-color: #5D2; margin-right: 5px;'></span><span style='{$style} background-color: #FCF300; margin-right: 5px;'></span><span style='{$style} background-color: #E66; margin-right: 5px;'></span></span></a>"; echo "<div id='div_color_tooltip' class='popup' style='width: 300px; line-height: 15px; height: 60px;'>"; echo "<table>"; echo "<tr><td class='back'><span style='{$style} background-color: #5D2;'></span></td><td class='back'><span style='float: right'>", t("kysytty määrä löytyy"), "</span></td></tr>"; echo "<tr><td class='back'><span style='{$style} background-color: #FCF300;'></span></td><td class='back'><span style='float: right;'>", t("osa kysytystä määrästä löytyy"), "</span></td></tr>"; echo "<tr><td class='back'><span style='{$style} background-color: #E66'></span></td><td class='back'><span style='float: right;'>", t("kysyttyä määrää ei löydy"), "</span></td></tr>"; echo "<tr><td class='back'><img src='{$palvelin2}pics/lullacons/alert.png' /></td><td class='back'><span style='float: right;'>", t("kysyttyä tuotetta ei löydy"), "</span></td></tr>"; echo "</table>"; echo "</div>"; } // katotaan miten halutaan sortattavan $sorttauskentta = generoi_sorttauskentta($yhtiorow["tilauksen_jarjestys"]); //"ei_erikoisale" koska rivillä ei haluta vähentää erikoisalea hinnasta, vaan se näytetään erikseen yhteenvedossa $query_ale_lisa = generoi_alekentta("O", '', 'ei_erikoisale'); $ale_query_select_lisa = generoi_alekentta_select('erikseen', 'O'); //Listataan tilauksessa olevat tuotteet $query = "SELECT\n tilausrivi.nimitys,\n concat_ws(' ', tilausrivi.hyllyalue,\n tilausrivi.hyllynro,\n tilausrivi.hyllyvali,\n tilausrivi.hyllytaso) paikka,\n tilausrivi.tuoteno,\n tuotteen_toimittajat.toim_tuoteno,\n tuotteen_toimittajat.toim_nimitys,\n tuotteen_toimittajat.valuutta,\n tilausrivi.tilkpl tilattu,\n round(tilausrivi.tilkpl\n * if (tuotteen_toimittajat.tuotekerroin = 0\n OR tuotteen_toimittajat.tuotekerroin is NULL,\n 1, tuotteen_toimittajat.tuotekerroin),\n 4) tilattu_ulk,\n round((tilausrivi.varattu + tilausrivi.jt)\n * tilausrivi.hinta\n * if (tuotteen_toimittajat.tuotekerroin = 0\n OR tuotteen_toimittajat.tuotekerroin IS NULL,\n 1,\n tuotteen_toimittajat.tuotekerroin)\n * {$query_ale_lisa}, '{$yhtiorow['hintapyoristys']}') rivihinta,\n tilausrivi.alv,\n tilausrivi.toimaika,\n tilausrivi.kerayspvm,\n tilausrivi.uusiotunnus,\n tilausrivi.tunnus,\n tilausrivi.perheid,\n tilausrivi.perheid2,\n tilausrivi.hinta,\n {$ale_query_select_lisa}\n tilausrivi.varattu varattukpl,\n tilausrivi.kommentti,\n {$sorttauskentta},\n tilausrivi.var,\n tilausrivi.var2,\n tilausrivi.jaksotettu,\n tilausrivi.yksikko,\n tuotteen_toimittajat.toim_yksikko,\n tuote.tuotemassa,\n tuote.kehahin keskihinta,\n tuote.sarjanumeroseuranta,\n tuotteen_toimittajat.ostohinta,\n if(tuotteen_toimittajat.osto_era = 0, 1, tuotteen_toimittajat.osto_era) AS osto_era,\n tuotteen_toimittajat.valuutta,\n tuotteen_toimittajat.tunnus as tt_tunnus,\n tilausrivi.erikoisale,\n tilausrivi.ale1,\n tilausrivi.ale2,\n tilausrivi.ale3,\n tilausrivin_lisatiedot.tilausrivitunnus,\n tilausrivin_lisatiedot.tilausrivilinkki,\n tilausrivi.vahvistettu_maara,\n tilausrivi.vahvistettu_kommentti,\n tilausrivi.hinta_alkuperainen\n FROM tilausrivi\n LEFT JOIN tuote ON tilausrivi.yhtio = tuote.yhtio\n AND tilausrivi.tuoteno = tuote.tuoteno\n LEFT JOIN tuotteen_toimittajat ON tuote.yhtio = tuotteen_toimittajat.yhtio\n AND tuote.tuoteno = tuotteen_toimittajat.tuoteno\n AND tuotteen_toimittajat.liitostunnus = '{$laskurow['liitostunnus']}'\n LEFT JOIN tilausrivin_lisatiedot ON (tilausrivin_lisatiedot.yhtio = tilausrivi.yhtio\n AND tilausrivin_lisatiedot.tilausrivilinkki > 0\n AND tilausrivin_lisatiedot.tilausrivilinkki = tilausrivi.tunnus)\n WHERE tilausrivi.otunnus = '{$kukarow['kesken']}'\n and tilausrivi.yhtio = '{$kukarow['yhtio']}'\n and tilausrivi.tyyppi = 'O'\n ORDER BY sorttauskentta {$yhtiorow['tilauksen_jarjestys_suunta']}, tilausrivi.tunnus"; $presult = pupe_query($query); $rivienmaara = mysql_num_rows($presult); if ($rivienmaara > 0) { echo "<table><tr>"; echo "<th>#</th>"; echo "<th align='left'>" . t("Nimitys") . "</th>"; echo "<th align='left'>" . t("Paikka") . "</th>"; echo "<th align='left'>" . t("Tuote") . "</th>"; echo "<th align='left'>" . t("Toim Tuote") . "</th>"; echo "<th align='left'>" . t("Määrä") . "<br>" . t("Määrä/Ulk") . "</th>"; echo "<th align='left'>" . t("Hinta") . "</th>"; for ($alepostfix = 1; $alepostfix <= $yhtiorow['oston_alekentat']; $alepostfix++) {
function ennakkolaskuta($tunnus) { global $kukarow, $yhtiorow; ///* Etsitään laskun kaikki tiedot jolle maksusopimus on tehty */// $query = "SELECT *\n FROM lasku\n WHERE yhtio = '{$kukarow['yhtio']}'\n and tunnus = '{$tunnus}'\n and tila in ('L','N','R')\n and alatila != 'X'"; $stresult = pupe_query($query); if (mysql_num_rows($stresult) == 0) { echo "Otsikkoa '{$tunnus}' ei löytynyt, tai se on väärässä tilassa."; return 0; } $laskurow = mysql_fetch_assoc($stresult); // Lasku voi mennä myös kaukomaille, joten haetaan tämän asiakkaan kieli.. $query = "SELECT kieli from asiakas WHERE yhtio = '{$kukarow['yhtio']}' and tunnus='{$laskurow['liitostunnus']}'"; $kielires = pupe_query($query); $kielirow = mysql_fetch_assoc($kielires); if ($debug == 1) { echo t("Perusotsikko löytyi") . " {$laskurow['nimi']}<br>"; } // Onko sopimuksella vielä jotain ennakkolaskutettavaa $query = "SELECT yhtio\n FROM maksupositio\n WHERE yhtio = '{$kukarow['yhtio']}'\n and otunnus = '{$tunnus}'\n and uusiotunnus = 0"; $posres = pupe_query($query); if (mysql_num_rows($posres) <= 1) { echo t("VIRHE: Tilauksella ei ole ennakkolaskutettavia positioita!") . "<br>"; return 0; } // tarkistetaan että meillä on jotain järkevää laskutettavaa $query = "SELECT *\n FROM maksupositio\n WHERE yhtio = '{$kukarow['yhtio']}'\n and otunnus = '{$tunnus}'\n and uusiotunnus = 0\n ORDER BY tunnus\n LIMIT 1"; $posres = pupe_query($query); $posrow = mysql_fetch_assoc($posres); if ($debug == 1) { echo t("Löydettiin maksupositio") . " {$posrow['tunnus']}, {$posrow['osuus']} %, {$posrow['maksuehto']}<br>"; } if ($posrow["summa"] <= 0 or $posrow["maksuehto"] == 0 or (int) $posrow["tunnus"] == 0) { echo t("VIRHE: laskutusposition summa on nolla tai sen alle. Korjaa tämä!") . "<br>"; return 0; } // Tilausrivin kommentti-kenttään menevä kommentti $query = "SELECT\n sum(if (uusiotunnus > 0, 1, 0)) laskutettu,\n count(*) yhteensa\n FROM maksupositio\n WHERE yhtio = '{$kukarow['yhtio']}'\n and otunnus = '{$tunnus}'"; $abures = pupe_query($query); $aburow = mysql_fetch_assoc($abures); $lahteva_lasku = $aburow["laskutettu"] + 1 . "/" . $aburow["yhteensa"]; // tehdään vanhasta laskusta 1:1 kopio... $query = "INSERT INTO lasku SET "; for ($i = 0; $i < mysql_num_fields($stresult); $i++) { $fieldname = mysql_field_name($stresult, $i); // paitsi tilaan laitetaan N if ($fieldname == 'tila') { $query .= "tila='N',"; } elseif ($fieldname == 'alatila') { $query .= "alatila='',"; } elseif ($fieldname == 'ketjutus') { $query .= "ketjutus='o',"; } elseif ($fieldname == 'tilaustyyppi') { if (strtoupper($laskurow["tilaustyyppi"]) == "A") { $query .= "tilaustyyppi='A',"; } else { $query .= "tilaustyyppi='L',"; } } elseif ($fieldname == 'laatija') { $query .= "laatija='{$kukarow['kuka']}',"; } elseif ($fieldname == 'eilahetetta') { $query .= "eilahetetta='',"; } elseif ($fieldname == 'kerayspvm' or $fieldname == 'luontiaika' or $fieldname == 'toimaika') { $query .= $fieldname . "=now(),"; } elseif ($fieldname == 'kapvm' or $fieldname == 'tapvm' or $fieldname == 'olmapvm' or $fieldname == 'summa' or $fieldname == 'kasumma' or $fieldname == 'hinta' or $fieldname == 'kate' or $fieldname == 'arvo' or $fieldname == 'maksuaika' or $fieldname == 'lahetepvm' or $fieldname == 'viite' or $fieldname == 'laskunro' or $fieldname == 'mapvm' or $fieldname == 'tilausvahvistus' or $fieldname == 'viikorkoeur' or $fieldname == 'tullausnumero' or $fieldname == 'laskutuspvm' or $fieldname == 'laskuttaja' or $fieldname == 'laskutettu' or $fieldname == 'lahetepvm' or $fieldname == 'maksaja' or $fieldname == 'maksettu' or $fieldname == 'maa_maara' or $fieldname == 'kuljetusmuoto' or $fieldname == 'kauppatapahtuman_luonne' or $fieldname == 'sisamaan_kuljetus' or $fieldname == 'sisamaan_kuljetusmuoto' or $fieldname == 'poistumistoimipaikka' or $fieldname == 'vanhatunnus' or $fieldname == 'poistumistoimipaikka_koodi') { $query .= $fieldname . "='',"; } elseif ($fieldname == 'kate_korjattu') { $query .= $fieldname . " = NULL,"; } elseif ($fieldname == 'maksuehto') { $query .= "maksuehto = '{$posrow['maksuehto']}',"; } elseif ($fieldname == 'erpcm') { if ($posrow["erpcm"] != '0000-00-00') { $query .= "erpcm = '{$posrow['erpcm']}',"; } else { $query .= "erpcm = '0000-00-00',"; } } elseif ($fieldname == 'clearing') { $query .= "clearing = 'ENNAKKOLASKU',"; } elseif ($fieldname == 'jaksotettu') { // Käännetän ennakkolaskun jaksotettukenttä negatiiviseksi jotta me löydetään ne yksiselitteisesti, // mutta kuitenkin niin, etteivät ne sekoitu maksusopimuksen alkuperäisiin tilauksiin $query .= "jaksotettu = '" . $laskurow['jaksotettu'] * -1 . "',"; } elseif ($fieldname == 'viesti' and !empty($yhtiorow['ennakkolaskun_tyyppi'])) { $viesti = t("Ennakkolasku", $kielirow["kieli"]) . " {$lahteva_lasku} " . t("tilaukselle", $kielirow["kieli"]) . " {$tunnus} " . t("Osuus", $kielirow["kieli"]) . " " . round($posrow["osuus"], 2) . "% "; $query .= "viesti = '" . $viesti . "',"; } elseif ($fieldname != 'tunnus') { // ja kaikki muut paitsi tunnus sellaisenaan $query .= $fieldname . " = '" . $laskurow[$fieldname] . "',"; } } $query = substr($query, 0, -1); $stresult = pupe_query($query); $id = mysql_insert_id($GLOBALS["masterlink"]); // tehdään vanhan laskun lisätiedoista 1:1 kopio... $query = "SELECT *\n FROM laskun_lisatiedot\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND otunnus = '{$tunnus}'"; $lisatiedot_result = pupe_query($query); $lisatiedot_row = mysql_fetch_assoc($lisatiedot_result); $query = "INSERT INTO laskun_lisatiedot SET "; for ($i = 0; $i < mysql_num_fields($lisatiedot_result); $i++) { $fieldname = mysql_field_name($lisatiedot_result, $i); if ($fieldname == 'laatija') { $query .= $fieldname . "='{$kukarow['kuka']}',"; } elseif ($fieldname == 'luontiaika') { $query .= $fieldname . "=now(),"; } elseif ($fieldname == 'otunnus') { $query .= $fieldname . "='{$id}',"; } elseif ($fieldname != 'tunnus') { $query .= $fieldname . "='" . $lisatiedot_row[$fieldname] . "',"; } } $query = substr($query, 0, -1); $lisatiedot_result = pupe_query($query); // tehdään vanhan laskun työmääräystidoista 1:1 kopio... $query = "SELECT *\n FROM tyomaarays\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND otunnus = '{$tunnus}'"; $lisatiedot_result = pupe_query($query); $lisatiedot_row = mysql_fetch_assoc($lisatiedot_result); $query = "INSERT INTO tyomaarays SET "; for ($i = 0; $i < mysql_num_fields($lisatiedot_result); $i++) { $fieldname = mysql_field_name($lisatiedot_result, $i); if ($fieldname == 'laatija') { $query .= $fieldname . "='{$kukarow['kuka']}',"; } elseif ($fieldname == 'luontiaika') { $query .= $fieldname . "=now(),"; } elseif ($fieldname == 'otunnus') { $query .= $fieldname . "='{$id}',"; } elseif ($fieldname != 'tunnus') { $query .= $fieldname . "='" . $lisatiedot_row[$fieldname] . "',"; } } $query = substr($query, 0, -1); $lisatiedot_result = pupe_query($query); if ($debug == 1) { echo t("Perustin laskun") . " {$laskurow['nimi']} {$id}<br>"; } $query_ale_lisa = generoi_alekentta('M'); // Lasketaan maksusopimuksen arvo verokannoittain jotta voidaan laskuttaa ennakot oikeissa alveissa // ja lisätään ennakkolaskutusrivi laskulle, vain jaksotetut rivit! $query = "SELECT\n sum(if (tilausrivi.jaksotettu=lasku.jaksotettu, tilausrivi.hinta / if ('{$yhtiorow['alv_kasittely']}' = '' and tilausrivi.alv < 500, (1+tilausrivi.alv/100), 1) * (tilausrivi.varattu+tilausrivi.jt) * {$query_ale_lisa}, 0)) jaksotettavaa\n FROM lasku\n JOIN tilausrivi ON tilausrivi.yhtio = lasku.yhtio and tilausrivi.otunnus = lasku.tunnus and tilausrivi.tyyppi = 'L' and (tilausrivi.varattu+tilausrivi.jt) > 0 and tilausrivi.jaksotettu=lasku.jaksotettu\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n and lasku.jaksotettu = '{$tunnus}'\n GROUP by lasku.jaksotettu"; $result = pupe_query($query); $sumrow = mysql_fetch_assoc($result); if ($yhtiorow['ennakkolaskun_tyyppi'] == 'E') { $alet = generoi_alekentta_select('erikseen', 'M'); $query = "SELECT\n tilausrivi.tuoteno,\n tilausrivi.nimitys,\n tilausrivi.kommentti,\n tilausrivi.varattu,\n tilausrivi.tilkpl,\n {$alet}\n if (tilausrivi.jaksotettu=lasku.jaksotettu, tilausrivi.hinta / if ('{$yhtiorow['alv_kasittely']}' = '' and tilausrivi.alv < 500, (1+tilausrivi.alv/100), 1), 0) summa,\n if (tilausrivi.alv >= 600 or tilausrivi.alv < 500, tilausrivi.alv, 0) alv\n FROM lasku\n JOIN tilausrivi ON (tilausrivi.yhtio = lasku.yhtio and tilausrivi.otunnus = lasku.tunnus and tilausrivi.tyyppi = 'L' and (tilausrivi.varattu + tilausrivi.jt) > 0 and tilausrivi.jaksotettu = lasku.jaksotettu)\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n and lasku.jaksotettu = '{$tunnus}'"; } else { $query = "SELECT\n sum(if (tilausrivi.jaksotettu=lasku.jaksotettu, tilausrivi.hinta / if ('{$yhtiorow['alv_kasittely']}' = '' and tilausrivi.alv < 500, (1+tilausrivi.alv/100), 1) * (tilausrivi.varattu+tilausrivi.jt) * {$query_ale_lisa}, 0)) summa,\n if (tilausrivi.alv >= 600 or tilausrivi.alv < 500, tilausrivi.alv, 0) alv\n FROM lasku\n JOIN tilausrivi ON (tilausrivi.yhtio = lasku.yhtio and tilausrivi.otunnus = lasku.tunnus and tilausrivi.tyyppi = 'L' and (tilausrivi.varattu + tilausrivi.jt) > 0 and tilausrivi.jaksotettu = lasku.jaksotettu)\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n and lasku.jaksotettu = '{$tunnus}'\n GROUP BY lasku.jaksotettu, alv"; } $sresult = pupe_query($query); $tot = 0; if ($kielirow["kieli"] == "") { $kielirow["kieli"] = "fi"; } if (mysql_num_rows($sresult) == 0) { $nimitys = t($posrow["kuvaus"], $kielirow["kieli"]); $rivikommentti = t("Ennakkolasku", $kielirow["kieli"]) . " {$lahteva_lasku} " . t("tilaukselle", $kielirow["kieli"]) . " {$tunnus} " . t("Osuus", $kielirow["kieli"]) . " " . round($posrow["osuus"], 2) . "% "; if ($posrow["lisatiedot"] != "") { $rivikommentti .= "\n " . $posrow["lisatiedot"]; } echo "<font class = 'error'>" . t("VIRHE: Ennakkolaskulla ei ole yhtään jaksotettua tilausriviä!") . " {$tunnus}</font><br>"; echo "<font class = 'message'>" . t("Käy tekemässä ennakkolasku manuaalisesti. Ennakkolaskulle perustetun laskun tunnus on") . " {$id}</font><br>"; echo "<font class = 'message'>" . t("Ennakkolaskutuksen tuotenumero on") . " {$yhtiorow['ennakkomaksu_tuotenumero']}</font><br><br>"; $query = "INSERT into tilausrivi (hinta, netto, varattu, tilkpl, otunnus, tuoteno, nimitys, yhtio, tyyppi, alv, kommentti, laatija, laadittu) values\n ('0', 'N', '1', '1', '{$id}', '{$yhtiorow['ennakkomaksu_tuotenumero']}', '{$nimitys}', '{$kukarow['yhtio']}', 'L', '{$laskurow['alv']}', '{$rivikommentti}', '{$kukarow['kuka']}', now())"; $addtil = pupe_query($query); } else { while ($row = mysql_fetch_assoc($sresult)) { // $summa on verollinen tai veroton riippuen yhtiön myyntihinnoista $summa = $row["summa"] / $sumrow["jaksotettavaa"] * $posrow["summa"]; if (!empty($yhtiorow['ennakkolaskun_tyyppi'])) { $nimitys = $row['tuoteno'] . ' - ' . $row['nimitys']; $rivikommentti = $row['kommentti']; } else { $nimitys = t($posrow["kuvaus"], $kielirow["kieli"]); $rivikommentti = t("Ennakkolasku", $kielirow["kieli"]) . " {$lahteva_lasku} " . t("tilaukselle", $kielirow["kieli"]) . " {$tunnus} " . t("Osuus", $kielirow["kieli"]) . " " . round($posrow["osuus"], 2) . "% "; if ($posrow["lisatiedot"] != "") { $rivikommentti .= "\n " . $posrow["lisatiedot"]; } } $varattu = $yhtiorow['ennakkolaskun_tyyppi'] == 'E' ? $row['varattu'] : 1; $tilkpl = $yhtiorow['ennakkolaskun_tyyppi'] == 'E' ? $row['tilkpl'] : 1; $ale_kentat = ""; $ale_arvot = ""; if ($yhtiorow['ennakkolaskun_tyyppi'] == 'E') { for ($i = 1; $i <= $yhtiorow['myynnin_alekentat']; $i++) { $ale_kentat .= ",ale{$i}"; $ale_arvot .= ", '" . $row["ale{$i}"] . "'"; } } $summa = round($summa, 6); $laitetaanko_netto = $yhtiorow['ennakkolaskun_tyyppi'] == 'E' ? "" : "N"; $query = "INSERT into tilausrivi (hinta, netto, varattu, tilkpl, otunnus, tuoteno, nimitys, yhtio, tyyppi, alv, kommentti, laatija, laadittu {$ale_kentat}) values\n ('{$summa}', '{$laitetaanko_netto}', '{$varattu}', '{$tilkpl}', '{$id}', '{$yhtiorow['ennakkomaksu_tuotenumero']}', '{$nimitys}', '{$kukarow['yhtio']}', 'L', '{$row['alv']}', '{$rivikommentti}', '{$kukarow['kuka']}', now() {$ale_arvot})"; $addtil = pupe_query($query); if ($debug == 1) { echo t("Lisättiin ennakkolaskuun rivi") . " {$summa} {$row['alv']} otunnus {$id}<br>"; } $tot += $summa; } echo "<font class = 'message'>" . t("Tehtiin ennakkolasku tilaukselle") . " {$tunnus} " . t("tunnus") . ": {$id} " . t("osuus") . ": {$posrow['osuus']}% " . t("summa") . ": {$tot}</font><br>"; } // Päivitetään positiolle tämän laskun tunnus $query = "UPDATE maksupositio set uusiotunnus='{$id}' where tunnus='{$posrow['tunnus']}'"; $result = pupe_query($query); // merkataan tässä vaiheessa luotu ennakkomaksu-tilaus toimitetuksi $query = "UPDATE tilausrivi\n SET toimitettu = '{$kukarow['kuka']}', toimitettuaika=now(), kerattyaika=now()\n WHERE yhtio = '{$kukarow['yhtio']}'\n and otunnus = '{$id}'"; $result = pupe_query($query); // ja päivitetään luotu ennakkomaksu-tilaus laskutusjonoon $query = "UPDATE lasku\n set tila='L', alatila='D'\n WHERE yhtio = '{$kukarow['yhtio']}'\n and tunnus = '{$id}'"; $result = pupe_query($query); return $id; }
$ppa = sprintf('%02d', (int) $ppa); $kka = sprintf('%02d', (int) $kka); $vva = sprintf('%04d', (int) $vva); $ppl = sprintf('%02d', (int) $ppl); $kkl = sprintf('%02d', (int) $kkl); $vvl = sprintf('%04d', (int) $vvl); if ($toimittajaid != '') { $toimittajaid = mysql_real_escape_string($toimittajaid); $toimittajalisa = " and toimi.tunnus = '{$toimittajaid}' "; } $query = "SELECT nimi, ytunnus, tunnus\n FROM toimi\n WHERE yhtio = '{$kukarow['yhtio']}'\n {$toimittajalisa}"; $res = pupe_query($query); echo "<table>"; $vaihtuuko_toimittaja = ''; $tunnukset = array(); $query_ale_lisa = generoi_alekentta('O'); while ($toimittajarow = mysql_fetch_assoc($res)) { $query = "SELECT count(*) riveja,\n sum(if(tilausrivi.kpl != 0, 1, 0)) riveja_varastossa,\n sum(tilausrivi.kpl+tilausrivi.varattu) kpl,\n sum(tilausrivi.kpl) kpl_varastossa,\n sum((tilausrivi.kpl+tilausrivi.varattu)*tilausrivi.hinta*{$query_ale_lisa}) arvo,\n lasku.tunnus ltunnus,\n lasku.lahetepvm,\n sum(tuote.tuotemassa*(tilausrivi.varattu+tilausrivi.kpl)) massa,\n sum(if(tuotemassa!=0, varattu+kpl, 0)) kplok,\n lasku.comments,\n lasku.valkoodi\n FROM lasku\n JOIN tilausrivi ON (tilausrivi.yhtio = lasku.yhtio and tilausrivi.otunnus = lasku.tunnus and tilausrivi.tyyppi = 'O')\n JOIN tuote ON (tuote.yhtio=tilausrivi.yhtio and tuote.tuoteno=tilausrivi.tuoteno)\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n AND lasku.tila = 'O'\n AND lasku.liitostunnus = '{$toimittajarow['tunnus']}'\n and lasku.lahetepvm >='{$vva}-{$kka}-{$ppa} 00:00:00'\n and lasku.lahetepvm <='{$vvl}-{$kkl}-{$ppl} 23:59:59'\n GROUP BY lasku.tunnus\n ORDER BY lasku.ytunnus, lasku.lahetepvm"; $tilrivi_res = pupe_query($query); if (mysql_num_rows($tilrivi_res) > 0) { $ed_tunn = ""; $yht_paino = 0; $yht_kpl = 0; $yht_varastossa_kpl = 0; $yht_rivit = 0; $yht_varastossa_rivit = 0; $yht_arvo = 0; $yht_tavara_summa = array(); $yht_kulu_summa = array(); $yht_eturahti = array(); $tilrivi_laskuri = 0;
function hae_yhteenveto_tiedot($toimittajaid = null, $toimipaikka = 0, $pp = null, $kk = null, $vv = null) { global $kukarow, $yhtiorow, $onkolaajattoimipaikat, $kaikkiliitettyyhteensa, $kaikkivarastossayhteensa, $rahti_ja_kulut, $vaihtoomaisuuslaskujayhteensa, $kululaskujayhteensa, $vaihtoomaisuuslaskujayhteensa_kulut, $kululaskujayhteensa_kulut; if (!$pp) { $pp = date('d'); } if (!$kk) { $kk = date('m'); } if (!$vv) { $vv = date('Y'); } if ($toimittajaid == null) { $toimittaja_where = ''; } else { $toimittaja_where = "AND lasku.liitostunnus = '{$toimittajaid}'"; } $toimipaikkalisa = ($onkolaajattoimipaikat and isset($toimipaikka) and $toimipaikka != 'kaikki') ? "AND lasku.yhtio_toimipaikka = '" . (int) $toimipaikka . "'" : ""; $compare_date1 = new DateTime("now"); $compare_date2 = new DateTime("{$vv}-{$kk}-{$pp}"); $comp = $compare_date1->format('Y-m-d') != $compare_date2->format('Y-m-d'); $query_ale_lisa = generoi_alekentta("O"); if ($comp) { $_groupby = "GROUP BY lasku.liitostunnus"; $_where1 = "AND lasku.alatila = ''\n AND lasku.mapvm = '0000-00-00'\n AND lasku.kohdistettu IN ('','K')"; $_where2 = "AND lasku.alatila = 'X'\n AND lasku.mapvm >= '{$vv}-{$kk}-{$pp}'\n AND lasku.kohdistettu = 'X'"; // näytetään millä toimittajilla on keskeneräisiä keikkoja $query = "SELECT\n group_concat(distinct lasku.laskunro SEPARATOR ', ') keikat,\n round(sum(IF((tilausrivi.laskutettuaika <= '{$vv}-{$kk}-{$pp}' AND tilausrivi.laskutettuaika != '0000-00-00' AND tilausrivi.kpl != 0), tilausrivi.rivihinta, 0)),2) varastossaarvo,\n ROUND(SUM(IF((tilausrivi.laskutettuaika <= '{$vv}-{$kk}-{$pp}' AND tilausrivi.laskutettuaika != '0000-00-00'), tilausrivi.kpl, 0) * tilausrivi.hinta * {$query_ale_lisa}), 2) varastoonvietyarvo,\n round(sum((tilausrivi.varattu+tilausrivi.kpl) * tilausrivi.hinta * {$query_ale_lisa}),2) kohdistettuarvo\n FROM lasku USE INDEX (yhtio_tila_mapvm)\n LEFT JOIN tilausrivi USE INDEX (uusiotunnus_index) on (tilausrivi.yhtio = lasku.yhtio and tilausrivi.uusiotunnus = lasku.tunnus and tilausrivi.tyyppi = 'O')\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n and lasku.tila = 'K'\n and lasku.vanhatunnus = 0\n AND lasku.luontiaika <= '{$vv}-{$kk}-{$pp}'\n {$toimipaikkalisa}\n {$toimittaja_where}"; $query = "( {$query}\n {$_where1}\n {$_groupby})\n UNION\n ( {$query}\n {$_where2}\n {$_groupby})"; $result_x = pupe_query($query); $kaikkiliitettyyhteensa = 0; $kaikkivarastossayhteensa = 0; $rahti_ja_kulut = 0; $vaihtoomaisuuslaskujayhteensa = 0; $kululaskujayhteensa = 0; $vaihtoomaisuuslaskujayhteensa_kulut = 0; $kululaskujayhteensa_kulut = 0; while ($row_x = mysql_fetch_assoc($result_x)) { $kaikkivarastossayhteensa += $row_x['varastossaarvo']; $kaikkiliitettyyhteensa += $row_x['kohdistettuarvo']; $rahti_ja_kulut += $row_x["varastossaarvo"] - $row_x['varastoonvietyarvo']; $query = "SELECT\n sum(if(vienti in ('C','F','I','J','K','L'), arvo * vienti_kurssi, 0)) vosumma,\n sum(if(vienti in ('C','F','I','J','K','L'), (osto_kulu + osto_rahti + osto_rivi_kulu), 0)) vosumma_kulut,\n sum(if(vienti not in ('C','F','I','J','K','L'), arvo * vienti_kurssi, 0)) kusumma,\n sum(if(vienti not in ('C','F','I','J','K','L'), (osto_kulu + osto_rahti + osto_rivi_kulu), 0)) kusumma_kulut\n FROM lasku use index (yhtio_tila_laskunro)\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tila = 'K'\n AND vanhatunnus > 0\n AND laskunro IN ({$row_x['keikat']})"; $laskuja_result = pupe_query($query); $laskuja_row = mysql_fetch_assoc($laskuja_result); $vaihtoomaisuuslaskujayhteensa += $laskuja_row["vosumma"]; $kululaskujayhteensa += $laskuja_row["kusumma"]; $vaihtoomaisuuslaskujayhteensa_kulut += $laskuja_row['vosumma_kulut']; $kululaskujayhteensa_kulut += $laskuja_row['kusumma_kulut']; } } // haetaan vaihto-omaisuus- ja huolinta/rahti- laskut joita ei oo liitetty saapumisiin $query = "SELECT\n lasku.tunnus,\n if(lasku.vienti in ('C','F','I','J','K','L'), lasku.summa * lasku.vienti_kurssi, 0) vosumma,\n if(lasku.vienti in ('B','E','H'), lasku.summa * lasku.vienti_kurssi, 0) kusumma,\n sum(if(lasku.vienti in ('C','F','I','J','K','L'), tiliointi.summa, 0)) voalvit,\n sum(if(lasku.vienti in ('B','E','H'), tiliointi.summa, 0)) kualvit\n FROM lasku\n LEFT JOIN tiliointi USE INDEX (tositerivit_index) ON (tiliointi.yhtio = lasku.yhtio and tiliointi.ltunnus = lasku.tunnus and tiliointi.tilino = '{$yhtiorow['alv']}' and tiliointi.korjattu = '' AND if(lasku.summa > 0, tiliointi.summa, tiliointi.summa*-1) > 0)\n LEFT JOIN lasku AS liitos ON liitos.yhtio = lasku.yhtio AND liitos.vanhatunnus = lasku.tunnus AND liitos.tila = 'K'\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n AND lasku.tila IN ('H','Y','M','P','Q')\n AND lasku.vienti in ('B','C','J','E','F','K','H','I','L')\n AND (liitos.tunnus IS NULL or liitos.luontiaika > '{$vv}-{$kk}-{$pp}')\n AND (lasku.tapvm <= '{$vv}-{$kk}-{$pp}' AND lasku.tapvm >= date_sub('{$vv}-{$kk}-{$pp}', interval 12 month))\n {$toimittaja_where}\n GROUP BY lasku.tunnus"; $result_vaihto_omaisuus = pupe_query($query); $rv_vosumma = 0; $rv_voalvit = 0; $rv_kusumma = 0; $rv_kualvit = 0; while ($row_vaihto = mysql_fetch_assoc($result_vaihto_omaisuus)) { $rv_vosumma += $row_vaihto["vosumma"]; $rv_voalvit += $row_vaihto["voalvit"]; $rv_kusumma += $row_vaihto["kusumma"]; $rv_kualvit += $row_vaihto["kualvit"]; } $row_vaihto["vosumma"] = $rv_vosumma - $rv_voalvit; $row_vaihto["kusumma"] = $rv_kusumma - $rv_kualvit; // haetaan rahti/huolinta laskut jotka on liitetty vain osittain saapumisiin $query = "SELECT\n (SELECT sum(summa) summa\n FROM tiliointi\n WHERE tiliointi.yhtio = lasku.yhtio\n AND tiliointi.ltunnus = lasku.tunnus\n AND tiliointi.tilino in ('{$yhtiorow['varasto']}','{$yhtiorow['raaka_ainevarasto']}')\n AND tiliointi.korjattu = '') varastossa,\n sum(liitos.arvo*liitos.vienti_kurssi) kohdistettu\n FROM lasku\n JOIN lasku AS liitos on (liitos.yhtio = lasku.yhtio and liitos.vanhatunnus = lasku.tunnus and liitos.tila = 'K')\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n AND lasku.tila in ('H','Y','M','P','Q')\n AND lasku.vienti in ('B','E','H')\n AND (lasku.tapvm <= '{$vv}-{$kk}-{$pp}' AND lasku.tapvm >= date_sub('{$vv}-{$kk}-{$pp}', interval 12 month))\n {$toimittaja_where}\n GROUP BY lasku.tunnus\n HAVING varastossa != kohdistettu"; $result_huolintarahdit = pupe_query($query); $row_vaihto["kuosasumma"] = 0; while ($row_huorah = mysql_fetch_assoc($result_huolintarahdit)) { $row_vaihto["kuosasumma"] += $row_huorah["varastossa"] - $row_huorah["kohdistettu"]; } $liitetty_lasku_viety_summa = 0; $liitetty_lasku_viety_summa_tuloutettu = 0; $ei_liitetty_lasku_viety_summa = 0; $ei_liitetty_lasku_viety_summa_tuloutettu = $liitetty_lasku_ei_viety_summa = 0; $liitetty_lasku_ei_viety_summa_tuloutettu = 0; $ei_liitetty_lasku_ei_viety_summa = 0; $ei_liitetty_lasku_ei_viety_summa_tuloutettu = 0; $liitetty_lasku_osittain_ei_viety_summa = 0; $liitetty_lasku_osittain_ei_viety_summa_tuloutettu = 0; $ei_liitetty_lasku_osittain_ei_viety_summa = 0; $ei_liitetty_lasku_osittain_ei_viety_summa_tuloutettu = 0; $liitetty_lasku_osittain_viety_summa = 0; $liitetty_lasku_osittain_viety_summa_tuloutettu = 0; $ei_liitetty_lasku_osittain_viety_summa = 0; $ei_liitetty_lasku_osittain_viety_summa_tuloutettu = 0; $laskut_ei_viety = 0; $laskut_ei_viety_osittain = 0; $laskut_viety = 0; $laskut_osittain_viety = 0; if ($comp) { $query = "SELECT lasku.laskunro,\n lasku.tila,\n lasku.vanhatunnus,\n lasku.tunnus,\n count(DISTINCT liitos.tunnus) liitetty,\n group_concat(liitos.vanhatunnus) tunnukset\n FROM lasku\n LEFT JOIN lasku AS liitos ON liitos.yhtio = lasku.yhtio AND liitos.laskunro = lasku.laskunro AND liitos.vanhatunnus > 0 AND liitos.vienti IN ('C','F','I','J','K','L') AND liitos.tila = 'K'\n AND liitos.luontiaika <= '{$vv}-{$kk}-{$pp} 00:00:00'\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n AND lasku.tila = 'K'\n AND ((lasku.alatila = '' AND lasku.mapvm = '0000-00-00' AND lasku.kohdistettu in ('', 'K'))\n OR\n (lasku.alatila = 'X' AND lasku.mapvm >= '{$vv}-{$kk}-{$pp}' AND lasku.kohdistettu = 'X'))\n AND lasku.vanhatunnus = 0\n AND lasku.luontiaika <= '{$vv}-{$kk}-{$pp} 00:00:00'\n {$toimipaikkalisa}\n {$toimittaja_where}\n GROUP BY 1,2,3,4"; } else { $query = "SELECT lasku.laskunro,\n lasku.tila,\n lasku.vanhatunnus,\n lasku.tunnus,\n count(DISTINCT liitos.tunnus) liitetty,\n group_concat(liitos.vanhatunnus) tunnukset\n FROM lasku\n LEFT JOIN lasku AS liitos ON liitos.yhtio = lasku.yhtio AND liitos.laskunro = lasku.laskunro AND liitos.vanhatunnus > 0 AND liitos.vienti IN ('C','F','I','J','K','L') AND liitos.tila = 'K'\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n AND lasku.tila = 'K'\n AND lasku.alatila = ''\n AND lasku.mapvm = '0000-00-00'\n AND lasku.vanhatunnus = 0\n {$toimipaikkalisa}\n {$toimittaja_where}\n GROUP BY 1,2,3,4"; } $result = pupe_query($query); //haetaan saapuvia ostotilauksia, joihin liitetty tai ei liitetty lasku (kts. liitetty) while ($row = mysql_fetch_assoc($result)) { if ($comp) { $query = "SELECT\n sum(IF((laskutettuaika <= '{$vv}-{$kk}-{$pp}' AND laskutettuaika != '0000-00-00'), kpl, 0) * hinta * {$query_ale_lisa}) viety,\n sum(IF(laskutettuaika > '{$vv}-{$kk}-{$pp}', kpl, IF(laskutettuaika = '0000-00-00', varattu, 0)) * hinta * {$query_ale_lisa}) ei_viety,\n sum(IF((laskutettuaika <= '{$vv}-{$kk}-{$pp}' AND laskutettuaika != '0000-00-00'), rivihinta, 0)) tuloutettu\n FROM tilausrivi\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND uusiotunnus = {$row['tunnus']}\n AND tyyppi = 'O'"; } else { $query = "SELECT\n sum(kpl * hinta * {$query_ale_lisa}) viety,\n sum(varattu * hinta * {$query_ale_lisa}) ei_viety,\n sum(rivihinta) tuloutettu\n FROM tilausrivi\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND uusiotunnus = {$row['tunnus']}\n AND tyyppi = 'O'"; } $result2 = pupe_query($query); $tilausrivirow = mysql_fetch_assoc($result2); if ($row['liitetty'] == 0) { if ($tilausrivirow['viety'] == 0 and $tilausrivirow['ei_viety'] != 0) { $ei_liitetty_lasku_ei_viety_summa += $tilausrivirow['ei_viety']; $ei_liitetty_lasku_ei_viety_summa_tuloutettu += $tilausrivirow['tuloutettu']; } elseif ($tilausrivirow['viety'] != 0 and $tilausrivirow['ei_viety'] == 0) { //viety kokonaan $ei_liitetty_lasku_viety_summa += $tilausrivirow['viety']; $ei_liitetty_lasku_viety_summa_tuloutettu += $tilausrivirow['tuloutettu']; } else { //saapuminen viety osittain varastoon ja ei liitetty lasku $ei_liitetty_lasku_osittain_viety_summa += $tilausrivirow['viety']; $ei_liitetty_lasku_osittain_viety_summa_tuloutettu += $tilausrivirow['tuloutettu']; $ei_liitetty_lasku_osittain_ei_viety_summa += $tilausrivirow['ei_viety']; $ei_liitetty_lasku_osittain_ei_viety_summa_tuloutettu += $tilausrivirow['tuloutettu']; } } else { $query = "SELECT round(lasku.vienti_kurssi * lasku.summa, 2) summa,\n sum(round(tiliointi.summa, 2)) alvit\n FROM lasku\n LEFT JOIN tiliointi USE INDEX (tositerivit_index) ON (tiliointi.yhtio = lasku.yhtio and tiliointi.ltunnus = lasku.tunnus and tiliointi.tilino = '{$yhtiorow['alv']}' and tiliointi.korjattu = '' AND if(lasku.summa > 0, tiliointi.summa, tiliointi.summa*-1) > 0)\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n AND lasku.tunnus IN ({$row['tunnukset']})\n GROUP BY 1"; $result_laskut = pupe_query($query); $laskujensummat = 0; while ($laskut = mysql_fetch_assoc($result_laskut)) { $laskujensummat += $laskut['summa'] - $laskut['alvit']; } //on liitetty lasku if ($tilausrivirow['viety'] == 0 and $tilausrivirow['ei_viety'] != 0) { // ei viety ollenkaan $liitetty_lasku_ei_viety_summa += $tilausrivirow['ei_viety']; $liitetty_lasku_ei_viety_summa_tuloutettu += $tilausrivirow['tuloutettu']; $laskut_ei_viety += $laskujensummat; } elseif ($tilausrivirow['viety'] != 0 and $tilausrivirow['ei_viety'] == 0) { //viety kokonaan $liitetty_lasku_viety_summa += $tilausrivirow['viety']; $liitetty_lasku_viety_summa_tuloutettu += $tilausrivirow['tuloutettu']; $laskut_viety += $laskujensummat; } else { //saapuminen viety osittain varastoon ja liitetty lasku $liitetty_lasku_osittain_viety_summa += $tilausrivirow['viety']; $liitetty_lasku_osittain_viety_summa_tuloutettu += $tilausrivirow['tuloutettu']; $liitetty_lasku_osittain_ei_viety_summa += $tilausrivirow['ei_viety']; //$liitetty_lasku_osittain_ei_viety_summa_tuloutettu += $tilausrivirow['tuloutettu']; $laskut_osittain_viety += $laskujensummat; //$laskut_ei_viety_osittain += $laskujensummat; } } } return array($liitetty_lasku_viety_summa, $liitetty_lasku_viety_summa_tuloutettu, $ei_liitetty_lasku_viety_summa, $ei_liitetty_lasku_viety_summa_tuloutettu, $liitetty_lasku_ei_viety_summa, $ei_liitetty_lasku_ei_viety_summa, $ei_liitetty_lasku_ei_viety_summa_tuloutettu, $liitetty_lasku_osittain_viety_summa, $liitetty_lasku_osittain_viety_summa_tuloutettu, $ei_liitetty_lasku_osittain_viety_summa, $ei_liitetty_lasku_osittain_viety_summa_tuloutettu, $laskut_ei_viety, $laskut_ei_viety_osittain, $laskut_viety, $laskut_osittain_viety, $row_vaihto, $liitetty_lasku_osittain_ei_viety_summa, $liitetty_lasku_osittain_ei_viety_summa_tuloutettu, $ei_liitetty_lasku_osittain_ei_viety_summa, $ei_liitetty_lasku_osittain_ei_viety_summa_tuloutettu, $liitetty_lasku_ei_viety_summa_tuloutettu); }
function myynti($limit = '') { global $path_myynti, $yhtiorow, $yhtio, $logisticar; $where_logisticar = $logisticar[$yhtio]["where"]; echo "Myynnit... "; if (!($fp = fopen($path_myynti, 'w+'))) { die("Ei voitu avata filea {$path_myynti}"); } $query_ale_lisa = generoi_alekentta('M'); $query = "SELECT\n tilausrivi.tuoteno nimiketunnus,\n lasku.liitostunnus asiakastunnus,\n lasku.liitostunnus toimitusasiakas,\n if(tilausrivi.tyyppi = 'G', lasku.clearing, lasku.liitostunnus) asiakastunnus,\n if(tilausrivi.tyyppi = 'G', lasku.clearing, lasku.liitostunnus) toimitusasiakas,\n tilausrivi.toimaika toimituspaiva,\n tilausrivi.tyyppi tapahtumalaji,\n round(tilausrivi.hinta / if('{$yhtiorow['alv_kasittely']}' = '' and tilausrivi.alv<500, (1+tilausrivi.alv/100), 1) * (tilausrivi.varattu+tilausrivi.jt) * {$query_ale_lisa}, {$yhtiorow['hintapyoristys']}) myyntiarvo,\n (tilausrivi.varattu+tilausrivi.jt) * tuote.kehahin ostoarvo,\n tilausrivi.varattu tapahtumamaara,\n lasku.tunnus tilausnro,\n kuka.kuka myyjatunnus,\n lasku.yhtio_toimipaikka toimipaikka,\n varastopaikat.tunnus varastotunnus,\n tilausrivi.toimitettu\n FROM tilausrivi\n JOIN lasku USE INDEX (PRIMARY) ON lasku.tunnus=tilausrivi.otunnus and lasku.yhtio=tilausrivi.yhtio\n JOIN tuote ON tuote.tuoteno = tilausrivi.tuoteno and tuote.yhtio = tilausrivi.yhtio\n JOIN tuotepaikat USE INDEX (tuote_index) ON tuotepaikat.tuoteno=tilausrivi.tuoteno and tuotepaikat.hyllyvali=tilausrivi.hyllyvali and tuotepaikat.hyllytaso=tilausrivi.hyllytaso AND tilausrivi.hyllyalue=tuotepaikat.hyllyalue and tilausrivi.hyllynro=tuotepaikat.hyllynro and tilausrivi.yhtio=tuotepaikat.yhtio\n JOIN varastopaikat ON (varastopaikat.yhtio = tuotepaikat.yhtio\n AND varastopaikat.tunnus = tuotepaikat.varasto)\n LEFT JOIN kuka ON kuka.tunnus=lasku.myyja and kuka.yhtio=lasku.yhtio\n WHERE tilausrivi.varattu != 0\n AND tilausrivi.tyyppi IN ('L','O','G')\n AND tilausrivi.laskutettuaika = '0000-00-00'\n AND tilausrivi.yhtio = '{$yhtio}'\n ORDER BY tilausrivi.laadittu\n {$limit}"; $res = pupe_query($query); $rows = mysql_num_rows($res); $row = 0; if ($rows == 0) { echo "Yhtään myyntitapahtumaa ei löytynyt\n"; die; } $headers = array('nimiketunnus' => null, 'asiakastunnus' => null, 'toimitusasiakas' => null, 'toimituspaiva' => null, 'tapahtumalaji' => null, 'myyntiarvo' => null, 'ostoarvo' => null, 'tapahtumamaara' => null, 'tilausnro' => null, 'myyjatunnus' => null, 'toimipaikka' => null, 'varastotunnus' => null); // tehdään otsikot create_headers($fp, array_keys($headers)); while ($trow = mysql_fetch_assoc($res)) { $row++; switch (strtoupper($trow['tapahtumalaji'])) { case 'G': // kirjoitetaan fileen vain avoimia siirtolistoja eli toimitettu pitää olla tyhjää if ($trow['toimitettu'] != '') { continue; } // laji 3 = saapuva tilaus $trow['tapahtumalaji'] = '3'; $trow['myyntiarvo'] = 0; $trow['toimitusasiakas'] = $trow['varastotunnus']; $trow['varastotunnus'] = $trow['asiakastunnus']; // ei haluta toimitettu-saraketta mukaan unset($trow['toimitettu']); // Siivotaan kentät: foreach ($trow as &$tk) { $tk = pupesoft_csvstring($tk); } $data = array_merge($headers, $trow); $data = implode("\t", $data); if (!fwrite($fp, $data . "\n")) { echo "Failed writing row.\n"; die; } // laji 4 = varattu $trow['tapahtumalaji'] = '4'; $trow['varastotunnus'] = $trow['toimitusasiakas']; $trow['toimitusasiakas'] = $trow['asiakastunnus']; break; case 'L': $trow['tapahtumalaji'] = '4'; // ei haluta toimitettu-saraketta mukaan unset($trow['toimitettu']); break; case 'O': $trow['tapahtumalaji'] = '3'; $trow['myyntiarvo'] = 0; // ei haluta toimitettu-saraketta mukaan unset($trow['toimitettu']); break; } // Siivotaan kentät: foreach ($trow as &$tk) { $tk = pupesoft_csvstring($tk); } $data = array_merge($headers, $trow); $data = implode("\t", $data); if (!fwrite($fp, $data . "\n")) { echo "Failed writing row.\n"; die; } } fclose($fp); echo "Done.\n"; }
$content_body .= "</head>"; $content_body .= "<body>"; $content_body .= "<h3>" . htmlentities("Asiakkaat, jotka ovat käyttäneet yli {$luottorajaprosentti}% luottorajastaan") . ":</h3>"; $content_body .= "<table summary='" . htmlentities($content_subject) . "'>"; $content_body .= "<tr>"; $content_body .= "<th>" . t("Ytunnus") . "</th>"; $content_body .= "<th>" . t("Laskutusnimi") . "<br>" . t("Toimitusnimi") . "</th>"; $content_body .= "<th>" . t("Avoimet") . "<br>" . t("laskut") . "</th>"; $content_body .= "<th>" . t("Avoimet") . "<br>" . t("tilaukset") . "</th>"; $content_body .= "<th>" . t("Kaatotili") . "</th>"; $content_body .= "<th>" . t("Luottotilanne nyt") . "</th>"; $content_body .= "<th>" . t("Luottorajasta käytetty") . "</th>"; $content_body .= "<th>" . t("Luottoraja") . "<br>{$yhtiorow['valkoodi']}</th>"; $content_body .= "<th>" . t("Myyntikielto") . "</th>"; $content_body .= "</tr>"; $query_alennuksia = generoi_alekentta('M'); while ($asiakasrow = mysql_fetch_array($asiakasres)) { // Avoimet laskut $query = "SELECT sum(lasku.summa - lasku.saldo_maksettu) laskuavoinsaldo\n FROM lasku use index (yhtio_tila_mapvm)\n WHERE lasku.yhtio = '{$yhtiorow['yhtio']}'\n AND lasku.tila = 'U'\n AND lasku.alatila = 'X'\n AND lasku.mapvm = '0000-00-00'\n AND lasku.liitostunnus IN ({$asiakasrow['liitostunnukset']})"; $avoimetlaskutres = pupe_query($query); $avoimetlaskutrow = mysql_fetch_assoc($avoimetlaskutres); // Avoimet tilaukset $query = "SELECT\n round(sum(tilausrivi.hinta * if('{$yhtiorow['alv_kasittely']}' != '' and tilausrivi.alv < 500, (1+tilausrivi.alv/100), 1) * (tilausrivi.varattu+tilausrivi.jt) * {$query_alennuksia}),2) tilausavoinsaldo\n FROM lasku\n JOIN tilausrivi use index (yhtio_otunnus) on (tilausrivi.yhtio=lasku.yhtio and tilausrivi.otunnus=lasku.tunnus and tilausrivi.tyyppi IN ('L','W'))\n WHERE lasku.yhtio = '{$yhtiorow['yhtio']}'\n AND ((lasku.tila = 'L' and lasku.alatila in ('A','B','C','D','E','J','V')) # Kaikki myyntitilaukset, paitsi laskutetut\n OR (lasku.tila = 'N' and lasku.alatila in ('','A','F')) # Myyntitilaus kesken, tulostusjonossa tai odottaa hyväksyntää\n OR (lasku.tila = 'V' and lasku.alatila in ('','A','C','J','V')) # Valmistukset\n )\n AND lasku.liitostunnus in ({$asiakasrow['liitostunnukset']})"; $avoimettilauksetres = pupe_query($query); $avoimettilauksetrow = mysql_fetch_assoc($avoimettilauksetres); // Kaatotili $query = "SELECT\n sum(round(summa*if(kurssi=0, 1, kurssi),2)) summa\n FROM suoritus\n WHERE yhtio = '{$yhtiorow['yhtio']}'\n and ltunnus > 0\n and kohdpvm = '0000-00-00'\n and asiakas_tunnus in ({$asiakasrow['liitostunnukset']})"; $kaatotilires = pupe_query($query); $kaatotilirow = mysql_fetch_assoc($kaatotilires); // Lasketaan luottotilanne nyt $luottotilanne_nyt = round($asiakasrow["luottoraja"] - $avoimetlaskutrow["laskuavoinsaldo"] + $kaatotilirow["summa"] - $avoimettilauksetrow["tilausavoinsaldo"], 2);
$alvquery = "SELECT IF(ISNULL(varastopaikat.maa) or varastopaikat.maa='', '{$yhtiorow['maa']}', varastopaikat.maa) maa, group_concat(tilausrivi.tunnus) rivit\n FROM tilausrivi\n LEFT JOIN varastopaikat ON (varastopaikat.yhtio =\n IF(tilausrivi.var = 'S',\n IF((SELECT tyyppi_tieto\n FROM toimi\n WHERE yhtio = tilausrivi.yhtio\n AND tunnus = tilausrivi.tilaajanrivinro) != '',\n (SELECT tyyppi_tieto\n FROM toimi\n WHERE yhtio = tilausrivi.yhtio\n AND tunnus = tilausrivi.tilaajanrivinro),\n tilausrivi.yhtio),\n tilausrivi.yhtio)\n AND varastopaikat.tunnus = tilausrivi.varasto)\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n and tilausrivi.tyyppi in ({$tilrivity})\n and tilausrivi.tyyppi not in ('D','V','M')\n and tilausrivi.var != 'O'\n {$tunnuslisa}\n GROUP BY 1\n ORDER BY 1"; $alvresult = pupe_query($alvquery); // typekästätään koska joskus tulee spacena.. en tajua. $laskurow["erikoisale"] = (double) $laskurow["erikoisale"]; if ($laskurow["valkoodi"] != '' and trim(strtoupper($laskurow["valkoodi"])) != trim(strtoupper($yhtiorow["valkoodi"])) and $laskurow["vienti_kurssi"] != 0) { $hinta_riv = "(tilausrivi.hinta/{$laskurow['vienti_kurssi']})"; $hinta_myy = "(tuote.myyntihinta/{$laskurow['vienti_kurssi']})"; } else { $hinta_riv = "tilausrivi.hinta"; $hinta_myy = "tuote.myyntihinta"; } if ($kukarow['hinnat'] == 1) { $lisat = " {$hinta_myy} / if ('{$yhtiorow['alv_kasittely']}' = '', (1+tilausrivi.alv/100), 1) * (tilausrivi.kpl+tilausrivi.varattu+tilausrivi.jt) * (tilausrivi.alv/100) alv,\n {$hinta_myy} / if ('{$yhtiorow['alv_kasittely']}' = '', (1+tilausrivi.alv/100), 1) * (tilausrivi.kpl+tilausrivi.varattu+tilausrivi.jt) rivihinta,\n {$hinta_myy} / if ('{$yhtiorow['alv_kasittely']}' = '', (1+tilausrivi.alv/100), 1) * (tilausrivi.kpl+tilausrivi.varattu+tilausrivi.jt) * (tilausrivi.alv/100) alv_ei_erikoisaletta,\n {$hinta_myy} / if ('{$yhtiorow['alv_kasittely']}' = '', (1+tilausrivi.alv/100), 1) * (tilausrivi.kpl+tilausrivi.varattu+tilausrivi.jt) rivihinta_ei_erikoisaletta"; } else { $query_ale_lisa = generoi_alekentta('M'); $query_ale_lisa_ei_erik = generoi_alekentta('M', '', 'ei_erikoisale'); if (($asiakasrow['extranet_tilaus_varaa_saldoa'] == "" and $yhtiorow["extranet_tilaus_varaa_saldoa"] == "E" or $asiakasrow["extranet_tilaus_varaa_saldoa"] == "E") and $laskurow["tilaustyyppi"] == "H") { $kplkentta = "tilkpl"; } else { $kplkentta = "varattu"; } $lisat = " if (tilausrivi.alv<500, {$hinta_riv} / if ('{$yhtiorow['alv_kasittely']}' = '', (1+tilausrivi.alv/100), 1) * (tilausrivi.kpl+tilausrivi.{$kplkentta}+tilausrivi.jt) * {$query_ale_lisa} * (tilausrivi.alv/100), 0) alv,\n {$hinta_riv} / if ('{$yhtiorow['alv_kasittely']}' = '' and tilausrivi.alv<500, (1+tilausrivi.alv/100), 1) * (tilausrivi.kpl+tilausrivi.{$kplkentta}+tilausrivi.jt) * {$query_ale_lisa} rivihinta,\n if (tilausrivi.alv<500, {$hinta_riv} / if ('{$yhtiorow['alv_kasittely']}' = '', (1+tilausrivi.alv/100), 1) * (tilausrivi.kpl+tilausrivi.{$kplkentta}+tilausrivi.jt) * {$query_ale_lisa_ei_erik} * (tilausrivi.alv/100), 0) alv_ei_erikoisaletta,\n {$hinta_riv} / if ('{$yhtiorow['alv_kasittely']}' = '' and tilausrivi.alv<500, (1+tilausrivi.alv/100), 1) * (tilausrivi.kpl+tilausrivi.{$kplkentta}+tilausrivi.jt) * {$query_ale_lisa_ei_erik} rivihinta_ei_erikoisaletta,\n tilausrivi.hinta / if ('{$yhtiorow['alv_kasittely']}' = '' and tilausrivi.alv<500, (1+tilausrivi.alv/100), 1) * (tilausrivi.kpl+tilausrivi.{$kplkentta}+tilausrivi.jt) * {$query_ale_lisa} kotirivihinta,\n tilausrivi.hinta / if ('{$yhtiorow['alv_kasittely']}' = '' and tilausrivi.alv<500, (1+tilausrivi.alv/100), 1) * (tilausrivi.kpl+tilausrivi.{$kplkentta}+tilausrivi.jt) * {$query_ale_lisa_ei_erik} kotirivihinta_ei_erikoisaletta"; } while ($alvrow = mysql_fetch_assoc($alvresult)) { $aquery = "SELECT\n tuote.sarjanumeroseuranta,\n tuote.ei_saldoa,\n tuote.tuoteno,\n {$kehahin_select} kehahin,\n tilausrivi.tunnus,\n tilausrivi.varattu+tilausrivi.jt varattu,\n tilausrivin_lisatiedot.osto_vai_hyvitys,\n {$lisat}\n FROM tilausrivi\n JOIN tuote ON tilausrivi.yhtio=tuote.yhtio and tilausrivi.tuoteno=tuote.tuoteno\n LEFT JOIN tilausrivin_lisatiedot ON (tilausrivin_lisatiedot.yhtio=tilausrivi.yhtio and tilausrivin_lisatiedot.tilausrivitunnus=tilausrivi.tunnus)\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n AND tilausrivi.otunnus = '{$kukarow['kesken']}'\n AND tilausrivi.tunnus IN ({$alvrow['rivit']})"; $aresult = pupe_query($aquery); while ($arow = mysql_fetch_assoc($aresult)) { $rivikate = 0; // Rivin kate yhtiön valuutassa $rivikate_eieri = 0; // Rivin kate yhtiön valuutassa ilman erikoisalennusta
function get_vahvistamattomat_rivit($tilaus_otunnukset, $toimittajaid, $laskurow, $kieli) { global $yhtiorow, $kukarow; $query_ale_lisa = generoi_alekentta('O'); $ale_query_select_lisa = generoi_alekentta_select('erikseen', 'O'); $query = "SELECT tilausrivi.otunnus, tilausrivi.tuoteno, tilausrivi.yksikko, tuotteen_toimittajat.toim_tuoteno, tilausrivi.nimitys,\n tilkpl,\n round(tilkpl*if(tuotteen_toimittajat.tuotekerroin=0 or tuotteen_toimittajat.tuotekerroin is null,1,tuotteen_toimittajat.tuotekerroin),4) ulkkpl,\n hinta, {$ale_query_select_lisa} round((varattu+jt)*hinta*if(tuotteen_toimittajat.tuotekerroin=0 or tuotteen_toimittajat.tuotekerroin is null,1,tuotteen_toimittajat.tuotekerroin)*{$query_ale_lisa},'{$yhtiorow['hintapyoristys']}') rivihinta,\n toimaika, tilausrivi.jaksotettu as vahvistettu, tilausrivi.tunnus,\n toim_tuoteno\n FROM tilausrivi\n LEFT JOIN tuote ON tuote.yhtio=tilausrivi.yhtio and tuote.tuoteno=tilausrivi.tuoteno\n LEFT JOIN tuotteen_toimittajat ON tuotteen_toimittajat.yhtio=tilausrivi.yhtio and tuotteen_toimittajat.tuoteno=tilausrivi.tuoteno and tuotteen_toimittajat.liitostunnus='{$toimittajaid}'\n WHERE otunnus in ({$tilaus_otunnukset})\n and tilausrivi.yhtio='{$kukarow['yhtio']}'\n and tilausrivi.uusiotunnus=0\n and tilausrivi.tyyppi='O'\n and tilausrivi.jaksotettu = 0\n ORDER BY tilausrivi.otunnus"; $result = pupe_query($query); $rivit = array(); $total = 0; while ($row = mysql_fetch_assoc($result)) { // Tarkastetaan olisiko toimittajalla yksikkö! $query = "SELECT toim_yksikko\n FROM tuotteen_toimittajat\n WHERE yhtio = '{$kukarow['yhtio']}'\n and tuoteno = '{$row['tuoteno']}'\n and liitostunnus = '{$laskurow['liitostunnus']}'\n LIMIT 1"; $rarres = pupe_query($query); $rarrow = mysql_fetch_assoc($rarres); if ($row["yksikko"] == "") { $row["yksikko"] = $rarrow["toim_yksikko"]; } if ($rarrow["toim_yksikko"] == "") { $rarrow["toim_yksikko"] = $row["yksikko"]; } $omyks = t_avainsana("Y", $kieli, "and avainsana.selite='{$row['yksikko']}'", "", "", "selite"); $toyks = t_avainsana("Y", $kieli, "and avainsana.selite='{$rarrow['toim_yksikko']}'", "", "", "selite"); $row['omyks'] = $omyks; $row['toyks'] = $toyks; $rivit[] = $row; $total += $row['rivihinta']; } $rivit['total_rivihinta'] = $total; return $rivit; }
$lisavarlisa = ""; } if ($vaintullinimike != "") { $vainnimikelisa = " and tuote.tullinimike1 = '{$vaintullinimike}' and lasku.kuljetusmuoto = '{$vainkuljetusmuoto}' and lasku.kauppatapahtuman_luonne = '{$vainkauppatapahtuman_luonne}' and tullinimike.su_vientiilmo = '{$vainsu}' "; $maalisa .= " and maalahetys = '{$vainmaalahetys}' and alkuperamaa = '{$vainalkuperamaa}' and maamaara = '{$vainmaamaara}' "; $vainnimikelisa2 = " tilausrivi.tunnus, "; $vainnimikegroup = " ,9 "; } else { $vainnimikelisa = ""; $vainnimikelisa2 = ""; $vainnimikegroup = ""; } $query = ""; // tässä tulee sitten nimiketietueet unionilla if ($tapahtumalaji == "kaikki" or $tapahtumalaji == "keikka") { $alennukset = generoi_alekentta('O', 'tilausrivi'); $query = "(SELECT\n tuote.tullinimike1,\n if (lasku.maa_lahetys='', toimi.maa, lasku.maa_lahetys) maalahetys,\n ifnull((SELECT alkuperamaa FROM tuotteen_toimittajat WHERE tuotteen_toimittajat.yhtio=tilausrivi.yhtio and tuotteen_toimittajat.tuoteno=tilausrivi.tuoteno and tuotteen_toimittajat.alkuperamaa not in ('{$yhtiorow['maa']}','') LIMIT 1), if (lasku.maa_lahetys='', toimi.maa, lasku.maa_lahetys)) alkuperamaa,\n if (lasku.maa_maara='', if (lasku.toim_maa='', if(varastopaikat.maa is null or varastopaikat.maa='', '{$yhtiorow['maa']}', varastopaikat.maa), lasku.toim_maa), lasku.maa_maara) maamaara,\n lasku.kuljetusmuoto,\n lasku.kauppatapahtuman_luonne,\n tullinimike.su_vientiilmo su,\n 'Saapuminen' as tapa,\n {$vainnimikelisa2}\n {$ee_kentat}\n max(lasku.laskunro) laskunro,\n max(tuote.tuoteno) tuoteno,\n left(max(tuote.nimitys), 40) nimitys,\n round(sum(tilausrivi.kpl * if(tuote.toinenpaljous_muunnoskerroin = 0, 1, tuote.toinenpaljous_muunnoskerroin)),0) kpl,\n round(sum(if(tuote.tuotemassa > 0, tilausrivi.kpl * tuote.tuotemassa, if(lasku.summa > tilausrivi.rivihinta, tilausrivi.rivihinta / lasku.summa, 1) * lasku.bruttopaino)), 0) as paino,\n if (round(sum(tilausrivi.rivihinta),0) > 0.50, round(sum(tilausrivi.rivihinta),0), 1) rivihinta,\n if (round(sum(tilausrivi.rivihinta / (1 + (lasku.rahti / 100))),0) > 0.50,\n if (valuu.intrastat_kurssi = 0,\n round(sum(tilausrivi.rivihinta / (1 + (lasku.rahti / 100)) / lasku.vienti_kurssi),0),\n round(sum(tilausrivi.rivihinta / (1 + (lasku.rahti / 100)) / valuu.intrastat_kurssi),0)), 1) as rivihinta_laskutusarvo,\n group_concat(lasku.tunnus) as kaikkitunnukset,\n group_concat(distinct tilausrivi.perheid2) as perheid2set,\n group_concat(concat(tuote.tunnus,'!¡!', tuote.tuoteno)) as kaikkituotteet"; if ($yhtiorow['intrastat_pvm'] == '') { $query .= " FROM lasku use index (yhtio_tila_mapvm)\n JOIN toimi ON (lasku.yhtio=toimi.yhtio and lasku.liitostunnus=toimi.tunnus)\n JOIN tilausrivi use index (uusiotunnus_index) ON (tilausrivi.yhtio=lasku.yhtio and tilausrivi.uusiotunnus=lasku.tunnus and tilausrivi.tyyppi = 'O' and tilausrivi.kpl > 0)\n JOIN tuote use index (tuoteno_index) ON (tuote.yhtio=lasku.yhtio and tuote.tuoteno=tilausrivi.tuoteno and tuote.ei_saldoa = '')\n LEFT JOIN tullinimike ON (tuote.tullinimike1=tullinimike.cn and tullinimike.kieli = '{$yhtiorow['kieli']}' and tullinimike.cn != '')\n LEFT JOIN varastopaikat ON (varastopaikat.yhtio = tilausrivi.yhtio\n AND varastopaikat.tunnus = tilausrivi.varasto)\n LEFT JOIN valuu ON (lasku.yhtio=valuu.yhtio and lasku.valkoodi=valuu.nimi)\n WHERE lasku.kohdistettu = 'X'\n and lasku.tila = 'K'\n and lasku.vanhatunnus = 0\n and lasku.kauppatapahtuman_luonne != '999'\n and lasku.yhtio = '{$kukarow['yhtio']}'\n and lasku.mapvm >= '{$vva}-{$kka}-{$ppa}'\n and lasku.mapvm <= '{$vvl}-{$kkl}-{$ppl}'"; } else { $query .= " FROM tilausrivi\n JOIN lasku ON (tilausrivi.uusiotunnus=lasku.tunnus and tilausrivi.yhtio=lasku.yhtio and lasku.tila = 'K' and lasku.vanhatunnus = 0 and lasku.kauppatapahtuman_luonne != '999')\n JOIN toimi ON (lasku.yhtio=toimi.yhtio and lasku.liitostunnus=toimi.tunnus)\n JOIN tuote use index (tuoteno_index) ON (tuote.yhtio=lasku.yhtio and tuote.tuoteno=tilausrivi.tuoteno and tuote.ei_saldoa = '')\n LEFT JOIN tullinimike ON (tuote.tullinimike1=tullinimike.cn and tullinimike.kieli = '{$yhtiorow['kieli']}' and tullinimike.cn != '')\n LEFT JOIN varastopaikat ON (varastopaikat.yhtio = tilausrivi.yhtio\n AND varastopaikat.tunnus = tilausrivi.varasto)\n LEFT JOIN valuu ON (lasku.yhtio=valuu.yhtio and lasku.valkoodi=valuu.nimi)\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n and tilausrivi.tyyppi = 'O'\n and tilausrivi.laskutettuaika >= '{$vva}-{$kka}-{$ppa}'\n and tilausrivi.laskutettuaika <= '{$vvl}-{$kkl}-{$ppl}'\n and tilausrivi.kpl > 0"; } $query .= " {$vainnimikelisa}\n {$lisavarlisa}\n GROUP BY 1,2,3,4,5,6,7,8 {$vainnimikegroup} {$ee_group}\n HAVING {$maalisa})"; } if ($tapahtumalaji == "kaikki") { $query .= " UNION"; } if ($tapahtumalaji == "kaikki" or $tapahtumalaji == "lasku") { $query .= " (SELECT\n tuote.tullinimike1,\n if (lasku.maa_lahetys='', ifnull(varastopaikat.maa, lasku.yhtio_maa), lasku.maa_lahetys) maalahetys,\n ifnull((SELECT alkuperamaa FROM tuotteen_toimittajat WHERE tuotteen_toimittajat.yhtio=tilausrivi.yhtio and tuotteen_toimittajat.tuoteno=tilausrivi.tuoteno and tuotteen_toimittajat.alkuperamaa!='' ORDER BY if (alkuperamaa='{$yhtiorow['maa']}','2','1') LIMIT 1), '{$yhtiorow['maa']}') alkuperamaa,\n if (lasku.maa_maara='', lasku.toim_maa, lasku.maa_maara) maamaara,\n lasku.kuljetusmuoto,\n lasku.kauppatapahtuman_luonne,\n tullinimike.su_vientiilmo su,\n 'Lasku' as tapa,\n {$vainnimikelisa2}\n {$ee_kentat}\n max(lasku.laskunro) laskunro,\n max(tuote.tuoteno) tuoteno,\n left(max(tuote.nimitys), 40) nimitys,\n round(sum(tilausrivi.kpl * if (tuote.toinenpaljous_muunnoskerroin = 0, 1, tuote.toinenpaljous_muunnoskerroin)),0) kpl,\n round(sum(if(tuote.tuotemassa > 0, tilausrivi.kpl * tuote.tuotemassa, if(lasku.summa > tilausrivi.rivihinta, tilausrivi.rivihinta / lasku.summa, 1) * lasku.bruttopaino)), 0) as paino,\n if (round(sum(tilausrivi.rivihinta),0) > 0.50,round(sum(tilausrivi.rivihinta),0), 1) rivihinta,\n if (round(sum(tilausrivi.rivihinta),0) > 0.50,round(sum(tilausrivi.rivihinta),0), 1) rivihinta_laskutusarvo,\n group_concat(lasku.tunnus) as kaikkitunnukset,\n group_concat(distinct tilausrivi.perheid2) as perheid2set,\n group_concat(concat(tuote.tunnus,'!¡!', tuote.tuoteno)) as kaikkituotteet\n FROM lasku use index (yhtio_tila_tapvm)\n JOIN tilausrivi use index (yhtio_otunnus) ON (tilausrivi.otunnus=lasku.tunnus and tilausrivi.yhtio=lasku.yhtio and tilausrivi.kpl > 0)\n JOIN tuote use index (tuoteno_index) ON (tuote.yhtio=lasku.yhtio and tuote.tuoteno=tilausrivi.tuoteno and tuote.ei_saldoa = '')\n LEFT JOIN tullinimike ON (tuote.tullinimike1=tullinimike.cn and tullinimike.kieli = '{$yhtiorow['kieli']}' and tullinimike.cn != '')\n LEFT JOIN varastopaikat ON (varastopaikat.yhtio=lasku.yhtio and varastopaikat.tunnus=lasku.varasto)\n WHERE lasku.tila = 'L'\n and lasku.alatila = 'X'\n and lasku.kauppatapahtuman_luonne != '999'\n and lasku.yhtio = '{$kukarow['yhtio']}'\n and lasku.tapvm >= '{$vva}-{$kka}-{$ppa}'\n and lasku.tapvm <= '{$vvl}-{$kkl}-{$ppl}'\n {$vainnimikelisa}\n {$lisavarlisa}\n GROUP BY 1,2,3,4,5,6,7,8 {$vainnimikegroup} {$ee_group}\n HAVING {$maalisa})"; } if ($tapahtumalaji == "kaikki") {