Przeglądaj źródła

Initialisation commandes récurrentes : ajouter un produit à la commande seulement si le produit est actif au niveau de la production

master
keun 7 lat temu
rodzic
commit
df4c6cb296
2 zmienionych plików z 82 dodań i 35 usunięć
  1. +56
    -35
      common/models/CommandeAuto.php
  2. +26
    -0
      common/models/Production.php

+ 56
- 35
common/models/CommandeAuto.php Wyświetl plik

@@ -172,10 +172,13 @@ class CommandeAuto extends \yii\db\ActiveRecord
public function add($date)
{
// production
$production = Production::findOne([
'date' => date('Y-m-d',strtotime($date)),
'id_etablissement' => Yii::$app->user->identity->id_etablissement
]) ;
$production = Production::find()
->where([
'date' => date('Y-m-d',strtotime($date)),
'id_etablissement' => Yii::$app->user->identity->id_etablissement
])
->with('productionProduit')
->one() ;
if($production && count($this->commandeAutoProduit))
{
@@ -206,44 +209,62 @@ class CommandeAuto extends \yii\db\ActiveRecord
// produits
$montant_total = 0 ;
$produits_add = false ;
foreach($this->commandeAutoProduit as $commande_auto_produit)
{
$commande_produit = new CommandeProduit ;
$commande_produit->id_commande = $commande->id ;
$commande_produit->id_produit = $commande_auto_produit->produit->id ;
$commande_produit->quantite = $commande_auto_produit->quantite ;
$commande_produit->prix = $commande_auto_produit->produit->prix ;
$commande_produit->save() ;
if($production->produitActif($commande_auto_produit->produit->id))
{
$commande_produit = new CommandeProduit ;
$commande_produit->id_commande = $commande->id ;
$commande_produit->id_produit = $commande_auto_produit->produit->id ;
$commande_produit->quantite = $commande_auto_produit->quantite ;
$commande_produit->prix = $commande_auto_produit->produit->prix ;
$commande_produit->save() ;
$produits_add = true;
}
}
// on débite automatiquement le crédit pain du client
if($commande->id_user && $this->paiement_automatique && Etablissement::getConfig('credit_pain'))
if(!$produits_add)
{
$commande = Commande::find()
->with('commandeProduits')
->where(['id' => $commande->id])
->one() ;
$commande->init() ;
$user_action = User::find()->where([
'id_etablissement' => $production->id_etablissement,
'status' => 11
])->one() ;
if($user_action)
$id_user_action = $user_action->id;
else
$id_user_action = NULL ;
$commande->creditHistorique(
CreditHistorique::TYPE_PAIEMENT,
$commande->getMontant(),
$production->id_etablissement,
$id_user_action
) ;
$commande->delete() ;
}
else {
// on débite automatiquement le crédit pain du client
if($commande->id_user &&
$this->paiement_automatique &&
Etablissement::getConfig('credit_pain'))
{
$commande = Commande::find()
->with('commandeProduits')
->where(['id' => $commande->id])
->one() ;

$commande->init() ;

$user_action = User::find()->where([
'id_etablissement' => $production->id_etablissement,
'status' => 11
])->one() ;

if($user_action)
$id_user_action = $user_action->id;
else
$id_user_action = NULL ;

if($commande->getMontant() > 0)
{
$commande->creditHistorique(
CreditHistorique::TYPE_PAIEMENT,
$commande->getMontant(),
$production->id_etablissement,
$id_user_action
) ;
}
}
}
}

+ 26
- 0
common/models/Production.php Wyświetl plik

@@ -55,5 +55,31 @@ class Production extends \yii\db\ActiveRecord
return $this->hasMany(Commande::className(), ['id_production' => 'id']) ;
}
public function getProductionProduit()
{
return $this->hasMany(ProductionProduit::className(),['id_production' => 'id']) ;
}
public function produitActif($id_produit)
{
if($id_produit &&
isset($this->productionProduit) &&
count($this->productionProduit) > 0)
{

foreach($this->productionProduit as $production_produit)
{
if($production_produit['id_produit'] == $id_produit &&
$production_produit['actif'])
{
return true ;
}
}
}
return false ;
}
}

Ładowanie…
Anuluj
Zapisz