Ticket Class Reference

#include <ticket.h>

Inheritance diagram for Ticket:

BLWidget DBRecord QWidget PEmpresaBase

Public Slots

virtual void subir ()
virtual void bajar ()
virtual void agregarCantidad (QString cantidad)
virtual void ponerCantidad (QString cantidad)
virtual void ponerPrecio (QString precio)
virtual void insertarArticuloCodigo (QString)
virtual void insertarArticuloCodigoNL (QString)

Public Member Functions

virtual void pintar ()
 Ticket (EmpresaBase *emp=NULL, QWidget *parent=0)
virtual ~Ticket ()
QList< DBRecord * > * listaLineas ()
DBRecordinsertarArticulo (QString idArticulo, Fixed cantidad=Fixed("1"), bool nuevaLinea=FALSE)
void borrarArticulo (DBRecord *linea, Fixed cantidad=Fixed("1"))
void vaciarTicket ()
void subirPosArticulo (DBRecord *linea, int filas=1)
void bajarPosArticulo (DBRecord *linea, int filas=1)
void inicioPosTicket (DBRecord *)
void finPosTicket (DBRecord *)
DBRecordlineaTicket (int posicion)
DBRecordlineaActTicket ()
void setLineaActual (DBRecord *)
void setDescuentoGlobal (Fixed descuento)
virtual void imprimir ()
int guardar ()
 Guarda los datos de la ficha en la base de datos.

Private Member Functions

DBRecordagregarLinea ()

Private Attributes

QList< DBRecord * > * m_listaLineas
DBRecordm_lineaActual

Detailed Description

Definition at line 34 of file ticket.h.


Constructor & Destructor Documentation

Ticket::Ticket ( EmpresaBase emp = NULL,
QWidget parent = 0 
)

Definition at line 35 of file ticket.cpp.

References _depura(), DBRecord::addDBCampo(), CONF_IDALMACEN_DEFECTO, CONF_IDCLIENTE_DEFECTO, confpr, DBCampo::DBboolean, DBCampo::DBdate, DBCampo::DBint, DBCampo::DBNoSave, DBCampo::DBNothing, DBCampo::DBNotNull, DBCampo::DBPrimaryKey, DBCampo::DBvarchar, m_lineaActual, m_listaLineas, DBRecord::setDBCampoId(), DBRecord::setDBTableName(), DBRecord::setDBvalue(), and configuracion::valor().

00035                                                 : BLWidget(emp, parent), DBRecord(emp) {
00036     _depura("Ticket::Ticket", 0);
00038     setDBTableName ( "albaran" );
00039     setDBCampoId ( "idalbaran" );
00040     addDBCampo ( "descalbaran", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("Ticket", "descripcion"));
00041     addDBCampo ( "nomticket", DBCampo::DBvarchar, DBCampo::DBNoSave, QApplication::translate("Ticket", "nombre"));
00042     addDBCampo ( "idalbaran", DBCampo::DBint, DBCampo::DBPrimaryKey, QApplication::translate ( "Ticket", "Id albaran" ) );
00043     addDBCampo ( "fechaalbaran", DBCampo::DBdate, DBCampo::DBNothing, QApplication::translate ( "Ticket", "Id fechaalbaran" ) );
00044     addDBCampo ( "horaalbaran", DBCampo::DBvarchar, DBCampo::DBNoSave, QApplication::translate ( "Ticket", "hora" ) );
00045     addDBCampo ( "idtrabajador", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate ( "Ticket", "Trabajador" ) );
00046     addDBCampo ( "idcliente", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate ( "Ticket", "Cliente" ) );
00047     addDBCampo ( "idalmacen", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate ( "Ticket", "Almacen" ) );
00048     addDBCampo ( "numalbaran", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate ( "Ticket", "Num" ) );
00049     addDBCampo ( "refalbaran", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate ( "Ticket", "Referencia" ) );
00050     addDBCampo ( "ticketalbaran", DBCampo::DBboolean, DBCampo::DBNothing, QApplication::translate ( "Ticket", "Ticket" ) );
00051 
00052 
00053     setDBvalue("ticketalbaran", "TRUE");
00054     setDBvalue("idalmacen", confpr->valor(CONF_IDALMACEN_DEFECTO));
00055     setDBvalue("idcliente", confpr->valor(CONF_IDCLIENTE_DEFECTO));
00056     setDBvalue("descalbaran", "Ticket de venta");
00057 
00058     m_lineaActual = NULL;
00059     m_listaLineas = new QList<DBRecord *>;
00060 
00061     _depura("END Ticket::Ticket", 0);
00062 }

