Jump to content

Prestashop : vente de photographies en tirages limités


Recommended Posts

Bonjour,

Ma version de Prestashop : 1.7.6.0

Voila mon problème,

Je veux vendre des tirages de photographie en édition limitée 15 exemplaires de chaque photographie en différents formats et sur différents supports.

Je pensais que les déclinaisons allaient pouvoir gérer ma problématique mais j'avoue que je n'y arrive pas.

J'ai crée un attribut numéro (numéro du tirage avec mes 15 valeurs de 1 à 15)

J'ai crée un attribut avec les formats (4 différents)

J'ai crée un attribut avec les supports (3 différents)

mon problème est sur la gestion des stocks si je met 1 partout dans les déclinaisons cela veut dire que j'ai 120 déclinaisons avec un stock à 1 soit 120 tirages disponibles alors que l'attribut Numéro devrait me limiter à 15 dans mon cas...quelqu'un peut alors commander le même numéro de tirage dans un format et/ou support différent, ce qui est une aberration et inconcevable, je ne sais pas comment procéder pour que si une déclinaison d'un tirage (le 1/15 par exemple dans un format et sur un support) les autres déclinaisons ne soient plus disponibles...j'espère être assez clair...ma problématique n'est pas évidente à expliquer.

En tout cas si quelqu'un a une solution simple...je suis preneur

Merci

Edited by David81200 (see edit history)
Link to comment
Share on other sites

Bonjour,

Il ne faut pas utiliser les déclinaisons mais plutôt les champs de personnalisation. Le seul problème c'est que nativement on ne peut choisir que des champs permettant de renseigner un texte ou charger un fichier.

Il faut donc soit utiliser un module qui puisse gérer des champs de type sélect dans les fiches produits, soit modifier le fichier template (product-customization.tpl) pour remplacer sous condition les champs texte concernés, par des selects : un pour le format et un autre pour le support.

De cette façon on a bien un seul produit sans déclinaisons mais configurable sur des critères définis.

 

Link to comment
Share on other sites

Bonjour et merci pour vos suggestions.

Mediacom87  oui c'est ça!!!

Lagui, je trouve l'idée des select à la place du Text intéressante...

Ce serait cette partie que je devrais modifier?

<li class="product-customization-item">
                <label> {$field.label}</label>
                {if $field.type == 'text'}
                  <textarea placeholder="{l s='Your message here' d='Shop.Forms.Help'}" class="product-message" maxlength="250" {if $field.required} required {/if} name="{$field.input_name}"></textarea>
                  <small class="float-xs-right">{l s='250 char. max' d='Shop.Forms.Help'}</small>
                  {if $field.text !== ''}
                      <h6 class="customization-message">{l s='Your customization:' d='Shop.Theme.Catalog'}
                          <label>{$field.text}</label>
                      </h6>
                  {/if}

Je regarderais cela ce soir, si vous avez d'autres idées...

Edited by David81200 (see edit history)
Link to comment
Share on other sites

Ce qui me donnerait le code suivant par exemple...désolé cela fait presque 10 ans que je n'ai rien codé hormis des css...

<li class="product-customization-item">
                <label> {$field.label}</label>
                {if $field.type == 'text'}
		{if $field.label == 'Format'}
		<select>
    		<option value="">Choisissez la taille</option>
    		<option value="18x24">18x24</option>
    		<option value="20x30">20x30</option>
    		<option value="40x60">40x60</option>
		</select>
		{if $field.label == 'Support'}
		<select>
    		<option value="">Choisissez le support</option>
    		<option value="Fujifilm">Fujilifm</option>
    		<option value="KOdak">Kodak</option>
    		<option value="Ilford">Ilford</option>
		</select>
                  {/if}

 

Link to comment
Share on other sites

Oui, il manque juste le name du select et la confirmation du choix. Essayez comme ça :

<select id="format" name="{$field.input_name}">

pour prendre en compte le choix dans le select :

{$options = array('18x24', '20x30', '40x60')}
<option value="">Choisissez la taille</option>
{foreach from=$options item="option"}
   <option value="{$option}" {if $field.text == $option}selected{/if}>{$option}</option>
{/foreach}

et sous le select la confirmation

{if $field.text !== ''}
  <h6 class="customization-message">{l s='Your customization:' d='Shop.Theme.Catalog'}
     <label>{$field.text}</label>
  </h6>
{/if}

 

Link to comment
Share on other sites

Il y a 3 heures, Mediacom87 a dit :

Bonjour,

il existe un module pour améliorer les personnalisations mais il n'est pas compatible 1.7 : https://www.prestatoolbox.fr/publicite-marketing/239-prestashop-personnalisations-avancees.html

Effectivement, c'est même à lui que je pensais quand je parlais d'utiliser un module, plus haut, avant de me rendre compte qu'il s’arrêtait au 1.6. 

 

Edited by lagui (see edit history)
Link to comment
Share on other sites

Merci beaucoup pour vos réponses...je vais aller dans le code puisqu'à l'heure actuelle et avec ma version c'est la seule solution. Par contre avec cette solution je n'aurais pas d'influence sur le prix sauf si je monte en attribut le paramètre qui influencera le prix, en l’occurrence ici la taille...mais je crois que je ne suis pas encore sorti d'affaire...en tout cas merci pour vos contributions...je reviendrais par ici pour donner mon état d'avancement...Bonne journée

