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;
}
}
?>