Форум русской поддержки Joomla!® CMS
03.12.2016, 00:10:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Перерасчет в корзине JoomShopping

 (Прочитано 225 раз)
0 Пользователей и 1 Гость смотрят эту тему.
amoRNizam
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 13


« : 19.09.2016, 13:55:21 »

Здравствуйте. Очень надеюсь на помощь.
Чтобы сократить шаги в корзине и при этом, чтобы осталась возможность изменить количество товара и удаление товара из корзины, решил из первого шага, где реализована возможность редактирования количества и удаления, из cart.php перенести во второй шаг в checkout.php, чтобы на этом шаге можно было и в таблице количество товара изменить и заполнить данные по клиенту. Чтобы вся покупка зинимала три шага.
В результате всё редактируется, но при нажатии кнопки "перерасчитать" страница обновляется и остается то количество товара которое было при добавлении товара в корзину, удаление из корзины соответственно тоже не работает. К сожалению я не знаю как сдалать, чтобы это работало.
Может быть есть другой не очень сложный способ реализовать такую задачу?
Записан
nevigen
Moderator
*****

Репутация: +734/-16
Online Online

Пол: Мужской
Сообщений: 8803


http://n*****n.com


« Ответ #1 : 19.09.2016, 14:57:09 »

может это ?
Записан
amoRNizam
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 13


« Ответ #2 : 19.09.2016, 15:27:42 »

может это ?
Да, модуль подошел бы, но он платный. Мне нельзя расходовать ресурсы организации, а из своего кошелька-для меня дорого.
Записан
kit2m2
Завсегдатай
*****

Репутация: +76/-0
Offline Offline

Пол: Мужской
Сообщений: 764



« Ответ #3 : 19.09.2016, 17:08:40 »

Что за организация, что не может выделить 3700 на удобства для клиентов, причем эти удобства выльются ей в дополнительные продажи. Не бесплатным товаром же организация торгует...  Wink
Записан
amoRNizam
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 13


« Ответ #4 : 19.09.2016, 17:17:51 »

Что за организация, что не может выделить 3700 на удобства для клиентов, причем эти удобства выльются ей в дополнительные продажи. Не бесплатным товаром же организация торгует...  Wink
Дело в том, что я 1с программист и в мои обязанности входит еще и занятие сайтом. Второе для меня сложновато пока, но задачу поставили, надо выполнить. А если я скажу начальнику "не могу сделать", давайте купим, то не хорошо на мне скажется. Такие вот дела.
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Online Online

Сообщений: 7732



« Ответ #5 : 19.09.2016, 17:26:36 »

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

не хорошо на мне скажется. Такие вот дела.
не хорошо - это когда в обязанности программиста 1С входит еще и занятие сайтом. как возможный итог - и 1С заброшен, и сайт не сделан. и это стоит руководству объяснить сразу, а не потратить время впустую, а потом все равно сказать. такие вот дела Azn
Записан
kit2m2
Завсегдатай
*****

Репутация: +76/-0
Offline Offline

Пол: Мужской
Сообщений: 764



« Ответ #6 : 19.09.2016, 17:27:07 »

А не нужно говорить "Не могу сделать", нужно правильно обосновать покупку и тогда начальство само скажет - "Покупай". Я так всегда делаю, поэтому они считаю что я "всё могу"...  Wink
Записан
nevigen
Moderator
*****

Репутация: +734/-16
Online Online

Пол: Мужской
Сообщений: 8803


http://n*****n.com


« Ответ #7 : 19.09.2016, 18:40:27 »

А если я скажу начальнику "не могу сделать", давайте купим, то не хорошо на мне скажется. Такие вот дела.
вам еще повезло, что Ваш начальник не дал Вам задание сделать из калины мерседес.
вообще я скажу вашему начальнику повезло Azn такие исполнители это мечта Azn
через пару лет даже сможет поручить написать ОС для своего офиса;) а херлитам ? вы же програмист?! Azn или заставит написать систему учета работы на андроиде + иОСе и принудительно поставить на все устройства ваших сотрудников Azn

П.С. сорри просто не сдержался. но по сути... делать не свойственные вещи не разумно. разве, что только в рамках обучения. и говорить что ты не можешь что-то делать это нормально Azn не нормально браться за работу и не сделать ее Azn

еси что смотрим костыли
интересно... чего я не лезу в 1С ? Azn
« Последнее редактирование: 19.09.2016, 18:48:42 от nevigen » Записан
amoRNizam
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 13


« Ответ #8 : 20.09.2016, 09:09:28 »

вам еще повезло, что Ваш начальник не дал Вам задание сделать из калины мерседес.
вообще я скажу вашему начальнику повезло Azn такие исполнители это мечта Azn
через пару лет даже сможет поручить написать ОС для своего офисаWink а херлитам ? вы же програмист?! Azn или заставит написать систему учета работы на андроиде + иОСе и принудительно поставить на все устройства ваших сотрудников Azn

П.С. сорри просто не сдержался. но по сути... делать не свойственные вещи не разумно. разве, что только в рамках обучения. и говорить что ты не можешь что-то делать это нормально Azn не нормально браться за работу и не сделать ее Azn

