Something went wrong. Try again.
Billing program for the appliance repair company Seoane.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284#include "AccesoADatos.h"#include "utils.h"#include "../Negocio/Factura.h"#include "../Negocio/Cliente.h"#include "../Negocio/Presupuesto.h"#include "../Negocio/Articulo.h"#include <cstdio>#include <string>#include <list>#include <iostream>#include <QtSql>#include <QString>#include <QtGui>
using namespace std;
AccesoADatos::AccesoADatos(){ db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("./Datos/seoane.s3db"); bool ok = db.open(); if (ok) { cout << "[Debug]Base de datos abierta correctamente." << endl; } else { cout << "[ERROR]Base de datos abierta incorrectamente." << endl; QMessageBox::information(0,"Error","Error al acceder a la base de datos."); qDebug()<< db.lastError(); }}
AccesoADatos::~AccesoADatos(){ cout << "[Debug]Destruimos el acceso a datos." << endl; db.close(); cout << "[Debug]Acceso a datos destruida." << endl;}//METODOS PARA INSERTAR EN LA BDbool AccesoADatos::insertaFactura(Factura factura){ db.transaction();//insert into facturas(n_factura, fecha, aparato, marca, modelo,n_fabricacion,lugar_reparacion,id_cliente); string query="insert into Facturas(n_factura, fecha, aparato, marca, modelo,n_fabricacion,lugar_reparacion,id_cliente,averia,trabajo_realizado,tiempo_empleado,fecha_terminacion,observaciones,precio_materiales,precio_mano_obra,precio_desplazamiento,precio_transporte,iva) values (";// if(factura.getn_factura()==-1) query.append("NULL, "); else { query.append(itoa(factura.getn_factura())); query.append(", "); } if(factura.getfecha() == "") query.append("NULL, "); else { query.append("\""); query.append( factura.getfecha() + "\", "); } if(factura.getaparato()== "") query.append("NULL, "); else { query.append("\""); query.append(factura.getaparato() + "\", "); }
if(factura.getmarca()== "") query.append("NULL, "); else { query.append("\""); query.append(factura.getmarca() + "\", "); } if(factura.getmodelo()== "") query.append("NULL, "); else { query.append("\""); query.append(factura.getmodelo() + "\", "); } if(factura.getn_fabricacion()== -1) query.append("NULL, "); else { query.append(itoa(factura.getn_fabricacion())); query.append(", "); } if(factura.getlugar_reparacion()== 0) query.append("NULL, "); else { bool lr = *factura.getlugar_reparacion(); if (lr) query.append("1, "); else query.append("0, "); }
if(factura.getcliente() == 0) query.append("NULL, "); else { query.append(itoa(factura.getcliente()->getid())); query.append(", "); } if(factura.getaveria() == "") { query.append("NULL, "); } else { query.append("\""); query.append(factura.getaveria() + "\", ");
} if(factura.gettrabajo_realizado() == "") { query.append("NULL, "); } else { query.append("\""); query.append(factura.gettrabajo_realizado() + "\", "); } if(factura.gettiempo_empleado() == "") { query.append("NULL, "); } else { query.append("\""); query.append(factura.gettiempo_empleado() + "\", "); } if(factura.getfecha_terminacion() == "") { query.append("NULL, "); } else { query.append("\""); query.append(factura.getfecha_terminacion() + "\", "); } if(factura.getobservaciones() == "") { query.append("NULL, "); } else { query.append("\""); query.append(factura.getobservaciones() + "\", "); } if(factura.getprecio_materiales() == -1.) { query.append("NULL, "); } else { query.append(ftoa(factura.getprecio_materiales())); query.append(", "); } if(factura.getprecio_mano_obra() == -1.) { query.append("NULL, "); } else { query.append(ftoa(factura.getprecio_mano_obra())); query.append(", "); } if(factura.getprecio_desplazamiento() == -1.) { query.append("NULL, "); } else { query.append(ftoa(factura.getprecio_desplazamiento())); query.append(", "); } if(factura.getprecio_transporte() == -1.) { query.append("NULL, "); } else { query.append(ftoa(factura.getprecio_transporte())); query.append(", "); } query.append(ftoa(factura.getiva())); query.append(");"); cout << query << endl; QSqlQuery qquery; bool ok = qquery.exec(query.c_str());
list<LineaArticulo> l = factura.getlista_articulos(); list<LineaArticulo>::iterator iter; for(iter=l.begin(); iter!=l.end();iter++) { query = " insert into Facturas_Articulos(id_factura, id_articulo, cantidad) values("; query.append(itoa(factura.getid())); query.append(", "); query.append(itoa(iter->getarticulo().getid())); query.append(", "); query.append(itoa(iter->getcantidad())); query.append(");"); ok = ok && qquery.exec(query.c_str()); } ok = ok && db.commit(); return ok;}
/////////////////////////////////bool AccesoADatos::insertaCliente(Cliente cliente){ db.transaction();//insert into cliente(codigo,nombre,apellidos,direccion,nif,poblacion) values ("; string query="insert into Clientes(codigo,nombre,apellidos,direccion,nif,poblacion) values(";//
if(cliente.getcodigo() == 0) query.append("NULL, "); else { query.append(itoa(cliente.getcodigo())); query.append(", "); }
if(cliente.getnombre() == "") query.append("NULL, "); else { query.append("\""); query.append(cliente.getnombre() + "\", "); }
if(cliente.getapellidos() == "") query.append("NULL, "); else { query.append("\""); query.append(cliente.getapellidos() + "\", "); }
if(cliente.getdireccion()=="") query.append("NULL, "); else { query.append("\""); query.append(cliente.getdireccion() + "\", " ); }
if(cliente.getnif()=="") query.append("NULL, "); else { query.append("\""); query.append( cliente.getnif() + "\", "); } if(cliente.getpoblacion()=="") query.append("NULL);"); else { query.append("\""); query.append( cliente.getpoblacion() + "\");"); }
cout << "[Debug]" << query << endl; QSqlQuery qquery; bool ok = qquery.exec(query.c_str()); list<int> lista = cliente.gettelefonos(); list<int>::iterator it; for (it = lista.begin(); it != lista.end(); it++){ string queryTelefonos="insert into Telefonos(id_cliente,numero) values("; queryTelefonos.append(itoa(dameIdCliente())); queryTelefonos.append(", "); queryTelefonos.append(itoa(*it)); queryTelefonos.append(");"); cout << "[Debug]" << queryTelefonos << endl; QSqlQuery qqueryt; ok = ok && qqueryt.exec(queryTelefonos.c_str()); } ok = ok && db.commit(); return ok;}
/////////////////////////////////////////////////bool AccesoADatos::insertaPresupuesto(Presupuesto presupuesto){ db.transaction();//insert into Presupuesto(aceptado,id_cliente,factura,n_factura,fecha,aparato,marca,modelo,n_fabricacion,lugar_reparacion); string query="insert into Presupuestos(aceptado,id_cliente,id_factura,n_factura,fecha,aparato,marca,modelo,n_fabricacion,lugar_reparacion,averia,trabajo_realizado,tiempo_empleado,fecha_terminacion,observaciones,precio_materiales,precio_mano_obra,precio_desplazamiento,precio_transporte,iva) values (";
if(presupuesto.getaceptado()==0) query.append("NULL, "); else { bool a = *presupuesto.getaceptado(); if (a) query.append("1, "); else query.append("0, "); }
if(presupuesto.getcliente()==0) query.append("NULL, "); else { query.append(itoa(presupuesto.getcliente()->getid())); query.append(", "); }
if(presupuesto.getfactura()==0) query.append("NULL, "); else { query.append(itoa(presupuesto.getfactura()->getid())); query.append(", "); }
if(presupuesto.getn_factura()==-1) query.append("NULL, "); else { query.append(itoa(presupuesto.getn_factura())); query.append(", "); }
if(presupuesto.getfecha()=="") query.append("NULL, "); else { query.append("\""); query.append(presupuesto.getfecha() + "\", "); }
if(presupuesto.getaparato()=="") query.append("NULL, "); else { query.append("\""); query.append(presupuesto.getaparato() + "\", "); }
if(presupuesto.getmarca()=="") query.append("NULL, "); else { query.append("\""); query.append(presupuesto.getmarca() + "\", "); }
if(presupuesto.getmodelo()=="") query.append("NULL, "); else { query.append("\""); query.append(presupuesto.getmodelo() + "\", "); }
if(presupuesto.getn_fabricacion()==-1) query.append("NULL, "); else { query.append(itoa(presupuesto.getn_fabricacion())); query.append(", "); }
if(presupuesto.getlugar_reparacion()==0) query.append("NULL, "); else { bool lr = presupuesto.getlugar_reparacion(); if (lr) query.append("1, "); else query.append("0, "); } if(presupuesto.getaveria() == "") { query.append("NULL, "); } else { query.append("\""); query.append(presupuesto.getaveria() + "\", ");
} if(presupuesto.gettrabajo_realizado() == "") { query.append("NULL, "); } else { query.append("\""); query.append(presupuesto.gettrabajo_realizado() + "\", "); } if(presupuesto.gettiempo_empleado() == "") { query.append("NULL, "); } else { query.append("\""); query.append(presupuesto.gettiempo_empleado() + "\", "); } if(presupuesto.getfecha_terminacion() == "") { query.append("NULL, "); } else { query.append("\""); query.append(presupuesto.getfecha_terminacion() + "\", "); } if(presupuesto.getobservaciones() == "") { query.append("NULL, "); } else { query.append("\""); query.append(presupuesto.getobservaciones() + "\", "); } if(presupuesto.getprecio_materiales() == -1.) { query.append("NULL, "); } else { query.append(ftoa(presupuesto.getprecio_materiales())); query.append(", "); } if(presupuesto.getprecio_mano_obra() == -1.) { query.append("NULL, "); } else { query.append(ftoa(presupuesto.getprecio_mano_obra())); query.append(", "); } if(presupuesto.getprecio_desplazamiento() == -1.) { query.append("NULL, "); } else { query.append(ftoa(presupuesto.getprecio_desplazamiento())); query.append(", "); } if(presupuesto.getprecio_transporte() == -1.) { query.append("NULL, "); } else { query.append(ftoa(presupuesto.getprecio_transporte())); query.append(", "); } query.append(ftoa(presupuesto.getiva())); query.append(");"); QSqlQuery qquery; //QMessageBox::information(0,"Aviso",query.c_str()); bool ok = qquery.exec(query.c_str());
list<LineaArticulo> l = presupuesto.getlista_articulos(); list<LineaArticulo>::iterator iter; for(iter=l.begin(); iter!=l.end();iter++) { query = " insert into Presupuestos_Articulos(id_presupuesto, id_articulo, cantidad) values("; query.append(itoa(presupuesto.getid())); query.append(", "); query.append(itoa(iter->getarticulo().getid())); query.append(", "); query.append(itoa(iter->getcantidad())); query.append(");"); ok = ok && qquery.exec(query.c_str()); } ok = ok && db.commit(); return ok;}bool AccesoADatos::insertaArticulo(Articulo articulo){
//insert into Articulos(codigo,descripcion,caja,existencias,existencias_minimas,pvp,precio_coste,descuento); string query="insert into Articulos(codigo,descripcion,caja,existencias,existencias_minimas,pvp,precio_coste,descuento,historico) values (";
if(articulo.getcodigo() == -1) query.append("NULL, "); else { query.append(itoa(articulo.getcodigo())); query.append(", "); }
if(articulo.getdescripcion() =="") query.append("NULL, "); else { query.append("\""); query.append(articulo.getdescripcion() + "\", "); } if(articulo.getcaja() == "" ) query.append("NULL, "); else { query.append("\""); query.append(articulo.getcaja() + "\", "); } if(articulo.getexistencias() == -1) query.append("NULL, "); else { query.append(itoa(articulo.getexistencias())); query.append(", "); }
if(articulo.getexistencias_minimas() == -1) query.append("NULL, "); else { query.append(itoa(articulo.getexistencias_minimas())); query.append(", "); } if(articulo.getpvp() ==-1.) query.append("NULL, "); else { query.append(ftoa(articulo.getpvp())); query.append(", "); }
if(articulo.getprecio_coste() == -1.) query.append("NULL, "); else { query.append(ftoa(articulo.getprecio_coste())); query.append(", ");
}
if(articulo.getdescuento() == -1) query.append("NULL, "); else { query.append(itoa(articulo.getdescuento())); query.append(", "); } if (articulo.gethistorico()) { query.append("1);"); } else { query.append("0);"); }
cout << "[Debug]" << query << endl; QSqlQuery qquery; bool ok = qquery.exec(query.c_str()); if (!ok) { qDebug() << qquery.lastError (); return false; } return true;
}//METODOS PARA LISTAR
list <Factura> AccesoADatos::listaFacturas() { string squery = "select * from Facturas order by n_factura desc;"; list <Factura> lista_facturas; QSqlQuery query; bool ok = query.exec(squery.c_str()); if (!ok) { qDebug() << query.lastError (); return lista_facturas; } while (query.next()) { Factura *f = new Factura(); f->setid(query.value(0).toInt()); f->setn_factura(query.value(1).toInt()); f->setfecha(query.value(2).toString().toStdString()); f->setaparato(query.value(3).toString().toStdString()); f->setmarca(query.value(4).toString().toStdString()); f->setmodelo(query.value(5).toString().toStdString()); f->setn_fabricacion(query.value(6).toInt()); if (!query.value(7).isNull()) { bool *b = new bool; *b = query.value(7).toBool(); f->setlugar_reparacion(b); } f->setcliente(0); f->setaveria(query.value(9).toString().toStdString()); f->settrabajo_realizado(query.value(10).toString().toStdString()); f->settiempo_empleado(query.value(11).toString().toStdString()); f->setfecha_terminacion(query.value(12).toString().toStdString()); f->setobservaciones(query.value(13).toString().toStdString()); f->setprecio_materiales(query.value(14).toDouble()); f->setprecio_mano_obra(query.value(15).toDouble()); f->setprecio_desplazamiento(query.value(16).toDouble()); f->setprecio_transporte(query.value(17).toDouble()); f->setiva(query.value(18).toDouble()); lista_facturas.push_back(*f); } return lista_facturas;}
list <Cliente> AccesoADatos::listaClientes() { string squery = "select * from Clientes;"; list <Cliente> lista_clientes; QSqlQuery query; bool ok = query.exec(squery.c_str()); if (!ok) { qDebug() << query.lastError (); return lista_clientes; } while (query.next()) { Cliente *c = new Cliente(); c->setid(query.value(0).toInt()); c->setcodigo(query.value(1).toInt()); c->setnombre(query.value(2).toString().toStdString()); c->setapellidos(query.value(3).toString().toStdString()); c->setdireccion(query.value(4).toString().toStdString()); c->setnif(query.value(5).toString().toStdString()); c->setpoblacion(query.value(6).toString().toStdString()); c->sethistorico(query.value(7).toBool()); list<int> lista_telefonos; string tquery = "select numero from Telefonos where id_cliente="; tquery.append(itoa(c->getid())); tquery.append(";"); QSqlQuery queryt; queryt.exec(tquery.c_str()); while (queryt.next()) { lista_telefonos.push_back(queryt.value(0).toInt()); } c->settelefonos(lista_telefonos); lista_clientes.push_back(*c); } return lista_clientes;}
list <Presupuesto> AccesoADatos::listaPresupuestos() { string squery = "select * from Presupuestos;"; list <Presupuesto> lista_presupuestos; QSqlQuery query; bool ok = query.exec(squery.c_str()); if (!ok) { qDebug() << query.lastError (); return lista_presupuestos; } while (query.next()) { Presupuesto *p = new Presupuesto(); p->setid(query.value(0).toInt()); p->setaceptado(query.value(1).toBool());// ATENCION!!! p->setcliente(0); p->setfactura(0); p->setn_factura(query.value(4).toInt()); p->setfecha(query.value(5).toString().toStdString()); p->setaparato(query.value(6).toString().toStdString()); p->setmarca(query.value(7).toString().toStdString()); p->setmodelo(query.value(8).toString().toStdString()); p->setn_fabricacion(query.value(9).toInt()); if (!query.value(10).isNull()) { bool *b = new bool; *b = query.value(10).toBool(); p->setlugar_reparacion(b); } p->setaveria(query.value(11).toString().toStdString()); p->settrabajo_realizado(query.value(12).toString().toStdString()); p->settiempo_empleado(query.value(13).toString().toStdString()); p->setfecha_terminacion(query.value(14).toString().toStdString()); p->setobservaciones(query.value(15).toString().toStdString()); p->setprecio_materiales(query.value(16).toDouble()); p->setprecio_mano_obra(query.value(17).toDouble()); p->setprecio_desplazamiento(query.value(18).toDouble()); p->setprecio_transporte(query.value(19).toDouble()); p->setiva(query.value(20).toDouble()); lista_presupuestos.push_back(*p); } return lista_presupuestos;}
list <Articulo> AccesoADatos::listaArticulos() { string squery = "select * from Articulos;"; list <Articulo> lista_articulos; QSqlQuery query; bool ok = query.exec(squery.c_str()); if (!ok) { qDebug() << query.lastError (); return lista_articulos; } while (query.next()) { Articulo *a = new Articulo(); a->setid(query.value(0).toInt()); a->setcodigo(query.value(1).toInt()); a->setdescripcion(query.value(2).toString().toStdString()); a->setcaja(query.value(3).toString().toStdString()); a->setexistencias(query.value(4).toInt()); a->setexistencias_minimas(query.value(5).toInt()); a->setpvp(query.value(6).toDouble());//ATENCION!! a->setprecio_coste(query.value(7).toDouble()); //ATENCION!! a->setdescuento(query.value(8).toInt()); a->sethistorico(query.value(9).toBool());
lista_articulos.push_back(*a); } return lista_articulos; }
//METODOS DE ENLAZADO
//Esta funcion dado un id de factura devuelve el id de cliente aociadoint AccesoADatos::enlazaCliente(int idf) { string q("select id_cliente from Facturas where rowid="); q.append(itoa(idf)); q.append(";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); } if (query.next()) return query.value(0).toInt(); return -1;}
//Esta funcion dado un id de presupuesto devuelve el id de la factura aociadaint AccesoADatos::enlazaFactura(int idp) { string q("select id_factura from Presupuestos where rowid="); q.append(itoa(idp)); q.append(";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); } if (query.next()) return query.value(0).toInt(); return -1;}
int AccesoADatos::enlazaClienteP(int idp) { string q("select id_cliente from Presupuestos where rowid="); q.append(itoa(idp)); q.append(";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); } if (query.next()) return query.value(0).toInt(); return -1;}
int AccesoADatos::getCantidadArticuloFactura(Factura *f, Articulo *a) { string q("select cantidad from Facturas_Articulos where id_factura="); q.append(itoa(f->getid())); q.append(" and id_articulo="); q.append(itoa(a->getid())); q.append(";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); } if (query.next()) return query.value(0).toInt(); return -1;}list<int> AccesoADatos::getListaIdArticulos(Factura *f) { list<int> l; string q("select id_articulo from Facturas_Articulos where id_factura="); q.append(itoa(f->getid())); q.append(";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); } while (query.next()) { l.push_back(query.value(0).toInt()); } return l;}/* Devuelve pares (n� telf, id cliente) */list<pair<int, int> > AccesoADatos::getListaTelefonos() { list<pair<int, int> > l; string q("select * from Telefonos T where (select id from Clientes C where T.id_cliente = C.id and C.historico=0);"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); } while (query.next()) { l.push_back(pair<int, int>(query.value(1).toInt(), query.value(2).toInt())); } return l;}
//METODOS PARA ACTUALIZARbool AccesoADatos::actualizaFactura(Factura factura) { db.transaction(); string query="update Facturas set ";// if(factura.getn_factura()==-1) query.append("n_factura=NULL, "); else { string c("n_factura="); c.append(itoa(factura.getn_factura())); query.append(c + ", "); } if(factura.getfecha() == "") query.append("fecha=NULL, "); else query.append("fecha=\""+factura.getfecha() + "\", ");
if(factura.getaparato()== "") query.append("aparato=NULL, "); else query.append("aparato=\""+factura.getaparato() + "\", ");
if(factura.getmarca()== "") query.append("marca=NULL, "); else query.append("marca=\""+factura.getmarca() + "\", ");
if(factura.getmodelo()== "") query.append("modelo=NULL, "); else query.append("modelo=\""+factura.getmodelo() + "\", ");
if(factura.getn_fabricacion()== -1) query.append("n_fabricacion=NULL, "); else { string c("n_fabricacion="); c.append(itoa(factura.getn_fabricacion())); query.append( c + ", "); } if(factura.getlugar_reparacion()== 0) query.append("lugar_reparacion=NULL, "); else { bool lr = *factura.getlugar_reparacion(); if (lr) query.append("lugar_reparacion=1, "); else query.append("lugar_reparacion=0, "); }
if(factura.getcliente() == 0) query.append("id_cliente=NULL, "); else { string c("id_cliente="); c.append(itoa(factura.getcliente()->getid())); query.append(c + ", "); } if(factura.getaveria() == "") { query.append("averia=NULL, "); } else { query.append("averia=\""); query.append(factura.getaveria() + "\", ");
} if(factura.gettrabajo_realizado() == "") { query.append("trabajo_realizado=NULL, "); } else { query.append("trabajo_realizado=\""); query.append(factura.gettrabajo_realizado() + "\", "); } if(factura.gettiempo_empleado() == "") { query.append("tiempo_empleado=NULL, "); } else { query.append("tiempo_empleado=\""); query.append(factura.gettiempo_empleado() + "\", "); } if(factura.getfecha_terminacion() == "") { query.append("fecha_terminacion=NULL, "); } else { query.append("fecha_terminacion=\""); query.append(factura.getfecha_terminacion() + "\", "); } if(factura.getobservaciones() == "") { query.append("observaciones=NULL, "); } else { query.append("observaciones=\""); query.append(factura.getobservaciones() + "\", "); } if(factura.getprecio_materiales() == -1.) { query.append("precio_materiales=NULL, "); } else { query.append("precio_materiales="); query.append(ftoa(factura.getprecio_materiales())); query.append(", "); } if(factura.getprecio_mano_obra() == -1.) { query.append("precio_mano_obra=NULL, "); } else { query.append("precio_mano_obra="); query.append(ftoa(factura.getprecio_mano_obra())); query.append(", "); } if(factura.getprecio_desplazamiento() == -1.) { query.append("precio_desplazamiento=NULL, "); } else { query.append("precio_desplazamiento="); query.append(ftoa(factura.getprecio_desplazamiento())); query.append(", "); } if(factura.getprecio_transporte() == -1.) { query.append("precio_transporte=NULL "); } else { query.append("precio_transporte="); query.append(ftoa(factura.getprecio_transporte())); query.append(" "); } query.append("where rowid="); query.append(itoa(factura.getid())); query.append(";");
QSqlQuery qquery; bool ok = qquery.exec(query.c_str());
query = " delete from Facturas_Articulos where id_factura="; query.append(itoa(factura.getid())); query.append(";"); ok = ok && qquery.exec(query.c_str());
list<LineaArticulo> l = factura.getlista_articulos(); list<LineaArticulo>::iterator iter; for(iter=l.begin(); iter!=l.end();iter++) { query = " insert into Facturas_Articulos(id_factura, id_articulo, cantidad) values("; query.append(itoa(factura.getid())); query.append(", "); query.append(itoa(iter->getarticulo().getid())); query.append(", "); query.append(itoa(iter->getcantidad())); query.append(");"); ok = ok && qquery.exec(query.c_str()); } ok = ok && db.commit(); return ok;}
bool AccesoADatos::actualizaPresupuesto(Presupuesto presupuesto) { db.transaction(); QSqlQuery qquery;
string query="update Presupuestos set ";// if(presupuesto.getn_factura()==-1) query.append("n_factura=NULL, "); else { string c("n_factura="); c.append(itoa(presupuesto.getn_factura())); query.append(c + ", "); } if(presupuesto.getfecha() == "") query.append("fecha=NULL, "); else query.append("fecha=\""+ presupuesto.getfecha() + "\", ");
if(presupuesto.getaparato()== "") query.append("aparato=NULL, "); else query.append("aparato=\"" + presupuesto.getaparato() + "\", ");
if(presupuesto.getmarca()== "") query.append("marca=NULL, "); else query.append("marca=\"" + presupuesto.getmarca() + "\", ");
if(presupuesto.getmodelo()== "") query.append("modelo=NULL, "); else query.append("modelo=\"" + presupuesto.getmodelo() + "\", ");
if(presupuesto.getn_fabricacion()== -1) query.append("n_fabricacion=NULL, "); else { string c("n_fabricacion="); c.append(itoa(presupuesto.getn_fabricacion())); query.append( c + ", "); } if(presupuesto.getlugar_reparacion()== 0) query.append("lugar_reparacion=NULL, "); else { bool lr = *presupuesto.getlugar_reparacion(); if (lr) query.append("lugar_reparacion=1, "); else query.append("lugar_reparacion=0, "); }
if(presupuesto.getaceptado()== 0) query.append("aceptado=NULL, "); else { bool lr = *presupuesto.getaceptado(); if (lr) query.append("aceptado=1, "); else query.append("aceptado=0, "); } if(presupuesto.getcliente() == 0) query.append("id_cliente=NULL, "); else { string c("id_cliente="); c.append(itoa(presupuesto.getcliente()->getid())); query.append(c + ", "); }
if(presupuesto.getfactura() == 0) query.append("id_factura=NULL, "); else { string c("id_factura="); c.append(itoa(presupuesto.getfactura()->getid())); query.append(", "); } if(presupuesto.getaveria() == "") { query.append("averia=NULL, "); } else { query.append("averia=\""); query.append(presupuesto.getaveria() + "\", ");
} if(presupuesto.gettrabajo_realizado() == "") { query.append("trabajo_realizado=NULL, "); } else { query.append("trabajo_realizado=\""); query.append(presupuesto.gettrabajo_realizado() + "\", "); } if(presupuesto.gettiempo_empleado() == "") { query.append("tiempo_empleado=NULL, "); } else { query.append("tiempo_empleado=\""); query.append(presupuesto.gettiempo_empleado() + "\", "); } if(presupuesto.getfecha_terminacion() == "") { query.append("fecha_terminacion=NULL, "); } else { query.append("fecha_terminacion=\""); query.append(presupuesto.getfecha_terminacion() + "\", "); } if(presupuesto.getobservaciones() == "") { query.append("observaciones=NULL, "); } else { query.append("observaciones=\""); query.append(presupuesto.getobservaciones() + "\", "); } if(presupuesto.getprecio_materiales() == -1.) { query.append("precio_materiales=NULL, "); } else { query.append("precio_materiales="); query.append(ftoa(presupuesto.getprecio_materiales())); query.append(", "); } if(presupuesto.getprecio_mano_obra() == -1.) { query.append("precio_mano_obra=NULL, "); } else { query.append("precio_mano_obra="); query.append(ftoa(presupuesto.getprecio_mano_obra())); query.append(", "); } if(presupuesto.getprecio_desplazamiento() == -1.) { query.append("precio_desplazamiento=NULL, "); } else { query.append("precio_desplazamiento="); query.append(ftoa(presupuesto.getprecio_desplazamiento())); query.append(", "); } if(presupuesto.getprecio_transporte() == -1.) { query.append("precio_transporte=NULL "); } else { query.append("precio_transporte="); query.append(ftoa(presupuesto.getprecio_transporte())); query.append(" "); } query.append("where rowid="); query.append(itoa(presupuesto.getid())); query.append(";"); //QMessageBox::information(0,"Aviso",query.c_str()); bool ok = qquery.exec(query.c_str()); if (!ok) { qDebug() << qquery.lastError() << endl; }
query = " delete from Presupuestos_Articulos where id_presupuesto="; query.append(itoa(presupuesto.getid())); query.append(";"); ok = ok && qquery.exec(query.c_str()); if (!ok) { qDebug() << qquery.lastError() << endl; }
list<LineaArticulo> l = presupuesto.getlista_articulos(); list<LineaArticulo>::iterator iter; for(iter=l.begin(); iter!=l.end();iter++) { query = " insert into Presupuestos_Articulos(id_presupuesto, id_articulo, cantidad) values("; query.append(itoa(presupuesto.getid())); query.append(", "); query.append(itoa(iter->getarticulo().getid())); query.append(", "); query.append(itoa(iter->getcantidad())); query.append(");"); ok = ok && qquery.exec(query.c_str()); if (!ok) { qDebug() << qquery.lastError() << endl; } } ok = ok && db.commit(); return ok ;}
bool AccesoADatos::actualizaArticulo(Articulo articulo) { db.transaction(); string query("update Articulos set historico=1 where historico=0 and rowid="); query.append(itoa(articulo.getid())); query.append(";");
QSqlQuery qquery; bool ok = qquery.exec(query.c_str());
query = " insert into Articulos(codigo,descripcion,caja,existencias,existencias_minimas,pvp,precio_coste,descuento) values ("; if(articulo.getcodigo() == -1) query.append("NULL, "); else { query.append(itoa(articulo.getcodigo())); query.append(", "); } if(articulo.getdescripcion() =="") query.append("NULL, "); else { query.append("\""); query.append(articulo.getdescripcion() + "\", "); } if(articulo.getcaja() == "" ) query.append("NULL, "); else { query.append("\""); query.append(articulo.getcaja() + "\", "); } if(articulo.getexistencias() == -1) query.append("NULL, "); else { query.append(itoa(articulo.getexistencias())); query.append(", "); } if(articulo.getexistencias_minimas() == -1) query.append("NULL, "); else { query.append(itoa(articulo.getexistencias_minimas())); query.append(", "); } if(articulo.getpvp() ==-1.) query.append("NULL, "); else { query.append(ftoa(articulo.getpvp())); query.append(", "); } if(articulo.getprecio_coste() == -1.) query.append("NULL, "); else { query.append(ftoa(articulo.getprecio_coste())); query.append(", "); } if(articulo.getdescuento() == -1) query.append("NULL);"); else { query.append(itoa(articulo.getdescuento())); query.append(");"); } ok = ok && qquery.exec(query.c_str()); ok = ok && db.commit(); return ok;}
bool AccesoADatos::actualizaCliente(Cliente cliente) { db.transaction(); string query("update Clientes set historico=1 where historico=0 and rowid="); query.append(itoa(cliente.getid())); query.append("; "); QSqlQuery qquery; bool ok = qquery.exec(query.c_str());
query="insert into Clientes(codigo,nombre,apellidos,direccion,nif,poblacion) values("; if(cliente.getcodigo() == 0) query.append("NULL, "); else { query.append(itoa(cliente.getcodigo())); query.append(", "); } if(cliente.getnombre() == "") query.append("NULL, "); else { query.append("\""); query.append(cliente.getnombre() + "\", "); } if(cliente.getapellidos() == "") query.append("NULL, "); else { query.append("\""); query.append(cliente.getapellidos() + "\", "); } if(cliente.getdireccion()=="") query.append("NULL, "); else { query.append("\""); query.append(cliente.getdireccion() + "\", " ); } if(cliente.getnif()=="") query.append("NULL, "); else { query.append("\""); query.append( cliente.getnif() + "\", "); } if(cliente.getpoblacion()=="") query.append("NULL);"); else { query.append("\""); query.append( cliente.getpoblacion() + "\");"); } list<int> lista = cliente.gettelefonos(); list<int>::iterator it; for (it = lista.begin(); it != lista.end(); it++){ string queryTelefonos="insert into Telefonos(id_cliente,numero) values("; queryTelefonos.append(itoa(dameIdCliente())); queryTelefonos.append(", "); queryTelefonos.append(itoa(*it)); queryTelefonos.append(");"); cout << "[Debug]" << queryTelefonos << endl; QSqlQuery qqueryt; ok = ok && qqueryt.exec(queryTelefonos.c_str()); }
ok = ok && qquery.exec(query.c_str()); ok = ok && db.commit(); return ok;}
//FALTA COMPROBAR QUE LA BD NO SE QUEDE EN UN ESTADO INCONSISTENTE//METODOS PARA ELIMINAR DE LA BDbool AccesoADatos::eliminarFactura(Factura f) { string q("delete from Facturas where rowid="); q.append(itoa(f.getid())); q.append(";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); return false; } return true;}
bool AccesoADatos::eliminarPresupuesto(Presupuesto p) { string q("delete from Presupuestos where rowid="); q.append(itoa(p.getid())); q.append(";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); return false; } return true;}
bool AccesoADatos::eliminarCliente(Cliente c) { // Borrar un cliente solo es marcarlo como historico. string q("update Clientes set historico=1 where historico=0 and rowid="); q.append(itoa(c.getid())); q.append(";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); return false; } return true;}
bool AccesoADatos::eliminarArticulo(Articulo a) { // Borrar un articulo solo es marcarlo como historico. string q("update Articulos set historico=1 where historico=0 and rowid="); q.append(itoa(a.getid())); q.append(";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); return false; } return true;}
//METODOS "DAME"int AccesoADatos::dameIdArticulo() { string q("select seq from sqlite_sequence where name=\"Articulos\";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); return -1; } if (query.next()) return query.value(0).toInt() + 1; return 1;}int AccesoADatos::dameIdCliente() { string q("select seq from sqlite_sequence where name=\"Clientes\";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); return -1; } if (query.next()) return query.value(0).toInt() + 1; return 1;}int AccesoADatos::dameIdFactura() { string q("select seq from sqlite_sequence where name=\"Facturas\";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); return -1; } if (query.next()) return query.value(0).toInt() + 1; return 1;}int AccesoADatos::dameIdPresupuesto() { string q("select seq from sqlite_sequence where name=\"Presupuestos\";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); return -1; } if (query.next()) return query.value(0).toInt() + 1; return 1;}
bool AccesoADatos::cambiarIva(int v) { string q("update Iva set valor="); q.append(QString::number(v,10).toStdString().c_str()); q.append(";"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); return false; } return true;}
int AccesoADatos::obtenerIva() { string q("select valor from Iva;"); QSqlQuery query; bool ok = query.exec(q.c_str()); if (!ok) { qDebug() << query.lastError (); return -1; } if (query.next()) return query.value(0).toInt(); return -1;}