Bonjour,
Alors j'ai suivi tes conseils Gnidhal et j'ai donc installé la contrib Master Products pour affecter un produit lié (dans mon cas le forfait couleur) et j'y est apporté quelques modifications dans le fichier applications_top.php pour que lorsque le client choisi le nombre de couleur qu'il veut pour son texte ou logo, le forfait couleur soit multiplier en conséquence.
Exemple :
1 produit en 2 couleurs = prix du produit intégrant l'option 2 couleurs (produit + 2 euro) + produit lié 2 forfait à 40€
Jusque la pas de soucis mon forfait couleur est bien multiplier en fonction de l'option choisi (je me sert de l'id de la valeur de l'option 'options_values_id' pour que le choix soit fait).
Le problème vient que si mon client décide de faire un texte en 1 couleur et un logo en 1 couleur normalement il devrait s'ajouter 2 forfaits couleur (1 pour le texte et 1 pour le logo)
j'ai donc dans le fichier applications_top.php essayer de lui dire comme pour les options si tu à la valeur ID415 et ID419 tu ajoute 2 forfaits mais sa marche pas, j'ai l’impression qu'il ne regarde pas toutes les ID et que des qu'il en trouve une il ajoute se qui lui est demander.
Je pense que sa ne doit pas être un grosse erreur mais j'ai beau retourner le problème dans touts les sens je ne comprend pas.
Je laisse la modification que j'ai fait dans application_top.php car j'aimerais bien un petit coup de main en fait plutôt une explication sa me serait plus utile je pense même si je sais qu'elle prenne plus de temps aussi (désolé)
Code
//Master Products
// customer adds multiple products from the master_listing page
case 'add_slave' : if (isset($HTTP_POST_VARS['products_id']) && is_numeric($HTTP_POST_VARS['products_id'])) {
$purgeDir = opendir(TMP_DIR) or die ('Could not open '.TMP_DIR);
while ($file = readdir($purgeDir)) {
if ($file != ('.htaccess') && $file != ('.') && $file != ('..') && filemtime(TMP_DIR . $file) < strtotime(OPTIONS_TYPE_PURGETIME)) {
unlink(TMP_DIR . $file); // Delete file from server...
tep_db_query("delete from " . TABLE_FILES_UPLOADED . " where files_uploaded_name = '" . $file . "'"); // Remove File's database entry....
}
}
closedir($purgeDir);
$real_ids = $HTTP_POST_VARS['id'];
if ($HTTP_POST_VARS['number_of_uploads'] > 0) {
require(DIR_WS_CLASSES . 'upload.php');
for ($i = 1; $i <= $HTTP_POST_VARS['number_of_uploads']; $i++) {
$TEMP_FILE = $_FILES['id']['tmp_name'][TEXT_PREFIX . $HTTP_POST_VARS[UPLOAD_PREFIX . $i]];
if (tep_not_null($TEMP_FILE) && $TEMP_FILE != 'none') {
$products_options_file = new upload('id');
if (tep_session_is_registered('customer_id')) { // IF the customer is registered, use Upload Dir
$products_options_file->set_destination(UPL_DIR);
} else { // If the customer is not registered, use Temporary Dir
$products_options_file->set_destination(TMP_DIR);
}
if ($products_options_file->parse(TEXT_PREFIX . $HTTP_POST_VARS[UPLOAD_PREFIX . $i])) {
if (tep_session_is_registered('customer_id')) {
tep_db_query("insert into " . TABLE_FILES_UPLOADED . " (sesskey, customers_id, files_uploaded_name, date) values('" . tep_session_id() . "', '" . $customer_id . "', '" . tep_db_input($products_options_file->filename) . "', '" . date("d-m-y") . "')");
} else {
tep_db_query("insert into " . TABLE_FILES_UPLOADED . " (sesskey, files_uploaded_name, date) values('" . tep_session_id() . "', '" . tep_db_input($products_options_file->filename) . "', '" . date("d-m-y") . "')");
}
if (OPTIONS_TYPE_FILEPREFIX == 'Database') { // Database ID as File prefix
$insert_id = tep_db_insert_id() . '_';
} else { // Date, time or both as File prefix (Change date formatting here)
if (OPTIONS_TYPE_FILEPREFIX == 'Date' || OPTIONS_TYPE_FILEPREFIX == 'DateTime') {
$insert_id = 'D'.date("d-m-y_");
}
$insert_id .= (OPTIONS_TYPE_FILEPREFIX == 'DateTime' || OPTIONS_TYPE_FILEPREFIX == 'Time') ? 'T'.date("H-i_") : '';
}
// Update filename in Database with correct prefix (For comparing database names with real files)
tep_db_query("update " . TABLE_FILES_UPLOADED . " set files_uploaded_name = '" . tep_db_input($insert_id . $products_options_file->filename) . "' where sesskey = '" . tep_session_id() . "' and files_uploaded_name = '" . tep_db_input($products_options_file->filename) . "' and date = '" . date("d-m-y") . "'");
$real_ids[TEXT_PREFIX . $HTTP_POST_VARS[UPLOAD_PREFIX . $i]] = $insert_id . $products_options_file->filename;
$products_options_file->set_filename($insert_id . $products_options_file->filename);
if (!($products_options_file->save())) {
break 2;
}
} else {
break 2;
}
} else { // No file uploaded -- use previously uploaded file (From Dropdown)
$real_ids[TEXT_PREFIX . $HTTP_POST_VARS[UPLOAD_PREFIX . $i]] = $HTTP_POST_VARS[TEXT_PREFIX . UPLOAD_PREFIX . $i];
}
}
}
$cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $real_ids)) + $HTTP_POST_VARS['cart_quantity'], $real_ids);
}
///////////////////////////////////////////////////////////////////////////////////////PARTIE MODIFIER/////////////////////////////////////////////////////////////
reset($HTTP_POST_VARS);
while ( list( $key, $val ) = each( $HTTP_POST_VARS ) ) {
if (substr($key,0,11) == "Qty_ProdId_") {
$prodId = substr($key,11);
$qty = $val;
$products = $cart->get_products();
for ($i=0, $n=sizeof($products); $i<$n; $i++) {
if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
while (list($option, $valueid) = each($products[$i]['attributes'])) {
$attributes = tep_db_query("select popt.products_options_name, popt.products_options_comment, poval.products_options_values_name, pa.options_values_price, pa.price_prefix
from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
where pa.products_id = '" . (int)$products[$i]['id'] . "'
and pa.options_id = '" . (int)$option . "'
and pa.options_id = popt.products_options_id
and pa.options_values_id = '" . (int)$valueid . "'
and pa.options_values_id = poval.products_options_values_id
and popt.language_id = '" . (int)$languages_id . "'
and poval.language_id = '" . (int)$languages_id . "'");
$attributes_values = tep_db_fetch_array($attributes);
if ($valueid == 415) { //Forfait 1 couleur texte
$cart->add_cart($prodId, $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['id_$prodId'],$prodId))+1, $HTTP_POST_VARS["id_$prodId"]);
} elseif ($valueid == 416) { //Forfait 2 couleurs texte
$cart->add_cart($prodId, $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['id_$prodId'],$prodId))+2, $HTTP_POST_VARS["id_$prodId"]);
} elseif ($valueid == 417) { //Forfait 3 couleurs texte
$cart->add_cart($prodId, $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['id_$prodId'],$prodId))+3, $HTTP_POST_VARS["id_$prodId"]);
} elseif ($valueid == 419) { //Forfait 1 couleur logo
$cart->add_cart($prodId, $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['id_$prodId'],$prodId))+1, $HTTP_POST_VARS["id_$prodId"]);
} elseif ($valueid == 420) { //Forfait 2 couleurs logo
$cart->add_cart($prodId, $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['id_$prodId'],$prodId))+2, $HTTP_POST_VARS["id_$prodId"]);
} elseif ($valueid == 421) { //Forfait 3 couleurs logo
$cart->add_cart($prodId, $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['id_$prodId'],$prodId))+3, $HTTP_POST_VARS["id_$prodId"]);
} elseif ($valueid == 415 && 419) { //Forfait 1 couleur texte et 1 couleur logo
$cart->add_cart($prodId, $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['id_$prodId'],$prodId))+2, $HTTP_POST_VARS["id_$prodId"]);
} else {
$cart->add_cart($prodId, $cart->get_quantity($prodId)+$qty);
}
$products[$i][$option]['options_values_id'] = $valueid;
}
}
}
}
}
tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
break;
//Master Products EOF
Merci