еси что смотрим костыли
интересно... чего я не лезу в 1С ? Azn
Я с вами согласен, но мне и самому интересно этим заниматься. А начальству порой ничего не доказать, так как есть своё мнение неоспоримое.
Что если через iframe сделать на одной странице две(два шага), может получиться или не выйдет? И еще врядли во всех браузерах этот фрейм поддерживается.
« Последнее редактирование: 20.09.2016, 09:14:56 от amoRNizam » Записан
nevigen
Moderator
*****

Репутация: +734/-16
Online Online

Пол: Мужской
Сообщений: 8803


http://n*****n.com


« Ответ #9 : 20.09.2016, 09:11:40 »

ну решение же есть ... уже описано...
пробуйте и развивайте в тех аспектах которые вас не будут устраивать.
или вы хотите сами все сделать заново ? Azn
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Online Online

Сообщений: 7732



« Ответ #10 : 20.09.2016, 09:46:08 »

не понял зачем нужен ифрейм?
Записан
amoRNizam
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 13


« Ответ #11 : 20.09.2016, 11:48:43 »

ну решение же есть ... уже описано...
пробуйте и развивайте в тех аспектах которые вас не будут устраивать.
или вы хотите сами все сделать заново ? Azn
Спасибо!! Сейчас попробую.
Записан
amoRNizam
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 13


« Ответ #12 : 20.09.2016, 16:59:55 »

Я с вами согласен, но мне и самому интересно этим заниматься. А начальству порой ничего не доказать, так как есть своё мнение неоспоримое.
Что если через iframe сделать на одной странице две(два шага), может получиться или не выйдет? И еще врядли во всех браузерах этот фрейм поддерживается.
вам еще повезло, что Ваш начальник не дал Вам задание сделать из калины мерседес.
вообще я скажу вашему начальнику повезло Azn такие исполнители это мечта Azn
через пару лет даже сможет поручить написать ОС для своего офиса;) а херлитам ? вы же програмист?! Azn или заставит написать систему учета работы на андроиде + иОСе и принудительно поставить на все устройства ваших сотрудников Azn

П.С. сорри просто не сдержался. но по сути... делать не свойственные вещи не разумно. разве, что только в рамках обучения. и говорить что ты не можешь что-то делать это нормально Azn не нормально браться за работу и не сделать ее Azn

еси что смотрим костыли
интересно... чего я не лезу в 1С ? Azn
Сделал всё, как там описывалось, но не работает. Из корзины по кнопке далее кидает сразу на 4 шаг и там пустая страница.
Записан
nevigen
Moderator
*****

Репутация: +734/-16
Online Online

Пол: Мужской
Сообщений: 8803


http://n*****n.com


« Ответ #13 : 20.09.2016, 17:55:29 »

включите ошибки.
чтобы посмотреть что выдает на "пустой" странице.
Записан
amoRNizam
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 13


« Ответ #14 : 21.09.2016, 10:41:01 »

включите ошибки.
чтобы посмотреть что выдает на "пустой" странице.
Ошибок не возникает. Нашел почему на странице второго шага остальные шаги не отображались. Сейчас на втором шаге шаг2 и шаг5 отображаются(как мне и нужно), а вот когда жму по кнопке подтвердить заказ (кнопка из пятого шага), то открывается пустая страница пятого шага, а пустая она от того, что function step5(){} вырезана согласно инструкции. Где то прописан редирект со второго шага на пятый. Но пока не могу разобраться.
Прилагаю код файла checkout.php , может быть вы подскажете где эта сложность.
Код:
<?php
/**
* @version      4.7.0 10.08.2014
* @author       MAXXmarketing GmbH
* @package      Jshopping
* @copyright    Copyright (C) 2010 webdesigner-profi.de. All rights reserved.
* @license      GNU/GPL
*/

defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.application.component.controller');
include_once(JPATH_COMPONENT_SITE."/payments/payment.php");

class JshoppingControllerCheckout extends JControllerLegacy{
   
    function __construct($config = array()){
        parent::__construct($config);
        JPluginHelper::importPlugin('jshoppingcheckout');
        JPluginHelper::importPlugin('jshoppingorder');
        JDispatcher::getInstance()->trigger('onConstructJshoppingControllerCheckout', array(&$this));
    }
   
    function display($cachable = false, $urlparams = false){
        $this->step2();
    }
   
