ui(new Ui::TstRdA)
{
ui->setupUi(this);
idTest=id;
codUff=CodUff;
mdlTestRdA->setTable("TestataRdA");
mdlTestRdA->setFilter("CodUfficio=CodUffPC and CodUfficio=CodUffEN and CodUfficio=CodUffVS");
connect(ui
->cboEnte,
SIGNAL(currentIndexChanged
(QString)),
SLOT(currentEnteChanged
(QString)));
connect(ui
->cboConto,
SIGNAL(currentIndexChanged
(QString)),
SLOT(currentContoChanged
(QString)));
connect(ui
->cboSpesa,
SIGNAL(currentIndexChanged
(QString)),
SLOT(currentSpesaChanged
(QString)));
connect(ui->txtFRagSoc,SIGNAL(editingFinished()),this,SLOT(getInd()));
connect(ui->cmdSalva,SIGNAL(clicked()),this,SLOT(Salva()));
mdlForn->setTable("Fornitori");
mapForn->setModel(mdlForn);
mapForn->addMapping(ui->txtFRagSoc,mdlForn->fieldIndex("RagSoc"));
mapForn->addMapping(ui->txtFInd,mdlForn->fieldIndex("Indirizzo"));
mapForn->addMapping(ui->txtFCAP,mdlForn->fieldIndex("CapLocProv"));
int custIndexF=mdlTestRdA->fieldIndex("CodForn");
mdlTestRdA
->setRelation
(custIndexF,
QSqlRelation("Fornitori",
"IDForn",
"IDForn"));
mdlForn->select();
cforn->setCompletionColumn(1);
ui->txtFRagSoc->setCompleter(cforn);
int custIndexE=mdlTestRdA->fieldIndex("CodEnte");
mdlTestRdA
->setRelation
(custIndexE,
QSqlRelation("Enti",
"IDEnte",
"DescrEnte"));
int custIndexVS=mdlTestRdA->fieldIndex("CodVoceSpesa");
mdlTestRdA
->setRelation
(custIndexVS,
QSqlRelation("VociSpesa",
"IDSpesa",
"DescrSpesa"));
int custIndexCC=mdlTestRdA->fieldIndex("CodCCosto");
mdlTestRdA
->setRelation
(custIndexCC,
QSqlRelation("PianoConti",
"IDConto",
"DescrPConti"));
mdlEnti = mdlTestRdA->relationModel(custIndexE);
mdlEnti
->setFilter
(QString("CodUffEN=%1").
arg(codUff
));
ui->cboEnte->setModel(mdlEnti);
ui->cboEnte->setModelColumn(mdlEnti->fieldIndex("DescrEnte"));
mdlCConto = mdlTestRdA->relationModel(custIndexCC);
mdlCConto
->setFilter
(QString("CodUffPC=%1").
arg(codUff
));
ui->cboConto->setModel(mdlCConto);
ui->cboConto->setModelColumn(mdlCConto->fieldIndex("DescrPConti"));
mdlSpesa = mdlTestRdA->relationModel(custIndexVS);
mdlSpesa
->setFilter
(QString("CodUffVS=%1").
arg(codUff
));
ui->cboSpesa->setModel(mdlSpesa);
ui->cboSpesa->setModelColumn(mdlSpesa->fieldIndex("DescrSpesa"));
mapper->setModel(mdlTestRdA);
mapper->addMapping(ui->txtNRda, mdlTestRdA->fieldIndex("NRdA"));
mapper->addMapping(ui->dtDataRda, mdlTestRdA->fieldIndex("Data"),"date");
mapper->addMapping(ui->chkInv,mdlTestRdA->fieldIndex("chkInvest"));
mapper->addMapping(ui->chkNComm,mdlTestRdA->fieldIndex("chkNComm"));
mapper->addMapping(ui->txtCausInv, mdlTestRdA->fieldIndex("TestoInvest"));
mapper->addMapping(ui->txtNumComm,mdlTestRdA->fieldIndex("NumComm"));
mapper->addMapping(ui->dtDataConsegna, mdlTestRdA->fieldIndex("DataCons"),"date");
mapper->addMapping(ui->dtDataContratto,mdlTestRdA->fieldIndex("DataContratto"),"date");
mapper->addMapping(ui->dtDataPrev,mdlTestRdA->fieldIndex("DataPrev"),"date");
mapper->addMapping(ui->dtDataOScr, mdlTestRdA->fieldIndex("DataOfferta"),"date");
mapper->addMapping(ui->dtDataOVerb, mdlTestRdA->fieldIndex("DataOffVerb"),"date");
mapper->addMapping(ui->txtLuogoCons,mdlTestRdA->fieldIndex("LuogoCons"));
mapper->addMapping(ui->txtResa,mdlTestRdA->fieldIndex("Resa"));
mapper->addMapping(ui->cboEnte,custIndexE);
mapper->addMapping(ui->cboConto,custIndexCC);
mapper->addMapping(ui->cboSpesa,custIndexVS);
mapper->addMapping(ui->spinBox,custIndexF);
mdlTestRdA->select();
if (idTest.toInt()==-1){
mdlTestRdA->insertRow(mdlTestRdA->rowCount());
mapper->toLast();
Pulisci();
setWindowTitle(this->windowTitle().replace("########","Nuova"));
ui
->dtDataRda
->setDate
(QDate::currentDate());
}
else{
Pulisci();
setWindowTitle(this->windowTitle().replace("########","Modifica"));
for (int i=0; i<mdlTestRdA->rowCount(); i++){
nrda=mdlTestRdA->record(i).field("NRda").value().toString();
QSqlQuery getEnte
(QString("SELECT IDEnte from Enti where DescrEnte='%1' AND CodUffEN=%2") .arg(mdlTestRdA->record(i).field("DescrEnte").value().toString())
.arg(codUff));
while(getEnte.next())
codente=getEnte.value(0).toString();
if (idRec==idTest){
mapper->setCurrentIndex(i);
getInd();
break;
}
for (int f=0; f<mdlForn->rowCount();f++){
rsGen = mdlTestRdA->record(i).field("RagSoc").value().toString();
rsForn=mdlForn->record(f).field("RagSoc").value().toString();
if(rsGen==rsForn){
mapForn->setCurrentIndex(f);
break;
}
}
}
}
connect(ui->cmdSalva, SIGNAL(clicked()),this,SLOT(Salva()));
}
TstRdA::~TstRdA()
{
delete ui;
}
void TstRdA::Salva(){
//In this way I update the supplier's data
while(mdlForn->isDirty()){
mapForn->submit();
mdlForn->submitAll();
mdlForn->select();
//mdlTestRdA->relationModel(mdlTestRdA->fieldIndex("CodForn"))->select();
}
//So I save the envoice's header data
mapper->submit();
mdlTestRdA->submitAll();
accept();
}
void TstRdA::Pulisci(){
}
void TstRdA
::currentEnteChanged(QString descr
){
QSqlQuery getID
(QString("SELECT IDEnte from Enti where DescrEnte='%1' and CodUffEN=%2") .arg(descr)
.arg(codUff));
while(getID.next())
ui->txtNumEnte->setText(getID.value(0).toString());
}
void TstRdA
::currentContoChanged(QString descr
){
QSqlQuery getID
(QString("SELECT IDConto from PianoConti where DescrPConti='%1' and CodUffPC=%2") .arg(descr)
.arg(codUff));
while(getID.next())
ui->txtNumConto->setText(getID.value(0).toString());
}
void TstRdA
::currentSpesaChanged(QString descr
){
QSqlQuery getID
(QString("SELECT IDSpesa from VociSpesa where DescrSpesa='%1' and CodUffVS=%2") .arg(descr)
.arg(codUff));
while(getID.next())
ui->txtNumSpesa->setText(getID.value(0).toString());
}
void TstRdA::getInd(){
QString ragsoc
= ui
->txtFRagSoc
->text
();
if(mdlForn->isDirty()){
msg.
setWindowIcon(QIcon(":/HGrid/righe.png"));
msg.setText("Le informazioni relative al fornitore non sono state salvate.");
msg.setInformativeText("Salvarle?");
msg.setWindowTitle("Dati fornitore non salvati");
int ret = msg.exec();
switch (ret) {
mapForn->submit();
mdlForn->submitAll();
break;}
gestForn();
break;
}
}
}
else{
gestForn();
}
}
void TstRdA::gestForn(){
QString ragsoc
=ui
->txtFRagSoc
->text
();
mdlForn
->setFilter
(QString("RagSoc='%1'").
arg(ragsoc
));
mdlForn->select();
if(mdlForn->rowCount()>0){
ui->txtFInd->setText(mdlForn->record(0).field(2).value().toString());
ui->txtFCAP->setText(mdlForn->record(0).field(3).value().toString());
}
else {
mdlForn->insertRow(0);
mapForn->toFirst();
ui->txtFRagSoc->setText(ragsoc);
ui->txtFInd->setText("");
ui->txtFCAP->setText("");
}
}