16 luglio 2011

Lentezza xampp su windows seven

Se avete installato xampp su seven (anche su vista dovrebbe essere analogo) e sperimentate una lentezza anomala nell'aprire qualsiasi pagina, anche il semplice localhost, provate ad aprire 127.0.0.1
Se con l'ip la pagina si apre fulmineamente allora potete fare quanto segue per rendere rapido il caricamento anche usando localhost:

Aprite una finestra di shell come amministratore e digitate quanto segue:

netsh
interface
portproxy
add v6tov4 listeport=80 connectport=80

Per verificare che sia tutto ok, digitate

show v6tov4

dovrebbe comparire questo:

Ascolta su ipv6:               Connetti a ipv4:

Indirizzo          Porta         Indirizzo         Porta
---------------------- ---------------- ---------------------- ----------------
*                  80            localhost        80


A questo punto http://localhost inizierà a girare alla velocità desiderata

8 luglio 2011

atfriends.net down

Causa blocco di Aruba, le nostre macchine sono irraggiungibili. Al momento non conosciamo la causa e non sappiamo quali previsioni ci siano per il ripristino.


Ci scusiamo per il disagio.

29 aprile 2011

atfriends.net down

Le nostre macchine sono posizionate nella server farm di Aruba in quanto il nostro fornitore, Alicom, è stato acquisito da Aruba anni fa.

Questa notte si è sviluppato un prncipio di incendio in serverfarm.

Stando alle prime notizie il tutto è originato dalle batterie degli ups e non ha coinvolto le sale server e dati.

Ovviamente il principio di incendio ha fatto scattare il sistema di sicurezza che interrompe l'energia elettrica e per questo motivo tutti i servizi sono sospesi.

Prima di riattivare i servizi devono essere effettuate tutte le verifiche del caso.

Per maggiori informazioni e aggiornamenti, invito a seguire direttamente Aruba su twitter:

http://twitter.com/#!/Arubait

Ci scusiamo per il disagio.

3 luglio 2008

Zen Cart: applicare uno sconto % a seconda del tipo di pagamento scelto

Benissimo, si riprende a scrivere qualcosa...

Nello specifico, di nuovo per Zen Cart e vediamo oggi come realizzare un sistema di sconto a percentuale sul totale ordine che si attivi quando l'utente seleziona un particolare sistema di pagamento.

Nel caso di esempio utilizzerò il mio modulo bonifico come sistema di pagamento su cui applicare lo sconto.

Sconti, maggiorazioni (sia a percentuale sia calcolati in altro modo) che vadano a modificare il totale dell'ordine si realizzano creando un nuovo modulo della 'serie' order_total

Nel caso specifico, visto che aggiungeremo anche una piccola nota da far vedere nella fase 2 del checkout (ovvero la scelta del sistema di pagamento) in corrispondenza del sistema di pagamento influenzato da questo sconto, andremo a fare anche una piccola modifica al modulo di pagamento e al corrispondente file di lingua. Questa nota è opzionale, utile per far capire all'acquirente che se sceglie quel sistema di pagamento otterrà un certo sconto (la percentuale viene presa dinamicamente dalla configurazione del modulo order total che creeremo e la nota sparisce se disabilitiamo lo sconto).

Partiamo dalla creazione del modulo order_total:

posizione: includes/modules/order_total/
nome: ot_sconto_bonifico.php

contenuto del file:

/**
* sconto_bonifico order-total module
*
* @package orderTotal
* @copyright Copyright 2008 Paolo De Dionigi aka spike00 http://www.atfriends.net
* @copyright Portions Copyright 2003-2006 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @copyright Portions Copyright (c) 2002 Thomas Plänkers http://www.oscommerce.at
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: ot_sconto_bonifico.php 2008-07-03 spike00 $
*/
/**
* sconto_bonifico Order Totals Module
*
*/

