Меняем стоимость доставки совершённого заказа

Имеется минишоп 2.1.11 и нужно менять стоимость доставки из родного интерфейса.
В заказе у нас уже есть все данные и возможности для изменения и пересчёта общего заказа, надеюсь что не упустил никаких условий и нюансов.





Меняем тип поля доставки на редактируемый (displayfield -> numberfield) на 392 строке в assets/components/minishop2/js/mgr/orders/orders.grid.js

columnWidth: .33
	,layout: 'form'
	,items: [
		{xtype: 'displayfield', name: 'createdon', fieldLabel: _('ms2_createdon'), anchor: '100%'}
		,{xtype: 'numberfield', name: 'delivery_cost', fieldLabel: _('ms2_delivery_cost'), anchor: '100%'}
	]


Добавляем 5 строк в core/components/minishop2/processors/mgr/orders/update.class.php

public function beforeSave() {
	if ($this->object->get('status') != $this->status) {
		$change_status = $this->modx->miniShop2->changeOrderStatus($this->object->get('id'), $this->object->get('status'));
		if ($change_status !== true) {
			return $change_status;
		}
	}
        // начало
	if ($this->object->get('delivery_cost') !== $this->delivery_cost) {
		$tmp1 = $this->object->get('delivery_cost');
		$tmp2 = $this->object->get('cart_cost');
		$this->object->set('cost', $tmp1+$tmp2);
	}
	// конец
	$this->object->set('updatedon', time());
	return parent::beforeSave();
}
Ivan Shvindin
11 августа 2015, 07:16
modx.pro
9
4 661
-1

Комментарии: 16

Василий Наумкин
11 августа 2015, 10:22
0
Ты в курсе, что у статуса есть свойства «Фиксирует» и «Итоговый»? Именно они влияют на то, можно ли менять статус, а вместе с ним доставку и оплату у заказа.

То есть, просто убираешь «Итоговый» у нужного статуса и его можно менять:


