Files correlati : tf Commento : Inizio sviluppo programma di controllo spesometro, spostate alcune funzioni in tfutility per comodità git-svn-id: svn://10.65.10.50/branches/R_10_00@24008 c028cbd2-c16b-5b4b-a496-9718f37d4682
225 lines
5.8 KiB
C++
225 lines
5.8 KiB
C++
#include "tf0400a.h"
|
|
#include "tfutility.h"
|
|
|
|
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <config.h>
|
|
#include <recset.h>
|
|
#include <recarray.h> // cache()
|
|
|
|
|
|
/****************************************************************************************************
|
|
* TSpeCheck_msk
|
|
****************************************************************************************************/
|
|
|
|
class TSpeCheck_msk : public TAutomask
|
|
{
|
|
void fillNoFilter();
|
|
void fillDiff();
|
|
void fillCust();
|
|
void getFilFlag(TString& query);
|
|
void enableEdit(bool en);
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
public:
|
|
TSpeCheck_msk() : TAutomask("tf0400a"){}
|
|
};
|
|
|
|
bool TSpeCheck_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
{
|
|
switch(o.dlg())
|
|
{
|
|
case DLG_RECALC:
|
|
if(e != fe_button) break;
|
|
case F_TIPOCONTROLLO:
|
|
{
|
|
switch(o.mask().get_long(F_TIPOCONTROLLO))
|
|
{
|
|
case 0:
|
|
fillNoFilter();
|
|
break;
|
|
case 1:
|
|
fillDiff();
|
|
break;
|
|
case 2:
|
|
fillCust();
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void TSpeCheck_msk::fillNoFilter()
|
|
{
|
|
TString query = "USE RMOVIVA\n";
|
|
query << "SELECT (23.REG!=\"\")&&BETWEEN(23.DATAREG,#DADATAREG,#ADATAREG)&&(23.TIPO=\"" << get(F_TIPOCF) << "\")";
|
|
if(get(F_CODCF) != "")
|
|
query << "&&STR((23.CODCF=#CODCF))";
|
|
|
|
getFilFlag(query);
|
|
}
|
|
void TSpeCheck_msk::fillDiff()
|
|
{
|
|
|
|
}
|
|
void TSpeCheck_msk::fillCust()
|
|
{
|
|
TString key; key << prefix().firm().get("TIPOA") << "|" << prefix().firm().get("CODANAGR");
|
|
static const TString pivaDitta = cache().get(LF_ANAG, key, "PAIV");
|
|
static const TString cofiDitta = cache().get(LF_ANAG, key, "COFI");
|
|
|
|
TString query = "USE TRASFATT\n";
|
|
query << "SELECT BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&(TIPO=\"" << get(F_TIPOCF) << "\")";
|
|
if(get(F_CODCF) != "")
|
|
query << "&&STR((CODCF=#CODCF))";
|
|
|
|
getFilFlag(query);
|
|
|
|
TISAM_recordset rset(query);
|
|
|
|
TDate dadatareg = get_date(F_DATAINI);
|
|
if(!dadatareg.ok())
|
|
{
|
|
dadatareg = TDate(01, 01, 2017);
|
|
set(F_DATAINI, dadatareg);
|
|
}
|
|
|
|
TDate adatareg = get_date(F_DATAFIN);
|
|
if(!adatareg.ok())
|
|
{
|
|
adatareg = TDate(TODAY);
|
|
set(F_DATAFIN, adatareg);
|
|
}
|
|
|
|
// Setto le variabili
|
|
rset.set_var("#DADATAREG", dadatareg);
|
|
rset.set_var("#ADATAREG", adatareg);
|
|
if(get(F_CODCF) != "")
|
|
rset.set_var("#CODCF", get(F_CODCF));
|
|
|
|
int nrec = rset.items();
|
|
|
|
TSheet_field& s = sfield(F_RIGHE);
|
|
// Nascondo lo sheet
|
|
s.hide();
|
|
|
|
if(!s.empty())
|
|
s.destroy();
|
|
for(bool ok = rset.move_first(); ok; ok = rset.move_next())
|
|
{
|
|
TRectype clifo = getCli(rset.get("TIPO").as_string(), rset.get("CODCF").as_string(), rset.get("OCCAS").as_string());
|
|
TToken_string& row = s.row(-1);
|
|
|
|
row.add(rset.get("DATAREG").as_string(), s.cid2index(A_DATAREG));
|
|
row.add(rset.get("TIPODOC").as_string(), s.cid2index(A_TIPODOC));
|
|
row.add(rset.get("NUMDOC").as_string(), s.cid2index(A_NUMDOC));
|
|
row.add(rset.get("CODIVA").as_string(), s.cid2index(A_ALIQUOTA));
|
|
row.add(rset.get("IMPONIBILE").as_string(), s.cid2index(A_IMPONIBILE));
|
|
row.add(rset.get("IMPOSTA").as_string(), s.cid2index(A_IMPOSTA));
|
|
// NATURA
|
|
row.add(natura(rset.get("CODIVA").as_string()), s.cid2index(A_NATURA));
|
|
// DETR
|
|
row.add(findDetraib(rset.get("TIPODET").as_string()), s.cid2index(A_DETRAIB));
|
|
|
|
row.add(rset.get("TIPO").as_string(), s.cid2index(A_TIPOCF));
|
|
row.add(rset.get("CODCF").as_string(), s.cid2index(A_CODCF));
|
|
row.add(rset.get("OCCAS").as_string(), s.cid2index(A_OCFPI));
|
|
// RSOC
|
|
row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC));
|
|
// RFSO
|
|
row.add(clifo.get("CODRFSO"), s.cid2index(A_RFSO));
|
|
// RSOC RFSO
|
|
row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO));
|
|
// RC
|
|
row.add((revCharge(rset.get("NUMREG").as_string())), s.cid2index(A_REVERSE));
|
|
// AUTOFATT
|
|
if(rset.get("AUTOFATT").as_string() == "X" || pivaDitta == clifo.get("PAIV"))
|
|
{
|
|
row.add("X", s.cid2index(A_AUTOFATT));
|
|
row.add(pivaDitta, s.cid2index(A_PAIV));
|
|
row.add(cofiDitta, s.cid2index(A_COFI));
|
|
}
|
|
else
|
|
{
|
|
row.add("", s.cid2index(A_AUTOFATT)); // AutoFatt
|
|
row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA
|
|
row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale
|
|
}
|
|
row.add(rset.get("TFINVIO").as_string() == "X", s.cid2index(A_SPEDITA));
|
|
row.add(rset.get("NUMREG").as_string(), s.cid2index(A_NUMERO));
|
|
}
|
|
s.force_update();
|
|
s.show();
|
|
enableEdit(true);
|
|
}
|
|
|
|
void TSpeCheck_msk::getFilFlag(TString& query)
|
|
{
|
|
switch(get_int(F_FLAG))
|
|
{
|
|
case 1:
|
|
query << "&&((TFINVIO=\"\")||(TFINVIO=\"X\")||(TFINVIO=\"F\")||(TFINVIO=\"E\"))";
|
|
break;
|
|
case 2:
|
|
query << "&&(TFINVIO=\"I\")";
|
|
break;
|
|
case 3:
|
|
query << "&&(TFINVIO=\"N\")";
|
|
case 0:
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void TSpeCheck_msk::enableEdit(bool en)
|
|
{
|
|
// Abilito i bottoni
|
|
enable(DLG_SAVEREC,en);
|
|
enable(DLG_CANCEL, en);
|
|
|
|
TSheet_field& s = sfield(F_RIGHE);
|
|
|
|
// Abilito i campi
|
|
enable(A_ELIMINA,en);
|
|
enable(A_DATAREG,en);
|
|
enable(A_TIPODOC,en);
|
|
enable(A_NUMDOC,en);
|
|
enable(A_DATADOC,en);
|
|
enable(A_ALIQUOTA,en);
|
|
enable(A_IMPONIBILE,en);
|
|
enable(A_IMPOSTA,en);
|
|
enable(A_NATURA,en);
|
|
enable(A_TIPOCF,en);
|
|
enable(A_CODCF,en);
|
|
enable(A_OCFPI,en);
|
|
}
|
|
|
|
/****************************************************************************************************
|
|
* TSpeCheck_app
|
|
****************************************************************************************************/
|
|
|
|
class TSpeCheck_app : public TSkeleton_application
|
|
{
|
|
public:
|
|
virtual void main_loop();
|
|
};
|
|
|
|
TSpeCheck_app& app() { return (TSpeCheck_app&)main_app(); }
|
|
|
|
void TSpeCheck_app::main_loop()
|
|
{
|
|
TSpeCheck_msk msk;
|
|
msk.run();
|
|
}
|
|
|
|
|
|
int tf0400(int argc, char* argv[])
|
|
{
|
|
TSpeCheck_app app;
|
|
app.run(argc, argv, TR("Controlli Spesometro"));
|
|
return 0;
|
|
} |