Ticket::~Ticket (  )  [virtual]

Definition at line 64 of file ticket.cpp.

References _depura().

00064                 {
00065     _depura("Ticket::~Ticket", 0);
00066     _depura("END Ticket::~Ticket", 0);
00067 }


Member Function Documentation

DBRecord * Ticket::agregarLinea (  )  [private]

Definition at line 69 of file ticket.cpp.

References _depura(), DBRecord::addDBCampo(), DBCampo::DBint, DBCampo::DBNoSave, DBCampo::DBNothing, DBCampo::DBNotNull, DBCampo::DBnumeric, DBCampo::DBPrimaryKey, DBRecord::DBRecord(), DBCampo::DBvarchar, PEmpresaBase::empresaBase(), m_listaLineas, DBRecord::setDBCampoId(), DBRecord::setDBTableName(), and DBRecord::setDBvalue().

Referenced by insertarArticulo().

00069                                 {
00070     _depura("Ticket::agregarLinea",0);
00071 
00073     DBRecord * item = new DBRecord(empresaBase());
00074     item->setDBTableName ( "lalbaran" );
00075     item->setDBCampoId ( "numlalbaran" );
00076     item->addDBCampo ( "idalbaran", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate ( "Ticket", "Id Albaran" ) );
00077     item->addDBCampo ( "numlalbaran", DBCampo::DBint, DBCampo::DBPrimaryKey, QApplication::translate ( "Ticket", "Id lalbaran" ) );
00078     item->addDBCampo ( "cantlalbaran", DBCampo::DBnumeric, DBCampo::DBNotNull, QApplication::translate ( "Ticket", "Cantidad" ) );
00079     item->addDBCampo ( "pvplalbaran", DBCampo::DBnumeric, DBCampo::DBNotNull, QApplication::translate ( "Ticket", "Precio" ) );
00080     item->addDBCampo ( "ivalalbaran", DBCampo::DBnumeric, DBCampo::DBNotNull, QApplication::translate ( "Ticket", "IVA" ) );
00081     item->addDBCampo ( "descuentolalbaran", DBCampo::DBnumeric, DBCampo::DBNothing, QApplication::translate ( "Ticket", "Descuento" ) );
00082     item->addDBCampo ( "ordenlalbaran", DBCampo::DBnumeric, DBCampo::DBNotNull, QApplication::translate ( "Ticket", "Orden" ) );
00083     item->addDBCampo ( "reqeqlalbaran", DBCampo::DBnumeric, DBCampo::DBNothing, QApplication::translate ( "Ticket", "REQ EQ" ) );
00084 //    item->addDBCampo ( "lotelalbaran", DBCampo::DBnumeric, DBCampo::DBNotNull, QApplication::translate ( "Ticket", "Lote" ) );
00085     item->addDBCampo ( "idarticulo", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate ( "Ticket", "Id Articulo" ) );
00086     item->addDBCampo ( "codigocompletoarticulo", DBCampo::DBvarchar, DBCampo::DBNoSave, QApplication::translate ( "Ticket", "Codigo Articulo" ) );
00087     item->addDBCampo ( "nomarticulo", DBCampo::DBvarchar, DBCampo::DBNoSave, QApplication::translate ( "Ticket", "Nombre Articulo" ) );
00088     item->addDBCampo ( "desclalbaran", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate ( "Ticket", "Nombre Articulo" ) );
00089 
00090 
00091     item->setDBvalue("descuentolalbaran", "0");
00093     m_listaLineas->append(item);
00094 
00095     _depura("END Ticket::agregarLinea",0);
00096     return item;
00097 }

