IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Mauvaise interaction calendrier et tableau


Sujet :

jQuery

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut Mauvaise interaction calendrier et tableau
    Bonjour,

    Plutôt débutant autodidacte du côté du dévelloppement web, j'aurais besoin de vos lumières car je n'arrive pas à éllucider le mystère...
    Je tente tout simplement de faire fonctionner deux fonctionnalités dans ma page et mes yeux doivent être embrumer car je ne trouve pas la solution.

    La page : un popup permettant la saisie d'une vente
    Les problèmes : Impossible d'afficher ce sataner calendrier via datepicker... et d'ajouter une ligne produit qui me permettrait de saisir ma vente.

    Je pense qu'il s'agit d'une broutille mais... Je ne la trouve pas.
    Je sollicite donc votre gentillesse pour m'aider à résoudre ces problèmes svp.

    D'avance merci.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
    561
    562
    563
    564
    565
    566
    567
    568
    569
    570
    571
    572
    573
    574
    575
    576
    577
    578
    579
    580
    581
    582
    583
    584
    585
    586
    587
    588
    589
    590
    591
    592
    593
    594
    595
    596
    597
    598
    599
    600
    601
    602
    603
    604
    605
    606
    607
    608
    609
    610
    611
    612
    613
    614
    615
    616
    617
    618
    619
    620
    621
    622
    623
    624
    625
    626
    627
    628
    629
    630
    631
    632
    633
    634
    635
    636
    637
    638
    639
    640
    641
    642
    643
    644
    645
    646
    647
    648
    649
    650
    651
    652
    653
    654
    655
    656
    657
    658
    659
    660
    661
    662
    663
    664
    665
    666
    667
    668
    669
    670
    671
    672
    673
    674
    675
    676
    677
    678
    679
    680
    681
    682
    683
    684
    685
    686
    687
    688
    689
    690
    691
    692
    693
    694
    695
    696
    697
    698
    699
    700
    701
    702
    703
    704
    705
    706
    707
    708
    709
    710
    711
    712
    713
    714
    715
    716
    717
    718
    719
    720
    721
    722
    723
    724
    725
    726
    727
    728
    729
    730
    731
    732
    733
    734
    735
    736
    737
    738
    739
    740
    741
    742
    743
    744
    745
    746
    747
    748
    749
    750
    751
    752
    753
    754
    755
    756
    757
    758
    759
    760
    761
    762
    763
    764
    765
    766
    767
    768
    769
    770
    771
    772
    773
    774
    775
    776
    777
    778
    779
    780
    781
    782
    783
    784
    785
    786
    787
    788
    789
    790
    791
    792
    793
    794
    795
    <?php
            include 'config/ks-connect.php'; 
            
            header('content-type: text/html; charset=iso-8859-1');
    ?>
     
    	<script src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
    	<script src="//code.jquery.com/jquery-1.10.2.js"></script>
    	<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                    var nom_script='<?php echo $_SERVER['PHP_SELF']; ?>';
                    // quand la page est finie de charger, on initialise les fonctions jQuery en fct des événements désirés     
                    
                    $("#datepicker").datepicker();
                            
                    $("#add_line_produit").click(function(){
                    //la fonction qui va s'éxécuter au click sur le bouton ajouter une ligne
                    // lectude de l'id du dernier tr
                    var last_id=$("#tabProduits tr:last").attr('id');
                    //on rajoute +1 pour donner l'id du tr rajouté
                    last_id=parseInt(last_id);
                    //alert('id lu: '+last_id);
                    var new_id=last_id +1;  
                    //contenu du tr rajouté
                    //attention il doit avoir les mêmes caracteristiques que le premier avec en plus l'id dynamique "new_id"
                    var ligne_tr='<tr id="'+new_id+'">';
     
                            //$.ajax({
                        //    'type': 'POST',
                        //    'url' : 'repPhpAjax_vente_select_produit.php',
                        //    'dataType': 'html',         
                        //    'data': {'varIdSelect' : new_id}  
                        //    })
                        //    .done(function( data) {
                        //      //ecriture réponse dans le popup
                        //      $("#reponse_ajax_select_produit").html(data);                    
                                    //      })
                        //    .fail(function(xhr) {
                        //       alert('c\'est ballot! :\n' + xhr.statusText);
                        //     });
     
                            //ligne_tr +='<td id="reponse_ajax_select_produit">
                    
                            ligne_tr +='<td><input type="hidden" name="produit_id[]">';
                            
                            ligne_tr +='<?php                                   
                                                                    $html .= '<select class="pr_select" name="selectProduit[]" id="selectProduit" >';
                                                                    $html .= '<option value="-1">Selectionnez votre produit</option>';
                                                                    // Récupération des données
                                                                    try 
                                                                    {
                                                                            // On envoie la requète
                                                                            $selectProduitsActif = $connection->query("SELECT * FROM ENRIEN_PRODUITS WHERE PDT_ACTIF = '1'");                                                       
                                                                            // On indique que nous utiliserons les résultats en tant qu objet
                                                                            $selectProduitsActif->setFetchMode(PDO::FETCH_OBJ);
                                                                            // Nous traitons les résultats en boucle
                                                                            while( $enregProduitsActif = $selectProduitsActif->fetch() )
                                                                            {       
                                                                             // Affichage des enregistrements
                                                                            $html .= '<option value="'.$enregProduitsActif->PDT_ID.'">'.$enregProduitsActif->PDT_NOM.'</option>';
                                                                                    
                                                                            }
                                                                            
                                                                    } 
                                                                    catch(Exeption $e) {
                                                                            die('Erreur lors du SELECT liste ks_produits'.$e->getMessage().'<br>');
                                                                    }
                                                                    // On ferme le curseur
                                                                    $selectProduitsActif->closeCursor();
                                                                    
                                                                    $html .= '</select></td>';
                                                                echo $html;
                                                                    ?>';
                            ligne_tr+=' <td><input class="pr_qte" name="produit_qte['+new_id+']" id="produit_qte_'+new_id+'" value="" /></td>';//la id n'est pas entre []
                            ligne_tr+=' <td id="reponse_ajax_produit"><input class="pr_pu" name="produit_pu['+new_id+']" id="produit_pu_'+new_id+'" value="" /></td>'; //la id n'est pas entre []
                            //ligne_tr+=' <td><input name="produit_total['+new_id+']" id="produit_total_'+new_id+'" value="" /></td>';//la id n'est pas entre []
                            ligne_tr+='<td><button class="btn btn-danger" id="bt_suppr_ajout_prod"><i class="icon-trash icon-white"></i></button></td>' ;
                    ligne_tr+='</tr>';
              
                    //ajout de la ligne
                    $("#tabProduits > tbody:last").append( ligne_tr );
                    
              
                    ///ATTENTION cette definition de fonction ci-dessous doit être incluse dans la fonction ajout ligne
                    //fonction recalcul a chaque changement d'un input des class pr_pu OU pr_qte
                    $(".pr_pu, .pr_qte").keyup(function(){
                            var total_general=0;
                            var liste_tr=$('#tbody_produits').children(); //array des fils de tbody de la table
                            //on parcours cet array pour lire les valeurs des input pour chaque ligne et faire le calcul
                            liste_tr.each(function(n_tr, val_tr){
                                    //alert("n_tr="+n_tr);
                                    //on lit l'id réel de la ligne
                                    var id=$(this).closest('tr').attr('id');                                        
                                            if(id >0){ //on elimine la ligne des th
                                                    //alert("id lu: "+id);                                          
                                                    //recup des valeurs des input ( methode ternaire ) si vide on met 0
                                                    var pr_pu=($("#produit_pu_"+id).val()!="") ? $("#produit_pu_"+id).val() : 0;
                                                    var pr_qte=($("#produit_qte_"+id).val() !="") ? $("#produit_qte_"+id).val() : 0 ;
                                                    var pr_total=pr_pu * pr_qte;
                                                    $("#produit_total_"+id).val(pr_total);
                                                    //alert("ligne id "+id+" PU= "+pr_pu+" Qte= "+pr_qte+" Total ligne= "+pr_total);
                                                    total_general+=pr_total;
                                            }
                                                                                            
                            });     
                             //ecriture total général
                             $("#total_gal").val(total_general);
                    });             
                            
                    //Et init de la fonction du bouton supprimer et du bouton valider
                    //cet init doit être dans la fonction qui ajoute la ligne car si on la met en dehors , au chargement de la page, l'id n'existe pas encore
                    $("#bt_suppr_ajout_prod").click(function(){
                            if(confirm("Voulez vous vraiment supprimer la ligne que vous venez d'ajouter ?")){
                                    //on supprime en JS la ligne fraichement rajoutée c a d le tr ayant l'id="ajout"
                                    $("#new_id").remove();
                                    //on réactive le bouton ajouter ligne
                                    //$("#add_line_compo").css('display','block');
                            }       
                    });  
     
                    $("#selectProduit").change(function() {
     
                            var idProduit = $(this).val();
                            var idLigne=$(this).closest('tr').attr('id');
     
                                    if(idProduit ==-1){
                                            alert("Vous devez chosir un nom de produit !");
                                            return false;
                                    }else{
                                            $("#produit_pu_"+idLigne).css('display','none');
                            
                                    $.ajax({
                            'type': 'POST',
                            'url' : 'repPhpAjax_vente_produit.php',
                            'dataType': 'html',         
                            'data': { 'varIdProduit' : idProduit, 'varIdLigne' : idLigne}  
                            })
                            .done(function( data) {
                              //ecriture réponse dans le popup
                              $("#reponse_ajax_produit").html(data);                    
                                                    })
                            .fail(function(xhr) {
                               alert('c\'est ballot! :\n' + xhr.statusText);
                             });
     
                                    $("#produit_pu_"+idLigne).css('display','block');
                                    }
                    });
            });
     
            $("#add_line_taxe").click(function(){
                    //la fonction qui va s'éxécuter au click sur le bouton ajouter une ligne
                    // on met comme id ajout pour le retrouver plus facilement, ce doit être un INSERT alors que les autres lignes (modifs) seront des UPDATE      
                    var new_id='ajout';     
                    //contenu du tr rajouté                        
                    
                    //attention il doit avoir les mêmes caracteristiques que le premier avec en plus l'id dynamique "new_id"
                    var ligne_tr='<tr id="'+new_id+'">';
     
                    ligne_tr +='<?php 
                                                    //il te manquait tous les <td></td>                                             
                                                    $html = '<td><input type="hidden" name="taxe_id[]" value="">';
                                                    $html .= '<select id="selectTaxe" name="selectTaxe[]">';
                                                    $html .= '<option value="-1">Selectionnez une taxe</option>';
                                                    // Récupération des données
                                                    try 
                                                    {
                                                            // On envoie la requète
                                                            $selectTaxesActives = $connection->query("SELECT * FROM ENRIEN_TAXES WHERE TAXES_ACTIF = '1'");                                                 
                                                            // On indique que nous utiliserons les résultats en tant qu objet
                                                            $selectTaxesActives->setFetchMode(PDO::FETCH_OBJ);
                                                            // Nous traitons les résultats en boucle
                                                            while( $enregTaxesActives = $selectTaxesActives->fetch() )
                                                            {       
                                                             // Affichage des enregistrements
                                                            $html .= '<option value="'.$enregTaxesActives->TAXES_ID.'">'.$enregTaxesActives->TAXES_NOM.'</option>';
                                                                    
                                                            }
                                                            
                                                    } 
                                                    catch(Exeption $e) {
                                                            die('Erreur lors du SELECT liste ks_taxes'.$e->getMessage());
                                                    }
                                                    // On ferme le curseur
                                                    $selectTaxesActives->closeCursor();
                                                    
                                                    $html .= '</select></td>';
                                                echo $html;
                                                    ?>';
                                                                    
                    ligne_tr+='<td id="reponse_ajax_taxe"><input class="input-xlarge focused" id="taxe_montant" name="taxe_montant[]" type="text" value="" disabled="true"></td>';
                    
                              ligne_tr+='<td><button class="btn btn-danger" id="bt_suppr_ajout_taxe"><i class="icon-trash icon-white"></i></button></td>' ;
                                                    
                            ligne_tr+='</tr>';
                    
                    //ajout de la ligne
                    $("#tabTaxes > tbody:last").append( ligne_tr );
                    //$("#add_line_compo").css('display','none');
                    
                    //Et init de la fonction du bouton supprimer et du bouton valider
                    //cet init doit être dans la fonction qui ajoute la ligne car si on la met en dehors , au chargement de la page, l'id n'existe pas encore
                    $("#bt_suppr_ajout_taxe").click(function(){
                            if(confirm("Voulez vous vraiment supprimer la ligne que vous venez d'ajouter ?")){
                                    //on supprime en JS la ligne fraichement rajoutée c a d le tr ayant l'id="ajout"
                                    $("#ajout").remove();
                                    //on réactive le bouton ajouter ligne
                                    //$("#add_line_compo").css('display','block');
                            }       
                    });  
     
                    $("#selectTaxe").change(function() {
                            var idTaxe = $(this).val();
     
                            //On récupère le montant total des produits
                            var totalMontantProduits = $("#total_gal").val();
     
                                    if(idTaxe ==-1){
                                    alert("Vous devez chosir une taxe !");
                                    return false;
                            }else{
                                            $("#taxe_montant").css('display','none');
                            
                                    $.ajax({
                                    'type': 'POST',
                                'url' : 'repPhpAjax_vente_taxe.php',
                                'dataType': 'html',         
                                'data': { 'varIdTaxe' : idTaxe, 'montantProduit' : totalMontantProduits }  
                                    })
                                    .done(function( data) {
                                    //ecriture réponse dans le popup
                                    $("#reponse_ajax_taxe").html(data);                    
                                                            })
                                            .fail(function(xhr) {
                                            alert('c\'est ballot! :\n' + xhr.statusText);
                                            });
     
                                    $("#taxe_montant").css('display','block');
                                    }
                    });                     
            });
            
            $("#Sauvegarde").click(function(){
               //On s'assure que le client est sélectionné
               var idCli = $("#selectClient").val();
               
               if(idCli ==-1)
             {
                        alert("Vous devez chosir un client !");
                                    return false;
                     }                      
               
            });
            
                                    
            });
     
        </script>
    <?php 
    //script de réponse de php a une requette Ajax
    if(isset($_POST['idPopup'])){
            //recup de l'id
            $idPopupVente=$_POST['idPopup'];
            $ligneProduit=0;
            $ligneTaxe=0;
            $montantTotalProduit=0;
            $montantTotalTaxe=0;
            
            // Récupération des données
            try 
            {
                    // On envois la requète correspondant a cet id
                    $selectVente = $connection->query("SELECT * FROM ENRIEN_VENTES_OU_ACHATS WHERE TYPE_ID=".$idPopupVente." AND TYPE_ACTION = 'VEN'");
             
                    // On indique que nous utiliserons les résultats en tant qu'objet
                    $selectVente->setFetchMode(PDO::FETCH_OBJ);
             
                    // Nous traitons les résultats en boucle
                    while( $enregVente = $selectVente->fetch() )
                    {       
                      //Récupération des infos de la vente
                      try 
            {
                $tabProduits['id'][] = array();
                $tabProduits['qte'][] = array();
                $tabProduits['pu'][] = array();
                
                    $selectInfos = $connection->query("SELECT * FROM ACHETER WHERE TYPE_ID=".$idPopupVente." AND TYPE_ACTION = 'VEN'");
                    $selectInfos->setFetchMode(PDO::FETCH_OBJ);
             
                    while( $enregInfos = $selectInfos->fetch() )
                    {
                        $client = $enregInfos->CLIENT_ID;
                              $tabProduits['id'][] = $enregInfos->PDT_ID;
                              $tabProduits['qte'][] = $enregInfos->ACHAT_NB_PDT;
                              $tabProduits['pu'][] = $enregInfos->ACHAT_PRIX_UNITAIRE; 
                    }
            } 
            catch ( Exception $e ) 
            {
                    $reponse= "Une erreur est survenue lors de la récupération des informations de la vente <br>";
            }
            
            $selectInfos->closeCursor();
            
            //Récupération des infos sur les taxes
                      try 
            {           
                $tabTaxes['id'][] = array();
                            
                    $selectInfosTaxe = $connection->query("SELECT * FROM PROPOSER WHERE TYPE_ID=".$idPopupVente." AND TYPE_ACTION = 'VEN'");
                    $selectInfosTaxe->setFetchMode(PDO::FETCH_OBJ);
             
                    while( $enregInfosTaxe = $selectInfosTaxe->fetch() )
                    {
                        $tabTaxes['id'][] = $enregInfosTaxe->TAXES_ID;
                    }
            } 
            catch ( Exception $e ) 
            {
                    $reponse= "Une erreur est survenue lors de la récupération des informations des taxes <br>";
            }
            
            $selectInfosTaxe->closeCursor();
                    
                        // Affichage des enregistrements
                              $reponse.='<input type="hidden" name="id_popup" value="'.$idPopup.'">';
                              
                              $reponse='<div class="row-fluid sortable">';
                    $reponse.='<div class="box span12">';
                            $reponse.='<div class="box-header well" data-original-title>';
                                    $reponse.='<h2><i class="icon-edit"></i> Informations sur la vente</h2>';
                            $reponse.='</div>';
                            $reponse.='<div class="box-content">';
                                    $reponse.='<div class="control-group">';
                                            $reponse.='<label class="control-label" for="selectError">Client</label>';
                                            $reponse.='<div class="controls">';
                                                    $reponse.='<select name="selectClient" id="selectClient">';
                                                    $reponse.='<option value="-1">Selectionnez votre client</option>';
                                                    
                                                    try 
                                                    {
                                                            $selectClients = $connection->query("SELECT * FROM ENRIEN_CLIENTS ");   
                                                            $selectClients->setFetchMode(PDO::FETCH_OBJ);
                                                            
                                                            while( $enregClients = $selectClients->fetch() )
                                                            {       
                                                               if ($enregClients->CLIENT_ID == $client)
                                                               {
                                                                 $reponse.='<option value="'.$enregClients->CLIENT_ID.'" selected="selected">'.$enregClients->CLIENT_NOM.' '.$enregClients->CLIENT_PRE.'</option>';
                                                               }
                                                               else 
                                                               {
                                                                 $reponse.='<option value="'.$enregClients->CLIENT_ID.'">'.$enregClients->CLIENT_NOM.' '.$enregClients->CLIENT_PRE.'</option>';
                                                               }
                                                            }
                                                            
                                                    } 
                                                    catch(Exeption $e) {
                                                            die('Erreur lors du SELECT liste ks_clients'.$e->getMessage().'<br>');
                                                    }
                                                    // On ferme le curseur
                                                    $selectClients->closeCursor();
                                                    
                                                    $reponse.='</select>';
                                            $reponse.='</div>';
                                    $reponse.='</div>';                                     
                                    
                                    $reponse.='<br>';
                                    
                                    //$reponse.='<div class="control-group">';
                                    //      $reponse.='<label class="control-label" for="textarea2">Adresse</label>';
                                    //      $reponse.='<div class="controls">';
                                    //              $reponse.='<textarea class="cleditor" readonly="readonly id="adresse" name="adresse" rows="3"></textarea>';
                                    //      $reponse.='</div>';
                                    //$reponse.='</div>';
                                                            
                            //$reponse.='<div class="control-group">';
                                    //      $reponse.='<label class="control-label" for="focusedInput">Code postal</label>';
                                    //      $reponse.='<div class="controls">';
                                    //              $reponse.='<input class="input-xlarge focused" readonly="readonly id="cp" name="cp" type="text" value="">';
                                    //      $reponse.='</div>';
                                    //$reponse.='</div>';
                                    
                                    //$reponse.='<div class="control-group">';
                                    //      $reponse.='<label class="control-label" for="focusedInput">Ville</label>';
                                    //      $reponse.='<div class="controls">';
                                    //              $reponse.='<input class="input-xlarge focused" readonly="readonly id="ville" name="ville" type="text" value="">';
                                    //      $reponse.='</div>';
                                    //$reponse.='</div>';
                                    
                                    $reponse.='<div class="control-group">';
                                            $reponse.='<label class="control-label" for="focusedInput">Date de vente</label>';
                                            $reponse.='<div class="controls">';
                                                    $reponse.='<input class="input-xlarge focused" id="datepicker" name="dateVente" value="'.$enregVente->TYPE_DATE_REALISATION.'">';
                                            $reponse.='</div>';
                                    $reponse.='</div>';
                            $reponse.='</div>';
                    $reponse.='</div>';
            $reponse.='</div>';
            
            $reponse.='<div class="row-fluid sortable">';   
                                    $reponse.='<div class="box span12">';
                                            $reponse.='<div class="box-header well" data-original-title>';
                                                    $reponse.='<h2><i class="icon-user"></i>Produits</h2>';
                                                    $reponse.='<div class="box-icon">';
                                                            //$reponse.='<button class="btn btn-setting btn-round" type="button" id="add_line_produit"><i class="icon-plus-sign"></i></button>';
                                                    $reponse.='</div>';
                                            $reponse.='</div>';
                                            
                                            $reponse.='<div class="box-content">';
                                                    $reponse.='<table class="table table-striped table-bordered bootstrap-datatable datatable" id="tabProduits">';
                                                            $reponse.='<thead>';
                                                              $reponse.='<tr>';
                                                                      $reponse.='<th>Nom produit</th>';
                                                            $reponse.='<th>Quantité</th>';  
                                                            $reponse.='<th>Prix unitaire</th>'; 
                                                            $reponse.='<th>Action</th> ';
                                                              $reponse.='</tr>';
                                                            $reponse.='</thead>'; 
                                                            
                                                            $reponse.='<tbody>';
                                                            
                                                            //Parcours de la table Acheter
                                                            foreach($tabProduits['id'] as $cle=>$value)
                                      {
                                        $idProduit = $tabProduits['id'][$cle];
                                        $qteProduit = $tabProduits['qte'][$cle];
                                        $puProduit = $tabProduits['pu'][$cle];
                                        
                                        $montantTotalProduit = $montantTotalProduit + round($qteProduit * $puProduit,2);
                                         
                                        $reponse.='<tr id="'.$idProduit.'">';
                                        $reponse.='<td><input type="hidden" name="produit_id[]" value="'.$idProduit.'">';
                                         
                                        $reponse.= '<select class="pr_select" name="selectProduit[]" id="selectProduit" >';
                                            $reponse.= '<option value="-1">Selectionnez votre produit</option>';
                                            try 
                                                            {
                                                                    // On envoie la requète
                                                                    $selectProduits = $connection->query("SELECT * FROM ENRIEN_PRODUITS");                                                  
                                                                    // On indique que nous utiliserons les résultats en tant qu'objet
                                                                    $selectProduits->setFetchMode(PDO::FETCH_OBJ);
                                                                    // Nous traitons les résultats en boucle
                                                                    while( $enregProduit = $selectProduits->fetch() )
                                                                    {       
                                                                      if ($enregProduit->PDT_ID == $idProduit)
                                                                {
                                                                 $reponse.='<option value="'.$enregProduit->PDT_ID.'" selected="selected">'.$enregProduit->PDT_NOM.'</option>';
                                                                }
                                                                else 
                                                                {
                                                                 $reponse.='<option value="'.$enregProduit->PDT_ID.'">'.$enregProduit->PDT_NOM.'</option>';
                                                                }                                                                           
                                                                    }
                                                                    
                                                            } 
                                                            catch(Exeption $e) {
                                                                    die('Erreur lors du SELECT liste ks_produits'.$e->getMessage().'<br>');
                                                            }
                                            
                                            $selectProduits->closeCursor();
                                                                    
                                                            $reponse.= '</select></td>';
                                                            
                                                            $reponse.='<td><input class="pr_qte" name="produit_qte['.$ligneProduit.']" id="produit_qte_'.$ligneProduit.'" value="'.$qteProduit.'" /></td>';
                            $reponse.='<td><input class="pr_pu" name="produit_pu['.$ligneProduit.']" id="produit_pu_'.$ligneProduit.'" value="'.$puProduit.'" /></td>'; 
                            $reponse.='<td><button class="btn btn-danger" id="bt_suppr_ajout"><i class="icon-trash icon-white"></i></button></td>';
                            $reponse.='</tr>';
                            
                            $ligneProduit++;
                                      }
                                      
                                                            $reponse.='</tbody>';
                                                    $reponse.='</table>';            
                                            $reponse.='</div>';
                                    $reponse.='</div>';
                            $reponse.='</div>';
                            
                            $reponse.='<div class="row-fluid sortable">';   
                                    $reponse.='<div class="box span12">';
                                            $reponse.='<div class="box-header well" data-original-title>';
                                                    $reponse.='<h2><i class="icon-user"></i>Taxes</h2>';
                                                    $reponse.='<div class="box-icon">';
                                                            //$reponse.='<button class="btn btn-setting btn-round" type="button" id="add_line_produit"><i class="icon-plus-sign"></i></button>';
                                                    $reponse.='</div>';
                                            $reponse.='</div>';
                                            
                                            $reponse.='<div class="box-content">';
                                                    $reponse.='<table class="table table-striped table-bordered bootstrap-datatable datatable" id="tabTaxes">';
                                                            $reponse.='<thead>';
                                                              $reponse.='<tr>';
                                                                      $reponse.='<th>Nom taxe</th>';
                                                            $reponse.='<th>Montant taxe</th> ';
                                                            $reponse.='<th>Action</th> ';
                                                              $reponse.='</tr>';
                                                            $reponse.='</thead>'; 
                                                            
                                                            $reponse.='<tbody>';
                                                            
                                                            //Parcours de la table Acheter
                                                            foreach($tabTaxes['id'] as $cle=>$value)
                                      {
                                        $idTaxes = $tabTaxes['id'][$cle];
                                        $montantTaxes = 0;
                                        
                                        $reponse.='<tr id="'.$idTaxes.'">';
                                            
                                                    $reponse.='<td><input type="hidden" name="taxe_id[]" value="'.$idTaxes.'">';
                                                    $reponse.='<select id="selectTaxe" name="selectTaxe[]">';
                                                    $reponse.='<option value="-1">Selectionnez une taxe</option>';
                                                            
                                            try 
                                            {
                                                            $selectTaxes = $connection->query("SELECT * FROM ENRIEN_TAXES ");                       
                                                            $selectTaxes->setFetchMode(PDO::FETCH_OBJ);
                                                            
                                                            while( $enregTaxes = $selectTaxes->fetch() )
                                                            {       
                                                     if ($enregProduit->PDT_ID == $idProduit)
                                                             {
                                                               $reponse.='<option value="'.$enregTaxes->TAXES_ID.'" selected="selected">'.$enregTaxes->TAXES_NOM.'</option>';
                                                             }
                                                             else 
                                                             {
                                                               $reponse.='<option value="'.$enregTaxes->TAXES_ID.'">'.$enregTaxes->TAXES_NOM.'</option>';
                                                             }
                                              }
                                            } 
                                            catch(Exeption $e) {
                                                    die('Erreur lors du SELECT liste ks_taxes'.$e->getMessage().'<br>');
                                            }
                                                    
                                                    $selectTaxes->closeCursor();
                                                    
                                                    $reponse.='</select></td>';
                                                    
                                                    try 
                                            {
                                               $selectCompoTaxe = $connection->query("SELECT * FROM ENRIEN_TAXES, ENRIEN_COMPO_TAXES WHERE ENRIEN_COMPO_TAXES.TAXES_ID=".$idTaxe." ORDER BY ENRIEN_TAXES.TAXES_NOM");
                                               $selectCompoTaxe->setFetchMode(PDO::FETCH_OBJ);
                                             
                                                     while( $enregCompoTaxe = $selectCompoTaxe->fetch() )
                                               {    
                                                        if ($enregCompoTaxe->COMPO_TAXES_FRAIS_FIXE == 1) //Frais fixe
                                                        {
                                                        //On cumul les frais fixe
                                                        $fraisFixe = $fraisFixe + $enregCompoTaxe->COMPO_TAXES_MNT_FRAIS;
                                                        }
                                                        elseif ($enregCompoTaxe->COMPO_TAXES_TAUX == 1) //Taux
                                                        {
                                                        //Dans le cas de vente par le biais d'Ebay:
                                                        //Ebay prend 9% par trasaction sur le montant de vente
                                                        //Paypal prend 3.4% + 0.25€ par trasaction sur le montant de vente.
                                                        $montant = $montant + round($montantTotalProduit*$enregCompoTaxe->COMPO_TAXES_POUR_TAUX/100,2);
                                                        }
                                               }
                                                    
                                               $montantTaxes = $montant + $fraisFixe;
                                            } 
                                            catch ( Exception $e ) 
                                            {
                                                    //$reponse= "Une erreur est survenue lors de la récupération des produits";
                                            }
                            
                            $selectCompoTaxe->closeCursor();
                                                                            
                            $reponse.='<td><input class="input-xlarge focused" id="taxe_montant" name="taxe_montant[]" type="text" value="'.$montantTaxes.'" disabled="true"></td>';
                            
                                      $reponse.='<td><button class="btn btn-danger" id="bt_suppr_ajout"><i class="icon-trash icon-white"></i></button></td>' ;
                                                            
                                      $reponse.='</tr>';
                            
                            $ligneTaxes++;
                                      }
                                      
                                                            $reponse.='</tbody>';
                                                    $reponse.='</table>';            
                                            $reponse.='</div>';
                                    $reponse.='</div>';
                            $reponse.='</div>';
                            
                            $reponse.='<div class="control-group">';
                    $reponse.='<label class="control-label" for="focusedInput">Total produits HT</label>';
                    $reponse.='<div class="controls">';
                            $reponse.='<input class="input-xlarge focused" id="total_gal" name="total_gal" type="text" value="'.$montantTotalProduit.'">';
                    $reponse.='</div>';
          $reponse.='</div>';
                    
            $reponse.='<div class="control-group">';
                    $reponse.='<label class="control-label" for="focusedInput">Frais de port</label>';
                    $reponse.='<div class="controls">';
                            $reponse.='<input class="input-xlarge focused" id="input_fdp" name="input_fdp" type="text" value="'.$enregVente->TYPE_FDP.'">';
                    $reponse.='</div>';
          $reponse.='</div>';
                    
            
            //$reponse.='<div class="control-group">';
            //      $reponse.='<label class="control-label" for="focusedInput">Total des taxes</label>';
            //      $reponse.='<div class="controls">';
            //              $reponse.='<input class="input-xlarge focused" readonly="readonly id="input_tot_taxes" name="input_tot_taxes" type="text" value="">';
            //      $reponse.='</div>';
          //$reponse.='</div>';
            
          //$reponse.='<div class="control-group">';
            //      $reponse.='<label class="control-label" for="focusedInput">Bénéfice</label>';
            //      $reponse.='<div class="controls">';
            //              $reponse.='<input class="input-xlarge focused" readonly="readonly id="input_benef" name="input_benef" type="text" value="">';
            //      $reponse.='</div>';
          //$reponse.='</div>';
            
            //$reponse.='<div class="form-actions">';
                    //$reponse.='<button type="submit" class="btn btn-primary" id="Sauvegarde">Sauvegarder</button>';
                    //$reponse.='<button class="btn popup-btn-close">Annuler</button>';
            //$reponse.='</div>';
                            }
            } 
            catch ( Exception $e ) 
            {
                    $reponse= "Une erreur est survenue lors de la récupération des ventes <br>";
            }
            
            $selectVente->closeCursor();
            
     
    }
    else 
    {
            echo '<input type="hidden" name="id_popup" value="',$idPopup,'">'; 
            
            $reponse='<div class="row-fluid sortable">';
                    $reponse.='<div class="box span12">';
                            $reponse.='<div class="box-header well" data-original-title>';
                                    $reponse.='<h2><i class="icon-edit"></i> Informations sur la vente</h2>';
                            $reponse.='</div>';
                            $reponse.='<div class="box-content">';
                                    $reponse.='<div class="control-group">';
                                            $reponse.='<label class="control-label" for="selectError">Client</label>';
                                            $reponse.='<div class="controls">';
                                                    $reponse.='<select name="selectClient" id="selectClient">';
                                                    $reponse.='<option value="-1">Selectionnez votre client</option>';
                                                    
                                                    try 
                                                    {
                                                            $selectClients = $connection->query("SELECT * FROM ENRIEN_CLIENTS ");   
                                                            $selectClients->setFetchMode(PDO::FETCH_OBJ);
                                                            
                                                            while( $clients = $selectClients->fetch() )
                                                            {       
                                                             // Affichage des enregistrements
                                                             //if ($enregistrement->PDT_ID == $produits->PDT_ID)
                                                             //{
                                                             //     echo '<option value="'.$produits->PDT_ID.'" selected="selected">'.$produits->PDT_NOM.'</option>';
                                                             //}
                                                             //else 
                                                             //{
                                                                    $reponse.='<option value="'.$clients->CLIENT_ID.'">'.$clients->CLIENT_NOM.' '.$clients->CLIENT_PRE.'</option>';
                                                             //}
                                                            }
                                                            
                                                    } 
                                                    catch(Exeption $e) {
                                                            die('Erreur lors du SELECT liste ks_produits'.$e->getMessage());
                                                    }
                                                    // On ferme le curseur
                                                    $selectClients->closeCursor();
                                                    
                                                    $reponse.='</select>';
                                            $reponse.='</div>';
                                    $reponse.='</div>';                                     
                                    
                                    $reponse.='<br>';
                                    
                                    //$reponse.='<div class="control-group">';
                                    //      $reponse.='<label class="control-label" for="textarea2">Adresse</label>';
                                    //      $reponse.='<div class="controls">';
                                    //              $reponse.='<textarea class="cleditor" readonly="readonly id="adresse" name="adresse" rows="3"></textarea>';
                                    //      $reponse.='</div>';
                                    //$reponse.='</div>';
                                                            
                            //$reponse.='<div class="control-group">';
                                    //      $reponse.='<label class="control-label" for="focusedInput">Code postal</label>';
                                    //      $reponse.='<div class="controls">';
                                    //              $reponse.='<input class="input-xlarge focused" readonly="readonly id="cp" name="cp" type="text" value="">';
                                    //      $reponse.='</div>';
                                    //$reponse.='</div>';
                                    
                                    //$reponse.='<div class="control-group">';
                                    //      $reponse.='<label class="control-label" for="focusedInput">Ville</label>';
                                    //      $reponse.='<div class="controls">';
                                    //              $reponse.='<input class="input-xlarge focused" readonly="readonly id="ville" name="ville" type="text" value="">';
                                    //      $reponse.='</div>';
                                    //$reponse.='</div>';
                                    
                                    $reponse.='<div class="control-group">';
                                            $reponse.='<label class="control-label" for="focusedInput">Date de vente</label>';
                                            $reponse.='<div class="controls">';
                                                    $reponse.='<input class="input-xlarge focused" id="datepicker" name="dateVente">';
                                            $reponse.='</div>';
                                    $reponse.='</div>';
                            $reponse.='</div>';
                    $reponse.='</div>';
            $reponse.='</div>';
            
            $reponse.='<div class="row-fluid sortable">';   
                    $reponse.='<div class="box span12">';
                            $reponse.='<div class="box-header well" data-original-title>';
                                    $reponse.='<h2><i class="icon-user"></i> Produits</h2>';
                                    $reponse.='<div class="box-icon">';
                                            $reponse.='<button class="btn btn-setting btn-round" type="button" id="add_line_produit"><i class="icon-plus-sign"></i></button>';
                                    $reponse.='</div>';
                            $reponse.='</div>';
                                                    
                            $reponse.='<div class="box-content">';
                                    $reponse.='<table class="table table-striped table-bordered bootstrap-datatable datatable" id="tabProduits">';
                                            $reponse.='<tbody id="tbody_produits">';
                                                    $reponse.='<tr id="0">';
                                                            $reponse.='<th>Nom produit</th>';
                                                            $reponse.='<th>Quantité</th>';  
                                                            $reponse.='<th>Prix unitaire</th>'; 
                                                            $reponse.='<th>Action</th> ';                                    
                                                    $reponse.='</tr>';        
                                            $reponse.='</tbody>';
                                    $reponse.='</table>';            
                            $reponse.='</div>';                     
                    $reponse.='</div>';
            $reponse.='</div>';
            
            $reponse.='<div class="row-fluid sortable">';   
                    $reponse.='<div class="box span12">';
                            $reponse.='<div class="box-header well" data-original-title>';
                                    $reponse.='<h2><i class="icon-user"></i> Taxes</h2>';
                                    $reponse.='<div class="box-icon">';
                                            $reponse.='<button class="btn btn-setting btn-round" type="button" id="add_line_taxe"><i class="icon-plus-sign"></i></button>';
                                    $reponse.='</div>';
                            $reponse.='</div>';
                            
                            $reponse.='<div class="box-content">';
                                    $reponse.='<table class="table table-striped table-bordered bootstrap-datatable datatable" id="tabTaxes">';
                                            $reponse.='<thead>';
                                                    $reponse.='<tr>';
                                                            $reponse.='<th>Nom taxe</th>';
                                                            $reponse.='<th>Montant taxe</th> ';
                                                            $reponse.='<th>Action</th> ';                                    
                                                    $reponse.='</tr>';
                                            $reponse.='</thead>'; 
                                            
                                            $reponse.='<tbody>';
                                                                                      
                                            $reponse.='</tbody>';
                                    $reponse.='</table>';            
                            $reponse.='</div>';
                    $reponse.='</div>';
            $reponse.='</div>';
            
            $reponse.='<div class="control-group">';
                    $reponse.='<label class="control-label" for="focusedInput">Total produits HT</label>';
                    $reponse.='<div class="controls">';
                            $reponse.='<input class="input-xlarge focused" id="total_gal" name="total_gal" disabled="true" type="text" value="">';
                    $reponse.='</div>';
            $reponse.='</div>';
                    
            $reponse.='<div class="control-group">';
                    $reponse.='<label class="control-label" for="focusedInput">Frais de port</label>';
                    $reponse.='<div class="controls">';
                            $reponse.='<input class="input-xlarge focused" id="input_fdp" name="input_fdp" type="text" value="">';
                    $reponse.='</div>';
            $reponse.='</div>';
                    
            
            //$reponse.='<div class="control-group">';
            //      $reponse.='<label class="control-label" for="focusedInput">Total des taxes</label>';
            //      $reponse.='<div class="controls">';
            //              $reponse.='<input class="input-xlarge focused" readonly="readonly id="input_tot_taxes" name="input_tot_taxes" type="text" value="">';
            //      $reponse.='</div>';
            //$reponse.='</div>';
            
            //$reponse.='<div class="control-group">';
            //      $reponse.='<label class="control-label" for="focusedInput">Bénéfice</label>';
            //      $reponse.='<div class="controls">';
            //              $reponse.='<input class="input-xlarge focused" readonly="readonly id="input_benef" name="input_benef" type="text" value="">';
            //      $reponse.='</div>';
            //$reponse.='</div>';
            
            $reponse.='<div class="form-actions">';
                    $reponse.='<button type="submit" class="btn btn-primary" id="Sauvegarde">Sauvegarder</button>';
                    //$reponse.='<button type="button" class="btn">Annuler</button>';
            $reponse.='</div>';
    }               
     
    echo $reponse;
            
     
    ?>

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    Bonjour,

    Je me permets d'ajouter une étape à la discussion car je vois que des personnes check mais ne laisse pas de réponse.
    Je me dis que c'est peut être dû à la quantité de code que j'ai mis...

    Pour le problème de calendrier, voici le code que j'utilise pour le faire fonctionner. Toutefois ce dernier n’apparaît pas lorsque je positionne le curseur sur la zone...
    JS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#datepicker").datepicker();
    HTML/PHP :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $reponse.='<div class="control-group">';
    					$reponse.='<label class="control-label" for="focusedInput">Date de vente</label>';
    					$reponse.='<div class="controls">';
    				 		$reponse.='<input class="input-xlarge focused" id="datepicker" name="dateVente">';
    					$reponse.='</div>';
    			  	$reponse.='</div>';

    ou ici (en fonction de si on créer ou modifie un enreg...

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $reponse.='<div class="control-group">';
          					$reponse.='<label class="control-label" for="focusedInput">Date de vente</label>';
          					$reponse.='<div class="controls">';
          				 		$reponse.='<input class="input-xlarge focused" id="datepicker" name="dateVente" value="'.$enregVente->TYPE_DATE_REALISATION.'">';
          					$reponse.='</div>';
          			  	$reponse.='</div>';

    Pour ce qui est de l'ajout de ligne, il s'agit d'un simple code JS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    $("#add_line_produit").click(function(){
        		//la fonction qui va s'éxécuter au click sur le bouton ajouter une ligne
          		// lectude de l'id du dernier tr
          		var last_id=$("#tabProduits tr:last").attr('id');
          		//on rajoute +1 pour donner l'id du tr rajouté
          		last_id=parseInt(last_id);
          		//alert('id lu: '+last_id);
          		var new_id=last_id +1;	
          		//contenu du tr rajouté
          		//attention il doit avoir les mêmes caracteristiques que le premier avec en plus l'id dynamique "new_id"
          		var ligne_tr='<tr id="'+new_id+'">';
     
    	      		//ligne_tr +='<td id="reponse_ajax_select_produit">
     
            		ligne_tr +='<td><input type="hidden" name="produit_id[]">';
     
            		ligne_tr +='<?php 					
              							$html .= '<select class="pr_select" name="selectProduit[]" id="selectProduit" >';
              							$html .= '<option value="-1">Selectionnez votre produit</option>';
              							// Récupération des données
              							try 
              							{
              								// On envoie la requète
              							  	$selectProduitsActif = $connection->query("SELECT * FROM ENRIEN_PRODUITS WHERE PDT_ACTIF = '1'");							
              							  	// On indique que nous utiliserons les résultats en tant qu'objet
              							  	$selectProduitsActif->setFetchMode(PDO::FETCH_OBJ);
              							  	// Nous traitons les résultats en boucle
              							  	while( $enregProduitsActif = $selectProduitsActif->fetch() )
              							  	{	
              								 // Affichage des enregistrements
              								$html .= '<option value="'.$enregProduitsActif->PDT_ID.'">'.$enregProduitsActif->PDT_NOM.'</option>';
     
              							  	}
     
              							} 
              							catch(Exeption $e) {
              								die('Erreur lors du SELECT liste ks_produits'.$e->getMessage().'<br>');
              							}
              							// On ferme le curseur
              							$selectProduitsActif->closeCursor();
     
              							$html .= '</select></td>';
            						    echo $html;
            						   	?>';
            		ligne_tr+=' <td><input class="pr_qte" name="produit_qte['+new_id+']" id="produit_qte_'+new_id+'" value="" /></td>';//la id n'est pas entre []
            		ligne_tr+=' <td id="reponse_ajax_produit"><input class="pr_pu" name="produit_pu['+new_id+']" id="produit_pu_'+new_id+'" value="" /></td>'; //la id n'est pas entre []
            		//ligne_tr+=' <td><input name="produit_total['+new_id+']" id="produit_total_'+new_id+'" value="" /></td>';//la id n'est pas entre []
            		ligne_tr+='<td><button class="btn btn-danger" id="bt_suppr_ajout_prod"><i class="icon-trash icon-white"></i></button></td>' ;
              	ligne_tr+='</tr>';
     
    	      	//ajout de la ligne
    	      	$("#tabProduits > tbody:last").append( ligne_tr );
     
     
              	///ATTENTION cette definition de fonction ci-dessous doit être incluse dans la fonction ajout ligne
          		//fonction recalcul a chaque changement d'un input des class pr_pu OU pr_qte
          		$(".pr_pu, .pr_qte").keyup(function(){
          			var total_general=0;
          			var liste_tr=$('#tbody_produits').children(); //array des fils de tbody de la table
          			//on parcours cet array pour lire les valeurs des input pour chaque ligne et faire le calcul
          			liste_tr.each(function(n_tr, val_tr){
          				//alert("n_tr="+n_tr);
          				//on lit l'id réel de la ligne
          				var id=$(this).closest('tr').attr('id');					
          					if(id >0){ //on elimine la ligne des th
          						//alert("id lu: "+id);						
          						//recup des valeurs des input ( methode ternaire ) si vide on met 0
          						var pr_pu=($("#produit_pu_"+id).val()!="") ? $("#produit_pu_"+id).val() : 0;
          						var pr_qte=($("#produit_qte_"+id).val() !="") ? $("#produit_qte_"+id).val() : 0 ;
          						var pr_total=pr_pu * pr_qte;
          						$("#produit_total_"+id).val(pr_total);
          						//alert("ligne id "+id+" PU= "+pr_pu+" Qte= "+pr_qte+" Total ligne= "+pr_total);
          						total_general+=pr_total;
          					}
     
          			});	
          			 //ecriture total général
          			 $("#total_gal").val(total_general);
          		});

    Merci par avance pour votre aide précieuse.

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Bonjour,

    Vu que l'input #datepicker est généré dynamiquement par php, il faut passer par délégation en mettant un parent statique qui existe dans le DOM avant la génération de l'input.

    Ici j'ai mis "body" mais tu peux mettre un autre parent plus proche...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("body #datepicker").datepicker();

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    Merci Toufik de te lancer dans mon aventure, vraiment très sympa.

    Je viens de tenter ta solution, hélas elle n'a pas l'air de fonctionner.
    Je précise que le code mentionner dans mon étape pécédente et appelé et gérer via un système de popup ajax.

    Voici l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <script>
            $(function(){
                $(".popup-light").click(function() {
                    var obj = $(this),
                        popupClass = obj.data("popupClass"),
                        popupWidth = obj.data("popupWidth"),
                        objPopup =  $('.' + popupClass);
     
                    objPopup
                        .css("width", popupWidth)
                        .prepend('<img src="http://sohtanaka.developpez.com/tutoriels/javascript/creez-fenetre-modale-avec-css-et-jquery/fichiers/close_pop.png" class="popup-btn-close" title="Close Window" alt="Close" />')
                        .css({
                            // Si l'on regroupe les deux blocs CSS, le popup n'est pas bien positionné
                            // Le popup doit avoir sa taille définitive avant le calcul de outerHeight et de outerWidth
                            "margin-top":  '-350px',
                            "margin-left": -objPopup.outerWidth(true)/2,
                            "maxHeight" : '700px' 
                        })
                        .fadeIn();
     
                    $("<div/>", {
                        "class":"voile-noir",
                        "css":{
                            "filter":"alpha(opacity=80)"
                        }
                    }).appendTo("body").fadeIn();
     
                    var id = $(this).parent().parent().attr('id');
     
                    //alert('id : '+id);
     
                    //var id2 = $(this).parent().attr('id');
     
                    //alert('id2 : '+id2);
     
                    //var id3 = $(this).parent().parent().parent().attr('id');
     
                    //alert('id3 : '+id3);
     
                    $.ajax({
                              'type': 'POST',
                              'url' : 'repPhpAjax_vente.php',
                              'dataType': 'html',         
                              'data': { 'idPopup' : id }  
                              })
                              .done(function( data) {
                                //ecriture réponse dans le popup
                                $("#reponse_ajax").html(data);                    
    						 })
                              .fail(function( xhr) {
                                                        alert('c\'est ballot! :\n' + xhr.statusText);
                                                        });
     
                    return false;
                });
     
                $("body").delegate(".popup-btn-close, .voile-noir", "click", function(){
                    $('.voile-noir , .popup-block').fadeOut(function(){
                        $(".popup-btn-close, .voile-noir").remove();
                    });
     
                    return false;
                });
            });
     
        </script>
    Cela change t'il quelque chose d'après vous ?

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    .done(function( data) {
          //ecriture réponse dans le popup
          $("#reponse_ajax").html(data);// est ce que l'input concerné est généré par cette ligne ?
    })
    Si oui, tu mets $('#datepicker').datepicker(); juste après cette ligne.

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $.ajax({
                              'type': 'POST',
                              'url' : 'repPhpAjax_vente.php',
                              'dataType': 'html',         
                              'data': { 'idPopup' : id }  
                              })
                              .done(function( data) {
                                //ecriture réponse dans le popup
                                $("#reponse_ajax").html(data); 
                                $('#datepicker').datepicker();                   
    						 })
                              .fail(function( xhr) {
                                                        alert('c\'est ballot! :\n' + xhr.statusText);
                                                        });
     
                    return false;
    Si j'ai compris ta recommandation, le code devrait donner ça.
    Si oui, cela ne change rien au comportement de la zone calendrier...

    Ai je fais une erreur ?

  7. #7
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Normalement non, tu ne fais pas d'erreur, et si tu inspecte l'input (clique droit puis inspecter), tu vois bien qu'une classe nommée "hasDatepicker" est attribué à ton input ?

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    C'est plutôt mentionné input#datepicker.input-xlarge.focused si je regarde au bon endroit

  9. #9
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Le bon endroit c'est l'outil de développement et tu dois voir un truc qui ressemble à ça :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input class="input-xlarge focused hasDatepicker" id="datepicker" name="dateVente">

    Si la classe "hadDatepicker" n’apparaît pas, cela veux dire que le $.datepicker ne s'est pas appliqué à l'input.

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    Voici ce qui apparaît dans la console :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input class="input-xlarge focused" id="datepicker" name="dateVente">

    J'en conclu que ça ne s'est pas appliquer...

  11. #11
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Oui, ça ne s'applique pas... il y a surement un truc anormal que tu as fais quelque part ...

    Tu peux envoyer (exporter) la base de donnée pour que je fasse le teste localement ?

  12. #12
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    Script de la BDD :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `acheter`
    --
     
    DROP TABLE IF EXISTS `acheter`;
    CREATE TABLE IF NOT EXISTS `acheter` (
      `CLIENT_ID` int(5) NOT NULL,
      `TYPE_ID` int(5) NOT NULL,
      `TYPE_ACTION` char(3) NOT NULL,
      `PDT_ID` int(4) NOT NULL,
      `ACHAT_NB_PDT` int(4) DEFAULT NULL,
      `ACHAT_PRIX_UNITAIRE` decimal(10,3) DEFAULT NULL,
      PRIMARY KEY (`CLIENT_ID`,`TYPE_ID`,`TYPE_ACTION`,`PDT_ID`),
      KEY `I_FK_ACHETER_ENRIEN_CLIENTS` (`CLIENT_ID`),
      KEY `I_FK_ACHETER_ENRIEN_VENTES_OU_ACHATS` (`TYPE_ID`,`TYPE_ACTION`),
      KEY `I_FK_ACHETER_ENRIEN_PRODUITS` (`PDT_ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `enrien_clients`
    --
     
    DROP TABLE IF EXISTS `enrien_clients`;
    CREATE TABLE IF NOT EXISTS `enrien_clients` (
      `CLIENT_ID` int(5) NOT NULL AUTO_INCREMENT,
      `CLIENT_CODE` char(32) NOT NULL,
      `CLIENT_NOM` char(32) DEFAULT NULL,
      `CLIENT_PRE` char(32) DEFAULT NULL,
      `CLIENT_ADRESSE` char(100) DEFAULT NULL,
      `CLIENT_CP` char(5) DEFAULT NULL,
      `CLIENT_VILLE` char(32) DEFAULT NULL,
      `CLIENT_PAYS` char(32) DEFAULT NULL,
      `CLIENT_TEL` char(32) DEFAULT NULL,
      `CLIENT_PORTABLE` char(32) DEFAULT NULL,
      `CLIENT_MAIL` char(100) DEFAULT NULL,
      PRIMARY KEY (`CLIENT_ID`)
    ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `enrien_compo_taxes`
    --
     
    DROP TABLE IF EXISTS `enrien_compo_taxes`;
    CREATE TABLE IF NOT EXISTS `enrien_compo_taxes` (
      `COMPO_TAXES_ID` int(3) NOT NULL AUTO_INCREMENT,
      `TAXES_ID` int(3) DEFAULT NULL,
      `COMPO_TAXES_CODE` char(6) DEFAULT NULL,
      `COMPO_TAXES_FRAIS_FIXE` tinyint(1) DEFAULT NULL,
      `COMPO_TAXES_MNT_FRAIS` decimal(10,3) DEFAULT NULL,
      `COMPO_TAXES_TAUX` tinyint(1) DEFAULT NULL,
      `COMPO_TAXES_POUR_TAUX` decimal(3,2) DEFAULT NULL,
      PRIMARY KEY (`COMPO_TAXES_ID`),
      KEY `I_FK_ENRIEN_COMPO_TAXES_ENRIEN_TAXES` (`TAXES_ID`)
    ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `enrien_fournisseurs`
    --
     
    DROP TABLE IF EXISTS `enrien_fournisseurs`;
    CREATE TABLE IF NOT EXISTS `enrien_fournisseurs` (
      `FRS_ID` int(5) NOT NULL AUTO_INCREMENT,
      `FRS_CODE` char(32) NOT NULL,
      `FRS_NOM` char(32) DEFAULT NULL,
      `FRS_ACTIF` tinyint(1) DEFAULT NULL,
      `FRS_MAIL` char(100) DEFAULT NULL,
      `FRS_ADRESSE` char(100) DEFAULT NULL,
      `FRS_CP` char(5) DEFAULT NULL,
      `FRS_VILLE` char(32) DEFAULT NULL,
      `FRS_PAYS` char(32) DEFAULT NULL,
      `FRS_TEL` char(32) DEFAULT NULL,
      `FRS_SITE` char(100) DEFAULT NULL,
      PRIMARY KEY (`FRS_ID`)
    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
     
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `enrien_log`
    --
     
    DROP TABLE IF EXISTS `enrien_log`;
    CREATE TABLE IF NOT EXISTS `enrien_log` (
      `LOG_ID` int(3) NOT NULL AUTO_INCREMENT,
      `LOG_IDENTIFIANT` char(32) DEFAULT NULL,
      `LOG_PASSE` char(255) DEFAULT NULL,
      `LOG_IS_CONNECT` tinyint(1) DEFAULT NULL,
      `LOG_DERNIERE_CONNEXION` date DEFAULT NULL,
      PRIMARY KEY (`LOG_ID`)
    ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
     
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `enrien_produits`
    --
     
    DROP TABLE IF EXISTS `enrien_produits`;
    CREATE TABLE IF NOT EXISTS `enrien_produits` (
      `PDT_ID` int(4) NOT NULL AUTO_INCREMENT,
      `PDT_CODE` char(32) DEFAULT NULL,
      `PDT_ACTIF` char(32) DEFAULT NULL,
      `PDT_DESCR` text,
      `PDT_PRIX_VENTE` decimal(10,4) DEFAULT NULL,
      `PDT_PRIX_ACHAT` decimal(10,4) DEFAULT NULL,
      `PDT_UTI_CREATION` char(32) DEFAULT NULL,
      `PDT_DATE_CREATION` date DEFAULT NULL,
      `PDT_UTI_MODIF` char(32) DEFAULT NULL,
      `PDT_DATE_MODIF` date DEFAULT NULL,
      `PDT_STOCK` int(4) DEFAULT NULL,
      `PDT_NOM` varchar(255) NOT NULL,
      PRIMARY KEY (`PDT_ID`)
    ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
     
    --
    -- Déchargement des données de la table `enrien_produits`
    --
     
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `enrien_profil`
    --
     
    DROP TABLE IF EXISTS `enrien_profil`;
    CREATE TABLE IF NOT EXISTS `enrien_profil` (
      `PROFIL_ID` int(3) NOT NULL AUTO_INCREMENT,
      `PROFIL_NOM` char(32) NOT NULL,
      `PROFIL_PRENOM` char(32) NOT NULL,
      `PROFIL_GENRE` tinyint(1) NOT NULL,
      `PROFIL_ADRESSE` char(100) DEFAULT NULL,
      `PROFIL_CP` char(5) DEFAULT NULL,
      `PROFIL_VILLE` char(32) DEFAULT NULL,
      `PROFIL_MAIL` char(100) DEFAULT NULL,
      PRIMARY KEY (`PROFIL_ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `enrien_taxes`
    --
     
    DROP TABLE IF EXISTS `enrien_taxes`;
    CREATE TABLE IF NOT EXISTS `enrien_taxes` (
      `TAXES_ID` int(3) NOT NULL AUTO_INCREMENT,
      `TAXES_NOM` char(32) DEFAULT NULL,
      `TAXES_DESCR` text,
      `TAXES_ACTIF` tinyint(1) DEFAULT NULL,
      `TAXES_UTI_CREATION` char(32) DEFAULT NULL,
      `TAXES_DATE_CREATION` date DEFAULT NULL,
      `TAXES_UTI_MODIF` char(32) DEFAULT NULL,
      `TAXES_DATE_MODIF` date DEFAULT NULL,
      PRIMARY KEY (`TAXES_ID`)
    ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
     
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `enrien_ventes_ou_achats`
    --
     
    DROP TABLE IF EXISTS `enrien_ventes_ou_achats`;
    CREATE TABLE IF NOT EXISTS `enrien_ventes_ou_achats` (
      `TYPE_ID` int(5) NOT NULL AUTO_INCREMENT,
      `TYPE_ACTION` char(3) NOT NULL,
      `TAXES_ID` int(3) DEFAULT NULL,
      `TYPE_CODE` char(32) NOT NULL,
      `TYPE_DATE_REALISATION` date DEFAULT NULL,
      `TYPE_DESCR` text,
      `TYPE_ACTION_PAR` char(32) DEFAULT NULL,
      `TYPE_VENDU_LE` date DEFAULT NULL,
      `TYPE_UTI_CREATION` char(32) DEFAULT NULL,
      `TYPE_DATE_CREATION` date DEFAULT NULL,
      `TYPE_UTI_MODIF` char(32) DEFAULT NULL,
      `TYPE_DATE_MODIF` date DEFAULT NULL,
      PRIMARY KEY (`TYPE_ID`,`TYPE_ACTION`),
      UNIQUE KEY `I_FK_ENRIEN_VENTES_OU_ACHATS_ENRIEN_TAXES` (`TAXES_ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `vendre`
    --
     
    DROP TABLE IF EXISTS `vendre`;
    CREATE TABLE IF NOT EXISTS `vendre` (
      `TYPE_ID` int(5) NOT NULL,
      `TYPE_ACTION` char(3) NOT NULL,
      `FRS_ID` int(5) NOT NULL,
      `PDT_ID` int(4) NOT NULL,
      `VENTE_NB_PDT` int(4) DEFAULT NULL,
      `VENTE_PRIX_UNITAIRE` decimal(10,4) DEFAULT NULL,
      PRIMARY KEY (`TYPE_ID`,`TYPE_ACTION`,`FRS_ID`,`PDT_ID`),
      KEY `I_FK_VENDRE_ENRIEN_VENTES_OU_ACHATS` (`TYPE_ID`,`TYPE_ACTION`),
      KEY `I_FK_VENDRE_ENRIEN_FOURNISSEURS` (`FRS_ID`),
      KEY `I_FK_VENDRE_ENRIEN_PRODUITS` (`PDT_ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    COMMIT;

    Script ventes.php :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    <?php 
     
    include('header.php'); 
     
    //echo '<pre>';
    //echo var_dump($_POST);
    //echo '</pre>';
     
    if( isset($_POST) && $_POST['code']!="")
    	{
    		//extract($_POST);
     
    	    if (empty($id_popup)) //update
    		{
    		    //Pas réfélchis encore
    		    //Le problème vient de la gestion du stock...
    		    //Il faudrait à l'entrée de la saisie en modification de la vente ajouter les quantités aux stocks des produits.
    		    //Et ensuite faire un delete sur les produits et les taxes puis ensuite réinsérer à nouveau.
    		    //DELETE FROM ACHETER et PROPOSER puis ré-insertion dans ces tables
    		}
    		else //insert
    		{
    			$NbLigneTaxe = 0;
     
    			//Récupération du dernier code de la vente
    			try 
    			{
    				// On envoie la requète
    			  	$selectMaxCode = $connection->query("SELECT MAX(TYPE_CODE) FROM ENRIEN_VENTES_OU_ACHATS WHERE TYPE_ACTION='VEN'");							
    			  	// On indique que nous utiliserons les résultats en tant qu'objet
    			  	$selectMaxCode->setFetchMode(PDO::FETCH_OBJ);
    			  	// Nous traitons les résultats en boucle
    			  	while( $enregMaxCode = $selectMaxCode->fetch() )
    			  	{	
    				 	// Affichage des enregistrements
    					$code = $enregMaxCode->TYPE_CODE + 1;
    					$code = sprintf("%06d", $code);
    			  	}
     
    			} 
    			catch(Exception $e) {
    				//die('Erreur lors du SELECT liste ks_taxes'.$e->getMessage());
    				$code = sprintf("%06d", 1);
    			}
     
    			$selectMaxCode->closeCursor();
     
    			//Liaison de la vente aux taxes
    			foreach($_POST['taxe_id']  as $cle=>$value)
    			{
    				if ($NbLigneTaxe < 1)
    				{
    					$idTaxe = $_POST['selectTaxe'][$cle];
    				}
    				$NbLigneTaxe++;
    			}
     
     
    			$insert_acheter = $connection->prepare('INSERT INTO ENRIEN_VENTES_OU_ACHATS VALUES(
    			:id, :action, :idTaxes, :code, :date_real, :descr, :action_par, :vendu_le, :uti_creation, :date_creation, 
    			:uti_modif, :date_modif, :moyen, :fdp)');
     
    			try 
    			{
    		  		// On envois la requète
    		  		$success = $insert_acheter->execute( array
    			  										(
    			  										'id'=>'0',
    												    'action'=>'VEN', //Signifie vente à un client
    			  										'idTaxes'=>$idTaxe,
    			  										'code'=>$code,
    			  										'date_real'=>$dateVente, 
    			  										'descr'=>'', //Pour l'instant il n'y a pas cette info
    			  										'action_par'=>'', //Pour l'instant il n'y a pas cette info
    			  										'vendu_le'=>'', //Pour l'instant il n'y a pas cette info
    			  										'uti_creation'=>$username,
    			  										'date_creation'=>date("Y-m-d"),
    			  										'uti_modif'=>'',
    			  										'date_modif'=>'',
    			  										'moyen'=>'',
    			  										'fdp'=>$input_fdp
    													 )
    													);
     
    		  		if( $success ) 
    		  		{
    		    		echo "Enregistrement réussi vente";
    		  		} 
    			} 
    			catch( Exception $e )
    			{
    		  		echo 'Erreur de requète insert acheter : ', $e->getMessage().'<br>';
    			}
     
    			$insert_acheter->closeCursor();
     
    			//Récupération du dernier code de la vente
    			try 
    			{
    			  	$selectMaxId = $connection->query("SELECT MAX(TYPE_ID) AS MAX_ID FROM ENRIEN_VENTES_OU_ACHATS WHERE TYPE_ACTION='VEN'");	
    			  	$selectMaxId->setFetchMode(PDO::FETCH_OBJ);
     
    			  	while( $enregMaxId = $selectMaxId->fetch() )
    			  	{	
    					$maxId = $enregMaxId->MAX_ID;
    			  	}
     
    			} 
    			catch(Exception $e) {
    				die('Erreur lors du SELECT max type '.$e->getMessage().'<br>');
    			}
     
    			$selectMaxId->closeCursor();
     
    			foreach($_POST['produit_id']  as $cle=>$value)
    			{
    				$clePlusUn = $cle + 1;
    				$idProduit = $_POST['selectProduit'][$cle];
    				$quantite = $_POST['produit_qte'][$clePlusUn];
    				$prixUnitaire = $_POST['produit_pu'][$clePlusUn];
     
    				//Pour chaque ligne du tableau des ventes, retirer la quantité saisie du stock actuel des produits.
    				try 
    				{
    					// On envoie la requète
    				  	$selectStockActuel = $connection->query("SELECT PDT_STOCK FROM ENRIEN_PRODUITS WHERE PDT_ID = '".$idProduit."'");							
    				  	// On indique que nous utiliserons les résultats en tant qu'objet
    				  	$selectStockActuel->setFetchMode(PDO::FETCH_OBJ);
    				  	// Nous traitons les résultats en boucle
    				  	while( $enregStockActuel = $selectStockActuel->fetch() )
    				  	{	
    					 	// Affichage des enregistrements
    						$stock = $enregStockActuel->PDT_STOCK - $quantite;
     
    						//Maintenant que l'on connait le stock, on le met à jour.
    					  	$update_taxe = $connection->prepare("UPDATE ENRIEN_PRODUITS 
    					  										 SET PDT_STOCK = :stock
    															 WHERE PDT_ID = '".$idProduit."'");
     
    						try 
    						{
    					  		// On envois la requète
    					  		$success = $update_taxe->execute( array
    						  										(
    															    'stock'=>$stock
    																 )
    															);
     
    					  		if( $success ) 
    					  		{
    					    		echo "MAJ du stock réussi";
    					  		} 
    						} 
    						catch( Exception $e )
    						{
    					  		echo 'Erreur de requète update taxe : ', $e->getMessage().'<br>';
    						}
     
    						$update_taxe->closeCursor();
    				  	}
     
    				} 
    				catch(Exception $e) {
    					die('Erreur lors du SELECT liste ENRIEN_produits'.$e->getMessage().'<br>');
    				}
     
    				$selectStockActuel->closeCursor();
     
    				//Insertion de toutes les lignes du tableau des produits
    				$insertProduits = $connection->prepare('INSERT INTO ACHETER VALUES(
    				:id_client, :id_type, :type_action, :id_pdt, :quantite, :pu)');
     
    				try 
    				{
    			  		// On envois la requète
    			  		$success2 = $insertProduits->execute(array
    					  										(
    					  										'id_client'=>$selectClient,
    					  										'id_type'=>$maxId,
    					  										'type_action'=>'VEN',
    					  										'id_pdt'=>$idProduit,
    					  										'quantite'=>$quantite,
    					  										'pu'=>$prixUnitaire
    															 )
    														);
     
    			  		if( $success2 ) 
    			  		{
    			    		echo "Enregistrement réussi produits";
    			  		} 
    				} 
    				catch( Exception $e )
    				{
    			  		echo 'Erreur de requète insert acheter : ', $e->getMessage().'<br>';
    				}
     
    				$insertProduits->closeCursor();
    			}
     
    		}
    	}
     
     
     
    ?>
     
    	<style>
    		/* TEST */
            .voile-noir {
                position: fixed;
                display: none;
                left: 0;
                top: 0; 
                width: 100%;
                height: 100%;
                opacity: 0.75;
                background: gray; 
                z-index: 9999;
            }
            .popup-block{
                position: fixed;
                display: none;
                top: 50%;
                left: 50%;
                padding: 20px; 	
                z-index: 99999;
                font-size: 1em;
                background: #000;
                border: 20px solid #ddd;
                -webkit-box-shadow: 0px 0px 20px #000;
                -moz-box-shadow: 0px 0px 20px #000;
                box-shadow: 0px 0px 20px #000;
                -webkit-border-radius: 10px;
                -moz-border-radius: 10px;
                border-radius: 10px;
            }
            .popup p {
                padding: 5px 10px;
                margin: 5px 0;
            }
            .popup-btn-close {
                float: right; 
                margin: -55px -55px 0 0;
            }
        </style>
     
        <script src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
        <script>
            $(function(){
                $(".popup-light").click(function() {
                    var obj = $(this),
                        popupClass = obj.data("popupClass"),
                        popupWidth = obj.data("popupWidth"),
                        objPopup =  $('.' + popupClass);
     
                    objPopup
                        .css("width", popupWidth)
                        .prepend('<img src="http://sohtanaka.developpez.com/tutoriels/javascript/creez-fenetre-modale-avec-css-et-jquery/fichiers/close_pop.png" class="popup-btn-close" title="Close Window" alt="Close" />')
                        .css({
                            // Si l'on regroupe les deux blocs CSS, le popup n'est pas bien positionné
                            // Le popup doit avoir sa taille définitive avant le calcul de outerHeight et de outerWidth
                            "margin-top":  '-350px',
                            "margin-left": -objPopup.outerWidth(true)/2,
                            "maxHeight" : '700px' 
                        })
                        .fadeIn();
     
                    $("<div/>", {
                        "class":"voile-noir",
                        "css":{
                            "filter":"alpha(opacity=80)"
                        }
                    }).appendTo("body").fadeIn();
     
                    var id = $(this).parent().parent().attr('id');
     
                    //alert('id : '+id);
     
                    //var id2 = $(this).parent().attr('id');
     
                    //alert('id2 : '+id2);
     
                    //var id3 = $(this).parent().parent().parent().attr('id');
     
                    //alert('id3 : '+id3);
     
                    $.ajax({
                              'type': 'POST',
                              'url' : 'repPhpAjax_vente.php',
                              'dataType': 'html',         
                              'data': { 'idPopup' : id }  
                              })
                              .done(function( data) {
                                //ecriture réponse dans le popup
                                $("#reponse_ajax").html(data); 
                                $('#datepicker').datepicker();                   
    						 })
                              .fail(function( xhr) {
                                                        alert('c\'est ballot! :\n' + xhr.statusText);
                                                        });
     
                    return false;
                });
     
                $("body").delegate(".popup-btn-close, .voile-noir", "click", function(){
                    $('.voile-noir , .popup-block').fadeOut(function(){
                        $(".popup-btn-close, .voile-noir").remove();
                    });
     
                    return false;
                });
            });
     
        </script>
     
    	<div>
    		<a class="brand"> <span>Ventes</span></a>
    	</div>
     
    	<div class="row-fluid sortable">	
    		<div class="box span12">
    			<div class="box-header well" data-original-title>
    				<h2>Ventes</h2>
    				<div class="box-icon">
            			<button class="btn btn-setting btn-round popup-light" data-popup-class="popup-block" data-popup-width="1200px"><i class="icon-plus-sign"></i></button>
     
    				</div>
    			</div>
     
    			<div class="box-content">
    				<table id="tabVentes" class="table table-bordered table-striped table-condensed">
    				  	<thead>
    					  	<tr>
    					  		<th style="display:none">Id </th>
    					  	  	<th>Code</th>
    						  	<th>Nom client </th>
    						  	<th>Date de la vente</th>
    						  	<th>Montant</th> 
    						  	<th>Actions</th>                                          
    					  	</tr>
    				  	</thead> 
     
    				  	<tbody>
    				   		<?php 
     
    						try 
    						{
    						  	$selectVentes = $connection->query("	SELECT ENRIEN_CLIENTS.*, ACHETER.*, ENRIEN_VENTES_OU_ACHATS.*, ENRIEN_PRODUITS.*, SUM(ACHETER.ACHAT_PRIX_UNITAIRE) AS MONTANT
    						  									FROM ENRIEN_CLIENTS, ACHETER, ENRIEN_VENTES_OU_ACHATS, ENRIEN_PRODUITS
    						  									WHERE ACHETER.TYPE_ACTION = ENRIEN_VENTES_OU_ACHATS.TYPE_ACTION 
    						  									AND ACHETER.TYPE_ID = ENRIEN_VENTES_OU_ACHATS.TYPE_ID
    						  									AND ACHETER.CLIENT_ID = ENRIEN_CLIENTS.CLIENT_ID
    						  									AND ACHETER.PDT_ID = ENRIEN_PRODUITS.PDT_ID
    						  									AND ENRIEN_VENTES_OU_ACHATS.TYPE_ACTION = 'VEN'
    						  									ORDER BY ENRIEN_VENTES_OU_ACHATS.TYPE_DATE_REALISATION
    						  								  ");
     
    						  	$selectVentes->setFetchMode(PDO::FETCH_OBJ);
     
    						  	while( $enregVentes = $selectVentes->fetch() )
    						  	{	
    						  		if (isset($enregVentes->TYPE_ID))
    						  		{
    									$id=$enregVentes->TYPE_ID;
    									echo '<tr id="'.$id.'">';
    								  	// Affichage d'un des champs
    								  	echo '<td style="display:none">', $enregVentes->TYPE_ID, '</td>';
    								  	echo '<td>', $enregVentes->TYPE_CODE, '</td>';
    								  	echo '<td>', $enregVentes->CLIENT_NOM,' ',$enregVentes->CLIENT_PRE, '</td>';
    								  	echo '<td>', $enregVentes->TYPE_DATE_REALISATION, '</td>';
    								  	echo '<td>', $enregVentes->MONTANT, ' €</td>';
     
    								  	echo '<td class="center">';
    										echo '<a class="btn btn-info" href="#">';
    											echo '<i class="icon-edit icon-white"></i>';            
    										echo '</a>';
    										echo '<a class="btn btn-danger" href="#">';
    											echo '<i class="icon-trash icon-white"></i>'; 
    										echo '</a>';
    									echo '</td>';   
    									echo '</tr>';
    						  		}
    						  	}
    						} 
    						catch ( Exception $e ) 
    						{
    						  	echo "Une erreur est survenue lors de la récupération des ventes <br>";
    						}
     
                  $selectVentes->closeCursor();   						
     
    					   	?>
     
    				  	</tbody>
    				</table>  
     
    				<div class="pagination pagination-centered">
    				  	<ul>
    						<li><a href="#">Prev</a></li>
    						<li class="active">
    					  		<a href="#">1</a>
    						</li>
    						<li><a href="#">2</a></li>
    						<li><a href="#">3</a></li>
    						<li><a href="#">4</a></li>
    						<li><a href="#">Next</a></li>
    				  	</ul>
    				</div>     
    			</div>
    		</div><!--/span-->
    	</div><!--/row-->
     
     	<div class="popup-block"> 
    		<form class="form-horizontal" action="ventes.php" method="post" name="form_ventes">
    			<fieldset id="reponse_ajax">
     
    			</fieldset>
    		</form>
        </div>
     
     
    <?php include('footer.php'); ?>

    Script repPhpAjax_vente.php :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
    561
    562
    563
    564
    565
    566
    567
    568
    569
    570
    571
    572
    573
    574
    575
    576
    577
    578
    579
    580
    581
    582
    583
    584
    585
    586
    587
    588
    589
    590
    591
    592
    593
    594
    595
    596
    597
    598
    599
    600
    601
    602
    603
    604
    605
    606
    607
    608
    609
    610
    611
    612
    613
    614
    615
    616
    617
    618
    619
    620
    621
    622
    623
    624
    625
    626
    627
    628
    629
    630
    631
    632
    633
    634
    635
    636
    637
    638
    639
    640
    641
    642
    643
    644
    645
    646
    647
    648
    649
    650
    651
    652
    653
    654
    655
    656
    657
    658
    659
    660
    661
    662
    663
    664
    665
    666
    667
    668
    669
    670
    671
    672
    673
    674
    675
    676
    677
    678
    679
    680
    681
    682
    683
    684
    685
    686
    687
    688
    689
    690
    691
    692
    693
    694
    695
    696
    697
    698
    699
    700
    701
    702
    703
    704
    705
    706
    707
    708
    709
    710
    711
    712
    713
    714
    715
    716
    717
    718
    719
    720
    721
    722
    723
    724
    725
    726
    727
    728
    729
    730
    731
    732
    733
    734
    735
    736
    737
    738
    739
    740
    741
    742
    743
    744
    745
    746
    747
    748
    749
    750
    751
    752
    753
    754
    755
    756
    757
    758
    759
    760
    761
    762
    763
    764
    765
    766
    767
    768
    769
    770
    771
    772
    773
    774
    775
    776
    777
    778
    779
    780
    781
    782
    783
    784
    785
    786
    787
    788
    789
    790
    791
    792
    793
    794
    <?php
    	include 'config/ks-connect.php'; 
     
    ?>
     
    	<script src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
    	<script src="//code.jquery.com/jquery-1.10.2.js"></script>
    	<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
        		var nom_script='<?php echo $_SERVER['PHP_SELF']; ?>';
        		// quand la page est finie de charger, on initialise les fonctions jQuery en fct des événements désirés	
     
        		$("body #datepicker").datepicker();
     
        		$("#add_line_produit").click(function(){
        		//la fonction qui va s'éxécuter au click sur le bouton ajouter une ligne
          		// lectude de l'id du dernier tr
          		var last_id=$("#tabProduits tr:last").attr('id');
          		//on rajoute +1 pour donner l'id du tr rajouté
          		last_id=parseInt(last_id);
          		//alert('id lu: '+last_id);
          		var new_id=last_id +1;	
          		//contenu du tr rajouté
          		//attention il doit avoir les mêmes caracteristiques que le premier avec en plus l'id dynamique "new_id"
          		var ligne_tr='<tr id="'+new_id+'">';
     
    	      		//$.ajax({
    	            //    'type': 'POST',
    	            //    'url' : 'repPhpAjax_vente_select_produit.php',
    	            //    'dataType': 'html',         
    	            //    'data': {'varIdSelect' : new_id}  
    	            //    })
    	            //    .done(function( data) {
    	            //      //ecriture réponse dans le popup
    	            //      $("#reponse_ajax_select_produit").html(data);                    
    				// 	})
    	            //    .fail(function(xhr) {
    	            //       alert('c\'est ballot! :\n' + xhr.statusText);
    	            //     });
     
    	      		//ligne_tr +='<td id="reponse_ajax_select_produit">
     
            		ligne_tr +='<td><input type="hidden" name="produit_id[]">';
     
            		ligne_tr +='<?php 					
              							$html .= '<select class="pr_select" name="selectProduit[]" id="selectProduit" >';
              							$html .= '<option value="-1">Selectionnez votre produit</option>';
              							// Récupération des données
              							try 
              							{
              								// On envoie la requète
              							  	$selectProduitsActif = $connection->query("SELECT * FROM ENRIEN_PRODUITS WHERE PDT_ACTIF = '1'");							
              							  	// On indique que nous utiliserons les résultats en tant qu'objet
              							  	$selectProduitsActif->setFetchMode(PDO::FETCH_OBJ);
              							  	// Nous traitons les résultats en boucle
              							  	while( $enregProduitsActif = $selectProduitsActif->fetch() )
              							  	{	
              								 // Affichage des enregistrements
              								$html .= '<option value="'.$enregProduitsActif->PDT_ID.'">'.$enregProduitsActif->PDT_NOM.'</option>';
     
              							  	}
     
              							} 
              							catch(Exeption $e) {
              								die('Erreur lors du SELECT liste ks_produits'.$e->getMessage().'<br>');
              							}
              							// On ferme le curseur
              							$selectProduitsActif->closeCursor();
     
              							$html .= '</select></td>';
            						    echo $html;
            						   	?>';
            		ligne_tr+=' <td><input class="pr_qte" name="produit_qte['+new_id+']" id="produit_qte_'+new_id+'" value="" /></td>';//la id n'est pas entre []
            		ligne_tr+=' <td id="reponse_ajax_produit"><input class="pr_pu" name="produit_pu['+new_id+']" id="produit_pu_'+new_id+'" value="" /></td>'; //la id n'est pas entre []
            		//ligne_tr+=' <td><input name="produit_total['+new_id+']" id="produit_total_'+new_id+'" value="" /></td>';//la id n'est pas entre []
            		ligne_tr+='<td><button class="btn btn-danger" id="bt_suppr_ajout_prod"><i class="icon-trash icon-white"></i></button></td>' ;
              	ligne_tr+='</tr>';
     
    	      	//ajout de la ligne
    	      	$("#tabProduits > tbody:last").append( ligne_tr );
     
     
              	///ATTENTION cette definition de fonction ci-dessous doit être incluse dans la fonction ajout ligne
          		//fonction recalcul a chaque changement d'un input des class pr_pu OU pr_qte
          		$(".pr_pu, .pr_qte").keyup(function(){
          			var total_general=0;
          			var liste_tr=$('#tbody_produits').children(); //array des fils de tbody de la table
          			//on parcours cet array pour lire les valeurs des input pour chaque ligne et faire le calcul
          			liste_tr.each(function(n_tr, val_tr){
          				//alert("n_tr="+n_tr);
          				//on lit l'id réel de la ligne
          				var id=$(this).closest('tr').attr('id');					
          					if(id >0){ //on elimine la ligne des th
          						//alert("id lu: "+id);						
          						//recup des valeurs des input ( methode ternaire ) si vide on met 0
          						var pr_pu=($("#produit_pu_"+id).val()!="") ? $("#produit_pu_"+id).val() : 0;
          						var pr_qte=($("#produit_qte_"+id).val() !="") ? $("#produit_qte_"+id).val() : 0 ;
          						var pr_total=pr_pu * pr_qte;
          						$("#produit_total_"+id).val(pr_total);
          						//alert("ligne id "+id+" PU= "+pr_pu+" Qte= "+pr_qte+" Total ligne= "+pr_total);
          						total_general+=pr_total;
          					}
     
          			});	
          			 //ecriture total général
          			 $("#total_gal").val(total_general);
          		});		
     
        		//Et init de la fonction du bouton supprimer et du bouton valider
        		//cet init doit être dans la fonction qui ajoute la ligne car si on la met en dehors , au chargement de la page, l'id n'existe pas encore
        		$("#bt_suppr_ajout_prod").click(function(){
        			if(confirm("Voulez vous vraiment supprimer la ligne que vous venez d'ajouter ?")){
        				//on supprime en JS la ligne fraichement rajoutée c a d le tr ayant l'id="ajout"
        				$("#new_id").remove();
        				//on réactive le bouton ajouter ligne
        				//$("#add_line_compo").css('display','block');
        			}	
        		});  
     
        		$("#selectProduit").change(function() {
     
          			var idProduit = $(this).val();
          			var idLigne=$(this).closest('tr').attr('id');
     
      		  		if(idProduit ==-1){
    					alert("Vous devez chosir un nom de produit !");
    					return false;
    				}else{
    				  	$("#produit_pu_"+idLigne).css('display','none');
     
          		  		$.ajax({
                            'type': 'POST',
                            'url' : 'repPhpAjax_vente_produit.php',
                            'dataType': 'html',         
                            'data': { 'varIdProduit' : idProduit, 'varIdLigne' : idLigne}  
                            })
                            .done(function( data) {
                              //ecriture réponse dans le popup
                              $("#reponse_ajax_produit").html(data);                    
    					 	})
                            .fail(function(xhr) {
                               alert('c\'est ballot! :\n' + xhr.statusText);
                             });
     
          		  		$("#produit_pu_"+idLigne).css('display','block');
    				}
          		});
        	});
     
        	$("#add_line_taxe").click(function(){
        		//la fonction qui va s'éxécuter au click sur le bouton ajouter une ligne
        		// on met comme id ajout pour le retrouver plus facilement, ce doit être un INSERT alors que les autres lignes (modifs) seront des UPDATE	
        		var new_id='ajout';	
        		//contenu du tr rajouté			
     
        		//attention il doit avoir les mêmes caracteristiques que le premier avec en plus l'id dynamique "new_id"
        		var ligne_tr='<tr id="'+new_id+'">';
     
        		ligne_tr +='<?php 
    						//il te manquait tous les <td></td>						
    						$html = '<td><input type="hidden" name="taxe_id[]" value="">';
    						$html .= '<select id="selectTaxe" name="selectTaxe[]">';
    						$html .= '<option value="-1">Selectionnez une taxe</option>';
    						// Récupération des données
    						try 
    						{
    							// On envoie la requète
    						  	$selectTaxesActives = $connection->query("SELECT * FROM ENRIEN_TAXES WHERE TAXES_ACTIF = '1'");							
    						  	// On indique que nous utiliserons les résultats en tant qu'objet
    						  	$selectTaxesActives->setFetchMode(PDO::FETCH_OBJ);
    						  	// Nous traitons les résultats en boucle
    						  	while( $enregTaxesActives = $selectTaxesActives->fetch() )
    						  	{	
    							 // Affichage des enregistrements
    							$html .= '<option value="'.$enregTaxesActives->TAXES_ID.'">'.$enregTaxesActives->TAXES_NOM.'</option>';
     
    						  	}
     
    						} 
    						catch(Exeption $e) {
    							die('Erreur lors du SELECT liste ks_taxes'.$e->getMessage());
    						}
    						// On ferme le curseur
    						$selectTaxesActives->closeCursor();
     
    						$html .= '</select></td>';
    					    echo $html;
    					   	?>';
     
        		ligne_tr+='<td id="reponse_ajax_taxe"><input class="input-xlarge focused" id="taxe_montant" name="taxe_montant[]" type="text" value="" disabled="true"></td>';
     
    			  ligne_tr+='<td><button class="btn btn-danger" id="bt_suppr_ajout_taxe"><i class="icon-trash icon-white"></i></button></td>' ;
     
    			ligne_tr+='</tr>';
     
        		//ajout de la ligne
        		$("#tabTaxes > tbody:last").append( ligne_tr );
        		//$("#add_line_compo").css('display','none');
     
        		//Et init de la fonction du bouton supprimer et du bouton valider
        		//cet init doit être dans la fonction qui ajoute la ligne car si on la met en dehors , au chargement de la page, l'id n'existe pas encore
        		$("#bt_suppr_ajout_taxe").click(function(){
        			if(confirm("Voulez vous vraiment supprimer la ligne que vous venez d'ajouter ?")){
        				//on supprime en JS la ligne fraichement rajoutée c a d le tr ayant l'id="ajout"
        				$("#ajout").remove();
        				//on réactive le bouton ajouter ligne
        				//$("#add_line_compo").css('display','block');
        			}	
        		});  
     
        		$("#selectTaxe").change(function() {
        			var idTaxe = $(this).val();
     
        			//On récupère le montant total des produits
        			var totalMontantProduits = $("#total_gal").val();
     
      		  		if(idTaxe ==-1){
        				alert("Vous devez chosir une taxe !");
        				return false;
        			}else{
      				  	$("#taxe_montant").css('display','none');
     
            			$.ajax({
                    	        'type': 'POST',
                                'url' : 'repPhpAjax_vente_taxe.php',
                                'dataType': 'html',         
                                'data': { 'varIdTaxe' : idTaxe, 'montantProduit' : totalMontantProduits }  
                               	})
                               	.done(function( data) {
                               	//ecriture réponse dans le popup
                               	$("#reponse_ajax_taxe").html(data);                    
      					   		})
                  				.fail(function(xhr) {
                     			alert('c\'est ballot! :\n' + xhr.statusText);
                   				});
     
          		   		$("#taxe_montant").css('display','block');
    				}
           	 	});  			
        	});
     
        	$("#Sauvegarde").click(function(){
        	   //On s'assure que le client est sélectionné
        	   var idCli = $("#selectClient").val();
     
        	   if(idCli ==-1)
             {
        		    alert("Vous devez chosir un client !");
        				return false;
        		 }    			
     
        	});
     
     
        	});
     
        </script>
    <?php 
    //script de réponse de php a une requette Ajax
    if(isset($_POST['idPopup'])){
    	//recup de l'id
    	$idPopupVente=$_POST['idPopup'];
    	$ligneProduit=0;
    	$ligneTaxe=0;
    	$montantTotalProduit=0;
    	$montantTotalTaxe=0;
     
    	// Récupération des données
    	try 
    	{
    	  	// On envois la requète correspondant a cet id
    	  	$selectVente = $connection->query("SELECT * FROM ENRIEN_VENTES_OU_ACHATS WHERE TYPE_ID=".$idPopupVente." AND TYPE_ACTION = 'VEN'");
     
    	  	// On indique que nous utiliserons les résultats en tant qu'objet
    	  	$selectVente->setFetchMode(PDO::FETCH_OBJ);
     
    	  	// Nous traitons les résultats en boucle
    	  	while( $enregVente = $selectVente->fetch() )
    	  	{	
    	  	  //Récupération des infos de la vente
    	  	  try 
          	{
          	    $tabProduits['id'][] = array();
          	    $tabProduits['qte'][] = array();
          	    $tabProduits['pu'][] = array();
     
          	  	$selectInfos = $connection->query("SELECT * FROM ACHETER WHERE TYPE_ID=".$idPopupVente." AND TYPE_ACTION = 'VEN'");
          	  	$selectInfos->setFetchMode(PDO::FETCH_OBJ);
     
          	  	while( $enregInfos = $selectInfos->fetch() )
          	  	{
          	  	    $client = $enregInfos->CLIENT_ID;
    	  	          $tabProduits['id'][] = $enregInfos->PDT_ID;
    	  	          $tabProduits['qte'][] = $enregInfos->ACHAT_NB_PDT;
    	  	          $tabProduits['pu'][] = $enregInfos->ACHAT_PRIX_UNITAIRE; 
              	}
            } 
            catch ( Exception $e ) 
            {
              	$reponse= "Une erreur est survenue lors de la récupération des informations de la vente <br>";
            }
     
            $selectInfos->closeCursor();
     
            //Récupération des infos sur les taxes
    	  	  try 
          	{      	    
          	    $tabTaxes['id'][] = array();
     
          	  	$selectInfosTaxe = $connection->query("SELECT * FROM PROPOSER WHERE TYPE_ID=".$idPopupVente." AND TYPE_ACTION = 'VEN'");
          	  	$selectInfosTaxe->setFetchMode(PDO::FETCH_OBJ);
     
          	  	while( $enregInfosTaxe = $selectInfosTaxe->fetch() )
          	  	{
          	  	    $tabTaxes['id'][] = $enregInfosTaxe->TAXES_ID;
              	}
            } 
            catch ( Exception $e ) 
            {
              	$reponse= "Une erreur est survenue lors de la récupération des informations des taxes <br>";
            }
     
            $selectInfosTaxe->closeCursor();
     
    		    // Affichage des enregistrements
    			  $reponse.='<input type="hidden" name="id_popup" value="'.$idPopup.'">';
     
    			  $reponse='<div class="row-fluid sortable">';
          		$reponse.='<div class="box span12">';
          			$reponse.='<div class="box-header well" data-original-title>';
          				$reponse.='<h2><i class="icon-edit"></i> Informations sur la vente</h2>';
          			$reponse.='</div>';
          			$reponse.='<div class="box-content">';
          				$reponse.='<div class="control-group">';
          					$reponse.='<label class="control-label" for="selectError">Client</label>';
          					$reponse.='<div class="controls">';
          						$reponse.='<select name="selectClient" id="selectClient">';
          						$reponse.='<option value="-1">Selectionnez votre client</option>';
     
          						try 
          						{
          						  	$selectClients = $connection->query("SELECT * FROM ENRIEN_CLIENTS ");	
          						  	$selectClients->setFetchMode(PDO::FETCH_OBJ);
     
          						  	while( $enregClients = $selectClients->fetch() )
          						  	{	
          							   if ($enregClients->CLIENT_ID == $client)
          							   {
          							     $reponse.='<option value="'.$enregClients->CLIENT_ID.'" selected="selected">'.$enregClients->CLIENT_NOM.' '.$enregClients->CLIENT_PRE.'</option>';
          							   }
          							   else 
          							   {
          							     $reponse.='<option value="'.$enregClients->CLIENT_ID.'">'.$enregClients->CLIENT_NOM.' '.$enregClients->CLIENT_PRE.'</option>';
          							   }
          						  	}
     
          						} 
          						catch(Exeption $e) {
          							die('Erreur lors du SELECT liste ks_clients'.$e->getMessage().'<br>');
          						}
          						// On ferme le curseur
          						$selectClients->closeCursor();
     
          						$reponse.='</select>';
          					$reponse.='</div>';
          				$reponse.='</div>';					
     
          				$reponse.='<br>';
     
          				//$reponse.='<div class="control-group">';
          				//  	$reponse.='<label class="control-label" for="textarea2">Adresse</label>';
          				//  	$reponse.='<div class="controls">';
          				//		$reponse.='<textarea class="cleditor" readonly="readonly id="adresse" name="adresse" rows="3"></textarea>';
          				//  	$reponse.='</div>';
          			  	//$reponse.='</div>';
     
          		      	//$reponse.='<div class="control-group">';
          				//	$reponse.='<label class="control-label" for="focusedInput">Code postal</label>';
          				//	$reponse.='<div class="controls">';
          				// 		$reponse.='<input class="input-xlarge focused" readonly="readonly id="cp" name="cp" type="text" value="">';
          				//	$reponse.='</div>';
          			  	//$reponse.='</div>';
     
          			  	//$reponse.='<div class="control-group">';
          				//	$reponse.='<label class="control-label" for="focusedInput">Ville</label>';
          				//	$reponse.='<div class="controls">';
          				// 		$reponse.='<input class="input-xlarge focused" readonly="readonly id="ville" name="ville" type="text" value="">';
          				//	$reponse.='</div>';
          			  	//$reponse.='</div>';
     
          				$reponse.='<div class="control-group">';
          					$reponse.='<label class="control-label" for="focusedInput">Date de vente</label>';
          					$reponse.='<div class="controls">';
          				 		$reponse.='<input class="input-xlarge focused" id="datepicker" name="dateVente" value="'.$enregVente->TYPE_DATE_REALISATION.'">';
          					$reponse.='</div>';
          			  	$reponse.='</div>';
          			$reponse.='</div>';
          	   	$reponse.='</div>';
          	$reponse.='</div>';
     
          	$reponse.='<div class="row-fluid sortable">';	
    				$reponse.='<div class="box span12">';
    					$reponse.='<div class="box-header well" data-original-title>';
    						$reponse.='<h2><i class="icon-user"></i>Produits</h2>';
    						$reponse.='<div class="box-icon">';
    							//$reponse.='<button class="btn btn-setting btn-round" type="button" id="add_line_produit"><i class="icon-plus-sign"></i></button>';
    						$reponse.='</div>';
    					$reponse.='</div>';
     
    					$reponse.='<div class="box-content">';
    						$reponse.='<table class="table table-striped table-bordered bootstrap-datatable datatable" id="tabProduits">';
    			  				$reponse.='<thead>';
    							  $reponse.='<tr>';
    								  $reponse.='<th>Nom produit</th>';
      						  	$reponse.='<th>Quantité</th>';  
      						  	$reponse.='<th>Prix unitaire</th>'; 
      						  	$reponse.='<th>Action</th> ';
    							  $reponse.='</tr>';
    			  				$reponse.='</thead>'; 
     
    				  			$reponse.='<tbody>';
     
    				  			//Parcours de la table Acheter
    				  			foreach($tabProduits['id'] as $cle=>$value)
    			          {
    			            $idProduit = $tabProduits['id'][$cle];
    			            $qteProduit = $tabProduits['qte'][$cle];
    			            $puProduit = $tabProduits['pu'][$cle];
     
    			            $montantTotalProduit = $montantTotalProduit + round($qteProduit * $puProduit,2);
     
    			            $reponse.='<tr id="'.$idProduit.'">';
    			            $reponse.='<td><input type="hidden" name="produit_id[]" value="'.$idProduit.'">';
     
    			            $reponse.= '<select class="pr_select" name="selectProduit[]" id="selectProduit" >';
              				$reponse.= '<option value="-1">Selectionnez votre produit</option>';
              				try 
        							{
        								// On envoie la requète
        							  	$selectProduits = $connection->query("SELECT * FROM ENRIEN_PRODUITS");							
        							  	// On indique que nous utiliserons les résultats en tant qu'objet
        							  	$selectProduits->setFetchMode(PDO::FETCH_OBJ);
        							  	// Nous traitons les résultats en boucle
        							  	while( $enregProduit = $selectProduits->fetch() )
        							  	{	
        							  	  if ($enregProduit->PDT_ID == $idProduit)
          							    {
          							     $reponse.='<option value="'.$enregProduit->PDT_ID.'" selected="selected">'.$enregProduit->PDT_NOM.'</option>';
          							    }
          							    else 
          							    {
          							     $reponse.='<option value="'.$enregProduit->PDT_ID.'">'.$enregProduit->PDT_NOM.'</option>';
          							    }    								  	
        							  	}
     
        							} 
        							catch(Exeption $e) {
        								die('Erreur lors du SELECT liste ks_produits'.$e->getMessage().'<br>');
        							}
     
              				$selectProduits->closeCursor();
     
        							$reponse.= '</select></td>';
     
        							$reponse.='<td><input class="pr_qte" name="produit_qte['.$ligneProduit.']" id="produit_qte_'.$ligneProduit.'" value="'.$qteProduit.'" /></td>';
                  		$reponse.='<td><input class="pr_pu" name="produit_pu['.$ligneProduit.']" id="produit_pu_'.$ligneProduit.'" value="'.$puProduit.'" /></td>'; 
                  		$reponse.='<td><button class="btn btn-danger" id="bt_suppr_ajout"><i class="icon-trash icon-white"></i></button></td>';
                  		$reponse.='</tr>';
     
                  		$ligneProduit++;
    			          }
     
    				  			$reponse.='</tbody>';
    			  			$reponse.='</table>';            
    					$reponse.='</div>';
    				$reponse.='</div>';
    			$reponse.='</div>';
     
    			$reponse.='<div class="row-fluid sortable">';	
    				$reponse.='<div class="box span12">';
    					$reponse.='<div class="box-header well" data-original-title>';
    						$reponse.='<h2><i class="icon-user"></i>Taxes</h2>';
    						$reponse.='<div class="box-icon">';
    							//$reponse.='<button class="btn btn-setting btn-round" type="button" id="add_line_produit"><i class="icon-plus-sign"></i></button>';
    						$reponse.='</div>';
    					$reponse.='</div>';
     
    					$reponse.='<div class="box-content">';
    						$reponse.='<table class="table table-striped table-bordered bootstrap-datatable datatable" id="tabTaxes">';
    			  				$reponse.='<thead>';
    							  $reponse.='<tr>';
    								  $reponse.='<th>Nom taxe</th>';
      						  	$reponse.='<th>Montant taxe</th> ';
      						  	$reponse.='<th>Action</th> ';
    							  $reponse.='</tr>';
    			  				$reponse.='</thead>'; 
     
    				  			$reponse.='<tbody>';
     
    				  			//Parcours de la table Acheter
    				  			foreach($tabTaxes['id'] as $cle=>$value)
    			          {
    			            $idTaxes = $tabTaxes['id'][$cle];
    			            $montantTaxes = 0;
     
    			            $reponse.='<tr id="'.$idTaxes.'">';
     
          						$reponse.='<td><input type="hidden" name="taxe_id[]" value="'.$idTaxes.'">';
          						$reponse.='<select id="selectTaxe" name="selectTaxe[]">';
          						$reponse.='<option value="-1">Selectionnez une taxe</option>';
     
              				try 
              				{
        						  	$selectTaxes = $connection->query("SELECT * FROM ENRIEN_TAXES ");			
        						  	$selectTaxes->setFetchMode(PDO::FETCH_OBJ);
     
        						  	while( $enregTaxes = $selectTaxes->fetch() )
        						  	{	
              					 if ($enregProduit->PDT_ID == $idProduit)
          							 {
          							   $reponse.='<option value="'.$enregTaxes->TAXES_ID.'" selected="selected">'.$enregTaxes->TAXES_NOM.'</option>';
          							 }
          							 else 
          							 {
          							   $reponse.='<option value="'.$enregTaxes->TAXES_ID.'">'.$enregTaxes->TAXES_NOM.'</option>';
          							 }
              				  }
              				} 
              				catch(Exeption $e) {
              					die('Erreur lors du SELECT liste ks_taxes'.$e->getMessage().'<br>');
              				}
     
          						$selectTaxes->closeCursor();
     
          						$reponse.='</select></td>';
     
          						try 
    		                	{
    		                	   $selectCompoTaxe = $connection->query("SELECT * FROM ENRIEN_TAXES, ENRIEN_COMPO_TAXES WHERE ENRIEN_COMPO_TAXES.TAXES_ID=".$idTaxe." ORDER BY ENRIEN_TAXES.TAXES_NOM");
    		                	   $selectCompoTaxe->setFetchMode(PDO::FETCH_OBJ);
     
    		                	 	 while( $enregCompoTaxe = $selectCompoTaxe->fetch() )
    		                	   {	
    		                		    if ($enregCompoTaxe->COMPO_TAXES_FRAIS_FIXE == 1) //Frais fixe
    		                		    {
    		                		    //On cumul les frais fixe
    		                		    $fraisFixe = $fraisFixe + $enregCompoTaxe->COMPO_TAXES_MNT_FRAIS;
    		                		    }
    		                		    elseif ($enregCompoTaxe->COMPO_TAXES_TAUX == 1) //Taux
    		                		    {
    		                		    //Dans le cas de vente par le biais d'Ebay:
    		                		    //Ebay prend 9% par trasaction sur le montant de vente
    		                		    //Paypal prend 3.4% + 0.25€ par trasaction sur le montant de vente.
    		                		    $montant = $montant + round($montantTotalProduit*$enregCompoTaxe->COMPO_TAXES_POUR_TAUX/100,2);
    		                		    }
    		                	   }
     
    		                	   $montantTaxes = $montant + $fraisFixe;
    		                	} 
    		                	catch ( Exception $e ) 
    		                	{
    		                	  	//$reponse= "Une erreur est survenue lors de la récupération des produits";
    		                	}
     
                    	$selectCompoTaxe->closeCursor();
     
                  		$reponse.='<td><input class="input-xlarge focused" id="taxe_montant" name="taxe_montant[]" type="text" value="'.$montantTaxes.'" disabled="true"></td>';
     
              			  $reponse.='<td><button class="btn btn-danger" id="bt_suppr_ajout"><i class="icon-trash icon-white"></i></button></td>' ;
     
              			  $reponse.='</tr>';
     
                  		$ligneTaxes++;
    			          }
     
    				  			$reponse.='</tbody>';
    			  			$reponse.='</table>';            
    					$reponse.='</div>';
    				$reponse.='</div>';
    			$reponse.='</div>';
     
    			$reponse.='<div class="control-group">';
        		$reponse.='<label class="control-label" for="focusedInput">Total produits HT</label>';
        		$reponse.='<div class="controls">';
        	  		$reponse.='<input class="input-xlarge focused" id="total_gal" name="total_gal" type="text" value="'.$montantTotalProduit.'">';
        		$reponse.='</div>';
          $reponse.='</div>';
     
        	$reponse.='<div class="control-group">';
        		$reponse.='<label class="control-label" for="focusedInput">Frais de port</label>';
        		$reponse.='<div class="controls">';
        	  		$reponse.='<input class="input-xlarge focused" id="input_fdp" name="input_fdp" type="text" value="'.$enregVente->TYPE_FDP.'">';
        		$reponse.='</div>';
          $reponse.='</div>';
     
     
        	//$reponse.='<div class="control-group">';
        	//	$reponse.='<label class="control-label" for="focusedInput">Total des taxes</label>';
        	//	$reponse.='<div class="controls">';
        	// 		$reponse.='<input class="input-xlarge focused" readonly="readonly id="input_tot_taxes" name="input_tot_taxes" type="text" value="">';
        	//	$reponse.='</div>';
          //$reponse.='</div>';
     
          //$reponse.='<div class="control-group">';
        	//	$reponse.='<label class="control-label" for="focusedInput">Bénéfice</label>';
        	//	$reponse.='<div class="controls">';
        	//  		$reponse.='<input class="input-xlarge focused" readonly="readonly id="input_benef" name="input_benef" type="text" value="">';
        	//	$reponse.='</div>';
          //$reponse.='</div>';
     
        	//$reponse.='<div class="form-actions">';
      		//$reponse.='<button type="submit" class="btn btn-primary" id="Sauvegarde">Sauvegarder</button>';
      		//$reponse.='<button class="btn popup-btn-close">Annuler</button>';
        	//$reponse.='</div>';
    			}
    	} 
    	catch ( Exception $e ) 
    	{
    	  	$reponse= "Une erreur est survenue lors de la récupération des ventes <br>";
    	}
     
    	$selectVente->closeCursor();
     
     
    }
    else 
    {
    	echo '<input type="hidden" name="id_popup" value="',$idPopup,'">'; 
     
    	$reponse='<div class="row-fluid sortable">';
    		$reponse.='<div class="box span12">';
    			$reponse.='<div class="box-header well" data-original-title>';
    				$reponse.='<h2><i class="icon-edit"></i> Informations sur la vente</h2>';
    			$reponse.='</div>';
    			$reponse.='<div class="box-content">';
    				$reponse.='<div class="control-group">';
    					$reponse.='<label class="control-label" for="selectError">Client</label>';
    					$reponse.='<div class="controls">';
    						$reponse.='<select name="selectClient" id="selectClient">';
    						$reponse.='<option value="-1">Selectionnez votre client</option>';
     
    						try 
    						{
    						  	$selectClients = $connection->query("SELECT * FROM ENRIEN_CLIENTS ");	
    						  	$selectClients->setFetchMode(PDO::FETCH_OBJ);
     
    						  	while( $clients = $selectClients->fetch() )
    						  	{	
    							 // Affichage des enregistrements
    							 //if ($enregistrement->PDT_ID == $produits->PDT_ID)
    							 //{
    							 //	echo '<option value="'.$produits->PDT_ID.'" selected="selected">'.$produits->PDT_NOM.'</option>';
    							 //}
    							 //else 
    							 //{
    								$reponse.='<option value="'.$clients->CLIENT_ID.'">'.$clients->CLIENT_NOM.' '.$clients->CLIENT_PRE.'</option>';
    							 //}
    						  	}
     
    						} 
    						catch(Exeption $e) {
    							die('Erreur lors du SELECT liste ks_produits'.$e->getMessage());
    						}
    						// On ferme le curseur
    						$selectClients->closeCursor();
     
    						$reponse.='</select>';
    					$reponse.='</div>';
    				$reponse.='</div>';					
     
    				$reponse.='<br>';
     
    				//$reponse.='<div class="control-group">';
    				//  	$reponse.='<label class="control-label" for="textarea2">Adresse</label>';
    				//  	$reponse.='<div class="controls">';
    				//		$reponse.='<textarea class="cleditor" readonly="readonly id="adresse" name="adresse" rows="3"></textarea>';
    				//  	$reponse.='</div>';
    			  	//$reponse.='</div>';
     
    		      	//$reponse.='<div class="control-group">';
    				//	$reponse.='<label class="control-label" for="focusedInput">Code postal</label>';
    				//	$reponse.='<div class="controls">';
    				// 		$reponse.='<input class="input-xlarge focused" readonly="readonly id="cp" name="cp" type="text" value="">';
    				//	$reponse.='</div>';
    			  	//$reponse.='</div>';
     
    			  	//$reponse.='<div class="control-group">';
    				//	$reponse.='<label class="control-label" for="focusedInput">Ville</label>';
    				//	$reponse.='<div class="controls">';
    				// 		$reponse.='<input class="input-xlarge focused" readonly="readonly id="ville" name="ville" type="text" value="">';
    				//	$reponse.='</div>';
    			  	//$reponse.='</div>';
     
    				$reponse.='<div class="control-group">';
    					$reponse.='<label class="control-label" for="focusedInput">Date de vente</label>';
    					$reponse.='<div class="controls">';
    				 		$reponse.='<input class="input-xlarge focused" id="datepicker" name="dateVente">';
    					$reponse.='</div>';
    			  	$reponse.='</div>';
    			$reponse.='</div>';
    	   	$reponse.='</div>';
    	$reponse.='</div>';
     
    	$reponse.='<div class="row-fluid sortable">';	
    		$reponse.='<div class="box span12">';
    			$reponse.='<div class="box-header well" data-original-title>';
    				$reponse.='<h2><i class="icon-user"></i> Produits</h2>';
    				$reponse.='<div class="box-icon">';
    					$reponse.='<button class="btn btn-setting btn-round" type="button" id="add_line_produit"><i class="icon-plus-sign"></i></button>';
    				$reponse.='</div>';
    			$reponse.='</div>';
     
    			$reponse.='<div class="box-content">';
    				$reponse.='<table class="table table-striped table-bordered bootstrap-datatable datatable" id="tabProduits">';
    	  				$reponse.='<tbody id="tbody_produits">';
    				  		$reponse.='<tr id="0">';
    						  	$reponse.='<th>Nom produit</th>';
    						  	$reponse.='<th>Quantité</th>';  
    						  	$reponse.='<th>Prix unitaire</th>'; 
    						  	$reponse.='<th>Action</th> ';                                    
    				  		$reponse.='</tr>';	  
    		  			$reponse.='</tbody>';
    	  			$reponse.='</table>';            
    			$reponse.='</div>';	  		
    		$reponse.='</div>';
    	$reponse.='</div>';
     
    	$reponse.='<div class="row-fluid sortable">';	
    		$reponse.='<div class="box span12">';
    			$reponse.='<div class="box-header well" data-original-title>';
    				$reponse.='<h2><i class="icon-user"></i> Taxes</h2>';
    				$reponse.='<div class="box-icon">';
    					$reponse.='<button class="btn btn-setting btn-round" type="button" id="add_line_taxe"><i class="icon-plus-sign"></i></button>';
    				$reponse.='</div>';
    			$reponse.='</div>';
     
    			$reponse.='<div class="box-content">';
    				$reponse.='<table class="table table-striped table-bordered bootstrap-datatable datatable" id="tabTaxes">';
    	  				$reponse.='<thead>';
    					  	$reponse.='<tr>';
    						  	$reponse.='<th>Nom taxe</th>';
    						  	$reponse.='<th>Montant taxe</th> ';
    						  	$reponse.='<th>Action</th> ';                                    
    					  	$reponse.='</tr>';
    				  	$reponse.='</thead>'; 
     
    		  			$reponse.='<tbody>';
     
    		  			$reponse.='</tbody>';
    	  			$reponse.='</table>';            
    			$reponse.='</div>';
    		$reponse.='</div>';
    	$reponse.='</div>';
     
    	$reponse.='<div class="control-group">';
    		$reponse.='<label class="control-label" for="focusedInput">Total produits HT</label>';
    		$reponse.='<div class="controls">';
    	  		$reponse.='<input class="input-xlarge focused" id="total_gal" name="total_gal" disabled="true" type="text" value="">';
    		$reponse.='</div>';
      	$reponse.='</div>';
     
    	$reponse.='<div class="control-group">';
    		$reponse.='<label class="control-label" for="focusedInput">Frais de port</label>';
    		$reponse.='<div class="controls">';
    	  		$reponse.='<input class="input-xlarge focused" id="input_fdp" name="input_fdp" type="text" value="">';
    		$reponse.='</div>';
      	$reponse.='</div>';
     
     
    	//$reponse.='<div class="control-group">';
    	//	$reponse.='<label class="control-label" for="focusedInput">Total des taxes</label>';
    	//	$reponse.='<div class="controls">';
    	// 		$reponse.='<input class="input-xlarge focused" readonly="readonly id="input_tot_taxes" name="input_tot_taxes" type="text" value="">';
    	//	$reponse.='</div>';
      	//$reponse.='</div>';
     
      	//$reponse.='<div class="control-group">';
    	//	$reponse.='<label class="control-label" for="focusedInput">Bénéfice</label>';
    	//	$reponse.='<div class="controls">';
    	//  		$reponse.='<input class="input-xlarge focused" readonly="readonly id="input_benef" name="input_benef" type="text" value="">';
    	//	$reponse.='</div>';
      	//$reponse.='</div>';
     
      	$reponse.='<div class="form-actions">';
    		$reponse.='<button type="submit" class="btn btn-primary" id="Sauvegarde">Sauvegarder</button>';
    		//$reponse.='<button type="button" class="btn">Annuler</button>';
      	$reponse.='</div>';
    }		
     
    echo $reponse;
     
     
    ?>


    Dites moi s'il vous faut autre chose
    Un énorme merci pour votre aide !!!

  13. #13
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Oula ! tu me fais bosser là parce que les tables sont vides et je dois les remplir manuellement.
    Tu ne peux pas Exporter la base avec les données des tables?

  14. #14
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    Le formulaire de saisie de vente ne fonctionne pas... Difficile de te donner des données

  15. #15
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Il n y pas de rapport entre le formulaire et l'exportation des tables.

    Sur phpmyadmin, tu sélectionnes la table que tu veux exporter, puis tu cliques sur l'onglet Exporter, dans la zone de texte "Nouveau modèle" tu mets un nom de la table (n'importe lequel) puis appuies sur Exporter en bas.

    Un fichier alors est téléchargé dans le navigateur, tu l'ouvres et tu sélectionnes seulement les lignes insert into.... et tu les colles ici.

  16. #16
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    Je ne suis pas sûr d'avoir bien compris mais voici normalement toutes les instructions insert des tables (Si quelque chose, n'hésite pas) :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    INSERT INTO `enrien_clients` (`CLIENT_ID`, `CLIENT_CODE`, `CLIENT_NOM`, `CLIENT_PRE`, `CLIENT_ADRESSE`, `CLIENT_CP`, `CLIENT_VILLE`, `CLIENT_PAYS`, `CLIENT_TEL`, `CLIENT_PORTABLE`, `CLIENT_MAIL`) VALUES
    (1, 'CLI-00001', 'WER', 'STEPHANE', '1 RUE ', '08300', ' ', 'France', '', '0750869859', ''),
    (2, 'CLI-00002', 'LAUE', 'BERTRAND', '1 ROUTE ', '76520', ' ', 'France', '', '0628760232', ''),
    (3, 'CLI-00003', 'AUR', 'ALEXIS', '20 RUE S', '86530', ' ', 'France', '', '0674456672', ''),
    (4, 'CLI-00004', 'TIBER', 'RAPHAEL', '11 TRAVERSEE ', '60004', ' ', 'France', '', '0688597698', ''),
    (5, 'CLI-00005', 'RCI', 'KAMIL', '47 RUE , 4EME ETAGE', '55620', ' ', 'France', '', '0674357318', ''),
    (6, 'CLI-00006', 'LIER', 'LAURENT', '3 BOULEVARD ', '14009', ' ', 'France', '', '', '');
     
    INSERT INTO `enrien_compo_taxes` (`COMPO_TAXES_ID`, `TAXES_ID`, `COMPO_TAXES_CODE`, `COMPO_TAXES_FRAIS_FIXE`, `COMPO_TAXES_MNT_FRAIS`, `COMPO_TAXES_TAUX`, `COMPO_TAXES_POUR_TAUX`) VALUES
    (1, 3, 'TAX001', 0, '0.000', 1, '4.00'),
    (2, 4, 'TAX003', 1, '0.530', 0, '0.00'),
    (3, 4, 'TAX002', 0, '0.000', 1, '3.70');
     
    INSERT INTO `enrien_fournisseurs` (`FRS_ID`, `FRS_CODE`, `FRS_NOM`, `FRS_ACTIF`, `FRS_MAIL`, `FRS_ADRESSE`, `FRS_CP`, `FRS_VILLE`, `FRS_PAYS`, `FRS_TEL`, `FRS_SITE`) VALUES
    (1, 'FRS-00001', 'MACHIN', 1, '', '', '', '', 'France', '', ''),
    (2, 'FRS-00002', 'Truc', 1, '', '', '', '', 'France', '', '');
     
     
    INSERT INTO `enrien_produits` (`PDT_ID`, `PDT_CODE`, `PDT_ACTIF`, `PDT_DESCR`, `PDT_PRIX_VENTE`, `PDT_PRIX_ACHAT`, `PDT_UTI_CREATION`, `PDT_DATE_CREATION`, `PDT_UTI_MODIF`, `PDT_DATE_MODIF`, `PDT_STOCK`, `PDT_NOM`) VALUES
    (1, 'PDT-00001', '1', ' ', '2.5900', '0.0000', 'Seb', '2019-07-21', '', NULL, 0, ' '),
    (2, 'PDT-00002', '1', 'C ', '2.5900', '0.0000', 'Seb', '2019-07-21', '', NULL, 0, ' '),
    (3, 'PDT-00003', '1', ' e', '2.5900', '0.0000', 'Seb', '2019-07-21', '', NULL, 0, ' '),
    (4, 'PDT-00004', '1', ' ', '2.5900', '0.0000', 'Seb', '2019-07-21', '', NULL, 0, ' '),
    (5, 'PDT-00005', '1', 'C ', '2.5900', '0.0000', 'Seb', '2019-07-21', '', NULL, 0, ' '),
    (6, 'PDT-00006', '1', ' ', '3.9900', '0.0000', 'Seb', '2019-07-21', '', NULL, 0, ' '),
    (7, 'PDT-00007', '1', ' ', '3.9900', '0.0000', 'Seb', '2019-07-21', '', NULL, 0, ' '),
    (8, 'PDT-00008', '1', ' ', '3.9900', '0.0000', 'Seb', '2019-07-21', '', NULL, 0, ' s'),
    (9, 'PDT-00009', '1', ' ', '3.9900', '0.0000', 'Seb', '2019-07-21', '', NULL, 0, ' '),
    (10, 'PDT-00010', '1', ' ', '3.9900', '0.0000', 'Seb', '2019-07-21', '', NULL, 0, ' ');
     
    INSERT INTO `enrien_taxes` (`TAXES_ID`, `TAXES_NOM`, `TAXES_DESCR`, `TAXES_ACTIF`, `TAXES_UTI_CREATION`, `TAXES_DATE_CREATION`, `TAXES_UTI_MODIF`, `TAXES_DATE_MODIF`) VALUES
    (3, 'Taxes 1', 'Taxes de vente 1', 1, 's', '2019-07-20', '', NULL),
    (4, 'Taxes 2', 'Taxes de vente 2', 1, 's', '2019-07-20', '', NULL);
     
    INSERT INTO `acheter` (`CLIENT_ID`, `TYPE_ID`, `TYPE_ACTION`, `PDT_ID`, `ACHAT_NB_PDT`, `ACHAT_PRIX_UNITAIRE`) VALUES ('', '', '', '', NULL, NULL);
     
    INSERT INTO `enrien_ventes_ou_achats` (`TYPE_ID`, `TYPE_ACTION`, `TAXES_ID`, `TYPE_CODE`, `TYPE_DATE_REALISATION`, `TYPE_DESCR`, `TYPE_ACTION_PAR`, `TYPE_VENDU_LE`, `TYPE_UTI_CREATION`, `TYPE_DATE_CREATION`, `TYPE_UTI_MODIF`, `TYPE_DATE_MODIF`) VALUES (NULL, '', NULL, '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
     
    INSERT INTO `vendre` (`TYPE_ID`, `TYPE_ACTION`, `FRS_ID`, `PDT_ID`, `VENTE_NB_PDT`, `VENTE_PRIX_UNITAIRE`) VALUES ('', '', '', '', NULL, NULL);

  17. #17
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Salut,

    Je dirais que ton code est une vraie catastrophe, surtout quand tu mets des scripts et link dans un fichier php qui est appelé via Ajax !

    Lorsqu'on lance une requête ajax vers un fichier php, il faut que ce dernier ne contient QUE DU CODE PHP, pas de <script> ni <link> ni rien du tout.

    Bref, j'ai trouvé plusieurs erreurs que j'ai rectifié, et le datepicker maintenant s'affiche, MAIS il faut absolument que tu optimises ton code !

    Je t'envois le dossier complet, et si tu n'as pas compris un truc tu me le demandes, et n'oublis pas de modifier le nom de la base de donnée "test" dans le fichier ks-connect.php en mettant le bon nom de la tienne.

    Pièce jointe 493102

    Pour que l'exemple fonctionne, il faut insérer des valeurs dans les champs (CLIENT_ID,TYPE_ID,TYPE_ACTION) non NULL dans les tables : acheter et enrien_ventes_ou_achats.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO `acheter` (`CLIENT_ID`, `TYPE_ID`, `TYPE_ACTION`, `PDT_ID`, `ACHAT_NB_PDT`, `ACHAT_PRIX_UNITAIRE`) VALUES ('1', '2', 'VEN', '0', '10', '100.00');
     
    INSERT INTO `enrien_ventes_ou_achats` (`TYPE_ID`, `TYPE_ACTION`, `TAXES_ID`, `TYPE_CODE`, `TYPE_DATE_REALISATION`, `TYPE_DESCR`, `TYPE_ACTION_PAR`, `TYPE_VENDU_LE`, `TYPE_UTI_CREATION`, `TYPE_DATE_CREATION`, `TYPE_UTI_MODIF`, `TYPE_DATE_MODIF`) VALUES ('2', 'VEN', NULL, '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

  18. #18
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    Hello Toufik !

    Je n'ai pas pu te donner de nouvelles plus tôt car pas eu le temps de rebosser sur le sujet de mon côté.
    Un grand merci pour ton aide. Je t'avoue ne pas bien comprendre ce qui fait que cela fonctionne à présent...
    J'avoue que mon code est un sacré bordel... Je tâte, tente, essaie, fait, défait ... Ce qui donne des trucs pas très beau. Je tâcherai de l'améliorer dans le futur

    Si tu peux m'expliquer ce que tu as changer pour le calendrier hors mis déplacer la gestion JS d'un script à un autre stp.
    Car outre le fait que j'aime bien comprendre, j'ai toujours le problème pour ajouter une ligne à mon tableau de ma popup dynamiquement


    SUPER EDIT !!
    JE CROIS AVOIR TROUVE
    par contre, je n'arrive pas à récupérer les valeurs de mon formulaire... Bizarre !

  19. #19
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Salut,

    Dans le code tu as lancé une requête ajax vers repPhpAjax_vente.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    $.ajax({
          'type': 'POST',
          'url' : 'repPhpAjax_vente.php',
          'dataType': 'html',         
          'data': { 'idPopup' : id } 
          })
          .done(function( data) {
              //ecriture réponse dans le popup
              //console.log("data :",data);
    	  $("#reponse_ajax").html(data);
    	  $('#datepicker').datepicker();                   
    	})
            .fail(function( xhr) {
    		alert('c\'est ballot! :\n' + xhr.statusText);
    	});
    et le fichier php contenait du html (<script> et <link>) + d'autres erreurs que j'ai commenté et rectifié dans le fichier que je t'ai envoyé, Ce qui a provoqué une erreur jQuery et un blocage de ton script js à la ligne 11 du code au-dessus.

    Pour mieux voir les erreurs, tu ouvres l'outil de développement et tu cliques sur l'onglet "Network", ça t'affiche les détails de la requête traitée avec le nom de fichier utilisé dans l'url d'ajax. Tu cliques dessus et regarde ce qui est écrit dans les onglets du volet à droite.

    Concernant les données du formulaire, à quel moment tu les récupères? lors d'un clic sur un bouton ? si oui lequel ?

  20. #20
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    Je comprends mieux pourquoi cette page ne fonctionnait pas alors que sur d'autres, je n'ai pas de soucis. C'était dû à l'erreur jQuerry donc...

    En ce qui concerne le formulaire, le bouton sauvegarder de mon popup est de type submit.

Discussions similaires

  1. Encodage tableau php->javascript pour interaction de menus déroulants
    Par monsterman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/03/2014, 11h55
  2. erreur javascript pour modifier select avec tableau PHP
    Par omdafer dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 24/03/2008, 12h27
  3. [Javascript] Checkbox et cache-cache tableau
    Par R1pToR dans le forum Struts 1
    Réponses: 13
    Dernier message: 05/07/2007, 13h31
  4. manipulation du code en javascript d'un calendrier
    Par leclone dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 24/01/2007, 12h04
  5. [Javascript][php]afficher/cacher lignes tableau
    Par bouba83 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/12/2006, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo