#include #include #include #include #include // ID Bottoni #include "fp1.h" #include "fp1100a.h" #include #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; }