Joomla! Forum Schweiz wird Teil der D-A-CH Community

Nach vielen Jahren als zentrale Anlaufstelle für Fragen rund um Joomla! in der Schweiz wird das Joomla! Forum Schweiz künftig als Archiv weitergeführt.

Die Joomla!-Communities aus Deutschland, Österreich und der Schweiz arbeiten heute enger denn je zusammen. Deshalb bündeln wir künftig auch den deutschsprachigen Support und Austausch an einem gemeinsamen Ort im Joomla! D-A-CH Forum.

Für neue Fragen, Diskussionen und den Austausch mit der Community nutzt bitte ab sofort:

forum.joomla.de

Das Joomla! Forum Schweiz bleibt weiterhin bestehen und wird als Archiv im Lesemodus erhalten. Die vielen Beiträge, Lösungen und Erfahrungen aus den vergangenen Jahren bleiben damit weiterhin zugänglich und über die Suche auffindbar.

Wir bedanken uns herzlich bei allen Mitgliedern, Moderatoren und Helfern, die das Schweizer Joomla! Forum über viele Jahre mit ihrem Wissen und ihrem Engagement geprägt haben.

Wir sehen uns im Joomla! D-A-CH Forum!

vm preise und preise in attributen

  • Silverwoolf
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
08 Apr. 2010 16:37 #25660 von Silverwoolf
vm preise und preise in attributen wurde erstellt von Silverwoolf
hallo zusammen!

bevor ich stunden damit verbringe raus zufinden an welcher stelle die preise in vm zusammen gebastelt werden, woll ich doch mal fragen ob das grad jemand weiss? meine suche fängt sonst in product.product_form.php an.

ach ja etwas konkrett sollt ich schon werden ;)

ich versuche herauszufinden warum die preise und die preise in den attributen nicht mehr gespeichert werden, wenn ein neues product angelegt wird. bei wiederholter eingabe des product preises funktioniert es, nur nicht bei den attributen, es sei den ein + oder - steht davor.

besten dank für jeden tipp
Mehr
08 Apr. 2010 19:27 #25667 von jimbo
Der Preis in den Attributen ist soweit ich weiss die Differenz zum normalen Preis, das wäre auch die logische Erklärung für das benötigte +/-. Wenn Du in der VM-Konfig den Debug-Modus aktivierst, solltest Du auf der Seite angezeigt bekommen, woher was kommt.

Gruss Dany (Jimbo)
Kein Support per PN.
  • Silverwoolf
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
09 Apr. 2010 07:58 #25675 von Silverwoolf
Silverwoolf antwortete auf Re: vm preise und preise in attributen
das stimmt ja so nicht ganz, siehe anhang ;)
ja und dr debugmodus gibt mir product.product_form.php an ;)
am besten wäre das entwickler forum, wahrscheinlich zu doof um das zu finden :/
Mehr
09 Apr. 2010 12:37 #25682 von jimbo
Okay – sorry, im Backend funktioniert der Debugmode vermutlich nicht. Und wie es scheint (laut Beschreibung) müsste das auch ohne Vorzeichen gehen, da kann ich auch nicht weiter helfen... :-[ [

Gruss Dany (Jimbo)
Kein Support per PN.
  • Silverwoolf
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
12 Apr. 2010 07:55 #25759 von Silverwoolf
Silverwoolf antwortete auf Re: vm preise und preise in attributen
weisst du evtl wo das entwickler forum ist? ja okay auf em vmforum, aber iwie hab ich da nix gesehen :)

der debugmodus läuft auch im backend. da aber die form ist, welche die ausgabe der seite macht, so steht nur diese im backend.
es soll ja noch ne neue vm version kommen, wurde im februar diesen jahres angekündigt, der termin ist noch unbekannt. dort sollen das multivendor zeugs schon besser implementiert sein, und solche bugs nemma vorhanden sein. -> beta? Oo
Mehr
12 Apr. 2010 11:24 #25760 von patrick
Hi

Meinst du das hier:
--ALTER LINK WURDE ENTFERNT--

Grüsse
Patrick

InitCom: Webagentur für Webdesign // CMS Joomla! // PrestaShop
  • Silverwoolf
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
12 Apr. 2010 11:45 #25761 von Silverwoolf
Silverwoolf antwortete auf Re: vm preise und preise in attributen
ja genau, ich finds en bissel unübersichtlich naja ;)

in der zwischenzeit hab ich mal rausgefunden wo das update gemacht wird. leider heissen alle functions gleich, was das suchen, wo es ausgeführt wird nicht besser macht.

