la modification du « prix spécial » depuis le frontend est enregistrée dans le champ « Prix » dans le backend

magento.stackexchange https://magento.stackexchange.com//questions/90459

Question

nous avons un site de marché [multi-fournisseurs].ainsi, dans chaque compte vendeur ou fournisseur, nous affichons le nom, le sku, le prix....etc.afin que les vendeurs/fournisseurs puissent modifier les informations sur le produit et les enregistrer.donc cela se reflétera dans le backend....nous utilisons le code suivant pour afficher "Prix".de la même manière, je souhaite également afficher un prix spécial.Pour cela, ce que j'essaie est dans le code suivant a) Dans le code PHP, je remplace <?php echo $products->getPrice(); ?> par<?php echo $products->getSpecialPrice(); ?> mais

ce n'est pas sauvegardé dans le backend.veuillez indiquer les modifications que je dois apporter dans le code ci-dessous pour fonctionner à un prix spécial.C'est le code pour le prix.

PHP

<span id="valueprice_<?php echo $products->getId(); ?>">
<?php echo $products->getPrice(); ?></span> 



    <input type = "text" id = "price_<?php echo $products->getId(); ?>" onkeydown="validateNumbers(event)" "name = "price" value = "<?php echo $products->getPrice(); ?>" style = "display:none"/>


        <!-- aki 2 -->
    <span class="label wk_action" id="edit_link_<?php echo $products->getId(); ?>">
<img onclick="showFieldPrice('<?php echo $products->getId(); ?>'); return false;" src="<?php echo $this->getSkinUrl('marketplace/images/icon-edit.png'); ?>"/>
</span>  
<p id="updatedprice_<?php echo $products->getId(); ?>" style = "display:none;color:red;">Updated</p>
                <br/>
<button id="price_update_button_<?php echo $products->getId(); ?>" class="button wk_mp_btn1" onclick="updateFieldPrice('<?php echo $products->getId(); ?>'); return false;" style="display:none" >
<span><span style="font-size:12px;"><?php echo $helper->__('Update') ?></span></span>
    </button>
    <button id="price_reset_button_<?php echo $products->getId(); ?>" type="reset" class="cancel" onclick="hideResetPrice('<?php echo $products->getId(); ?>'); return false;" style="display:none" >
<span><span><?php echo $helper->__('Cancel') ?></span></span>
        </button>                                                       
    </span>

Javascript

<script>
function showFieldPrice(product_id)
        {
            /*
            var qtyId = '#qty_'+ product_id;

            var editLink = "#edit_link_"+ product_id;
            var updateButton = "#update_button_"+ product_id;
            var resetButton = "#reset_button"+ product_id;

            $wk_jq(qtyId).toggle()

            $wk_jq(editLink).hide();
            $wk_jq(updateButton).show();
            $wk_jq(resetButton).show();

            $qty = $wk_jq(qtyId).val();
            */          
            var qtyId='#price_'+ product_id;

            var editLink="#price_edit_link_"+ product_id;
            var updateButton="#price_update_button_"+ product_id;
            var resetButton="#price_reset_button_"+ product_id;

            $wk_jq(qtyId).show();

            $wk_jq(editLink).hide();
            $wk_jq(updateButton).show();
            $wk_jq(updateButton).prop('disabled', false);//just in case
            $wk_jq(resetButton).show();

            return false;


        }
        </script>

contrôleur.php

public function updateFieldPriceAction(){
        Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);      
        $id= $this->getRequest()->getParam('id');
        $customerid=Mage::getSingleton('customer/session')->getCustomerId();
        $collection_product = Mage::getModel('marketplace/product')->getCollection()->addFieldToFilter('mageproductid',array('eq'=>$id))->addFieldToFilter('userid',array('eq'=>$customerid));
        //Mage::getSingleton('core/session')->setEditProductId($id);

        try{
        $upd_price = $this->getRequest()->getParam('special_price');
        $product = Mage::getModel('catalog/product')->load($id);        
        //$product->setData('price', $upd_price);
        $product->setPrice($upd_price);

        //$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($id);
        //$stockItem->setData('manage_stock', 1);
        //$stockItem->setData('qty', $this->getRequest()->getParam('qty'));
        $product->save();

        echo $price = $product->getPrice();
        echo $name = $product->getName();

        $response['message'] = 'Your Product Is Been Sucessfully Updated';
        $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($response)); 
        //Mage::getSingleton('core/session')->addSuccess(Mage::helper('marketplace')->__('Your Product Is Been Sucessfully Updated'));


        //endif;
        }catch(Exception $e){
        echo "Not Saving"; exit;    
        Mage::log($e->getMessage());
        }

      }
  }

