Автор Тема: Оформление заказа  (Прочитано 1767 раз)

19 Декабрь 2016, 15:43:22
Ответ #15
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В процессе заказа нужно сохранять свойства для объекта Cart, так как в заказе происходит обращение к нескольким контроллерам и классам. Для Order инициализация свойств происходит в методе actionValidateOrder.
Нашел этот метод в PaymentModule.php
Hook::exec('actionValidateOrder', array(
                        'cart' => $this->context->cart,
                        'order' => $order,
                        'customer' => $this->context->customer,
                        'currency' => $this->context->currency,
                        'orderStatus' => $order_status
                    ));
Какие изменения надо внести, чтобы данные корректно передавались при оформлении заказа?
19 Декабрь 2016, 16:18:17
Ответ #16
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
В заказ добавил "Желаемые дата и время доставки" и "Необходим предварительный созвон". Изменения внес в файл order-address.tpl
Если измения в order-address.tpl, то и обработчик в методе _assignAddress().
В этом методе определяются переменные шаблона order-address.tpl.
19 Декабрь 2016, 16:23:25
Ответ #17
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В заказ добавил "Желаемые дата и время доставки" и "Необходим предварительный созвон". Изменения внес в файл order-address.tpl
Если измения в order-address.tpl, то и обработчик в методе _assignAddress().
В этом методе определяются переменные шаблона order-address.tpl.
Метод посмотрите, все через объект cart.
protected function _assignAddress()
{
        parent::_assignAddress();
        if (Tools::getValue('multi-shipping')) {
            $this->context->cart->autosetProductAddress();
        }
        $this->context->smarty->assign('cart', $this->context->cart);
 }
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
19 Декабрь 2016, 17:02:25
Ответ #18
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Прописал следующее:
protected function _assignAddress()
    {
        parent::_assignAddress();

        if (Tools::getValue('multi-shipping')) {
            $this->context->cart->autosetProductAddress();
        }

        $this->context->smarty->assign('cart', $this->context->cart);

$dateivremt = Tools::getValue('dateivremt') ? Tools::getValue('dateivremt') : NULL;
$exp = Tools::getValue('exp') ? Tools::getValue('exp') : NULL;
    }
Все также данные уходят некорректно.
21 Декабрь 2016, 11:17:23
Ответ #19
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Что я делаю неправильно?
21 Декабрь 2016, 11:20:02
Ответ #20
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
$this->context->cart->dateivremt = Tools::getValue('dateivremt');как-то так.
21 Декабрь 2016, 12:24:26
Ответ #21
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
$this->context->cart->dateivremt = Tools::getValue('dateivremt');как-то так.

Прописал так:
    protected function _assignAddress()
    {
        parent::_assignAddress();

        if (Tools::getValue('multi-shipping')) {
            $this->context->cart->autosetProductAddress();
        }

        $this->context->smarty->assign('cart', $this->context->cart);

$this->context->cart->dateivremt = Tools::getValue('dateivremt')? Tools::getValue('dateivremt') : NULL;
$this->context->cart->exp = Tools::getValue('exp')? Tools::getValue('exp') : NULL;

    }
В базу все равно пишутся нули.
21 Декабрь 2016, 12:42:02
Ответ #22
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
А в классе cart есть такие переменные?
21 Декабрь 2016, 12:46:44
Ответ #23
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А в классе cart есть такие переменные?

C prestashop только начал знакомство, так что не судите за глупый вопрос: А как это проверить?
21 Декабрь 2016, 13:02:33
Ответ #24
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Если вы их не добавляли в класс, то их там нет.
Файл /classes/Cart.php, в нем найдете все переменные корзины.
21 Декабрь 2016, 13:12:56
Ответ #25
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А разве эти переменные не надо прописывать в классе order ?
Внес переменные - ситуация не изменилась.
21 Декабрь 2016, 14:18:05
Ответ #26
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Если вы хотите видеть эти значения в заказе, то их нужно добавить в класс Order.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
21 Декабрь 2016, 14:46:31
Ответ #27
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если вы хотите видеть эти значения в заказе, то из нужно добавить в класс Order.

