Sortierreihenfolge Variation.php und VariationWert.php für XTCModified

blackship

Aktives Mitglied
28. Mai 2009
41
0
Österreich
Hallo,

vorweg.
Ich weiß, dass es keinen Support für andere Shopsysteme gibt.
Vielleicht hätte doch jemand eine Lösungvorschlag für mich.


Variationen werden problemlos in den XTCModified übertragen. Einzig die Sortierreihenfolge nicht.
Das liegt ja daran, dass die Felder

HTML:
products_options_sortorder
in der
HTML:
products_options

und die Felder:

HTML:
products_options_values_sortorder
in der
HTML:
products_options_values

aus der Variation.php und VariationWert.php nicht angesprochen werden.

In der Variation.php oder VariationWert.php, müsste ich diese DB-Felder anführen. Weiß aber nicht an welcher Stelle.

PHP:
            //hol products_options_id
            $cur_query = eS_execute_query("select products_options_id from products_options where language_id=".$einstellungen->languages_id." and products_options_name=\"$Eigenschaft->cName\"");
            $options_id = mysql_fetch_object($cur_query);
            if (!$options_id->products_options_id)
            {
                //erstelle eigenschaft
                //hole max PK
                $cur_query = eS_execute_query("select max(products_options_id) from products_options");
                $max_id_arr = mysql_fetch_row($cur_query);
                $options_id->products_options_id = $max_id_arr[0]+1;
                eS_execute_query("insert into products_options (products_options_id,language_id,products_options_name) values ($options_id->products_options_id,$einstellungen->languages_id,\"$Eigenschaft->cName\")");
                
                //erstelle leere description für alle anderen Sprachen
                $sonstigeSprachen = getSonstigeSprachen($einstellungen->languages_id);
                if (is_array($sonstigeSprachen))
                {
                    foreach ($sonstigeSprachen as $sonstigeSprache)
                    {
                        eS_execute_query("insert into products_options (products_options_id,language_id,products_options_name) values ($options_id->products_options_id,$sonstigeSprache,\"$Eigenschaft->cName\")");

Ich habe schon einige Versuche vorgenommen, leider ohne Erfolg.

Irgendwie so sollte es ja so aussehen:

PHP:
products_options_sortorder=\"$Eigenschaft->nSort

Hat jemand eine Idee?
 

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.270
687
AW: Sortierreihenfolge Variation.php und VariationWert.php für XTCModified

Wenn du eine Lösung hast, würde diese mich im Connector auch interessieren!

Ich habe das im Shop lösen lassen, frag mich nicht wie ;)
 

chris99

Aktives Mitglied
3. Oktober 2007
173
0
AW: Sortierreihenfolge Variation.php und VariationWert.php für XTCModified

Mir liegt der Connector nicht vor und ich arbeite auch nicht mit xtc: modified, foldendes sollte aber funktionieren (vorher mal lokal ausprobieren):

Variation.php:

Oben, wo die Post-Variable ausgelesen wird, folgendes hinzufügen:

Code:
$Eigenschaft->nSort = intval($_POST["Sort"]);
(Falls es nicht schon drinne steht)


Beide
Code:
eS_execute_query("insert into products_options (products_options_id,language_id,products_options_name) values ($options_id->products_options_id,$einstellungen->languages_id,\"$Eigenschaft->cName\")");

Ersetzen durch:

Code:
eS_execute_query("insert into products_options (products_options_id,language_id,products_options_name,[B]products_options_sortorder[/B]) values ($options_id->products_options_id,$einstellungen->languages_id,\"$Eigenschaft->cName\",[B]$Eigenschaft->nSort[/B])");


VariationWert.php
Kannst du den Dateiinhalt mal reinstellen? Im Original-Connector wars jedenfalls mit drinne. Dort wird aber die Tabelle products_attributes angesprochen.
 

chris99

Aktives Mitglied
3. Oktober 2007
173
0
AW: Sortierreihenfolge Variation.php und VariationWert.php für XTCModified

Die habe ich bereits. Wurde beim XTC: Modified Connector in der Datei nichts geändert?
 

crahlfs

Aktives Mitglied
21. April 2010
82
1
AW: Sortierreihenfolge Variation.php und VariationWert.php für XTCModified

Moin,
mich würde die Lösung auch interessieren. Leider findet man weder im Modified Forum noch hier ein fertige Lösung. Die Variationen werden sortiert. Nur die Sortierung der Werte werden nicht übertragen! Generell werden diese global gesetzt, das stimmt. Nur gar nicht setzen, ist auch keine Lösung :)

Hier der Quellcode der Variation.php:
PHP:
<?php
/**
 * jtlwawi_connector/dbeS/Variation.php
 * Synchronisationsscript
 * 
 * Es gelten die Nutzungs- und Lizenzhinweise unter http://www.jtl-software.de/jtlwawi.php
 * 
 * @author JTL-Software <thomas@jtl-software.de>
 * @copyright 2006, JTL-Software
 * @link http://jtl-software.de/jtlwawi.php
 * @version v1.01 / 16.09.06
*/

require_once("syncinclude.php");

$return=3;
if (auth())
{
    if (intval($_POST["action"]) == 1 && intval($_POST['KeyEigenschaft']))
    {        
        $Eigenschaft->kEigenschaft = intval($_POST["KeyEigenschaft"]);
        $Eigenschaft->kArtikel = intval($_POST["KeyArtikel"]);
        $Eigenschaft->cName = realEscape($_POST["Name"]);
        $Eigenschaft->nSort = intval($_POST["Sort"]);

        //hole products_id
        $products_id = getFremdArtikel($Eigenschaft->kArtikel);
        if ($products_id>0)
        {
            //hole einstellungen
            $cur_query = eS_execute_query("select languages_id from eazysales_einstellungen");
            $einstellungen = mysql_fetch_object($cur_query);
            
            //hol products_options_id
            $cur_query = eS_execute_query("select products_options_id from products_options where language_id=".$einstellungen->languages_id." and products_options_name=\"$Eigenschaft->cName\"");
            $options_id = mysql_fetch_object($cur_query);
            if (!$options_id->products_options_id)
            {
                //erstelle eigenschaft
                //hole max PK
                $cur_query = eS_execute_query("select max(products_options_id) from products_options");
                $max_id_arr = mysql_fetch_row($cur_query);
                $options_id->products_options_id = $max_id_arr[0]+1;
                eS_execute_query("insert into products_options (products_options_id,language_id,products_options_name,products_options_sortorder) values ($options_id->products_options_id,$einstellungen->languages_id,\"$Eigenschaft->cName\",$Eigenschaft->nSort)");
                
                //erstelle leere description für alle anderen Sprachen
                $sonstigeSprachen = getSonstigeSprachen($einstellungen->languages_id);
                if (is_array($sonstigeSprachen))
                {
                    foreach ($sonstigeSprachen as $sonstigeSprache)
                    {
                eS_execute_query("insert into products_options (products_options_id,language_id,products_options_name,products_options_sortorder) values ($options_id->products_options_id,$einstellungen->languages_id,\"$Eigenschaft->cName\",$Eigenschaft->nSort)");
                    }
                }
            }
            //mapping zu variation 
            setMappingEigenschaft($Eigenschaft->kEigenschaft,$options_id->products_options_id,$Eigenschaft->kArtikel);
            $return = 0;
        }
     }
    else
        $return=5;
}

mysql_close();
echo($return);
logge($return);
?>

Hier der Variationswert.php:
PHP:
<?php
/**
 * jtlwawi_connector/dbeS/VariationsWert.php
 * Synchronisationsscript
 * 
 * Es gelten die Nutzungs- und Lizenzhinweise unter http://www.jtl-software.de/jtlwawi.php
 * 
 * @author JTL-Software <thomas@jtl-software.de>
 * @copyright 2006, JTL-Software
 * @link http://jtl-software.de/jtlwawi.php
 * @version v1.01 / 17.09.06
*/

require_once("syncinclude.php");

$return=3;
if (auth())
{
    if (intval($_POST["action"]) == 1 && intval($_POST['KeyEigenschaftWert']))
    {
        $return = 0;
        
        $EigenschaftWert->kEigenschaftWert = intval($_POST["KeyEigenschaftWert"]);
        $EigenschaftWert->kEigenschaft = intval($_POST["KeyEigenschaft"]);
        $EigenschaftWert->fAufpreis = floatval($_POST["Aufpreis"]);
        $EigenschaftWert->cName = realEscape($_POST["Name"]);
        $EigenschaftWert->nSort = intval($_POST["Sort"]);
        $EigenschaftWert->nLager = intval($_POST["Lager"]);
        $EigenschaftWert->cArtikelNr = realEscape($_POST["ArtikelNr"]);
        $EigenschaftWert->fGewichtDiff = floatval($_POST["GewichtDiff"]);

        //hole einstellungen
        $cur_query = eS_execute_query("select languages_id, tax_class_id, tax_zone_id from eazysales_einstellungen");
        $einstellungen = mysql_fetch_object($cur_query);
        
        $products_options_id = getFremdEigenschaft($EigenschaftWert->kEigenschaft);
        if ($products_options_id>0)
        {
            //schaue, ob dieser EigenschaftsWert bereits global existiert für diese Eigenschaft!!
            $cur_query = eS_execute_query("select products_options_values.products_options_values_id from products_options_values, products_options_values_to_products_options where products_options_values_to_products_options.products_options_id=$products_options_id and products_options_values_to_products_options.products_options_values_id=products_options_values.products_options_values_id and products_options_values.language_id=$einstellungen->languages_id and products_options_values.products_options_values_name=\"$EigenschaftWert->cName\"");
            $options_values = mysql_fetch_object($cur_query);
            
            if (!$options_values->products_options_values_id)
            {
                //erstelle diesen Wert global
                //hole max PK
                $cur_query = eS_execute_query("select max(products_options_values_id) from products_options_values");
                $max_id_arr = mysql_fetch_row($cur_query);
                $options_values->products_options_values_id = $max_id_arr[0]+1;
                eS_execute_query("insert into products_options_values (products_options_values_id,language_id,products_options_values_name) values ($options_values->products_options_values_id,$einstellungen->languages_id,\"$EigenschaftWert->cName\")");            
                
                //erstelle leere description für alle anderen Sprachen
                $sonstigeSprachen = getSonstigeSprachen($einstellungen->languages_id);
                if (is_array($sonstigeSprachen))
                {
                    foreach ($sonstigeSprachen as $sonstigeSprache)
                    {
                        eS_execute_query("insert into products_options_values (products_options_values_id,language_id,products_options_values_name) values ($options_values->products_options_values_id,$sonstigeSprache,\"$EigenschaftWert->cName\")");
                    }
                }
                
                //erstelle verknüpfung zwischen wert und eig
                eS_execute_query("insert into products_options_values_to_products_options (products_options_id,products_options_values_id) values($products_options_id,$options_values->products_options_values_id)");
            }
        
            //erstelle product_attribute
            $kArtikel = getEigenschaftsArtikel($EigenschaftWert->kEigenschaft);
            if ($kArtikel>0)
            {
                $products_id = getFremdArtikel($kArtikel);
                if ($products_id>0)
                {
                    //hole products_tax_class_id
                    $cur_query = eS_execute_query("select products_tax_class_id from products where products_id=".$products_id);
                    $cur_tax = mysql_fetch_object($cur_query);
                    $Aufpreis = ($EigenschaftWert->fAufpreis/(100+get_tax($cur_tax->products_tax_class_id)))*100;
                    $Aufpreis_prefix = "+";
                    if ($Aufpreis<0)
                    {
                        $Aufpreis_prefix = "-";
                        $Aufpreis*=-1;
                    }
                    $Gewicht_prefix = "+";
                    if ($EigenschaftWert->fGewichtDiff<0)
                    {
                        $Gewicht_prefix = "-";
                        $EigenschaftWert->fGewichtDiff*=-1;
                    }
                    eS_execute_query("insert into products_attributes (
                                                    products_id,
                                                    options_id,
                                                    options_values_id,
                                                    options_values_price,
                                                    price_prefix,
                                                    attributes_model,
                                                    attributes_stock,
                                                    options_values_weight,
                                                    weight_prefix,
                                                    sortorder) 
                                                    values(
                                                    $products_id,
                                                    $products_options_id,
                                                    $options_values->products_options_values_id,
                                                    $Aufpreis,
                                                    \"".$Aufpreis_prefix."\",
                                                    \"".$EigenschaftWert->cArtikelNr."\",
                                                    $EigenschaftWert->nLager,
                                                    $EigenschaftWert->fGewichtDiff,
                                                    \"".$Gewicht_prefix."\",
                                                    $EigenschaftWert->nSort)");
                    $query = eS_execute_query("select LAST_INSERT_ID()");
                    $last_attribute_id_arr = mysql_fetch_row($query);                    
                    setMappingEigenschaftsWert($EigenschaftWert->kEigenschaftWert, $last_attribute_id_arr[0], $kArtikel);
                }
            }
        }
     }
    else
        $return=5;
}

mysql_close();
echo($return);
logge($return);
?>

Ich habe deinen Vorschlag der Anpassung eingefügt, nur werden die Variationswert Sortierungen immer noch nicht übertragen...
Gruß und vielen Dank :)
Christoph