Адаптировать модуль доставки

Есть модуль доставки для v2.2. СТоимость доставки как процент от стоимости заказа. Хочу переделать под v3.0. Реально не знаю как к этой проблеме подойти. Подскажите с чего начинать? Я даже инсталяцию модулей в v3.0 не нашел.

Подставляйте значение стоимости доставки беря его из корзины.

Я не знаю как установить модуль дополнительного метода доставки от v2.2 (http://addons.oscommerce.com/info/5953) на v3.0
Так то модуль доставки со стандартными методами есть.

По самому модулю:

папка includes содержит две папки: modules и languages.

Далее modules\shipping лежит файл percent.php.
Ну и в languages\english\modules\shipping лежит файл  percent.php

Копирование файлов на сервер в соответствующие папки результата не дало. Новый метод доставки в списке не появился. Кнопки или раздела меню - инсталировать модуль я не нашел. Так же понял что у меня нет xml файла для языка по эт моу модулю.

Модули от 2.2 версии совершенно не подходят на 3.0. Но на их базе можно делать новые модули для 3.0.

Я это и хочу сделать. С чего начать то? Какие файлы надо взять для одного способа доставки в модуле доставки. Потом формулу я поменяю легко.

Модуль доставки должен иметь файлы:

www/admin/includes/modules/shipping/file.php
www/includes/modules/shipping/file.php
www/includes/languages/RU_ru/modules/shipping/file.xml

Такова структура. Язык понятно где. Админка и каталог тоже понятны.

ок. Вечером попробую отпишу, если получиться, то сюда выложу.

Почти переделал способ доставки flat. Только не могу в расчете cost обратиться к сумме заказа, без учета способа доставки. Ошибки

29-Jul-2010 10:42:47 PHP Fatal error: Call to a member function getOrderTotals() on a non-object in /home/mitushkin/data/www/test/includes/modules/shipping/flat.php on line 73
29-Jul-2010 10:42:47 PHP Notice: Undefined variable: osC_ShoppingCart in /home/mitushkin/data/www/test/includes/modules/shipping/flat.php on line 73

« Последнее редактирование: 12 Мар 2018 01:05:17 am от Spido »

вот текст функции в файле flat.php

function quote() {
      global $osC_Language;

      $this->quotes = array('id' => $this->_code,
                            'module' => $this->_title,
                            'methods' => array(array('id' => $this->_code,
                                                     'title' => $osC_Language->get('shipping_flat_method'),
                                                     'cost' => ($osC_ShoppingCart->getOrderTotals()* (MODULE_SHIPPING_FLAT_COST/100)) +                   MODULE_SHIPPING_FLAT_HANDLING)),
'tax_class_id' => $this->tax_class);

      if (!empty($this->icon)) $this->quotes['icon'] = osc_image($this->icon, $this->_title);

      return $this->quotes;
    }
  }

« Последнее редактирование: 29 Июл 2010 15:23:00 pm от Spido »

Победил. Потом попробую новый модуль вообще сделать.

Вот код flat.php - "единый тариф на доставку", но сумма не плюсуется, а берется указанный процент от стоимости заказа.

<?php
/*
  $Id$

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2006 osCommerce

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License v2 (1991)
  as published by the Free Software Foundation.
*/

  
class osC_Shipping_flat extends osC_Shipping {
    var 
$icon;

    var 
$_title,
        
$_code 'flat',
        
$_status false,
        
$_sort_order;

// class constructor
    
function osC_Shipping_flat() {
      global 
$osC_Language;

      
$this->icon '';

      
$this->_title $osC_Language->get('shipping_flat_title');
      
$this->_description $osC_Language->get('shipping_flat_description');
      
$this->_status = (defined('MODULE_SHIPPING_FLAT_STATUS') && (MODULE_SHIPPING_FLAT_STATUS == '1') ? true false);
      
$this->_sort_order = (defined('MODULE_SHIPPING_FLAT_SORT_ORDER') ? MODULE_SHIPPING_FLAT_SORT_ORDER null);
    }

// class methods
    
function initialize() {
      global 
$osC_Database$osC_ShoppingCart;

      
$this->tax_class MODULE_SHIPPING_FLAT_TAX_CLASS;

      if ( (
$this->_status === true) && ((int)MODULE_SHIPPING_FLAT_ZONE 0) ) {
        
$check_flag false;

        
$Qcheck $osC_Database->query('select zone_id from :table_zones_to_geo_zones where geo_zone_id = :geo_zone_id and zone_country_id = :zone_country_id order by zone_id');
        
$Qcheck->bindTable(':table_zones_to_geo_zones'TABLE_ZONES_TO_GEO_ZONES);
        
$Qcheck->bindInt(':geo_zone_id'MODULE_SHIPPING_FLAT_ZONE);
        
$Qcheck->bindInt(':zone_country_id'$osC_ShoppingCart->getShippingAddress('country_id'));
        
$Qcheck->execute();

        while (
$Qcheck->next()) {
          if (
$Qcheck->valueInt('zone_id') < 1) {
            
$check_flag true;
            break;
          } elseif (
$Qcheck->valueInt('zone_id') == $osC_ShoppingCart->getShippingAddress('zone_id')) {
            
$check_flag true;
            break;
          }
        }

        if (
$check_flag == false) {
          
$this->_status false;
        }
      }
    }

    function 
quote() {
      global 
$osC_Language$osC_ShoppingCart;

      
$this->quotes = array('id' => $this->_code,
                            
'module' => $this->_title,
                            
'methods' => array(array('id' => $this->_code,
                                                     
'title' => $osC_Language->get('shipping_flat_method'),
                                                     
'cost' => ($osC_ShoppingCart->getTotal() * (MODULE_SHIPPING_FLAT_COST/100)) )),
'tax_class_id' => $this->tax_class);

      if (!empty(
$this->icon)) $this->quotes['icon'] = osc_image($this->icon$this->_title);

      return 
$this->quotes;
    }
  }
?>

« Последнее редактирование: 29 Июл 2010 15:23:20 pm от Spido »

А для каких товаров нужно делать стоимость доставки процентом от стоимости товара? Где это может быть полезно?

у меня был заказ именно на такую стоимость доставки. Срочная доставка - 10% от стоимости заказа. Направление магазина - запчасти для грузовиков. Доставка идет из-за границы.

Специфично конечно, но Ваше решение поможет другим 
(Здесь есть изображение, скрытое от гостей. Для просмотра зарегистрируйтесь или залогиньтесь)

Скоро переделаю не модуль flat, а просто новый способ доставки сделаю. Тогда можете к себе на сайт как модуль выложить. Пусть будет.

 
(Здесь есть изображение, скрытое от гостей. Для просмотра зарегистрируйтесь или залогиньтесь)