Ну а пересчёт стоимости гораздо лучше повесить на отдельный плагин, если нужно.
    Ivan Shvindin
    11 августа 2015, 10:25
    0
    ты наверно не понял, я про стоимость доставки, а не статус)
      Василий Наумкин
      11 августа 2015, 10:27
      0
      А стоимость доставки указывается в свойствах метода доставки.

      Лично я против изменения исходников дополнения, но хозяин — барин.
        Ivan Shvindin
        11 августа 2015, 10:31
        0
        добавил картинку в пост, чтобы понятнее было
    Воеводский Михаил
    12 августа 2015, 00:07
    +3
    Задача интернет-магазина — максимально автоматизировать процесс. Простейшая ситуация: покупатель оформляет заказ, стоимость доставки (100 руб.) включена, заказ оплачивается. А потом менеджер увеличивает стоимость доставки до 200 руб. Сразу вопрос: как покупатель должен оплатить эти 100 руб.? Почему он об этом узнает уже после?

    Единственное правильное решение — создание нового класса оплаты со своей логикой, применимой для конкретного магазина. Тогда доставка будет сразу считаться правильно, а покупатель получит возможность оплатить заказ, стоимость которого уже не изменится.
      Владимир Ульяновский
      12 августа 2015, 21:44
      0
      Это нужное решение, но не таким кардинальным образом…

      Михаил вы описываете идеальные условия, когда покупается единица товара не завязанная на кучу условий которые влияют на стоимость доставки. Но когда от количества товара сильно зависят габариты и вес то и доставку угадать не реально. Вот для этого и требуется такое решение. Да есть куча калькуляторов все что надо рассчитывающих, но если заставлять это делать покупателя он уйдет!

      Не знаю как у других, но у меня так: Пользователь оформляет заказ, выбирает способ доставки. Далее оператор связывается с пользователем и подтверждает объем заказа, параллельно он согласовывает удобную компанию для доставки и проводит расчет стоимости доставки, дополняя заказ (при этом пользователь оповещается о стоимости). Далее сменяется статус и пользователю отправляется письмо с реквизитами для оплаты. Ну и далее по сценарию :)

      Василий пожалуйста подскажите автору как сделать без хака, возможно он найдет возможность и желание переделать столь полезное дополнение.
        Василий Наумкин
        12 августа 2015, 22:01
        +1
        Если бы я предполагал подобный сценарий работы, то это поле было бы изначально редактируемым.
        Но нет, я зачем-то придумал методы доставки и возможность их расширять, хотя можно было просто вводить стоимость прямо в заказе.

        Так что без хака пока никак не получится.

        P.S. Сколько чего покупал через интернет — ни разу не приходилось созваниваться с магазином. Не повезло, наверное.
          Владимир Ульяновский
          12 августа 2015, 22:43
          0
          Василий, вам невероятно везет с магазинами которые не подтверждают заказ звонком… Сейчас обычная практика звонить заказчику и общаться с ним.
          Безусловно можно все автоматизировать, установить все возможные калькуляторы, вложить десятки тысяч денег, но не всегда это коммерчески оправдано.

          Может подскажете способ расширить метод доставки чтоб осуществить ручной ввод стоимости доставки? Я все понимаю, время деньги, может мы тупим, а все на поверхности лежит…
            Ivan Shvindin
            12 августа 2015, 23:04
            0
            Я примерно представляю как это плагином реализовать, переделаю как будет время.
              Воеводский Михаил
              13 августа 2015, 03:05
              +1
              Владимир, мне, если и звонили из ИМ, то только лишь для утверждения стоимости. На мой взгляд — лишний звонок, но это детали. По факту, стоимость изначально рассчитывалась при оформлении, а при звонке не менялась.

              Автоматизация, на самом деле, далеко не настолько дорогая, как может показаться. И в случае с доставками тоже. Например, в магазине уже есть несколько калькуляторов доставки, причем стоимость любого менее 1000 руб.

              Если есть необходимость в расчете для иной ТК, для которой калькулятор еще не готов, можно заказать его создание. Стоимость будет не запредельная — 1500-10000 руб., в зависимости от дополнительных пожеланий и качества API самой ТК.

              Теперь же посмотрим со стороны бизнеса — оператор, звонящий для корректировки стоимости доставки, должен получать зарплату. Если не давать пользователю возможность оплатить в момент оформления заказа (когда он наиболее «горячий»), повышается процент отмененных заказов (соглашусь, что здесь сильна специфика направления ИМ).
              В результате получается, что в разрезе всего нескольких месяцев автоматизация сэкономит для компании больше денег, чем потребует для создания и внедрения соответствующего функционала.

              Можно еще долго работать старыми методами, не замечая издержек, так как они много где считаются нормой, но давайте смотреть правде в глаза: XXI век, повальное стремление к максимальной автоматизации и сокращению издержек не только денежных, но и временных. Не только со стороны компании, но и со стороны покупателя. Чем дальше, тем больше людей будет требовать сервис по принципу «Здесь и сейчас». Если компания не сможет соответствовать новым требованиям, она будет терять все больше клиентов.

              Личный пример — если на этапе оформления заказа я не вижу окончательной стоимости, которая не будет изменяться, вряд ли оформлю этот заказ, тк уже проще пойти к конкуренту и все оформить за несколько минут, чем создать заказ и еще пару часов ждать звонка от оператора. А если я хочу оплатить сразу же? Но через 1-2 часа я уже могу передумать или найти за те же деньги еще лучше.

              Пример выше — упущенная выгода. Чем больше таких ситуаций, тем больше потери от отсутствия автоматизации.

              И напоследок: стоимость доставки может зависеть от многих факторов — вес, размер, хрупкость и т.д., согласен. Но все эти параметры можно забить для товаров, после чего они будут исправно учитываться калькуляторами. Без участия оператора.
          Владимир Ульяновский
          13 августа 2015, 21:38
          0
          Михаил, 6 модулей доставки + 12 способов оплаты уже за 10тр вышли + фильтры+шаблон+дополнительные полезные разработки…
          Для малого бизнеса это уже крупные вложения…

          Согласен для компаний с оборотом в день от 100тр глупо не применять автоматизацию.
            Василий Наумкин
            14 августа 2015, 06:53
            0
            6 модулей доставки + 12 способов оплаты
            А зарплата человека, который будет на телефоне сидеть — меньше 10тр в месяц, я так понимаю? А за два месяца, а за три?

            Для малого бизнеса это уже крупные вложения
            10тр — это крупные вложения в малый бизнес? Это уже какой-то микроскопический бизнес, а не малый — но с 6 модулями доставки и 12 способами оплаты.

            Если уже на старте у бизнеса такие серьёзные проблемы с планированием — я бы не стал его запускать вовсе.
              Михаил
              14 августа 2015, 08:01
              0
              10 тр это на наши где то 30 000 тенге. При средней зп в 100 000 тенге 30 000 тенге уходит так на сигареты да на напитки ну и на общественный туалет. Какие это вложения?? В малый бизнес вкладываются по 10 000 а то и 15 000 $ и это вполне нормально для этого. Что такое малый бизнес? Прачка например, небольшая кухня, столовая. Только на 10 тр это явно не открыть. Ну может я не верно рассуждаю, если что поправьте меня.
                Воеводский Михаил
                15 августа 2015, 03:23
                +2
                Красивое логическое противоречие.

                Если серьезно: расскажите мне, пжл, для чего маленькому магазину, который только с дикими усилиями может вложить в свое развитие 10 000 руб., 6 модулей доставки и 12 способов оплаты?

                Любой магазин, продающий хотя бы на 3000 руб. в день, может легко позволить себе приобретение необходимых модулей доставки и оплаты.

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

                Я уже не говорю о внутренних сложностях учета — из десятка платежных систем собирать, в общей сложности, 50 000 руб. за месяц (мы ведь говорим о малом бизнеса в Вашем представлении, а не в общем?).

                А если Вы представляете себе малый бизнес компанией из одного человека, тем более ему необходимо максимально автоматизировать процесс оформления и оплаты заказа покупателем, иначе он так и останется бизнесменом в компании одного себя.
                  Владимир Ульяновский
                  17 августа 2015, 22:02
                  0
                  Михаил, я и пытался сказать что незачем раздувать кучу всего… Я например и так обхожусь.
                    Воеводский Михаил
                    17 августа 2015, 22:06
                    +2
                    А я хотел сказать другое: маленькому интернет-магазину достаточно купить 1-2 модуля расчета доставки и 1-2 модуля оплаты. Суммарно — 1500-3000 руб.

                    Всего лишь до 3000 руб., но появляется автоматический расчет стоимости доставки и мгновенная оплата, что повысит количество продаж. И эти затраты для любого малого бизнеса более, чем оправданы.
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                16