Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 2101 Просмотров
*

amoRNizam

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

nevigen

  • Moderator
  • 10431
  • 862 / 25
  • http://n*****n.com
Re: Перерасчет в корзине JoomShopping
« Ответ #1 : 19.09.2016, 13:57:09 »
может это ?
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

amoRNizam

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Перерасчет в корзине JoomShopping
« Ответ #2 : 19.09.2016, 14:27:42 »
может это ?
Да, модуль подошел бы, но он платный. Мне нельзя расходовать ресурсы организации, а из своего кошелька-для меня дорого.
*

kit2m2

  • Живу я здесь
  • 3264
  • 267 / 0
  • Беру сайты на полное сопровождение
Re: Перерасчет в корзине JoomShopping
« Ответ #3 : 19.09.2016, 16:08:40 »
Что за организация, что не может выделить 3700 на удобства для клиентов, причем эти удобства выльются ей в дополнительные продажи. Не бесплатным товаром же организация торгует...  ;)
Расширения для JoomShopping | Расширения на заказ | Сайты и магазины под ключ: Дизайн, Верстка, Программирование, СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ и JoomShopping 5+
*

amoRNizam

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Перерасчет в корзине JoomShopping
« Ответ #4 : 19.09.2016, 16:17:51 »
Что за организация, что не может выделить 3700 на удобства для клиентов, причем эти удобства выльются ей в дополнительные продажи. Не бесплатным товаром же организация торгует...  ;)
Дело в том, что я 1с программист и в мои обязанности входит еще и занятие сайтом. Второе для меня сложновато пока, но задачу поставили, надо выполнить. А если я скажу начальнику "не могу сделать", давайте купим, то не хорошо на мне скажется. Такие вот дела.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Перерасчет в корзине JoomShopping
« Ответ #5 : 19.09.2016, 16:26:36 »
для меня сложновато пока, но задачу поставили, надо выполнить
была тема где то, где хаками ядра JoomShopping пытались колхозить, меняли контроллер checkout. результат не помню, получилось в итоге или нет, но можете поискать попробовать.

не хорошо на мне скажется. Такие вот дела.
не хорошо - это когда в обязанности программиста 1С входит еще и занятие сайтом. как возможный итог - и 1С заброшен, и сайт не сделан. и это стоит руководству объяснить сразу, а не потратить время впустую, а потом все равно сказать. такие вот дела :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kit2m2

  • Живу я здесь
  • 3264
  • 267 / 0
  • Беру сайты на полное сопровождение
Re: Перерасчет в корзине JoomShopping
« Ответ #6 : 19.09.2016, 16:27:07 »
А не нужно говорить "Не могу сделать", нужно правильно обосновать покупку и тогда начальство само скажет - "Покупай". Я так всегда делаю, поэтому они считаю что я "всё могу"...  ;)
Расширения для JoomShopping | Расширения на заказ | Сайты и магазины под ключ: Дизайн, Верстка, Программирование, СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ и JoomShopping 5+
*

nevigen

  • Moderator
  • 10431
  • 862 / 25
  • http://n*****n.com
Re: Перерасчет в корзине JoomShopping
« Ответ #7 : 19.09.2016, 17:40:27 »
А если я скажу начальнику "не могу сделать", давайте купим, то не хорошо на мне скажется. Такие вот дела.
вам еще повезло, что Ваш начальник не дал Вам задание сделать из калины мерседес.
вообще я скажу вашему начальнику повезло :) такие исполнители это мечта :)
через пару лет даже сможет поручить написать ОС для своего офиса;) а херлитам ? вы же програмист?! :) или заставит написать систему учета работы на андроиде + иОСе и принудительно поставить на все устройства ваших сотрудников :)

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

еси что смотрим костыли
интересно... чего я не лезу в 1С ? :)
« Последнее редактирование: 19.09.2016, 17:48:42 от nevigen »
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

amoRNizam

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Перерасчет в корзине JoomShopping
« Ответ #8 : 20.09.2016, 08:09:28 »
вам еще повезло, что Ваш начальник не дал Вам задание сделать из калины мерседес.
вообще я скажу вашему начальнику повезло :) такие исполнители это мечта :)
через пару лет даже сможет поручить написать ОС для своего офиса;) а херлитам ? вы же програмист?! :) или заставит написать систему учета работы на андроиде + иОСе и принудительно поставить на все устройства ваших сотрудников :)

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

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

nevigen

  • Moderator
  • 10431
  • 862 / 25
  • http://n*****n.com
Re: Перерасчет в корзине JoomShopping
« Ответ #9 : 20.09.2016, 08:11:40 »
ну решение же есть ... уже описано...
пробуйте и развивайте в тех аспектах которые вас не будут устраивать.
или вы хотите сами все сделать заново ? :)
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Перерасчет в корзине JoomShopping
« Ответ #10 : 20.09.2016, 08:46:08 »
не понял зачем нужен ифрейм?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

amoRNizam

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Перерасчет в корзине JoomShopping
« Ответ #11 : 20.09.2016, 10:48:43 »
ну решение же есть ... уже описано...
пробуйте и развивайте в тех аспектах которые вас не будут устраивать.
или вы хотите сами все сделать заново ? :)
Спасибо!! Сейчас попробую.
*

amoRNizam

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Перерасчет в корзине JoomShopping
« Ответ #12 : 20.09.2016, 15:59:55 »
Я с вами согласен, но мне и самому интересно этим заниматься. А начальству порой ничего не доказать, так как есть своё мнение неоспоримое.
Что если через iframe сделать на одной странице две(два шага), может получиться или не выйдет? И еще врядли во всех браузерах этот фрейм поддерживается.
вам еще повезло, что Ваш начальник не дал Вам задание сделать из калины мерседес.
вообще я скажу вашему начальнику повезло :) такие исполнители это мечта :)
через пару лет даже сможет поручить написать ОС для своего офиса;) а херлитам ? вы же програмист?! :) или заставит написать систему учета работы на андроиде + иОСе и принудительно поставить на все устройства ваших сотрудников :)

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

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

nevigen

  • Moderator
  • 10431
  • 862 / 25
  • http://n*****n.com
Re: Перерасчет в корзине JoomShopping
« Ответ #13 : 20.09.2016, 16:55:29 »
включите ошибки.
чтобы посмотреть что выдает на "пустой" странице.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

amoRNizam

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Перерасчет в корзине JoomShopping
« Ответ #14 : 21.09.2016, 09: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, 10:07:00 от amoRNizam »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

JoomShopping плагин подмены статического текста JoomShopping на материалы Joomla

Автор sergeytolkachyov

Ответов: 6
Просмотров: 771
Последний ответ 01.03.2024, 13:41:05
от sergeytolkachyov
WT JShopping cart save плагин брошенных корзин пользователей. JoomShopping 5.3+

Автор sergeytolkachyov

Ответов: 4
Просмотров: 296
Последний ответ 01.03.2024, 12:29:46
от kit2m2
WT Modules in Jshopping positions - плагин вставки модулей Joomla в JoomShopping

Автор sergeytolkachyov

Ответов: 2
Просмотров: 890
Последний ответ 06.02.2024, 18:15:15
от sergeytolkachyov
Ответы на отзывы JoomShopping 5

Автор virfolk

Ответов: 20
Просмотров: 664
Последний ответ 28.01.2024, 15:17:52
от nevigen
Модуль карусели товаров JoomShopping на Swiper.js для Joomla

Автор sergeytolkachyov

Ответов: 1
Просмотров: 371
Последний ответ 10.01.2024, 19:54:00
от sergeytolkachyov