hier mal der code für jene die es interessiert ;) zu finden in der ps_product_price.php unter administrator/components/com_virtuemart/classes/
Code:
function update(&$d) { global $vmLogger, $VM_LANG; if (!$this->validate($d)) { return false; } if( $d["product_price"] === '') { return $this->delete( $d ); } $timestamp = time(); $db = new ps_DB; if (empty($d["product_price_vdate"])) $d["product_price_vdate"] = ''; if (empty($d["product_price_edate"])) $d["product_price_edate"] = ''; $fields = array( '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'), 'mdate' => $timestamp, 'price_quantity_start' => vmRequest::getInt('price_quantity_start'), 'price_quantity_end' =>vmRequest::getInt('price_quantity_end') ); $db = new ps_DB; $db->buildQuery('UPDATE', '#__{vm}_product_price', $fields, 'WHERE product_price_id=' .(int)$d["product_price_id"] ); if( $db->query() !== false ) { $vmLogger->info( $VM_LANG->_('VM_PRODUCT_PRICE_UPDATED',false) ); return true; } $vmLogger->err( $VM_LANG->_('VM_PRODUCT_PRICE_UPDATING_FAILED',false) ); return false; }

dies ist der original code. mit diesem sollte es gehen. bzw sollten keine änderungen vor genommen werden.
  • Silverwoolf
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
12 Apr. 2010 16:40 #25770 von Silverwoolf
Silverwoolf antwortete auf Re: vm preise und preise in attributen
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 :p
  • Silverwoolf
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
12 Apr. 2010 17:41 #25773 von Silverwoolf
Silverwoolf antwortete auf Re: vm preise und preise in attributen
okay und nun hab ich das mit den attributes auch gelöst :) bzw den fehler gefunden. er trägt es nur ein, wenn vor der zahl ein opperant ist, d.h. in meinem fall ein = zeichen. dies muss zwingend da stehen. da ist iwie die beschreibung schäps XD

