campo-sirio/src/fp/fp1100.cpp

178 lines
4.2 KiB
C++
Raw Normal View History

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