diff --git a/src/fp/fp0400.cpp b/src/fp/fp0400.cpp new file mode 100644 index 000000000..e5a801111 --- /dev/null +++ b/src/fp/fp0400.cpp @@ -0,0 +1,200 @@ +///////////////////////////////////////////////////////////////////////////////////// +// TPassive_mask +///////////////////////////////////////////////////////////////////////////////////// + +#include "defmask.h" +#include "automask.h" +#include "applicat.h" +#include +#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 č 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; +} \ No newline at end of file diff --git a/src/fp/fp0400a.h b/src/fp/fp0400a.h new file mode 100644 index 000000000..873ebaaff --- /dev/null +++ b/src/fp/fp0400a.h @@ -0,0 +1,32 @@ +#define START_MASK 401 +#define F_DATAINI 401 +#define F_DATAEND 402 +#define END_MASK 499 + + +#define F_DOCUMENTI_TIPO 301 + +//#define S_SELCODNUM 101 +//#define S_TIPODOCSEL 102 +//#define S_DASTATO 103 +//#define S_ASTATO 104 +//#define S_TIPODOCSDI 105 + +#define F_DOCS 201 + +//#define S_SELECTED 101 +#define S_ANNO 101 +#define S_CODSDI 102 +#define S_NDOC 103 +#define S_DATADOC 104 +#define S_TOTDOC 105 +#define S_CLIENTE 106 +#define S_RAGSOC 107 +#define S_PARIVA 108 +#define S_CODFISC 109 +#define S_ATTACH 110 +#define S_COFI 111 + + + + diff --git a/src/fp/fp0400a.uml b/src/fp/fp0400a.uml new file mode 100644 index 000000000..1d9a29d84 --- /dev/null +++ b/src/fp/fp0400a.uml @@ -0,0 +1,175 @@ +#include "fp0400a.h" + +TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_ALL 2 2 +BEGIN + PROMPT 1 1 "~Tutti" + PICTURE TOOL_MULTISEL +END + +BUTTON DLG_OK 2 2 +BEGIN + PROMPT 1 1 "Elabora" + PICTURE TOOL_ELABORA + FLAGS "D" +END + +BUTTON DLG_SAVEREC 2 2 +BEGIN + PROMPT 1 1 "Elimina" + PICTURE TOOL_WARNING + FLAGS "D" +END + +BUTTON DLG_FINDREC 2 2 +BEGIN + PROMPT 1 1 "Segna pronto" + PICTURE TOOL_PERMISSIONS + FLAGS "D" +END + +#include + +ENDPAGE + +PAGE "Fatture Passive" 0 2 0 0 + +DATE F_DATAINI +BEGIN + PROMPT 1 1 "Data iniziale" + CHECKTYPE REQUIRED +END + +DATE F_DATAEND +BEGIN + PROMPT 50 1 "Data finale " + VALIDATE DATE_CMP_FUNC >= F_DATAINI + WARNING "La data finale non puĆ² essere minore della data iniziale" + CHECKTYPE REQUIRED +END + + +ENDPAGE + +PAGE "Elenco Fatture" 0 2 0 0 + +SPREADSHEET F_DOCS +BEGIN + PROMPT 0 2 "" + ITEM "Anno" + ITEM "Tipo SDI@4" + ITEM "Num.\nDoc.@11" + ITEM "Data\nDoc.@10" + ITEM "Totale\nDoc." + ITEM "Fornitore" + ITEM "Ragione Sociale@50" + ITEM "P. IVA@16" + ITEM "Cod. Fiscale@16" + ITEM "Allegati" + ITEM "Codice destinatario@20" +END + +ENDPAGE +ENDMASK + + +PAGE "Documento" -1 -1 78 9 + +NUMBER S_ANNO 4 +BEGIN + PROMPT 1 2 "Anno " + FLAGS "D" +END + +LIST S_CODSDI 35 +BEGIN + PROMPT 41 2 "Tipo Doc SDI" + ITEM "TD01|TD01 Fattura" + ITEM "TD02|TD02 Acconto/Anticipo su fattura" + ITEM "TD03|TD03 Acconto/Anticipo su parcella" + ITEM "TD04|TD04 Nota di credito" + ITEM "TD05|TD05 Nota di debito" + ITEM "TD06|TD06 Parcella" + ITEM "TD20|TD20 Autofattura" + FLAG "D" +END + +NUMBER S_NDOC 11 +BEGIN + PROMPT 1 3 "Numero " + FLAGS "D" +END + +DATE S_DATADOC +BEGIN + PROMPT 21 3 "Data " + FLAGS "D" +END + +NUMBER S_TOTDOC 11 3 +BEGIN + PROMPT 26 3 "Data " + FLAGS "D" +END + +NUMBER S_CLIENTE 6 +BEGIN + PROMPT 1 4 "Fornitore " + FLAGS "D" +END + +STRING S_RAGSOC 50 +BEGIN + PROMPT 21 4 "" + FLAGS "D" +END + +STRING S_PARIVA 50 20 +BEGIN + PROMPT 1 5 "" + FLAGS "D" +END + +STRING S_CODFISC 50 20 +BEGIN + PROMPT 1 5 "" + FLAGS "D" +END + +STRING S_COFI 20 +BEGIN + PROMPT 1 6 "" + FLAGS "D" +END + +BOOLEAN S_ATTACH +BEGIN + PROMPT 1 8 "Documenti in allegato" + FLAGS "D" +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