Explorar el Código

Indentation + commentaires modèle Commande

dev
Guillaume Bourgeois hace 6 años
padre
commit
6d673f7737
Se han modificado 3 ficheros con 255 adiciones y 116 borrados
  1. +1
    -1
      backend/controllers/CommandeController.php
  2. +1
    -1
      backend/views/site/index.php
  3. +253
    -114
      common/models/Commande.php

+ 1
- 1
backend/controllers/CommandeController.php Ver fichero

@@ -1261,7 +1261,7 @@ class CommandeController extends BackendController {

if (abs($commande->montant - $montant_paye) < 0.0001) {
$html .= '<span class="label label-success">Payé</span>';
$buttons_credit = Html::a('Rembourser ' . $commande->getMontantFormat(), 'javascript:void(0);', ['class' => 'btn btn-default btn-xs rembourser', 'data-montant' => $commande->montant, 'data-type' => 'remboursement']);
$buttons_credit = Html::a('Rembourser ' . $commande->getMontant(true), 'javascript:void(0);', ['class' => 'btn btn-default btn-xs rembourser', 'data-montant' => $commande->montant, 'data-type' => 'remboursement']);
} elseif ($commande->montant > $montant_paye) {
$montant_payer = $commande->montant - $montant_paye;
$html .= '<span class="label label-danger">Non payé</span> reste <strong>' . number_format($montant_payer, 2) . ' €</strong> à payer';

+ 1
- 1
backend/views/site/index.php Ver fichero

@@ -301,7 +301,7 @@ $this->title = 'Tableau de bord';
<td class="historique"><?= $c->getStrHistorique() ; ?></td>
<td><?= $c->getResumePanier() ; ?></td>
<td><?= $c->getResumePointVente() ; ?></td>
<td><?= $c->getStrMontant() ; ?></td>
<td><?= $c->getMontant(true) ; ?></td>
</tr>
<?php endforeach; ?>
</tbody>

+ 253
- 114
common/models/Commande.php Ver fichero

@@ -53,21 +53,21 @@ use common\models\Etablissement;
* @property integer $id_production
* @property boolean $paiement_automatique
*/
class Commande extends \yii\db\ActiveRecord {

var $montant = 0;
var $montant_pain = 0;
var $montant_vrac = 0;
var $montant_paye = 0;
var $poids_pain = 0;
var $poids_vrac = 0;
class Commande extends \yii\db\ActiveRecord
{

var $montant = 0 ;
var $montant_paye = 0 ;
var $poids = 0 ;
const TYPE_AUTO = 'auto';
const TYPE_USER = 'user';
const TYPE_ADMIN = 'admin';
const STATUT_PAYEE = 'payee';
const STATUT_IMPAYEE = 'impayee';
const STATUT_SURPLUS = 'surplus';
const ETAT_MODIFIABLE = 'ouverte';
const ETAT_PREPARATION = 'preparation';
const ETAT_LIVREE = 'livree';
@@ -75,80 +75,48 @@ class Commande extends \yii\db\ActiveRecord {
/**
* @inheritdoc
*/
public static function tableName() {
public static function tableName()
{
return 'commande';
}

public function init() {
if (isset($this->commandeProduits)) {
foreach ($this->commandeProduits as $p) {
if ($p->mode_vente == 'unite') {
$this->montant_pain += $p->prix * $p->quantite;
if(isset($p->produit))
$this->poids_pain += ($p->quantite * $p->produit->poids) / 1000 ;
} elseif ($p->mode_vente == 'poids') {
$this->montant_pain += $p->prix * $p->quantite / 1000;
}
}

$this->montant = $this->montant_vrac + $this->montant_pain;
}
if (isset($this->creditHistorique) && !$this->montant_paye) {
foreach ($this->creditHistorique as $ch) {
if ($ch->type == CreditHistorique::TYPE_PAIEMENT)
$this->montant_paye += $ch->montant;
elseif ($ch->type == CreditHistorique::TYPE_REMBOURSEMENT)
$this->montant_paye -= $ch->montant;
}
}
}

public static function getQuantiteProduit($id_produit, $commandes) {

$quantite = 0;

if (isset($commandes) && is_array($commandes) && count($commandes)) {
foreach ($commandes as $c) {
if(is_null($c->date_delete)) {
foreach ($c->commandeProduits as $cp) {
if ($cp->id_produit == $id_produit)
$quantite += $cp->quantite;
}
}
}
}

return $quantite;
}

/*
* relations
*/

public function getUser() {
public function getUser()
{
return $this->hasOne(User::className(), ['id' => 'id_user']);
}

public function getCommandeProduits() {
return $this->hasMany(CommandeProduit::className(), ['id_commande' => 'id'])->with('produit');
public function getCommandeProduits()
{
return $this->hasMany(CommandeProduit::className(),['id_commande' => 'id'])
->with('produit');
}

public function getProduction() {
return $this->hasOne(Production::className(), ['id' => 'id_production'])->with('etablissement');
public function getProduction()
{
return $this->hasOne(Production::className(), ['id' => 'id_production'])
->with('etablissement');
}

public function getPointVente() {
return $this->hasOne(PointVente::className(), ['id' => 'id_point_vente'])->with('pointVenteUser');
public function getPointVente()
{
return $this->hasOne(PointVente::className(), ['id' => 'id_point_vente'])
->with('pointVenteUser');
}

public function getCreditHistorique() {
public function getCreditHistorique()
{
return $this->hasMany(CreditHistorique::className(), ['id_commande' => 'id']);
}

/**
* @inheritdoc
*/
public function rules() {
public function rules()
{
return [
[['id_user', 'date', 'id_point_vente', 'id_production'], 'required', 'message' => ''],
[['id_user', 'id_point_vente', 'id_production'], 'integer'],
@@ -160,7 +128,8 @@ class Commande extends \yii\db\ActiveRecord {
/**
* @inheritdoc
*/
public function attributeLabels() {
public function attributeLabels()
{
return [
'id' => 'ID',
'id_user' => 'Id User',
@@ -170,23 +139,78 @@ class Commande extends \yii\db\ActiveRecord {
'id_production' => 'Date de production',
];
}

public function strListeVrac() {
$str = '';

foreach ($this->commandeProduits as $cp) {
if ($cp->produit->vrac) {
$str .= $cp->quantite . '&nbsp;' . Html::encode($cp->produit->diminutif) . ', ';
/**
* Initialise le montant total, le montant déjà payé et le poids de la
* commande
*/
public function init()
{
// Montant
if (isset($this->commandeProduits)) {
foreach ($this->commandeProduits as $p) {
if ($p->mode_vente == 'unite') {
$this->montant += $p->prix * $p->quantite;
if(isset($p->produit)) {
$this->poids += ($p->quantite * $p->produit->poids) / 1000 ;
}
}
elseif ($p->mode_vente == 'poids') {
$this->montant += $p->prix * $p->quantite / 1000;
}
}
}
// Montant payé
if (isset($this->creditHistorique) && !$this->montant_paye) {
foreach ($this->creditHistorique as $ch) {
if ($ch->type == CreditHistorique::TYPE_PAIEMENT) {
$this->montant_paye += $ch->montant;
}
elseif ($ch->type == CreditHistorique::TYPE_REMBOURSEMENT) {
$this->montant_paye -= $ch->montant;
}
}
}

return substr($str, 0, strlen($str) - 2);
}
/**
* Retourne la quantité d'un produit donné de plusieurs commandes.
*
* @param integer $id_produit
* @param array $commandes
*
* @return integer
*/
public static function getQuantiteProduit($id_produit, $commandes)
{
$quantite = 0;
if (isset($commandes) && is_array($commandes) && count($commandes)) {
foreach ($commandes as $c) {
if(is_null($c->date_delete)) {
foreach ($c->commandeProduits as $cp) {
if ($cp->id_produit == $id_produit) {
$quantite += $cp->quantite;
}
}
}
}
}

public function getMontantPaye() {
return $quantite;
}
/**
* Retourne le montant payé de la commande.
*
* @return float
*/
public function getMontantPaye()
{
if ($this->montant_paye) {
return $this->montant_paye;
} else {
}
else {
$historique = CreditHistorique::find()
->where(['id_commande' => $this->id])
->all();
@@ -194,46 +218,77 @@ class Commande extends \yii\db\ActiveRecord {
$montant = 0;

foreach ($historique as $ch) {
if ($ch->type == CreditHistorique::TYPE_PAIEMENT)
if ($ch->type == CreditHistorique::TYPE_PAIEMENT) {
$montant += $ch->montant;
elseif ($ch->type == CreditHistorique::TYPE_REMBOURSEMENT)
}
elseif ($ch->type == CreditHistorique::TYPE_REMBOURSEMENT) {
$montant -= $ch->montant;
}
}

return $montant;
}
}

public function getMontant($format = false) {
if ($format)
/**
* Retourne le montant de la commande.
*
* @param boolean $format
* @return float
*/
public function getMontant($format = false)
{
if ($format) {
return number_format($this->getMontant(), 2) . ' €';
else
}
else {
return $this->montant;
}
}

public function getMontantFormat() {
return number_format($this->getMontant(), 2) . ' €';
}

public function getMontantRestant($format = false) {
/**
* Retourne le montant restant à payer.
*
* @param boolean $format
* @return float
*/
public function getMontantRestant($format = false)
{
$montant_restant = $this->getMontant() - $this->getMontantPaye();
if ($format)
if ($format) {
return number_format($montant_restant, 2) . ' €';
else
}
else {
return $montant_restant;
}
}

public function getMontantSurplus($format = false) {
/**
* Retourne le montant payé en surplus.
*
* @param boolean $format
* @return float
*/
public function getMontantSurplus($format = false)
{
$montant_surplus = $this->getMontantPaye() - $this->getMontant();
if ($format)
if ($format) {
return number_format($montant_surplus, 2) . ' €';
else
}
else {
return $montant_surplus;
}
}

public function getDataJson() {
/**
* Retourne les informations relatives à la commande au format JSON.
*
* @return string
*/
public function getDataJson()
{
$commande = Commande::find()->with('commandeProduits')->where(['id' => $this->id])->one();

$commande->init();

$json_commande = [
@@ -242,7 +297,7 @@ class Commande extends \yii\db\ActiveRecord {
'str_montant' => $commande->getMontantFormat(),
'montant_paye' => $commande->getMontantPaye(),
'commentaire' => $commande->commentaire,
];
];

foreach ($commande->commandeProduits as $commande_produit) {
$json_commande['produits'][$commande_produit->id_produit] = $commande_produit->quantite;
@@ -251,7 +306,17 @@ class Commande extends \yii\db\ActiveRecord {
return json_encode($json_commande);
}

public function creditHistorique($type, $montant, $id_etablissement, $id_user, $id_user_action) {
/**
* Enregistre un modèle de type CreditHistorique.
*
* @param string $type
* @param float $montant
* @param integer $id_etablissement
* @param integer $id_user
* @param integer $id_user_action
*/
public function creditHistorique($type, $montant, $id_etablissement, $id_user, $id_user_action)
{
$credit_historique = new CreditHistorique;
$credit_historique->id_user = $this->id_user;
$credit_historique->id_commande = $this->id;
@@ -264,10 +329,17 @@ class Commande extends \yii\db\ActiveRecord {
$credit_historique->save();
}

public function getStatutPaiement() {
/**
* Retourne le statut de paiement de la commande (payée, surplus, ou impayée).
*
* @return string
*/
public function getStatutPaiement()
{
// payé
if ($this->getMontant() - $this->getMontantPaye() < 0.01 &&
$this->getMontant() - $this->getMontantPaye() >= 0) {
$this->getMontant() - $this->getMontantPaye() >= 0)
{
return self::STATUT_PAYEE;
}
// à rembourser
@@ -279,25 +351,40 @@ class Commande extends \yii\db\ActiveRecord {
return self::STATUT_IMPAYEE;
}
}

public function getResumePanier() {
if (!isset($this->commandeProduits))
/**
* Retourne le résumé du panier au format HTML.
*
* @return string
*/
public function getResumePanier()
{
if (!isset($this->commandeProduits)) {
$this->commandeProduits = CommandeProduit::find()->where(['id_commande' => $this->id])->all();

}
$html = '';
$count = count($this->commandeProduits);
$i = 0;
foreach ($this->commandeProduits as $p) {
if (isset($p->produit)) {
$html .= $p->quantite . ' x ' . Html::encode($p->produit->nom);
if (++$i != $count)
if (++$i != $count) {
$html .= '<br />';
}
}
}
return $html;
}

public function getResumePointVente() {
/**
* Retourne le résumé du point de vente lié à la commande au format HTML.
*
* @return string
*/
public function getResumePointVente()
{
$html = '';

if (isset($this->pointVente)) {
@@ -313,14 +400,16 @@ class Commande extends \yii\db\ActiveRecord {
return $html;
}

public function getStrMontant() {
return number_format($this->montant, 2) . ' €';
}

public function getResumeMontant() {
/**
* Retourne le résumé du paiement (montant, statut).
*
* @return string
*/
public function getResumeMontant()
{
$html = '';

$html .= $this->getStrMontant() . '<br />';
$html .= $this->getMontant(true) . '<br />';

if ($this->montant_paye) {
if ($this->getStatutPaiement() == Commande::STATUT_PAYEE) {
@@ -331,14 +420,21 @@ class Commande extends \yii\db\ActiveRecord {
} elseif ($this->getStatutPaiement() == Commande::STATUT_SURPLUS) {
$html .= '<span class="label label-success">Payée</span>';
}
} else {
}
else {
$html .= '<span class="label label-default">À régler sur place</span>';
}

return $html;
}

public function getStrUser() {
/**
* Retourne une chaine de caractère décrivant l'utilisateur lié à la commande.
*
* @return string
*/
public function getStrUser()
{
if (isset($this->user)) {
return Html::encode($this->user->prenom . ' ' . $this->user->nom);
} elseif (strlen($this->username)) {
@@ -348,7 +444,20 @@ class Commande extends \yii\db\ActiveRecord {
}
}

public static function findBy($params = []) {
/**
* Recherche dans les commandes suivant les paramètres suivants :
* - id_etablissement
* - condition
* - date
* - type
* - orderby
* - limit
*
* @param array $params
* @return array
*/
public static function findBy($params = [])
{
if (!isset($params['id_etablissement']))
$params['id_etablissement'] = Yii::$app->user->identity->id_etablissement;

@@ -380,7 +489,13 @@ class Commande extends \yii\db\ActiveRecord {
return $commandes;
}

public function getEtat() {
/**
* Retourne l'état de la commande (livrée, modifiable ou en préparation)
*
* @return string
*/
public function getEtat()
{
$delai_commande = Etablissement::getConfig('delai_commande', $this->production->id_etablissement);
$heure_limite = Etablissement::getConfig('heure_limite_commande', $this->production->id_etablissement);

@@ -392,15 +507,24 @@ class Commande extends \yii\db\ActiveRecord {

if ($nb_jours <= 0) {
return self::ETAT_LIVREE;
} elseif ($nb_jours >= $delai_commande &&
}
elseif ($nb_jours >= $delai_commande &&
($nb_jours != $delai_commande ||
($nb_jours == $delai_commande && $heure_today < $heure_limite))) {
($nb_jours == $delai_commande && $heure_today < $heure_limite)))
{
return self::ETAT_MODIFIABLE;
}

return self::ETAT_PREPARATION;
}

/**
* Retourne le type de la commande (client, automatique ou admin) sous forme
* texte ou HTML.
*
* @param boolean $with_label
* @return string
*/
public function getStrType($with_label = false) {
$class_label = '';
$str = '';
@@ -422,7 +546,14 @@ class Commande extends \yii\db\ActiveRecord {
return $str;
}

public function getStrHistorique() {
/**
* Retourne l'historique de la commande (ajoutée, modifiée, supprimée) au format
* HTML.
*
* @return string
*/
public function getStrHistorique()
{
$arr = [
'class' => 'create',
'glyphicon' => 'plus',
@@ -451,7 +582,15 @@ class Commande extends \yii\db\ActiveRecord {
return $html ;
}
public function getClassHistorique() {
/**
* Retourne une classe identifiant l'historique de la commande (ajoutée,
* modifiée, supprimée).
*
* @return string
*/
public function getClassHistorique()
{
if(!is_null($this->date_delete)) {
return 'commande-delete' ;
}
@@ -461,4 +600,4 @@ class Commande extends \yii\db\ActiveRecord {
return 'commande-create' ;
}
}
}

Cargando…
Cancelar
Guardar