Перейти к содержимому


Фотография
- - - - -

Наложенный платеж в стоимости товара (Новая Почта)

наложенный платеж

Сообщений в теме: 6

#1 SkyLORD

SkyLORD

Отправлено 30 May 2016 - 11:22

Поставлена задача:

- учитывать в корзине стоимость перевода денежных, если товар был отправлен перевозчиком.

 

Услуги перевозчика по наложенному платежу составляет: 20 грн + 2%.

 

Половина задачи была решена благодаря пользователя tapakan: решение

 

НО!

 

в данном случаи учитывается ИЛИ статичная цифра 20 грн ИЛИ 2%

 

Как объединить эти две стоимости?

 

Спасибо!

 

_____________________________________

 

Joomla: 3.4.8 JBZoo: 2.2.6 Pro rev3130 Zoo: 3.3.17 WidgetKit: 2.4.4 


  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 30 May 2016 - 19:35

SkyLORD, попробуйте этот вариант:

$val = $this->_order->val($this->config->get('rate', '0.5%'));
$val->add('-10rub');
return $val; 

Более подробно о работе с классом JBCart вы можете узнать из этого топика.


  • 0
Изображение
 

#3 SkyLORD

SkyLORD

Отправлено 31 May 2016 - 04:25

SkyLORD, попробуйте этот вариант:

$val = $this->_order->val($this->config->get('rate', '0.5%'));
$val->add('-10rub');
return $val; 

Более подробно о работе с классом JBCart вы можете узнать из этого топика.

 

Прежде всего благодарю за отзыв на возникшую сложность.

 

Результаты:

 

Все изменения проходили в файле yandexmoney.php (zoo/applications/jbuniversal/cart-elements/payment/yandexmoney)

 

а)   $val->add('-10rub');

при указывании статичной цифры ('-10rub'), а в моем случае ('20'), - получаем ошибку -- 500 JBCartValue: Impossible add "20 грн." to "2.00%" --;

 

б)   $val->add('2%');

при указании процентов - в моем случае "2%" - корзина не учитывает этот процент.

 

в)   $val->add('-10rub');

      $val->add('2%');

при указывании и статичной цифры и процента - получаем ошибку -- 500 JBCartValue: Impossible add "20 грн." to "2.00%" --;

 

Вывод: по всей видимости данный метод отлично работает с одинаковыми типами данных.

 

Вопрос остается актуальным.


Сообщение отредактировал SkyLORD: 31 May 2016 - 04:49

  • 0

#4 Cheren-dow

Cheren-dow

Отправлено 31 May 2016 - 12:08

SkyLORD, описал не большой пример как можно работать с объектом цены:

    public function getRate()
    {
        // Получаем общую сумму и переводим в рубли
        $val = $this->_order->val(
            $this->getOrderSumm()->val(),
            $this->getOrder()->getCurrency()
        )->convert('rub');

        //  Добавляем к цена 20 руб + 10%
        $val
            ->add('20rub')
            ->add('10%');

        $total = $this->getOrderSumm()->convert('rub')->val();

        //  Отнимаем общую сумму из наценки. Т.е. получаем разницу в цене
        $val->minus($total . 'rub');

        var_dump($val->val());

        return $val;
    }

  • 0
Изображение
 

#5 SkyLORD

SkyLORD

Отправлено 31 May 2016 - 13:20

Cheren-dow, еще раз благодарю за время выделенное на решение моей проблемы. Но нужно ли проводить еще какие-либо действия с файлами?

 

После внесения изменений в файле yandexmoney.php (zoo/applications/jbuniversal/cart-elements/payment/yandexmoney), включая перевод в денежные единицы сайта (uah):

 

- Ошибка 500:

"Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request."
 
- Лог: 
POST /index.php?option=com_zoo&controller=basket&task=index HTTP/1.0" 500 548 "http://домен.com.ua/index.php?option=com_zoo&controller=basket&task=index&Itemid=979&nc=4659" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
 
Вопрос остается актуальным.
 
 
<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Kalistratov Sergey <kalistratov.s.m@gmail.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

/**
 * Class JBCartElementPaymentYandexMoney
 */
class JBCartElementPaymentYandexMoney extends JBCartElementPayment
{

    /**
     * Set payment rate
     * @return JBCartValue
     */
    public function getRate()
    {
        // Получаем общую сумму и переводим в рубли
         $val = $this->_order->val(
            $this->getOrderSumm()->val(),
            $this->getOrder()->getCurrency()
        )->convert('uah');
 
        //  Добавляем к цена 20 руб + 10%
        $val
            ->add('20uah')
            ->add('2%');
 
        $total = $this->getOrderSumm()->convert('uah')->val();
 
        //  Отнимаем общую сумму из наценки. Т.е. получаем разницу в цене
        $val->minus($total . 'uah');
 
        var_dump($val->val());
 
        return $val;
    }

}

 


Сообщение отредактировал SkyLORD: 31 May 2016 - 14:10

  • 0

#6 SmetDenis

SmetDenis

Отправлено 31 May 2016 - 21:13

Думаю дело в том, что этот код нужно использовать не в способе оплаты, в модификаторе цены. Именно он повлияет на цену заказа.

 

Т.е. вам нужно сделать новый элемент на подобии этого но со совим getRate()

media\zoo\applications\jbuniversal\cart-elements\modifierorderprice\addvat

 

О элементах скидки мы писали тут - http://jbzoo.ru/blog...iscount-element

Модификаторы пишутся так же.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 SkyLORD

SkyLORD

Отправлено 01 June 2016 - 08:40

Спасибо, SmetDenis!

Спасибо Cheren-dow!

 

После внесения изменений предложенных SmetDenis мы создали новый модификатор цен. НО, он срабатывает во всех без исключениях случаях, т.е. покупателю насчитывается наложенный платеж даже тогда, когда он выбрал доставку самовывозом или доставку курьером.

 

Нам необходимо, чтобы цена в корзине увеличивалась на сумму наложенного платежа (20 грн + 2% от суммы заказа) в случае выбора оплаты "На отделении грузоперевозчика" (он же наложенный платеж).

 

Это можно реализовать:

- методом изменения расчета цены на базе Яндекс.Деньги (решение), но в данном случае срабатывает "или - или". Решение предложенное Cheren-dow, к сожалению, у меня выводит 500 ошибку.

- методом создания нового модификатора цены, предложенный SmetDenis, но чтобы он срабатывал только при выборе способа оплаты "На отделении грузоперевозчика".

 

Вопрос остается актуальным.


Сообщение отредактировал SkyLORD: 01 June 2016 - 16:13

  • 0




Click to return to top of page in style!