    function step2(){
        $checkout = JSFactory::getModel('checkout', 'jshop');
        $checkout->checkStep(2);
        $dispatcher = JDispatcher::getInstance();
        $dispatcher->trigger('onLoadCheckoutStep2', array());
       
        $session = JFactory::getSession();
        $user = JFactory::getUser();
        $jshopConfig = JSFactory::getConfig();
        $country = JSFactory::getTable('country', 'jshop');
       
        $checkLogin = JRequest::getInt('check_login');
        if ($checkLogin){
            $session->set("show_pay_without_reg", 1);
            checkUserLogin();
        }

        appendPathWay(_JSHOP_CHECKOUT_ADDRESS);
        $seo = JSFactory::getTable("seo", "jshop");
        $seodata = $seo->loadData("checkout-address");
        if ($seodata->title==""){
            $seodata->title = _JSHOP_CHECKOUT_ADDRESS;
        }
        setMetaData($seodata->title, $seodata->keyword, $seodata->description);
       
        $cart = JSFactory::getModel('cart', 'jshop');
        $cart->load();
        $cart->getSum();

        $adv_user = JSFactory::getUser();
       
        $adv_user->birthday = getDisplayDate($adv_user->birthday, $jshopConfig->field_birthday_format);
        $adv_user->d_birthday = getDisplayDate($adv_user->d_birthday, $jshopConfig->field_birthday_format);
       
        $tmp_fields = $jshopConfig->getListFieldsRegister();
        $config_fields = $tmp_fields['address'];
        $count_filed_delivery = $jshopConfig->getEnableDeliveryFiledRegistration('address');

        $checkout_navigator = $this->_showCheckoutNavigation(2);
        if ($jshopConfig->show_cart_all_step_checkout){
            $small_cart = $this->_showSmallCart(2);
        }else{
            $small_cart = '';
        }

        $view_name = "checkout";
        $view_config = array("template_path"=>$jshopConfig->template_path.$jshopConfig->template."/".$view_name);
        $view = $this->getView($view_name, getDocumentType(), '', $view_config);
        $view->setLayout("adress");
        $view->assign('select', $jshopConfig->user_field_title);
       
        if (!$adv_user->country) $adv_user->country = $jshopConfig->default_country;
        if (!$adv_user->d_country) $adv_user->d_country = $jshopConfig->default_country;

        $option_country[] = JHTML::_('select.option',  '0', _JSHOP_REG_SELECT, 'country_id', 'name' );
        $option_countryes = array_merge($option_country, $country->getAllCountries());
        $select_countries = JHTML::_('select.genericlist', $option_countryes, 'country', 'class = "inputbox" size = "1"','country_id', 'name', $adv_user->country );
        $select_d_countries = JHTML::_('select.genericlist', $option_countryes, 'd_country', 'class = "inputbox" size = "1"','country_id', 'name', $adv_user->d_country);

        foreach($jshopConfig->user_field_title as $key => $value) {
            $option_title[] = JHTML::_('select.option', $key, $value, 'title_id', 'title_name');
        }
        $select_titles = JHTML::_('select.genericlist', $option_title, 'title', 'class = "inputbox"','title_id', 'title_name', $adv_user->title);           
        $select_d_titles = JHTML::_('select.genericlist', $option_title, 'd_title', 'class = "inputbox"','title_id', 'title_name', $adv_user->d_title);
       
        $client_types = array();
        foreach ($jshopConfig->user_field_client_type as $key => $value) {
            $client_types[] = JHTML::_('select.option', $key, $value, 'id', 'name' );
        }
        $select_client_types = JHTML::_('select.genericlist', $client_types,'client_type','class = "inputbox" onchange="showHideFieldFirm(this.value)"','id','name', $adv_user->client_type);
       
        filterHTMLSafe( $adv_user, ENT_QUOTES);

if ($config_fields['birthday']['display'] || $config_fields['d_birthday']['display']){
            JHTML::_('behavior.calendar');
        }
        $view->assign('config', $jshopConfig);
        $view->assign('select_countries', $select_countries);
        $view->assign('select_d_countries', $select_d_countries);
        $view->assign('select_titles', $select_titles);
        $view->assign('select_d_titles', $select_d_titles);
        $view->assign('select_client_types', $select_client_types);
        $view->assign('live_path', JURI::base());
        $view->assign('config_fields', $config_fields);
        $view->assign('count_filed_delivery', $count_filed_delivery);
        $view->assign('user', $adv_user);
        $view->assign('delivery_adress', $adv_user->delivery_adress);
        $view->assign('checkout_navigator', $checkout_navigator);
        $view->assign('small_cart', $small_cart);
        $view->assign('action', SEFLink('index.php?option=com_jshopping&controller=checkout&task=step2save', 0, 0, $jshopConfig->use_ssl));
        $dispatcher->trigger('onBeforeDisplayCheckoutStep2View', array(&$view));
        $view->display();
//начало шага 5
        $checkout = JSFactory::getModel('checkout', 'jshop');
        //$checkout->checkStep(5);
        $dispatcher = JDispatcher::getInstance();
        $dispatcher->trigger('onLoadCheckoutStep5', array() );

        appendPathWay(_JSHOP_CHECKOUT_PREVIEW);
        $seo = JSFactory::getTable("seo", "jshop");
        $seodata = $seo->loadData("checkout-preview");
        if ($seodata->title==""){
            $seodata->title = _JSHOP_CHECKOUT_PREVIEW;
        }
        setMetaData($seodata->title, $seodata->keyword, $seodata->description);

        $cart = JSFactory::getModel('cart', 'jshop');
        $cart->load();

        $session = JFactory::getSession();
        $jshopConfig = JSFactory::getConfig();
        $user = JFactory::getUser();
        $adv_user = JSFactory::getUser();

        $sh_method = JSFactory::getTable('shippingMethod', 'jshop');
        $shipping_method_id = $cart->getShippingId();
        $sh_method->load($shipping_method_id);
       
        $sh_mt_pr = JSFactory::getTable('shippingMethodPrice', 'jshop');
        $sh_mt_pr->load($cart->getShippingPrId());
        if ($jshopConfig->show_delivery_time_checkout){
            $deliverytimes = JSFactory::getAllDeliveryTime();
            $deliverytimes[0] = '';
            $delivery_time = $deliverytimes[$sh_mt_pr->delivery_times_id];
            if (!$delivery_time && $jshopConfig->delivery_order_depends_delivery_product){
                $delivery_time = $cart->getDelivery();
            }
        }else{
            $delivery_time = '';
        }
        if ($jshopConfig->show_delivery_date){
            $delivery_date = $cart->getDeliveryDate();
            if ($delivery_date){
                $delivery_date = formatdate($cart->getDeliveryDate());
            }
        }else{
            $delivery_date = '';
        }
       
        $pm_method = JSFactory::getTable('paymentMethod', 'jshop');
        $payment_method_id = $cart->getPaymentId();
$pm_method->load($payment_method_id);

        $lang = JSFactory::getLang();
        $field_country_name = $lang->get("name");
       
        $invoice_info = array();
        $country = JSFactory::getTable('country', 'jshop');
        $country->load($adv_user->country);
        $invoice_info['f_name'] = $adv_user->f_name;
        $invoice_info['l_name'] = $adv_user->l_name;
        $invoice_info['firma_name'] = $adv_user->firma_name;
        $invoice_info['street'] = $adv_user->street;
        $invoice_info['street_nr'] = $adv_user->street_nr;
        $invoice_info['zip'] = $adv_user->zip;
        $invoice_info['state'] = $adv_user->state;
        $invoice_info['city'] = $adv_user->city;
        $invoice_info['country'] = $country->$field_country_name;
        $invoice_info['home'] = $adv_user->home;
        $invoice_info['apartment'] = $adv_user->apartment;
       
if ($adv_user->delivery_adress){
            $country = JSFactory::getTable('country', 'jshop');
            $country->load($adv_user->d_country);
$delivery_info['f_name'] = $adv_user->d_f_name;
            $delivery_info['l_name'] = $adv_user->d_l_name;
$delivery_info['firma_name'] = $adv_user->d_firma_name;
$delivery_info['street'] = $adv_user->d_street;
            $delivery_info['street_nr'] = $adv_user->d_street_nr;
$delivery_info['zip'] = $adv_user->d_zip;
$delivery_info['state'] = $adv_user->d_state;
            $delivery_info['city'] = $adv_user->d_city;
$delivery_info['country'] = $country->$field_country_name;
            $delivery_info['home'] = $adv_user->d_home;
            $delivery_info['apartment'] = $adv_user->d_apartment;
} else {
            $delivery_info = $invoice_info;
}
       
        $no_return = 0;
        if ($jshopConfig->return_policy_for_product){
            $cart_products = array();
            foreach($cart->products as $products){
                $cart_products[] = $products['product_id'];
            }
            $cart_products = array_unique($cart_products);
            $_product_option = JSFactory::getTable('productOption', 'jshop');
            $list_no_return = $_product_option->getProductOptionList($cart_products, 'no_return');
            $no_return = intval(in_array('1', $list_no_return));
        }
        if ($jshopConfig->no_return_all){
            $no_return = 1;
        }
       
        $tmp_fields = $jshopConfig->getListFieldsRegister();
        $config_fields = $tmp_fields['address'];
        $count_filed_delivery = $jshopConfig->getEnableDeliveryFiledRegistration('address');
       
        $checkout_navigator = $this->_showCheckoutNavigation(5);
        $small_cart = $this->_showSmallCart(5);

$view_name = "checkout";
        $view_config = array("template_path"=>$jshopConfig->template_path.$jshopConfig->template."/".$view_name);
        $view = $this->getView($view_name, getDocumentType(), '', $view_config);
        $view->setLayout("previewfinish");
        $dispatcher->trigger('onBeforeDisplayCheckoutStep5', array(&$sh_method, &$pm_method, &$delivery_info, &$cart, &$view));
        $lang = JSFactory::getLang();
        $name = $lang->get("name");
        $sh_method->name = $sh_method->$name;
        $view->assign('no_return', $no_return);
$view->assign('sh_method', $sh_method );
$view->assign('payment_name', $pm_method->$name);
        $view->assign('delivery_info', $delivery_info);
$view->assign('invoice_info', $invoice_info);
        $view->assign('action', SEFLink('index.php?option=com_jshopping&controller=checkout&task=step2save',0,0, $jshopConfig->use_ssl));       
        $view->assign('config', $jshopConfig);
        $view->assign('delivery_time', $delivery_time);
        $view->assign('delivery_date', $delivery_date);
        $view->assign('checkout_navigator', $checkout_navigator);
        $view->assign('small_cart', $small_cart);
$view->assign('count_filed_delivery', $count_filed_delivery);
        $dispatcher->trigger('onBeforeDisplayCheckoutStep5View', array(&$view));
    $view->display();
    }
   
