ho inserito alcune modifiche al modulo del contrassegno (versione zencart 1.5.1), rifacendomi un po' a quanto trovato su questo forum e ad un altro modulo recuperato su un altro sito.
Di fatto l'attuale modulo si disattiva se:
1) Il totale dell'ordine supera la soglia di 500 euro
2) Uno dei prodotti inseriti nel carrello ha giacenza zero
Quello che però non sono riuscito a fare è di disabilitarlo anche se nel carrello hai inserito tutti prodotti attualmente in giacenza ma uno di essi è stato inserito in quantità maggiori di quelle disponibili.
Ecco il contenuto del modulo:
- Codice: Seleziona tutto
<?php
/**
* COD Payment Module
*
* @package paymentMethod
* @copyright Copyright 2003-2010 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: cod.php 15420 2010-02-04 21:27:05Z drbyte $
*/
class cod {
var $code, $title, $description, $enabled;
// class constructor
function cod() {
global $order;
$this->code = 'cod';
$this->title = MODULE_PAYMENT_COD_TEXT_TITLE;
$this->description = MODULE_PAYMENT_COD_TEXT_DESCRIPTION;
$this->sort_order = MODULE_PAYMENT_COD_SORT_ORDER;
$this->enabled = ((MODULE_PAYMENT_COD_STATUS == 'True') ? true : false);
if ((int)MODULE_PAYMENT_COD_ORDER_STATUS_ID > 0) {
$this->order_status = MODULE_PAYMENT_COD_ORDER_STATUS_ID;
}
if (is_object($order)) $this->update_status();
}
// class methods
function update_status() {
global $order, $db;
if ($order->info['subtotal'] > 500) {
$this->enabled = false;
}
// modifica
$ko = 0;
foreach ($order->products as $key) {
$product_query = "select products_quantity from " . TABLE_PRODUCTS . "
where products_id = '" . (int)$key['id'] . "' ";
if ($product = $db->Execute($product_query)){
$quantity = $product->fields['products_quantity'];
}
if ($ko >0 or $quantity <= 0) { $ko = 1; break ;}
}
// fine
if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_COD_ZONE > 0) ) {
$check_flag = false;
$check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_COD_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
while (!$check->EOF) {
if ($check->fields['zone_id'] < 1) {
$check_flag = true;
break;
} elseif ($check->fields['zone_id'] == $order->delivery['zone_id']) {
$check_flag = true;
break;
}
$check->MoveNext();
}
if ($check_flag == false) {
$this->enabled = false;
}
}
// disable the module if the order only contains virtual products
if ($this->enabled == true) {
if ($order->content_type != 'physical') {
$this->enabled = false;
}
//DISATTIVA IL MODULO
if ($ko == 1) {
$this->enabled = false;
}
//FINE
}
}
function javascript_validation() {
return false;
}
function selection() {
return array('id' => $this->code,
'module' => $this->title);
}
function pre_confirmation_check() {
return false;
}
function confirmation() {
return false;
}
function process_button() {
return false;
}
function before_process() {
return false;
}
function after_process() {
return false;
}
function get_error() {
return false;
}
function check() {
global $db;
if (!isset($this->_check)) {
$check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_COD_STATUS'");
$this->_check = $check_query->RecordCount();
}
return $this->_check;
}
function install() {
global $db, $messageStack;
if (defined('MODULE_PAYMENT_COD_STATUS')) {
$messageStack->add_session('Modulo Contrassegno già installato.', 'error');
zen_redirect(zen_href_link(FILENAME_MODULES, 'set=payment&module=cod', 'NONSSL'));
return 'failed';
}
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Abilita il Modulo Contrassegno', 'MODULE_PAYMENT_COD_STATUS', 'True', 'Accettare pagamenti con Contrassegno?', '6', '1', 'zen_cfg_select_option(array(\'True\', \'False\'), ', now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Zona di Pagamento', 'MODULE_PAYMENT_COD_ZONE', '0', 'Se viene selezionata una Zona, attiva questo metodo di pagamento soltanto per questa Zona.', '6', '2', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Ordine di Visualizzazione', 'MODULE_PAYMENT_COD_SORT_ORDER', '0', 'Ordine di Visualizzazione. Il più basso viene visualizzato per primo.', '6', '0', now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Imposta Stato Ordine', 'MODULE_PAYMENT_COD_ORDER_STATUS_ID', '0', 'Imposta lo Stato degli Ordini eseguiti con questo modulo di pagamento a questo valore.', '6', '0', 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name', now())");
}
function remove() {
global $db;
$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
}
function keys() {
return array('MODULE_PAYMENT_COD_STATUS', 'MODULE_PAYMENT_COD_ZONE', 'MODULE_PAYMENT_COD_ORDER_STATUS_ID', 'MODULE_PAYMENT_COD_SORT_ORDER');
}
}
Avete idee su come fare?
Grazie mille
Ivan