Как в Ubercart установить максимальную сумму заказа?

Главные вкладки

Аватар пользователя run run 3 июля 2010 в 16:21

В Ubercart есть возможность установить минимальную сумму заказа.

Как задать максимальную сумму заказа?

Комментарии

Аватар пользователя run run 3 июля 2010 в 16:47

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
Можно попытаться создать новое правило admin/store/ca

Как это может выглядеть?

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 3 июля 2010 в 22:56

Там простейшая логика: Если Событие И Условие То Действие

Действием может быть соответствующая надпись или редирект на левую страницу или свой php или ещё чего.

Я не делал то, что вам нужно, я допускаю, что это можно сделать таким способом.

Также неплохо бы посмотреть эти модули:

http://drupal.org/project/uc_product_minmax

http://drupal.org/project/uc_restrict_qty

на предмет нужных фич

Аватар пользователя guitmann1 guitmann1 15 июля 2010 в 19:56

Получилось это выполнить, может способ и не самый лучший. В файлах корзины uc_cart.admin.inc, uc_cart.module и uc_cart.pages.inc выполнил это по аналогии с "минимальным заказом".

Аватар пользователя guitmann1 guitmann1 16 июля 2010 в 16:04

в файле sites\all\modules\ubercart\uc_cart\uc_cart.module :

на 257 строке фунцкиця:

<?php
function uc_cart_init() {
  global 
$conf;
  
$conf['i18n_variables'][] = 'uc_cart_breadcrumb_text';
  
$conf['i18n_variables'][] = 'uc_cart_help_text';
  
$conf['i18n_variables'][] = 'uc_cart_new_account_details';
  
$conf['i18n_variables'][] = 'uc_checkout_instructions';
  
$conf['i18n_variables'][] = 'uc_checkout_review_instructions';
  
$conf['i18n_variables'][] = 'uc_continue_shopping_text';
  
$conf['i18n_variables'][] = 'uc_minimum_subtotal_text';
  
$conf['i18n_variables'][] = 'uc_msg_continue_shopping';
  
$conf['i18n_variables'][] = 'uc_msg_order_existing_user';
  
$conf['i18n_variables'][] = 'uc_msg_order_logged_in';
  
$conf['i18n_variables'][] = 'uc_msg_order_new_user';
  
$conf['i18n_variables'][] = 'uc_msg_order_submit';
}
?>

добавляем в нее строку <?php $conf['i18n_variables'][] = 'uc_maximum_subtotal_text'?>

потом в админке корзины sites\all\modules\ubercart\uc_cart\uc_cart.admin.inc :

строка 70 (добавление формы ввода минимальной суммы заказа) :

<?php
$form
['general']['uc_minimum_subtotal'] = array(
    
'#type' => 'textfield',
    
'#title' => t('Minimum order subtotal'),
    
'#description' => t('Optionally specify a minimum allowed subtotal for a cart to proceed to checkout.'),
    
'#summary' => t('The minimum subtotal is subtotal', array('subtotal=> uc_price(variable_get('uc_minimum_subtotal'0), $context))),
    
'#default_value' => variable_get('uc_minimum_subtotal'0),
    
'#size' => 16,
    
'#field_prefix' => variable_get('uc_sign_after_amount'FALSE) ? '' variable_get('uc_currency_sign''$'),
    
'#field_suffix' => variable_get('uc_sign_after_amount'FALSE) ? variable_get('uc_currency_sign''$') : '',
  );
 
?>

сразу за ней вставляем форму ввода максимального заказа:

<?php
$form
['general']['uc_maximum_subtotal'] = array(
    
'#type' => 'textfield',
    
'#title' => t('Maximum order subtotal'),
    
'#description' => t('Optionally specify a maximum allowed subtotal for a cart to proceed to checkout.'),
    
'#summary' => t('The maximum subtotal is subtotal', array('subtotal=> uc_price(variable_get('uc_maximum_subtotal'0), $context))),
    
'#default_value' => variable_get('uc_maximum_subtotal'0),
    
'#size' => 16,
    
'#field_prefix' => variable_get('uc_sign_after_amount'FALSE) ? '' variable_get('uc_currency_sign''$'),
    
'#field_suffix' => variable_get('uc_sign_after_amount'FALSE) ? variable_get('uc_currency_sign''$') : '',
  );
 
?>

затем в sites\all\modules\ubercart\uc_cart\uc_cart.pages.inc :

на строке 69 проверка суммы товара уже в самой корзине (проверка минимальной суммы):

<?php
if (($min uc_price(variable_get('uc_minimum_subtotal'0), $context)) > 0) {
    
$subtotal 0;
    if (
is_array($items) && count($items) > 0) {
      foreach (
$items as $item) {
        
$data module_invoke($item->module'cart_display'$item);
        if (!empty(
$data)) {
          
$subtotal += $data['#total'];
        }
      }
    }
    if (
$subtotal $min) {
      
$context = array(
        
'revision' => 'formatted-original',
        
'type' => 'amount',
      );
      
drupal_set_message(variable_get('uc_minimum_subtotal_text't('The minimum order subtotal for checkout is !min.', array('!min' => uc_price($min$context)))), 'error');
      
drupal_goto('cart');
    }
  }
 
?>

за ней вставляем нашу проверку уже максимальной суммы заказа:

<?php
 
if (($max uc_price(variable_get('uc_maximum_subtotal'0), $context)) > 0) {
    
$subtotal 0;
    if (
is_array($items) && count($items) > 0) {
      foreach (
$items as $item) {
        
$data module_invoke($item->module'cart_display'$item);
        if (!empty(
$data)) {
          
$subtotal += $data['#total'];
        }
      }
    }
    if (
$subtotal $max) {
      
$context = array(
        
'revision' => 'formatted-original',
        
'type' => 'amount',
      );
      
drupal_set_message(variable_get('uc_maximum_subtotal_text't('The maximum order subtotal for checkout is !max.', array('!max' => uc_price($max$context)))), 'error');
      
drupal_goto('cart');
    }
  }

 

?>

вот и все Smile