Files correlati : tf Commento : Sistemata query errata git-svn-id: svn://10.65.10.50/branches/R_10_00@24095 c028cbd2-c16b-5b4b-a496-9718f37d4682
132 lines
3.2 KiB
C++
132 lines
3.2 KiB
C++
#include "tf0300a.h"
|
|
|
|
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <recset.h>
|
|
#include <recarray.h> // cache()
|
|
#include <progind.h>
|
|
|
|
class TChangeStato_msk : public TAutomask
|
|
{
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly) { return true; }
|
|
public:
|
|
TChangeStato_msk() : TAutomask("tf0300a"){}
|
|
};
|
|
|
|
// Definizione per chiamare metodo send dalla maschera
|
|
class TChangeStato_app : public TSkeleton_application
|
|
{
|
|
bool change(TChangeStato_msk& ms);
|
|
public:
|
|
virtual void main_loop();
|
|
};
|
|
|
|
bool TChangeStato_app::change(TChangeStato_msk& msk)
|
|
{
|
|
TString statoini = msk.get(A_STATOINI), statofin = msk.get(A_STATOFIN);
|
|
if(statoini == statofin)
|
|
{
|
|
return error_box("Errore! Stati Iniziale e Finale identici!");
|
|
}
|
|
|
|
// Cambio tutti i movimenti di quella data partendo prima da quelli in prima nota
|
|
TString query = "USE MOV\n";
|
|
query << "SELECT (REG!=\"\")&&BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&(TIPO=\"" << msk.get(F_TIPOCF) << "\")";
|
|
if(msk.get(F_CODCF) != "")
|
|
query << "&&STR((CODCF=#CODCF))";
|
|
if(statoini == "X")
|
|
{
|
|
query << "&&((TFINVIO=\"\")||(TFINVIO=\"X\"))";
|
|
}
|
|
else
|
|
query << "&&(TFINVIO=\"" << statoini << "\")";
|
|
|
|
TISAM_recordset rset(query);
|
|
TDate dadatareg = msk.get_date(F_DATAINI);
|
|
if(!dadatareg.ok())
|
|
{
|
|
dadatareg = TDate(01, 01, 2017);
|
|
msk.set(F_DATAINI, dadatareg);
|
|
}
|
|
|
|
TDate adatareg = msk.get_date(F_DATAFIN);
|
|
if(!adatareg.ok())
|
|
{
|
|
adatareg = TDate(TODAY);
|
|
msk.set(F_DATAFIN, adatareg);
|
|
}
|
|
|
|
// Setto le variabili
|
|
rset.set_var("#DADATAREG", dadatareg);
|
|
rset.set_var("#ADATAREG", adatareg);
|
|
if(msk.get(F_CODCF) != "")
|
|
rset.set_var("#CODCF", msk.get(F_CODCF));
|
|
|
|
int nrec = rset.items();
|
|
|
|
TLocalisamfile mov(LF_MOV), trasfatt(LF_TRASFATT);
|
|
|
|
TProgress_monitor p1(nrec, "Cambio stato prima nota");
|
|
|
|
for(bool ok = rset.move_first(); rset.items() > 0 && ok; ok = rset.move_next())
|
|
{
|
|
if(!p1.add_status())
|
|
return false;
|
|
|
|
TRectype& rmov = rset.cursor()->curr();
|
|
rmov.put("TFINVIO", statofin);
|
|
ok = rmov.rewrite(mov) == NOERR;
|
|
}
|
|
|
|
query.cut(0) << "USE TRASFATT\n";
|
|
query << "SELECT BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&(TIPO=\"" << msk.get(F_TIPOCF) << "\")";
|
|
if(msk.get(F_CODCF) != "")
|
|
query << "&&STR((CODCF=#CODCF))";
|
|
|
|
if(statoini == "X")
|
|
{
|
|
query << "&&((TFINVIO=\"\")||(TFINVIO=\"X\"))";
|
|
}
|
|
else
|
|
query << "&&(TFINVIO=\"" << statoini << "\")";
|
|
|
|
// Riciclo vah
|
|
rset = TISAM_recordset(query);
|
|
// Setto le variabili
|
|
rset.set_var("#DADATAREG", dadatareg);
|
|
rset.set_var("#ADATAREG", adatareg);
|
|
if(msk.get(F_CODCF) != "")
|
|
rset.set_var("#CODCF", msk.get(F_CODCF));
|
|
|
|
nrec = rset.items();
|
|
TProgress_monitor p2(nrec, "Cambio stato record custom");
|
|
|
|
for(bool ok = rset.move_first(); rset.items() > 0 && ok; ok = rset.move_next())
|
|
{
|
|
if(!p2.add_status())
|
|
return false;
|
|
|
|
TRectype& rtrasfatt = rset.cursor()->curr();
|
|
rtrasfatt.put("TFINVIO", statofin);
|
|
ok = rtrasfatt.rewrite(trasfatt) == NOERR;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void TChangeStato_app::main_loop()
|
|
{
|
|
TChangeStato_msk msk;
|
|
while(msk.run() == K_ENTER)
|
|
{
|
|
change(msk);
|
|
}
|
|
}
|
|
|
|
|
|
int tf0300(int argc, char* argv[])
|
|
{
|
|
TChangeStato_app app;
|
|
app.run(argc, argv, TR("Invio dati liquidazione IVA"));
|
|
return 0;
|
|
} |