familiasview.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2005 by Tomeu Borras Riera                              *
00003  *   tborras@conetxia.com                                                  *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  *                                                                         *
00010  *   This program is distributed in the hope that it will be useful,       *
00011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00013  *   GNU General Public License for more details.                          *
00014  *                                                                         *
00015  *   You should have received a copy of the GNU General Public License     *
00016  *   along with this program; if not, write to the                         *
00017  *   Free Software Foundation, Inc.,                                       *
00018  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
00019  ***************************************************************************/
00020 
00021 #include <QMap>
00022 #include <QLineEdit>
00023 #include <QMessageBox>
00024 #include <QFile>
00025 #include <QTextStream>
00026 
00027 #include "familiasview.h"
00028 #include "company.h"
00029 #include "funcaux.h"
00030 
00031 #define COL_NOMFAMILIA            0
00032 #define COL_CODCOMPLETOFAMILIA    1
00033 #define COL_DESCFAMILIA           2
00034 #define COL_IDFAMILIA             3
00035 #define COL_CODFAMILIA            4
00036 #define COL_PRODUCTOFISICOFAMILIA 5
00037 
00038 
00040 
00045 FamiliasView::FamiliasView(Company *comp, QWidget *parent, bool modoConsulta)
00046         : FichaBf(comp, parent) {
00047     _depura("FamiliasView::FamiliasView", 0);
00048     setupUi(this);
00049     companyact = comp;
00050     m_listFamilias->setColumnCount(3);
00051     QStringList headers;
00052     headers << tr("Nombre") << tr("Codigo") << tr("Descripcion") << tr("Id familia") << tr("Codigo completo");
00053     m_listFamilias->setHeaderLabels(headers);
00054 
00055     m_listFamilias->setColumnWidth(0, 200);
00056     m_listFamilias->setColumnWidth(1, 100);
00057 
00058     m_listFamilias->setColumnHidden(COL_IDFAMILIA, TRUE);
00059     m_listFamilias->setColumnHidden(COL_CODFAMILIA, TRUE);
00060     m_listFamilias->setColumnHidden(COL_PRODUCTOFISICOFAMILIA, TRUE);
00061 
00062     m_semaforoPintar = FALSE;
00063 
00064     m_idfamilia = "";
00065 
00066     if (modoConsulta) {
00067         setModoConsulta();
00068         groupBox1->hide();
00069         mui_detalles->hide();
00070         mui_crear->hide();
00071         mui_guardar->hide();
00072         mui_borrar->hide();
00073         mui_cancelar->hide();
00074         mui_aceptar->hide();
00075         mui_imprimir->hide();
00076     } else {
00077         setModoEdicion();
00078         setAttribute(Qt::WA_DeleteOnClose);
00079         companyact->meteWindow(windowTitle(), this);
00080     } // end if
00081 
00082     pintar();
00083     _depura("END FamiliasView::FamiliasView", 0);
00084 }
00085 
00086 
00088 
00090 FamiliasView::~FamiliasView() {
00091     _depura("FamiliasView::~FamiliasView", 0);
00092     _depura("END FamiliasView::~FamiliasView", 0);
00093 }
00094 
00095 
00097 
00099 void FamiliasView::pintar() {
00100     _depura("FamiliasView::pintar", 0);
00102     m_semaforoPintar = TRUE;
00103     QTreeWidgetItem *it;
00104     QMap <int, QTreeWidgetItem*> Lista1;
00105     int padre;
00106     int idfamilia = 0;
00107     cursor2 *cursoraux1, *cursoraux2;
00108 
00110     while (m_listFamilias->topLevelItemCount() > 0) {
00111         it = m_listFamilias->takeTopLevelItem(0);
00112         delete it;
00113     } // end while
00114 
00115     cursoraux1 = companyact->cargacursor("SELECT * FROM familia WHERE padrefamilia IS NULL ORDER BY idfamilia");
00116     while (!cursoraux1->eof()) {
00117         padre = cursoraux1->valor("padrefamilia").toInt();
00118         idfamilia = cursoraux1->valor("idfamilia").toInt();
00119         it = new QTreeWidgetItem(m_listFamilias);
00120         Lista1[idfamilia] = it;
00121         it->setText(COL_NOMFAMILIA, cursoraux1->valor("nombrefamilia"));
00122         it->setText(COL_CODFAMILIA, cursoraux1->valor("codigofamilia"));
00123         it->setText(COL_DESCFAMILIA, cursoraux1->valor("descfamilia"));
00124         it->setText(COL_IDFAMILIA, cursoraux1->valor("idfamilia"));
00125         it->setText(COL_CODCOMPLETOFAMILIA, cursoraux1->valor("codigocompletofamilia"));
00126         it->setText(COL_PRODUCTOFISICOFAMILIA, cursoraux1->valor("productofisicofamilia"));
00127         m_listFamilias->expandItem(it);
00128         cursoraux1->siguienteregistro();
00129     } // end while
00130     delete cursoraux1;
00131     cursoraux2 = companyact->cargacursor("SELECT * FROM familia WHERE padrefamilia IS NOT NULL ORDER BY idfamilia");
00132     while (!cursoraux2->eof()) {
00133         padre = cursoraux2->valor("padrefamilia").toInt();
00134         idfamilia = cursoraux2->valor("idfamilia").toInt();
00135         it = new QTreeWidgetItem(Lista1[padre]);
00136         Lista1[idfamilia] = it;
00137         it->setText(COL_NOMFAMILIA, cursoraux2->valor("nombrefamilia"));
00138         it->setText(COL_CODFAMILIA, cursoraux2->valor("codigofamilia"));
00139         it->setText(COL_DESCFAMILIA, cursoraux2->valor("descfamilia"));
00140         it->setText(COL_IDFAMILIA, cursoraux2->valor("idfamilia"));
00141         it->setText(COL_CODCOMPLETOFAMILIA, cursoraux2->valor("codigocompletofamilia"));
00142         it->setText(COL_PRODUCTOFISICOFAMILIA, cursoraux2->valor("productofisicofamilia"));
00143         m_listFamilias->expandItem(it);
00144         cursoraux2->siguienteregistro();
00145     } // end while
00146     delete cursoraux2;
00147     m_idfamilia = "";
00149     dialogChanges_cargaInicial();
00150     m_semaforoPintar = FALSE; 
00151     _depura("END FamiliasView::pintar", 0);
00152 }
00153 
00154 
00156 
00159 QString FamiliasView::codigoCompletoFamilia() {
00160     _depura("FamiliasView::codigoCompletoFamilia", 0);
00161     QTreeWidgetItem *it = m_listFamilias->currentItem();
00162     if (it) {
00163         return it->text(COL_CODCOMPLETOFAMILIA);
00164     } // end if
00165     _depura("END FamiliasView::codigoCompletoFamilia", 0);
00166     return "";
00167 }
00168 
00169 
00171 
00174 QString FamiliasView::idFamilia() {
00175     _depura("FamiliasView::idFamilia", 0);
00176     QTreeWidgetItem *it = m_listFamilias->currentItem();
00177     if (it) {
00178         return it->text(COL_IDFAMILIA);
00179     } // end if
00180     _depura("END FamiliasView::idFamilia", 0);
00181     return "";
00182 }
00183 
00184 
00186 
00189 QString FamiliasView::nombreFamilia() {
00190     _depura("FamiliasView::nombreFamilia", 0);
00191     QTreeWidgetItem *it = m_listFamilias->currentItem();
00192     if (it) {
00193         return it->text(COL_NOMFAMILIA);
00194     } // end if
00195     _depura("END FamiliasView::nombreFamilia", 0);
00196     return "";
00197 }
00198 
00199 
00203 
00206 void FamiliasView::on_m_listFamilias_itemDoubleClicked(QTreeWidgetItem *it) {
00207     _depura("FamiliasView::on_m_listFamilias_itemDoubleClicked", 0);
00208     if (m_modoConsulta) {
00209         m_idfamilia = it->text(COL_IDFAMILIA);
00210         emit selected(m_idfamilia);
00211     } // end if
00212     _depura("END FamiliasView::on_m_listFamilias_itemDoubleClicked", 0);
00213 }
00214 
00215 
00219 
00224 void FamiliasView::on_m_listFamilias_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous) {
00225     _depura("FamiliasView::on_m_listFamilias_currentItemChanged", 0);
00226 
00228     if (m_semaforoPintar) return;
00229 
00230     QString idfamiliaold = "";
00231     if (previous) {
00232         m_idfamilia = previous->text(COL_IDFAMILIA);
00233     } // end if
00234     if (m_idfamilia != "") {
00235         trataModificado();
00236         pintar(previous);
00237     } // end if
00238     m_idfamilia = current->text(COL_IDFAMILIA);
00239     mostrarplantilla();
00240    _depura("END FamiliasView::on_m_listFamilias_currentItemChanged", 0);
00241 }
00242 
00243 
00245 
00247 void FamiliasView::mostrarplantilla() {
00248     _depura("FamiliasView::mostrarplantilla", 0);
00249     QString query;
00250     query= "SELECT * from familia WHERE idfamilia = " + m_idfamilia;
00251     cursor2 *cursorfamilia = companyact->cargacursor(query);
00252     if (!cursorfamilia->eof()) {
00253         mui_nomFamilia->setText(cursorfamilia->valor("nombrefamilia"));
00254         mui_descFamilia->setPlainText(cursorfamilia->valor("descfamilia"));
00255         mui_codCompletoFamilia->setText(cursorfamilia->valor("codigocompletofamilia"));
00256         mui_codFamilia->setText(cursorfamilia->valor("codigofamilia"));
00257 
00258         if (cursorfamilia->valor("productofisicofamilia") == "t") {
00259             mui_productofamilia->setChecked(TRUE);
00260         } else {
00261             mui_serviciofamilia->setChecked(TRUE);
00262         } // end if
00263     } // end if
00264     delete cursorfamilia;
00266     dialogChanges_cargaInicial();
00267     _depura("END FamiliasView::mostrarplantilla", 0);
00268 }
00269 
00270 
00272 
00275 bool FamiliasView::trataModificado() {
00277     if (dialogChanges_hayCambios()) {
00278         if (QMessageBox::warning(this,
00279                                  tr("Guardar familia"),
00280                                  tr("Desea guardar los cambios?"),
00281                                  QMessageBox::Ok,
00282                                  QMessageBox::Cancel) == QMessageBox::Ok) {
00283             on_mui_guardar_clicked();
00284         } // end if
00285         return (TRUE);
00286     } // end if
00287     return(FALSE);
00288 }
00289 
00290 
00293 
00296 int FamiliasView::guardar() {
00297     _depura("FamiliasView::guardar", 0);
00298     QString prodfam;
00299     try {
00300         if (m_idfamilia == "") {
00301             mensajeInfo(tr("Debe seleccionar una familia"));
00302             return -1;
00303         } // end if
00304     if (mui_productofamilia->isChecked()) {
00305         prodfam = " TRUE ";
00306     } else {
00307         prodfam = " FALSE ";
00308     } // end if
00309         QString query = "UPDATE familia SET nombrefamilia = '" +
00310                         companyact->sanearCadena(mui_nomFamilia->text()) + "', descfamilia = '" +
00311                         companyact->sanearCadena(mui_descFamilia->toPlainText()) + "' , codigofamilia = '" +
00312                         companyact->sanearCadena(mui_codFamilia->text()) + "', productofisicofamilia= " + prodfam + " WHERE idfamilia =" + m_idfamilia;
00313         int error = companyact->ejecuta(query);
00314         if (error) {
00315             throw -1;
00316         } // end if
00319         QTreeWidgetItem *posicionCursor;
00320         posicionCursor = m_listFamilias->currentItem();
00321         posicionCursor->setSelected(TRUE);
00323         pintar(posicionCursor);
00324         dialogChanges_cargaInicial();
00325         _depura("END FamiliasView::guardar", 0);
00326         return 0;
00327     } catch (...) {
00328         mensajeInfo("Error al guardar la familia");
00329         return -1;
00330     } // end try
00331 }
00332 
00333 
00335 
00338 void FamiliasView::pintar(QTreeWidgetItem *it) {
00339     QString idfamilia = it->text(COL_IDFAMILIA);
00340     if (it) {
00341         cursor2 *cursoraux1 = companyact->cargacursor("SELECT * FROM familia WHERE idfamilia = " + idfamilia);
00342         if (!cursoraux1->eof()) {
00343             it->setText(COL_NOMFAMILIA, cursoraux1->valor("nombrefamilia"));
00344             it->setText(COL_CODFAMILIA, cursoraux1->valor("codigofamilia"));
00345             it->setText(COL_DESCFAMILIA, cursoraux1->valor("descfamilia"));
00346             it->setText(COL_IDFAMILIA, cursoraux1->valor("idfamilia"));
00347             it->setText(COL_CODCOMPLETOFAMILIA, cursoraux1->valor("codigocompletofamilia"));
00348             it->setText(COL_PRODUCTOFISICOFAMILIA, cursoraux1->valor("productofisicofamilia"));
00349         } // end if
00350         delete cursoraux1;
00351     } // end if
00352 }
00353 
00354 
00357 
00359 void FamiliasView::on_mui_crear_clicked() {
00360     _depura("FamiliasView::on_mui_crear_clicked", 0);
00361     try {
00362         companyact->begin();
00364         trataModificado();
00365         QString padrefamilia;
00366         if (m_idfamilia != "") {
00367             padrefamilia = m_idfamilia;
00368         } else {
00369             padrefamilia = "NULL";
00370         } // end if
00371 
00372         QString query = "INSERT INTO familia (nombrefamilia, descfamilia, padrefamilia, codigofamilia) VALUES ('NUEVA FAMILIA', 'Descripcion de la familia', " + padrefamilia + ", 'XXX')";
00373 
00374         int error = companyact->ejecuta(query);
00375         if (error) {
00376             throw -1;
00377         } // end if
00378         cursor2 *cur = companyact->cargacursor("SELECT max(idfamilia) AS idfamilia FROM familia");
00379         companyact->commit();
00380         m_idfamilia = cur->valor("idfamilia");
00381         delete cur;
00382         pintar();
00383         _depura("END FamiliasView::on_mui_crear_clicked", 0);
00384     } catch (...) {
00385         companyact->rollback();
00386         mensajeInfo("Error al crear la familia");
00387     } // end try
00388 }
00389 
00390 
00392 
00394 void FamiliasView::on_mui_borrar_clicked() {
00395     _depura("FamiliasView::on_mui_borrar_clicked", 0);
00396 
00397     int val = QMessageBox::question(this,
00398                                     tr("Borrar") + " " + windowTitle(),
00399                                     tr("Desea eliminar") + " " + windowTitle(),
00400                                     QMessageBox::Yes,
00401                                     QMessageBox::Cancel | QMessageBox::Escape | QMessageBox::Default);
00402 
00403     if (val == QMessageBox::Yes) {
00404         if (!borrar()) {
00405             dialogChanges_cargaInicial();
00406             _depura(windowTitle() + " " + "borrado satisfactoriamente.", 10);
00407         } else {
00408             mensajeInfo(windowTitle() + tr("No se ha podido borrar"));
00409         } // end if
00410     } // end if
00411     _depura("END FamiliasView::on_mui_borrar_clicked", 0);
00412 }
00413 
00414 
00417 
00420 int FamiliasView::borrar() {
00421     _depura("FamiliasView::borrar", 0);
00422     if (m_idfamilia == "") {
00423         mensajeInfo(tr("Debe seleccionar una familia"));
00424         return -1;
00425     } // end if
00426     try {
00427         QString query = "DELETE FROM FAMILIA WHERE idfamilia = " + m_idfamilia;
00428         int error = companyact->ejecuta(query);
00429         if (error) {
00430             throw -1;
00431         } // end if
00432         m_idfamilia = "";
00433         dialogChanges_cargaInicial();
00434         pintar();
00435         _depura("END FamiliasView::borrar", 0);
00436     } catch (...) {
00437         mensajeInfo("Error al borrar la familia");
00438         return -1;
00439     } // end try
00440     return 0;
00441 }
00442 
00443 
00445 
00447 void FamiliasView::on_mui_imprimir_clicked() {
00448     _depura("FamiliasView::on_mui_imprimir_clicked", 0);
00449 
00450     QString archivo = confpr->valor(CONF_DIR_OPENREPORTS) + "familias.rml";
00451     QString archivod = confpr->valor(CONF_DIR_USER) + "familias.rml";
00452     QString archivologo = confpr->valor(CONF_DIR_OPENREPORTS) + "logo.jpg";
00453 
00455 #ifdef WINDOWS
00456 
00457     archivo = "copy " + archivo + " " + archivod;
00458 #else
00459 
00460     archivo = "cp " + archivo + " " + archivod;
00461 #endif
00462 
00463     system (archivo.toAscii().constData());
00465 #ifdef WINDOWS
00466 
00467     archivologo = "copy "  + archivologo + " " + confpr->valor(CONF_DIR_USER) + "logo.jpg";
00468 #else
00469 
00470     archivologo = "cp " + archivologo + " " + confpr->valor(CONF_DIR_USER) + "logo.jpg";
00471 #endif
00472 
00473     system(archivologo.toAscii().constData());
00474     QFile file;
00475     file.setFileName(archivod);
00476     file.open(QIODevice::ReadOnly);
00477     QTextStream stream(&file);
00478     QString buff = stream.readAll();
00479     file.close();
00480 
00481     QString fitxersortidatxt = "";
00482 
00484     fitxersortidatxt = "<blockTable style=\"tabla\" colWidths=\"3cm, 15cm\" repeatRows=\"1\">";
00485     fitxersortidatxt += "<tr>";
00486     fitxersortidatxt += "        <td>" + tr("Codigo") + "</td>";
00487     fitxersortidatxt += "        <td>" + tr("Nombre") + "</td>";
00488     fitxersortidatxt += "</tr>";
00489 
00490     cursor2 *cur = companyact->cargacursor("SELECT * FROM familia ORDER BY codigocompletofamilia");
00491     while(!cur->eof()) {
00492         fitxersortidatxt += "<tr>";
00493         fitxersortidatxt += "        <td>" + cur->valor("codigocompletofamilia") + "</td>";
00494         fitxersortidatxt += "        <td>" + cur->valor("nombrefamilia") + "</td>";
00495         fitxersortidatxt += "</tr>";
00496         cur->siguienteregistro();
00497     } // end if
00498     delete cur;
00499     fitxersortidatxt += "</blockTable>";
00500 
00501     buff.replace("[story]", fitxersortidatxt);
00502 
00503     if (file.open(QIODevice::WriteOnly)) {
00504         QTextStream stream(&file);
00505         stream << buff;
00506         file.close();
00507     } // end if
00508     invocaPDF("familias");
00509     _depura("END FamiliasView::on_mui_imprimir_clicked", 0);
00510 }
00511 
00512 
00514 
00516 void FamiliasView::on_mui_aceptar_clicked() {
00517     _depura("FamiliasView::on_mui_aceptar_clicked", 0);
00518     QTreeWidgetItem *it = m_listFamilias->currentItem();
00519     if (it) {
00520         m_idfamilia = it->text(COL_IDFAMILIA);
00521     } else {
00522         m_idfamilia = "";
00523     } // end if
00524     FichaBf::on_mui_aceptar_clicked();
00525     _depura("END FamiliasView::on_mui_aceptar_clicked", 0);
00526 }
00527 
00528 
00530 
00532 void FamiliasView::setModoConsulta() {
00533     m_modoConsulta = TRUE;
00534 }
00535 
00536 
00538 
00540 void FamiliasView::setModoEdicion() {
00541     m_modoConsulta = FALSE;
00542 }
00543 
00544 
00545 
00546 

Generated on Sat Dec 15 00:01:13 2007 for BulmaGes by  doxygen 1.5.1