nome_metodo_originale = $this->nome_metodo; $this->nome_metodo .= ' ('.(float)$this->getCredito().'€)'; } function getCredito(){ return call_user_func($this->getCredito); } function creaMovimento($importo, $verificaCredito = true, $isPagamentoParziale = false){ if($verificaCredito && ($this->getCredito()+$importo) < 0) return false; return call_user_func($this->creaMovimento, $importo, $isPagamentoParziale); } function rimuoviMovimento($idMovimento){ return call_user_func($this->rimuoviMovimento, $idMovimento); } function setValuta($currencyCode){ $this->valuta = $currencyCode; } function auto(){ $this->importo = number_format(str_replace(",", ".", $this->importo), 2, ".", ""); switch($_GET[$this->step_var]){ default: $this->Procedura->iniziato($this->nome_metodo); $importo = -1 * $this->importo; $credito = $this->getCredito(); if($credito < $this->importo){ if($credito > 0) $url = $this->Procedura->genera_link_agg(array($this->Procedura->step_var=>'', $this->Procedura->metodo_var => '', $this->Procedura->usa_credito_var => $_GET[$this->Procedura->metodo_var], $this->Procedura->importo_credito_var => $credito)); else{ $url = $this->Procedura->genera_link_agg(array($this->step_var=>"return_ko")); } $this->Procedura->redirect($url); } if($idMovimento = $this->creaMovimento($importo)){ $this->Procedura->confermato($this->identificativo); $this->Procedura->logga(array( 'identificativo_ordine' => $this->identificativo, 'ultimo_stato' => 'Movimento #'.$idMovimento.' ('.$importo.'€) salvato, credito residuo '.$creditoDopo.'€' )); $setp = "return_ok"; } else{ $setp = "return_ko"; } $this->Procedura->redirect($this->Procedura->genera_link_agg(array($this->step_var=>$setp))); return; case 'return_ok': return $this->Procedura->concluso(); case 'return_ko': return $this->Procedura->errore("Il tuo credito non è sufficiente"); } } } ?>