From 18f4c6985c06e3be5b4c35a2078eb016195ada17 Mon Sep 17 00:00:00 2001 From: Mattia Tollari Date: Tue, 12 Mar 2019 12:51:40 +0100 Subject: [PATCH] Patch level : 12.0 728 Files correlati : fp Commento : - Aggiunto programma fp1 con stampa elenco bolli in fattura - Data una ripulita al menu fp --- build/fp.sln | 10 +++ build/fp0.vcxproj | 1 + build/fplib.vcxproj | 4 +- src/fp/fp0.h | 4 +- src/fp/fp1.cpp | 16 ++++ src/fp/fp1.h | 6 ++ src/fp/fp1100.cpp | 178 ++++++++++++++++++++++++++++++++++++++++++++ src/fp/fp1100a.h | 20 +++++ src/fp/fp1100a.uml | 172 ++++++++++++++++++++++++++++++++++++++++++ src/fp/fpmenu.men | 24 +++++- 10 files changed, 428 insertions(+), 7 deletions(-) create mode 100644 src/fp/fp1.cpp create mode 100644 src/fp/fp1.h create mode 100644 src/fp/fp1100.cpp create mode 100644 src/fp/fp1100a.h create mode 100644 src/fp/fp1100a.uml diff --git a/build/fp.sln b/build/fp.sln index 0db597406..8a1c85d07 100644 --- a/build/fp.sln +++ b/build/fp.sln @@ -15,6 +15,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AgaLib", "AgaLib.vcxproj", EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tflib", "tflib.vcxproj", "{7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fp1", "fp1.vcxproj", "{A539BCC1-D08F-4D78-A8EA-65560F4A60CD}" + ProjectSection(ProjectDependencies) = postProject + {C575788B-0BE4-4F68-B9C9-3C204EC04E07} = {C575788B-0BE4-4F68-B9C9-3C204EC04E07} + {7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5} = {7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -37,6 +43,10 @@ Global {7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5}.Debug|Win32.Build.0 = Debug|Win32 {7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5}.Release|Win32.ActiveCfg = Release|Win32 {7BF6939E-DFCD-49ED-B0A8-EDB68DDCE6D5}.Release|Win32.Build.0 = Release|Win32 + {A539BCC1-D08F-4D78-A8EA-65560F4A60CD}.Debug|Win32.ActiveCfg = Debug|Win32 + {A539BCC1-D08F-4D78-A8EA-65560F4A60CD}.Debug|Win32.Build.0 = Debug|Win32 + {A539BCC1-D08F-4D78-A8EA-65560F4A60CD}.Release|Win32.ActiveCfg = Release|Win32 + {A539BCC1-D08F-4D78-A8EA-65560F4A60CD}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/build/fp0.vcxproj b/build/fp0.vcxproj index 7c40b413f..f6c22211f 100644 --- a/build/fp0.vcxproj +++ b/build/fp0.vcxproj @@ -196,6 +196,7 @@ true + true diff --git a/build/fplib.vcxproj b/build/fplib.vcxproj index ab9f3a374..ecd9fda37 100644 --- a/build/fplib.vcxproj +++ b/build/fplib.vcxproj @@ -173,7 +173,9 @@ - + + true + diff --git a/src/fp/fp0.h b/src/fp/fp0.h index c08010ca7..c19add5b3 100644 --- a/src/fp/fp0.h +++ b/src/fp/fp0.h @@ -1,5 +1,5 @@ -#ifndef __TF0_H -#define __TF0_H +#ifndef __FP0_H +#define __FP0_H int fp0100(int argc, char* argv[]); int fp0200(int argc, char* argv[]); diff --git a/src/fp/fp1.cpp b/src/fp/fp1.cpp new file mode 100644 index 000000000..8a8248282 --- /dev/null +++ b/src/fp/fp1.cpp @@ -0,0 +1,16 @@ +#include +#include "fp1.h" + +int main(int argc, char** argv) +{ + int rt = -1; + const int r = (argc > 1) ? atoi( &argv[1][1] ) : 1; + + // Stampe fatturazione elettronica + switch (r) + { + default: rt = fp1100(argc, argv); break; // Stampa bolli fatture + } + return rt; +} + diff --git a/src/fp/fp1.h b/src/fp/fp1.h new file mode 100644 index 000000000..082a309e1 --- /dev/null +++ b/src/fp/fp1.h @@ -0,0 +1,6 @@ +#ifndef __FP1_H +#define __FP1_H + +int fp1100(int argc, char* argv[]); + +#endif diff --git a/src/fp/fp1100.cpp b/src/fp/fp1100.cpp new file mode 100644 index 000000000..6d4648239 --- /dev/null +++ b/src/fp/fp1100.cpp @@ -0,0 +1,178 @@ +#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; +} \ No newline at end of file diff --git a/src/fp/fp1100a.h b/src/fp/fp1100a.h new file mode 100644 index 000000000..3995ded1b --- /dev/null +++ b/src/fp/fp1100a.h @@ -0,0 +1,20 @@ +#define F_DADATA 201 +#define F_ADATA 202 +#define F_DACODNUM 203 +#define F_DATIPODOC 204 +#define F_ACODNUM 205 +#define F_ATIPODOC 206 +#define F_DOCS 207 + +#define S_ANNO 101 +#define S_CODNUM 102 +#define S_TIPODOC 103 +#define S_CODSDI 104 +#define S_NDOC 105 +#define S_DATADOC 106 +#define S_TOTDOC 107 +#define S_IMPOSTADOC 108 +#define S_CLIENTE 109 +#define S_RAGSOC 110 +#define S_BOLLO 111 +#define S_ADDEBITO 112 \ No newline at end of file diff --git a/src/fp/fp1100a.uml b/src/fp/fp1100a.uml new file mode 100644 index 000000000..3d717ff2d --- /dev/null +++ b/src/fp/fp1100a.uml @@ -0,0 +1,172 @@ +#include "fp1100a.h" + +TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_RECALC 2 2 +BEGIN + PROMPT 1 1 "~Carica" + PICTURE TOOL_CONVERT +END + +BUTTON DLG_EXPORT 2 2 +BEGIN + PROMPT 1 1 "~Excel" + PICTURE TOOL_EXCEL +END + +#include + +ENDPAGE + +PAGE "Filtri" 0 2 0 0 + +DATE F_DADATA +BEGIN + PROMPT 1 1 "Data iniziale" + CHECKTYPE REQUIRED +END + +DATE F_ADATA +BEGIN + PROMPT 50 1 "Data finale " + VALIDATE DATE_CMP_FUNC >= F_DADATA + WARNING "La data finale non puņ essere minore della data iniziale" + CHECKTYPE REQUIRED +END + +STRING F_DACODNUM 4 +BEGIN + PROMPT 1 2 "Da numerazione " + HELP "Da codice numerazione" + USE %NUM + INPUT CODTAB F_DACODNUM + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_DACODNUM CODTAB + FLAG "UPA" + CHECKTYPE FORCED + WARNING "Numerazione assente" + KEY 1 2 +END + +STRING F_ACODNUM 4 +BEGIN + PROMPT 50 2 "A numerazione " + HELP "Da codice numerazione" + USE %NUM + INPUT CODTAB F_ACODNUM + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_ACODNUM CODTAB + FLAG "UPA" + CHECKTYPE FORCED + WARNING "Numerazione assente" + KEY 1 2 +END + +SPREADSHEET F_DOCS +BEGIN + PROMPT 0 5 "" + ITEM "Anno" + ITEM "Cod.\nNum.@4" + ITEM "Tipo\nDoc@4" + ITEM "Tipo SDI@4" + ITEM "Num.\nDoc.@7" + ITEM "Data\nDoc.@10" + ITEM "Totale\nDoc.@10" + ITEM "Imposta\nDoc.@10" + ITEM "Cliente" + ITEM "Ragione Sociale@50" + ITEM "Bollo" + ITEM "Addebito" +END + +ENDPAGE +ENDMASK + +PAGE "Documento" -1 -1 80 6 + +NUMBER S_ANNO 4 +BEGIN + PROMPT 1 1 "Anno " +END + +STRING S_CODNUM 4 +BEGIN + PROMPT 25 1 "Numerazione " +END + +STRING S_TIPODOC 4 +BEGIN + PROMPT 46 1 "Tipo Documento " +END + +STRING S_CODSDI 4 +BEGIN + PROMPT 1 2 "Tipo Doc SDI" +END + +NUMBER S_NDOC 7 +BEGIN + PROMPT 25 2 "Numero " +END + +DATE S_DATADOC +BEGIN + PROMPT 46 2 "Data " +END + +NUMBER S_TOTDOC 15 2 +BEGIN + PROMPT 1 3 "Totale Doc. " +END + +NUMBER S_IMPOSTADOC 15 2 +BEGIN + PROMPT 46 3 "Imposta " +END + +NUMBER S_CLIENTE 6 +BEGIN + PROMPT 1 4 "Cliente " +END + +STRING S_RAGSOC 50 +BEGIN + PROMPT 25 4 "" +END + +NUMBER S_BOLLO 4 2 +BEGIN + PROMPT 1 5 "Importo bollo" +END + +BOOLEAN S_ADDEBITO +BEGIN + PROMPT 20 5 "Addebito cliente" +END + +ENDPAGE + +TOOLBAR "Documento" 0 0 0 2 + +BUTTON DLG_OK 2 2 +BEGIN + PROMPT 1 1 "" +END + +BUTTON DLG_USER 2 2 +BEGIN + PROMPT 1 1 "Collega" + PICTURE TOOL_LINK +END + + +BUTTON DLG_CANCEL 2 2 +BEGIN + PROMPT 1 1 "" +END + +ENDPAGE + +ENDMASK \ No newline at end of file diff --git a/src/fp/fpmenu.men b/src/fp/fpmenu.men index 0f4fc6faf..d1cce2a0f 100644 --- a/src/fp/fpmenu.men +++ b/src/fp/fpmenu.men @@ -3,8 +3,24 @@ Caption = "Trasferimento Fatture" Picture = Module = fp Flags = "" -Item_01 = "Configurazione", "fp0 -0", ""+ +Item_01 = "Manutenzione modulo", [FPMENU_003] Item_02 = "Invio fatture", "fp0 -2", "" -Item_03 = "Monitor Mancata Consegna", "fp0 -4", "" -Item_04 = "Monitor Fatture Passive", "fp0 -3", "" -Item_05 = "Inserimento riferimenti C/F", "fp0 -1", "" \ No newline at end of file +Item_03 = "Monitor Fatture Passive", "fp0 -3", "" +Item_04 = "Stampe", [FPMENU_002] + + +[FPMENU_002] +Caption = "Stampe" +Picture = +Module = fp +Flags = "" +Item_01 = "Elenco Mancata Consegna", "fp0 -4", "" +Item_02 = "Elenco bolli in fattura", "fp1 -0", "" + +[FPMENU_003] +Caption = "Manutenzione" +Picture = +Module = fp +Flags = "" +Item_01 = "Configurazione", "fp0 -0", "", 10210 +Item_02 = "Inserimento riferimenti C/F", "fp0 -1", "" \ No newline at end of file