$summa = hintapyoristys($summa / $alvillisuus_jako); $myyntihinta = hintapyoristys(tuotteen_myyntihinta($laskurow, $trow, 1) / $alvillisuus_jako); } else { // Oletuksena verottomat hinnat tai käännetty arvonlisäverovelvollisuus if ($tilausrivi_alvillisuus == "E" or $row["alv"] >= 600) { // Oletukset $alvillisuus_kerto = 1; } else { // Halutaan alvilliset hinnat $alvillisuus_kerto = 1 + $row["alv"] / 100; } $hinta = hintapyoristys($hinta * $alvillisuus_kerto); $summa = hintapyoristys($summa * $alvillisuus_kerto); $myyntihinta = hintapyoristys(tuotteen_myyntihinta($laskurow, $trow, 1) * $alvillisuus_kerto); } $kplhinta = $hinta * generoi_alekentta_php($row, 'M', 'kerto', 'ei_erikoisale'); if ($kukarow['hinnat'] == 1) { echo "<td {$class} align='right' valign='top'>{$myyntihinta}</td>"; } elseif ($kukarow['hinnat'] == 0) { if ($myyntihinta != $hinta) { $myyntihinta = hintapyoristys($myyntihinta) . " (" . hintapyoristys($hinta) . ")"; } else { $myyntihinta = hintapyoristys($myyntihinta); } echo "<td {$class} align='right' valign='top'>{$myyntihinta}</td>"; for ($alepostfix = 1; $alepostfix <= $yhtiorow['myynnin_alekentat']; $alepostfix++) { echo "<td {$class} align='right' valign='top'>", $row["ale{$alepostfix}"] * 1, "</td>"; } echo "<td {$class} align='right' valign='top'>" . hintapyoristys($kplhinta, 2) . "</td>"; } if ($kukarow['hinnat'] == 1) {
if (isset($hinnat["aleperuste"]["ale" . $alepostfix]) and $hinnat["aleperuste"]["ale" . $alepostfix] !== FALSE and $hinnat["aleperuste"]["ale" . $alepostfix] < 13) { $onko_asiakkaalla_alennuksia = TRUE; break; } } // Jos tuote näytetään vain jos asiakkaalla on asiakasalennus tai asiakahinta niin skipataan se jos alea tai hintaa ei löydy if ($rrow["hinnastoon"] == "V" and (($hinnat["hintaperuste"] > 13 or $hinnat["hintaperuste"] === FALSE) and $onko_asiakkaalla_alennuksia === FALSE)) { continue; } else { $osuma = true; } if ((double) $hinta == 0) { $hinta = $rrow["myyntihinta"]; } if ($netto == "") { $alennukset = generoi_alekentta_php($hinnat, 'M', 'kerto'); $asiakashinta = hintapyoristys($hinta * $alennukset); } else { $asiakashinta = $hinta; } $veroton = 0; $verollinen = 0; $asiakashinta_veroton = 0; $asiakashinta_verollinen = 0; if ($yhtiorow["alv_kasittely"] == "") { // Hinnat sisältävät arvonlisäveron $verollinen = $rrow["myyntihinta"]; $veroton = round($rrow["myyntihinta"] / (1 + $rrow['alv'] / 100), 2); $asiakashinta_veroton = round($asiakashinta / (1 + $lis_alv / 100), 2); $asiakashinta_verollinen = $asiakashinta; } else {
$format_bold = array("bold" => TRUE); $excelrivi = 0; $excelsarake = 0; $data = array(); $i = 0; $tuotteiden_alehinnat = array(); $bar = new ProgressBar(); $bar->initialize(mysql_num_rows($laskures)); while ($laskurow = mysql_fetch_assoc($laskures)) { $bar->increase(); $x = 1; $query = "SELECT *\n FROM tilausrivi\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND otunnus = '{$laskurow['tunnus']}'\n AND tyyppi = 'L'\n AND kpl+varattu > 0\n AND tuoteno NOT IN (\n '{$yhtiorow['rahti_tuotenumero']}',\n '{$yhtiorow['jalkivaatimus_tuotenumero']}',\n '{$yhtiorow['erilliskasiteltava_tuotenumero']}',\n '{$yhtiorow['kasittelykulu_tuotenumero']}',\n '{$yhtiorow['maksuehto_tuotenumero']}',\n '{$yhtiorow['ennakkomaksu_tuotenumero']}',\n '{$yhtiorow['alennus_tuotenumero']}',\n '{$yhtiorow['laskutuslisa_tuotenumero']}',\n '{$yhtiorow['kuljetusvakuutus_tuotenumero']}'\n )"; $tilausrivires = pupe_query($query); $num_rows = mysql_num_rows($tilausrivires); while ($tilausrivirow = mysql_fetch_assoc($tilausrivires)) { $alet = generoi_alekentta_php($tilausrivirow, 'M', 'kerto'); $tilausrivirow['hinta'] = $tilausrivirow['hinta'] * $alet; $_chk = $laskurow['liitostunnus'] . '####' . $tilausrivirow['tuoteno'] . '####' . $tilausrivirow['kpl']; if (!isset($tuotteiden_alehinnat[$_chk])) { $query = "SELECT *\n FROM tuote\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tuoteno = '{$tilausrivirow['tuoteno']}'"; $tres = pupe_query($query); $trow = mysql_fetch_assoc($tres); list($lis_hinta, $lis_netto, $lis_ale_kaikki, $alehinta_alv, $alehinta_val) = alehinta($laskurow, $trow, $tilausrivirow['kpl'], '', '', array()); for ($alepostfix = 1; $alepostfix <= $yhtiorow['myynnin_alekentat']; $alepostfix++) { $lis_hinta *= 1 - $lis_ale_kaikki['ale' . $alepostfix] / 100; } $tuotteiden_alehinnat[$_chk] = $lis_hinta; } else { $lis_hinta = $tuotteiden_alehinnat[$_chk]; } $ero = $tilausrivirow['hinta'] - $lis_hinta;
$ostohinta = $ostohinta * $ttrow['tuotekerroin']; $alennukset = 1; $ostohinta_netto = $ostohinta; // lisätään kuluprosentti hintaan jos sitä käytetään saapumisellakin if (in_array($yhtiorow['jalkilaskenta_kuluperuste'], array('KP', 'VS', 'PX'))) { $ostohinta_netto = $ostohinta_netto * (1 + $ttrow['oletus_kulupros'] / 100); } // Nolla tai pienempi on virhe, laitetaan ne vikaks if ($ostohinta <= 0) { $ostohinta = 0; $ostohinta_netto = 9999999; $netto = "N"; } // Jos ei ole nettohinta, niin lasketaan alennukset if (empty($netto)) { $alennukset = generoi_alekentta_php($alennus, 'O', 'kerto', 'EI'); $ostohinta_netto = $ostohinta_netto * $alennukset; } $ostohinta_netto = round($ostohinta_netto, 6); $alennukset = round((1 - $alennukset) * 100, 2); $ttrow['ostohinta_oletusvaluutta'] = $ostohinta; $ttrow['ostohinta_oletusvaluutta_netto'] = $ostohinta_netto; $ttrow['alennukset_oletusvaluutta_netto'] = $alennukset; $pakkaukset = tuotteen_toimittajat_pakkauskoot($ttrow['tutotunnus'], 'suurin'); $ttrow['lavakoko'] = !empty($pakkaukset) ? $pakkaukset[0][0] : '0'; $toimittajat_a_hinta[] = $ostohinta_netto; $toimittajat_a[] = $ttrow; // Tuotteen toimittajatiedot omaan failiin $trivi = $row['maa'] . "-" . pupesoft_csvstring($row['tuoteno']) . ";"; $trivi .= pupesoft_csvstring($row['tuoteno']) . ";"; $trivi .= "{$row['maa']}-{$ttrow['toimittaja']};";
function piirra_hinta($row, $oleasrow, $valuurow, $vari, $classmidl, $hinta_rajaus, $poistetut, $lisatiedot) { global $kukarow, $yhtiorow, $verkkokauppa; if ($kukarow['hinnat'] >= 0 and ($verkkokauppa == "" or $kukarow["kuka"] != "www")) { $myyntihinta = hintapyoristys($row["myyntihinta"]) . " {$yhtiorow['valkoodi']}"; if ($kukarow["extranet"] != "" and $kukarow["naytetaan_asiakashinta"] != "") { list($hinta, $netto, $ale_kaikki, $alehinta_alv, $alehinta_val) = alehinta($oleasrow, $row, 1, '', '', ''); $myyntihinta_echotus = $hinta * generoi_alekentta_php($ale_kaikki, 'M', 'kerto'); $myyntihinta = hintapyoristys($myyntihinta_echotus) . " {$alehinta_val}"; } elseif ($kukarow["extranet"] != "") { // jos kyseessä on extranet asiakas yritetään näyttää kaikki hinnat oikeassa valuutassa if ($oleasrow["valkoodi"] != $yhtiorow["valkoodi"]) { $myyntihinta = hintapyoristys($row["myyntihinta"]) . " {$yhtiorow['valkoodi']}"; $query = "SELECT *\n FROM hinnasto\n WHERE yhtio = '{$kukarow["yhtio"]}'\n AND tuoteno = '{$row["tuoteno"]}'\n AND valkoodi = '{$oleasrow["valkoodi"]}'\n AND laji = ''\n AND (\n (alkupvm <= current_date and if(loppupvm = '0000-00-00',\n '9999-12-31',\n loppupvm) >= current_date)\n or (alkupvm = '0000-00-00' and loppupvm = '0000-00-00'))\n ORDER BY ifnull(to_days(current_date) - to_days(alkupvm), 9999999999999)\n LIMIT 1"; $olhires = pupe_query($query); if (mysql_num_rows($olhires) == 1) { $olhirow = mysql_fetch_assoc($olhires); $myyntihinta = hintapyoristys($olhirow["hinta"]) . " {$olhirow['valkoodi']}"; } elseif ($valuurow["kurssi"] != 0) { $myyntihinta = hintapyoristys(laskuval($row["myyntihinta"], $valuurow["kurssi"])) . " {$oleasrow['valkoodi']}"; } } } else { $query = "SELECT DISTINCT valkoodi,\n maa\n FROM hinnasto\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tuoteno = '{$row['tuoteno']}'\n AND laji = ''\n ORDER BY maa, valkoodi"; $hintavalresult = pupe_query($query); while ($hintavalrow = mysql_fetch_assoc($hintavalresult)) { // katotaan onko tuotteelle valuuttahintoja $query = "SELECT *\n FROM hinnasto\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tuoteno = '{$row['tuoteno']}'\n AND valkoodi = '{$hintavalrow['valkoodi']}'\n AND maa = '{$hintavalrow['maa']}'\n AND laji = ''\n AND (\n (alkupvm <= current_date and if(loppupvm = '0000-00-00',\n '9999-12-31',\n loppupvm) >= current_date)\n or (alkupvm = '0000-00-00' and loppupvm = '0000-00-00'))\n ORDER BY ifnull(to_days(current_date) - to_days(alkupvm), 9999999999999)\n LIMIT 1"; $hintaresult = pupe_query($query); while ($hintarow = mysql_fetch_assoc($hintaresult)) { $myyntihinta .= "<br>{$hintarow['maa']}: " . hintapyoristys($hintarow["hinta"]) . " {$hintarow['valkoodi']}"; } } } echo "<td valign='top' class='{$vari}' align='right' {$classmidl} nowrap>"; if ($hinta_rajaus != "") { echo '<font style="text-decoration:line-through;">' . hintapyoristys($row["myymalahinta"]) . ' ' . $yhtiorow["valkoodi"] . '</font></br>'; } if ($poistetut != "" and $kukarow["extranet"] != "") { echo " <font class='green'>{$myyntihinta}</font>"; } else { echo $myyntihinta; } if ($lisatiedot != "" and $kukarow["extranet"] == "") { echo "<br>" . hintapyoristys($row["nettohinta"]) . " {$yhtiorow['valkoodi']}"; } echo "</td>"; } }
foreach ($_tuotteet as $_tuoteno_arr) { if ($_tuoteno_arr['tuoteno'] != $row['tuoteno']) { if ($i == 6) { break; } $vastaava_saldo = saldo_funktio($_tuoteno_arr['tuoteno'], $varastot_yhtiot, $varastot, $paikoittain, $lisa, $row['yhtio']); $vastaava_myydy_kappaleet = myydyt_kappaleet($row['yhtio'], $_tuoteno_arr['tuoteno'], $apvm, $lpvm, $lisa, $ei_vienteja_lisa, $ei_asiakkaan_myynteja_lisa); $tuotteen_toimittajat = hae_tuotteen_toimittajat($_tuoteno_arr['tuoteno']); $trow = hae_tuote($_tuoteno_arr['tuoteno']); $ostohinta = ""; $tuotteen_toimittajat_string = ""; foreach ($tuotteen_toimittajat as $tuotteen_toimittaja) { $laskurow_temp = array('liitostunnus' => $tuotteen_toimittaja['liitostunnus'], 'valkoodi' => $tuotteen_toimittaja['valkoodi'], 'vienti_kurssi' => $tuotteen_toimittaja['kurssi'], 'ytunnus' => $tuotteen_toimittaja['ytunnus']); list($ostohinta_temp, $netto, $alennus, ) = alehinta_osto($laskurow_temp, $trow, 1, '', '', ''); if (empty($netto)) { $ostohinta_temp = $ostohinta_temp * generoi_alekentta_php($alennus, 'O', 'kerto', 'EI'); } $ostohinta .= sprintf('%.2f', $ostohinta_temp) . ' / '; $tuotteen_toimittajat_string .= $tuotteen_toimittaja['toimittajan_nimi'] . ' / '; } $ostohinta = substr($ostohinta, 0, -3); $tuotteen_toimittajat_string = substr($tuotteen_toimittajat_string, 0, -3); $vastaava_ennp_myynti = kappaleet_tila_myynti($_tuoteno_arr['tuoteno'], $row['yhtio'], $lisavarattu, $varastosiirtolisa, $ei_vienteja_lisa, $ei_asiakkaan_myynteja_lisa); $vastaava_ennp_osto = kappaleet_tila_osto($_tuoteno_arr['tuoteno'], $row['yhtio'], $lisavarattu, $varastolisa); $vastaava_ennp = $vastaava_ennp_myynti + $vastaava_ennp_osto; if ($valitut["SARAKE{$_x}"] != '') { //tuoteno $rivi .= "\"{$_tuoteno_arr['tuoteno']}\"\t"; $worksheet->write($excelrivi, $excelsarake, $_tuoteno_arr["tuoteno"]); $excelsarake++; }
function xf02($tanaan, $xf02loppulause) { global $path_xf02, $yhtiorow, $tuoterajaukset, $toimirajaus; echo "TULOSTETAAN xf02...\n"; $valuuttaQ = "SELECT nimi, kurssi\n FROM valuu\n WHERE yhtio = '{$yhtiorow['yhtio']}'"; $resaluutta = pupe_query($valuuttaQ); $valuutat = array(); while ($valurow = mysql_fetch_assoc($resaluutta)) { $valuutat[$valurow["nimi"]] = $valurow["kurssi"]; } $kyselyxfo2 = "SELECT tuote.tuoteno,\n tuote.tuotekorkeus,\n tuote.tuoteleveys,\n tuote.tuotesyvyys,\n tuote.nimitys,\n tuote.status,\n tuote.suoratoimitus,\n tuote.epakurantti25pvm epakura,\n tuote.ostoehdotus,\n (\n SELECT korv.tuoteno\n FROM korvaavat AS korv\n WHERE korv.yhtio = tuote.yhtio\n AND korv.id = korvaavat.id\n ORDER BY if(korv.jarjestys = 0, 9999, korv.jarjestys), korv.tuoteno\n LIMIT 1\n ) korvaavatuoteno,\n round((abc_aputaulu.summa / abc_aputaulu.kpl),4) as KAhinta,\n round(tuote.tuotemassa,3) tuotemassa,\n round(((tuote.tuotekorkeus * tuote.tuoteleveys * tuote.tuotesyvyys)/1000000000),4) as tilavuus\n FROM tuote use index (tuoteno_index)\n LEFT JOIN abc_aputaulu use index (yhtio_tyyppi_tuoteno) ON (abc_aputaulu.yhtio=tuote.yhtio AND abc_aputaulu.tyyppi='TM' AND tuote.tuoteno=abc_aputaulu.tuoteno)\n LEFT JOIN korvaavat ON (korvaavat.yhtio = tuote.yhtio AND korvaavat.tuoteno = tuote.tuoteno)\n WHERE tuote.yhtio = '{$yhtiorow['yhtio']}' {$tuoterajaukset}\n GROUP BY tuote.tuoteno, tuote.tuotekorkeus, tuote.tuoteleveys, tuote.tuotesyvyys, tuote.nimitys, tuote.status, tuote.suoratoimitus, tuote.epakurantti25pvm, tuote.ostoehdotus, korvaavatuoteno\n HAVING (korvaavatuoteno = tuote.tuoteno OR korvaavatuoteno is null)\n ORDER BY 1"; $rests = pupe_query($kyselyxfo2); $rows = mysql_num_rows($rests); $fp = fopen($path_xf02, 'w+'); while ($xf02 = mysql_fetch_assoc($rests)) { $query = "SELECT\n toimi.ytunnus,\n toimi.tunnus,\n tuotteen_toimittajat.valuutta,\n toimi.toimittajanro,\n tuotteen_toimittajat.ostohinta,\n ROUND(tuotteen_toimittajat.pakkauskoko, 0) ostokpl,\n toimi.tyyppi\n FROM tuotteen_toimittajat use index (yhtio_tuoteno)\n JOIN toimi on (toimi.yhtio = tuotteen_toimittajat.yhtio AND tuotteen_toimittajat.liitostunnus = toimi.tunnus {$toimirajaus})\n WHERE tuotteen_toimittajat.yhtio = '{$yhtiorow['yhtio']}'\n AND tuotteen_toimittajat.tuoteno = '{$xf02['tuoteno']}'\n ORDER BY if(tuotteen_toimittajat.jarjestys = 0, 9999, tuotteen_toimittajat.jarjestys), tuotteen_toimittajat.tunnus\n LIMIT 1"; $rest_toimittajista = pupe_query($query); $toim_row = mysql_fetch_assoc($rest_toimittajista); if ($toim_row['toimittajanro'] == '' or $toim_row['tyyppi'] == 'P') { continue; } // Hetaan ostohinta $laskurow = array(); $laskurow["liitostunnus"] = $toim_row["tunnus"]; $laskurow["valkoodi"] = $toim_row["valuutta"]; $laskurow["vienti_kurssi"] = (isset($valuutat[$toim_row["valuutta"]]) and $valuutat[$toim_row["valuutta"]] > 0) ? $valuutat[$toim_row["valuutta"]] : 1; $laskurow["ytunnus"] = $toim_row["ytunnus"]; $tuote_row = array(); $tuote_row["tuoteno"] = $xf02["tuoteno"]; list($hinta, $netto, $ale, $valuutta) = alehinta_osto($laskurow, $tuote_row, 1, "", "", ""); // Muutetaan valuuttahinta euroiksi. if (trim(strtoupper($valuutta)) != trim(strtoupper($yhtiorow["valkoodi"]))) { $hinta = $hinta * $laskurow["vienti_kurssi"]; } $alennukset = generoi_alekentta_php($ale, 'O', 'kerto'); $ostonetto = sprintf("%01.4f", round($hinta * $alennukset, 4)); $tilavuus = $xf02['tilavuus']; if ($tilavuus > 99) { $tilavuus = '9999999'; } else { $tilavuus = $tilavuus * 1000; $tilavuus = str_replace('.', '', $tilavuus); } $KA_myynti_hinta = $xf02['KAhinta']; if ($KA_myynti_hinta == '') { if ($ostonetto == 999999999) { $KA_myynti_hinta = 999999999; } else { $KA_myynti_hinta = sprintf("%.4f", $ostonetto * 1.3); } } if ($xf02['status'] == 'T') { $tuotestatus = 'M'; //tehdastoimitustuotteet } elseif ($xf02['ostoehdotus'] == 'E') { $tuotestatus = 'D'; //ostoehdotus=no tuotteet tänne } else { $tuotestatus = 'R'; } if ($toim_row['ostokpl'] == '0') { $toim_row['ostokpl'] = '1'; } $out = sprintf("%-8.8s", $toim_row['toimittajanro']); //XVNDR $out .= sprintf("%-18.18s", $xf02['tuoteno']); //XITEM $out .= sprintf("%-3.3s", "001"); //XWHSE $out .= sprintf("%013.13s", str_replace('.', '', $ostonetto)); //XPCHP $out .= sprintf("%013.13s", str_replace('.', '', $KA_myynti_hinta)); //XSLSP $out .= sprintf("%07.7s", $toim_row['ostokpl']); //XPACK $out .= sprintf("%07.7s", "1"); //XMINQ $out .= sprintf("%07.7s", str_replace('.', '', $xf02['tuotemassa'])); //XWGHT $out .= sprintf("%07.7s", $tilavuus); //XVOLM $out .= sprintf("%-35.35s", trim($xf02['nimitys'])); //XNAME $out .= sprintf("%-2.2s", ""); //XUOMS $out .= sprintf("%-1.1s", $tuotestatus); //XDWO $out .= sprintf("%-18.18s", ""); //XSEQ# $out .= sprintf("%-1.1s", ""); //XDELET if (!fwrite($fp, $out . "\n")) { echo "Failed writing row.\n"; die; } } if (!fwrite($fp, $xf02loppulause . "\n")) { echo "Failed writing row.\n"; die; } fclose($fp); }