campo-sirio/src/tf/tf0400.cpp
mtollari 725ad83724 Patch level : 12.0 428
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
2017-07-28 08:20:30 +00:00

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;
}