Patch level : 12.0 920

Files correlati     : fp0.exe
Commento            :
- Corretta esportazione informazioni dichiarazioni d'intento
- Corretta data di registrazione con data ricezione o con una specificata (f1)
This commit is contained in:
Simone Palacino 2020-01-14 17:56:10 +01:00
parent 5e2122e112
commit 0dfeffddb3
3 changed files with 82 additions and 22 deletions

View File

@ -69,8 +69,8 @@ protected:
// Tasto aggiorna: aggiorna cliente che non corrisponde.
bool aggiorna_forn();
void salva_for() const;
void clean_ini(const TString& filename) const;
void run_cg0(const TString& filename) const;
static void clean_ini(const TString& filename);
static void run_cg0(const TString& filename);
void elenco_prots_sel(TString& string) const;
static vector<iva>& get_righe_iva(TToken_string& keys);
@ -89,7 +89,7 @@ protected:
void fattsel(int dlg, TField_event& e);
// Non permette la selezione multipla delle righe
void sel() const;
bool on_key(KEY key);
bool on_key(KEY key) override;
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
void check_buttons(int p) const;
void next_page(int p) override;
@ -102,12 +102,13 @@ protected:
// Aggiunge i protocolli che sono già presenti per le fatture nel db alla tabellina per il filtro
void aggiungi_prot() const;
void init() const;
void save_all() const;
public:
TString& get_fattsel() const;
static void auto_assoc();
TPassive_mask(bool f1);
~TPassive_mask() { save_all(); }
};
bool TPassive_mask::clifo_handler(TMask_field& f, KEY key)
@ -450,8 +451,6 @@ void TPassive_mask::auto_assoc()
{
TToken_string key("",';');
key.add(fp_db().sq_get("KEYPROG")); key.add(fp_db().sq_get("KEYHEAD")); key.add(fp_db().sq_get("KEYFATT"));
if (TString(key.get(0)) == "fNuBh" && TString(key.get(1)) == "05094400966" && TString(key.get(2)) == "TD012019-07-22609")
bool simo = true;
clifo.zero();
clifo.put(CLI_TIPOCF, "F");
@ -547,6 +546,11 @@ void TPassive_mask::init() const
aggiungi_prot();
}
void TPassive_mask::save_all() const
{
ini_set_bool(CONFIG_DITTA, PARA_FP, "F_USEDATARIC", get_bool(F_USEDATARIC));
}
bool TPassive_mask::causfa_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
@ -620,7 +624,7 @@ void TPassive_mask::salva_for() const
}
}
void TPassive_mask::clean_ini(const TString& filename) const
void TPassive_mask::clean_ini(const TString& filename)
{
static TString remove_string;
#ifdef DBG
@ -631,7 +635,7 @@ void TPassive_mask::clean_ini(const TString& filename) const
remove_files(remove_string, false);
}
void TPassive_mask::run_cg0(const TString& filename) const
void TPassive_mask::run_cg0(const TString& filename)
{
static TString run_string;
#ifdef DBG
@ -642,6 +646,11 @@ void TPassive_mask::run_cg0(const TString& filename) const
TExternal_app(run_string).run();
}
bool is_tipomov_nc(const TString& codcaus)
{
return TCausale(codcaus).tipomov() == tm_nota_credito;
}
int TPassive_mask::prepara_contab() const
{
const int err = check_err();
@ -685,7 +694,13 @@ int TPassive_mask::prepara_contab() const
contab_ini.set_paragraph(LF_MOV); // [23]
contab_ini.set("CODCAUS", codcaus);
contab_ini.set("CODCF", row->get(sf.cid2index(S_FORNITORE)));
contab_ini.set("DATACOMP", TDate(TODAY));
TDate datareg;
if (get_bool(F_USEDATARIC))
datareg = TDate(row->get(sf.cid2index(S_DATARIC)));
else
datareg = !get(F_DATAREGDIF).empty() ? TDate(get(F_DATAREGDIF)) : TDate(TODAY);
contab_ini.set("DATAREG", datareg);
contab_ini.set("DATACOMP", datareg);
contab_ini.set("DATADOC", row->get(sf.cid2index(S_DATADOC)));
contab_ini.set("NUMDOCEXT", row->get(sf.cid2index(S_NDOC)));
contab_ini.set("NUMDOC", TString(row->get(sf.cid2index(S_NDOC))).right(7));
@ -715,7 +730,7 @@ int TPassive_mask::prepara_contab() const
int i = 1;
for (auto it = riva.begin(); it != riva.end(); ++it)
{
contab_ini.set_paragraph(LF_RMOVIVA, i);
contab_ini.set_paragraph(LF_RMOVIVA, i); // [25]
contab_ini.set("IMPONIBILE", abs(it->imponibile).string());
contab_ini.set("IMPOSTA", abs(it->imposta).string());
contab_ini.set("PERCIVA", it->aliquota.string());
@ -735,14 +750,33 @@ int TPassive_mask::prepara_contab() const
for (bool ok = fp_db().sq_next(); ok; ok = fp_db().sq_next())
{
const int riga = real(fp_db().sq_get("RIGA")).integer();
contab_ini.set_paragraph(LF_SCADENZE, riga); // Setto il paragrafo con riga scad
contab_ini.set_paragraph(LF_SCADENZE, riga); // Setto il paragrafo con riga scad [29]
contab_ini.set("DATASCAD", fp_db().sq_get_date("DATA"));
contab_ini.set("IMPORTO", fp_db().sq_get("IMPORTO"));
contab_ini.set("NRATA", riga);
contab_ini.set("NRIGA", "1");
}
if(check_causale(codcaus, "NC", true) && is_tipomov_nc(codcaus))
{
contab_ini.set_paragraph(LF_MOV); // Aggiungo i riferimenti al documento se nota credito: GESTISCO DA CG PER IMPOSTARE PARTITE/SCADENZIARIO
where_q.cut(0) << "WHERE PD_KEYPRGINVIO = '" << keys.get(0) << "'";
where_q << " AND PD_KEYHEADERFATT = '" << keys.get() << "'";
where_q << " AND PD_KEYBODYFATT = '" << keys.get() << "'";
query.cut(0) << "SELECT PD_RIFNUMLINEA AS NUMLINEA, PD_IDDOC AS DOC, PD_DATADOC AS DATADOC\nFROM PAA1400F\n" << where_q;
fp_db().sq_set_exec(query, false);
bool ok = fp_db().sq_next();
for(int j = 0; ok; ok = fp_db().sq_next(), j++)
{
contab_ini.set(TString("NUMLINEA(") << j << ")", fp_db().sq_get("NUMLINEA"));
contab_ini.set(TString("DOC(") << j << ")", fp_db().sq_get("DOC"));
contab_ini.set(TString("DATADOC(") << j << ")", fp_db().sq_get("DATADOC"));
}
}
row->add("", 0);
break; // Chiudo subito tanto se ne può selezionare solo una alla volta
}
}
@ -936,7 +970,7 @@ void TPassive_mask::new_forn()
query << "' AND PU_KEYHEADERFATT = '" << keys.get();
query << "' AND PU_KEYBODYFATT = '" << keys.get() << "'";
fp_db().sq_set_exec(query);
TString pec = fp_db().sq_get("PEC");
const TString pec = fp_db().sq_get("PEC");
TString num; num.format("%04d", nr);
#ifdef DBG
@ -1053,7 +1087,7 @@ bool TPassive_mask::aggiorna_forn()
row->add("", 0);
}
if (count)
run_cg0(newf);
run_cg0(newf);
auto_assoc();
_filter_changed = true;
next_page(1000);
@ -1218,6 +1252,17 @@ bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long joll
field(F_PARIVA).enable(en);
field(F_CODFISC).enable(en);
}
case F_USEDATARIC:
if (e == fe_init)
set(F_USEDATARIC, ini_get_bool(CONFIG_DITTA, PARA_FP, "F_USEDATARIC", true) ? "X" : "");
if(e == fe_init || e == fe_modify)
{
const bool use = get_bool(F_USEDATARIC);
field(F_DATAREGDIF).enable(!use);
if (!use && get(F_DATAREGDIF).empty())
set(F_DATAREGDIF, TDate(TODAY));
}
break;
default: break;
}
if (o.dlg() >= F_ASSOC && o.dlg() <= F_CONTABIL)
@ -1331,4 +1376,4 @@ int fp0400(int argc, char * argv[])
TPassive_app fpas;
fpas.run(argc, argv, TR("Fatturazione F.P."));
return 0;
}
}