void Ticket::pintar (  )  [virtual]

Definition at line 99 of file ticket.cpp.

References _depura(), g_plugins, and Plugins::lanza().

Referenced by agregarCantidad(), bajar(), EmpresaTPV::cobrar(), insertarArticulo(), Abrevs::on_mui_aparcar_clicked(), Abrevs::on_mui_cliente_clicked(), ponerCantidad(), ponerPrecio(), subir(), and Trabajadores::trabajadorClicked().

00099                     {
00100     _depura("Ticket::pintar", 0, "Metodo para reimplementar en clases derivadas");
00102     int res = g_plugins->lanza("Ticket_pintar", this);
00103     if (res != 0) {
00104         return;
00105     } // end if
00106     _depura("END Ticket::pintar", 0);
00107 }

QList< DBRecord * > * Ticket::listaLineas (  ) 

Definition at line 109 of file ticket.cpp.

References m_listaLineas.

Referenced by agregarCantidad(), bajar(), guardar(), imprimir(), insertarArticulo(), Abrevs::on_mui_aparcar_clicked(), MTicket::pintar(), ponerCantidad(), subir(), and Ticket_pintar().

00109                                        {
00110     return m_listaLineas;
00111 }

DBRecord * Ticket::insertarArticulo ( QString  idArticulo,
Fixed  cantidad = Fixed("1"),
bool  nuevaLinea = FALSE 
)

Inserta o agrega cantidad de articulos al ticket El parametro nuevalinea indica que se inserte en nueva linea.

Buscamos si ya hay una linea con el articulo que buscamos

Ya hay una linea con este articulo (es un agregado)

No hay ningun item con este articulo (es una insercion)

Buscamos los parametros en la base de datos.

Pintamos el ticket ya que se ha modificado.

Definition at line 114 of file ticket.cpp.

References _depura(), agregarLinea(), postgresiface2::cargacursor(), DBRecord::DBvalue(), PEmpresaBase::empresaBase(), cursor2::eof(), FALSE, listaLineas(), m_lineaActual, pintar(), DBRecord::setDBvalue(), Fixed::toQString(), and cursor2::valor().

Referenced by myplugin::elslot(), insertarArticuloCodigo(), and insertarArticuloCodigoNL().

00114                                                                                       {
00115     _depura("Ticket::insertarArticulo", 0);
00116 
00118     m_lineaActual = NULL;
00119     DBRecord *item;
00120     for (int i = 0; i < listaLineas()->size(); ++i) {
00121         item = listaLineas()->at(i);
00122         if (item->DBvalue("idarticulo") == idArticulo)
00123             m_lineaActual = item;
00124     }// end for
00125 
00126     if (m_lineaActual && nuevaLinea == FALSE) {
00128         Fixed cantidadib(m_lineaActual->DBvalue("cantlalbaran"));
00129         Fixed cant1 = cantidadib + cantidad;
00130         m_lineaActual->setDBvalue("cantlalbaran", cant1.toQString());
00131     } else {
00133         m_lineaActual = agregarLinea();
00134         m_lineaActual->setDBvalue("idarticulo", idArticulo);
00135         m_lineaActual->setDBvalue("cantlalbaran", cantidad.toQString());
00136 
00138         QString query = "SELECT * FROM articulo WHERE idarticulo = " + idArticulo;
00139         cursor2 *cur = empresaBase()->cargacursor(query);
00140         if (!cur->eof()) {
00141             m_lineaActual->setDBvalue("pvplalbaran", cur->valor("pvparticulo"));
00142             m_lineaActual->setDBvalue("codigocompletoarticulo", cur->valor("codigocompletoarticulo"));
00143             m_lineaActual->setDBvalue("nomarticulo", cur->valor("nomarticulo"));
00144             m_lineaActual->setDBvalue("desclalbaran", cur->valor("nomarticulo"));
00145         } // end if
00146 
00147         cursor2 *cur1 = empresaBase()->cargacursor("SELECT * FROM tasa_iva WHERE idtipo_iva = " + cur->valor("idtipo_iva") + " ORDER BY fechatasa_iva LIMIT 1");
00148         if (!cur1->eof() )
00149             m_lineaActual->setDBvalue("ivalalbaran", cur1->valor("porcentasa_iva"));
00150         delete cur1;
00151         delete cur;
00152     } // end if
00153 
00154 
00156     pintar();
00157 
00158     _depura("END Ticket::insertarArticulo", 0);
00159     return m_lineaActual;
00160 }