pour un prix spécial, j'utilise le code suivant :

PHP

<span class="label pro_status">
    <?php //echo $products->getSpecialPrice(); ?>

    <span id="valueprice_<?php echo $products->getId(); ?>">
    <?php echo $products->getSpecialPrice(); ?></span> 



    <input type = "text" id = "price_<?php echo $products->getId(); ?>" onkeydown="validateNumbers(event)" "name = "price" value = "<?php echo $products->getSpecialPrice(); ?>" style = "display:none"/>





    <span class="label wk_action" id="edit_link_<?php echo $products->getId(); ?>">
            <img onclick="showFieldPrice('<?php echo $products->getId(); ?>'); return false;" src="<?php echo $this->getSkinUrl('marketplace/images/icon-edit.png'); ?>"/>
                </span>  
            <p id="updatedprice_<?php echo $products->getId(); ?>" style = "display:none;color:red;">Updated</p>
            <br/>
            <button id="price_update_button_<?php echo $products->getId(); ?>" class="button wk_mp_btn1" onclick="updateFieldSpecialPrice('<?php echo $products->getId(); ?>'); return false;" style="display:none" >
            <span><span style="font-size:12px;"><?php echo $helper->__('Update') ?></span></span>
                </button>
            <button id="price_reset_button_<?php echo $products->getId(); ?>" type="reset" class="cancel" onclick="hideResetPrice('<?php echo $products->getId(); ?>'); return false;" style="display:none" >
            <span><span><?php echo $helper->__('Cancel') ?></span></span>
            </button>                                                       
            </span>

JS

<script>
function updateFieldSpecialPrice(product_id)
        {
            var priceId = '#price_'+ product_id;
            var valueId = '#valueprice_'+ product_id;
            var updatedqty = '#updatedprice_'+ product_id;


            var editLink = "#price_edit_link_"+ product_id;
            var updateButton = "#price_update_button_"+ product_id;
            var resetButton = "#price_reset_button"+ product_id;
            var url ='<?php echo Mage::getUrl('marketplace/marketplaceaccount/updateFieldSpecialPrice/')?>';

            $wk_jq(priceId).toggle()

            $wk_jq(editLink).hide();
            $wk_jq(updateButton).hide();
            $wk_jq(resetButton).hide();

            $price = $wk_jq(priceId).val();
            jQuery(valueId).html($price);
            hideReset(product_id);

            new Ajax.Request(url, {
                method: 'post',
                parameters: {id: product_id, price: $price},
                onComplete: function (transport) {
                    //alert(transport.responseText);

                    jQuery(updatedqty).show().delay(2000).fadeOut();

                    $updateButton.prop('disabled', false);

                    $wk_jq(priceId).setValue($price);



                }
            });
        }

</script>

contrôleurs

public function updateFieldSpecialPriceAction(){
        Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);      
        $id= $this->getRequest()->getParam('id');
        $customerid=Mage::getSingleton('customer/session')->getCustomerId();
        $collection_product = Mage::getModel('marketplace/product')->getCollection()->addFieldToFilter('mageproductid',array('eq'=>$id))->addFieldToFilter('userid',array('eq'=>$customerid));
        //Mage::getSingleton('core/session')->setEditProductId($id);

        try{
        $upd_price = $this->getRequest()->getParam('price');
        $product = Mage::getModel('catalog/product')->load($id);        
        //$product->setData('price', $upd_price);
        $product->setSpecialPrice($upd_price);

        //$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($id);
        //$stockItem->setData('manage_stock', 1);
        //$stockItem->setData('qty', $this->getRequest()->getParam('qty'));
        $product->save();

        echo $price = $product->getPrice();
        echo $name = $product->getName();

        $response['message'] = 'Your Product Is Been Sucessfully Updated';
        $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($response)); 
        //Mage::getSingleton('core/session')->addSuccess(Mage::helper('marketplace')->__('Your Product Is Been Sucessfully Updated'));


        //endif;
        }catch(Exception $e){
        echo "Not Saving"; exit;    
        Mage::log($e->getMessage());
        }

      }
Était-ce utile?

La solution

remplacer $product->setPrice($upd_price); avec $product->setSpecialPrice($upd_price); dans les contrôleurs

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top