Current File : /home/karenpetzb/application/models/utils/Facture.php
<?php
class Facture {
 
	var $facture_fidelite_lines;
	var $facture_lines;
	var $code_reduction; 
	var $livraison;

	var $remise_command_euro = 0;
	var $remise_command_pour = 0;
	var $date_start;

	var $total_poids = 0;
	var $isAncienPoids = false;
	var $isFrancoDenied = false;
	var $isCodeReduction_Product = false;

	var $total_HT_HR = 0;
	var $total_remise = 0;
	var $total_HT = 0;
	var $total_frais_port = 0;
	var $total_frais_port_pour = 0;
	var $total_HT_FP = 0;
	var $total_TVA = 0;
	var $total_TTC = 0;

	var $resteFrancoLiv;
	
	//Dans le casdes caddyType
	var $user_nom;
	var $user_prenom;
	var $user_id;
	  
	function Facture() {
		$this->facture_lines = array();
		$this->facture_fidelite_lines = array();
		$this->code_reduction = array();
		$this->livraison = array();
		 
		$this->setDateStart();
	}

	 
	public function changeTVA($newTVA) {
		$this->tva = $newTVA;
		$this->total_TVA = $this->getPrixTotalTVA(false);
		$this->total_TTC = $this->getPrixTotalTTC(false);
	}

	public function isFactureValid($type) {
		if (isset($this->facture_lines) && !empty($this->facture_lines)) { return true; }
		return false;
	}

	public function checkCodeReductionProduct($reference, $qte) {
		if (isset($this->code_reduction) && !empty($this->code_reduction)) {
			if (($reference == $this->code_reduction['PRODUITREF']) && ($qte >= $this->code_reduction['PRODUITNBR'])) {
				$this->isCodeReduction_Product = true;
			}
		}
	}

	public function getPrixCodeReduction() {
		if (isset($this->code_reduction) && !empty($this->code_reduction) && $this->code_reduction['isACTIF'] == 1 ) {
			if ($this->code_reduction['EURO'] > 0) {
				return sprintf("%.2f",$this->code_reduction['EURO']);
			}
			if ($this->code_reduction['POUR'] > 0) {
				return ($this->total_HT_HR * $this->code_reduction['POUR']) / 100;
			}
		}
		return 0;
	}

	public function getPrixRemise() {
		$result = 0;
		if ($this->remise_command_euro > 0) { $result = $this->remise_command_euro; }
		if ($this->remise_command_pour > 0) { $result += ($this->total_HT_HR * $this->remise_command_pour) / 100; }
		return sprintf("%.2f",$result);
	}

	public function getPrixTotalHT() {
		$prixRemise = $this->getPrixRemise();
		if ($prixRemise >= $this->total_HT_HR) {
			$this->remise_command_euro = 0;
			$this->remise_command_pour = 0;
			$prixRemise = 0;
		}
		return sprintf("%.2f",$this->total_HT_HR - $prixRemise);
	}

	public function getPrixTotalHT_FP($isShow) {
		if ($isShow) { return sprintf("%.2f",$this->total_HT + $this->total_frais_port, 2, ',', ' '); }
		return sprintf("%.2f",$this->total_HT + $this->total_frais_port);
	}

	public function getPrixTotalTVA($isShow) {
		if ($isShow) { return sprintf("%.2f", ($this->getPrixTotalHT_FP(false) * $this->getCurrentTva($this->date_start)) / 100, 2, ',', ' '); }
		return sprintf("%.2f", ($this->getPrixTotalHT_FP(false) * $this->getCurrentTva($this->date_start)) / 100);
	}

	public function getPrixTotalTTC($isShow) {
		if ($isShow) { return sprintf("%.2f", $this->getPrixTotalHT_FP(false) + $this->getPrixTotalTVA(false) , 2, ',', ' '); }
		return sprintf("%.2f", $this->getPrixTotalHT_FP(false) + $this->getPrixTotalTVA(false));
	}

	public function getNbArticles() {
		if (isset($this->facture_lines) && !empty($this->facture_lines)) { return count($this->facture_lines); }
		return 0;
	} 
	public function addLine($line) { 
		array_push($this->facture_lines, $line); 
	}
	public function addFideliteLine($line) { 
		array_push($this->facture_fidelite_lines, $line); 
	}

	public function toArray() {	}

	private function setDateStart() {
		$date = new Zend_Date();
		$this->date_start = $date->toString('YYYY-MM-dd HH:mm:ss');
	}
	
	private function getCurrentTva($datevalue) {
		$date = new Zend_Date();
		$date->set($datevalue);
		$result = 20;
		if (intval($date->toString('YYYY')) < 2014) {
			$result = 19.60;
		}
		return $result;
	}
	
	public function computeFactureTVA(&$facture, $paysLivraison) {
		$resultTVA = $this->getCurrentTva($facture['DATESTART']);
		
		try {
			/*if (isset($paysLivraison) && !empty($paysLivraison)) {
			 if (strcasecmp($paysLivraison, "FRANCE") != 0) {
			$resultTVA = 0;
			}
			}*/
			if (isset($facture) && !empty($facture)) {
				$facture['TVA'] = $resultTVA;
				$facture['PRIXTOTALTVA'] = sprintf("%.2f", $facture['PRIXTOTALHTFP'] * $facture['TVA']) / 100;
				
			}
		} catch(Zend_Exception $e) { }
	}
    
    public function isCarteFidelitePointsValid($sumOfUser) {
        return $this->getCarteFidelitePointsTotal() <= $sumOfUser;
    }
    public function getCarteFidelitePointsTotal() {
        $total = 0;
		foreach ($this->facture_fidelite_lines as $item) {
            $total += $item->fidelite_nbpoint;
        }
        return $total;
    }
	
}

?>