    function step2save(){
        $checkout = JSFactory::getModel('checkout', 'jshop');
        $checkout->checkStep(2);

        $dispatcher = JDispatcher::getInstance();
        $dispatcher->trigger('onLoadCheckoutStep2save', array());

        $cart = JSFactory::getModel('cart', 'jshop');
        $cart->load();
       
        $session = JFactory::getSession();
        $jshopConfig = JSFactory::getConfig();
        $post = JRequest::get('post');
        if (!count($post)){
            JError::raiseWarning("",_JSHOP_ERROR_DATA);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step2',0,1, $jshopConfig->use_ssl));
            return 0;
        }
        if ($post['birthday']) $post['birthday'] = getJsDateDB($post['birthday'], $jshopConfig->field_birthday_format);
        if ($post['d_birthday']) $post['d_birthday'] = getJsDateDB($post['d_birthday'], $jshopConfig->field_birthday_format);
        unset($post['user_id']);
        unset($post['usergroup_id']);
       
        $user = JFactory::getUser();
        $adv_user = JSFactory::getUser();
       
        $adv_user->bind($post);
        if (!$adv_user->check("address")){
            JError::raiseWarning("",$adv_user->getError());
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step2',0,1, $jshopConfig->use_ssl));
            return 0;
        }
        $dispatcher->trigger('onBeforeSaveCheckoutStep2', array(&$adv_user, &$user, &$cart));
       
        if (!$adv_user->store()){
            JError::raiseWarning(500,_JSHOP_REGWARN_ERROR_DATABASE);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step2',0,1, $jshopConfig->use_ssl));
            return 0;
        }

        if($user->id && !$jshopConfig->not_update_user_joomla){
            $user = clone(JFactory::getUser());
if ($adv_user->email){
$user->email = $adv_user->email;
}
if ($adv_user->f_name || $adv_user->l_name){
$user->name = $adv_user->f_name." ".$adv_user->l_name;
}
if ($adv_user->f_name || $adv_user->l_name || $adv_user->email){
$user->save();
}
        }
       
        setNextUpdatePrices();
       
$cart->setShippingId(0);
$cart->setShippingPrId(0);
$cart->setShippingPrice(0);
$cart->setPaymentId(0);
$cart->setPaymentParams("");
$cart->setPaymentPrice(0);

        $dispatcher->trigger('onAfterSaveCheckoutStep2', array(&$adv_user, &$user, &$cart));
       
        if ($jshopConfig->without_shipping && $jshopConfig->without_payment) {
            $checkout->setMaxStep(5);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step5',0,1, $jshopConfig->use_ssl));
            return 0;
        }
       
        if ($jshopConfig->without_payment){
            $checkout->setMaxStep(4);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step4',0,1,$jshopConfig->use_ssl));
            return 0;
        }

if ($jshopConfig->step_4_3){
            if ($jshopConfig->without_shipping){
                $checkout->setMaxStep(3);
                $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step3',0,1,$jshopConfig->use_ssl));
                return 0;
            }
            $checkout->setMaxStep(4);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step4',0,1,$jshopConfig->use_ssl));
        }else{
$checkout->setMaxStep(3);
$this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step3',0,1,$jshopConfig->use_ssl));
}
//начало шага 5
$session = JFactory::getSession();
        $jshopConfig = JSFactory::getConfig();
        $db = JFactory::getDBO();
        $checkout = JSFactory::getModel('checkout', 'jshop');
        $mainframe = JFactory::getApplication();
        $checkout->checkStep(5);
$checkagb = JRequest::getVar('agb');
        $dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onLoadStep5save', array(&$checkagb));
       
        $lang = JSFactory::getLang();
        $user = JFactory::getUser();
        $adv_user = JSFactory::getUser();
        $cart = JSFactory::getModel('cart', 'jshop');
        $cart->load();
        $cart->setDisplayItem(1, 1);
        $cart->setDisplayFreeAttributes();

if ($jshopConfig->check_php_agb && $checkagb!='on'){
            JError::raiseWarning("", _JSHOP_ERROR_AGB);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step5',0,1,$jshopConfig->use_ssl));
            return 0;
        }

        if (!$cart->checkListProductsQtyInStore()){
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=cart&task=view',1,1));
            return 0;
        }
if (!$session->get('checkcoupon')){
            if (!$cart->checkCoupon()){
                $cart->setRabatt(0,0,0);
                JError::raiseWarning("", _JSHOP_RABATT_NON_CORRECT);
                $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=cart&task=view',1,1));
                return 0;
            }
            $session->set('checkcoupon', 1);
        }

        $orderNumber = $jshopConfig->next_order_number;
        $jshopConfig->updateNextOrderNumber();

        $payment_method_id = $cart->getPaymentId();
        $pm_method = JSFactory::getTable('paymentMethod', 'jshop');
        $pm_method->load($payment_method_id);
$payment_method = $pm_method->payment_class;

        if ($jshopConfig->without_payment){
            $pm_method->payment_type = 1;
            $paymentSystemVerySimple = 1;
        }else{
            $paymentsysdata = $pm_method->getPaymentSystemData();
            $payment_system = $paymentsysdata->paymentSystem;
            if ($paymentsysdata->paymentSystemVerySimple){
                $paymentSystemVerySimple = 1;
            }
            if ($paymentsysdata->paymentSystemError){
                $cart->setPaymentParams("");
                JError::raiseWarning("",_JSHOP_ERROR_PAYMENT);
                $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step3',0,1,$jshopConfig->use_ssl));
                return 0;
            }
        }

        $order = JSFactory::getTable('order', 'jshop');
        $arr_property = $order->getListFieldCopyUserToOrder();
        foreach($adv_user as $key => $value){
            if (in_array($key, $arr_property)){
                $order->$key = $value;
            }
        }

        $sh_mt_pr = JSFactory::getTable('shippingMethodPrice', 'jshop');
        $sh_mt_pr->load($cart->getShippingPrId());

        $order->order_date = $order->order_m_date = getJsDate();
        $order->order_tax = $cart->getTax(1, 1, 1);
        $order->setTaxExt($cart->getTaxExt(1, 1, 1));
        $order->order_subtotal = $cart->getPriceProducts();
        $order->order_shipping = $cart->getShippingPrice();
        $order->order_payment = $cart->getPaymentPrice();
        $order->order_discount = $cart->getDiscountShow();
        $order->shipping_tax = $cart->getShippingPriceTaxPercent();
        $order->setShippingTaxExt($cart->getShippingTaxList());
        $order->payment_tax = $cart->getPaymentTaxPercent();
        $order->setPaymentTaxExt($cart->getPaymentTaxList());
        $order->order_package = $cart->getPackagePrice();
        $order->setPackageTaxExt($cart->getPackageTaxList());
        $order->order_total = $cart->getSum(1, 1, 1);
        $order->currency_exchange = $jshopConfig->currency_value;
        $order->vendor_type = $cart->getVendorType();
        $order->vendor_id = $cart->getVendorId();
        $order->order_status = $jshopConfig->default_status_order;
        $order->shipping_method_id = $cart->getShippingId();
        $order->payment_method_id = $cart->getPaymentId();
        $order->delivery_times_id = $sh_mt_pr->delivery_times_id;
        if ($jshopConfig->delivery_order_depends_delivery_product){
            $order->delivery_time = $cart->getDelivery();
        }
        if ($jshopConfig->show_delivery_date){
            $order->delivery_date = $cart->getDeliveryDate();
        }
        $order->coupon_id = $cart->getCouponId();

        $pm_params = $cart->getPaymentParams();

        if (is_array($pm_params) && !$paymentSystemVerySimple){
            $payment_system->setParams($pm_params);
            $payment_params_names = $payment_system->getDisplayNameParams();
            $order->payment_params = getTextNameArrayValue($payment_params_names, $pm_params);
            $order->setPaymentParamsData($pm_params);
        }
       
        $name = $lang->get("name");
        $order->ip_address = $_SERVER['REMOTE_ADDR'];
        $order->order_add_info = JRequest::getVar('order_add_info','');
        $order->currency_code = $jshopConfig->currency_code;
        $order->currency_code_iso = $jshopConfig->currency_code_iso;
        $order->order_number = $order->formatOrderNumber($orderNumber);
        $order->order_hash = md5(time().$order->order_total.$order->user_id);
        $order->file_hash = md5(time().$order->order_total.$order->user_id."hashfile");
        $order->display_price = $jshopConfig->display_price_front_current;
        $order->lang = $jshopConfig->cur_lang;
       
        if ($order->client_type){
            $order->client_type_name = $jshopConfig->user_field_client_type[$order->client_type];
        }else{
            $order->client_type_name = "";
        }

if ($order->order_total==0){
            $pm_method->payment_type = 1;
            $jshopConfig->without_payment = 1;
            $order->order_status = $jshopConfig->payment_status_paid;
        }
       
        if ($pm_method->payment_type == 1){
            $order->order_created = 1;
        }else {
            $order->order_created = 0;
        }
       
        if (!$adv_user->delivery_adress) $order->copyDeliveryData();
       
        $dispatcher->trigger('onBeforeCreateOrder', array(&$order));

        $order->store();

        $dispatcher->trigger('onAfterCreateOrder', array(&$order));

        if ($cart->getCouponId()){
            $coupon = JSFactory::getTable('coupon', 'jshop');
            $coupon->load($cart->getCouponId());
            if ($coupon->finished_after_used){
                $free_discount = $cart->getFreeDiscount();
                if ($free_discount > 0){
                    $coupon->coupon_value = $free_discount / $jshopConfig->currency_value;
                }else{
                    $coupon->used = $adv_user->user_id;
                }
                $coupon->store();
            }
        }

        $order->saveOrderItem($cart->products);

$dispatcher->trigger('onAfterCreateOrderFull', array(&$order));

        $session->set("jshop_end_order_id", $order->order_id);

        $order_history = JSFactory::getTable('orderHistory', 'jshop');
        $order_history->order_id = $order->order_id;
        $order_history->order_status_id = $order->order_status;
        $order_history->status_date_added = $order->order_date;
        $order_history->customer_notify = 1;
        $order_history->store();
       
        if ($pm_method->payment_type == 1){
            $order->changeProductQTYinStock("-");
            if ($jshopConfig->send_order_email){
                $checkout->sendOrderEmail($order->order_id);
            }
        }
       
        $dispatcher->trigger('onEndCheckoutStep5', array(&$order) );

        $session->set("jshop_send_end_form", 0);
       
        if ($jshopConfig->without_payment){
            $checkout->setMaxStep(10);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=finish',0,1,$jshopConfig->use_ssl));
            return 0;
        }
       
        $pmconfigs = $pm_method->getConfigs();
       
        $task = "step6";
        if (isset($pmconfigs['windowtype']) && $pmconfigs['windowtype']==2){
            $task = "step6iframe";
            $session->set("jsps_iframe_width", $pmconfigs['iframe_width']);
            $session->set("jsps_iframe_height", $pmconfigs['iframe_height']);
        }
        $checkout->setMaxStep(6);
        $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task='.$task,0,1,$jshopConfig->use_ssl));
    }
   
