-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathotro.cpp
194 lines (154 loc) · 6.3 KB
/
otro.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
#include "otro.h"
#include <QDebug>
Otro::Otro(int _idOtro,QString _codigo,QString _descripcion, Marca _marca,int _stock,double _precio_compra,double _precio_venta,double _p_descuento,QString _accesorios,bool _habilitado):Producto(_codigo,_descripcion,_marca,_stock,_precio_compra, _precio_venta, _p_descuento,_accesorios,_habilitado)
{
idOtro=_idOtro;
}
Otro::Otro(QString _codigo,QString _descripcion, Marca _marca,int _stock,double _precio_compra,double _precio_venta,double _p_descuento,QString _accesorios,bool _habilitado):Producto(_codigo,_descripcion,_marca,_stock,_precio_compra, _precio_venta, _p_descuento,_accesorios,_habilitado)
{
idOtro=0;
}
Otro::Otro()
{
}
//COnstructo con solo id, por lo normal solo lo usare para el eliminar y solo
//necesito el id de la Otro y el id del producto
Otro::Otro(int _id)
{
QSqlQuery query;
query.prepare("SELECT idproducto FROM otro WHERE idotro="+QString::number(_id));
query.exec();
query.next();
id=query.value(0).toInt();
idOtro=_id;
}
void Otro::generarParaEditar(int _id)
{
QSqlQueryModel* model=new QSqlQueryModel();//model de la consulta
QString idS=QString::number(_id);
idOtro=_id;
QString query="select idotro,codigo,descripcion,stock,precio_compra,precio_venta,p_descuento,accesorios,habilitado,\
idmarca,producto.idproducto\
from otro inner join producto\
on otro.idproducto= producto.idproducto\
where idotro="+idS;
model->setQuery(query);
if(model->rowCount()>0)
{
codigo=model->record(0).value(1).toString();
descripcion=model->record(0).value(2).toString();
stock=model->record(0).value(3).toInt();
precio_compra=model->record(0).value(4).toDouble();
precio_venta=model->record(0).value(5).toDouble();
p_descuento=model->record(0).value(6).toDouble();
accesorios=model->record(0).value(7).toString();
habilitado=model->record(0).value(8).toBool();
Marca _marca(model->record(0).value(9).toInt());
marca=_marca;
id=model->record(0).value(10).toInt();
}
}
/*--------------------------------------------------------------------
FUNCIONES GET'S Y SET'S
---------------------------------------------------------------------*/
int Otro::getIdOtro()
{
return idOtro;
}
/*--------------------------------------------------------------------
FUNCIONES DEL OBJETO PRESISTENTE
---------------------------------------------------------------------*/
/**
* @brief Esta funcion ejecuta el agregar una nueva Otro a la base de datos
* @return Bool, el cual pede ser true o false dependiendo si la operacion
* se concluyo exitosamente.
*/
bool Otro::agregar()
{
QSqlQuery query;
query.prepare("INSERT INTO producto (codigo,descripcion,idmarca,stock,precio_compra,precio_venta,p_descuento,accesorios,habilitado)"
"VALUES (?,?,?,?,?,?,?,?,?)");
query.bindValue(0,codigo);
query.bindValue(1,descripcion);
query.bindValue(2,marca.getId());
query.bindValue(3,stock);
query.bindValue(4,precio_compra);
query.bindValue(5,precio_venta);
query.bindValue(6,p_descuento);
query.bindValue(7,accesorios);
query.bindValue(8,habilitado);
if(query.exec()==true)
{
qDebug()<<"debi haber ingresado el producto ";
query.prepare("SELECT MAX(idproducto) FROM producto");
query.exec();
query.next();
id=query.value(0).toInt();
query.prepare("INSERT INTO otro (idproducto)"
"VALUES (?)");
query.bindValue(0,id);
if(query.exec()==true)
{
query.prepare("SELECT idotro FROM otro WHERE idproducto='"+QString::number(id)+"'");
query.exec();
query.next();
idOtro=query.value(0).toInt();
return true;
}
else return false;
}
else
return false;
}
/**
* @brief Esta funcion ejecuta el actualizar una Otro a la base de datos
* @return Bool, el cual pede ser true o false dependiendo si la operacion
* se concluyo exitosamente.
*/
bool Otro::actualizar()
{
QSqlQuery query;
query.prepare("UPDATE producto SET idmarca="+QString::number(marca.getId())+" , stock="+QString::number(stock)+" , codigo='"+codigo+"' , descripcion='"+descripcion+"', precio_compra="+QString::number(precio_compra)+" , precio_venta=" + QString::number(precio_venta)+" , p_descuento="+ QString::number(p_descuento)+" , accesorios='"+accesorios+"' WHERE idproducto="+QString::number(id));
query.exec();
return true;
}
/**
* @brief Esta funcion ejecuta el eliminar una Otro a la base de datos
* @return Bool, el cual pede ser true o false dependiendo si la operacion
* se concluyo exitosamente.
*/
bool Otro::eliminar()
{
QSqlQuery query;
QSqlQuery query2;
query.prepare("DELETE FROM otro WHERE idotro="+ QString::number(idOtro));
if(query.exec()==true)
{
qDebug()<<"el id del producto a eliminar "<<id;
query2.prepare("DELETE FROM producto WHERE idproducto="+ QString::number(id));
qDebug()<<"este es el resultado de elimnar"<<query2.exec();
return query.exec();
}
else
return false;
}
QSqlQueryModel* Otro::buscar(QString _item)
{
QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("select idotro,codigo,\
p.descripcion as Descricion,\
ma.nombre as Marca,\
stock,accesorios,precio_compra,precio_venta,p_descuento \
from otro o \
inner join producto p \
on o.idproducto=p.idproducto \
inner join marca ma \
on p.idmarca=ma.idmarca \
where codigo like '%"+_item+"%' or\
p.descripcion like '%"+_item+"%' or\
stock like '%"+_item+"%' or \
precio_compra like '%"+_item+"%' or \
accesorios like '%"+_item+"%' or \
p_descuento like '%"+_item+"%'");
return model;
}