200 lines
5.3 KiB
C++
200 lines
5.3 KiB
C++
|
/////////////////////////////////////////////////////////////////////////////////////
|
|||
|
// TPassive_mask
|
|||
|
/////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
#include "defmask.h"
|
|||
|
#include "automask.h"
|
|||
|
#include "applicat.h"
|
|||
|
#include <progind.h>
|
|||
|
#include "tsdb.h"
|
|||
|
#include "fp0400a.h"
|
|||
|
#include "fplib.h"
|
|||
|
|
|||
|
|
|||
|
class TPassive_mask : public TAutomask
|
|||
|
{
|
|||
|
protected:
|
|||
|
|
|||
|
void set_filter_changed();
|
|||
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
|||
|
void next_page(int p) override;
|
|||
|
void fill();
|
|||
|
void init();
|
|||
|
|
|||
|
void load_all_fields();
|
|||
|
|
|||
|
bool _filter_changed;
|
|||
|
|
|||
|
public:
|
|||
|
void save_all_fields() const;
|
|||
|
|
|||
|
TPassive_mask() : TAutomask("fp0400a"), _filter_changed(true)
|
|||
|
{
|
|||
|
load_all_fields();
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
void TPassive_mask::set_filter_changed()
|
|||
|
{
|
|||
|
_filter_changed = true;
|
|||
|
}
|
|||
|
|
|||
|
void TPassive_mask::next_page(int p)
|
|||
|
{
|
|||
|
//if(true)
|
|||
|
if (_filter_changed && p != 1000)
|
|||
|
{
|
|||
|
fill();
|
|||
|
_filter_changed = false;
|
|||
|
}
|
|||
|
TAutomask::next_page(p);
|
|||
|
}
|
|||
|
|
|||
|
void TPassive_mask::fill()
|
|||
|
{
|
|||
|
TSheet_field& sf = sfield(F_DOCS);
|
|||
|
//TString_array& sht = sf.rows_array();
|
|||
|
sf.hide();
|
|||
|
sf.destroy();
|
|||
|
|
|||
|
const TDate dal = get(F_DATAINI);
|
|||
|
const TDate al = get(F_DATAEND);
|
|||
|
|
|||
|
TString query;
|
|||
|
|
|||
|
query << "SELECT YEAR(P7_DATA) as ANNO, P7_TIPODOC as [TIPO_SDI], P7_NUMERO as [NUM_DOC], " <<
|
|||
|
"P7_DATA as [DATA_DOC], PQ_IMPTOTDOC as [TOT_DOC], P2_ANADENOMIN AS [RAG_SOC], P2_ANANOME AS NOME, " <<
|
|||
|
"P2_ANACOGNOME AS COGNOME, P2_FISCIVACOD AS [P_IVA], P2_CODFISCALE AS [COD_FISC], P2_FISCIVAPAESE AS [COD_PAESE], PP_ATTACHMENT ATTACHMENT, P1_CODDEST as [COD_SDI], PU_PEC AS PEC\n" <<
|
|||
|
"FROM PAA0100F PAA01\n" <<
|
|||
|
"JOIN PAA0200F PAA02 ON P1_KEYPRGINVIO = P2_KEYPRGINVIO and P1_KEYHEADERFATT = P2_KEYHEADERFATT and P1_KEYBODYFATT = P2_KEYBODYFATT\n" <<
|
|||
|
"JOIN PAA0700F PAA07 ON P1_KEYPRGINVIO = P7_KEYPRGINVIO and P1_KEYHEADERFATT = P7_KEYHEADERFATT and P1_KEYBODYFATT = P7_KEYBODYFATT\n" <<
|
|||
|
"JOIN PAA2700F PAA27 ON P1_KEYPRGINVIO = PQ_KEYPRGINVIO and P1_KEYHEADERFATT = PQ_KEYHEADERFATT and P1_KEYBODYFATT = PQ_KEYBODYFATT\n" <<
|
|||
|
"LEFT JOIN PAA2600F PAA26 ON P1_KEYPRGINVIO = PP_KEYPRGINVIO and P1_KEYHEADERFATT = PP_KEYHEADERFATT and P1_KEYBODYFATT = PP_KEYBODYFATT\n" <<
|
|||
|
"LEFT JOIN PAA3200F PAA32 ON P1_KEYPRGINVIO = PU_KEYPRGINVIO and PU_KEYHEADERFATT = PU_KEYHEADERFATT and P1_KEYBODYFATT = PU_KEYBODYFATT\n" <<
|
|||
|
"WHERE P7_DATA >= \'" << dal.date2ansi() << "\' AND P7_DATA <= \'" << al.date2ansi() << "\'";
|
|||
|
fp_db().sq_set_exec(query, false);
|
|||
|
|
|||
|
//TProgress_monitor pi(fp_db().sq_items(), nullptr);
|
|||
|
|
|||
|
TLocalisamfile clifo(LF_CLIFO);
|
|||
|
|
|||
|
while(fp_db().sq_next())
|
|||
|
//for(bool ok = ; ok; ok = s.sq_next())
|
|||
|
{
|
|||
|
clifo.zero();
|
|||
|
clifo.put(CLI_TIPOCF, 'F');
|
|||
|
TToken_string& row = sf.row(-1);
|
|||
|
TString denom = fp_db().sq_get("RAG_SOC");
|
|||
|
if (denom.blank()) {
|
|||
|
denom = fp_db().sq_get("NOME");
|
|||
|
denom.trim();
|
|||
|
denom << " " << fp_db().sq_get("COGNOME");
|
|||
|
denom.trim();
|
|||
|
}
|
|||
|
TString id_fisc = fp_db().sq_get("COGNOME");
|
|||
|
|
|||
|
row.add(fp_db().sq_get_int("ANNO"), 0);
|
|||
|
row.add(fp_db().sq_get("TIPO_SDI"));
|
|||
|
row.add(fp_db().sq_get("NUM_DOC"));
|
|||
|
row.add(fp_db().sq_get("DATA_DOC"));
|
|||
|
row.add(fp_db().sq_get("TOT_DOC"));
|
|||
|
// Cerco se il fornitore <20> presente in Campo
|
|||
|
|
|||
|
if (fp_db().sq_get("P_IVA") == "01903590154")
|
|||
|
bool tolla = true;
|
|||
|
|
|||
|
|
|||
|
if(fp_db().sq_get("COD_PAESE").full() && fp_db().sq_get("P_IVA").full())
|
|||
|
{
|
|||
|
clifo.setkey(5);
|
|||
|
clifo.put(CLI_STATOPAIV, fp_db().sq_get("COD_PAESE"));
|
|||
|
clifo.put(CLI_PAIV, fp_db().sq_get("P_IVA"));
|
|||
|
if(clifo.read() == NOERR)
|
|||
|
row.add(clifo.get(CLI_CODCF));
|
|||
|
else if (fp_db().sq_get("COD_PAESE") == "IT")
|
|||
|
{
|
|||
|
clifo.put(CLI_PAIV, fp_db().sq_get("P_IVA"));
|
|||
|
clifo.put(CLI_STATOPAIV, "");
|
|||
|
if (clifo.read() == NOERR)
|
|||
|
row.add(clifo.get(CLI_CODCF));
|
|||
|
}
|
|||
|
}
|
|||
|
else if(fp_db().sq_get("COD_FISC").full())
|
|||
|
{
|
|||
|
clifo.setkey(4);
|
|||
|
clifo.put(CLI_COFI, fp_db().sq_get("COD_FISC"));
|
|||
|
if (clifo.read() == NOERR)
|
|||
|
row.add(clifo.get(CLI_CODCF));
|
|||
|
}
|
|||
|
row.add(denom, sf.cid2index(S_RAGSOC));
|
|||
|
|
|||
|
row.add(fp_db().sq_get("COD_PAESE") << fp_db().sq_get("P_IVA"));
|
|||
|
row.add(fp_db().sq_get("COD_FISC"));
|
|||
|
TString appo = fp_db().sq_get("ATTACHMENT");
|
|||
|
row.add( appo.blank() ? "" : "X" );
|
|||
|
row.add(fp_db().sq_get("COD_SDI").blank() ? fp_db().sq_get("PEC") : fp_db().sq_get("COD_SDI"));
|
|||
|
}
|
|||
|
|
|||
|
sf.force_update();
|
|||
|
sf.show();
|
|||
|
}
|
|||
|
|
|||
|
void TPassive_mask::init()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
void TPassive_mask::load_all_fields()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||
|
{
|
|||
|
switch (o.dlg())
|
|||
|
{
|
|||
|
case F_DATAINI:
|
|||
|
if (e == fe_init)
|
|||
|
o.set(ini_get_string(CONFIG_DITTA, "fp", "LastXML", "01-01-2019"));
|
|||
|
else if (e == fe_close)
|
|||
|
ini_set_string(CONFIG_DITTA, "fp", "LastXML", o.get());
|
|||
|
break;
|
|||
|
case F_DATAEND:
|
|||
|
if (e == fe_init)
|
|||
|
o.set(TDate(TODAY));
|
|||
|
default: break;
|
|||
|
}
|
|||
|
if ((e == fe_modify || e >= se_enter) && jolly == 0)
|
|||
|
if (o.dlg() >= START_MASK && o.dlg() <= END_MASK)
|
|||
|
set_filter_changed();
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/////////////////////////////////////////////////////////////////////////////////////
|
|||
|
// TPassive_app
|
|||
|
/////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
class TPassive_app : public TSkeleton_application
|
|||
|
{
|
|||
|
|
|||
|
public:
|
|||
|
void main_loop() override;
|
|||
|
|
|||
|
TPassive_app() = default;
|
|||
|
};
|
|||
|
|
|||
|
void TPassive_app::main_loop()
|
|||
|
{
|
|||
|
TPassive_mask mask;
|
|||
|
while(mask.run() == K_ENTER)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
int fp0400(int argc, char * argv[])
|
|||
|
{
|
|||
|
TPassive_app fpas;
|
|||
|
fpas.run(argc, argv, TR("Fatturazione F.P."));
|
|||
|
return 0;
|
|||
|
}
|