    function step3(){
        $checkout = JSFactory::getModel('checkout', 'jshop');
    $checkout->checkStep(3);

        $dispatcher = JDispatcher::getInstance();
        $dispatcher->trigger('onLoadCheckoutStep3', array() );
   
        $jshopConfig = JSFactory::getConfig();
        $session = JFactory::getSession();
        $cart = JSFactory::getModel('cart', 'jshop');
        $cart->load();
       
        $user = JFactory::getUser();
        $adv_user = JSFactory::getUser();
       
        appendPathWay(_JSHOP_CHECKOUT_PAYMENT);
        $seo = JSFactory::getTable("seo", "jshop");
        $seodata = $seo->loadData("checkout-payment");
        if ($seodata->title==""){
            $seodata->title = _JSHOP_CHECKOUT_PAYMENT;
        }
        setMetaData($seodata->title, $seodata->keyword, $seodata->description);
       
        $checkout_navigator = $this->_showCheckoutNavigation(3);
        if ($jshopConfig->show_cart_all_step_checkout){
            $small_cart = $this->_showSmallCart(3);
        }else{
            $small_cart = '';
        }
       
        if ($jshopConfig->without_payment){
            $checkout->setMaxStep(4);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step4',0,1,$jshopConfig->use_ssl));
            return 0;
        }

        $paymentmethod = JSFactory::getTable('paymentmethod', 'jshop');
$shipping_id = $cart->getShippingId();
        $all_payment_methods = $paymentmethod->getAllPaymentMethods(1, $shipping_id);
        $i = 0;
        $paym = array();
        foreach($all_payment_methods as $pm){
            $paym[$i] = new stdClass();
            if ($pm->scriptname!=''){
                $scriptname = $pm->scriptname;   
            }else{
                $scriptname = $pm->payment_class;   
            }
            $paymentsysdata = $paymentmethod->getPaymentSystemData($scriptname);
            if ($paymentsysdata->paymentSystem){
                $paym[$i]->existentcheckform = 1;
$paym[$i]->payment_system = $paymentsysdata->paymentSystem;
            }else{
                $paym[$i]->existentcheckform = 0;
            }
           
            $paym[$i]->name = $pm->name;
            $paym[$i]->payment_id = $pm->payment_id;
            $paym[$i]->payment_class = $pm->payment_class;
            $paym[$i]->scriptname = $pm->scriptname;
            $paym[$i]->payment_description = $pm->description;
            $paym[$i]->price_type = $pm->price_type;
            $paym[$i]->image = $pm->image;
            $paym[$i]->price_add_text = '';
            if ($pm->price_type==2){
                $paym[$i]->calculeprice = $pm->price;
                if ($paym[$i]->calculeprice!=0){
                    if ($paym[$i]->calculeprice>0){
                        $paym[$i]->price_add_text = '+'.$paym[$i]->calculeprice.'%';
                    }else{
                        $paym[$i]->price_add_text = $paym[$i]->calculeprice.'%';
                    }
                }
            }else{
                $paym[$i]->calculeprice = getPriceCalcParamsTax($pm->price * $jshopConfig->currency_value, $pm->tax_id, $cart->products);
                if ($paym[$i]->calculeprice!=0){
                    if ($paym[$i]->calculeprice>0){
                        $paym[$i]->price_add_text = '+'.formatprice($paym[$i]->calculeprice);
                    }else{
                        $paym[$i]->price_add_text = formatprice($paym[$i]->calculeprice);
                    }
                }
            }
           
            $s_payment_method_id = $cart->getPaymentId();
            if ($s_payment_method_id == $pm->payment_id){
                $params = $cart->getPaymentParams();
            }else{
                $params = array();
            }

            $parseString = new parseString($pm->payment_params);
            $pmconfig = $parseString->parseStringToParams();

            if ($paym[$i]->existentcheckform){
                ob_start();
                $paym[$i]->payment_system->showPaymentForm($params, $pmconfig);
                $paym[$i]->form = ob_get_contents();               
                ob_get_clean();
            }else{
                $paym[$i]->form = "";
            }
           
            $i++;
        }
       
        $s_payment_method_id = $cart->getPaymentId();
        $active_payment = intval($s_payment_method_id);

        if (!$active_payment){
            $list_payment_id = array();
            foreach($paym as $v){
                $list_payment_id[] = $v->payment_id;
            }
            if (in_array($adv_user->payment_id, $list_payment_id)) $active_payment = $adv_user->payment_id;
        }
       
        if (!$active_payment){
            if (isset($paym[0])){
                $active_payment = $paym[0]->payment_id;
            }
        }
       
        if ($jshopConfig->hide_payment_step){
            $first_payment = $paym[0]->payment_class;
            if (!$first_payment){
                JError::raiseWarning("", _JSHOP_ERROR_PAYMENT);
                return 0;
            }
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step3save&payment_method='.$first_payment,0,1,$jshopConfig->use_ssl));
            return 0;
        }
       
        $view_name = "checkout";
        $view_config = array("template_path"=>$jshopConfig->template_path.$jshopConfig->template."/".$view_name);
        $view = $this->getView($view_name, getDocumentType(), '', $view_config);
        $view->setLayout("payments");
        $view->assign('payment_methods', $paym);
        $view->assign('active_payment', $active_payment);
        $view->assign('checkout_navigator', $checkout_navigator);
        $view->assign('small_cart', $small_cart);
        $view->assign('action', SEFLink('index.php?option=com_jshopping&controller=checkout&task=step3save', 0, 0, $jshopConfig->use_ssl));
        $dispatcher->trigger('onBeforeDisplayCheckoutStep3View', array(&$view));
        $view->display();   
    }
   