View File

@ -12,13 +12,16 @@
#define F_GROUPCON 511
#define F_GROUPCON2 512
#define F_PERIODPREC 513
#define F_GROUPCAU 514
#define F_ENABLEFORN 515
#define F_FORNITORE 516
#define F_RAGSOC 517
#define F_STATOPAIV 518
#define F_PARIVA 519
#define F_CODFISC 520
#define F_USEDATARIC 514
#define F_DATAREGDIF 515
#define F_GROUPCAU 516
#define F_ENABLEFORN 517
#define F_FORNITORE 518
#define F_RAGSOC 519
#define F_STATOPAIV 520
#define F_PARIVA 521
#define F_CODFISC 522
#define END_MASK 599

View File

@ -221,7 +221,7 @@ BEGIN
MODULE F1
END
GROUPBOX F_GROUPCON2 59 3
GROUPBOX F_GROUPCON2 59 5
BEGIN
PROMPT 33 16 "@BContabilizzazione automatica:"
END
@ -232,6 +232,18 @@ BEGIN
MODULE F1
END
BOOLEAN F_USEDATARIC
BEGIN
PROMPT 34 18 "Utilizza data di ricezione per la registrazione"
MODULE F1
END
DATE F_DATAREGDIF
BEGIN
PROMPT 34 19 "Data diversa da quella di ricezione"
MODULE F1
END
ENDPAGE
PAGE "Elenco Fatture" 0 2 0 0