255], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'id_user' => 'Utilisateur', 'id_user_action' => 'Utilisateur', 'id_commande' => 'Commande', 'date' => 'Date', 'montant' => 'Montant', 'type' => 'Type', 'id_etablissement' => 'Établissement', 'moyen_paiement' => 'Moyen de paiement', 'commentaire' => 'Commentaire', ]; } /* * Relations */ public function getUser() { return $this->hasOne(User::className(), ['id' => 'id_user']); } public function getUserAction() { return $this->hasOne(User::className(), ['id' => 'id_user_action']); } public function getCommande() { return $this->hasOne(Commande::className(), ['id' => 'id_commande']); } /** * Retourne le type de CreditHistorique (paiement, remboursement ou débit). * * @return string */ public function getLibelleType() { switch ($this->type) { case 'paiement': return 'Paiement'; break; case 'remboursement': return 'Remboursement'; break; case 'debit': return 'Débit'; break; } } /** * Enregistre le modèle. * * @param boolean $runValidation * @param array $attributeNames */ public function save($runValidation = true, $attributeNames = NULL) { // initialisation du commentaire avant sauvegarde $this->commentaire .= $this->getStrCommentaire() ; parent::save($runValidation, $attributeNames); // mise à jour du crédit au niveau de UserEtablissement $user_etablissement = UserEtablissement::findOne([ 'id_user' => $this->id_user, 'id_etablissement' => $this->id_etablissement ]); if ($user_etablissement) { if ($this->isTypeCredit()) { $user_etablissement->credit += $this->montant; } elseif ($this->isTypeDebit()) { $user_etablissement->credit -= $this->montant; } $user_etablissement->save(); } } /** * Retourne si le CreditHistorique est un débit ou non. * * @return boolean */ public function isTypeDebit() { return in_array($this->type, [ self::TYPE_DEBIT, self::TYPE_PAIEMENT, ]) ; } /** * Retourne si le CreditHistorique est un crédit ou non. * * @return boolean */ public function isTypeCredit() { return in_array($this->type, [ self::TYPE_CREDIT, self::TYPE_CREDIT_INITIAL, self::TYPE_REMBOURSEMENT ]) ; } /** * Retourne le montant. * * @param boolean $format * @return float */ public function getMontant($format = false) { if($format) return number_format($this->montant,2) .' €' ; else return $this->montant ; } /** * Retourne le libellé du CreditHistorique informant de son type et * éventuellement de la date de sa commande associée. * * @return string */ public function getStrLibelle() { $str = '' ; if($this->type == self::TYPE_CREDIT_INITIAL) { $str = 'Crédit initial' ; } elseif($this->type == self::TYPE_CREDIT) { $str = 'Crédit' ; } elseif($this->type == self::TYPE_PAIEMENT) { $str = 'Paiement' ; } elseif($this->type == self::TYPE_REMBOURSEMENT) { $str = 'Remboursement' ; } elseif($this->type == self::TYPE_DEBIT) { $str = 'Débit' ; } if($this->type == self::TYPE_PAIEMENT || $this->type == self::TYPE_REMBOURSEMENT) { if(isset($this->commande)) { $str .= '
Commande : '.date('d/m/Y',strtotime($this->commande->production->date)) ; } else { $str .= '
Commande supprimée' ; } } return $str ; } /** * Retourne les informations à ajouter au commentaire du CreditHistorique * (libellé, montant, client, action) au format HTML. * * @return string */ public function getStrCommentaire() { $str = '' ; if(strlen($this->commentaire)) { $str .= '
' ; } $str .= $this->getStrLibelle() ; if(isset($this->commande)) { $str .= '
Montant de la commande : '.$this->commande->getMontant(true) ; } if(isset($this->user)) { $str .= '
Client : '.Html::encode($this->user->nom. ' '.$this->user->prenom) ; } if(isset($this->userAction)) { $str .= '
Action : '.Html::encode($this->userAction->nom. ' '.$this->userAction->prenom) ; } return $str ; } /** * Retourne la date. * * @param boolean $format * @return string */ public function getDate($format = false) { if($format) return date('d/m/Y à H:i:s',strtotime($this->date)) ; else return $this->date ; } /** * Retourne le moyen de paiement. * * @return string */ public function getStrMoyenPaiement() { switch($this->moyen_paiement) { case CreditHistorique::MOYEN_ESPECES : return 'Espèces' ; case CreditHistorique::MOYEN_CHEQUE : return 'Chèque' ; case CreditHistorique::MOYEN_CB : return 'Carte bancaire' ; case CreditHistorique::MOYEN_AUTRE : return 'Autre' ; default: return 'Crédit pain' ; } } /** * Retourne le libellé de l'utilisateur ayant initié l'action. * * @return string */ public function strUserAction() { if($this->userAction) { return $this->userAction->nom . ' ' . $this->userAction->prenom ; } else { return 'Système' ; } } }