    function step3save(){
        $checkout = JSFactory::getModel('checkout', 'jshop');
        $checkout->checkStep(3);
       
        $session = JFactory::getSession();
        $jshopConfig = JSFactory::getConfig();
        $post = JRequest::get('post');

        $dispatcher = JDispatcher::getInstance();
        $dispatcher->trigger('onBeforeSaveCheckoutStep3save', array(&$post) );
       
        $cart = JSFactory::getModel('cart', 'jshop');
        $cart->load();
       
        $user = JFactory::getUser();
        $adv_user = JSFactory::getUser();
       
        $payment_method = JRequest::getVar('payment_method'); //class payment method
        $params = JRequest::getVar('params');
        if (isset($params[$payment_method])){
            $params_pm = $params[$payment_method];
        }else{
            $params_pm = '';
        }
       
        $paym_method = JSFactory::getTable('paymentmethod', 'jshop');
        $paym_method->class = $payment_method;
        $payment_method_id = $paym_method->getId();
        $paym_method->load($payment_method_id);
        $pmconfigs = $paym_method->getConfigs();
        $paymentsysdata = $paym_method->getPaymentSystemData();
        $payment_system = $paymentsysdata->paymentSystem;
        if ($paymentsysdata->paymentSystemError){
            $cart->setPaymentParams('');
            JError::raiseWarning(500, _JSHOP_ERROR_PAYMENT);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step3',0,1,$jshopConfig->use_ssl));
            return 0;
        }
        if ($payment_system){
            if (!$payment_system->checkPaymentInfo($params_pm, $pmconfigs)){
                $cart->setPaymentParams('');
                JError::raiseWarning("", $payment_system->getErrorMessage());
                $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step3',0,1,$jshopConfig->use_ssl));
                return 0;
            }           
        }
       
        $paym_method->setCart($cart);
        $cart->setPaymentId($payment_method_id);
        $price = $paym_method->getPrice();
        $cart->setPaymentDatas($price, $paym_method);
       
        if (isset($params[$payment_method])) {
            $cart->setPaymentParams($params_pm);
        } else {
            $cart->setPaymentParams('');
        }
       
        $adv_user->saveTypePayment($payment_method_id);
       
        $dispatcher->trigger( 'onAfterSaveCheckoutStep3save', array(&$adv_user, &$paym_method, &$cart) );
       
        if ($jshopConfig->without_shipping) {
            $checkout->setMaxStep(5);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step5',0,1,$jshopConfig->use_ssl));
            return 0;
        }
       
if ($jshopConfig->step_4_3){
            $checkout->setMaxStep(5);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step5',0,1,$jshopConfig->use_ssl));
        }else{
$checkout->setMaxStep(4);
$this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step4',0,1,$jshopConfig->use_ssl));
}
    }
   