И так добавлены.
В таблице:
TABLE `ps_orders` (
  `id_order` int(10) UNSIGNED NOT NULL,
  `reference` varchar(9) DEFAULT NULL,
  `id_shop_group` int(11) UNSIGNED NOT NULL DEFAULT '1',
  `id_shop` int(11) UNSIGNED NOT NULL DEFAULT '1',
  `id_carrier` int(10) UNSIGNED NOT NULL,
  `id_lang` int(10) UNSIGNED NOT NULL,
  `id_customer` int(10) UNSIGNED NOT NULL,
  `id_cart` int(10) UNSIGNED NOT NULL,
  `id_currency` int(10) UNSIGNED NOT NULL,
  `id_address_delivery` int(10) UNSIGNED NOT NULL,
  `id_address_invoice` int(10) UNSIGNED NOT NULL,
  `current_state` int(10) UNSIGNED NOT NULL,
  `secure_key` varchar(32) NOT NULL DEFAULT '-1',
  `payment` varchar(255) NOT NULL,
  `conversion_rate` decimal(13,6) NOT NULL DEFAULT '1.000000',
  `module` varchar(255) DEFAULT NULL,
  `recyclable` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
  `gift` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
  `gift_message` text,
  `mobile_theme` tinyint(1) NOT NULL DEFAULT '0',
  `shipping_number` varchar(64) DEFAULT NULL,
  `total_discounts` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_discounts_tax_incl` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_discounts_tax_excl` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_paid` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_paid_tax_incl` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_paid_tax_excl` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_paid_real` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_products` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_products_wt` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_shipping` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_shipping_tax_incl` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_shipping_tax_excl` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `carrier_tax_rate` decimal(10,3) NOT NULL DEFAULT '0.000',
  `total_wrapping` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_wrapping_tax_incl` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `total_wrapping_tax_excl` decimal(20,6) NOT NULL DEFAULT '0.000000',
  `round_mode` tinyint(1) NOT NULL DEFAULT '2',
  `round_type` tinyint(1) NOT NULL DEFAULT '1',
  `invoice_number` int(10) UNSIGNED NOT NULL DEFAULT '0',
  `delivery_number` int(10) UNSIGNED NOT NULL DEFAULT '0',
  `invoice_date` datetime NOT NULL,
  `delivery_date` datetime NOT NULL,
  `valid` int(1) UNSIGNED NOT NULL DEFAULT '0',
  `date_add` datetime NOT NULL,
  `date_upd` datetime NOT NULL,
  `dateivremt` datetime DEFAULT NULL,
  `exp` tinyint(1) DEFAULT NULL

В коде order.php:
public $dateivremt;
public $exp;

    public static $definition = array(
        'table' => 'orders',
        'primary' => 'id_order',
        'fields' => array(
            'id_address_delivery' =>        array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
            'id_address_invoice' =>        array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
            'id_cart' =>                    array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
            'id_currency' =>                array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
            'id_shop_group' =>                array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
            'id_shop' =>                    array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
            'id_lang' =>                    array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
            'id_customer' =>                array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
            'id_carrier' =>                array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
            'current_state' =>                array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
            'secure_key' =>                array('type' => self::TYPE_STRING, 'validate' => 'isMd5'),
            'payment' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true),
            'module' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isModuleName', 'required' => true),
            'recyclable' =>                array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
            'gift' =>                        array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
            'gift_message' =>                array('type' => self::TYPE_STRING, 'validate' => 'isMessage'),
            'mobile_theme' =>                array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
            'total_discounts' =>            array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice'),
            'total_discounts_tax_incl' =>    array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice'),
            'total_discounts_tax_excl' =>    array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice'),
            'total_paid' =>                array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice', 'required' => true),
            'total_paid_tax_incl' =>        array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice'),
            'total_paid_tax_excl' =>        array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice'),
            'total_paid_real' =>            array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice', 'required' => true),
            'total_products' =>            array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice', 'required' => true),
            'total_products_wt' =>            array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice', 'required' => true),
            'total_shipping' =>            array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice'),
            'total_shipping_tax_incl' =>    array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice'),
            'total_shipping_tax_excl' =>    array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice'),
            'carrier_tax_rate' =>            array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat'),
            'total_wrapping' =>            array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice'),
            'total_wrapping_tax_incl' =>    array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice'),
            'total_wrapping_tax_excl' =>    array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice'),
            'round_mode' =>                    array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
            'round_type' =>                    array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
            'shipping_number' =>            array('type' => self::TYPE_STRING, 'validate' => 'isTrackingNumber'),
            'conversion_rate' =>            array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'required' => true),
            'invoice_number' =>            array('type' => self::TYPE_INT),
            'delivery_number' =>            array('type' => self::TYPE_INT),
            'invoice_date' =>                array('type' => self::TYPE_DATE),
            'delivery_date' =>                array('type' => self::TYPE_DATE),
            'valid' =>                        array('type' => self::TYPE_BOOL),
            'reference' =>                    array('type' => self::TYPE_STRING),
            'date_add' =>                    array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
            'date_upd' =>                    array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
'dateivremt' =>                    array('type' => self::TYPE_DATE, 'validate' => 'isDateFormat'),
'exp' =>                    array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
        ),
    );