void Ticket::borrarArticulo ( DBRecord linea,
Fixed  cantidad = Fixed("1") 
)

Definition at line 163 of file ticket.cpp.

References DBRecord::borrar(), and m_lineaActual.

00163                                                             {
00165         if (m_lineaActual == NULL) {
00166                 return;
00167         }
00168 
00169         m_lineaActual->borrar();
00170 
00171 }

void Ticket::vaciarTicket (  ) 

Definition at line 174 of file ticket.cpp.

00174 {}

void Ticket::subirPosArticulo ( DBRecord linea,
int  filas = 1 
)

Definition at line 176 of file ticket.cpp.

00176 {}

void Ticket::bajarPosArticulo ( DBRecord linea,
int  filas = 1 
)

Definition at line 178 of file ticket.cpp.

00178 {}

void Ticket::inicioPosTicket ( DBRecord  ) 

Definition at line 180 of file ticket.cpp.

00180 {}

void Ticket::finPosTicket ( DBRecord  ) 

Definition at line 182 of file ticket.cpp.

00182 {}

DBRecord * Ticket::lineaTicket ( int  posicion  ) 

Definition at line 185 of file ticket.cpp.

00185                                            {
00186     return NULL;
00187 }

DBRecord * Ticket::lineaActTicket (  ) 

Definition at line 190 of file ticket.cpp.

References m_lineaActual.

Referenced by bajar(), MTicket::pintar(), and subir().

00190                                  {
00191     return m_lineaActual;
00192 }

void Ticket::setLineaActual ( DBRecord  ) 

Definition at line 194 of file ticket.cpp.

References m_lineaActual.

Referenced by bajar(), and subir().

00194                                          {
00195     m_lineaActual = rec;
00196 }

void Ticket::setDescuentoGlobal ( Fixed  descuento  ) 

Definition at line 199 of file ticket.cpp.

00199 {}

void Ticket::imprimir (  )  [virtual]

Reimplemented from DBRecord.

Definition at line 201 of file ticket.cpp.

References _depura(), postgresiface2::cargacursor(), CONF_TICKET_PRINTER_FILE, confpr, DBRecord::DBvalue(), PEmpresaBase::empresaBase(), cursor2::eof(), listaLineas(), Fixed::toQString(), TRUE, cursor2::valor(), configuracion::valor(), and Fixed::value.

Referenced by EmpresaTPV::cobrar(), and Input::keyPressEvent().