    function step4(){
        $checkout = JSFactory::getModel('checkout', 'jshop');
        $checkout->checkStep(4);
       
        $session = JFactory::getSession();
        $jshopConfig = JSFactory::getConfig();

        $dispatcher = JDispatcher::getInstance();
        $dispatcher->trigger('onLoadCheckoutStep4', array() );

        appendPathWay(_JSHOP_CHECKOUT_SHIPPING);
        $seo = JSFactory::getTable("seo", "jshop");
        $seodata = $seo->loadData("checkout-shipping");
        if ($seodata->title==""){
            $seodata->title = _JSHOP_CHECKOUT_SHIPPING;
        }
        setMetaData($seodata->title, $seodata->keyword, $seodata->description);
       
        $cart = JSFactory::getModel('cart', 'jshop');
        $cart->load();
       
        $user = JFactory::getUser();
        $adv_user = JSFactory::getUser();

        $checkout_navigator = $this->_showCheckoutNavigation(4);
        if ($jshopConfig->show_cart_all_step_checkout){
            $small_cart = $this->_showSmallCart(4);
        }else{
            $small_cart = '';
        }
       
        if ($jshopConfig->without_shipping){
        $checkout->setMaxStep(5);
            $this->setRedirect(SEFLink('index.php?option=com_jshopping&controller=checkout&task=step5',0,1,$jshopConfig->use_ssl));
            return 0;
        }
       
        $shippingmethod = JSFactory::getTable('shippingMethod', 'jshop');
        $shippingmethodprice = JSFactory::getTable('shippingMethodPrice', 'jshop');
       
        if ($adv_user->delivery_adress){
            $id_country = $adv_user->d_country;
        }else{
            $id_country = $adv_user->country;
        }
        if (!$id_country) $id_country = $jshopConfig->default_country;
       
        if (!$id_country){
            JError::raiseWarning("", _JSHOP_REGWARN_COUNTRY);
        }
       
        if ($jshopConfig->show_delivery_time_checkout){
            $deliverytimes = JSFactory::getAllDeliveryTime();
            $deliverytimes[0] = '';
        }
        if ($jshopConfig->show_delivery_date){
            $deliverytimedays = JSFactory::getAllDeliveryTimeDays();
    &
« Последнее редактирование: 21.09.2016, 11:07:00 от amoRNizam » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet