Patch level : 12.0 698

Files correlati     : fp
Commento            : implementazione monitor fatture passive
This commit is contained in:
Simone Palacino 2019-02-08 17:18:16 +01:00
parent ab258c2e5c
commit 45c051406c
3 changed files with 407 additions and 0 deletions

200
src/fp/fp0400.cpp Normal file
View File

@ -0,0 +1,200 @@
/////////////////////////////////////////////////////////////////////////////////////
// TPassive_mask
/////////////////////////////////////////////////////////////////////////////////////
#include "defmask.h"
#include "automask.h"
#include "applicat.h"
#include <progind.h>
#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;
}

32
src/fp/fp0400a.h Normal file
View File

@ -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

175
src/fp/fp0400a.uml Normal file
View File

@ -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 <helpbar.h>
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