Current File : /home/karenpetzb/application/models/Command.php |
<?php
class Command extends Zend_Db_Table
{
protected $_name = 'command';
protected $_primary = 'ID';
public function getCommandAsFacture($id) {
$sql = "
SELECT c.REFERENCE REFERENCE,c.ID ID, c.PRIXTOTALTTC TOTALTTC,c.PRIXTOTALHTFP TOTALHTFP, c.PRIXFRAISPORTPOUR FRAISPORTPOUR, c.PRIXFRAISPORT FRAISPORT, c.PRIXTOTALHT TOTALHT, c.PRIXTOTALHTHR TOTALHTHR, c.PRIXREMISEEUR REMISEEUR,
c.STATUT STATUT , c.DATESTART DATESTART,c.DATEEND DATEEND, c.LIV_RAISONSOCIAL LIVRAISONSOCIAL, c.LIV_ADRESSE LIVADRESSE, c.LIV_CP LIVCP, c.LIV_VILLE LIVVILLE,
c.LIV_PAYS LIVPAYS, c.FACT_RAISONSOCIAL FACTRAISONSOCIAL, c.FACT_ADRESSE FACTADRESSE, c.FACT_CP FACTCP , c.FACT_VILLE FACTVILLE , c.FACT_PAYS FACTPAYS, c.PAYMENT_STATUS PAYMENT_STATUS,c.TXN_ID TXN_ID,
cp.CHILDID CHILDID, cp.CHILDREF CHILDREF,cp.CHILDisPROMO CHILDisPROMO,cp.CHILDisDEVIS CHILDisDEVIS, cp.CHILDPRIX CHILDPRIX, cp.CHILDQUANTITY CHILDQUANTITY, cp.CHILDPROMOPRIX CHILDPROMOPRIX, cp.CHILDPRIXTOTAL CHILDPRIXTOTAL, cp.CHILDPRIXREMISE CHILDPRIXREMISE,
cp.CHILDREMISEPRIXTAUXE CHILDREMISEPRIXTAUXE, cp.CHILDREMISEPRIXTAUXP CHILDREMISEPRIXTAUXP,
p.ID PRODUCTID, p.NOM PRODUCTNOM, p.NAVNOM PRODUCTNAVNOM, pc.DESIGNATION DESIGNATION, p.STOCK STOCK,
c.USER_NOM USERNOM, c.USER_PRENOM USERPRENOM, c.USER_TEL USERTEL, c.USER_FAX USERFAX, c.USER_EMAIL USEREMAIL, c.USER_MODEPAIEMENT USERMODEPAIEMENT, c.USER_NUMCOMPTE USERNUMCOMPTE,
c.LIV_NOM LIV_NOM, c.CODEREDUCTION CODEREDUCTION, c.IDUSER IDUSER,
cp.SELECTEDOPTION SELECTEDOPTION, c.USER_MODEPAIEMENT_TYPE USER_MODEPAIEMENT_TYPE, c.USER_MODEPAIEMENT_LABEL USER_MODEPAIEMENT_LABEL, c.DELIVERY_TRACKINGLINK DELIVERY_TRACKINGLINK,
c.DELIVERY_TRACKINGNUMBER DELIVERY_TRACKINGNUMBER, cat.NAVNOM_URLPARENTS NAVNOM_URLPARENTS, cp.ID IDLINE
FROM command c
LEFT JOIN command_product AS cp ON cp.IDCOMMAND = c.ID
LEFT JOIN product AS p ON p.ID = cp.PRODUCTID
LEFT JOIN category AS cat ON p.IDCATEGORY = cat.ID
LEFT JOIN productchild AS pc ON pc.ID = cp.CHILDID
WHERE c.ID = ".$id."
ORDER BY pc.REFERENCE ASC
";
$resultCommande = $this->getAdapter()->fetchAll($sql);
$myCommand = array();
$myCommand['CADDY'] = array();
$myCommand['CADDYFIDELITE'] = array();
$i = 0;
$idCommand = 0;
foreach ($resultCommande AS $row) {
if ($i == 0) {
$myCommand['REFERENCE'] = $row['REFERENCE'];
$myCommand['ID'] = $row['ID'];
$idCommand = $row['ID'];
$myCommand['PRIXTOTALTTC'] = sprintf("%.2f", $row['TOTALTTC']);
$myCommand['PRIXTOTALHTFP'] = sprintf("%.2f", $row['TOTALHTFP']);
$myCommand['PRIXFRAISPORTPOUR'] = $row['FRAISPORTPOUR'];
$myCommand['PRIXFRAISPORT'] = sprintf("%.2f", $row['FRAISPORT']);
$myCommand['PRIXTOTALHT'] = sprintf("%.2f", $row['TOTALHT']);
$myCommand['PRIXTOTALHTHR'] = sprintf("%.2f", $row['TOTALHTHR']);
$myCommand['PRIXREMISEEUR'] = sprintf("%.2f", $row['REMISEEUR']);
$myCommand['DATESTART'] = $row['DATESTART'];
$myCommand['DELIVERY_TRACKINGLINK'] = $row['DELIVERY_TRACKINGLINK'];
$myCommand['DELIVERY_TRACKINGNUMBER'] = $row['DELIVERY_TRACKINGNUMBER'];
$myCommand = $this->computeFactureTVA($myCommand, $row['LIVPAYS']);
$myCommand['PAYMENT_STATUS'] = $row['PAYMENT_STATUS'];
$myCommand['TXN_ID'] = $row['TXN_ID'];
$myCommand['STATUT'] = $row['STATUT'];
$myCommand['DATEEND'] = $row['DATEEND'];
$myCommand['LIV_RAISONSOCIAL'] = $row['LIVRAISONSOCIAL'];
$myCommand['LIV_ADRESSE'] = $row['LIVADRESSE'];
$myCommand['LIV_CP'] = $row['LIVCP'];
$myCommand['LIV_VILLE'] = $row['LIVVILLE'];
$myCommand['LIV_PAYS'] = $row['LIVPAYS'];
$myCommand['FACT_RAISONSOCIAL'] = $row['FACTRAISONSOCIAL'];
$myCommand['FACT_ADRESSE'] = $row['FACTADRESSE'];
$myCommand['FACT_CP'] = $row['FACTCP'];
$myCommand['FACT_VILLE'] = $row['FACTVILLE'];
$myCommand['FACT_PAYS'] = $row['FACTPAYS'];
$myCommand['USER_NOM'] = $row['USERNOM'];
$myCommand['USER_PRENOM'] = $row['USERPRENOM'];
$myCommand['USER_TEL'] = $row['USERTEL'];
$myCommand['USER_FAX'] = $row['USERFAX'];
$myCommand['USER_EMAIL'] = $row['USEREMAIL'];
$myCommand['USER_ID'] = $row['IDUSER'];
$myCommand['USER_NUMCOMPTE'] = $row['USERNUMCOMPTE'];
$myCommand['USER_MODEPAIEMENT'] = $row['USERMODEPAIEMENT'];
$myCommand['LIV_NOM'] = $row['LIV_NOM'];
$myCommand['CODEREDUCTION'] = $row['CODEREDUCTION'];
$myCommand['USER_MODEPAIEMENT_TYPE'] = $row['USER_MODEPAIEMENT_TYPE'];
$myCommand['USER_MODEPAIEMENT_LABEL'] = $row['USER_MODEPAIEMENT_LABEL'];
}
$myCommand['CADDY'][$i]['IDLINE'] = $row['IDLINE'];
$myCommand['CADDY'][$i]['ID'] = $row['CHILDID'];
$myCommand['CADDY'][$i]['REFERENCE'] = $row['CHILDREF'];
$myCommand['CADDY'][$i]['DESIGNATION'] = $row['DESIGNATION'];
$myCommand['CADDY'][$i]['isPROMO'] = $row['CHILDisPROMO'];
$myCommand['CADDY'][$i]['isDEVIS'] = $row['CHILDisDEVIS'];
$myCommand['CADDY'][$i]['PRIX'] = sprintf("%.2f", $row['CHILDPRIX']);
$myCommand['CADDY'][$i]['QUANTITY'] = $row['CHILDQUANTITY'];
$myCommand['CADDY'][$i]['PROMOPRIX'] = sprintf("%.2f", $row['CHILDPROMOPRIX']);
$myCommand['CADDY'][$i]['PRIXTOTAL'] = sprintf("%.2f", $row['CHILDPRIXTOTAL']);
$myCommand['CADDY'][$i]['REMISEPRIX'] = sprintf("%.2f", $row['CHILDPRIXREMISE']);
$myCommand['CADDY'][$i]['REMISEPRIXTAUXE'] = sprintf("%.2f", $row['CHILDREMISEPRIXTAUXE']);
$myCommand['CADDY'][$i]['REMISEPRIXTAUXP'] = $row['CHILDREMISEPRIXTAUXP'];
$myCommand['CADDY'][$i]['PRODUCTID'] = $row['PRODUCTID'];
$myCommand['CADDY'][$i]['PRODUCTNOM'] = $row['PRODUCTNOM'];
$myCommand['CADDY'][$i]['STOCK'] = $row['STOCK'];
$myCommand['CADDY'][$i]['SELECTEDOPTION'] = $row['SELECTEDOPTION'];
$myCommand['CADDY'][$i]['NAVPRODUCTNOM'] = $row['PRODUCTNAVNOM'];
$myCommand['CADDY'][$i]['NAVNOM_URLPARENTS'] = $row['NAVNOM_URLPARENTS'];
$i++;
}
$i = 0;
$resultCommandeFidelite = $this->findCommandFideliteByUserAndRef($idCommand);
foreach ($resultCommandeFidelite AS $row) {
$myCommand['CADDYFIDELITE'][$i]['IDFIDELITE'] = $row['IDFIDELITE'];
$myCommand['CADDYFIDELITE'][$i]['NOM'] = $row['NOM'];
$myCommand['CADDYFIDELITE'][$i]['NBPOINT'] = $row['NBPOINT'];
$i++;
}
return $myCommand;
}
private function computeFactureTVA($facture, $paysLivraison) {
$fact = new Facture();
$fact->computeFactureTVA($facture, $paysLivraison);
return $facture;
}
/*
* STATISTIQUES
* */
public function statsBestSellForYear() {
$sql = "SELECT p.NOM AS PROD_NOM, pc.REFERENCE AS REFERENCE, cat.NOM AS CAT_NOM, COUNT( 1 ) AS NB_CMD, SUM( cp.CHILDPRIXTOTAL ) AS TOTAL, SUM( cp.CHILDQUANTITY ) AS NB
FROM command c
LEFT JOIN command_product AS cp ON cp.IDCOMMAND = c.ID
LEFT JOIN product AS p ON p.ID = cp.PRODUCTID
LEFT JOIN category AS cat ON p.IDCATEGORY = cat.ID
LEFT JOIN productchild AS pc ON pc.ID = cp.CHILDID
WHERE DATE( c.DATESTART ) >= DATE( '".date('Y')."-01-01' )
AND c.STATUT <> 0
GROUP BY pc.REFERENCE
ORDER BY TOTAL DESC
LIMIT 0 , 10";
return $this->getAdapter()->fetchAll($sql);
}
public function statsBestSellForMonth() {
$sql = "SELECT p.NOM AS PROD_NOM, pc.REFERENCE AS REFERENCE, cat.NOM AS CAT_NOM, COUNT( 1 ) AS NB_CMD, SUM( cp.CHILDPRIXTOTAL ) AS TOTAL, SUM( cp.CHILDQUANTITY ) AS NB
FROM command c
LEFT JOIN command_product AS cp ON cp.IDCOMMAND = c.ID
LEFT JOIN product AS p ON p.ID = cp.PRODUCTID
LEFT JOIN category AS cat ON p.IDCATEGORY = cat.ID
LEFT JOIN productchild AS pc ON pc.ID = cp.CHILDID
WHERE DATE( c.DATESTART ) >= DATE( '".date('Y')."-".date('m')."-01' )
AND c.STATUT <> 0
GROUP BY pc.REFERENCE
ORDER BY TOTAL DESC
LIMIT 0 , 10";
return $this->getAdapter()->fetchAll($sql);
}
public function statsNbProductYear() {
$sql = "SELECT p.NOM AS PROD_NOM, pc.REFERENCE AS REFERENCE, cat.NOM AS CAT_NOM, COUNT( 1 ) AS NB_CMD, SUM( cp.CHILDPRIXTOTAL ) AS TOTAL, SUM( cp.CHILDQUANTITY ) AS NB
FROM command c
LEFT JOIN command_product AS cp ON cp.IDCOMMAND = c.ID
LEFT JOIN product AS p ON p.ID = cp.PRODUCTID
LEFT JOIN category AS cat ON p.IDCATEGORY = cat.ID
LEFT JOIN productchild AS pc ON pc.ID = cp.CHILDID
WHERE DATE( c.DATESTART ) >= DATE( '".date('Y')."-01-01' )
AND c.STATUT <> 0
GROUP BY pc.REFERENCE
ORDER BY NB DESC
LIMIT 0 , 10";
return $this->getAdapter()->fetchAll($sql);
}
public function statsNbProductMonth() {
$sql = "SELECT p.NOM AS PROD_NOM, pc.REFERENCE AS REFERENCE, cat.NOM AS CAT_NOM, COUNT( 1 ) AS NB_CMD, SUM( cp.CHILDPRIXTOTAL ) AS TOTAL, SUM( cp.CHILDQUANTITY ) AS NB
FROM command c
LEFT JOIN command_product AS cp ON cp.IDCOMMAND = c.ID
LEFT JOIN product AS p ON p.ID = cp.PRODUCTID
LEFT JOIN category AS cat ON p.IDCATEGORY = cat.ID
LEFT JOIN productchild AS pc ON pc.ID = cp.CHILDID
WHERE DATE( c.DATESTART ) >= DATE( '".date('Y')."-".date('m')."-01' )
AND c.STATUT <> 0
GROUP BY pc.REFERENCE
ORDER BY NB DESC
LIMIT 0 , 10";
return $this->getAdapter()->fetchAll($sql);
}
public function statsCategoryCmdYear() {
$sql = "SELECT cat.NOM AS CAT_NOM, COUNT( 1 ) AS NB_CMD, SUM( cp.CHILDPRIXTOTAL ) AS TOTAL
FROM command c
LEFT JOIN command_product AS cp ON cp.IDCOMMAND = c.ID
LEFT JOIN product AS p ON p.ID = cp.PRODUCTID
LEFT JOIN category AS cat ON p.IDCATEGORY = cat.ID
LEFT JOIN productchild AS pc ON pc.ID = cp.CHILDID
WHERE DATE( c.DATESTART ) >= DATE( '".date('Y')."-01-01' )
AND c.STATUT <> 0
GROUP BY CAT_NOM
ORDER BY NB_CMD DESC
LIMIT 0 , 10";
return $this->getAdapter()->fetchAll($sql);
}
public function statsCategoryCmdMonth() {
$sql = "SELECT cat.NOM AS CAT_NOM, COUNT( 1 ) AS NB_CMD, SUM( cp.CHILDPRIXTOTAL ) AS TOTAL
FROM command c
LEFT JOIN command_product AS cp ON cp.IDCOMMAND = c.ID
LEFT JOIN product AS p ON p.ID = cp.PRODUCTID
LEFT JOIN category AS cat ON p.IDCATEGORY = cat.ID
LEFT JOIN productchild AS pc ON pc.ID = cp.CHILDID
WHERE DATE( c.DATESTART ) >= DATE( '".date('Y')."-".date('m')."-01' )
AND c.STATUT <> 0
GROUP BY CAT_NOM
ORDER BY NB_CMD DESC
LIMIT 0 , 10";
return $this->getAdapter()->fetchAll($sql);
}
/*-------------------------------------------*/
public function deleteDevisByUser($idUser, $idDevis) {
if ($this->isExistDevisOrCommand($idUser, $idDevis)) {
$commandProduct = new CommandProduct();
$commandProduct->delete('IDCOMMAND = '.$idDevis);
$this->delete('ID = '.$idDevis);
return 'OK';
} else { return 'USER';}
return 'NOK';
}
private function isExistDevisOrCommand($idUser, $idDevisCommand) {
$sql = "SELECT COUNT(c.id) NBR FROM command c
WHERE c.IDUSER = ".$idUser."
AND c.ID = ".$idDevisCommand;
$result = $this->getAdapter()->fetchRow($sql);
if (isset($result) && !empty($result) && $result['NBR'] > 0) { return true; }
return false;
}
public function findCommandsByUser($idUser) {
$select = "SELECT c.* FROM command c
WHERE c.STATUT IN (1, 2, 3, 4)
AND c.IDUSER = ".$idUser."
ORDER BY DATESTART DESC";
return $this->getAdapter()->fetchAll($select);
}
public function findDevisByUser($idUser) {
$select = "SELECT c.* FROM command c
WHERE c.STATUT IN (10, 11)
AND c.IDUSER = ".$idUser."
ORDER BY DATESTART DESC";
return $this->getAdapter()->fetchAll($select);
}
public function findCommandsByMultiSearch($isValidating, $search) {
$select = "SELECT c.* FROM command c WHERE ";
if ($isValidating) {
$select .= " STATUT = 0 ";
} else {
$select .= " STATUT <> 0 ";
}
$select .= " AND (REFERENCE LIKE '%".$search."%' ";
$select .= " OR USER_NOM LIKE '%".$search."%' ";
$select .= " OR USER_PRENOM LIKE '%".$search."%' ";
$select .= " OR USER_EMAIL LIKE '%".$search."%' )";
return $this->getAdapter()->fetchAll($select);
}
public function findCommandsByStatut($statut, $order) {
$select = "SELECT c.* FROM command c
WHERE STATUT = ".$statut."
ORDER BY ".$order;
return $this->getAdapter()->fetchAll($select);
}
public function findCommandFideliteByUserAndRef($idCommand) {
$sql = "
SELECT cf.*
FROM command_fidelite AS cf
WHERE cf.IDCOMMAND = ".$idCommand."
ORDER BY cf.NBPOINT ASC
";
return $this->getAdapter()->fetchAll($sql);
}
public function findCommandByUserAndRef($idUser, $ref) {
$sql = "
SELECT c.REFERENCE REFERENCE,c.ID ID, c.PRIXTOTALTTC TOTALTTC,c.PRIXTOTALHTFP TOTALHTFP, c.PRIXFRAISPORTPOUR FRAISPORTPOUR, c.PRIXFRAISPORT FRAISPORT, c.PRIXTOTALHT TOTALHT, c.PRIXTOTALHTHR TOTALHTHR, c.PRIXREMISEEUR REMISEEUR,
c.STATUT STATUT , c.DATESTART DATESTART, c.LIV_RAISONSOCIAL LIVRAISONSOCIAL, c.LIV_ADRESSE LIVADRESSE, c.LIV_CP LIVCP, c.LIV_VILLE LIVVILLE,
c.LIV_PAYS LIVPAYS, c.FACT_RAISONSOCIAL FACTRAISONSOCIAL, c.FACT_ADRESSE FACTADRESSE, c.FACT_CP FACTCP , c.FACT_VILLE FACTVILLE , c.FACT_PAYS FACTPAYS,
cp.CHILDID CHILDID, cp.CHILDREF CHILDREF,cp.CHILDisPROMO CHILDisPROMO,cp.CHILDisDEVIS CHILDisDEVIS, cp.CHILDPRIX CHILDPRIX, cp.CHILDQUANTITY CHILDQUANTITY, cp.CHILDPROMOPRIX CHILDPROMOPRIX, cp.CHILDPRIXTOTAL CHILDPRIXTOTAL, cp.CHILDPRIXREMISE CHILDPRIXREMISE, pc.DESIGNATION DESIGNATION,
cp.CHILDREMISEPRIXTAUXE CHILDREMISEPRIXTAUXE, cp.CHILDREMISEPRIXTAUXP CHILDREMISEPRIXTAUXP,
p.ID PRODUCTID, p.NOM PRODUCTNOM,p.NAVNOM PRODUCTNAVNOM, p.STOCK STOCK,
c.USER_NOM USERNOM, c.USER_PRENOM USERPRENOM, c.USER_TEL USERTEL, c.USER_FAX USERFAX, c.USER_EMAIL USEREMAIL, c.USER_MODEPAIEMENT USERMODEPAIEMENT, c.USER_NUMCOMPTE USERNUMCOMPTE,
c.LIV_NOM LIV_NOM, c.CODEREDUCTION CODEREDUCTION,
cp.SELECTEDOPTION SELECTEDOPTION, c.USER_MODEPAIEMENT_TYPE USER_MODEPAIEMENT_TYPE, c.USER_MODEPAIEMENT_LABEL USER_MODEPAIEMENT_LABEL, cat.NAVNOM_URLPARENTS NAVNOM_URLPARENTS
FROM command c
LEFT JOIN command_product AS cp ON cp.IDCOMMAND = c.ID
LEFT JOIN product AS p ON p.ID = cp.PRODUCTID
LEFT JOIN category cat ON p.IDCATEGORY = cat.ID
LEFT JOIN productchild AS pc ON pc.ID = cp.CHILDID
WHERE c.IDUSER = ".$idUser."
AND c.REFERENCE = '".$ref."'
ORDER BY pc.REFERENCE ASC
";
return $this->getAdapter()->fetchAll($sql);
}
public function findCommandCaddyRetrieve($idUser, $ref) {
$sql = "
SELECT c.REFERENCE REFERENCE,c.ID ID,
c.LIV_RAISONSOCIAL LIVRAISONSOCIAL, c.LIV_ADRESSE LIVADRESSE, c.LIV_CP LIVCP, c.LIV_VILLE LIVVILLE,
c.LIV_PAYS LIVPAYS, c.FACT_RAISONSOCIAL FACTRAISONSOCIAL, c.FACT_ADRESSE FACTADRESSE, c.FACT_CP FACTCP , c.FACT_VILLE FACTVILLE , c.FACT_PAYS FACTPAYS,
cp.CHILDID CHILDID, cp.CHILDREF CHILDREF,cp.CHILDisPROMO CHILDisPROMO,cp.CHILDisDEVIS CHILDisDEVIS, cp.CHILDPRIX CHILDPRIX, cp.CHILDQUANTITY CHILDQUANTITY, cp.CHILDPROMOPRIX CHILDPROMOPRIX, cp.CHILDPRIXTOTAL CHILDPRIXTOTAL, cp.CHILDPRIXREMISE CHILDPRIXREMISE, pc.DESIGNATION DESIGNATION,
cp.CHILDREMISEPRIXTAUXE CHILDREMISEPRIXTAUXE, cp.CHILDREMISEPRIXTAUXP CHILDREMISEPRIXTAUXP,
p.ID PRODUCTID, p.NOM PRODUCTNOM, p.NAVNOM PRODUCTNAVNOM, p.DESCRIPTIONSHORT DESCSHORT, pic.URL URL, p.STOCK STOCK,
c.USER_NOM USERNOM, c.USER_PRENOM USERPRENOM, c.USER_TEL USERTEL, c.USER_FAX USERFAX, c.USER_EMAIL USEREMAIL, c.USER_MODEPAIEMENT USERMODEPAIEMENT, c.USER_NUMCOMPTE USERNUMCOMPTE,
c.LIV_NOM LIV_NOM, cp.SELECTEDOPTION SELECTEDOPTION, cat.NAVNOM_URLPARENTS NAVNOM_URLPARENTS
FROM command c
LEFT JOIN command_product AS cp ON cp.IDCOMMAND = c.ID
LEFT JOIN product AS p ON p.ID = cp.PRODUCTID
LEFT JOIN category cat ON p.IDCATEGORY = cat.ID
LEFT JOIN productchild AS pc ON pc.ID = cp.CHILDID
LEFT JOIN picture pic ON pic.IDPRODUCT = p.ID
WHERE c.IDUSER = ".$idUser."
AND c.REFERENCE = '".$ref."'
AND pic.POSITION = 1
ORDER BY pc.REFERENCE ASC
";
return $this->getAdapter()->fetchAll($sql);
}
public function isAlreadyBuySomething($userID) {
$result = $this->select()->where('IDUSER = ?', $userID)->where('STATUT IN (?)', array(2, 3))->query()->fetch();
if ($result) { return true ; }
return false;
}
public function getTotalQteByReferenceAndUser($idUser, $reference) {
$sql = "SELECT SUM(cp.CHILDQUANTITY) NBR
FROM command c
LEFT JOIN command_product AS cp ON c.ID = cp.IDCOMMAND
WHERE c.IDUSER = ".$idUser."
AND cp.CHILDREF = '".$reference."'
AND c.STATUT IN (2 , 3)";
$result = $this->getAdapter()->fetchRow($sql);
if ((int)$result['NBR'] > 0) { return $result['NBR']; }
return 0;
}
}
?>