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; }
$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++) { echo "<th align='left'>" . t("Ale") . "{$alepostfix}</th>";
$epakurpantti = "(" . t("Puoliepäkurantti") . ")"; } elseif ($tuote['epakurantti25pvm'] != '0000-00-00') { $tuote['kehahin'] = round($tuote['kehahin'] * 0.75, 6); $epakurpantti = "(" . t("25% Epäkurantti") . ")"; } } if ($kukarow["yhtio"] == "srs") { echo "<tr><th>" . t("Hinta 25% katteella") . "</th><td align='right'>" . hintapyoristys($tuote['kehahin'] / 0.75) . " {$yhtiorow['valkoodi']}</td></tr>"; } echo "<tr><th>" . t("Keskihankintahinta") . " {$epakurpantti}</th><td align='right'>" . hintapyoristys($tuote['kehahin']) . " {$yhtiorow['valkoodi']}</td></tr>"; if ($tuote["myyntihinta_maara"] != 0) { echo "<tr><th>" . t("Keskihankintahinta") . " {$epakurpantti} {$tuote['myyntihinta_maara']} {$tuote['yksikko']}</th>"; echo "<td align='right'>" . hintapyoristys($tuote['kehahin'] * $tuote["myyntihinta_maara"]) . " {$yhtiorow['valkoodi']}</td></tr>"; } } $query_ale_select_lisa = generoi_alekentta_select('erikseen', 'M'); $cur_date = date('Y-m-d'); $date_2yo = date("Y-m-d", mktime(0, 0, 0, date("n"), date("j"), date("Y") - 2)); // Jos kahden vuoden aikarajaus ylittyy, breikataan looppi while ($cur_date >= $date_2yo) { $pre_date = $cur_date; $cur_date = explode('-', $cur_date); $cur_date = date("Y-m-d", mktime(0, 0, 0, $cur_date[1] - 1, $cur_date[2], $cur_date[0])); //haetaan viimeisin hinta millä asiakas on tuotetta ostanut $query = "SELECT tilausrivi.hinta,\n tilausrivi.otunnus,\n tilausrivi.laskutettuaika,\n {$query_ale_select_lisa}\n lasku.tunnus,\n lasku_ux.tunnus AS ux_tunnus,\n lasku_ux.laskunro AS ux_laskunro\n FROM tilausrivi USE INDEX (yhtio_tyyppi_tuoteno_laskutettuaika)\n JOIN lasku USE INDEX (PRIMARY) ON (\n lasku.yhtio = tilausrivi.yhtio AND\n lasku.tunnus = tilausrivi.otunnus AND\n lasku.liitostunnus = '{$laskurow['liitostunnus']}' AND\n lasku.tila = 'L' AND\n lasku.alatila = 'X'\n )\n JOIN lasku AS lasku_ux ON (\n lasku_ux.yhtio = lasku.yhtio AND\n lasku_ux.tunnus = tilausrivi.uusiotunnus\n )\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n AND tilausrivi.tyyppi = 'L'\n AND tilausrivi.tuoteno = '{$tuote['tuoteno']}'\n AND tilausrivi.laskutettuaika <= '{$pre_date}'\n AND tilausrivi.laskutettuaika >= '{$cur_date}'\n AND tilausrivi.kpl != 0\n ORDER BY tilausrivi.tunnus DESC\n LIMIT 1"; $viimhintares = pupe_query($query); if (mysql_num_rows($viimhintares) != 0) { $viimhinta = mysql_fetch_assoc($viimhintares); echo "<tr>"; echo "<th>", t("Viimeisin hinta"), "</th>"; echo "<td align='right'>";
$query_ale_lisa = generoi_alekentta('O'); $ale_query_select_lisa = generoi_alekentta_select('erikseen', 'O'); $query = "SELECT\n tilausrivi.tunnus,\n lasku.tunnus tilaus,\n lasku.ytunnus,\n lasku.nimi,\n lasku.postitp,\n tilausrivi.tuoteno,\n round((tilausrivi.varattu+tilausrivi.kpl),4) määrä,\n round((tilausrivi.varattu+tilausrivi.kpl)*if(tuotteen_toimittajat.tuotekerroin=0 or tuotteen_toimittajat.tuotekerroin is null,1,tuotteen_toimittajat.tuotekerroin),4) ulkmäärä,\n round(tilausrivi.hinta*if(lasku.vienti_kurssi=0, 1, lasku.vienti_kurssi), '{$yhtiorow['hintapyoristys']}') hinta,\n {$ale_query_select_lisa}\n round((tilausrivi.varattu+tilausrivi.kpl)*tilausrivi.hinta*if(lasku.vienti_kurssi=0, 1, lasku.vienti_kurssi)*if(tuotteen_toimittajat.tuotekerroin=0 or tuotteen_toimittajat.tuotekerroin is null,1,tuotteen_toimittajat.tuotekerroin)*{$query_ale_lisa},'{$yhtiorow['hintapyoristys']}') rivihinta,\n lasku.toimaika,\n tilausrivi.laskutettuaika tuloutettu,\n lasku.tila, lasku.alatila\n FROM tilausrivi\n JOIN lasku ON lasku.yhtio=tilausrivi.yhtio and lasku.tunnus=tilausrivi.otunnus\n JOIN tuotteen_toimittajat ON tuotteen_toimittajat.yhtio=tilausrivi.yhtio and tuotteen_toimittajat.tuoteno=tilausrivi.tuoteno and tuotteen_toimittajat.liitostunnus=lasku.liitostunnus\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n and lasku.tila IN ('O','K')\n and tilausrivi.tyyppi = 'O'\n and tilausrivi.{$pvmtapa} >='{$vva}-{$kka}-{$ppa} 00:00:00'\n and tilausrivi.{$pvmtapa} <='{$vvl}-{$kkl}-{$ppl} 23:59:59'"; } else { $query_ale_lisa = generoi_alekentta('M'); if ((int) $asiakasid > 0) { $asiakaslisa = ""; } else { $asiakaslisa = "ytunnus, if(nimi!=toim_nimi and toim_nimi!='', concat(nimi,'<br>(',toim_nimi,')'), nimi) nimi, if(postitp!=toim_postitp and toim_postitp!='', concat(postitp,'<br>(',toim_postitp,')'), postitp) postitp, "; } if ($kukarow['extranet'] == '' and ($kukarow["naytetaan_katteet_tilauksella"] == "Y" or $kukarow["naytetaan_katteet_tilauksella"] == "" and $yhtiorow["naytetaan_katteet_tilauksella"] == "Y")) { $katelisa = " tilausrivi.kate, "; } else { $katelisa = ""; } $ale_query_select_lisa = generoi_alekentta_select("erikseen", "M"); $query = "SELECT distinct\n tilausrivi.tunnus,\n tilausrivi.otunnus tilaus,\n lasku.laskunro,\n {$asiakaslisa}\n tilausrivi.tuoteno,\n tilausrivi.nimitys,\n (tilausrivi.kpl+tilausrivi.varattu) määrä,\n tilausrivi.hinta,\n {$ale_query_select_lisa}\n if (tilausrivi.kpl!=0, tilausrivi.rivihinta, tilausrivi.hinta / if ('{$yhtiorow['alv_kasittely']}' = '' and tilausrivi.alv < 500, (1+tilausrivi.alv/100), 1) * (tilausrivi.varattu+tilausrivi.jt) * {$query_ale_lisa}) rivihinta,\n tilausrivi.kate,\n lasku.toimaika,\n lasku.lahetepvm Käsittelyyn,\n lasku.tila,\n lasku.alatila,\n lasku.tapvm,\n tilausrivi.tyyppi,\n tuote.kehahin,\n tuote.sarjanumeroseuranta,\n tilausrivi.var\n FROM tilausrivi\n JOIN lasku ON tilausrivi.yhtio = lasku.yhtio and tilausrivi.otunnus = lasku.tunnus\n JOIN tuote ON (tuote.yhtio=tilausrivi.yhtio and tilausrivi.tuoteno=tuote.tuoteno)\n WHERE tilausrivi.yhtio = '{$kukarow['yhtio']}'\n and lasku.yhtio=tilausrivi.yhtio\n and lasku.tunnus=tilausrivi.otunnus\n and lasku.tila in ('L','N','U')\n and tilausrivi.tyyppi = 'L'\n and tilausrivi.{$pvmtapa} >='{$vva}-{$kka}-{$ppa} 00:00:00'\n and tilausrivi.{$pvmtapa} <='{$vvl}-{$kkl}-{$ppl} 23:59:59'\n and lasku.tunnus=tilausrivi.otunnus "; } if ($tuoteno != '') { $query .= " and tilausrivi.tuoteno='{$tuoteno}' "; } if ((int) $asiakasid > 0) { $query .= " and lasku.liitostunnus = '{$asiakasid}' "; } if ((int) $toimittajaid > 0) { $query .= " and lasku.liitostunnus = '{$toimittajaid}' "; } $query .= "{$jarj}"; $result = pupe_query($query); if ($toim == 'OSTO') { $miinus = 2;
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; }