示例#1
0
function loop_packet($xml_element, $parameters)
{
    global $kukarow;
    static $paketti_nro = 0;
    static $tunnus_liitetiedostoon = 0;
    $tavarantoimittajanumero = $parameters["tavarantoimittajanumero"];
    $asn_numero = $parameters["asn_numero"];
    $toimituspvm = $parameters["toimituspvm"];
    $vastaanottaja = $parameters["vastaanottaja"];
    $pakkauslista = $parameters["pakkauslista"];
    $sscc = $parameters["sscc"];
    $laatikkoind = $parameters["laatikkoind"];
    foreach ($xml_element as $key => $element) {
        // Tämä on tuote-elementti
        if ($key == "PkgItem") {
            $tuote = (string) $element->ProductId->ProductNumber;
            $tuote = utf8_decode(trim($tuote));
            $tuote2 = (string) $element->ProductId->BuyerProductNumber;
            $tuote2 = utf8_decode(trim($tuote2));
            $kpl = (double) $element->DeliveredQuantity->Quantity;
            $tilausrivinpositio = (int) $element->OrderItemRef->BuyerOrderItemRef;
            $tuotteelta_tilausno = (int) $element->OrderRef->BuyerOrderNumber;
            if ($kpl > 0.0 and $tuote != "") {
                $toim_tuoteno_wherelisa = trim($tuote2) != "" ? "AND tt.toim_tuoteno IN ('{$tuote}','{$tuote2}')" : "AND tt.toim_tuoteno = '{$tuote}'";
                $query = "SELECT tt.*\n                  FROM tuotteen_toimittajat AS tt\n                  JOIN toimi ON (toimi.yhtio = tt.yhtio AND toimi.tunnus = tt.liitostunnus AND toimi.toimittajanro = '{$tavarantoimittajanumero}' AND toimi.tyyppi != 'P')\n                  WHERE tt.yhtio = 'artr'\n                  {$toim_tuoteno_wherelisa}";
                $chk_res = pupe_query($query);
                if (mysql_num_rows($chk_res) != 0) {
                    $chk_row = mysql_fetch_assoc($chk_res);
                    $tuote = $chk_row['toim_tuoteno'];
                } elseif (mysql_num_rows($chk_res) == 0) {
                    // haetaan vaihtoehtoisten tuotenumeroiden (tuotteen_toimittajat_tuotenumerot) kautta tuotteen_toimittajat.toim_tuoteno. Osataan myös hakea vaihtoehtoinen tuotenumero ilman että
                    $chk_res = tuotteen_toimittajat_tuotenumerot_haku($tuote, $tavarantoimittajanumero);
                    if (mysql_num_rows($chk_res) != 0) {
                        $chk_row = mysql_fetch_assoc($chk_res);
                        $tuote = $chk_row['toim_tuoteno'];
                    } else {
                        if (trim($tuote2) != "") {
                            $chk_res = tuotteen_toimittajat_tuotenumerot_haku($tuote2, $tavarantoimittajanumero);
                            if (mysql_num_rows($chk_res) != 0) {
                                $chk_row = mysql_fetch_assoc($chk_res);
                                $tuote = $chk_row['toim_tuoteno'];
                            }
                        }
                    }
                }
                $query = "SELECT tuotteen_toimittajat.tuotekerroin\n                  FROM toimi\n                  JOIN tuotteen_toimittajat ON (tuotteen_toimittajat.yhtio = toimi.yhtio\n                                AND tuotteen_toimittajat.liitostunnus  = toimi.tunnus\n                                AND tuotteen_toimittajat.toim_tuoteno  = '{$tuote}'\n                                AND tuotteen_toimittajat.toim_tuoteno != '')\n                  JOIN tuote ON (tuote.yhtio = tuotteen_toimittajat.yhtio\n                          AND tuote.tuoteno                            = tuotteen_toimittajat.tuoteno\n                          AND tuote.status                            != 'P')\n                  WHERE toimi.yhtio                                    = '{$kukarow['yhtio']}'\n                  AND toimi.toimittajanro                              = '{$tavarantoimittajanumero}'\n                  AND toimi.tyyppi                                    != 'P'\n                  AND toimi.asn_sanomat                                = 'K'";
                $tuotekerroin_chk_res = pupe_query($query);
                if (mysql_num_rows($tuotekerroin_chk_res) > 0) {
                    $tuotekerroin_chk_row = mysql_fetch_assoc($tuotekerroin_chk_res);
                    if ($tuotekerroin_chk_row['tuotekerroin'] != 0) {
                        $kpl /= $tuotekerroin_chk_row['tuotekerroin'];
                    }
                }
                // tämä siksi ettei haluta tallentaa 0 rivejä kantaan.
                $sqlinsert = "INSERT INTO asn_sanomat SET\n                       yhtio              = '{$kukarow['yhtio']}',\n                       laji               = 'asn',\n                       toimittajanumero   = '{$tavarantoimittajanumero}',\n                       asn_numero         = '{$asn_numero}',\n                       sscc_koodi         = '{$sscc}',\n                       saapumispvm        = '{$toimituspvm}',\n                       vastaanottaja      = '{$vastaanottaja}',\n                       tilausnumero       = '{$tuotteelta_tilausno}',\n                       paketinnumero      = '{$paketti_nro}',\n                       paketintunniste    = '{$laatikkoind}',\n                       lahetyslistannro   = '{$pakkauslista}',\n                       toim_tuoteno       = '{$tuote}',\n                       toim_tuoteno2      = '{$tuote2}',\n                       kappalemaara       = '{$kpl}',\n                       tilausrivinpositio = '{$tilausrivinpositio}',\n                       laatija            = '{$kukarow['kuka']}',\n                       luontiaika         = now()";
                $result = pupe_query($sqlinsert);
                $tunnus_liitetiedostoon = mysql_insert_id($GLOBALS["masterlink"]);
            }
        }
        // Tämä on paketti-elementti
        if ($key == "Package") {
            $paketti_nro++;
            $parameters = array("tavarantoimittajanumero" => $tavarantoimittajanumero, "asn_numero" => $asn_numero, "toimituspvm" => $toimituspvm, "vastaanottaja" => $vastaanottaja, "pakkauslista" => $pakkauslista);
            list($_sscc, $_laatikkoind) = teccom_asn_paketti($element, $tavarantoimittajanumero, $asn_numero);
            $parameters['sscc'] = $_sscc;
            $parameters['laatikkoind'] = $_laatikkoind;
            loop_packet($element, $parameters);
        }
    }
    return $tunnus_liitetiedostoon;
}
 while ($row = mysql_fetch_assoc($result)) {
     $virhe++;
     echo "<tr>";
     $poikkeus_tuoteno = trim($row["toim_tuoteno2"]) != "" ? "AND tt.toim_tuoteno IN ('{$row[toim_tuoteno]}','{$row["toim_tuoteno2"]}')" : "AND tt.toim_tuoteno = '{$row[toim_tuoteno]}'";
     $query = "SELECT tt.*\n                FROM tuotteen_toimittajat AS tt\n                JOIN toimi ON (toimi.yhtio = tt.yhtio AND toimi.tunnus = tt.liitostunnus AND toimi.toimittajanro = '{$toimittajanumero}' AND toimi.tyyppi != 'P')\n                WHERE tt.yhtio = 'artr'\n                {$poikkeus_tuoteno}";
     $chk_res = pupe_query($query);
     if (mysql_num_rows($chk_res) == 0) {
         // haetaan vaihtoehtoisten tuotenumeroiden (tuotteen_toimittajat_tuotenumerot) kautta tuotteen_toimittajat.toim_tuoteno. Osataan myös hakea vaihtoehtoinen tuotenumero ilman että
         $chk_res = tuotteen_toimittajat_tuotenumerot_haku($row['toim_tuoteno'], $toimittajanumero);
         if (mysql_num_rows($chk_res) != 0) {
             $chk_row = mysql_fetch_assoc($chk_res);
             $row['toim_tuoteno'] = $chk_row['toim_tuoteno'];
             $poikkeus_tuoteno = trim($row["toim_tuoteno2"]) != "" ? "AND tt.toim_tuoteno IN ('{$row[toim_tuoteno]}','{$row["toim_tuoteno2"]}')" : "AND tt.toim_tuoteno = '{$row[toim_tuoteno]}'";
         } else {
             if (trim($row["toim_tuoteno2"]) != "") {
                 $chk_res = tuotteen_toimittajat_tuotenumerot_haku($row["toim_tuoteno2"], $toimittajanumero);
                 if (mysql_num_rows($chk_res) != 0) {
                     $chk_row = mysql_fetch_assoc($chk_res);
                     $row['toim_tuoteno'] = $chk_row['toim_tuoteno'];
                     $poikkeus_tuoteno = trim($row["toim_tuoteno2"]) != "" ? "AND tt.toim_tuoteno IN ('{$row[toim_tuoteno]}','{$row["toim_tuoteno2"]}')" : "AND tt.toim_tuoteno = '{$row[toim_tuoteno]}'";
                 }
             }
         }
     }
     $query = "SELECT tt.tuoteno\n                FROM tuotteen_toimittajat as tt\n                JOIN tuote on (tuote.yhtio=tt.yhtio and tt.tuoteno = tuote.tuoteno and tuote.status !='P')\n                WHERE tt.yhtio      = '{$kukarow['yhtio']}'\n                {$poikkeus_tuoteno}\n                AND tt.liitostunnus = '{$row['toimi_tunnus']}'";
     $res = pupe_query($query);
     if (mysql_num_rows($res) > 0) {
         $ttrow = mysql_fetch_assoc($res);
         $row['tuoteno'] = $ttrow['tuoteno'];
         $query = "SELECT nimitys\n                  FROM tuote\n                  WHERE yhtio = '{$kukarow['yhtio']}'\n                  AND tuoteno = '{$ttrow['tuoteno']}'";
         $tres = pupe_query($query);