Archives de catégorie : développement

importer base de données SSH Putty

– Faire un dump de la base de donnée

cd C:\wamp\bin\mysql\mysql5.5.16\bin
mysql -h localhost -u root -p jppsw >  jppsw.sql

Ou utiliser mysqldump pour plus d’options.

– Uploader par FTP le fichier sql sur le site

– Se connecter en SSH avec Putty (pour les offres à partir de PRO)
http://guides.ovh.com/UtilisationPutty

– Se positionner sur le répertoire ou il y a le fichier sql et exécuter :

cat testbackup.sql | mysql --host=mysql5-21.pro --user=testimport --password=RtPgDsmLE testimport
ex : 
cat jppsw.sql | mysql --host=swanekayjpp.mysql.db --user=swanekayjpp --password=petY6JdHYYJ3 swanekayjpp

Aénor voeux

– Créer les produits avec 2 déclinaisons  : une avec attribut format vierge et l’autre avec attribut format personnalisé
– Ajouter les règles de prix dans la fiche produit
– Ajouter la personnalisation. 1 de type fichier, 3 de type texte (personnalisation,Texte et Adresse et coordonnées)

étendre la perso à tous les produits (aen-admin/genererSQL.php):

ini_set('display_errors','on');
error_reporting(E_ALL);

define('_PS_ADMIN_DIR_', getcwd());
define('PS_ADMIN_DIR', _PS_ADMIN_DIR_); // Retro-compatibility

include(PS_ADMIN_DIR.'/../config/config.inc.php');

$products = Db::getInstance()->ExecuteS('SELECT id_product	FROM '._DB_PREFIX_.'product p');

foreach($products as $product)
{
	#image
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',0,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"")';
	Db::getInstance()->ExecuteS($sql);
	
	#perso
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',1,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"personnalisation")';
	Db::getInstance()->ExecuteS($sql);
	
	#Texte
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',1,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"Texte")';
	Db::getInstance()->ExecuteS($sql);
	
	#Adresse et coordonnées
	$sql = 'INSERT INTO '._DB_PREFIX_.'customization_field (`id_product`, `type`, `required`)
	VALUES ('.$product['id_product'].',1,0)';
	Db::getInstance()->ExecuteS($sql);
	$id_custom = Db::getInstance()->Insert_ID(); 
	echo $sql = 'INSERT INTO '._DB_PREFIX_.'customization_field_lang (`id_customization_field`, `id_lang`, `name`)
	VALUES ('.$id_custom.',1,"Adresse et coordonnées")';
	Db::getInstance()->ExecuteS($sql);
}

Puis

UPDATE `avps_product` SET `customizable` = 1,`uploadable_files` = 1,`text_fields` = 3 WHERE 1 ;
UPDATE `avps_product_shop` SET `customizable` = 1,`uploadable_files` = 1,`text_fields` = 3 WHERE 1;

Pour modifier les prix de base des déclinaisons

UPDATE `avps_product_attribute` pa
INNER JOIN avps_product p ON pa.`id_product`= p.`id_product`
INNER JOIN avps_product_attribute_combination pac ON pa.`id_product_attribute`=pac.`id_product_attribute`
SET pa.price = 0.84
WHERE id_category_default IN(12,13) AND `id_attribute` IN(7,10) AND p.id_product IN (SELECT `id_product` FROM `avps_category_product` WHERE `id_category`=9 )

UPDATE `avps_product_attribute_shop` pas
INNER JOIN avps_product_attribute pa ON pas.`id_product_attribute`= pa.`id_product_attribute`
SET pas.price = pa.price

– Recopier les prix spécifiques à partir d’un produit modèle vers tous les autres (aen-admin/genererSQL.php)

## Insertion des prix spécifiques
# vierge 11 / perso 7,10
$product_modele = 5;
$product_attribute_modele = 23;
$attribute_modele = '7,10';
$sql = 'SELECT pa.id_product,pa.id_product_attribute 
		FROM `'._DB_PREFIX_.'product_attribute` pa 
		INNER JOIN '._DB_PREFIX_.'product p ON pa.`id_product`= p.`id_product` 
		INNER JOIN '._DB_PREFIX_.'product_attribute_combination pac ON pa.`id_product_attribute`=pac.`id_product_attribute` 
		WHERE id_category_default IN(12,13) AND `id_attribute` IN('.$attribute_modele.') AND p.id_product 
					 IN (SELECT `id_product` FROM `'._DB_PREFIX_.'category_product` WHERE `id_category`=9 ) 
				AND p.id_product<>'.$product_modele.'
		ORDER BY `pa`.`id_product` ASC ';
$products = Db::getInstance()->ExecuteS($sql);



foreach($products as $product)
{
	
		echo $sql = "INSERT INTO `"._DB_PREFIX_."specific_price`(`id_product`, `id_product_attribute`, `price`, `from_quantity`, `reduction`, `reduction_type`) 
					SELECT '".$product['id_product']."', '".$product['id_product_attribute']."', `price`, `from_quantity`, `reduction`, `reduction_type` 
					FROM `"._DB_PREFIX_."specific_price` 
					WHERE id_product=".$product_modele." AND id_product_attribute = ".$product_attribute_modele.";\r\n";
		
		
		//Db::getInstance()->ExecuteS($sql);
	
}

Pour le regroupement des quantités sur l’ensemble des cartes :
Modifier le calcul de la quantité dans le fichier class/Product.php

$cat_cumul = array(12,13);
$id_category_default = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT id_category_default FROM `'._DB_PREFIX_.'product` WHERE `id_product` = '.(int)($id_product));

if (in_array($id_category_default,$cat_cumul))
{
	$quantity_cumul = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT SUM(c.`quantity`) 
			FROM `'._DB_PREFIX_.'cart_product` c INNER JOIN `'._DB_PREFIX_.'product` p USING ( id_product )
			WHERE `id_category_default` IN('.implode(',',$cat_cumul).') AND `id_cart` = '.(int)($id_cart));
	$cart_quantity = $quantity_cumul ? $quantity_cumul : $cart_quantity;
}

Pour ajouter sauver les paramètres de personnalisation directement en appelant le panier et pas dans la page produit. Dans le fichier CartController.php:

$perso_rapido = Tools::getValue('perso_rapido');
if ($perso_rapido & Tools::isSubmit('submitCustomizedDatas'))
{
	/* Product pictures management */
	require_once('images.inc.php');

	$this->pictureUpload($product, $this->context->cart);
	$this->textRecord($product, $this->context->cart);
	
}