hier noch der code von ps_product_attribute.php -> ist lange und steht fast zu unterst :)
Code:
function loadAttributeExtension( $attribute_string = false ) { global $VM_LANG ; echo '<input type="hidden" name="js_lbl_title" value="' . $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_TITLE' ) . '" /> <input type="hidden" name="js_lbl_property" value="' . $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_PROPERTY' ) . '" /> <input type="hidden" name="js_lbl_property_new" value="' . $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_PROPERTY_NEW' ) . '" /> <input type="hidden" name="js_lbl_attribute_new" value="' . $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_ATTRIBUTE_NEW' ) . '" /> <input type="hidden" name="js_lbl_attribute_delete" value="' . $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_ATTRIBUTE_DELETE' ) . '" /> <input type="hidden" name="js_lbl_price" value="' . $VM_LANG->_( 'PHPSHOP_CART_PRICE' ) . '" />' ; if( ! $attribute_string ) { // product has no attributes ?> <table id="attributeX_table_0" cellpadding="0" cellspacing="0" border="0" class="adminform" width="30%"> <tbody width="30%"> <tr> <td width="5%"><?php echo $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_TITLE' ) ; ?></td> <td align="left" colspan="2"><input type="text" name="attributeX&#91;0&#93;&#91;name&#93;" value="" size="60" /></td> <td colspan="3" align="left"><a href="javascript&#058; newAttribute(1)"><?php echo $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_ATTRIBUTE_NEW' ) ; ?> | <a href="javascript&#058; newProperty(0)"><?php echo $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_PROPERTY_NEW' ) ; ?> </td> </tr> <tr id="attributeX_tr_0_0"> <td width="5%"> </td> <td width="10%" align="left"><?php echo $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_PROPERTY' ) ; ?></td> <td align="left" width="20%"><input type="text" name="attributeX&#91;0&#93;&#91;value&#93;&#91;&#93;" value="" size="40" /></td> <td align="left" width="5%"><?php echo $VM_LANG->_( 'PHPSHOP_PRODUCT_PRICE_TITLE' ) ; ?></td> <td align="left" width="60%"><input type="text" name="attributeX&#91;0&#93;&#91;price&#93;&#91;&#93;" size="10" value="" /></td> </tr> </tbody> </table> <?php return ; } // split multiple attributes $dropdownlists = explode( ';', $attribute_string ) ; for( $i = 0, $n = count( $dropdownlists ) ; $i < $n ; $i ++ ) { $dropdownlist = $dropdownlists&#91;$i&#93; ; $options = explode( ',', $dropdownlist ) ; $dropdown_name = $options&#91;0&#93; ; // display each attribute in the first loop... ?> <table id="attributeX_table_<?php echo $i ; ?>" cellpadding="0" cellspacing="0" border="0" class="adminform" width="30%"> <tbody width="30%"> <tr> <td width="5%"><?php echo $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_TITLE' ) ; ?></td> <td align="left" colspan="2"><input type="text" name="attributeX&#91;<?php echo $i ; ?>&#93;&#91;name&#93;" value="<?php echo $dropdown_name ; ?>" size="60" /></td> <td colspan="3" align="left"><a href="javascript&#058;newAttribute(<?php echo ($i + 1) ; ?>)"><?php echo $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_ATTRIBUTE_NEW' ) ; ?> | <?php if( $i != 0 ) { ?><a href="javascript&#058;deleteAttribute(<?php echo ($i) ; ?>)"><?php echo $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_ATTRIBUTE_DELETE' ) ; ?> | <?php } ?> <a href="javascript&#058;newProperty(<?php echo ($i) ; ?>)"><?php echo $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_PROPERTY_NEW' ) ; ?> </td> </tr> <?php // ... and the properties and prices in the second for( $i2 = 1, $n2 = count( $options ) ; $i2 < $n2 ; $i2 ++ ) { $value = $options&#91;$i2&#93; ; if( explode( '&#91;', $value ) ) { $value_price = explode( '&#91;', $value ) ; ?> <tr id="attributeX_tr_<?php echo $i . "_" . $i2 ; ?>"> <td width="5%"> </td> <td width="10%" align="left"><?php echo $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_PROPERTY' ) ; ?></td> <td align="left" width="20%"><input type="text" name="attributeX&#91;<?php echo $i ; ?>&#93;&#91;value&#93;&#91;&#93;" value="<?php echo $value_price&#91;0&#93; ; ?>" size="40" /></td> <td align="left" width="5%"><?php echo $VM_LANG->_( 'PHPSHOP_CART_PRICE' ) ; ?></td> <td align="left" width="60%"><input type="text" name="attributeX&#91;<?php echo $i ; ?>&#93;&#91;price&#93;&#91;&#93;" size="5" value="<?php echo str_replace( '&#93;', '', @$value_price&#91;1&#93; ) ; ?>" /><a href="javascript&#058;deleteProperty(<?php echo ($i) ; ?>,'<?php echo $i . "_" . $i2 ; ?>');">X</td> </tr> <?php } else { ?> <tr id="attributeX_tr_<?php echo $i . "_" . $i2 ; ?>"> <td width="5%"> </td> <td width="10%" align="left"><?php echo $VM_LANG->_( 'PHPSHOP_PRODUCT_FORM_PROPERTY' ) ; ?></td> <td align="left" width="20%"><input type="text" name="attributeX&#91;<?php echo $i ; ?>&#93;&#91;value&#93;&#91;&#93;" value="<?php echo $value ; ?>" size="40" /></td> <td align="left" width="5%"><?php echo $VM_LANG->_( 'PHPSHOP_CART_PRICE' ) ; ?></td> <td align="left" width="60%"><input type="text" name="attributeX&#91;<?php echo $i ; ?>&#93;&#91;price&#93;&#91;&#93;" size="10" /><a href="javascript&#058;deleteProperty(<?php echo ($i) ; ?>,'<?php echo $i . "_" . $i2 ; ?>');">X</td> </tr> <?php } } ?> </tbody> </table> <?php } } function formatAttributeX() { // request attribute pieces $attributeX = vmGet( $_POST, 'attributeX', array( 0 ) ) ; $attribute_string = '' ; // no pieces given? then return if( empty( $attributeX ) ) { return $attribute_string ; } // put the pieces together again foreach( $attributeX as $attributes ) { $attribute_string .= ';' ; // continue only if the attribute has a name if( empty( $attributes&#91;'name'&#93; ) ) { continue ; } $attribute_string .= trim( $attributes&#91;'name'&#93; ) ; $n2 = count( $attributes&#91;'value'&#93; ) ; for( $i2 = 0 ; $i2 < $n2 ; $i2 ++ ) { $value = $attributes&#91;'value'&#93;&#91;$i2&#93; ; $price = $attributes&#91;'price'&#93;&#91;$i2&#93; ; if( ! is_null( $value ) && $value != '' ) { $attribute_string .= ',' . trim( $value ) ; if( ! empty( $price ) ) { // add the price only if there is an operand if( strstr( $price, '+' ) or (strstr( $price, '-' )) or (strstr( $price, '=' )) ) { $attribute_string .= '&#91;' . trim( $price ) . '&#93;' ; } } } } } // cut off the first attribute separators on the beginning of the string // otherwise you would get an empty first attribute $attribute_string = substr( $attribute_string, 1 ) ; return trim( $attribute_string ) ; } }
  • Silverwoolf
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
20 Apr. 2010 15:25 #25957 von Silverwoolf
Silverwoolf antwortete auf Re: vm preise und preise in attributen
also ich hab nun en script geschrieben, welches direkt die preise in die db schreibt, also so eine art preisliste, wo dann die attributte auch in die jeweiligen sprachen übersetzt. plus den vendor editiert, bzw bearbeitet. hat wer interesse daran?
Moderatoren: Tribal6RePaoDragonlordChris Hoefligerpascaleadiheutschi.ch
Powered by Kunena Forum

Joomla! Verband Schweiz - Mitglied werden