diarioview.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2003 by Tomeu Borras                                    *
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 <QWidget>
00022 #include <QLineEdit>
00023 #include <QColor>
00024 #include <QLayout>
00025 #include <QCheckBox>
00026 #include <QPixmap>
00027 #include <QTextStream>
00028 #include <QFileDialog>
00029 
00030 #include "empresa.h"
00031 #include "diarioview.h"
00032 #include "funcaux.h"
00033 #include "diarioprintview.h"
00034 #include "diarioprint.h"
00035 #include "configuracion.h"
00036 #include "asiento1view.h"
00037 #include "extractoview1.h"
00038 #include "balanceview.h"
00039 #include "selectccosteview.h"
00040 #include "selectcanalview.h"
00041 #include "busquedafecha.h"
00042 
00043 
00045 
00049 DiarioView::DiarioView(Empresa  *emp, QWidget *parent, int)
00050         : FichaBc(emp, parent) {
00051     _depura("DiarioView::DiarioView", 0);
00052     setupUi(this);
00053 
00054     setTitleName(tr("Diario"));
00056     setDBTableName("apunte");
00057 
00058     mui_list->setEmpresaBase(emp);
00059     mui_contrapartida->setEmpresaBase(emp);
00062     char cadena[10];
00063     sprintf(cadena, "%2.2d/%2.2d/%4.4d", 1, 1, QDate::currentDate().year());
00064     mui_fechainicial->setText(cadena);
00065     sprintf(cadena, "%2.2d/%2.2d/%4.4d", 31, 12, QDate::currentDate().year());
00066     mui_fechafinal->setText(cadena);
00067     meteWindow(windowTitle(), this);
00068     _depura("END DiarioView::DiarioView", 0);
00069 }
00070 
00071 
00073 
00075 DiarioView::~DiarioView() {
00076     _depura("DiarioView::~DiarioView", 0);
00077     empresaBase()->sacaWindow(this);
00078     _depura("END DiarioView::~DiarioView", 0);
00079 }
00080 
00081 
00084 void DiarioView::on_mui_actualizar_clicked() {
00085     _depura("DiarioView::on_mui_actualizar_clicked", 0);
00086     accept();
00087     _depura("END DiarioView::on_mui_actualizar_clicked", 0);
00088 }
00089 
00090 
00092 
00094 void DiarioView::on_mui_configurar_clicked() {
00095     _depura("DiarioView::on_mui_configurar_clicked", 0);
00096     mui_list->showConfig();
00097     _depura("END DiarioView::on_mui_configurar_clicked", 0);
00098 }
00099 
00100 
00102 
00106 void DiarioView::inicializa1(QString finicial, QString ffinal, int) {
00107     _depura("DiarioView::inicializa1", 0);
00108     QString s1, s2, s3;
00109     QDate fecha1aux;
00110     int dia, mes, ano;
00111 
00112     s1 = finicial;
00113     s2 = s1.mid(0, 2);
00114     dia = atoi(s2.toAscii());
00115     s2 = s1.mid(3, 2);
00116     mes = atoi(s2.toAscii());
00117     s2 = s1.mid(6, 4);
00118     ano = atoi(s2.toAscii());
00119     fecha1aux.setYMD(ano, mes, dia);
00120     QString cadena2;
00121     cadena2.sprintf("%2.2d/%2.2d/%4.4d", fecha1aux.day(), fecha1aux.month(), fecha1aux.year());
00122     mui_fechainicial->setText(cadena2);
00123 
00124     s1 = ffinal;
00125     s2 = s1.mid(0,2);
00126     dia = atoi(s2.toAscii());
00127     s2 = s1.mid(3,2);
00128     mes = atoi(s2.toAscii());
00129     s2 = s1.mid(6,4);
00130     ano = atoi(s2.toAscii());
00131     fecha1aux.setYMD(ano, mes, dia);
00132     cadena2.sprintf("%2.2d/%2.2d/%4.4d", fecha1aux.day(), fecha1aux.month(), fecha1aux.year());
00133     mui_fechafinal->setText(cadena2);
00134     _depura("END DiarioView::inicializa1", 0);
00135 }
00136 
00137 
00139 
00142 void DiarioView::boton_imprimir() {
00143     _depura("DiarioView::boton_imprimir", 0);
00144     DiarioPrintView *print = new DiarioPrintView(empresaBase(), 0);
00145     print->exec();
00146     _depura("END DiarioView::boton_imprimir", 0);
00147 }
00148 
00149 
00151 
00153 void DiarioView::boton_guardar() {
00154     _depura("DiarioView::boton_guardar", 0);
00155     QString fn = QFileDialog::getSaveFileName(this,
00156                  tr("Guardar Libro Diario"),
00157                  confpr->valor(CONF_DIR_USER),
00158                  tr("Diarios (*.txt)"));
00159 
00160     if (!fn.isEmpty()) {
00163         DiarioPrint diariop(empresaBase());
00164         QString finicial = mui_fechainicial->text();
00165         QString ffinal = mui_fechafinal->text();
00166         diariop.setEmpresaBase(empresaBase());
00167         diariop.inicializa1((char *) finicial.toAscii().constData(), (char *)ffinal.toAscii().constData());
00168         diariop.inicializa2((char *) fn.toAscii().constData());
00169         diariop.accept();
00170     } // end if
00171     _depura("END DiarioView::boton_guardar", 0);
00172 }
00173 
00174 
00176 
00178 void DiarioView::accept() {
00179     _depura("DiarioView::accept", 0);
00180     presentar();
00181     _depura("END DiarioView::accept", 0);
00182 }
00183 
00184 
00186 
00188 void DiarioView::presentar() {
00189     _depura("DiarioView::presentar", 0);
00190     cursor2 *cur = NULL;
00191     try {
00192         QString tabla = "apunte";
00193         mui_list->setDBTableName("apunte");
00194         mui_list->setDBCampoId("idapunte");
00195         if (mui_asAbiertos->isChecked()) {
00196             tabla = "borrador";
00197             mui_list->setDBTableName("borrador");
00198             mui_list->setDBCampoId("idborrador");
00199         } // end if
00200 
00201         QString query = "SELECT *, cuenta.descripcion AS descripcioncuenta FROM "+tabla+" LEFT JOIN cuenta ON cuenta.idcuenta = "+tabla+".idcuenta ";
00202         query += " LEFT JOIN (SELECT idc_coste, nombre AS nombrec_coste FROM c_coste) AS t1 ON t1.idc_coste = "+tabla+".idc_coste ";
00203         query += " LEFT JOIN (SELECT (ordenasiento || ' - ' || fecha) AS ordenasientoconfecha, ordenasiento, idasiento, fecha FROM asiento) AS t5 ON t5.idasiento = "+tabla+".idasiento";
00204         query += " LEFT JOIN (SELECT idcanal, nombre as nombrecanal FROM canal) AS t2 ON t2.idcanal = "+tabla+".idcanal";
00205         if (mui_asAbiertos->isChecked()) {
00206             query += " LEFT JOIN (SELECT idregistroiva, factura, idborrador FROM registroiva) AS t3 ON t3.idborrador = "+tabla+".idborrador ";
00207         } else {
00208             query += " LEFT JOIN (SELECT idregistroiva, factura, idborrador FROM registroiva) AS t3 ON t3.idborrador IN (SELECT idborrador FROM borrador WHERE idapunte = "+tabla+".idapunte)";
00209         } // end if
00210         query += " LEFT JOIN (SELECT idcuenta AS idcontrapartida, codigo AS codcontrapartida FROM cuenta) as t8 ON t8.idcontrapartida = "+tabla+".contrapartida";
00211 
00212         QString cad = "";
00213         QString cadwhere=" WHERE ";
00214         QString cadand = "";
00215         QString totalcadena = "";
00216 
00217         if (mui_fechainicial->text() != "") {
00218             cad += cadwhere + cadand + tabla + ".fecha >= '" + mui_fechainicial->text() + "'";
00219             cadwhere = "";
00220             cadand = " AND ";
00221         } // end if
00222 
00223         if (mui_fechafinal->text() != "") {
00224             cad += cadwhere + cadand + tabla + ".fecha <= '" + mui_fechafinal->text() + "'";
00225             cadwhere = "";
00226             cadand = " AND ";
00227         } // end if
00228 
00229         // Consideraciones para centros de coste y canales
00230         selectcanalview *scanal=empresaBase()->getselcanales();
00231         SelectCCosteView *scoste=empresaBase()->getselccostes();
00232         QString ccostes = scoste->cadcoste();
00233         if (ccostes != "") {
00234             ccostes = " " + tabla +".idc_coste IN (" + ccostes + ") ";
00235             cad += cadwhere + cadand + ccostes;
00236             cadwhere = "";
00237             cadand = " AND ";
00238         } // end if
00239 
00240         QString ccanales = scanal->cadcanal();
00241         if (ccanales != "") {
00242             ccanales = " " + tabla + ".idcanal IN (" + ccanales + ") ";
00243             cad += cadwhere + cadand + ccanales;
00244             cadwhere = "";
00245             cadand = " AND ";
00246         } // end if
00247 
00248         totalcadena = query + cad + " ORDER BY t5.fecha, t5.ordenasiento ";
00249 
00250         mui_list->cargar(totalcadena);
00251 
00252         cur = empresaBase()->cargacursor("SELECT sum(debe) as totaldebe, sum(haber) as totalhaber from " + tabla + cad);
00253         if (!cur->eof()) {
00254             totaldebe->setText(cur->valor("totaldebe"));
00255             totalhaber->setText(cur->valor("totalhaber"));
00256         } // end if
00257         delete cur;
00258         _depura("END DiarioView::presentar", 0);
00259     } catch (...) {
00260         mensajeInfo("Error en los calculos");
00262         if (cur) delete cur;
00263     }// end try
00264 }
00265 
00267 
00269 void DiarioView::on_mui_imprimir_clicked() {
00270     _depura("DiarioView::on_mui_imprimir_clicked", 0);
00271     mui_list->imprimirPDF("diario");
00272     _depura("END DiarioView::on_mui_imprimir_clicked", 0);
00273 }
00274 

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