00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <fstream>
00022
00023 #include <QMessageBox>
00024 #include <QWidget>
00025 #include <QObject>
00026 #include <QComboBox>
00027 #include <QToolButton>
00028 #include <QLayout>
00029 #include <QCloseEvent>
00030
00031 #include "pedidoclienteview.h"
00032 #include "company.h"
00033 #include "listlinpedidoclienteview.h"
00034 #include "clientslist.h"
00035 #include "presupuestoview.h"
00036 #include "presupuestolist.h"
00037 #include "cobroview.h"
00038 #include "albaranclienteview.h"
00039 #include "informereferencia.h"
00040 #include "funcaux.h"
00041 #include "plugins.h"
00042
00043
00045
00050 PedidoClienteView::PedidoClienteView(Company *comp, QWidget *parent)
00051 : FichaBf(comp, parent) {
00052 _depura("PedidoClienteView::PedidoClienteView", 0);
00053 setAttribute(Qt::WA_DeleteOnClose);
00054 try {
00056 setupUi(this);
00057
00058 setTitleName(tr("Pedido Cliente"));
00059 setDBTableName("pedidocliente");
00060 setDBCampoId("idpedidocliente");
00061 addDBCampo("idpedidocliente", DBCampo::DBint, DBCampo::DBPrimaryKey, QApplication::translate("PedidoCliente", "Identificador"));
00062 addDBCampo("idcliente", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate("PedidoCliente", "Cliente"));
00063 addDBCampo("idalmacen", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate("PedidoCliente", "Almacen"));
00064 addDBCampo("numpedidocliente", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Numero pedido cliente"));
00065 addDBCampo("fechapedidocliente", DBCampo::DBdate, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Identificador presupuesto"));
00066 addDBCampo("descpedidocliente", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Fecha"));
00067 addDBCampo("idforma_pago", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Forma pago"));
00068 addDBCampo("idtrabajador", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Trabajador"));
00069 addDBCampo("contactpedidocliente", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Contacto"));
00070 addDBCampo("telpedidocliente", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Telefono"));
00071 addDBCampo("comentpedidocliente", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Comentarios"));
00072 addDBCampo("procesadopedidocliente", DBCampo::DBboolean, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Procesado"));
00073 addDBCampo("refpedidocliente", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Referencia"));
00074
00075
00077 int res = g_plugins->lanza("PedidoClienteView_PedidoClienteView", this);
00078 if (res != 0)
00079 return;
00080 subform3->setEmpresaBase(comp);
00081 mui_idcliente->setEmpresaBase(comp);
00082 mui_idforma_pago->setEmpresaBase(comp);
00083 mui_idforma_pago->setidforma_pago("");
00084 m_descuentos->setEmpresaBase(comp);
00085 mui_idalmacen->setEmpresaBase(comp);
00086 mui_idalmacen->setidalmacen("");
00087 mui_idtrabajador->setEmpresaBase(comp);
00088 mui_idtrabajador->setidtrabajador("");
00089 mui_refpedidocliente->setEmpresaBase(comp);
00090 setListaLineas(subform3);
00091 setListaDescuentos(m_descuentos);
00092 meteWindow(windowTitle(), this, FALSE);
00093 } catch (...) {
00094 mensajeInfo(tr("Error al crear el pedido cliente"));
00095 }
00096 _depura("END PedidoClienteView::PedidoClienteView", 0);
00097 }
00098
00099
00101
00103 PedidoClienteView::~PedidoClienteView() {
00104 _depura("PedidoClienteView::~PedidoClienteView", 0);
00105 empresaBase()->refreshPedidosCliente();
00106 _depura("END PedidoClienteView::~PedidoClienteView", 0);
00107 }
00108
00109
00111
00113 void PedidoClienteView::inicializar() {
00114 _depura("PedidoClienteView::inicializar", 0);
00115 subform3->inicializar();
00116 m_descuentos->inicializar();
00117 pintar();
00118 dialogChanges_cargaInicial();
00119 _depura("END PedidoClienteView::inicializar", 0);
00120 }
00121
00122
00124
00132 void PedidoClienteView::pintatotales(Fixed iva, Fixed base, Fixed total, Fixed desc, Fixed irpf, Fixed reqeq) {
00133 _depura("PedidoClienteView::pintatotales", 0);
00134 m_totalBases->setText(QString(base.toQString()));
00135 m_totalTaxes->setText(QString(iva.toQString()));
00136 m_totalDiscounts->setText(QString(desc.toQString()));
00137 m_totalIRPF->setText(QString(irpf.toQString()));
00138 m_totalReqEq->setText(QString(reqeq.toQString()));
00139 m_totalpedidocliente->setText(total.toQString());
00140 _depura("END PedidoClienteView::pintatotales", 0);
00141 }
00142
00143
00145
00147 void PedidoClienteView::on_mui_verpresupuesto_clicked() {
00148 _depura("PedidoClienteView::on_mui_verpresupuesto_clicked", 0);
00149 QString SQLQuery = "SELECT * FROM presupuesto WHERE refpresupuesto = '" + DBvalue("refpedidocliente") + "' AND idcliente = " + DBvalue("idcliente");
00150 cursor2 *cur = empresaBase()->cargacursor(SQLQuery);
00151 if (!cur->eof()) {
00152 while (!cur->eof()) {
00153 PresupuestoView *bud = empresaBase()->nuevoPresupuestoView();
00154 empresaBase()->m_pWorkspace->addWindow(bud);
00155 if (bud->cargar(cur->valor("idpresupuesto"))) {
00156 delete bud;
00157 return;
00158 }
00159 bud->show();
00160 cur->siguienteregistro();
00161 }
00162 } else {
00163 _depura("No hay presupuestos con la misma referencia.", 2);
00164 }
00165 delete cur;
00166 _depura("END PedidoClienteView::on_mui_verpresupuesto_clicked", 0);
00167 }
00168
00169
00176 void PedidoClienteView::generarAlbaran() {
00177 _depura("PedidoClienteView::generarAlbaran", 0);
00179 QString SQLQuery = "SELECT * FROM albaran WHERE refalbaran = '" + DBvalue("refpedidocliente") + "' AND idcliente = " + DBvalue("idcliente");
00180 cursor2 *cur = empresaBase()->cargacursor(SQLQuery);
00181 if (!cur->eof()) {
00184 if (QMessageBox::question(this,
00185 tr("Albaran ya existe"),
00186 tr("Existe un albaran a este cliente con la misma referencia que este pedido. Desea abrirlo para verificar?"),
00187 tr("&Si"), tr("&No"), QString::null, 0, 1)) {
00188 return;
00189 }
00190 AlbaranClienteView *bud = new AlbaranClienteView(empresaBase(), NULL);
00191 empresaBase()->m_pWorkspace->addWindow(bud);
00192 bud->cargar(cur->valor("idalbaran"));
00193 bud->show();
00194 return;
00195 }
00196 delete cur;
00197
00199 AlbaranClienteView *bud = empresaBase()->newAlbaranClienteView();
00200 empresaBase()->m_pWorkspace->addWindow(bud);
00201 bud->cargar("0");
00202
00204 bud->setDBvalue("comentalbaran", DBvalue("comentpedidocliente"));
00205 bud->setDBvalue("descalbaran",DBvalue("descpedidocliente"));
00206 bud->setDBvalue("idforma_pago",DBvalue("idforma_pago"));
00207 bud->setDBvalue("refalbaran",DBvalue("refpedidocliente"));
00208 bud->setDBvalue("idcliente",DBvalue("idcliente"));
00209 bud->setDBvalue("idalmacen",DBvalue("idalmacen"));
00210 bud->setDBvalue("contactalbaran",DBvalue("contactpedidocliente"));
00211 bud->setDBvalue("telalbaran",DBvalue("telpedidocliente"));
00212 bud->setDBvalue("idtrabajador",DBvalue("idtrabajador"));
00213
00214
00216 SDBRecord *linea, *linea1;
00217 for (int i = 0; i < m_listalineas->rowCount(); ++i) {
00218 linea = m_listalineas->lineaat(i);
00219 if (linea->DBvalue("idarticulo") != "") {
00220 linea1 = bud->getlistalineas()->lineaat(bud->getlistalineas()->rowCount() - 1);
00221 bud->getlistalineas()->nuevoRegistro();
00222 bud->getlistalineas()->setProcesarCambios(FALSE);
00223 linea1->setDBvalue("desclalbaran", linea->DBvalue("desclpedidocliente"));
00224 linea1->setDBvalue("cantlalbaran", linea->DBvalue("cantlpedidocliente"));
00225 linea1->setDBvalue("pvplalbaran", linea->DBvalue("pvplpedidocliente"));
00226 linea1->setDBvalue("ivalalbaran", linea->DBvalue("ivalpedidocliente"));
00227 linea1->setDBvalue("descuentolalbaran", linea->DBvalue("descuentolpedidocliente"));
00228 linea1->setDBvalue("idarticulo", linea->DBvalue("idarticulo"));
00229 linea1->setDBvalue("codigocompletoarticulo", linea->DBvalue("codigocompletoarticulo"));
00230 linea1->setDBvalue("nomarticulo", linea->DBvalue("nomarticulo"));
00231 bud->getlistalineas()->setProcesarCambios(TRUE);
00232 }
00233 }
00234
00236 for (int i = 0; i < m_listadescuentos->rowCount(); ++i) {
00237 linea1 = m_listadescuentos->lineaat(i);
00238 if (linea1->DBvalue("proporciondpedidocliente") != "") {
00239 linea = bud->getlistadescuentos()->lineaat(bud->getlistadescuentos()->rowCount() - 1);
00240 bud->getlistadescuentos()->setProcesarCambios(FALSE);
00241 linea->setDBvalue("conceptdalbaran", linea1->DBvalue("conceptdpedidocliente"));
00242 linea->setDBvalue("proporciondalbaran", linea1->DBvalue("proporciondpedidocliente"));
00243 bud->getlistadescuentos()->setProcesarCambios(TRUE);
00244 bud->getlistadescuentos()->nuevoRegistro();
00245 }
00246 }
00248 bud->pintar();
00249 bud->show();
00250 _depura("END PedidoClienteView::generarAlbaran", 0);
00251 }
00252
00253
00255
00257 void PedidoClienteView::on_mui_cobrar_clicked() {
00258 _depura("PedidoClienteView::on_mui_cobrar_clicked", 0);
00259 CobroView *bud = empresaBase()->newCobroView();
00260 bud->setDBvalue("idcliente", DBvalue("idcliente"));
00261 bud->setDBvalue("cantcobro", m_totalpedidocliente->text());
00262 bud->setDBvalue("refcobro", DBvalue("refpedidocliente"));
00263 bud->setDBvalue("comentcobro", DBvalue("descpedidocliente"));
00264 bud->pintar();
00265 bud->show();
00266 _depura("END PedidoClienteView::on_mui_cobrar_clicked", 0);
00267 }
00268
00269
00271
00274 void PedidoClienteView::on_mui_idcliente_valueChanged(QString id) {
00275 _depura("PedidoClienteView::on_m_cliente_valueChanged", 0);
00276 subform3->setIdCliente(id);
00277 mui_idforma_pago->setIdCliente(id);
00278 _depura("END PedidoClienteView::on_m_cliente_valueChanged", 0);
00279 }
00280
00281
00283
00286 int PedidoClienteView::borrarPre() {
00287 _depura("PedidoClienteView::borrar", 0);
00288 m_listalineas->borrar();
00289 m_listadescuentos->borrar();
00290 _depura("PedidoClienteView::borrar", 0);
00291 return 0;
00292 }
00293
00294
00296
00300 int PedidoClienteView::cargarPost(QString idbudget) {
00301 _depura("PedidoClienteView::cargarPost", 0);
00302
00303 m_listalineas->cargar(idbudget);
00304 m_listadescuentos->cargar(idbudget);
00305
00307 g_plugins->lanza("PedidoClienteView_cargarPost_Post", this);
00308
00309 calculaypintatotales();
00310
00311 _depura("END PedidoClienteView::cargar", 0);
00312 return 0;
00313 }
00314
00315
00317
00320 int PedidoClienteView::guardarPost() {
00321 _depura("PedidoClienteView::guardar", 0);
00322 m_listalineas->setColumnValue("idpedidocliente", DBvalue("idpedidocliente"));
00323 m_listalineas->guardar();
00324 m_listadescuentos->setColumnValue("idpedidocliente", DBvalue("idpedidocliente"));
00325 m_listadescuentos->guardar();
00326 return 0;
00327 }
00328
00329
00331
00333 void PedidoClienteView::s_pintaTotales() {
00334 _depura("PedidoClienteView::s_pintaTotales", 0);
00335 calculaypintatotales();
00336 _depura("END PedidoClienteView::s_pintaTotales", 0);
00337 }
00338
00339
00341
00343 void PedidoClienteView::on_mui_pasaraalbaran_clicked() {
00344 _depura("PedidoClienteView::on_mui_pasaraalbaran_clicked", 0);
00345 generarAlbaran();
00346 _depura("END PedidoClienteView::on_mui_pasaraalbaran_clicked", 0);
00347 }
00348
00349
00351
00353 void PedidoClienteView::on_m_descuentos_editFinish(int, int) {
00354 _depura("PedidoClienteView::on_m_descuentos_editFinish", 0);
00355 calculaypintatotales();
00356 _depura("END PedidoClienteView::on_m_descuentos_editFinish", 0);
00357 }
00358
00359
00361
00363 void PedidoClienteView::on_subform3_editFinish(int, int) {
00364 _depura("PedidoClienteView::on_subform3_editFinish", 0);
00365 calculaypintatotales();
00366 _depura("END sPedidoClienteView::on_subform3_editFinish", 0);
00367 }
00368