I want to do bill of products, when i select one or many products i want that his price go into the value of CHtml::numberField(‘pu[]’), calculate the price automaticaly .
Please help me.
my view _form:
<div class="row2">
<div class="row copy">
<br/>
<?php
$montantTotal=0;
$models = Produit::model()->findAll('quantite_en_stock>0', array('order' => 'id_produit'));
$list = CHtml::listData($models, 'id_produit', 'libelle_produit');
?>
<div><d style="margin-right: 140px;">Produit</d>|<d style="margin-right: 68px;"> Prix unitaire</d>|<d style="margin-right: 58px;"> Quantité</d>|<d style="margin-right: 90px;"> Prix total</d></div>
<div>
<?php echo CHtml::dropDownList('produit[]', '', $list, array('empty' => '(selectionner le produit)','id'=>'listp','style' => 'width:185px;')); ?>
<?php echo CHtml::numberField('pu[]', '',array('min'=>1,'disabled' => 'disabled','id'=>'prixU','style' => 'width:130px;')); ?>
<?php echo CHtml::numberField('qte[]', '',array('min'=>1,'id'=>'quantite','oninput'=>'getPrixTotal()','style' => 'width:102px;')); ?>
<?php echo CHtml::numberField('prixT[]', '',array('min'=>1,'disabled' => 'true','id'=>'prixT','style' => 'width:160px;')); ?>
</div>
</div>
<div><br><center><b>Montant total de la facture : <?php echo $montantTotal ?> FCFA</b></center></center></div>
<br>
</div>
in my controller factureController:
public function actionCreate() {
$model = new Facture;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if (isset($_POST['Facture'])) {
$model->attributes = $_POST['Facture'];
$model->id_client = $_POST['client'];
//valeur recupéré
$produit = $_POST['$produit'];
//$pu = $_POST['pu'];
$qte = $_POST['qte'];
//$prixt = $_POST['prixT'];
//$tailTab = count($prixt);
$tailTab = count($qte);
if ($model->save()) {
$connexion = Yii::app()->db;
$pTotal = 0;
$montantTotal =0;
$erreur="";
for ($i = 0; $i < $tailTab; $i++) {
$sqlP = "SELECT prix_unitaire,num_serie,quantite_en_stock FROM produit WHERE id_produit = '$produit[$i]'";
$comP = $connexion->createCommand($sqlP);
$comP->execute();
foreach ($comP AS $p) {
$prixU = $p['prix_unitaire'];
$qS = $p['quantite_en_stock'];
$numS = $p['num_serie'];
}
// on teste si la quantité en stock est supperieure a la quantité choisie
if($qS >= $qte){
// $sql = "INSERT INTO produit_facture VALUES('$produit[$i]','$model->id_facture','$qte[$i]','$prixt[$i]','$pu[$i]')";
$sql = "INSERT INTO produit_facture VALUES('$produit[$i]','$model->id_facture','$qte[$i]','$numS','$prixU')";
$command = $connexion->createCommand($sql);
if ($command->execute()) {
//$total += ($qte[$i] * $pu[$i]);
$pTotal += ($qte[$i] * $prixU);
//$montantTotal +=$total;
$montantTotal += $pTotal;
//mise à jour du stock
$req = "SELECT quantite_en_stock FROM produit WHERE id_produit='$produit[$i]'";
$comm = $connexion->createCommand($req);
$comm = $comm->query();
foreach ($comm AS $qt) {
$qteS = $qt['quantite_en_stock'];
$qteS -= $qte[$i];
$req2 = "UPDATE produit SET quantite_en_stock='$qteS' WHERE id_produit='$produit[$i]'";
$com1 = $connexion->createCommand($req2);
$com1->execute();
}
}
//mise à jour du total
$sql2 = "UPDATE facture SET total='$pTotal' WHERE id_facture='$model->id_facture'";
$command2 = $connexion->createCommand($sql2);
$command2->execute();
// message a afficher sur la vue create
} $erreur = "La quantité demandée est supérieure a la quantité en stock";
//$this->render('create',array('model'=>$model,'erreur'=>$erreur));
$this->renderPartial('_form',array('model'=>$model,'erreur'=>$erreur));
}
$this->redirect(array('view', 'id' => $model->id_facture));
}
}
$this->render('create', array(
'model' => $model,
));
}