00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <QMap>
00022 #include <QLineEdit>
00023 #include <QMessageBox>
00024
00025 #include "tiposarticuloview.h"
00026 #include "company.h"
00027 #include "funcaux.h"
00028
00029 #define COL_IDTIPOARTICULO 0
00030 #define COL_CODTIPOARTICULO 1
00031 #define COL_DESCTIPOARTICULO 2
00032
00033
00035
00040 TipoArticuloList::TipoArticuloList(Company *comp, QWidget *parent, bool modoConsulta)
00041 : Ficha(parent) {
00042 _depura("TipoArticuloList::TipoArticuloList", 0);
00043 setupUi(this);
00044 companyact = comp;
00045 m_listTipos->setColumnCount(3);
00046 QStringList headers;
00047 headers << tr("Id") << tr("Codigo") << tr("Descripcion");
00048 m_listTipos->setHeaderLabels(headers);
00049 m_idtipo = "";
00050 if (modoConsulta) {
00051 setModoConsulta();
00052 groupBox1->hide();
00053 mui_detalles->hide();
00054 mui_crear->hide();
00055 mui_guardar->hide();
00056 mui_borrar->hide();
00057 mui_cancelar->hide();
00058 mui_aceptar->hide();
00059 } else {
00060 setModoEdicion();
00061 setAttribute(Qt::WA_DeleteOnClose);
00062 companyact->meteWindow(windowTitle(), this);
00063 }
00064 pintar();
00065 _depura("END TipoArticuloList::TipoArticuloList", 0);
00066 }
00067
00068
00070
00072 TipoArticuloList::~TipoArticuloList() {
00073 _depura("TipoArticuloList::~TipoArticuloList", 0);
00074 _depura("END TipoArticuloList::~TipoArticuloList", 0);
00075 }
00076
00077
00079
00081 void TipoArticuloList::setModoConsulta() {
00082 _depura("TipoArticuloList::setModoConsulta", 0);
00083 m_modoConsulta = TRUE;
00084 _depura("TipoArticuloList::setModoConsulta", 0);
00085 }
00086
00087
00089
00091 void TipoArticuloList::setModoEdicion() {
00092 _depura("TipoArticuloList::setModoEdicion", 0);
00093 m_modoConsulta = FALSE;
00094 _depura("END TipoArticuloList::setModoEdicion", 0);
00095 }
00096
00097
00098
00100
00102 void TipoArticuloList::pintar() {
00103 _depura("TipoArticuloList::pintar", 0);
00104 cursor2 *cursoraux1 = NULL;
00105 try {
00106 QTreeWidgetItem * it;
00107
00110 while (m_listTipos->topLevelItemCount() > 1) {
00111 it = m_listTipos->topLevelItem(0);
00112 delete it;
00113 }
00114 it = m_listTipos->topLevelItem(0);
00115 if (it) it->setHidden(TRUE);
00116
00117 cursoraux1 = companyact->cargacursor("SELECT * FROM tipo_articulo ORDER BY codtipo_articulo");
00118 while (!cursoraux1->eof()) {
00119 it = new QTreeWidgetItem(m_listTipos);
00120 it->setText(COL_IDTIPOARTICULO, cursoraux1->valor("idtipo_articulo"));
00121 it->setText(COL_CODTIPOARTICULO,cursoraux1->valor("codtipo_articulo"));
00122 it->setText(COL_DESCTIPOARTICULO, cursoraux1->valor("desctipo_articulo"));
00123
00124 cursoraux1->siguienteregistro();
00125 }
00126 delete cursoraux1;
00127 m_idtipo = "";
00129 dialogChanges_cargaInicial();
00130 _depura("END TipoArticuloList::pintar", 0);
00131 } catch (...) {
00132 mensajeInfo("Error en la carga");
00133 if (cursoraux1) delete cursoraux1;
00134 }
00135 }
00136
00137
00139
00142 QString TipoArticuloList::codtipo_articulo() {
00143 _depura("TipoArticuloList::codtipo_articulo", 0);
00144 QTreeWidgetItem *it = m_listTipos->currentItem();
00145 if (it) {
00146 return it->text(COL_CODTIPOARTICULO);
00147 } else {
00148 return "";
00149 }
00150 _depura("END TipoArticuloList::codtipo_articulo", 0);
00151 }
00152
00153
00155
00158 QString TipoArticuloList::idtipo_articulo() {
00159 _depura("TipoArticuloList::idtipo_articulo", 0);
00160 QTreeWidgetItem *it = m_listTipos->currentItem();
00161 if (it) {
00162 return it->text(COL_IDTIPOARTICULO);
00163 } else {
00164 return "";
00165 }
00166 _depura("TipoArticuloList::idtipo_articulo", 0);
00167 }
00168
00169
00171
00174 QString TipoArticuloList::desctipo_articulo() {
00175 _depura("TipoArticuloList::desctipo_articulo", 0);
00176 QTreeWidgetItem *it = m_listTipos->currentItem();
00177 if (it) {
00178 return it->text(COL_DESCTIPOARTICULO);
00179 } else {
00180 return "";
00181 }
00182 _depura("END TipoArticuloList::desctipo_articulo", 0);
00183 }
00184
00185
00189
00192 void TipoArticuloList::on_m_listTipos_itemDoubleClicked(QTreeWidgetItem *item, int) {
00193 if (m_modoConsulta) {
00194 _depura("TipoArticuloList::on_m_listTipos_itemDoubleClicked", 0);
00195 m_idtipo = item->text(COL_IDTIPOARTICULO);
00196 emit selected(m_idtipo);
00197 }
00198 _depura("END TipoArticuloList::on_m_listTipos_itemDoubleClicked", 0);
00199 }
00200
00201
00205
00208 void TipoArticuloList::on_m_listTipos_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *) {
00209 _depura("TipoArticuloList::on_m_listTipos_currentItemChanged", 0);
00210 QString idtipoold = current->text(COL_IDTIPOARTICULO);
00211 if (idtipoold != "") {
00213 trataModificado();
00214 m_idtipo = idtipoold;
00215 mostrarplantilla();
00216 }
00217 _depura("END TipoArticuloList::on_m_listTipos_currentItemChanged", 0);
00218 }
00219
00220
00222
00224 void TipoArticuloList::mostrarplantilla() {
00225 _depura("TipoArticuloList::mostrarplantilla", 0);
00226 QString query;
00227 query = "SELECT * from tipo_articulo WHERE idtipo_articulo = " + m_idtipo;
00228 cursor2 *cursortipo = companyact->cargacursor(query);
00229 if (!cursortipo->eof()) {
00230 m_codTipo->setText(cursortipo->valor("codtipo_articulo"));
00231 m_descTipo->setPlainText(cursortipo->valor("desctipo_articulo"));
00232 }
00233 delete cursortipo;
00235 dialogChanges_cargaInicial();
00236 _depura("END TipoArticuloList::mostrarplantilla", 0);
00237 }
00238
00239
00240
00242
00245 bool TipoArticuloList::trataModificado() {
00246 _depura("TipoArticuloList::trataModificado", 0);
00248 if (dialogChanges_hayCambios()) {
00249 if (QMessageBox::warning(this,
00250 tr("Guardar familia"),
00251 tr("Desea guardar los cambios?"),
00252 QMessageBox::Ok,
00253 QMessageBox::Cancel) == QMessageBox::Ok)
00254 on_mui_guardar_clicked();
00255 _depura("END TipoArticuloList::trataModificado", 0);
00256 return TRUE;
00257 }
00258 return FALSE;
00259 }
00260
00261
00264
00267 int TipoArticuloList::guardar() {
00268 QString query = "UPDATE tipo_articulo SET codtipo_articulo = '" +
00269 companyact->sanearCadena(m_codTipo->text()) + "', desctipo_articulo = '" +
00270 companyact->sanearCadena(m_descTipo->toPlainText()) + "' WHERE idtipo_articulo = " + m_idtipo;
00271 companyact->begin();
00272 int error = companyact->ejecuta(query);
00273 if (error) {
00274 companyact->rollback();
00275 return -1;
00276 }
00277 companyact->commit();
00278
00279
00281 QList<QTreeWidgetItem *> listit = m_listTipos->findItems(m_idtipo, Qt::MatchExactly, COL_IDTIPOARTICULO);
00282 QTreeWidgetItem *it = listit.first();
00283 cursor2 *cursoraux1 = companyact->cargacursor("SELECT * FROM tipo_articulo WHERE idtipo_articulo = " + m_idtipo);
00284 if (!cursoraux1->eof()) {
00285 it->setText(COL_IDTIPOARTICULO, cursoraux1->valor("idtipo_articulo"));
00286 it->setText(COL_CODTIPOARTICULO,cursoraux1->valor("codtipo_articulo"));
00287 it->setText(COL_DESCTIPOARTICULO, cursoraux1->valor("desctipo_articulo"));
00288 }
00289 delete cursoraux1;
00290 return 0;
00291 }
00292
00293
00296
00299 void TipoArticuloList::on_mui_crear_clicked() {
00300 _depura("TipoArticuloList::on_mui_crear_clicked", 0);
00301 cursor2 *cur = NULL;
00303 trataModificado();
00304 try {
00305 QString query = "INSERT INTO tipo_articulo (codtipo_articulo, desctipo_articulo) VALUES ('XXXXXX', 'Descripcion del tipo')";
00306 companyact->begin();
00307 int error = companyact->ejecuta(query);
00308 if (error) throw -1;
00309 cur = companyact->cargacursor("SELECT max(idtipo_articulo) AS idtipo FROM tipo_articulo");
00310 companyact->commit();
00311 m_idtipo = cur->valor("idtipo");
00312 delete cur;
00313 pintar();
00314 _depura("END TipoArticuloList::on_mui_crear_clicked", 0);
00315 } catch (...) {
00316 mensajeInfo("Error en la creacion");
00317 companyact->rollback();
00318 return;
00319 }
00320 }
00321
00322
00325
00328 void TipoArticuloList::on_mui_borrar_clicked() {
00329 _depura("TipoArticuloList::on_mui_borrar_clicked", 0);
00330 QTreeWidgetItem *it = m_listTipos->currentItem();
00331 if (!it)
00332 return;
00333 trataModificado();
00334 QString query = "DELETE FROM tipo_articulo WHERE idtipo_articulo = " + m_idtipo;
00335 int error = companyact->ejecuta(query);
00336 if (error) {
00337 return;
00338 }
00339 it = m_listTipos->takeTopLevelItem(m_listTipos->indexOfTopLevelItem(m_listTipos->currentItem()));
00340 delete it;
00341 _depura("END TipoArticuloList::on_mui_borrar_clicked", 0);
00342 }
00343