Files correlati : fp Commento : - Aggiunto programma fp1 con stampa elenco bolli in fattura - Data una ripulita al menu fp
178 lines
4.2 KiB
C++
178 lines
4.2 KiB
C++
#include <confapp.h>
|
|
#include <automask.h>
|
|
#include <sheet.h>
|
|
#include <utility.h>
|
|
#include <urldefid.h> // ID Bottoni
|
|
|
|
#include "fp1.h"
|
|
#include "fp1100a.h"
|
|
#include <tsdb.h>
|
|
#include "recset.h"
|
|
#include "progind.h"
|
|
#include "../ve/velib.h"
|
|
#include "fplib.h"
|
|
|
|
class TBolliinfatt_mask : public TAutomask
|
|
{
|
|
protected:
|
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
|
void fill();
|
|
public:
|
|
TBolliinfatt_mask() : TAutomask("fp1100a"){};
|
|
};
|
|
|
|
bool TBolliinfatt_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
{
|
|
switch (o.dlg())
|
|
{
|
|
case DLG_EXPORT:
|
|
if (e == fe_button)
|
|
{
|
|
TSheet_field& sf = sfield(F_DOCS);
|
|
if(sf.items() > 0)
|
|
{
|
|
sf.esporta();
|
|
}
|
|
else
|
|
{
|
|
warning_box("Impossibile esportare una tabella vuota!");
|
|
}
|
|
}
|
|
break;
|
|
case DLG_RECALC:
|
|
if (e == fe_button)
|
|
fill();
|
|
case DLG_USER:
|
|
if (e == fe_button && jolly > 0)
|
|
{
|
|
TSheet_field& docs = sfield(F_DOCS);
|
|
TToken_string& row = docs.row(docs.selected());
|
|
TRectype doc(LF_DOC);
|
|
doc.put(DOC_PROVV, 'D');
|
|
doc.put(DOC_ANNO, row.get(1));
|
|
doc.put(DOC_CODNUM, row.get(2));
|
|
doc.put(DOC_TIPODOC, row.get(3));
|
|
doc.put(DOC_NDOC, row.get(5));
|
|
if (doc.edit())
|
|
fill();
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void TBolliinfatt_mask::fill()
|
|
{
|
|
TSheet_field& docs = sfield(F_DOCS);
|
|
TString_array& sht = docs.rows_array();
|
|
docs.hide();
|
|
|
|
sht.destroy();
|
|
|
|
TDate dal = get_date(F_DADATA);
|
|
TDate al = get_date(F_ADATA);
|
|
|
|
if(!dal.ok())
|
|
{
|
|
dal = TDate(01, 01, 2019);
|
|
set(F_DADATA, dal);
|
|
}
|
|
|
|
if(!al.ok())
|
|
{
|
|
al = TDate(TODAY);
|
|
set(F_ADATA, al);
|
|
}
|
|
|
|
// Record di controllo per eventuali elaborazioni precedenti
|
|
TString hfatt, bfatt;
|
|
|
|
TString query;
|
|
|
|
query << "USE 33 KEY 3 \n" <<
|
|
"SELECT 33.TIPOCF==\"C\"" <<
|
|
TISAM_recordset::add_between_filter(DOC_CODNUM, get(F_DACODNUM), get(F_ACODNUM)) <<
|
|
" \n" <<
|
|
"JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
|
"JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
|
"JOIN %TIP TO 33 ALIAS 400 INTO CODTAB==TIPODOC \n" <<
|
|
"FROM DATADOC=#DADATADOC \n" <<
|
|
"TO DATADOC=#ADATADOC";
|
|
|
|
TISAM_recordset rec(query);
|
|
|
|
rec.set_var("#DADATADOC", dal);
|
|
rec.set_var("#ADATADOC", al);
|
|
rec.set_var("#DACODNUM", get(F_DACODNUM));
|
|
rec.set_var("#ACODNUM", get(F_ACODNUM));
|
|
|
|
TProgress_monitor pi(rec.items(), nullptr);
|
|
|
|
for (bool okc = rec.move_first(); okc; okc = rec.move_next())
|
|
{
|
|
if (!pi.add_status())
|
|
break;
|
|
const TRectype& doc = rec.cursor()->curr();
|
|
const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC));
|
|
|
|
bool sent = false;
|
|
if (chiave_paf(doc, hfatt, bfatt))
|
|
{
|
|
TString qry_paf7 = "SELECT PAF0700F.P7_IMPORTOBOLLO, PAF0100F.P1_GESTIONE FROM PAF0700F JOIN PAF0100F ON P7_KEYPRGINVIO = P1_KEYPRGINVIO AND P7_KEYHEADERFATT = P1_KEYHEADERFATT AND P7_KEYBODYFATT = P1_KEYBODYFATT WHERE P7_KEYHEADERFATT = '";
|
|
qry_paf7 << hfatt << "' AND P7_KEYBODYFATT = '" << bfatt << "' AND P7_IMPORTOBOLLO > 0";
|
|
if (!fp_db().sq_set_exec(qry_paf7) || (fp_db().sq_get("P1_GESTIONE") != "N" && (fp_settings().is_f8() ? fp_db().sq_get("P1_GESTIONE") != "X" : true)))
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
TToken_string& row = docs.row(-1);
|
|
row.add(rec.get(DOC_ANNO).as_int());
|
|
row.add(rec.get(DOC_CODNUM).as_string());
|
|
row.add(rec.get(DOC_TIPODOC).as_string());
|
|
if (!rec.get(DOC_TIPODOCSDI).is_empty())
|
|
row.add(rec.get(DOC_TIPODOCSDI).as_string());
|
|
else
|
|
row.add(td.tipo_doc_sdi());
|
|
row.add(rec.get(DOC_NDOC).as_int());
|
|
row.add(rec.get(DOC_DATADOC).as_date());
|
|
row.add(rec.get("33.TOTDOC").as_real());
|
|
row.add(rec.get("33.IMPOSTE").as_real());
|
|
row.add(rec.get(CFV_CODCF).as_int());
|
|
row.add(rec.get("20." CLI_RAGSOC).as_string());
|
|
row.add(fp_db().sq_get("P7_IMPORTOBOLLO"));
|
|
row.add(rec.get(DOC_ADDBOLLI).as_string());
|
|
}
|
|
|
|
if(docs.items() == 0)
|
|
{
|
|
warning_box("Non sono stati trovati documenti con i filtri scelti.");
|
|
}
|
|
|
|
docs.force_update();
|
|
docs.show();
|
|
}
|
|
|
|
class TBolliinfatt_app : public TSkeleton_application
|
|
{
|
|
public:
|
|
virtual void main_loop() override;
|
|
};
|
|
|
|
void TBolliinfatt_app::main_loop()
|
|
{
|
|
TBolliinfatt_mask pm;
|
|
while (pm.run() == K_ENTER)
|
|
{
|
|
}
|
|
}
|
|
|
|
int fp1100(int argc, char* argv[])
|
|
{
|
|
TBolliinfatt_app appc;
|
|
appc.run(argc, argv, TR("Bolli in fattura FP"));
|
|
return 0;
|
|
} |