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

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

Aller à la documentation de ce fichier.

    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
    00027 //-------------------------------------------- init -------------------------------------------------
    00032 //-------------------------------------------- init -------------------------------------------------
    00033 void FormPlugins::init()
    00034 {  m_pHonoraires = new Honoraires ();
    00035    m_pHonoraires_Sauvegarde = 0;
    00036    if (!m_pHonoraires) return ;
    00037    m_pActeListe = new ACTES_LISTE;
    00038    if (!m_pActeListe) return;
    00039    forUpdateOnly = FALSE;
    00040    returnToDrTux = TR("Aucun honoraire enregistré");
    00041    //payeListe->clear();
    00042    // Crée la table des honoraires en bas de la fenêtre
    00043    m_QTable_Actes = new QTable ( 5, 3, grActes);
    00044    m_QTable_Actes->setSelectionMode(QTable::SingleRow);
    00045    m_QTable_Actes->setReadOnly(TRUE);
    00046    m_QTable_Actes->setGeometry( QRect( 20, 70, 440, 142 ) );
    00047    m_QTable_Actes->horizontalHeader()->setLabel( 0, tr( "Acte" ) );
    00048    m_QTable_Actes->setColumnWidth ( 0, 100 );
    00049    m_QTable_Actes->horizontalHeader()->setLabel( 1, tr( "Tiers" ) );
    00050    m_QTable_Actes->setColumnWidth ( 1, 50 );
    00051    m_QTable_Actes->horizontalHeader()->setLabel( 2, tr( "Mode de Paiement" ) );
    00052    m_QTable_Actes->setColumnWidth ( 2, 300 );
    00053    // Connecte les signaux de la table avec les slots adéquats
    00054    connect ( m_QTable_Actes,    SIGNAL( contextMenuRequested (int,int,const QPoint&) ),
    00055              this, SLOT  ( tablePop (int, int, const QPoint&) ) );
    00056    // initialise le combo des années
    00057    int an = QDate::currentDate().year() - 5;
    00058    for (int i = an; i < (an+11); ++i)
    00059     { annee->insertItem(QString::number(i));}
    00060 }
    00061
    00062
    00063 void FormPlugins::destroy()
    00064 { if (m_pHonoraires) delete m_pHonoraires;
    00065   if (m_pActeListe) delete m_pActeListe;
    00066 }
    00067
    00068 //---------------------------------------- tablePop -----------------------------------------
    00073 void FormPlugins::tablePop(int , int , const QPoint &p)
    00074 { // Affiche un popupmenu avec les fonctions modif et suppression
    00075   if (payeListe.count() == 0)
    00076    { QPopupMenu *pop = new QPopupMenu(this, "popTable");
    00077      pop->insertItem (TR("Ajouter un acte") , this, SLOT( buttonHelp_clicked()  ) );
    00078      pop->popup(p);
    00079    }
    00080   else
    00081    { QPopupMenu *pop = new QPopupMenu(this, "popTable");
    00082      pop->insertItem (TR("Modifier") , this, SLOT(honoModif()  ) );
    00083      pop->insertItem (TR("Supprimer"), this, SLOT(honoDelete() ) );
    00084      pop->popup(p);
    00085    }
    00086 }
    00087
    00088
    00093 void FormPlugins::honoDelete()
    00094 {if (payeListe.count() != 0)
    00095  {QString str="";
    00096   // Récupère le paiement sélectionné
    00097   PAIEMENTS_LISTE::iterator it = payeListe.at( m_QTable_Actes->currentRow() );
    00098   str =  tr("Souhaitez-vous supprimer cet acte de l'honoraire en cours ?<br /><br />");
    00099   str += tr("<b>Acte sélectionné :</b> ") + (*it).getNom() + "<br />";
    00100   str += tr("<b>Montant Total :</b> ") + QString::number( (*it).total() ) + "<br />";
    00101   str += tr("<b>Mode de Paiement :</b> ") + (*it).toString() + "<br /><br />";
    00102   if ( QMessageBox::question(this,tr("Suppression d'une paiement."),str,
    00103             tr("&Oui"), tr("&Non"), QString::null, 0, 1 ) == 0)
    00104         {  payeListe.remove( it ); affichePaiements();  }
    00105  }
    00106 }
    00107
    00112 void FormPlugins::honoModif()
    00113 { Acte_Selection *as = new Acte_Selection(this);
    00114   as->setActesListe (m_pActeListe );
    00115   // Injecter les valeurs de l'honoraire à modifier dans Acte_Selection
    00116   idPaiementToModif = m_QTable_Actes->currentRow();
    00117   PAIEMENTS_LISTE::iterator it = payeListe.at( idPaiementToModif );
    00118   // Prépare les combos pour le type de ce paiement
    00119   as->setPaiement( (*it) );
    00120   connect (as,    SIGNAL ( actePaiementSelectionne( Paiements* ) ),
    00121            this,  SLOT   ( modifPaiement ( Paiements* ))   );
    00122   as->exec();
    00123   delete as;
    00124 }
    00125
    00126
    00131 void FormPlugins::modifPaiement(Paiements* p)
    00132 { PAIEMENTS_LISTE::iterator it = payeListe.at( idPaiementToModif );
    00133   it = payeListe.remove( it );
    00134   payeListe.insert(it, *p);
    00135   affichePaiements();
    00136 }
    00137
    00138
    00139 Paiements FormPlugins::getActeFromName(const char* nom)
    00140 { Paiements p = Paiements();
    00141   double total;
    00142
    00143   // Récupère le nom de l'acte et ses paramètres
    00144   ACTES_LISTE::iterator it;
    00145   int i = -1;
    00146   for(it = m_pActeListe->begin(); it !=  m_pActeListe->end(); ++it )
    00147     {// Recherche en même temps l'item passé en paramètre
    00148       if ((*it).m_Nom == nom) {  m_pActes_Param = &(*it); break;}
    00149       ++i;
    00150     }
    00151  // récupère le nom de l'acte
    00152  p.setNom((*it).m_Nom);
    00153  p.setType((*it).getType());
    00154  // récupère le tiers
    00155  p.setTiers(tiersPayant);
    00156  if (tiersPayant)
    00157   {  total = m_pActes_Param->m_Tiers;
    00158      p.setDAF( m_pActes_Param->m_Total - m_pActes_Param->m_Tiers );
    00159   }
    00160  else { total = m_pActes_Param->m_Total;  }
    00161
    00162  // Mode de paiement passé en paramètre ?
    00163  QString pay = "  ";
    00164  if (modePaiement != "")
    00165  {if            (modePaiement == "esp")         p.setEspeces(total);
    00166   else if       (modePaiement == "espèces")    p.setEspeces(total);
    00167   else if       (modePaiement == "chq")         p.setCheque(total);
    00168   else if       (modePaiement == "cheque")      p.setCheque(total);
    00169   else if       (modePaiement == "cb")          p.setCB(total);
    00170   // ATTENTION IL FAUT GERER LES DAF CORRECTEMENT
    00171   else if       (modePaiement == "daf")         p.setDAF(m_pActes_Param->m_Total);
    00172   else if       (modePaiement == "diff")        p.setDAF(m_pActes_Param->m_Total);
    00173   else if       (modePaiement == "différé")   p.setDAF(m_pActes_Param->m_Total);
    00174   else if       (modePaiement == "autre")       p.setAutre(total);
    00175   else if       (modePaiement == "du")          p.setDu(total);
    00176  }
    00177  // Récupère le tiers et calcul montants
    00178 /* if (tiersPayant)
    00179   {  m_QTable_Actes->setText(0,1, "Oui");
    00180      pay += " " + QString::number(m_pActes_Param->m_Total - m_pActes_Param->m_Tiers );
    00181      pay += " ; " + TR("DAF :") + " " +  QString::number(m_pActes_Param->m_Tiers );
    00182   }
    00183  else
    00184   {  m_QTable_Actes->setText(0,1, "Non");
    00185      pay += QString::number(m_pActes_Param->m_Total);
    00186   }
    00187 */
    00188  return p;
    00189 }
    00190
    00191
    00195 void FormPlugins::getParams()
    00196 { if ((paramSet_OK) && (nomActe != "") && ( modePaiement != "") )
    00197  { QString tmp;
    00198    QStringList nActes = QStringList::split("|", nomActe);
    00199    // Récupère tous les actes passés en paramètre
    00200    for ( QStringList::Iterator it = nActes.begin(); it != nActes.end(); ++it )
    00201    { tmp = (*it).stripWhiteSpace();
    00202      if (tmp != "")
    00203       payeListe.append ( getActeFromName( tmp ) );
    00204    }
    00205  }
    00206  else
    00207  { // Efface lblEmetteur et lineeditemetteur
    00208    lblEmetteur->hide();
    00209    emetteur->hide();
    00210  }
    00211 }
    00212
    00216 void FormPlugins::setParams(    const char*     patient,
    00217                                 const char*     GUID,
    00218                                 Utilisateurs*   curUsr,
    00219                                 const char*     date,                   // format "dd-MM-yyyy"
    00220                                 const char*     nom_acte,
    00221                                 bool            tiers,
    00222                                 const char*     mode_paiement,
    00223                                 ComptaMoteurBase* pMoteurBase)
    00224 { m_pComptaMoteurBase = pMoteurBase;
    00225   m_pUtilisateurActuel = curUsr;
    00226   patientGUID = GUID;
    00227   drtux_usrPk = m_pUtilisateurActuel->getDrTuxUsrPk();
    00228   usrComptaId = m_pUtilisateurActuel->getId();
    00229
    00230   nomPatient->setText(patient);
    00231   nomPraticien->setText(m_pUtilisateurActuel->getNom());
    00232   setDateObserv(date);
    00233
    00234   nomActe = nom_acte;
    00235   tiersPayant = tiers;
    00236   modePaiement = mode_paiement;
    00237
    00238   // Récupère les actes disponibles
    00239   if (!m_pComptaMoteurBase->getActesForCombobox( *m_pActeListe ) )
    00240    { QWidget *l = new QWidget();
    00241      QMessageBox::information(l, TR("Erreur"), m_pComptaMoteurBase->m_messageErreur ,"Ok","","",1,0);
    00242      delete l;
    00243    }
    00244   paramSet_OK = TRUE;
    00245
    00246
    00247   // Vérifie si existe un montant du
    00248   int du = 0;
    00249   if (patientGUID != "") m_pComptaMoteurBase->checkDus(m_pUtilisateurActuel, patientGUID, du);
    00250   if (du != 0)
    00251   { lblDu->show();
    00252     montantDu->show();
    00253     montantDu->setText(QString::number(du));
    00254   }
    00255   else
    00256   { lblDu->hide();
    00257     montantDu->hide();
    00258   }
    00259
    00260    // Prépare les données passées en paramètres
    00261    getParams();
    00262    affichePaiements();
    00263 }
    00264
    00268 bool FormPlugins::setHonoraire(Honoraires* hono)
    00269 { m_pHonoraires_Sauvegarde = hono;
    00270   if (hono->getRemarque().find(CHEQUE_DEPOSE) != -1) return FALSE;
    00271   if (hono->getRemarque().find(DAF_OK) != -1) return FALSE;
    00272   nomPatient->setText(hono->getPatient());
    00273   nomPraticien->setText(hono->getPraticien());
    00274 //  dateObserv->setText( hono->getDate().toString("dd-MM-yyyy"));
    00275   hono->getActes(payeListe);
    00276   m_pHonoraires->setRemarque( hono->getRemarque() );
    00277   affichePaiements();
    00278   // Il faut récupérer le champs remarque de l'honoraire...
    00279   if (m_pHonoraires->getEmetteur() != "") emetteur->setText( m_pHonoraires->getEmetteur() );
    00280   m_pHonoraires->setId ( hono->getId() );
    00281   patientGUID = m_pHonoraires->getGUID();
    00282   forUpdateOnly = TRUE;
    00283   return TRUE;
    00284 }
    00285
    00286
    00291 void FormPlugins::affichePaiements()
    00292 { int c,r;
    00293   c = m_QTable_Actes->numCols();
    00294   r = m_QTable_Actes->numRows();
    00295   for (int i = 0; i < c; ++i)
    00296     for (int j = 0; j < r; ++j)
    00297         { m_QTable_Actes->setText( j, i, QString::null); }
    00298
    00299   if (payeListe.count() != 0)
    00300   { PAIEMENTS_LISTE::iterator  it;
    00301     QString str = "";
    00302     totalHonoraire.remiseAZero();
    00303     int i=0;
    00304     m_QTable_Actes->setNumRows( payeListe.count() + 1);
    00305     for(it = payeListe.begin(); it !=  payeListe.end(); ++it )
    00306     {   // Calcul le montant total de l'honoraire
    00307         totalHonoraire.m_Esp   += (*it).m_Esp;
    00308         totalHonoraire.m_Chq   += (*it).m_Chq;
    00309         totalHonoraire.m_CB    += (*it).m_CB;
    00310         totalHonoraire.m_DAF   += (*it).m_DAF;
    00311         totalHonoraire.m_Autre += (*it).m_Autre;
    00312         totalHonoraire.m_Du    += (*it).m_Du;
    00313         if (!forUpdateOnly) totalHonoraire.setEmetteur( nomPatient->text() );
    00314         else totalHonoraire.setEmetteur(m_pHonoraires->getEmetteur() );
    00315
    00316         // Prépare la string à afficher dans le tableau
    00317        m_QTable_Actes->setText(i, 0, (*it).m_Nom );
    00318        if ( (*it).m_Tiers ) m_QTable_Actes->setText(i, 1, "Oui" ); else m_QTable_Actes->setText(i, 1, "Non" );
    00319        m_QTable_Actes->setText(i, 2, (*it).toString() );
    00320        ++i;
    00321      }
    00322    // Affiche le total de l'honoraire
    00323    m_QTable_Actes->setText(i,0, "TOTAL :" + QString::number( totalHonoraire.total() ));
    00324    m_QTable_Actes->setText(i,2, totalHonoraire.toString() );
    00325    // Gestion de l'emetteur du chèque
    00326    if (totalHonoraire.m_Chq > 0)
    00327     { lblEmetteur->show();    emetteur->show();
    00328       if (!forUpdateOnly) emetteur->setText( totalHonoraire.getEmetteur() );
    00329     }
    00330    else { lblEmetteur->hide(); emetteur->hide(); }
    00331  }
    00332  else // Aucun paiement enregistré dans l'honoraire
    00333  { m_QTable_Actes->setText(0,0, tr("Aucun Acte") ); }
    00334 }
    00335
    00336
    00340 void FormPlugins::getHonoraire()
    00341 { QString tmp = "";
    00342   m_pHonoraires->setPatient     ( nomPatient->text()   );
    00343   m_pHonoraires->setPraticien   ( nomPraticien->text() );
    00344   m_pHonoraires->setActes       ( payeListe            );
    00345   m_pHonoraires->setDate        ( getDateObserv()  );
    00346   m_pHonoraires->setEspeces     (totalHonoraire.getEsp() );
    00347   m_pHonoraires->setCheque      (totalHonoraire.getChq() );
    00348   m_pHonoraires->setCB          (totalHonoraire.getCB() );
    00349   m_pHonoraires->setDAF         (totalHonoraire.getDAF() );
    00350   m_pHonoraires->setAutre       (totalHonoraire.getAutre() );
    00351   m_pHonoraires->setDu          (totalHonoraire.getDu() );
    00352   m_pHonoraires->setIdUsr       (usrComptaId);
    00353   m_pHonoraires->setGUID        (patientGUID);
    00354   m_pHonoraires->setDrTuxUsr    (drtux_usrPk);
    00355   // Si il existe un DAF mettre dans le champs remarque DAF_PAS_OK  (cf ComptaMoteurBase.h)
    00356   // Si paiement par chèque mettre dans le champs remarque CHEQUE_PAS_DEPOSE  (cf ComptaMoteurBase.h)
    00357   if (totalHonoraire.getChq() > 0) { tmp  = CHEQUE_PAS_DEPOSE;}
    00358   if (totalHonoraire.getDAF() > 0) { tmp += DAF_PAS_OK;       }
    00359   m_pHonoraires->setRemarque(tmp);
    00360   if (emetteur->isVisible() )   { m_pHonoraires->setEmetteur( emetteur->text() ); }
    00361 }
    00362
    00363
    00368 void FormPlugins::ajoutePaiement ( Paiements* p)
    00369 { payeListe.append( *p );
    00370   affichePaiements();
    00371 }
    00372
    00373
    00374 void FormPlugins::buttonHelp_clicked()
    00375 {  Acte_Selection *a = new Acte_Selection(this);
    00376    a->setActesListe( m_pActeListe );
    00377    connect (a,    SIGNAL ( actePaiementSelectionne( Paiements* ) ),
    00378             this, SLOT   ( ajoutePaiement ( Paiements* ))   );
    00379    a->exec();
    00380    delete a;
    00381 }
    00382
    00383
    00387 void FormPlugins::buttonOK_clicked()
    00388 { // Vérifie les champs obligatoires : nom, praticien, date
    00389   if (nomPatient->text().stripWhiteSpace() == "")
    00390    QMessageBox::information(this, TR("Formulaire incomplet."), TR("Vous devez obligatoirement renseigné le nom du patient (ou du laboratoire)"),TR("Ok"),"","",1,0);
    00391   else if (nomPraticien->text().stripWhiteSpace() == "")
    00392    QMessageBox::information(this, TR("Formulaire incomplet."), TR("Vous devez obligatoirement renseigné le nom du praticien."),TR("Ok"),"","",1,0);
    00393 //  else if (dateObserv->text().stripWhiteSpace() == "")
    00394 //   QMessageBox::information(this, TR("Formulaire incomplet."), TR("Vous devez obligatoirement renseigné la date de l'honoraire."),TR("Ok"),"","",1,0);
    00395   else
    00396   if (payeListe.count() != 0)
    00397    { getHonoraire();
    00398      bool sansErreur = FALSE;
    00399      if (!forUpdateOnly)
    00400      { sansErreur = m_pComptaMoteurBase->saveHonorairesToBase(m_pHonoraires);
    00401      }
    00402      else  // il s'agit d'une modification --> tracer les modifs avant de sauvegarder
    00403      { m_pHonoraires->traceModifications( m_pHonoraires_Sauvegarde, m_pUtilisateurActuel );
    00404        sansErreur = m_pComptaMoteurBase->updateHonoraires(m_pHonoraires);
    00405      }
    00406      if (!sansErreur)
    00407        // une erreur est survenue --> afficher l'erreur.
    00408       { QMessageBox *b = new QMessageBox(this);
    00409         b->setText( m_pComptaMoteurBase->m_messageErreur );
    00410         b->exec();
    00411         delete b;
    00412       }
    00413      else
    00414       { returnToDrTux = TR("Honoraire enregistré : ") + m_pHonoraires->getActesToString() + " " + m_pHonoraires->toString();
    00415         accept();
    00416       }
    00417    }
    00418   else { QMessageBox::warning(this, tr("Erreur"), tr("Attention, vous n'avez sélectionné aucun acte pour cet honoraire.<br /> <br />Pour sauvegarder l'honoraire dans la base de données, veuillez ajouter au minimum un acte."),"&Ok", QString::null, QString::null, 1, 0 );  }
    00419 }
    00420
    00421
    00425 QString FormPlugins::getMessage()
    00426 { return returnToDrTux; }
    00427
    00428
    00432 void FormPlugins::mois_activated(int )
    00433 {  int nbJours = 0;
    00434    int ms = mois->currentItem() + 1;
    00435    QString toAdd = "";
    00436    int jj = jour->currentItem();
    00437    jour->clear();
    00438
    00439    if ((ms == 1) ||(ms == 3) ||(ms == 5) ||(ms == 7) ||(ms == 8) ||(ms == 10) ||(ms == 12) )
    00440         nbJours = 31;
    00441    else if ((ms == 2))
    00442    { // Test année bissextile
    00443        if (annee->currentText().toInt() % 4 == 0) nbJours = 29;
    00444        else nbJours = 28;
    00445    }
    00446    else nbJours = 30;
    00447
    00448    for (int i = 0; i < nbJours; ++i)
    00449     { toAdd = QString::number(i+1);
    00450        if (i < 9) toAdd.prepend("0");
    00451       jour->insertItem(toAdd);
    00452     }
    00453
    00454    if (jj >= jour->count()) jj = jour->count() - 1;
    00455    jour->setCurrentItem(jj);
    00456 }
    00457
    00458
    00462 QString FormPlugins::getDateObserv()
    00463 {  QString tmp = "";
    00464     tmp = QString::number(mois->currentItem() + 1);
    00465     if (mois->currentItem() < 9) tmp.prepend("0");
    00466     return jour->currentText() + "-" + tmp + "-" + annee->currentText();
    00467 }
    00468
    00469
    00473 void FormPlugins::setDateObserv(QString dt_str)
    00474 { // Passe du format "dd-MM-yyyy" au format "yyyy-MM-dd"
    00475   QString tmp = m_pComptaMoteurBase->dateForSQL( dt_str );
    00476   QDate dt = QDate::fromString(tmp, Qt::ISODate);
    00477   setDateObserv(dt);
    00478 }
    00479
    00483 void FormPlugins::setDateObserv(QDate dt)
    00484 { int an = dt.year() - 5;
    00485   annee->clear();
    00486   for (int i = 0; i < 10; i++)
    00487   { annee->insertItem(QString::number( an + i ));
    00488   }
    00489   an += 5;
    00490   annee->setCurrentText(QString::number(an));
    00491   mois->setCurrentItem(dt.month() - 1);
    00492   mois_activated( dt.month() - 1);
    00493   jour->setCurrentItem( dt.day() - 1);
    00494 }
    00495
    00496
    00500 void FormPlugins::annee_activated( int  )
    00501 { if (mois->currentItem() == 1)     mois_activated( 1 );
    00502 }