$header = "code;name;country\n"; fwrite($fp, $header); $toimittajarajaus = ""; // Haetaan aika jolloin tämä skripti on viimeksi ajettu $datetime_checkpoint = cron_aikaleima("RELEX_SUPL_CRON"); // Otetaan mukaan vain edellisen ajon jälkeen muuttuneet if ($paiva_ajo and $datetime_checkpoint != "") { $toimittajarajaus = " AND (toimi.muutospvm > '{$datetime_checkpoint}' or toimi.luontiaika > '{$datetime_checkpoint}')"; } elseif ($paiva_ajo) { $toimittajarajaus = " AND (toimi.muutospvm >= date_sub(now(), interval 24 HOUR) or toimi.luontiaika >= date_sub(now(), interval 24 HOUR))"; } // Haetaan toimittajat $query = "SELECT\n yhtio.maa,\n toimi.tunnus,\n concat_ws(' ', toimi.nimi, toimi.nimitark) nimi,\n toimi.maa toimittajan_maa\n FROM toimi\n JOIN yhtio ON (toimi.yhtio = yhtio.yhtio)\n WHERE toimi.yhtio = '{$yhtio}'\n AND toimi.oletus_vienti in ('C','F','I')\n AND toimi.toimittajanro not in ('0','')\n AND toimi.tyyppi = ''\n {$toimittajarajaus}\n ORDER BY toimi.tunnus"; $res = pupe_query($query); // Tallennetaan aikaleima cron_aikaleima("RELEX_SUPL_CRON", date('Y-m-d H:i:s')); // Kerrotaan montako riviä käsitellään $rows = mysql_num_rows($res); echo date("d.m.Y @ G:i:s") . ": Relex Toimittajarivejä {$rows} kappaletta.\n"; $k_rivi = 0; while ($row = mysql_fetch_assoc($res)) { $rivi = "{$row['maa']}-{$row['tunnus']};"; $rivi .= pupesoft_csvstring($row['nimi']) . ";"; $rivi .= pupesoft_csvstring($row['toimittajan_maa']); $rivi .= "\n"; fwrite($fp, $rivi); $k_rivi++; } fclose($fp); // Tehdään FTP-siirto if (($paiva_ajo or $weekly_ajo) and !empty($relex_ftphost)) {
// kerätyt myyntirivit (ei normihyväreitä, mutta kerätyt reklamatiot kyllä) // kerätyt siirtorivit (paitsi sisäiset siirrot, eikä kirjanpidollisia siirtoja) // kerätyt kulutukset $query_ale_lisa = generoi_alekentta('M'); $query = "(SELECT\n yhtio.maa,\n tapahtuma.laadittu laadittu,\n date_format(tapahtuma.laadittu, '%Y-%m-%d') pvm,\n tapahtuma.varasto,\n tapahtuma.tuoteno,\n tapahtuma.laji,\n tapahtuma.kpl,\n if (tapahtuma.laji = 'tulo', tapahtuma.kplhinta, tapahtuma.hinta) kplhinta,\n lasku.tilaustyyppi,\n lasku.varasto lahdevarasto,\n lasku.clearing vastaanottovarasto,\n lasku.liitostunnus,\n tapahtuma.tunnus as sorttaustunnus,\n if (lasku.tila is not null and lasku.tila = 'G' and tapahtuma.kpl < 0, 1, 0) keratty_siirto,\n if (tapahtuma.laji = 'laskutus' and (tapahtuma.kpl < 0 or tapahtuma.kpl > 0 and lasku.tilaustyyppi = 'R'), 1, 0) keratty_myynti,\n if (tapahtuma.laji = 'siirto' and (tilausrivi.varasto = lasku.clearing or lasku.chn = 'KIR'), 1, 0) sisainen_tai_kir_siirto\n FROM tapahtuma\n JOIN tuote ON (tuote.yhtio = tapahtuma.yhtio\n AND tuote.tuoteno = tapahtuma.tuoteno\n {$tuoterajaus})\n JOIN yhtio ON (tapahtuma.yhtio = yhtio.yhtio)\n LEFT JOIN tilausrivi USE INDEX (PRIMARY) ON (tilausrivi.yhtio = tapahtuma.yhtio and tilausrivi.tunnus = tapahtuma.rivitunnus)\n LEFT JOIN lasku USE INDEX (PRIMARY) ON (lasku.yhtio = tilausrivi.yhtio and lasku.tunnus = tilausrivi.otunnus)\n WHERE tapahtuma.yhtio = '{$yhtio}'\n AND tapahtuma.laji in ('laskutus', 'tulo', 'siirto', 'valmistus','inventointi')\n AND tapahtuma.kpl != 0\n {$tapahtumarajaus}\n HAVING keratty_siirto = 0 AND keratty_myynti = 0 AND sisainen_tai_kir_siirto = 0)\n\n UNION\n\n (SELECT\n yhtio.maa,\n tilausrivi.kerattyaika laadittu,\n date_format(tilausrivi.kerattyaika, '%Y-%m-%d') pvm,\n if (tilausrivi.tyyppi = 'L' and lasku.varastosiirto_tunnus > 0, kirjanpidollinen_siirto.varasto, tilausrivi.varasto) varasto,\n tilausrivi.tuoteno,\n if (tilausrivi.tyyppi='G', 'siirtolista', 'myynti') laji,\n (tilausrivi.kpl+tilausrivi.varattu) * -1 kpl,\n if (tilausrivi.tyyppi='G', tuote.kehahin, round(tilausrivi.hinta / if ('{$yhtiorow['alv_kasittely']}' = '' and tilausrivi.alv < 500, (1+tilausrivi.alv/100), 1) * {$query_ale_lisa}, 2)) kplhinta,\n lasku.tilaustyyppi,\n lasku.varasto lahdevarasto,\n lasku.clearing vastaanottovarasto,\n lasku.liitostunnus,\n tilausrivi.tunnus as sorttaustunnus,\n '' keratty_siirto,\n '' keratty_myynti,\n if (tilausrivi.tyyppi = 'G' and (tilausrivi.varasto = lasku.clearing or lasku.chn = 'KIR'), 1, 0) sisainen_tai_kir_siirto\n FROM tilausrivi\n JOIN tuote ON (tuote.yhtio = tilausrivi.yhtio\n AND tuote.tuoteno = tilausrivi.tuoteno\n {$tuoterajaus})\n JOIN yhtio ON (tilausrivi.yhtio = yhtio.yhtio)\n JOIN lasku USE INDEX (PRIMARY) ON (lasku.yhtio = tilausrivi.yhtio and lasku.tunnus = tilausrivi.otunnus)\n LEFT JOIN lasku kirjanpidollinen_siirto USE INDEX (PRIMARY) ON (lasku.yhtio = kirjanpidollinen_siirto.yhtio and lasku.varastosiirto_tunnus = kirjanpidollinen_siirto.tunnus and lasku.varastosiirto_tunnus > 0)\n WHERE tilausrivi.yhtio = '{$yhtio}'\n AND tilausrivi.tyyppi IN ('L','G','V')\n AND (tilausrivi.varattu+tilausrivi.kpl > 0 OR (tilausrivi.varattu+tilausrivi.kpl < 0 and lasku.tilaustyyppi = 'R'))\n {$kerivirajaus}\n HAVING sisainen_tai_kir_siirto = 0)\n\n ORDER BY laadittu, tuoteno, sorttaustunnus"; $res = pupe_query($query); if ($kuukausi_ajo) { $datetime_checkpoint_uusi = "{$vuosi}-{$kuukausi}-{$vikapaiva} 23:59:59"; if (strtotime($datetime_checkpoint_uusi) > strtotime(date('Y-m-d H:i:s'))) { $datetime_checkpoint_uusi = date('Y-m-d H:i:s'); } } else { $datetime_checkpoint_uusi = date('Y-m-d H:i:s'); } // Tallennetaan aikaleima cron_aikaleima("RELEX_TRAN_CRON", $datetime_checkpoint_uusi); // Kerrotaan montako riviä käsitellään $rows = mysql_num_rows($res); echo date("d.m.Y @ G:i:s") . ": Relex Tapahtumarivejä {$rows} kappaletta.\n"; $relex_transactions = array(); while ($row = mysql_fetch_assoc($res)) { $relex_transactions[] = $row; } $k_rivi = 0; foreach ($relex_transactions as $row) { // Rivin arvo $arvo = abs(round($row['kplhinta'] * $row['kpl'], 2)); // Määritellään transaktiotyyppi switch (strtolower($row['laji'])) { case 'tulo': $type = "DELIVERY";
$tuotelista = "''"; $namaonjotsekattu = ""; $query = "SELECT tuote.tuoteno\n FROM tuote\n WHERE tuote.yhtio = '{$yhtio}'\n {$tuoterajaus}\n {$tuoteupdrajaus}"; $res = pupe_query($query); while ($row = mysql_fetch_assoc($res)) { $tuotelista .= ",'" . pupesoft_cleanstring($row["tuoteno"]) . "'"; } $query = "SELECT tuotteen_toimittajat.tuoteno\n FROM tuotteen_toimittajat\n WHERE tuotteen_toimittajat.yhtio = '{$yhtio}'\n AND tuotteen_toimittajat.tuoteno not in ({$tuotelista})\n {$tuotetoimupdrajaus}"; $res = pupe_query($query); while ($row = mysql_fetch_assoc($res)) { $tuotelista .= ",'" . pupesoft_cleanstring($row["tuoteno"]) . "'"; } $tuotteet = " AND tuote.tuoteno IN ({$tuotelista}) "; } // Tallennetaan aikaleima cron_aikaleima("RELEX_PROD_CRON", date('Y-m-d H:i:s')); // Otsikkotieto $header = "code;"; $header .= "clean_code;"; $header .= "name;"; $header .= "tuoteosasto;"; $header .= "group;"; $header .= "tuotemerkki;"; $header .= "malli;"; $header .= "mallitarkenne;"; $header .= "kuvaus;"; $header .= "lyhytkuvaus;"; $header .= "mainosteksti;"; $header .= "aleryhma;"; $header .= "purkukommentti;"; $header .= "keskihankintahinta;";
echo "verkkokauppa_saldo_varasto pitää määritellä!\n"; exit; } // Haetaan aika jolloin tämä skripti on viimeksi ajettu $datetime_checkpoint = cron_aikaleima("MYY_STATIC_CRON"); echo date("d.m.Y @ G:i:s") . " - Aloitetaan myytavissa_static-päivitys.\n"; echo date("d.m.Y @ G:i:s") . " - Haetaan saldot.\n"; if ($datetime_checkpoint != "" and $ajetaanko_kaikki == "NO") { $muutoslisa1 = "AND tapahtuma.laadittu >= '{$datetime_checkpoint}'"; $muutoslisa2 = "AND tilausrivi.laadittu >= '{$datetime_checkpoint}'"; $muutoslisa3 = "AND tuote.muutospvm >= '{$datetime_checkpoint}'"; // Haetaan saldot tuotteille, joille on tehty tunnin sisällä tilausrivi tai tapahtuma $query = "(SELECT tapahtuma.tuoteno\n FROM tapahtuma\n JOIN tuote ON (tuote.yhtio = tapahtuma.yhtio\n AND tuote.tuoteno = tapahtuma.tuoteno\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != '')\n WHERE tapahtuma.yhtio = '{$kukarow["yhtio"]}'\n {$muutoslisa1})\n\n UNION\n\n (SELECT tilausrivi.tuoteno\n FROM tilausrivi\n JOIN tuote ON (tuote.yhtio = tilausrivi.yhtio\n AND tuote.tuoteno = tilausrivi.tuoteno\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != '')\n WHERE tilausrivi.yhtio = '{$kukarow["yhtio"]}'\n {$muutoslisa2})\n\n UNION\n\n (SELECT tuote.tuoteno\n FROM tuote\n WHERE tuote.yhtio = '{$kukarow["yhtio"]}'\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != ''\n {$muutoslisa3})\n\n ORDER BY 1"; } else { $query = "SELECT tuote.tuoteno\n FROM tuote\n WHERE tuote.yhtio = '{$kukarow["yhtio"]}'\n AND tuote.status != 'P'\n AND tuote.tuotetyyppi NOT in ('A','B')\n AND tuote.tuoteno != ''\n AND tuote.nakyvyys != ''"; } $result = pupe_query($query); while ($row = mysql_fetch_assoc($result)) { foreach ($verkkokauppa_saldo_varasto as $varasto) { $query = "SELECT hyllyalue, hyllynro, hyllyvali, hyllytaso, tunnus\n FROM tuotepaikat\n WHERE yhtio = '{$kukarow["yhtio"]}'\n AND tuoteno = '{$row["tuoteno"]}'\n AND varasto = '{$varasto}'"; $tpres = pupe_query($query); while ($tprow = mysql_fetch_assoc($tpres)) { list(, , $myytavissa) = saldo_myytavissa($row["tuoteno"], '', '', '', $tprow["hyllyalue"], $tprow["hyllynro"], $tprow["hyllyvali"], $tprow["hyllytaso"]); $query = "UPDATE tuotepaikat\n SET myytavissa_static = '{$myytavissa}'\n WHERE tunnus = '{$tprow["tunnus"]}'"; pupe_query($query); } } } // Kun kaikki onnistui, päivitetään lopuksi timestamppi talteen cron_aikaleima("MYY_STATIC_CRON", date('Y-m-d H:i:s'));
$header = "code;name;customer_group\n"; fwrite($fp, $header); $asiakasrajaus = ""; // Haetaan aika jolloin tämä skripti on viimeksi ajettu $datetime_checkpoint = cron_aikaleima("RELEX_CUST_CRON"); // Otetaan mukaan vain edellisen ajon jälkeen muuttuneet if ($paiva_ajo and $datetime_checkpoint != "") { $asiakasrajaus = " AND (asiakas.muutospvm > '{$datetime_checkpoint}' or asiakas.luontiaika > '{$datetime_checkpoint}')"; } elseif ($paiva_ajo) { $asiakasrajaus = " AND (asiakas.muutospvm >= date_sub(now(), interval 24 HOUR) or asiakas.luontiaika >= date_sub(now(), interval 24 HOUR))"; } // Haetaan asiakkaat $query = "SELECT\n yhtio.maa,\n asiakas.tunnus,\n concat_ws(' ', asiakas.nimi, asiakas.nimitark) nimi,\n asiakas.ryhma\n FROM asiakas\n JOIN yhtio ON (asiakas.yhtio = yhtio.yhtio)\n WHERE asiakas.yhtio = '{$yhtio}'\n AND asiakas.laji not in ('P','R')\n {$asiakasrajaus}\n ORDER BY asiakas.tunnus"; $res = pupe_query($query); // Tallennetaan aikaleima cron_aikaleima("RELEX_CUST_CRON", date('Y-m-d H:i:s')); // Kerrotaan montako riviä käsitellään $rows = mysql_num_rows($res); echo date("d.m.Y @ G:i:s") . ": Relex asiakasrivejä {$rows} kappaletta.\n"; $k_rivi = 0; while ($row = mysql_fetch_assoc($res)) { $rivi = "{$row['maa']}-{$row['tunnus']};"; $rivi .= pupesoft_csvstring($row['nimi']) . ";"; $rivi .= pupesoft_csvstring($row['ryhma']); $rivi .= "\n"; fwrite($fp, $rivi); $k_rivi++; } fclose($fp); // Tehdään FTP-siirto if (($paiva_ajo or $weekly_ajo) and !empty($relex_ftphost)) {