also das problem warum der preis nicht beim erfassen angezeigt wird ist, dass beim erfassen die default gruppe eines anderen vendors drinne steht.
in der datenbank gibts die tabelle jos_vm_shopper_group. löscht man die gruppe so gehts wieder, aber nur dann wenn der andere vendor nicht mehr auf dem produkt eingetragen ist... bzw das muss ich noch genau testen.
hat da jemand eine idee wie man das lösen kann? also ich mein, wie ich einen anderen vendor eintrage obwohl es der uhrsprüngliche sein soll? die abrechnung wird von handgemacht, somit ist das nicht weiters schlimm.
hier noch der code, der mich drauf gebracht hat...
Code:
function add(&$d) {
global $vmLogger, $VM_LANG;
if (!$this->validate($d)) {
return false;
}
if( $d["product_price"] === '') {
$vmLogger->err( $VM_LANG->_('VM_PRODUCT_PRICE_NOTENTERED',false) );
return false;
}
$timestamp = time();
if (empty($d["product_price_vdate"])) $d["product_price_vdate"] = '';
if (empty($d["product_price_edate"])) $d["product_price_edate"] = '';
$fields = array('product_id' => $d["product_id"],
'shopper_group_id' => vmRequest::getInt('shopper_group_id'),
'product_price' => vmRequest::getFloat('product_price'),
'product_currency' => vmGet($d, 'product_currency' ),
'product_price_vdate' => vmGet($d, 'product_price_vdate'),
'product_price_edate' => vmGet($d, 'product_price_edate'),
'cdate' => $timestamp,
'mdate' => $timestamp,
'price_quantity_start' => vmRequest::getInt('price_quantity_start'),
'price_quantity_end' =>vmRequest::getInt('price_quantity_end')
);
$db = new ps_DB;
$db->buildQuery('INSERT', '#__{vm}_product_price', $fields );
if( $db->query() !== false ) {
$_REQUEST['product_price_id'] = $db->last_insert_id();
$vmLogger->info( $VM_LANG->_('VM_PRODUCT_PRICE_ADDED',false));
return true;
}
$vmLogger->err( $VM_LANG->_('VM_PRODUCT_PRICE_ADDING_FAILED',false) );
return false;
}
buildQuery ist eine function, die aus den mitgelieferten parametern das query bildet

wie der name schon sagt.
das query stimmt, die add und update funktionen stimmen, nun ist der fehler in der anzeige.
hier noch der code der das query generiert.
Code:
function buildQuery( $type='INSERT', $table, $values, $whereClause='', $doNotEnclose=array() ) {
global $vmLogger;
if( empty($table) || empty($values)) {
return;
}
$table = trim( $table );
$type = trim( $type );
$type = strtoupper($type);
switch( $type ) {
case 'INSERT':
case 'REPLACE':
$q = "$type INTO `$table` (`";
$q .= implode( "`,\n`", array_keys($values) );
$q .= "`) VALUES (\n";
$count = count( $values );
$i = 1;
foreach ( $values as $key => $value ) {
if( in_array( $key, $doNotEnclose )) {
// Important when using MySQL functions like "AES_ENCRYPT", "ENCODE", "REPLACE" or such
$q .= $value;
}
else {
$q .= '\'' . $this->getEscaped($value)."'\n";
}
if( $i++ < $count ) {
$q.= ',';
}
}
$q .= ')';
break;
case 'UPDATE':
$q = "UPDATE `$table` SET ";
$count = count( $values );
$i = 1;
foreach ( $values as $key => $value ) {
$q .= "`$key` = '" . $this->getEscaped($value)."'";
if( $i++ < $count ) {
$q.= ",\n";
}
}
$q .= "\n$whereClause";
break;
default:
$vmLogger->debug( 'Function '.__FUNCTION__.' can\'t build a query of the type "'.$type.'"' );
return;
}
$this->setQuery( $q );
}
Mit den attributten häng ich aber immer noch etwas in der luft xD weitersuchen