Avoir - par défaut 0 produit retourné


13

Mon cas d'utilisation typique pour les notes de crédit est les ajustements de prix (ajustement des frais d'expédition, remise de courtoisie, etc.). Il est rare que je l'utilise pour un retour total.

Il est étrange pour moi que le comportement par défaut de Magento soit qu'un CreditMemo retourne tous les produits et rembourse tous les frais d'expédition. Même lorsqu'il y a des retours, il est rare que la livraison soit également remboursée.

Il serait préférable (et plus sûr) que le CreditMemo par défaut soit 0 $ (aucun produit remboursé et aucun frais de transport remboursé), les administrateurs sont donc explicites sur ce qui est remboursé (rien par défaut). Sinon, il est trop facile, par exemple, de créer une note de crédit destinée à rembourser les frais de port mais à rembourser la totalité de la commande!

Existe-t-il une configuration ou une personnalisation qui prendrait en charge la valeur par défaut d'un CreditMemo à 0 $?


Pas de réponse: solution de configuration. Cela pourrait-il être accompli via une extension? Autrement dit, définir les paramètres initiaux sur la note de crédit?
MarkE

Réponses:


2

Je ne sais pas si vous pouvez réaliser ce que vous voulez sans étendre les fonctionnalités de base de magento. J'ai dû faire quelque chose de similaire et voici ce que j'ai fait: j'ai d' abord réécrit sales_order_creditmemo_totals pour les creditmemos automatiques (peut-être que vous n'en avez pas besoin, vous pouvez donc passer à la deuxième partie):

Dans mon module config.xml:

    <blocks>
        <adminhtml>
            <rewrite>
                ...
                <sales_order_creditmemo_totals>Bla_Customercredit_Block_Adminhtml_Sales_Creditmemo</sales_order_creditmemo_totals>
            </rewrite>
        </adminhtml>

        <sales>
            <rewrite>
                ...
                <order_creditmemo_totals>Bla_Customercredit_Block_Sales_Creditmemo</order_creditmemo_totals>
            </rewrite>
        </sales>
    </blocks>

Puis dans Block / Adminhtml / Sales / Creditmemo.php

class Bla_Customercredit_Block_Adminhtml_Sales_Creditmemo extends Mage_Sales_Block_Order_Creditmemo_Totals 
{
    protected $_code = 'credit';

    protected function _initTotals() 
    {
        $helper = $this->getCreditsHelper();
        parent::_initTotals();
        $baseAmount = $this->getOrder()->getBaseCustomerCredit();

        $this->addTotal(
            new Varien_Object(
                array(
                    'code' => $this->_code,
                    'value' => -$creditAmount,
                    'base_value' => -$baseAmount,
                    'label' => $helper->__('Bla Credit'),
                )
            ), 
            'discount'
        );

        return $this;
    }
}

Comme vous pouvez le voir, j'ai fait cela pour créer des démos de crédit pour les commandes avec crédit client, j'ai donc également réécrit sales_order_totals et sales_order_invoice_totals mais je pense que vous n'avez pas besoin de le faire.

Deuxièmement: j'ai également ajouté mon propre modèle pour ajouter des fonctionnalités lors de la création manuelle de creditmemo, afin que l'administrateur puisse décider comment le générer. Pour cela, j'ai créé un items.phtml sous app / design / adminhtml / default / default / template / MODULE_NAME / order / creditmemo / create / items.phtml, dans ce phtml j'ai ajouté quelques champs de saisie pour changer les valeurs par défaut. J'ai également ajouté dans mon module un contrôleur d'administration sous Company_CustomerCredit_Adminhtml_CustomerController

require_once 'Mage/Adminhtml/controllers/CustomerController.php';
class Bla_Customercredit_Adminhtml_CustomerController extends Mage_Adminhtml_CustomerController
{
    /**
     * Overload to save customer credits, then call 
     * parent::saveAction() 
     */
    public function saveAction()
    {
        $data = $this->getRequest()->getPost();
        if($data && $data['bla_credits'])
        {
            if(!empty($data['bla_credits']['id']))
            {
                $model = Mage::getModel('credits/credits')->load($data['bla_credits']['id']);
            }
            else
            {
                unset($data['bla_credits']['id']);
                $model = Mage::getModel('credits/credits');
            }

            try
            {
                $model->setData($data['bla_credits']);
                $model->save();
            }
            catch(Exception $e)
            {
            }
        }

        parent::saveAction();
    }
}

Merci, j'apprécie votre réponse et je verrai si je peux appliquer votre solution à mes besoins.
MarkE
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.