paolo@bimodesign.com | +34 608 61 64 10

E-Commerce

        

Couponic: aggiungere la data di redeemed (riscatto)

Come anticipato in alcuni post precedenti, Couponic presenta alcuni bug e mancanze abbastanza evidenti, come quella di non gestire la data di riscatto (redeemed in inglese) del coupon, una volta che questo e' stato usato. Esiste infatti solo la possibilita' di cambiare lo stato da "disponibile" ad "usato" nel campo status della tabella cpns_DealCoupon.
Vediamo come risolvere.

Una delle soluzioni piu' rapide, evitando di modificare il codice PHP, e' quella di creare un TRIGGER MySQL che non fa altro che, nel caso lo stato passi da "disponibile" ad "usato" (questo aggiornamento si effetto dal CMS utente), aggiornare un nuovo campo data (che avremo l'accortezza di aggiunge alla tabella cpns_DealCoupon, come tipo DATETIME), con il valore del giorno e dell'ora attuale. Chiaramente il passaggio da "usato" a disponibile comportera' modificare di nuovo il campo a NULL. Nota: ho scelto di inserire NULL e non ' ', perche' in quest'ultimo caso verrebbe inserito un valore 0000-00-00 00:00:00.
Questo il codice per aggiungere il campo data e per il TRIGGER.

ALTER TABLE `cpns_DealCoupon` ADD COLUMN `redeemDate` DATETIME  AFTER `redeemLocationId`;

DROP TRIGGER updatereedemdate;

DELIMITER $$
    CREATE TRIGGER updatereedemdate BEFORE UPDATE ON cpns_DealCoupon
    FOR EACH ROW BEGIN
      DECLARE status_field integer;

      SET status_field = NEW.status;

      IF (status_field = 2) THEN
          SET NEW.redeemDate = NOW();
      ELSE
	  SET NEW.redeemDate = NULL; 
      END IF;
    END;
$$
DELIMITER ;

Dove lo stato "2" corrisponde ad "usato".

Ricordo che, per una rapida panoramica su come creare un TRIGGER in MySQL, potete fare riferimento a questo chiarissimo e ottimo articolo