21 Декабрь 2016, 14:51:31
Ответ #28
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Включайте профилирование в prestashop и проверяйте какие переменные и значения передаются в контроллер OrderControllerCore.
По другому не получится отследить где теряются эти переменные.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
21 Декабрь 2016, 15:17:52
Ответ #29
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Включил профилирование.
Переменные dateivremt и exp встречаются только в этих строках:
INSERT INTO `ps_orders` (`id_address_delivery`, `id_address_invoice`, `id_cart`, `id_currency`, `id_shop_group`, `id_shop`, `id_lang`, `id_customer`, `id_carrier`, `current_state`, `secure_key`, `payment`, `module`, `recyclable`, `gift`, `gift_message`, `mobile_theme`, `total_discounts`, `total_discounts_tax_incl`, `total_discounts_tax_excl`, `total_paid`, `total_paid_tax_incl`, `total_paid_tax_excl`, `total_paid_real`, `total_products`, `total_products_wt`, `total_shipping`, `total_shipping_tax_incl`, `total_shipping_tax_excl`, `carrier_tax_rate`, `total_wrapping`, `total_wrapping_tax_incl`, `total_wrapping_tax_excl`, `round_mode`, `round_type`, `shipping_number`, `conversion_rate`, `invoice_number`, `delivery_number`, `invoice_date`, `delivery_date`, `valid`, `reference`, `date_add`, `date_upd`, `dateivremt`, `exp`) VALUES ('5', '5', '55', '1', '1', '1', '1', '2', '3', '0', '10a7a3df4a163c0a58023e54f477705a', 'Банковский перевод', 'bankwire', '0', '0', NULL, '0', '0', '0', '0', '33.04', '33.04', '28', '0', '26', '30.68', '2.36', '2.36', '2', '18', '0', '0', '0', '2', '2', NULL, '1', '0', '0', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0', 'FDSGJLDID', '2016-12-21 14:57:22', '2016-12-21 14:57:22', '0000-00-00', '0')
2.8 1 /classes/ObjectModel.php:487

UPDATE `ps_orders` SET `id_order` = '46',`id_address_delivery` = '5',`id_address_invoice` = '5',`id_cart` = '55',`id_currency` = '1',`id_shop_group` = '1',`id_shop` = '1',`id_lang` = '1',`id_customer` = '2',`id_carrier` = '3',`current_state` = '10',`secure_key` = '10a7a3df4a163c0a58023e54f477705a',`payment` = 'Банковский перевод',`module` = 'bankwire',`recyclable` = '0',`gift` = '0',`gift_message` = '',`mobile_theme` = '0',`total_discounts` = '0',`total_discounts_tax_incl` = '0',`total_discounts_tax_excl` = '0',`total_paid` = '33.04',`total_paid_tax_incl` = '33.04',`total_paid_tax_excl` = '28',`total_paid_real` = '0',`total_products` = '26',`total_products_wt` = '30.68',`total_shipping` = '2.36',`total_shipping_tax_incl` = '2.36',`total_shipping_tax_excl` = '2',`carrier_tax_rate` = '18',`total_wrapping` = '0',`total_wrapping_tax_incl` = '0',`total_wrapping_tax_excl` = '0',`round_mode` = '2',`round_type` = '2',`shipping_number` = '',`conversion_rate` = '1',`invoice_number` = '0',`delivery_number` = '0',`invoice_date` = '0000-00-00 00:00:00',`delivery_date` = '0000-00-00 00:00:00',`valid` = '0',`reference` = 'FDSGJLDID',`date_add` = '2016-12-21 14:57:22',`date_upd` = '2016-12-21 14:57:22',`dateivremt` = '0000-00-00',`exp` = '0' WHERE `id_order` = 46
0.6 1 /classes/ObjectModel.php:652

UPDATE `ps_orders` SET `id_order` = '46',`id_address_delivery` = '5',`id_address_invoice` = '5',`id_cart` = '55',`id_currency` = '1',`id_shop_group` = '1',`id_shop` = '1',`id_lang` = '1',`id_customer` = '2',`id_carrier` = '3',`current_state` = '10',`secure_key` = '10a7a3df4a163c0a58023e54f477705a',`payment` = 'Банковский перевод',`module` = 'bankwire',`recyclable` = '0',`gift` = '0',`gift_message` = '',`mobile_theme` = '0',`total_discounts` = '0',`total_discounts_tax_incl` = '0',`total_discounts_tax_excl` = '0',`total_paid` = '33.04',`total_paid_tax_incl` = '33.04',`total_paid_tax_excl` = '28',`total_paid_real` = '0',`total_products` = '26',`total_products_wt` = '30.68',`total_shipping` = '2.36',`total_shipping_tax_incl` = '2.36',`total_shipping_tax_excl` = '2',`carrier_tax_rate` = '18',`total_wrapping` = '0',`total_wrapping_tax_incl` = '0',`total_wrapping_tax_excl` = '0',`round_mode` = '2',`round_type` = '2',`shipping_number` = '',`conversion_rate` = '1',`invoice_number` = '0',`delivery_number` = '0',`invoice_date` = '0000-00-00 00:00:00',`delivery_date` = '0000-00-00 00:00:00',`valid` = '0',`reference` = 'FDSGJLDID',`date_add` = '2016-12-21 14:57:22',`date_upd` = '2016-12-21 14:57:22',`dateivremt` = '0000-00-00 00:00:00',`exp` = '0' WHERE `id_order` = 46
0.5 1 /classes/ObjectModel.php:652