Link to comment
Share on other sites

Sinon une autre idée serait de créer toute les déclinaisons avec un stock de 15 et dès qu'une déclinaison est ajouté au panier mettre à jour le stock de toutes les déclinaison en -1 automatiquement...j'avoue que ça me semble être plus simple en tenant compte de l'influence des paramètres sur le prix...mais par contre ou trouver le script ... ça doit être lors de l'ajout au panier mais aussi si l'on supprime le produit du panier il faudra revenir au stock +1...je ne sais pas si je me fais bien comprendre...on ajoute une déclinaison au panier le stock de toutes les déclinaisons passe de 15 à 14...on le supprime du panier il repasse à 15...cela me semble plus logique comme solution, qu'en pensez vous?

Link to comment
Share on other sites

A mon avis le plus simple quitte à développer quelque chose, serait de prendre en compte certaines personnalisations comme déclencheurs de prix spécifiques.

Le coup des déclinaisons  va conduire à des imbroglios du fait que le code verra en permanence un stock disponible très supérieur au stock souhaité de 15 du fait des déclinaisons.

A voir....

Link to comment
Share on other sites

Bonsoir et Merci!!

Lagui, je me sers tu stock en facteur limitant, donc ce n'est pas grave...les produits sont réalisés à la commande...c'est pour cela que je trouvais cette idée simple...

Bon tout fonctionne bien...mais du coup il faut que je m'attaque au prix et là j'avoue que je bloque un peu... comment modifier le prix en fonction du format...?

{**
 * 2007-2017 PrestaShop
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Academic Free License 3.0 (AFL-3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * https://opensource.org/licenses/AFL-3.0
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@prestashop.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
 * versions in the future. If you wish to customize PrestaShop for your
 * needs please refer to http://www.prestashop.com for more information.
 *
 * @author    PrestaShop SA <contact@prestashop.com>
 * @copyright 2007-2017 PrestaShop SA
 * @license   https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
 * International Registered Trademark & Property of PrestaShop SA
 *}
<section class="product-customization">
  {if !$configuration.is_catalog}
    <div class="card card-block">
      <h3 class="h4 card-title">{l s='Product customization' d='Shop.Theme.Catalog'}</h3>
      {l s='Don\'t forget to save your customization to be able to add to cart' d='Shop.Forms.Help'}

      {block name='product_customization_form'}
        <form method="post" action="{$product.url}" enctype="multipart/form-data">
          <ul class="clearfix">
            {foreach from=$customizations.fields item="field"}
              <li class="product-customization-item">
                <label> {$field.label}</label>
                {if $field.type == 'text'}
                 {if $field.label == 'Format'}
		<select class="form-control form-control-select" id="Format" name="{$field.input_name}">
    		{$options = array('18x24', '20x30', '40x60')}
		<option value="">Choisissez la taille</option>
		{foreach from=$options item="option"}
   		<option value="{$option}" {if $field.text == $option}selected{/if}>{$option}</option>
		{/foreach}
		</select>
		{if $field.text !== ''}
  		<h6 class="customization-message">{l s='Your customization:' d='Shop.Theme.Catalog'}
     		<label>{$field.text}</label>
  		</h6>
		{/if}
		
                  {/if}
		{if $field.label == 'Papier'}
		<select class="form-control form-control-select" id="Papier" name="{$field.input_name}">
    		{$options = array('Ilford', 'Kodak', 'Fujifilm')}
		<option value="">Choisissez le papier</option>
		{foreach from=$options item="option"}
   		<option value="{$option}" {if $field.text == $option}selected{/if}>{$option}</option>
		{/foreach}
		</select>
		{if $field.text !== ''}
  		<h6 class="customization-message">{l s='Your customization:' d='Shop.Theme.Catalog'}
     		<label>{$field.text}</label>
  		</h6>
		{/if}
		
                  {/if}
                {elseif $field.type == 'image'}
                  {if $field.is_customized}
                    <br>
                    <img src="{$field.image.small.url}">
                    <a class="remove-image" href="{$field.remove_image_url}" rel="nofollow">{l s='Remove Image' d='Shop.Theme.Actions'}</a>
                  {/if}
                  <span class="custom-file">
                    <span class="js-file-name">{l s='No selected file' d='Shop.Forms.Help'}</span>
                    <input class="file-input js-file-input" {if $field.required} required {/if} type="file" name="{$field.input_name}">
                    <button class="btn btn-primary">{l s='Choose file' d='Shop.Theme.Actions'}</button>
                  </span>
                  <small class="float-xs-right">{l s='.png .jpg .gif' d='Shop.Forms.Help'}</small>
                {/if}
              </li>
            {/foreach}
          </ul>
          <div class="clearfix">
            <button class="btn btn-primary float-xs-right" type="submit" name="submitCustomizedData">{l s='Save Customization' d='Shop.Theme.Actions'}</button>
          </div>
        </form>
      {/block}

    </div>
  {/if}
</section>

 

copy of Article 1.png

Edited by David81200 (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...