Кредитна пам'ятка - за замовчуванням повернуто 0 товарів


13

Моя типова ситуація використання кредитної пам'ятки - коригування цін (коригування доставки, знижка в судах тощо). Дуже рідко я використовую його для повного повернення.

Мені дивно, що поведінка Magento за замовчуванням - це те, що CreditMemo повертає всі товари та повертає всю доставку. Навіть коли є повернення, рідко доставка також повертається.

Було б краще (і безпечніше), якщо CreditMemo за замовчуванням буде становити 0 доларів (не відшкодовується продукція і не відшкодовується доставка), тому адміністратори мають чітке уявлення про те, що повертається (нічого за замовчуванням). В іншому випадку, занадто просто, наприклад, створити кредитну пам'ятку, призначену для повернення доставки, але повернення всього замовлення!

Чи є якась конфігурація чи налаштування, яка б підтримувала заборгованість CreditMemo до 0 доларів?


Немає відповіді щодо: рішення конфігурації. Чи можна це зробити за допомогою розширення? Тобто встановити початкові налаштування на Кредитній пам'ятці?
МаркЕ

Відповіді:


2

Не впевнений, чи зможете ви досягти бажаного, не розширюючи основний функціонал magento. Мені довелося зробити щось подібне, і ось що я зробив: Спочатку я переписав sales_order_creditmemo_totals для автоматичних кредитних даних (можливо, вам цього не потрібно, щоб ви могли перейти до другої частини):

У моєму модулі 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>

Потім у Блок / Adminhtml / Продажі / 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;
    }
}

Як ви бачите, я це робив для створення кредитних пам'яток для замовлень з кредитом клієнта, тому я також переписав sales_order_totals та sales_order_invoice_totals, але я думаю, що вам цього не потрібно робити.

По-друге: я також додав власний шаблон, щоб додати деяку функціональність під час створення ручного кредитного запису, щоб адміністратор міг вирішити, як його створити. Для цього я створив items.phtml під програмою / design / adminhtml / default / default / template / MODULE_NAME / order / Creditmemo / create / items.phtml, у цей phtml я додав поля введення для зміни значень за замовчуванням. Я також додав у свій модуль контролер адміністратора під 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();
    }
}

Дякую, я вдячний за вашу відповідь і побачу, чи зможу я застосувати ваше рішення до моїх вимог.
MarkE
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.