00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <QMessageBox>
00022 #include <QWidget>
00023 #include <QObject>
00024 #include <QComboBox>
00025 #include <QToolButton>
00026 #include <QFile>
00027 #include <QTextStream>
00028 #include <QLayout>
00029 #include <QMessageBox>
00030 #include <QCloseEvent>
00031 #include <fstream>
00032
00033 #include <plugins.h>
00034
00035 #include "listivaview.h"
00036 #include "registroivaview.h"
00037 #include "empresa.h"
00038 #include "funcaux.h"
00039
00040
00042
00047 RegistroIvaView::RegistroIvaView(Empresa *comp, QWidget *parent)
00048 : RegistroIva(comp, parent) {
00049 setAttribute(Qt::WA_DeleteOnClose);
00050 setupUi(this);
00051 _depura("Inicializacion de RegistroIvaView", 0);
00053 int res = g_plugins->lanza("RegistroIvaView_RegistroIvaView", this);
00054 if (res != 0)
00055 return;
00056
00058 m_contrapartida->setEmpresaBase(comp);
00059 setLineas( mui_listIva);
00060 mui_listIva->setEmpresaBase(comp);
00061 mui_listPrevCobro->setEmpresaBase(comp);
00063 m_cursorFPago = NULL;
00064 cargarComboFPago("NULL");
00065
00066 mui_listIva->setDBTableName("iva");
00067 mui_listIva->setDBCampoId("idiva");
00068 mui_listIva->addSHeader("idiva", DBCampo::DBint, DBCampo::DBPrimaryKey, SHeader::DBNoWrite, tr("idiva"));
00069 mui_listIva->addSHeader("idtipoiva", DBCampo::DBint, DBCampo::DBNotNull, SHeader::DBNoWrite, tr("idtipoiva"));
00070 mui_listIva->addSHeader("idcuenta", DBCampo::DBint, DBCampo::DBNoSave, SHeader::DBNoWrite, tr("idcuenta"));
00071 mui_listIva->addSHeader("codigo", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNoWrite | SHeader::DBNoView, tr("codigo"));
00072 mui_listIva->addSHeader("tipocuenta", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNoWrite | SHeader::DBNoView, tr("tipocuenta"));
00073 mui_listIva->addSHeader("nombretipoiva", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNoWrite, tr("nombretipoiva"));
00074 mui_listIva->addSHeader("idregistroiva", DBCampo::DBint, DBCampo::DBNothing, SHeader::DBNone, tr("idregistroiva"));
00075 mui_listIva->addSHeader("baseiva", DBCampo::DBnumeric, DBCampo::DBNothing, SHeader::DBNone, tr("baseiva"));
00076 mui_listIva->addSHeader("ivaiva", DBCampo::DBnumeric, DBCampo::DBNothing, SHeader::DBNone, tr("ivaiva"));
00077 mui_listIva->setinsercion(FALSE);
00078
00079 mui_listPrevCobro->setDBTableName("prevcobro");
00080 mui_listPrevCobro->setDBCampoId("idprevcobro");
00081 mui_listPrevCobro->addSHeader("idprevcobro", DBCampo::DBint, DBCampo::DBPrimaryKey, SHeader::DBNoWrite, tr("idprevcobro"));
00082 mui_listPrevCobro->addSHeader("fprevistaprevcobro", DBCampo::DBdate, DBCampo::DBNotNull, SHeader::DBNone, tr("fprevistaprevcobro"));
00083 mui_listPrevCobro->addSHeader("fcobroprevcobro", DBCampo::DBdate, DBCampo::DBNoSave, SHeader::DBNone, tr("fcobroprevcobro"));
00084 mui_listPrevCobro->addSHeader("idfpago", DBCampo::DBint, DBCampo::DBNoSave, SHeader::DBNoWrite | SHeader::DBNoView, tr("idfpago"));
00085 mui_listPrevCobro->addSHeader("idcuenta", DBCampo::DBint, DBCampo::DBNoSave, SHeader::DBNoWrite, tr("idcuenta"));
00086 mui_listPrevCobro->addSHeader("idasiento", DBCampo::DBint, DBCampo::DBNothing, SHeader::DBNone, tr("idasiento"));
00087 mui_listPrevCobro->addSHeader("cantidadprevistaprevcobro", DBCampo::DBnumeric, DBCampo::DBNothing, SHeader::DBNone, tr("cantidadprevistaprevcobro"));
00088 mui_listPrevCobro->addSHeader("cantidadprevcobro", DBCampo::DBnumeric, DBCampo::DBNothing, SHeader::DBNone, tr("cantidadprevcobro"));
00089 mui_listPrevCobro->addSHeader("idregistroiva", DBCampo::DBint, DBCampo::DBNothing, SHeader::DBNone, tr("idregistroiva"));
00090 mui_listPrevCobro->addSHeader("tipoprevcobro", DBCampo::DBint, DBCampo::DBNothing, SHeader::DBNone, tr("tipoprevcobro"));
00091 mui_listPrevCobro->addSHeader("docprevcobro", DBCampo::DBvarchar, DBCampo::DBNothing, SHeader::DBNone, tr("docprevcobro"));
00092 mui_listPrevCobro->addSHeader("codigo", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone, tr("codigo"));
00093 mui_listIva->addSHeader("tipocuenta", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNoWrite | SHeader::DBNoView, tr("tipocuenta"));
00094 mui_listPrevCobro->addSHeader("descripcion", DBCampo::DBnumeric, DBCampo::DBNoSave, SHeader::DBNone, tr("descripcion"));
00095 mui_listPrevCobro->addSHeader("idctacliente", DBCampo::DBnumeric, DBCampo::DBNothing, SHeader::DBNone, tr("idctacliente"));
00096 mui_listPrevCobro->addSHeader("codigoctacliente", DBCampo::DBnumeric, DBCampo::DBNoSave, SHeader::DBNone, tr("codigoctacliente"));
00097 mui_listPrevCobro->addSHeader("nomctacliente", DBCampo::DBnumeric, DBCampo::DBNoSave, SHeader::DBNone, tr("nomctacliente"));
00098 mui_listPrevCobro->addSHeader("tipoctacliente", DBCampo::DBnumeric, DBCampo::DBNoSave, SHeader::DBNone, tr("tipoctacliente"));
00099 mui_listPrevCobro->addSHeader("tipocuenta", DBCampo::DBnumeric, DBCampo::DBNoSave, SHeader::DBNone, tr("tipocuenta"));
00100
00101 mui_listPrevCobro->setinsercion(TRUE);
00102 empresaBase()->meteWindow(windowTitle(), this);
00103 g_plugins->lanza("RegistroIvaView_RegistroIvaView_Post", this);
00104 _depura("Fin de la inicializacion de RegistroIvaView", 0);
00105 }
00106
00107
00109
00111 RegistroIvaView::~RegistroIvaView() {
00112 _depura("RegistroIvaView::~RegistroIvaView", 0);
00113 _depura("END RegistroIvaView::~RegistroIvaView", 0);
00114 }
00115
00116
00124
00127 void RegistroIvaView::cargarComboFPago(QString idfpago) {
00128 _depura("RegistroIvaView::cargarComboFPago", 0);
00129 if (m_cursorFPago != NULL)
00130 delete m_cursorFPago;
00131 m_cursorFPago = empresaBase()->cargacursor("SELECT * FROM fpago");
00132 int i = 0;
00133 int i1 = 0;
00134 while (!m_cursorFPago->eof()) {
00135 i ++;
00136 if (m_cursorFPago->valor("idfpago") == idfpago) {
00137 i1 = i;
00138 }
00139 m_fPago->addItem(m_cursorFPago->valor("nomfpago"));
00140 m_cursorFPago->siguienteregistro();
00141 }
00142 if (i1 != 0) {
00143 m_fPago->setCurrentIndex(i1 - 1);
00144 }
00145 _depura("RegistroIvaView::cargarComboFPago", 0);
00146 }
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00165
00169 int RegistroIvaView::cargar(QString id) {
00170 int error = 0;
00171 error = RegistroIva::cargar(id);
00172 if (error) {
00173 return -1;
00174 }
00175 mui_listIva->cargar("SELECT * FROM tipoiva LEFT JOIN (SELECT * FROM iva WHERE idregistroiva="+id+" ) AS t1 ON t1.idtipoiva = tipoiva.idtipoiva LEFT JOIN cuenta on tipoiva.idcuenta = cuenta.idcuenta ORDER BY codigo");
00176
00177 mui_listPrevCobro->cargar("SELECT * FROM prevcobro "
00178 " LEFT JOIN cuenta ON cuenta.idcuenta = prevcobro.idcuenta "
00179 " LEFT JOIN (SELECT idcuenta AS idctacliente, codigo AS codigoctacliente, descripcion AS nomctacliente, tipocuenta AS tipoctacliente FROM cuenta) AS T1 ON t1.idctacliente = prevcobro.idctacliente "
00180 " WHERE idregistroiva = " + id + " ORDER BY fcobroprevcobro ");
00181
00182 setWindowTitle(tr("Registro factura") + " " + factura());
00183 dialogChanges_cargaInicial();
00184 return 0;
00185 }
00186
00187
00189
00192 int RegistroIvaView::guardar() {
00193 _depura("RegistroIvaView::guardar", 0);
00194 try {
00195 empresaBase()->begin();
00196 setcontrapartida(m_contrapartida->idcuenta());
00197 setbaseimp(m_baseImponible->text());
00198 setiva(m_importeiva->text());
00199 setffactura(m_ffactura->text());
00200 setfactura(m_factura->text());
00201 setincregistro(m_incregistroIVA->isChecked() ? "t" : "f");
00202 setnumorden(m_numorden->text());
00203 setcif(m_cif->text());
00204 setfactemitida(m_factEmitida->isChecked() ? "t" : "f");
00205 setfemisionregistroiva(m_femisionregistroiva->text());
00206 setserieregistroiva(m_serieregistroiva->text());
00207 RegistroIva::guardar();
00208 mui_listIva->setColumnValue("idregistroiva", DBvalue("idregistroiva"));
00209 mui_listIva->guardar();
00210 mui_listPrevCobro->setColumnValue("idregistroiva", DBvalue("idregistroiva"));
00211 mui_listPrevCobro->guardar();
00212 empresaBase()->commit();
00213 dialogChanges_cargaInicial();
00214 } catch (...) {
00215 mensajeInfo("Error al guardar el Registro de IVA");
00216 empresaBase()->rollback();
00217 }
00218 _depura("END RegistroIvaView::guardar");
00219 return 0;
00220 }
00221
00222
00223
00225
00231 void RegistroIvaView::on_mui_generarPrevisiones_clicked() {
00232 _depura("RegistroIvaView::on_mui_generarPrevisiones_clicked", 0);
00233 QString snumpagos = m_cursorFPago->valor("nplazosfpago", m_fPago->currentIndex());
00234 QString splazoprimerpago = m_cursorFPago->valor("plazoprimerpagofpago", m_fPago->currentIndex());
00235 QString splazoentrerecibo = m_cursorFPago->valor("plazoentrerecibofpago", m_fPago->currentIndex());
00236 Fixed totalfactura = Fixed(baseimp()) + Fixed(iva());
00237 int plazoentrerecibo = splazoentrerecibo.toInt();
00238 int plazoprimerpago = splazoprimerpago.toInt();
00239 int numpagos = snumpagos.toInt();
00240 Fixed totalplazo = totalfactura / numpagos;
00241 QString tipocobro;
00243 QDate ffactura = normalizafecha(m_ffactura->text());
00244 QDate fpcobro = ffactura.addDays(plazoprimerpago);
00245 for (int i = 0; i< numpagos; i++) {
00247 if (contrapartida().left(2) == "43") {
00248 tipocobro = "t";
00249 } else {
00250 tipocobro = "f";
00251 }
00252 _depura("Cogemos el registro", 3);
00253 SDBRecord *rec = mui_listPrevCobro->lineaat(mui_listPrevCobro->rowCount() - 1);
00254 rec->setDBvalue("fprevistaprevcobro", fpcobro.toString("dd/MM/yyyy"));
00255 rec->setDBvalue("cantidadprevistaprevcobro", totalplazo.toQString());
00256 rec->setDBvalue("tipoprevcobro", tipocobro);
00257 rec->setDBvalue("codigoctacliente", m_contrapartida->codigocuenta());
00258 rec->setDBvalue("idctacliente", m_contrapartida->idcuenta());
00259 rec->setDBvalue("nomctacliente", m_contrapartida->nomcuenta());
00260 _depura("Pintamos", 3);
00261 fpcobro = fpcobro.addDays(plazoentrerecibo);
00262 mui_listPrevCobro->nuevoRegistro();
00263 }
00264 _depura("END RegistroIvaView::on_mui_generarPrevisiones_clicked", 0);
00265 }
00266