00201                        {
00202     base basesimp;
00203     base basesimpreqeq;
00204 
00205     QFile file( confpr->valor(CONF_TICKET_PRINTER_FILE) );
00206     if ( !file.open(QIODevice::WriteOnly | QIODevice::Unbuffered)) {
00207         _depura("Error en la Impresion de ticket", 2);
00208     } // end if
00209     file.write (QString("Empresa S.L\n").toAscii());
00210     file.write (QString("====================================\n").toAscii());
00211     file.write(QString("Direccion\n").toAscii());
00212     file.write(QString("CP: 07000 Palma de Mallorca\n").toAscii());
00213     file.write(QString("Tel: 971 00 00 00\n").toAscii());
00215     file.write ( "\n \n", 3);
00216 
00218     file.write( QString("Ticket: ").toAscii());
00219     file.write( DBvalue("numalbaran").toAscii());
00220     file.write ( "\n", 1);
00221 
00222 
00224     file.write( QString("Fecha: ").toAscii());
00225     QDate fecha = QDate::currentDate();
00226     QString sfecha = fecha.toString("d-M-yyyy");
00227     file.write( sfecha.toAscii());
00228     QTime hora = QTime::currentTime();
00229     QString stime = " " + hora.toString("HH:mm");
00230     file.write( stime.toAscii());
00231     file.write ( "\n", 1);
00232 
00233 
00235     file.write( QString("Trabajador: ").toAscii());
00236     cursor2 *cur = empresaBase()->cargacursor("SELECT * FROM trabajador WHERE idtrabajador=" + DBvalue("idtrabajador"));
00237     if (!cur->eof()) {
00238             file.write( DBvalue("idtrabajador").toAscii());
00239             file.write(" ");
00240             file.write( cur->valor("nomtrabajador").toAscii());
00241         file.write ( "\n", 1);
00242     } // end if
00243     delete cur;
00244 
00246     cur = empresaBase()->cargacursor("SELECT * FROM cliente WHERE idcliente=" + DBvalue("idcliente"));
00247     if (!cur->eof()) {
00248         file.write( QString("Cliente: ").toAscii());
00249         file.write( cur->valor("cifcliente").toAscii());
00250         file.write ( " ", 1);
00251         file.write( cur->valor("nomcliente").toAscii());
00252         file.write ( "\n", 1);
00253     } // end if
00254     delete cur;
00255 
00257     cur = empresaBase()->cargacursor("SELECT * FROM almacen WHERE idalmacen=" + DBvalue("idalmacen"));
00258     if (!cur->eof()) {
00259         file.write( QString("Almacen: ").toAscii());
00260         file.write( cur->valor("nomalmacen").toAscii());
00261         file.write ( "\n", 1);
00262     } // end if
00263     delete cur;
00264 
00265 
00266     file.write ( "\n", 1);
00267     file.write ( "\n", 1);
00268     /*
00269             file.write( QString("Descripcion: ").toAscii());
00270             file.write( m_albaranClienteView->DBvalue("descalbaran").toAscii());
00271             file.write ( "\n", 1);
00272     */
00273 // ============================================
00275     QString l;
00276     Fixed irpf("0");
00277 
00278     cur = empresaBase()->cargacursor("SELECT * FROM configuracion WHERE nombre = 'IRPF'");
00279     if (cur) {
00280         if (!cur->eof()) {
00281             irpf = Fixed(cur->valor("valor"));
00282         } // end if
00283         delete cur;
00284     } // end if
00285 
00286     DBRecord *linea;
00287     Fixed descuentolinea("0.00");
00288     for (int i = 0; i < listaLineas()->size(); ++i) {
00289         linea = listaLineas()->at(i);
00290         Fixed cant(linea->DBvalue("cantlalbaran"));
00291         Fixed pvpund(linea->DBvalue("pvplalbaran"));
00292         Fixed desc1(linea->DBvalue("descuentolalbaran"));
00293         Fixed cantpvp = cant * pvpund;
00294         Fixed base = cantpvp - cantpvp * desc1 / 100;
00295         descuentolinea = descuentolinea + (cantpvp * desc1 / 100);
00296         basesimp[linea->DBvalue("ivalalbaran")] = basesimp[linea->DBvalue("ivalalbaran")] + base;
00297         basesimpreqeq[linea->DBvalue("reqeqlalbaran")] = basesimpreqeq[linea->DBvalue("reqeqlalbaran")] + base;
00299         QString str = linea->DBvalue("cantlalbaran").rightJustified(5,' ')+QString("   ")+linea->DBvalue("desclalbaran").leftJustified(24,' ', TRUE)+linea->DBvalue("pvplalbaran").rightJustified(10, ' ');
00300         file.write(str.toAscii());
00301         file.write ( "\n", 1);
00302     } // end for
00303 
00304 
00305     file.write ( "\n", 1);
00306     file.write ( "\n", 1);
00307 
00308     Fixed basei("0.00");
00309     base::Iterator it;
00310     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00311         basei = basei + it.value();
00312     } // end for
00313 
00316     Fixed porcentt("0.00");
00317 
00318 
00320     Fixed totbaseimp("0.00");
00321     Fixed parbaseimp("0.00");
00322     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00323         if (porcentt > Fixed("0.00")) {
00324             parbaseimp = it.value() - it.value() * porcentt / 100;
00325         } else {
00326             parbaseimp = it.value();
00327         } // end if
00328         QString str = "Base Imp" + it.key() + "% " + parbaseimp.toQString().rightJustified(10,' ');
00329 //        file.write(str.rightJustified(42,' ').toAscii());
00330 //        file.write ( "\n", 1);
00331         totbaseimp = totbaseimp + parbaseimp;
00332     } // end for
00333 
00335     Fixed totiva("0.00");
00336     Fixed pariva("0.00");
00337     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00338         Fixed piva(it.key().toAscii().constData());
00339         if (porcentt > Fixed("0.00")) {
00340             pariva = (it.value() - it.value() * porcentt / 100) * piva / 100;
00341         } else {
00342             pariva = it.value() * piva / 100;
00343         } // end if
00344         QString str = "IVA" + it.key() + "% " + pariva.toQString().rightJustified(10,' ');
00345 //        file.write(str.rightJustified(42,' ').toAscii());
00346 //        file.write ( "\n", 1);
00347 
00348         totiva = totiva + pariva;
00349     } // end for
00350 
00352     Fixed totreqeq("0.00");
00353     Fixed parreqeq("0.00");
00354     for (it = basesimpreqeq.begin(); it != basesimpreqeq.end(); ++it) {
00355         Fixed preqeq(it.key().toAscii().constData());
00356         if (porcentt > Fixed("0.00")) {
00357             parreqeq = (it.value() - it.value() * porcentt / 100) * preqeq / 100;
00358         } else {
00359             parreqeq = it.value() * preqeq / 100;
00360         } // end if
00361         QString str = "R. Eq" + it.key() + "% " + parreqeq.toQString().rightJustified(10,' ');
00362 //        file.write(str.rightJustified(42,' ').toAscii());
00363 //        file.write ( "\n", 1);
00364         totreqeq = totreqeq + parreqeq;
00365     } // end for
00366 
00367 
00368 
00369     Fixed totirpf = totbaseimp * irpf / 100;
00370 
00371 //    file.write (QString("=======================\n").rightJustified(43,' ').toAscii());
00372 
00373 
00374     QString str = "B.IMP " + totbaseimp.toQString().rightJustified(10,' ');
00375 //    file.write(str.rightJustified(42,' ').toAscii());
00376 //    file.write ( "\n", 1);
00377 
00378     str = "IVA " + totiva.toQString().rightJustified(10,' ');
00379 //    file.write(str.rightJustified(42,' ').toAscii());
00380 //    file.write ( "\n", 1);
00381 
00382     str = "IRPF " + totirpf.toQString().rightJustified(10,' ');
00383 //    file.write(str.rightJustified(42,' ').toAscii());
00384 //    file.write ( "\n", 1);
00385 
00386 
00387     str = "( IVA INCLUIDO )";
00388     file.write(str.rightJustified(42,' ').toAscii());
00389     file.write ( "\n", 1);
00390 
00391 
00392 
00394     file.write (QString("____________________\n").rightJustified(43,' ').toAscii());
00395 
00396     Fixed total = totiva + totbaseimp + totreqeq - totirpf;
00397     str = "TOTAL " + total.toQString().rightJustified(10,' ');
00398     file.write(str.rightJustified(42,' ').toAscii());
00399     file.write ( "\n", 1);
00400 
00401 
00402 // ============================================
00403 
00404 
00406     file.write ( "\n \n \n \n", 7);
00407 
00410     file.write ("\x1Dh\x40",3);
00412     file.write ( "\x1DH\x02",3);
00414     file.write ( "\x1D",1);
00415     file.write ( "f\x01",2);
00416     ;
00418     file.write ( "\x1D\x77\x01",3);
00420     file.write ( "\x1Dk\x04",3);
00421     file.write (QString("ALB").toAscii());
00422     file.write (" ", 1);
00423     file.write (DBvalue("idalbaran").toAscii());
00424     file.write (" ", 1);
00425     file.write (DBvalue("numalbaran").toAscii());
00426     file.write (" ", 1);
00427     file.write (DBvalue("refalbaran").toAscii());
00428     file.write ("\x00", 1);
00429 
00430 
00432     /*
00433             file.write ("\x1B\x2A\x00\xD2\x00", 5);
00434             for (int i=0; i <15; i++) {
00435                 file.write ( "\x01\x02\x04\x08\x10\x20\x40\x80", 8);
00436                 file.write ("\x40\x20\x10\x08\x04\x02", 6);
00437             }
00438     */
00440     file.write ( "\n \n \n \n \n", 9);
00441 
00442 
00444     file.write ("\x1D\x56\x01", 3);
00445     file.close();
00446 }

