mticket.cpp

Go to the documentation of this file.
00001 
00002 #include <QLabel>
00003 #include "mticket.h"
00004 #include "dbrecord.h"
00005 #include "bulmatpv.h"
00006 #include "subform2bt.h"
00007 #include <QTextBrowser>
00008 
00009 extern QTextBrowser *g_browser;
00010 
00013 typedef QMap<QString, Fixed> base;
00014 
00015 
00016 MTicket::MTicket(EmpresaTPV *emp, QWidget *parent) : BLWidget(emp, parent) {
00017     _depura("MTicket::MTicket", 0);
00018     setupUi(this);
00019     emp->pWorkspace()->addWindow(this);
00020     setWindowTitle("Ticket");
00021     _depura("END MTicket::MTicket", 0);
00022 }
00023 
00024 
00025 MTicket::~MTicket() {
00026     _depura("MTicket::~MTicket", 0);
00027     _depura("END MTicket::~MTicket", 0);
00028 }
00029 
00030 
00031 void MTicket::pintar() {
00032     _depura("MTicket::pintar", 0);
00033         Ticket *tick =     ((EmpresaTPV *)empresaBase())->ticketActual();
00034     //QString html = "<font size=\"1\">";
00035     QString html = "<p style=\"font-family:monospace; font-size: 12pt;\">";
00036     QString html1 = "<font size=\"1\">";
00037 
00038     html1 += "Ticket: " + tick->DBvalue("nomticket") + "<BR>";
00039     html1 += "Trabajador: " + tick->DBvalue("idtrabajador") + "<BR>";
00040     QString query = "SELECT * FROM cliente WHERE idcliente = " + tick->DBvalue("idcliente");
00041     cursor2 *cur1 = empresaBase()->cargacursor(query);
00042     html1 += "Cliente: " + tick->DBvalue("idcliente") + " " + cur1->valor("nomcliente") + "<BR>";
00043     delete cur1;
00044         
00045     html += "<TABLE border=\"0\">";
00046     DBRecord *item;
00047     for (int i = 0; i < tick->listaLineas()->size(); ++i) {
00048         item = tick->listaLineas()->at(i);
00049         QString bgcolor="#FFFFFF";
00050         if (item == tick->lineaActTicket()) bgcolor="#CCCCFF";
00051         html += "<TR>";
00052         html += "<TD bgcolor=\"" + bgcolor +"\" align=\"right\" width=\"50\">" + item->DBvalue("cantlalbaran") + "</TD>";
00053         html += "<TD bgcolor=\"" + bgcolor +"\">" + item->DBvalue("nomarticulo") + "</TD>";
00054         Fixed totalLinea("0.00");
00055         totalLinea = Fixed(item->DBvalue("cantlalbaran")) * Fixed(item->DBvalue("pvplalbaran"));
00056         html += "<TD bgcolor=\"" + bgcolor +"\" align=\"right\" width=\"50\">" + totalLinea.toQString(); + "</TD>";
00057         html += "</TR>";
00058     }// end for
00059     html += "</TABLE>";
00060 
00061 // ======================================
00062     html += "<BR><HR><BR>";
00063     base basesimp;
00064     base basesimpreqeq;
00065     DBRecord *linea;
00067     QString l;
00068     Fixed irpf("0");
00069 
00070     cursor2 *cur = empresaBase()->cargacursor("SELECT * FROM configuracion WHERE nombre = 'IRPF'");
00071     if (cur) {
00072         if (!cur->eof()) {
00073             irpf = Fixed(cur->valor("valor"));
00074         } // end if
00075         delete cur;
00076     } // end if
00077 
00078 
00079     Fixed descuentolinea("0.00");
00080     for (int i = 0; i < tick->listaLineas()->size(); ++i) {
00081         linea = tick->listaLineas()->at(i);
00082         Fixed cant(linea->DBvalue("cantlalbaran"));
00083         Fixed pvpund(linea->DBvalue("pvplalbaran"));
00084         Fixed desc1(linea->DBvalue("descuentolalbaran"));
00085         Fixed cantpvp = cant * pvpund;
00086         Fixed base = cantpvp - cantpvp * desc1 / 100;
00087         descuentolinea = descuentolinea + (cantpvp * desc1 / 100);
00088         basesimp[linea->DBvalue("ivalalbaran")] = basesimp[linea->DBvalue("ivalalbaran")] + base;
00089         basesimpreqeq[linea->DBvalue("reqeqlalbaran")] = basesimpreqeq[linea->DBvalue("reqeqlalbaran")] + base;
00090     } // end for
00091 
00092     Fixed basei("0.00");
00093     base::Iterator it;
00094     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00095         basei = basei + it.value();
00096     } // end for
00097 
00100     Fixed porcentt("0.00");
00101 /*
00102     SDBRecord *linea1;
00103     if (m_listadescuentos->rowCount()) {
00104         for (int i = 0; i < m_listadescuentos->rowCount(); ++i) {
00105             linea1 = m_listadescuentos->lineaat(i);
00106             Fixed propor(linea1->DBvalue("proporcion" + m_listadescuentos->tableName()).toAscii().constData());
00107             porcentt = porcentt + propor;
00108         } // end for
00109     } // end if
00110 */
00111 
00113     Fixed totbaseimp("0.00");
00114     Fixed parbaseimp("0.00");
00115     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00116         if (porcentt > Fixed("0.00")) {
00117             parbaseimp = it.value() - it.value() * porcentt / 100;
00118         } else {
00119             parbaseimp = it.value();
00120         } // end if
00121         html1 += "Base Imp " + it.key() + "% "+parbaseimp.toQString() + "<BR>"; 
00122         totbaseimp = totbaseimp + parbaseimp;
00123     } // end for
00124 
00126     Fixed totiva("0.00");
00127     Fixed pariva("0.00");
00128     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00129         Fixed piva(it.key().toAscii().constData());
00130         if (porcentt > Fixed("0.00")) {
00131             pariva = (it.value() - it.value() * porcentt / 100) * piva / 100;
00132         } else {
00133             pariva = it.value() * piva / 100;
00134         } // end if
00135         html1 += "IVA " + it.key() + "% "+pariva.toQString() + "<BR>"; 
00136         totiva = totiva + pariva;
00137     } // end for
00138 
00140     Fixed totreqeq("0.00");
00141     Fixed parreqeq("0.00");
00142     for (it = basesimpreqeq.begin(); it != basesimpreqeq.end(); ++it) {
00143         Fixed preqeq(it.key().toAscii().constData());
00144         if (porcentt > Fixed("0.00")) {
00145             parreqeq = (it.value() - it.value() * porcentt / 100) * preqeq / 100;
00146         } else {
00147             parreqeq = it.value() * preqeq / 100;
00148         } // end if
00149         html1 += "R.Eq " + it.key() + "% "+parreqeq.toQString() + "<BR>"; 
00150         totreqeq = totreqeq + parreqeq;
00151     } // end for
00152 
00153 
00154 
00155     Fixed totirpf = totbaseimp * irpf / 100;
00156 
00157         html1 += "<B>Base Imp. " + totbaseimp.toQString() + "<BR>"; 
00158         html1 += "<B>IVA. " + totiva.toQString() + "<BR>"; 
00159         html1 += "<B>IRPF. " + totirpf.toQString() + "<BR>"; 
00160 
00161         Fixed total = totiva + totbaseimp + totreqeq - totirpf;
00162         html1 += "<B>Total: " + total.toQString() + "<BR>"; 
00163 
00164 
00165 
00166         html += "</p>";
00167         html1 += "</FONT>";
00168 
00169 // ======================================
00171     mui_browser->setText(html);
00172     g_browser->setText(html1);
00173     _depura("END MTicket::pintar", 0);
00174 }
00175 
00176 
00177 void MTicket::on_mui_subir_clicked() {
00179 ((EmpresaTPV *)empresaBase())->pulsaTecla(Qt::Key_Up);
00180 
00181 }
00182 
00183 
00184 void MTicket::on_mui_bajar_clicked() {
00186 ((EmpresaTPV *)empresaBase())->pulsaTecla(Qt::Key_Down);
00187 }
00188 
00189 
00190 void MTicket::on_mui_borrar_clicked() {
00191 
00192     Ticket *tick = ((EmpresaTPV *)empresaBase())->ticketActual();
00193     tick->ponerCantidad("0");
00194 
00195     pintar();
00196 }
00197 
00199 
00200 
00201 
00203 
00205 myplugin::myplugin() {
00206     _depura("myplugin::myplugin", 0);
00207     _depura("END myplugin::myplugin", 0);
00208 }
00209 
00210 
00212 
00214 myplugin::~myplugin() {
00215     _depura("myplugin::~myplugin", 0);
00216     _depura("END myplugin::~myplugin", 0);
00217 }
00218 
00219 
00221 
00223 void myplugin::elslot(QTableWidgetItem *) {
00224     _depura("myplugin::elslot", 0);
00225     QString idarticulo =  m_lan->DBvalue("idarticulo");
00226     m_tpv->empresaTPV()->ticketActual()->insertarArticulo(idarticulo, Fixed("1"));
00227     _depura("END myplugin::elslot", 0);
00228 }
00229 
00230 
00232 
00235 void myplugin::inicializa(BulmaTPV *tpv) {
00236     _depura("myplugin::inicializa", 0);
00237     m_tpv = tpv;
00238 
00239     m_lan = new SubForm2Bt(NULL);
00240     m_lan->setEmpresaBase(tpv->empresaTPV());
00241     m_lan->setDBTableName("articulo");
00242     m_lan->setDBCampoId("idarticulo");
00243     m_lan->addSHeader("idarticulo", DBCampo::DBint, DBCampo::DBNotNull | DBCampo::DBPrimaryKey, SHeader::DBNoView | SHeader::DBNoWrite, QApplication::translate("ticketbasico", "ID articulo"));
00244     m_lan->addSHeader("codigocompletoarticulo", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, QApplication::translate("ticketbasico","Codigo completo del articulo"));
00245     m_lan->addSHeader("nomarticulo", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, QApplication::translate("ticketbasico","Nombre del articulo"));
00246     m_lan->addSHeader("abrevarticulo", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, QApplication::translate("ticketbasico","Descripcion abreviada del articulo"));
00247     m_lan->addSHeader("obserarticulo", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, QApplication::translate("ticketbasico","Observaciones sobre el articulo"));
00248     m_lan->addSHeader("desctipo_articulo", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, QApplication::translate("ticketbasico","Descripcion del tipo de articulo"));
00249     m_lan->addSHeader("desctipo_iva", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, QApplication::translate("ticketbasico","Descripcion tipo de I.V.A."));
00250     m_lan->addSHeader("pvparticulo", DBCampo::DBnumeric, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, QApplication::translate("ticketbasico","P.V.P. articulo"));
00251     m_lan->addSHeader("stockarticulo", DBCampo::DBnumeric, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, QApplication::translate("ticketbasico","Disponible en stock"));
00252     m_lan->setinsercion(FALSE);
00253     m_lan->setDelete(FALSE);
00254     m_lan->setSortingEnabled(TRUE);
00255     tpv->workspace()->addWindow(m_lan);
00256     m_lan->showFullScreen();
00257     m_lan->cargar("SELECT * FROM articulo");
00258 
00259     connect(m_lan, SIGNAL(itemDoubleClicked(QTableWidgetItem *)), this, SLOT(elslot(QTableWidgetItem *)));
00260     _depura("END myplugin::inicializa", 0);
00261 }

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