class ot_sconto_bonifico {
var $title, $output;

function ot_sconto_bonifico() {
$this->code = 'ot_sconto_bonifico';
$this->title = MODULE_ORDER_TOTAL_SCONTO_BONIFICO_TITLE;
$this->description = MODULE_ORDER_TOTAL_SCONTO_BONIFICO_DESCRIPTION;
$this->enabled = ((MODULE_ORDER_TOTAL_SCONTO_BONIFICO_STATUS == 'true') ? true : false);
$this->sort_order = MODULE_ORDER_TOTAL_SCONTO_BONIFICO_SORT_ORDER;

$this->output = array();
}

function process() {
global $order, $currencies, $sconto_valore, $sconto_bonifico_country, $shipping, $db;

if (MODULE_ORDER_TOTAL_SCONTO_BONIFICO_STATUS == 'true') {
if ($_SESSION['payment'] == 'bonifico') {

$sconto_valore = MODULE_ORDER_TOTAL_SCONTO_BONIFICO_VALORE;
$importo_sconto = ($order->info['total'] * $sconto_valore / 100);
$sconto_bonifico_tax_address = zen_get_tax_locations();
$tax = zen_get_tax_rate(MODULE_ORDER_TOTAL_SCONTO_BONIFICO_TAX_CLASS, $sconto_bonifico_tax_address['country_id'], $sconto_bonifico_tax_address['zone_id']);
$order->info['total'] -= $importo_sconto;
if ($tax > 0) {
$tax_description = zen_get_tax_description(MODULE_ORDER_TOTAL_SCONTO_BONIFICO_TAX_CLASS, $sconto_bonifico_tax_address['country_id'], $sconto_bonifico_tax_address['zone_id']);
$order->info['tax'] -= zen_calculate_tax($importo_sconto, $tax);
$order->info['tax_groups'][$tax_description] -= zen_calculate_tax($importo_sconto, $tax);
$order->info['total'] -= zen_calculate_tax($importo_sconto, $tax);
if (DISPLAY_PRICE_WITH_TAX == 'true') {
$importo_sconto -= zen_calculate_tax($importo_sconto, $tax);
}
}

$this->output[] = array('title' => $this->title . ':',
'text' => '- ' . $currencies->format($importo_sconto, true, $order->info['currency'], $order->info['currency_value']),
'value' => $importo_sconto);
}
}
}

function check() {
global $db;
if (!isset($this->_check)) {
$check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_ORDER_TOTAL_SCONTO_BONIFICO_STATUS'");
$this->_check = $check_query->RecordCount();
}

return $this->_check;
}
//lagt tilk servicepakke her!!!!
function keys() {
return array('MODULE_ORDER_TOTAL_SCONTO_BONIFICO_STATUS', 'MODULE_ORDER_TOTAL_SCONTO_BONIFICO_SORT_ORDER', 'MODULE_ORDER_TOTAL_SCONTO_BONIFICO_VALORE', 'MODULE_ORDER_TOTAL_SCONTO_BONIFICO_TAX_CLASS');
}

function install() {
global $db;
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Visualizza Supplemento', 'MODULE_ORDER_TOTAL_SCONTO_BONIFICO_STATUS', 'true', 'Attiva il modulo?', '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, date_added) values ('Ordine di Visualizzazione', 'MODULE_ORDER_TOTAL_SCONTO_BONIFICO_SORT_ORDER', '991', 'Ordine di Visualizzazione.', '6', '2', now())");
$db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Valore sconto per bonifico', 'MODULE_ORDER_TOTAL_SCONTO_BONIFICO_VALORE', '2.00', 'Impostare il valore dello sconto da applicare per i pagamenti con bonifico. Se si desidera ad esempio il 3%, scrivere 3.00', '6', '3', 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 ('Classe IVA', 'MODULE_ORDER_TOTAL_SCONTO_BONIFICO_TAX_CLASS', '0', 'Usa questa aliquota IVA per sconto bonifico.', '6', '25', 'zen_get_tax_class_title', 'zen_cfg_pull_down_tax_classes(', now())");
}


function remove() {
global $db;
$keys = '';
$keys_array = $this->keys();
$keys_size = sizeof($keys_array);
for ($i=0; $i<$keys_size; $i++) {
$keys .= "'" . $keys_array[$i] . "',";
}
$keys = substr($keys, 0, -1);

$db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in (" . $keys . ")");
}
}
?>


Da notare la riga in cui si dice a questo modulo di 'entrare in funzione' se l'utente ha scelto il bonifico come sistema di pagamento:

if ($_SESSION['payment'] == 'bonifico')

quanto si trova tra le virgolette ' ', ovvero la parola bonifico, deve corrispondere esattamente a quanto contenuto tra le virgolette della riga: $this->code = 'bonifico';
che si trova verso l'inizio del file relativo al modulo di pagamento (in questo caso: includes/modules/payment/bonifico.php), ovvero al 'codice' atribuito al modulo di pagamento.

Altro file da creare è il file di lingua:

posizione: includes/languages/italian/modules/order_total/
nome: ot_sconto_bonifico.php

contenuto del file:

/**
* @package languageDefines
* @copyright Copyright 2008 Paolo De Dionigi aka spike00 http://www.atfriends.net
* @copyright Portions Copyright 2003-2006 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: ot_sconto_bonifico.php 2008-07-03 spike00 $
*/
define('MODULE_ORDER_TOTAL_SCONTO_BONIFICO_TITLE', 'Sconto per pagamento con bonifico');
define('MODULE_ORDER_TOTAL_SCONTO_BONIFICO_DESCRIPTION', 'Sconto per pagamenti tramite bonifico');
?>

Infine apportiamo le modifiche al file del modulo di pagamento per inserire la nota di cui sopra:

Subito dopo la riga

$this->title = MODULE_PAYMENT_BONIFICO_TEXT_TITLE;

inseriamo queste righe:

if (MODULE_ORDER_TOTAL_SCONTO_BONIFICO_STATUS == 'true') {
$this->title = MODULE_PAYMENT_BONIFICO_TEXT_TITLE . '

Nota: previsto sconto pari al ' . MODULE_ORDER_TOTAL_SCONTO_BONIFICO_VALORE .'%
';
}

Qui ho scritto direttamente il testo in italiano, ovviamente se si ha un sito multilingua questa operazione comporterà che anche nelle lingue diverse dall'italiano, il messaggio si veda in italiano, quindi invece di fare così, si deve creare una o più nuove defines di lingua e usarle al posto del testo scritto direttamente nel modulo.



Ok, ora rimano soltanto da attivare il modulo e configurarlo.

Si va nell'amministrazione, in moduli, totale ordine. Qui comparirà il nostro nuovo modulo 'Sconto per pagamento con bonifico', lo installiamo come qualsiasi altro modulo. Di default ho inserito come posizionamento il valore 991, che dovrebbe essere subito dopo il calcolo dell'iva e subito prima del totale, così il tutto risulta coerente in visualizzazione da parte del cliente, comunque ovviamente è possibile modificare l'ordine di visualizzazione.

Altro parametro fondamentale ovviamente è il valore dello sconto. Se si desidera ad esempio impostare uno sconto pari al 3%, bisogna scrivere 3.00 nel campo apposito.

Ultima cosa: il modulo è ovviamente disattivabile e/o disintallabile. Se viene disabilitato o disinstallato ovviamente non verrà più applicato lo sconto e sparirà la nota in corrispondenza del sistema di pagamento nella pagina 2 del checkout.

Fine ;)

Buoni sconti a tutti ;)

21 marzo 2007

Partita IVA e Codice Fiscale per Zen Cart 1.3.7

Finalmente oggi ho rilasciato la tanto sospirata modifica necessaria per gestire in Zen Cart (versione italiana 1.3.7) la partita IVA e il codice fiscale dei clienti.

Grazie a queste modifiche, vengono inseriti due nuovi campi nel form di creazione account.

Oltre ad essere presenti in fase di creazione account, ovviamente sono presenti anche nella sezione di modifica, nella rubrica indirizzi e in fase di checkout qualora si specifichi un indirizzo di fatturazione differente rispetto a quello di default.

Per poter gestire questi due nuovi campi è necessario modificare svariati files della distribuzione originale, nonchè modificare anche il database.

Questo è l'elenco dei fiels coinvolti:

- admin/customers.php
- admin/includes/classes/order.php
- admin/includes/functions/general.php
- admin/includes/languages/italian/extra_definitions/fiscal_def.php

- includes/classes/order.php
- includes/languages/italian/extra_definitions/fiscal_def.php
- includes/modules/pages/address_book/header_php.php
- includes/modules/pages/address_book_process/header_php.php
- includes/modules/pages/address_book_process/jscript_main.php
- includes/modules/pages/checkout_payment_address/jscript_main.php
- includes/modules/pages/create_account/jscript_form_check.php
- includes/modules/pages/login/jscript_form_check.php

- includes/modules/YOUR_TEMPLATE/checkout_address_book.php
- includes/modules/YOUR_TEMPLATE/checkout_new_address.php
- includes/modules/YOUR_TEMPLATE/create_account.php

- includes/templates/YOUR_TEMPLATE/templates/tpl_modules_address_book_details.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_modules_checkout_new_address.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_modules_create_account.php



INSTALLAZIONE

I files sono salvati con il percorso di default dell'installazione di Zen Cart.
Se avete apportato modifiche a qualcuno dei files coinvolti, dovrete riportarle anche nel corrispondente file contenuto in questo archivio.
Ove possibile è stato utilizzato l'override, in questi casi, alla cartella del template è stato dato il nome your_template. Ovviamente dovrete rinominarle con il nome del vs template in uso.

Fatto ciò, potrete trasferire i files nella root del vostro store.

Dopodiche eseguite la patch sql contenuta nel file sql_patch.sql_patch

Ora potete procedere con il setup


SETUP

Per attivare / disattivare i due nuovi campi, recarsi in Admin->Configurazione->Info Cliente
Per definire il numero minimo di caratteri che l'utente deve inserire in fase di compilazione, andare in Admin->Configurazione->Valori Minimi
Come al solito, specificando 0 si ottiene che il campo in questione non è più obbligatorio.


DOWNLOAD

14 marzo 2007

Si parte!

Eccoci qui, su blogspot.
Visto che questo è una via di mezzo tra un blog personale e un blog aziendale (@friends.net) e visto che in atfriends ci occupiamo di sviluppo web, a prima vista potrebbe sembrare piuttosto strana la scelta di aprire un blog in uno spazio condiviso, piuttosto che integrare un blog direttamente all'interno del nostro sito.

Beh, il motivo per cui abbiamo fatto questa scelta è presto detto: semplicemente vogliamo monitorare l'influenza sul nostro sito di un blog 'esterno' situato in un 'contenitore' così conosciuto come blogspot.