int Ticket::guardar (  )  [virtual]

Guarda los datos de la ficha en la base de datos.

Este metodo guarda los contenidos de la Ficha (siempre que esta haya sido inicializada). Luego llama a plugins y a guardarPost por si se quieren hacer acciones adicionales de guardado. Tras guardar todos los elementos hace una carga.

Returns:
0 Si no hay problemas. -1 Si ha habido problemas.

Reimplemented from DBRecord.

Definition at line 538 of file ticket.cpp.

References _depura(), postgresiface2::begin(), postgresiface2::cargacursor(), postgresiface2::commit(), DBRecord::DBload(), DBRecord::DBsave(), PEmpresaBase::empresaBase(), listaLineas(), mensajeInfo(), postgresiface2::rollback(), and DBRecord::setDBvalue().

Referenced by EmpresaTPV::cobrar().

00538                     {
00539     _depura("Ticket::guardar", 0);
00540 
00541     try {
00542         QString id;
00543         empresaBase()->begin();
00544         DBsave(id);
00545         DBRecord *item;
00546         for (int i = 0; i < listaLineas()->size(); ++i) {
00547             QString id1;
00548             item = listaLineas()->at(i);
00549             item->setDBvalue("idalbaran", id);
00550             item->setDBvalue("ordenlalbaran", QString::number(i));
00551             item->DBsave(id1);
00552         }// end for
00553         empresaBase()->commit();
00554 
00555         cursor2 *cur = empresaBase()->cargacursor("SELECT * FROM albaran WHERE idalbaran = " + id);
00556         DBload(cur);
00557         delete cur;
00558 
00559         _depura("END Ticket::guardar", 0);
00560         return 0;
00561     } catch (...) {
00562         mensajeInfo("Error inesperado con la base de datos");
00563         empresaBase()->rollback();
00564         return -1;
00565     } // end try
00566 }

