00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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 }
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 }
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 }
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 }
00222
00223 if (mui_fechafinal->text() != "") {
00224 cad += cadwhere + cadand + tabla + ".fecha <= '" + mui_fechafinal->text() + "'";
00225 cadwhere = "";
00226 cadand = " AND ";
00227 }
00228
00229
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 }
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 }
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 }
00257 delete cur;
00258 _depura("END DiarioView::presentar", 0);
00259 } catch (...) {
00260 mensajeInfo("Error en los calculos");
00262 if (cur) delete cur;
00263 }
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