Nota kredytowa - domyślnie zwrócono 0 produktów


13

Moim typowym przypadkiem wykorzystania noty kredytowej są korekty ceny (dostosowanie wysyłki, uprzejmości upustu itp.). Rzadko używam go do całkowitego zwrotu.

Dziwne jest dla mnie, że domyślne zachowanie Magento polega na tym, że CreditMemo zwraca wszystkie produkty i zwraca całą wysyłkę. Nawet w przypadku zwrotów przesyłka jest również zwracana.

Byłoby lepiej (i bezpieczniej), gdyby CreditMemo domyślnie wyniósł 0 USD (brak refundacji produktów i zwrot kosztów wysyłki), więc administratorzy wyraźnie mówią o tym, co jest refundowane (domyślnie nic). W przeciwnym razie zbyt łatwo jest na przykład utworzyć notę ​​kredytową mającą na celu zwrot kosztów wysyłki, ale zwrot całego zamówienia!

Czy jest jakaś konfiguracja lub dostosowanie, które obsługiwałoby domyślną wartość CreditMemo na 0 USD?


Brak odpowiedzi ponownie: rozwiązanie konfiguracyjne. Czy można tego dokonać poprzez rozszerzenie? Oznacza to, czy należy ustawić początkowe ustawienia faktury korygującej?
MarkE

Odpowiedzi:


2

Nie jestem pewien, czy możesz osiągnąć to, co chcesz bez rozszerzania podstawowej funkcjonalności magento. Musiałem zrobić coś podobnego i tak zrobiłem: Najpierw przepisałem Sales_order_creditmemo_totals na automatyczne kredyty (może nie potrzebujesz tego, więc możesz przejść do drugiej części):

W moim 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>

Następnie w 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;
    }
}

Jak widać, zrobiłem to, aby utworzyć kredyty dla zamówień z kredytem klienta, więc przepisałem również sales_order_totals i sales_order_invoice_totals, ale myślę, że nie musisz tego robić.

Po drugie: dodałem również własny szablon, aby dodać funkcjonalność podczas ręcznego kreślenia kredytu, aby administrator mógł zdecydować, jak go wygenerować. W tym celu utworzyłem items.phtml w app / design / adminhtml / default / default / template / MODULE_NAME / order / creditmemo / create / items.phtml, w tym phtml dodałem kilka pól wejściowych, aby zmienić wartości efault. Dodałem również w moim module w kontrolerze administracyjnym w 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();
    }
}

Dziękuję, doceniam twoją odpowiedź i zobaczę, czy mogę zastosować twoje rozwiązanie do moich wymagań.
MarkE
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.