void Ticket::subir (  )  [virtual, slot]

Definition at line 449 of file ticket.cpp.

References lineaActTicket(), listaLineas(), pintar(), and setLineaActual().

Referenced by Input::keyPressEvent().

00449                    {
00450     int i = listaLineas()->indexOf(lineaActTicket());
00451     if (i > 0) i--;
00452     setLineaActual(listaLineas()->at(i));
00453     pintar();
00454 }

void Ticket::bajar (  )  [virtual, slot]

Definition at line 456 of file ticket.cpp.

References lineaActTicket(), listaLineas(), pintar(), and setLineaActual().

Referenced by Input::keyPressEvent().

00456                    {
00457     int i = listaLineas()->indexOf(lineaActTicket());
00458     if (i < listaLineas()->size() -1) i++;
00459     setLineaActual(listaLineas()->at(i));
00460     pintar();
00461 }

void Ticket::agregarCantidad ( QString  cantidad  )  [virtual, slot]

Definition at line 464 of file ticket.cpp.

References DBRecord::DBvalue(), listaLineas(), m_lineaActual, mensajeAviso(), pintar(), and DBRecord::setDBvalue().

Referenced by Input::keyPressEvent().

00464                                              {
00465     Fixed cant(cantidad);
00467     if (m_lineaActual == NULL) {
00468         mensajeAviso("No existe linea");
00469         return;
00470     } // end if
00471     Fixed cantorig(m_lineaActual->DBvalue("cantlalbaran"));
00472     Fixed suma = cant + cantorig;
00473     if (suma == Fixed("0.00")) {
00474         listaLineas()->removeAt(listaLineas()->indexOf(m_lineaActual));
00475         m_lineaActual = listaLineas()->at(0);
00476     } else {
00477         m_lineaActual->setDBvalue("cantlalbaran", suma.toQString());
00478     } // end if
00479     pintar();
00480 }

