- Page principale
- Classes
- Fichiers
- Pages associées

# /home/eric/Bureau/MedinTux-V-2.00/Plug/Compta2/compta/ui/mvts_add.ui.h

    00001 /****************************************************************************
    00002 ** ui.h extension file, included from the uic-generated form implementation.
    00003 **
    00004 ** If you want to add, delete, or rename functions or slots, use
    00005 ** Qt Designer to update this file, preserving your code.
    00006 **
    00007 ** You should not define a constructor or destructor in this file.
    00008 ** Instead, write your code in functions called init() and destroy().
    00009 ** These will automatically be called by the form's constructor and
    00010 ** destructor.
    00011 *****************************************************************************/
    00012
    00013
    00014
    00015 void Mvts_Add::init()
    00016 { m_pComptaMoteurBase = 0;
    00017   m_pUtilisateurActuel = 0;
    00018   m_pMvts_Sauvegarde = 0;
    00019   paramOK = FALSE;
    00020   forUpdate = FALSE;
    00021   seeOnly = FALSE;
    00022   categorieSelected = FALSE;
    00023   mvt = new Mouvements();
    00024   if (!mvt) return ;
    00025   m_Mvts_Liste_Dispo = new MVTS_LISTE;
    00026   if (!m_Mvts_Liste_Dispo) return ;
    00027   m_Mvts_Liste_Dispo->clear();
    00028   m_Comptes_Liste = new COMPTES_LISTE;
    00029   if (!m_Comptes_Liste) return ;
    00030   m_Comptes_Liste->clear();
    00031
    00032 }
    00033
    00034 void Mvts_Add::destroy()
    00035 { if (m_Verbose) qWarning("Mvts_Add::Destruct");
    00036   if (mvt) delete mvt;
    00037   if (m_Mvts_Liste_Dispo) delete m_Mvts_Liste_Dispo;
    00038   if (m_Comptes_Liste) delete m_Comptes_Liste;
    00039   if (m_Verbose) qWarning("Mvts_Add::Destruct Fin");
    00040 }
    00041
    00042
    00046 void Mvts_Add::setParams(       Utilisateurs*   curUsr,
    00047                                 const char*     date,                   // format "dd-MM-yyyy"
    00048                                 ComptaMoteurBase* pMoteurBase,
    00049                                 bool             verbose )
    00050 { m_pComptaMoteurBase = pMoteurBase;
    00051   m_pUtilisateurActuel = curUsr;
    00052   m_Verbose = verbose;
    00053   setDateObserv(date);
    00054   m_Mvts_Liste_Dispo->clear();
    00055   if (!m_pComptaMoteurBase->getMvtsDispo(*m_Mvts_Liste_Dispo))
    00056    QMessageBox::information(this, TR("Erreur de base de données"), m_pComptaMoteurBase->m_messageErreur, TR("Ok"),"","",1,0);
    00057   if (!m_pComptaMoteurBase->getComptes(*m_Comptes_Liste))
    00058    QMessageBox::information(this, TR("Erreur de base de données"), m_pComptaMoteurBase->m_messageErreur, TR("Ok"),"","",1,0);
    00059   int defautCpt = 0;
    00060   int i = 0;
    00061   for (COMPTES_LISTE::iterator it=m_Comptes_Liste->begin(); it!=m_Comptes_Liste->end();++it)
    00062    { listeComptes->insertItem( (*it).getLibelle() );
    00063      if ((*it).isDefaut()) defautCpt=i;
    00064      i++;
    00065    }
    00066   listeComptes->setCurrentItem(defautCpt);
    00067   paramOK = TRUE;
    00068 }
    00069
    00070
    00071
    00072 void Mvts_Add::choixCategorie_clicked()
    00073 { QDialog* dlg = new QDialog(this);
    00074   QListView* treeView = new QListView(dlg);
    00075   treeView->addColumn( TR("Libellé") );
    00076   treeView->addColumn( TR("Id") );
    00077   QListViewItem*  recettes = new QListViewItem(treeView, TR("Recettes") );
    00078   QListViewItem*  depenses = new QListViewItem(treeView, TR("Dépenses"));
    00079
    00080   QString tmp = "";
    00081   if ((m_Mvts_Liste_Dispo->count() == 0) || (!m_Mvts_Liste_Dispo))
    00082    { //treeView->setNumRows( 1 );
    00083    }
    00084   else
    00085    { MVTS_LISTE::iterator it;
    00086
    00087      // Prépare l'affichage du TreeView
    00088      for (it = m_Mvts_Liste_Dispo->begin(); it !=  m_Mvts_Liste_Dispo->end(); ++it )
    00089       { // Prépare l'affichage de le treeView
    00090         int id = (*it).getId();
    00091         if (id < 10) tmp = "0" + QString::number(id);
    00092         else tmp = QString::number(id);
    00093         if ((*it).getType() == 0)  // Recettes
    00094         { // Test si child ou parent
    00095            if ( (*it).getIdParent() == 0)
    00096            {  new QListViewItem(recettes, (*it).getNom(),  tmp );
    00097            }
    00098            else
    00099            {    // Récupère le nom du parent pour le retrouver dans le treeView
    00100                 QString nom_parent = (*m_Mvts_Liste_Dispo->at( (*it).getIdParent() - 1 )).getNom();
    00101                 QListViewItem* parent = treeView->findItem(nom_parent, 0);
    00102                 if (parent) new QListViewItem( parent , (*it).getNom() ,  tmp );
    00103                 else new QListViewItem( recettes , (*it).getNom() ,  tmp );
    00104            }
    00105          } // Fin type = recettes
    00106         else   // Dépenses
    00107          { // Test si child ou parent
    00108            if ( (*it).getIdParent() == 0)
    00109            {  new QListViewItem(depenses, (*it).getNom() ,  tmp );
    00110            }
    00111            else
    00112            {    // Récupère le nom du parent pour le retrouver dans le treeView
    00113                 QString nom_parent = (*m_Mvts_Liste_Dispo->at( (*it).getIdParent() - 1 )).getNom();
    00114                 QListViewItem* parent = treeView->findItem(nom_parent, 0);
    00115                 if (parent) new QListViewItem( parent , (*it).getNom() ,  tmp );
    00116                 else new QListViewItem( depenses , (*it).getNom() ,  tmp );
    00117            }
    00118          } // Fin else type == 0
    00119       } // Fin for
    00120    treeView->insertItem(recettes) ;
    00121    treeView->insertItem(depenses);
    00122    treeView->setSorting(1,TRUE);
    00123    }
    00124
    00125   // Ajoute bouttons
    00126   QPushButton* okBut = new QPushButton(TR("Valider"), dlg);
    00127   QPushButton* cancelBut = new QPushButton(TR("Annuler"), dlg);
    00128   connect ( okBut, SIGNAL(clicked()), dlg, SLOT( accept() ) );
    00129   connect ( cancelBut, SIGNAL (clicked() ), dlg, SLOT( reject() ) );
    00130 //  connect ( treeView, SIGNAL (doubleClicked()), dlg, SLOT( accept() ) );
    00131
    00132   QGridLayout *grid = new QGridLayout( dlg, 5, 5, 11, 6, "Layout_CMDI_Mouvements");
    00133   grid->addWidget( treeView, 0, 0);
    00134   grid->addWidget( okBut, 1, 0);
    00135   grid->addWidget( cancelBut, 2, 0);
    00136   dlg->exec();
    00137
    00138   // Selon le mode de sortie du dialogue, récupère le mouvement sélectionné
    00139   if (dlg->result() == QDialog::Accepted )
    00140   { id_mvt_dispo = treeView->selectedItem()->text(1).toInt();
    00141     bool gotChild = FALSE;
    00142     // Ne pas permettre la sélection de catégorie primaire (celle possédant une sous-rubrique)
    00143     for (MVTS_LISTE::iterator it_disp = m_Mvts_Liste_Dispo->begin(); it_disp != m_Mvts_Liste_Dispo->end(); ++it_disp)
    00144      { if ( (*it_disp).getIdParent() > 0 )
    00145         if ( (*it_disp).getIdParent() == id_mvt_dispo)
    00146          { gotChild = TRUE; break; }
    00147      }
    00148     if (!gotChild) { categorie->setText(treeView->selectedItem()->text(0)); categorieSelected = TRUE; }
    00149     else categorieSelected = FALSE;
    00150   }
    00151   else categorieSelected = FALSE;
    00152   delete dlg;
    00153 }
    00154
    00155
    00156 void Mvts_Add::setMvt(Mouvements* pMvt)
    00157 {libelle->setText( pMvt->getNom() );
    00158  categorie->setText( (*m_Mvts_Liste_Dispo->at( pMvt->getIdParent() - 1 )).getNom() );
    00159  montant->setText( QString::number(pMvt->getTotal()) );
    00160  setDateObserv( pMvt->getDateValeur() );
    00161  id_mvt_dispo = pMvt->getIdParent() ;
    00162  id_mvt_toModif = pMvt->getId();
    00163  categorieSelected = TRUE;
    00164  QString tmp = pMvt->getRemarque();
    00165  if (tmp == PAIEMENT_ESPECES)
    00166   modePaiement->setCurrentItem(1);
    00167  else  if (tmp == PAIEMENT_CHEQUE)
    00168   modePaiement->setCurrentItem(2);
    00169  else  if (tmp == PAIEMENT_VIREMENT)
    00170   modePaiement->setCurrentItem(3);
    00171  else  if (tmp == PAIEMENT_CB)
    00172   modePaiement->setCurrentItem(4);
    00173  else  if (tmp == PAIEMENT_AUTRE)
    00174   modePaiement->setCurrentItem(5);
    00175  m_pMvts_Sauvegarde = pMvt;
    00176 }
    00177
    00178
    00179 void Mvts_Add::setSeeOnly(bool b)
    00180 { seeOnly = b;
    00181   if (seeOnly)
    00182   { choixCategorie->hide();
    00183
    00184   }
    00185   else
    00186   { choixCategorie->show();
    00187   }
    00188
    00189 }
    00190
    00191
    00192 void Mvts_Add::getMouvement()
    00193 {if (mvt)
    00194  { if (forUpdate) mvt->setId( id_mvt_toModif );
    00195    mvt->setNom( libelle->text() );
    00196    mvt->setIdUsr( m_pUtilisateurActuel->getId() );
    00197    mvt->setDate( QDate::currentDate().toString("yyyy-MM-dd") );
    00198    mvt->setDateValeur( getDateObserv() ); // format yyyy-MM-dd
    00199    mvt->setTotal( montant->text().toDouble() );
    00200    mvt->setIdParent( id_mvt_dispo );
    00201    mvt->setType ( (*m_Mvts_Liste_Dispo->at( id_mvt_dispo - 1 )).getType() );
    00202    mvt->setIdCompte( (*m_Comptes_Liste->at( listeComptes->currentItem() )).getId() );
    00203    QString tmp;
    00204    switch (modePaiement->currentItem())
    00205    {  case 1 :
    00206         { // Especes
    00207           tmp = PAIEMENT_ESPECES;
    00208           break;
    00209         }
    00210       case 2 :
    00211         { // Chèques
    00212           tmp = PAIEMENT_CHEQUE;
    00213           break;
    00214         }
    00215       case 3 :
    00216         { // Virement
    00217           tmp = PAIEMENT_VIREMENT;
    00218           break;
    00219         }
    00220       case 4 :
    00221         { // CB
    00222           tmp = PAIEMENT_CB;
    00223           break;
    00224         }
    00225       case 5 :
    00226         { // Autre
    00227           tmp = PAIEMENT_AUTRE;
    00228           break;
    00229         }
    00230    }// End switch
    00231    mvt->setRemarque(tmp);
    00232  }
    00233
    00234 }
    00235
    00236
    00237 void Mvts_Add::buttonOk_clicked()
    00238 {if (seeOnly)
    00239  { accept(); }
    00240  else
    00241  {// Vérifie les champs obligatoires : nom, praticien, date
    00242   if (libelle->text().stripWhiteSpace() == "")
    00243    QMessageBox::information(this, TR("Formulaire incomplet."), TR("Vous devez obligatoirement renseigner le libellé de la transaction."),TR("Ok"),"","",1,0);
    00244   else if ((categorie->text().stripWhiteSpace() == "") || (!categorieSelected))
    00245    QMessageBox::information(this, TR("Formulaire incomplet."), TR("Vous devez obligatoirement renseigner la catégorie de la transaction à l'aide de la fenêtre prévue à cet effet. Cliquez sur le bouton \"Choisir\"."),TR("Ok"),"","",1,0);
    00246   else if (montant->text().stripWhiteSpace() == "")
    00247    QMessageBox::information(this, TR("Formulaire incomplet."), TR("Vous devez obligatoirement renseigner un montant à la transaction."),TR("Ok"),"","",1,0);
    00248   else if (modePaiement->currentItem() == 0)
    00249    QMessageBox::information(this, TR("Formulaire incomplet."), TR("Vous devez obligatoirement spécifier le mode de paiement de la transaction."),TR("Ok"),"","",1,0);
    00250   else
    00251    { QString msg = "";
    00252      getMouvement();
    00253      bool sansErreur = FALSE;
    00254      if (!forUpdate)
    00255      {  sansErreur = m_pComptaMoteurBase->saveMvtToBase(mvt);
    00256         msg = TR("Mouvement sauvegardé dans la base de données sans erreur.");
    00257      }
    00258      else
    00259      {  mvt->traceModifications( m_pMvts_Sauvegarde, m_pUtilisateurActuel,
    00260                                  &(*m_Mvts_Liste_Dispo->at( m_pMvts_Sauvegarde->getIdParent()-1)) ,
    00261                                  &(*m_Mvts_Liste_Dispo->at( mvt->getIdParent()-1)),
    00262                                  *m_Comptes_Liste );
    00263         sansErreur = m_pComptaMoteurBase->updateMvt(mvt);
    00264         msg = TR("Mouvement mis à jour dans la base de données sans erreur.");
    00265      }
    00266      if (!sansErreur)
    00267        // une erreur est survenue --> afficher l'erreur.
    00268       { QMessageBox *b = new QMessageBox(this);
    00269         b->setText( m_pComptaMoteurBase->m_messageErreur );
    00270         b->exec();
    00271         delete b;
    00272       }
    00273      else
    00274       { QMessageBox::information(this, TR("Information"), msg , TR("Ok"),"","",1,0);
    00275         accept();
    00276       }
    00277    }
    00278  } // Fin if seeOnly
    00279 }
    00280
    00281 void Mvts_Add::buttonCancel_clicked()
    00282 { reject(); }
    00283
    00284
    00285 void Mvts_Add::buttonHelp_clicked()
    00286 {
    00287
    00288 }
    00289
    00293
    00296 void Mvts_Add::mois_activated( int  )
    00297 {  int nbJours = 0;
    00298    int ms = mois->currentItem() + 1;
    00299    QString toAdd = "";
    00300    int jj = jour->currentItem();
    00301    jour->clear();
    00302
    00303    if ((ms == 1) ||(ms == 3) ||(ms == 5) ||(ms == 7) ||(ms == 8) ||(ms == 10) ||(ms == 12) )
    00304         nbJours = 31;
    00305    else if ((ms == 2))
    00306    { // Test année bissextile
    00307        if (annee->currentText().toInt() % 4 == 0) nbJours = 29;
    00308        else nbJours = 28;
    00309    }
    00310    else nbJours = 30;
    00311
    00312    for (int i = 0; i < nbJours; ++i)
    00313     { toAdd = QString::number(i+1);
    00314        if (i < 9) toAdd.prepend("0");
    00315       jour->insertItem(toAdd);
    00316     }
    00317
    00318    if (jj >= jour->count()) jj = jour->count() - 1;
    00319    jour->setCurrentItem(jj);
    00320 }
    00321
    00322
    00326 void Mvts_Add::annee_activated( int  )
    00327 { if (mois->currentItem() == 1)     mois_activated( 1 );  }
    00328
    00329
    00333 QString Mvts_Add::getDateObserv()
    00334 { QString tmp = "";
    00335   tmp = QString::number(mois->currentItem() + 1);
    00336   if (mois->currentItem() < 9) tmp.prepend("0");
    00337 //  return jour->currentText() + "-" + tmp + "-" + annee->currentText();
    00338   return annee->currentText() + "-" + tmp + "-" + jour->currentText();
    00339 }
    00340
    00341
    00345 void Mvts_Add::setDateObserv(QString dt_str)
    00346 { // Passe du format "dd-MM-yyyy" au format "yyyy-MM-dd"
    00347   QString tmp = m_pComptaMoteurBase->dateForSQL( dt_str );
    00348   QDate dt = QDate::fromString(tmp, Qt::ISODate);
    00349   setDateObserv(dt);
    00350 }
    00351
    00355 void Mvts_Add::setDateObserv(QDate dt)
    00356 { int an = dt.year() - 5;
    00357   annee->clear();
    00358   for (int i = 0; i < 10; i++)
    00359   { annee->insertItem(QString::number( an + i ));
    00360   }
    00361   an += 5;
    00362   annee->setCurrentText(QString::number(an));
    00363   mois->setCurrentItem(dt.month() - 1);
    00364   mois_activated( dt.month() - 1);
    00365   jour->setCurrentItem( dt.day() - 1);
    00366 }
    00367
    00368
    00372 void Mvts_Add::setForUpdateOnly(bool up)
    00373 { forUpdate = up; }
    00374