plugintotal.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2005 by Tomeu Borras Riera                              *
00003  *   tborras@conetxia.com                                                  *
00004  *   Copyright (C) 2006 by Fco. Javier M. C.                               *
00005  *   fcojavmc@todo-redes.com                                               *
00006  *                                                                         *
00007  *   This program is free software; you can redistribute it and/or modify  *
00008  *   it under the terms of the GNU General Public License as published by  *
00009  *   the Free Software Foundation; either version 2 of the License, or     *
00010  *   (at your option) any later version.                                   *
00011  *                                                                         *
00012  *   This program is distributed in the hope that it will be useful,       *
00013  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00014  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00015  *   GNU General Public License for more details.                          *
00016  *                                                                         *
00017  *   You should have received a copy of the GNU General Public License     *
00018  *   along with this program; if not, write to the                         *
00019  *   Free Software Foundation, Inc.,                                       *
00020  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
00021  ***************************************************************************/
00022 
00023 
00024 #include "plugintotal.h"
00025 #include "funcaux.h"
00026 #include "empresatpv.h"
00027 #include "total.h"
00028 #include "plugins.h"
00029 #include "ticket.h"
00030 #include "qapplication2.h"
00031 
00034 typedef QMap<QString, Fixed> base;
00035 
00036 
00037 Total *g_tot;
00038 QDockWidget *g_doc1;
00040 
00043 int entryPoint(BulmaTPV *tpv) {
00044     _depura("entryPoint", 0);
00045 
00047     g_doc1 = new QDockWidget("Total", tpv);
00048     g_doc1->setFeatures(QDockWidget::AllDockWidgetFeatures);
00049 
00050     g_doc1->setGeometry(100, 100, 100, 500);
00051     g_doc1->resize(330, 400);
00052     tpv->addDockWidget(Qt::LeftDockWidgetArea, g_doc1);
00053     g_doc1->show();
00054 
00055     _depura("END entryPoint", 0);
00056     return 0;
00057 }
00058 
00059 int EmpresaTPV_createMainWindows_Post(EmpresaTPV *etpv) {
00060         g_tot = new Total(etpv, g_doc1);
00061 //      etpv->pWorkspace()->addWindow(g_tot);
00062         g_doc1->setWidget(g_tot);
00063 
00064 //        ((BulmaTPV *)etpv->parent())->addDockWidget(Qt::LeftDockWidgetArea, g_tot);
00065         return 0;
00066 }
00067 
00068 int Ticket_pintar(Ticket *tick) {
00069 
00070     base basesimp;
00071     base basesimpreqeq;
00072     DBRecord *linea;
00073 
00074     EmpresaTPV *emp = (EmpresaTPV *)tick->empresaBase();
00075 
00077     QString l;
00078     Fixed irpf("0");
00079 
00080     cursor2 *cur = emp->cargacursor("SELECT * FROM configuracion WHERE nombre = 'IRPF'");
00081     if (cur) {
00082         if (!cur->eof()) {
00083             irpf = Fixed(cur->valor("valor"));
00084         } // end if
00085         delete cur;
00086     } // end if
00087 
00088 
00089     Fixed descuentolinea("0.00");
00090     for (int i = 0; i < tick->listaLineas()->size(); ++i) {
00091         linea = tick->listaLineas()->at(i);
00092         Fixed cant(linea->DBvalue("cantlalbaran"));
00093         Fixed pvpund(linea->DBvalue("pvplalbaran"));
00094         Fixed desc1(linea->DBvalue("descuentolalbaran"));
00095         Fixed cantpvp = cant * pvpund;
00096         Fixed base = cantpvp - cantpvp * desc1 / 100;
00097         descuentolinea = descuentolinea + (cantpvp * desc1 / 100);
00098         basesimp[linea->DBvalue("ivalalbaran")] = basesimp[linea->DBvalue("ivalalbaran")] + base;
00099         basesimpreqeq[linea->DBvalue("reqeqlalbaran")] = basesimpreqeq[linea->DBvalue("reqeqlalbaran")] + base;
00100     } // end for
00101 
00102     Fixed basei("0.00");
00103     base::Iterator it;
00104     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00105         basei = basei + it.value();
00106     } // end for
00107 
00110     Fixed porcentt("0.00");
00111 /*
00112     SDBRecord *linea1;
00113     if (m_listadescuentos->rowCount()) {
00114         for (int i = 0; i < m_listadescuentos->rowCount(); ++i) {
00115             linea1 = m_listadescuentos->lineaat(i);
00116             Fixed propor(linea1->DBvalue("proporcion" + m_listadescuentos->tableName()).toAscii().constData());
00117             porcentt = porcentt + propor;
00118         } // end for
00119     } // end if
00120 */
00121 
00123     Fixed totbaseimp("0.00");
00124     Fixed parbaseimp("0.00");
00125     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00126         if (porcentt > Fixed("0.00")) {
00127             parbaseimp = it.value() - it.value() * porcentt / 100;
00128         } else {
00129             parbaseimp = it.value();
00130         } // end if
00131         totbaseimp = totbaseimp + parbaseimp;
00132     } // end for
00133 
00135     Fixed totiva("0.00");
00136     Fixed pariva("0.00");
00137     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00138         Fixed piva(it.key().toAscii().constData());
00139         if (porcentt > Fixed("0.00")) {
00140             pariva = (it.value() - it.value() * porcentt / 100) * piva / 100;
00141         } else {
00142             pariva = it.value() * piva / 100;
00143         } // end if
00144         totiva = totiva + pariva;
00145     } // end for
00146 
00148     Fixed totreqeq("0.00");
00149     Fixed parreqeq("0.00");
00150     for (it = basesimpreqeq.begin(); it != basesimpreqeq.end(); ++it) {
00151         Fixed preqeq(it.key().toAscii().constData());
00152         if (porcentt > Fixed("0.00")) {
00153             parreqeq = (it.value() - it.value() * porcentt / 100) * preqeq / 100;
00154         } else {
00155             parreqeq = it.value() * preqeq / 100;
00156         } // end if
00157         totreqeq = totreqeq + parreqeq;
00158     } // end for
00159 
00160 
00161 
00162     Fixed totirpf = totbaseimp * irpf / 100;
00163 
00164         Fixed total = totiva + totbaseimp + totreqeq - totirpf;
00165 
00166 
00168     g_tot->mui_display->display(total.toQString());
00169 }
00170 
00171 

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