void Ticket::ponerCantidad ( QString  cantidad  )  [virtual, slot]

Definition at line 482 of file ticket.cpp.

References listaLineas(), m_lineaActual, mensajeAviso(), pintar(), DBRecord::setDBvalue(), and Fixed::toQString().

Referenced by Input::keyPressEvent(), and MTicket::on_mui_borrar_clicked().

00482                                            {
00483      Fixed cant(cantidad);
00485     if (m_lineaActual == NULL) {
00486         mensajeAviso("No existe linea");
00487         return;
00488     } // end if
00489 
00490     if (cant == 0) {
00491         listaLineas()->removeAt(listaLineas()->indexOf(m_lineaActual));
00492         m_lineaActual = listaLineas()->at(0);
00493     } else {
00494         m_lineaActual->setDBvalue("cantlalbaran", cant.toQString());
00495     } // end if
00496     pintar();
00497 }

void Ticket::ponerPrecio ( QString  precio  )  [virtual, slot]

Definition at line 499 of file ticket.cpp.

References m_lineaActual, mensajeAviso(), pintar(), DBRecord::setDBvalue(), and Fixed::toQString().

Referenced by Input::keyPressEvent().

00499                                        {
00500     Fixed valor(precio);
00502     if (m_lineaActual == NULL) {
00503         mensajeAviso("No existe linea");
00504         return;
00505     } // end if
00506     m_lineaActual->setDBvalue("pvplalbaran", valor.toQString());
00507     pintar();
00508 }

void Ticket::insertarArticuloCodigo ( QString   )  [virtual, slot]

Definition at line 510 of file ticket.cpp.

References postgresiface2::cargacursor(), PEmpresaBase::empresaBase(), cursor2::eof(), insertarArticulo(), and cursor2::valor().

Referenced by Input::keyPressEvent().

00510                                                   {
00511     QString query = "SELECT * FROM articulo WHERE codigocompletoarticulo= '"+ codigo +"'";
00512     cursor2 *cur = empresaBase()->cargacursor(query);
00513     if (!cur->eof()) {
00514         insertarArticulo(cur->valor("idarticulo"), Fixed("1"));
00515     } // end if
00516     delete cur;
00517 }

void Ticket::insertarArticuloCodigoNL ( QString   )  [virtual, slot]

Definition at line 519 of file ticket.cpp.

References postgresiface2::cargacursor(), PEmpresaBase::empresaBase(), cursor2::eof(), insertarArticulo(), TRUE, and cursor2::valor().

Referenced by Input::keyPressEvent().

00519                                                     {
00520     QString query = "SELECT * FROM articulo WHERE codigocompletoarticulo= '"+ codigo +"'";
00521     cursor2 *cur = empresaBase()->cargacursor(query);
00522     if (!cur->eof()) {
00523         insertarArticulo(cur->valor("idarticulo"), Fixed("1"), TRUE);
00524     } // end if
00525     delete cur;
00526 }


Field Documentation

QList<DBRecord *>* Ticket::m_listaLineas [private]

Definition at line 37 of file ticket.h.

Referenced by agregarLinea(), listaLineas(), and Ticket().

DBRecord* Ticket::m_lineaActual [private]

Definition at line 38 of file ticket.h.

Referenced by agregarCantidad(), borrarArticulo(), insertarArticulo(), lineaActTicket(), ponerCantidad(), ponerPrecio(), setLineaActual(), and Ticket().


The documentation for this class was generated from the following files:
Generated on Sat Dec 15 00:02:19 2007 for BulmaGes by  doxygen 1.5.1