Patch level : 12.0 826

Files correlati     : fp0.exe fp0400a.msk
Commento            :
- Rimosso cod. sdi da tabella e esportazione contabiliz.
- Rifatta maschera:
- Spostato codice caus. cont. in elenco fatt
- Tolto cod caus per Nota credito
- Sistemata gestione flag e radiobox
- Aggiunto controllo cod caus errato per TD01 TD04
- Aggiunta classe per gestione FPPRO
- Aggiunti ulteriori dati per importazione nuovo fornitore
- Aggiunto a header di MOV "NUMDOCEXT"
- Corretto log con num. doc. esteso
- Cambiato nome "Codice protocollo" in "Tipo protocollo"
- Cambiato nome colonna Salvato FPPRO con Fornitore associato
This commit is contained in:
Simone Palacino 2019-06-18 14:40:51 +02:00
parent b2c6451da4
commit d3d81d215e
6 changed files with 325 additions and 196 deletions

View File

@ -7,6 +7,160 @@
#include "cfven.h" #include "cfven.h"
#include "../fp/fp0400a.h" #include "../fp/fp0400a.h"
#include "reputils.h" #include "reputils.h"
#include "../fp/fplib.h"
//////////////////////////////////////////////////////////
// TFppro
//////////////////////////////////////////////////////////
TFppro& fppro_db()
{
static TFppro* fppro = nullptr;
if (fppro == nullptr)
{
fppro = new TFppro();
}
return *fppro;
}
bool TFppro::check_reg(TToken_string& keys, int numreg)
{
return get_numreg(keys) == numreg;
}
bool TFppro::guess_the_doc(const TLocalisamfile& mov)
{
// Controllo datadoc - numdoc - totdoc - p.iva
TString query;
query << "SELECT PQ_KEYPRGINVIO AS KEYPRGINVIO, PQ_KEYHEADERFATT AS KEYHEADERFATT, PQ_KEYBODYFATT AS KEYBODYFATT, P7_DATA AS DATA,\n" <<
"\tP7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" <<
"JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" <<
"JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n";
fp_db().sq_set_exec(query);
const keys_s keys = { fp_db().sq_get("KEYPRGINVIO"), fp_db().sq_get("KEYHEADERFATT"), fp_db().sq_get("KEYBODYFATT") };
const TDate data = fp_db().sq_get_date("DATA");
const TString numdoc = fp_db().sq_get("NUMDOC");
const real imptotdoc(fp_db().sq_get("IMPTOTDOC"));
const TString4 statopiva = fp_db().sq_get("STATOPIVA");
const TString piva = fp_db().sq_get("PIVA");
// Prendo il fornitore del mov per controllare la p.iva
TLocalisamfile clifo(LF_CLIFO);
clifo.put(CLI_TIPOCF, "F");
const TString& codforn = mov.get(MOV_CODCF);
clifo.put(CLI_CODCF, codforn);
clifo.read();
TString cli_statopiva, cli_piva;
cli_statopiva << clifo.get(CLI_STATOPAIV);
cli_piva << clifo.get(CLI_PAIV);
bool ok = data == mov.get_date(MOV_DATAREG);
ok &= numdoc == mov.get(MOV_NUMDOC) || numdoc == mov.get(MOV_NUMDOCEXT);
ok &= imptotdoc == real(mov.get(MOV_TOTDOC));
ok &= cli_statopiva.full() && statopiva == cli_statopiva && piva == cli_piva || !cli_statopiva.full() && piva == cli_piva;
if (ok)
{
_keys = keys;
}
return ok;
}
void TFppro::get_keys_fppro()
{
}
int TFppro::get_numreg()
{
if (!_is_set)
{
if (set_query())
return fp_db().sq_get_int("PZ_NUMREGCONT");
return -1;
}
return fp_db().sq_get_int("PZ_NUMREGCONT");
}
int TFppro::get_numreg(TToken_string& keys)
{
set_keys(keys);
return get_numreg();
}
TDate TFppro::get_datareg()
{
if (!_is_set)
{
if (set_query())
return fp_db().sq_get_date("PZ_DATAREGCONT");
return TDate();
}
return fp_db().sq_get_date("PZ_DATAREGCONT");
}
TDate TFppro::get_datareg(TToken_string& keys)
{
if (set_keys(keys))
return get_datareg();
return TDate();
}
bool TFppro::set_keys(TToken_string& keys)
{
if(keys.items() == 3)
{
_keys.prginvio = keys.get(0);
_keys.headerfatt = keys.get(1);
_keys.bodyfatt = keys.get(2);
_is_set = false;
return _keys_setted = true;
}
return _keys_setted = false;
}
bool TFppro::set_keys(keys_s keys)
{
if(*keys.prginvio != 0 && *keys.headerfatt != 0 && *keys.bodyfatt != 0)
{
_keys = keys;
_is_set = false;
return _keys_setted = true;
}
_is_set = false;
return _keys_setted = false;
}
TDate TFppro::get_data_first_doc()
{
TString query;
query << "SELECT min(a.DATA) AS DATA \nFROM( \n\tSELECT P7_DATA as DATA \n" <<
"\tFROM PAA0700F \n\tUNION \n\tSELECT P7_DATA as DATA \n\tFROM PAF0700F \n) a";
fp_db().sq_set_exec(query);
return fp_db().sq_get_date("DATA");
}
bool TFppro::set_query()
{
if (_keys_setted)
{
_fppro_query.cut(0) << "SELECT * FROM FPPRO00F " << where_str();
return _is_set = fp_db().sq_set_exec(_fppro_query);
}
return _is_set = false;
}
const char* TFppro::where_str() const
{
TString str;
str << " WHERE PZ_KEYPRGINVIO = '" << _keys.prginvio << "' AND PZ_KEYHEADERFATT = '" << _keys.headerfatt << "' AND PZ_KEYBODYFATT = '" << _keys.bodyfatt << "'";
return str;
}
//////////////////////////////////////////////////////////
// TProtocollo
//////////////////////////////////////////////////////////
TString& TProtocollo::prot_in(const int year, const char* tipoprot, const char* progres) TString& TProtocollo::prot_in(const int year, const char* tipoprot, const char* progres)
{ {
@ -39,14 +193,14 @@ TString& TProtocollo::get_prot() const
return prot_in(_year, _tipoprot, _progres); return prot_in(_year, _tipoprot, _progres);
} }
void set_ini_codcaus(const TString& codcaus, const bool nc) void set_ini_codcaus(const TString& codcaus)
{ {
ini_set_string(FILE_CONFIG, FILE_SECTION, nc? F1_CAUSNC : F1_CAUSFA, codcaus); ini_set_string(FILE_CONFIG, FILE_SECTION, F1_CAUS, codcaus);
} }
const char* get_ini_codcaus(const bool nc) const char* get_ini_codcaus()
{ {
return ini_get_string(FILE_CONFIG, FILE_SECTION, nc ? F1_CAUSNC : F1_CAUSFA); return ini_get_string(FILE_CONFIG, FILE_SECTION, F1_CAUS);
} }
const char* get_codcaus(const char * tipodoc, const char* codcf) const char* get_codcaus(const char * tipodoc, const char* codcf)
@ -74,7 +228,7 @@ const char* get_codcaus(const char * tipodoc, const char* codcf)
if (!TString(codcaus).empty()) if (!TString(codcaus).empty())
return codcaus; return codcaus;
} }
return get_ini_codcaus(nc); return get_ini_codcaus();
} }
bool get_endatareg() bool get_endatareg()

View File

@ -8,8 +8,7 @@
#define FILE_CONFIG CONFIG_DITTA #define FILE_CONFIG CONFIG_DITTA
#define FILE_SECTION "f1" #define FILE_SECTION "f1"
#define F1_CAUSFA "causfa" #define F1_CAUS "caus"
#define F1_CAUSNC "causnc"
#define F1_INIREGCONT "cg2CONTAB" #define F1_INIREGCONT "cg2CONTAB"
#define LOG_MSG 0 #define LOG_MSG 0
#define LOG_WARN 1 #define LOG_WARN 1
@ -20,9 +19,46 @@ enum err_cont
no_codcaus = -1, no_codcaus = -1,
no_selected = -2, no_selected = -2,
is_already_cont = -3, is_already_cont = -3,
cancel = -4,
is_ready = 0 is_ready = 0
}; };
class TFppro : public TObject
{
struct keys_s
{
const char* prginvio;
const char* headerfatt;
const char* bodyfatt;
};
private:
keys_s _keys;
bool _guess;
bool _keys_setted;
bool _is_set;
TString _fppro_query;
public:
const char* where_str() const;
bool check_reg(TToken_string& keys, int numreg);
// Se un mov. registrato non e' collegato all'FPPRO cerco di capire qual'e`
bool guess_the_doc(const TLocalisamfile& mov);
void get_keys_fppro();
int get_numreg();
int get_numreg(TToken_string& keys);
TDate get_datareg();
TDate get_datareg(TToken_string& keys);
bool set_query();
bool set_keys(TToken_string& keys);
bool set_keys(keys_s keys);
static TDate get_data_first_doc();
TFppro() : _keys({"\0", "\0", "\0" }), _guess(false), _keys_setted(false), _is_set(false) { }
};
class TProtocollo : TObject class TProtocollo : TObject
{ {
int _year{}; int _year{};
@ -55,14 +91,16 @@ public:
bool show_log(); bool show_log();
}; };
const char* get_ini_codcaus(bool nc = false); TFppro& fppro_db();
const char* get_ini_codcaus();
const char* get_codcaus(const char * tipodoc, const char* codcf); const char* get_codcaus(const char * tipodoc, const char* codcf);
bool get_endatareg(); bool get_endatareg();
TString get_datainireg(); TString get_datainireg();
TString get_dataendreg(); TString get_dataendreg();
bool get_periodprec(); bool get_periodprec();
void set_ini_codcaus(const TString& codcaus, bool nc = false); void set_ini_codcaus(const TString& codcaus);
void set_endatareg(bool enable); void set_endatareg(bool enable);
void set_datainireg(const TString& date); void set_datainireg(const TString& date);
void set_dataendreg(const TString& date); void set_dataendreg(const TString& date);
@ -73,5 +111,4 @@ bool check_causale(const TString& cod_caus);
// Controlla se il "cod_caus" ha come "tipo_doc" FA o NC (di acquisto) // Controlla se il "cod_caus" ha come "tipo_doc" FA o NC (di acquisto)
bool check_causale(const TString& cod_caus, const TString& tipo_doc); bool check_causale(const TString& cod_caus, const TString& tipo_doc);
void run_cont_ini(bool liq); void run_cont_ini(bool liq);
#endif #endif

View File

@ -9,6 +9,7 @@
#include <map> #include <map>
#include "../f1/f1lib.h" #include "../f1/f1lib.h"
#include "mov.h" #include "mov.h"
#include "comuni.h"
#define FILTER_NOASS "" #define FILTER_NOASS ""
#define FILTER_ASS "E" #define FILTER_ASS "E"
@ -67,7 +68,6 @@ protected:
TDate load_data() const; TDate load_data() const;
// Handlers // Handlers
static bool causfa_handler(TMask_field& f, KEY k); static bool causfa_handler(TMask_field& f, KEY k);
static bool causnc_handler(TMask_field& f, KEY k);
void fattsel(int dlg, TField_event& e); void fattsel(int dlg, TField_event& e);
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
@ -261,7 +261,6 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
row.add(paa_codfisc); row.add(paa_codfisc);
row.add(fp_db().sq_get("ATTACHMENT") != "0" ? "" : "X"); row.add(fp_db().sq_get("ATTACHMENT") != "0" ? "" : "X");
row.add(paa_codsdi.blank() ? fp_db().sq_get("PEC") : paa_codsdi);
row.add(denom); row.add(denom);
row.add(TProtocollo(fp_db().sq_get_int("ANNO_PROT"), fp_db().sq_get("TIPO_PROT"), fp_db().sq_get("NUM_PROT"))); row.add(TProtocollo(fp_db().sq_get_int("ANNO_PROT"), fp_db().sq_get("TIPO_PROT"), fp_db().sq_get("NUM_PROT")));
TString key_prot; key_prot << fp_db().sq_get("KEYPROG") << ";" << fp_db().sq_get("KEYHEAD") << ";" << fp_db().sq_get("KEYFATT"); TString key_prot; key_prot << fp_db().sq_get("KEYPROG") << ";" << fp_db().sq_get("KEYHEAD") << ";" << fp_db().sq_get("KEYFATT");
@ -322,15 +321,9 @@ TString& TPassive_mask::get_fattsel() const
{ {
static TString fattsel; static TString fattsel;
fattsel.cut(0); fattsel.cut(0);
if (get_bool(F_FORNOTASS))
return fattsel;
if (get_bool(F_FORASS))
return fattsel << FILTER_ASS;
if (get_bool(F_FORALL))
return fattsel << FILTER_ALL;
if (get_bool(F_CONTABIL)) if (get_bool(F_CONTABIL))
return fattsel << FILTER_CONT; return fattsel << FILTER_CONT;
return fattsel; return fattsel << get(F_ASSOC);
} }
int TPassive_mask::find_fornitore(TLocalisamfile& clifo) int TPassive_mask::find_fornitore(TLocalisamfile& clifo)
@ -420,9 +413,9 @@ bool TPassive_mask::causfa_handler(TMask_field& f, KEY k)
{ {
TMask& msk = f.mask(); TMask& msk = f.mask();
const TString& codcaus = msk.get(F_CAUSFA); const TString& codcaus = msk.get(F_CAUSFA);
if (!check_causale(codcaus, "FA")) if (!check_causale(codcaus))
{ {
warning_box("Impossibile selezionare questa causale registrazione.\nPrego inserire una causale di Fattura Acquisti"); warning_box("Impossibile selezionare questa causale registrazione.\nPrego inserire una causale di Fattura Acquisti \no Nota Credito Acquisto");
msk.field(F_CAUSFA).set(""); msk.field(F_CAUSFA).set("");
msk.field(F_DESCAUSFA).set(""); msk.field(F_DESCAUSFA).set("");
set_ini_codcaus(""); set_ini_codcaus("");
@ -433,28 +426,9 @@ bool TPassive_mask::causfa_handler(TMask_field& f, KEY k)
return true; return true;
} }
bool TPassive_mask::causnc_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
{
TMask& msk = f.mask();
const TString& codcaus = msk.get(F_CAUSNC);
if (!check_causale(codcaus, "NC"))
{
warning_box("Impossibile selezionare questa causale registrazione.\nPrego inserire una causale di Nota Credito Acquisti.");
msk.field(F_CAUSNC).set("");
msk.field(F_DESCAUSNC).set("");
set_ini_codcaus("", true);
return false;
}
set_ini_codcaus(codcaus, true);
}
return true;
}
void TPassive_mask::select_all(const int sheet_field) void TPassive_mask::select_all(const int sheet_field)
{ {
TSheet_field& docs = sfield(sheet_field); TSheet_field& docs = sfield((short)sheet_field);
TString_array& sht = docs.rows_array(); TString_array& sht = docs.rows_array();
const int items = sht.items(); const int items = sht.items();
@ -474,6 +448,7 @@ void TPassive_mask::salva_for() const
TSheet_field& sf = sfield(F_DOCS); TSheet_field& sf = sfield(F_DOCS);
TLocalisamfile clifo(LF_CLIFO); // Leggo in Campo per controllare che il codice cliente non sia errato TLocalisamfile clifo(LF_CLIFO); // Leggo in Campo per controllare che il codice cliente non sia errato
sf.hide();
FOR_EACH_SHEET_ROW(sf, nr, row) FOR_EACH_SHEET_ROW(sf, nr, row)
{ {
if (row->starts_with("X") && strcmp(clifo.get(CLI_CODCF), "17") == 0) if (row->starts_with("X") && strcmp(clifo.get(CLI_CODCF), "17") == 0)
@ -496,7 +471,6 @@ void TPassive_mask::salva_for() const
q_update << "UPDATE FPPRO00F SET PZ_TIPOCF = 'F', PZ_CLIFOR = '" << row->get(sf.cid2index(S_FORNITORE)) << "' WHERE PZ_KEYPRGINVIO = '" << key.get(0) << "' AND PZ_KEYHEADERFATT = '" << key.get(1) << "' AND PZ_KEYBODYFATT = '" << key.get(2) << "'"; q_update << "UPDATE FPPRO00F SET PZ_TIPOCF = 'F', PZ_CLIFOR = '" << row->get(sf.cid2index(S_FORNITORE)) << "' WHERE PZ_KEYPRGINVIO = '" << key.get(0) << "' AND PZ_KEYHEADERFATT = '" << key.get(1) << "' AND PZ_KEYBODYFATT = '" << key.get(2) << "'";
fp_db().sq_set_exec(q_update, false); fp_db().sq_set_exec(q_update, false);
row->add("X", sf.cid2index(S_FPPRO)); row->add("X", sf.cid2index(S_FPPRO));
sf.force_update();
} }
} }
} }
@ -504,6 +478,7 @@ void TPassive_mask::salva_for() const
} }
fp_db().sq_commit(); fp_db().sq_commit();
sf.force_update(); sf.force_update();
sf.show();
} }
} }
@ -545,7 +520,13 @@ int TPassive_mask::prepara_contab() const
TString codcaus(get_codcaus(row->get(2), row->get(10))); TString codcaus(get_codcaus(row->get(2), row->get(10)));
if (codcaus.empty()) if (codcaus.empty())
return no_codcaus; return no_codcaus;
TString tipodoc(row->get(sf.cid2index(S_TIPODOCSDI)));
if(tipodoc == "TD01" && !check_causale(codcaus, "FA"))
if(!yesno_box("Attenzione, per un documento di tipo TD01 e' stata selezionata \nuna causale diversa da Fattura d'Acquisto.\nContinuare?"))
return cancel;
if(tipodoc == "TD04" && !check_causale(codcaus, "NC"))
if(!yesno_box("Attenzione, per un documento di tipo TD04 e' stata selezionata \nuna causale diversa da Nota Credito di Acquisto.\nContinuare?"))
return cancel;
n_sel++; n_sel++;
TString num; num.format("%04d", n); TString num; num.format("%04d", n);
TFilename newf_ini; TFilename newf_ini;
@ -639,16 +620,16 @@ void TPassive_mask::log_contab()
if (config.get("Result") == "OK") if (config.get("Result") == "OK")
{ {
numdoc = config.get("NUMDOC", "23"); numdoc = config.get(MOV_NUMDOCEXT, "23");
numreg = config.get("NUMREG", "23"); numreg = config.get(MOV_NUMREG, "23");
protiv = config.get("PROTIVA", "23"); protiv = config.get(MOV_PROTIVA, "23");
doc_saved.insert(doc_saved.end(), numdoc); doc_saved.insert(doc_saved.end(), numdoc);
save_numreg.insert(save_numreg.end(), numreg); save_numreg.insert(save_numreg.end(), numreg);
save_protiv.insert(save_protiv.end(), protiv); save_protiv.insert(save_protiv.end(), protiv);
} }
else if(config.get("Result") == "CANCEL") else if(config.get("Result") == "CANCEL")
{ {
numdoc = config.get("NUMDOC", "23"); numdoc = config.get(MOV_NUMDOCEXT, "23");
doc_canceled.insert(doc_canceled.end(), numdoc); doc_canceled.insert(doc_canceled.end(), numdoc);
} }
} }
@ -706,6 +687,8 @@ void TPassive_mask::contabilizza()
case no_selected: case no_selected:
message_box("Selezionare almeno un documento."); message_box("Selezionare almeno un documento.");
break; break;
case cancel:
next_page(1000);
default: break; default: break;
} }
if(stato >= 1000) if(stato >= 1000)
@ -780,11 +763,27 @@ void TPassive_mask::new_forn()
forn_conf.set("PEC", pec); forn_conf.set("PEC", pec);
forn_conf.set("RAGSOC", row->get(sf.cid2index(S_RAGSERR))); forn_conf.set("RAGSOC", row->get(sf.cid2index(S_RAGSERR)));
forn_conf.set("STATOPAIV", row_elenco_fatt.get(sf.cid2index(S_STATOPAIV))); forn_conf.set("STATOPAIV", row_elenco_fatt.get(sf.cid2index(S_STATOPAIV)));
query.cut(0) << "SELECT P2_SEDEIND, P2_SEDENRCIVICO, P2_SEDECAP, P2_SEDECOMUNE, P2_SEDEPROV, P2_SEDENAZ, " <<
"P2_CONTATTITELEF, P2_CONTATTIFAX, P2_CONTATTIMAIL\n" <<
"FROM PAA0200F \nWHERE P2_KEYPRGINVIO = '" << keys.get(0) << "' AND P2_KEYHEADERFATT = '" << keys.get(1) << "' AND P2_KEYBODYFATT = '" << keys.get(2) << "'";
fp_db().sq_set_exec(query);
forn_conf.set("INDCF", fp_db().sq_get("P2_SEDEIND"));
forn_conf.set("CIVCF", fp_db().sq_get("P2_SEDENRCIVICO"));
forn_conf.set("CAPCF", fp_db().sq_get("P2_SEDECAP"));
TLocalisamfile com(LF_COMUNI);
com.setkey(2);
com.put(COM_DENCOM, fp_db().sq_get("P2_SEDECOMUNE"));
com.read();
forn_conf.set("COMCF", com.get(COM_COM));
forn_conf.set("TEL", fp_db().sq_get("P2_CONTATTITELEF"));
forn_conf.set("TELEX", fp_db().sq_get("P2_CONTATTIFAX"));
forn_conf.set("PEC", fp_db().sq_get("P2_CONTATTIMAIL"));
forn_conf.set("DOCMAIL", fp_db().sq_get("P2_CONTATTIMAIL"));
forn_conf.set_paragraph("17"); forn_conf.set_paragraph("17");
forn_conf.set("TIPOCF", "F"); forn_conf.set("TIPOCF", "F");
forn_conf.set("RAGGOR", "O"); forn_conf.set("RAGGOR", "O");
forn_conf.set("PADESTIN", row_elenco_fatt.get(sf.cid2index(S_CODSDI)));
row->add("", 0); row->add("", 0);
} }
@ -861,18 +860,12 @@ bool TPassive_mask::aggiorna_forn()
void TPassive_mask::fattsel(const int dlg, TField_event& e) void TPassive_mask::fattsel(const int dlg, TField_event& e)
{ {
if (e == fe_init) if (e == fe_init)
{
set(F_FORNOTASS, "X");
set(F_FORASS, "");
set(F_FORALL, "");
set(F_CONTABIL, ""); set(F_CONTABIL, "");
}
else else
{ {
set(F_FORNOTASS, dlg == F_FORNOTASS ? "X" : ""); if(dlg == F_CONTABIL)
set(F_FORASS, dlg == F_FORASS ? "X" : ""); set(F_ASSOC, "A");
set(F_FORALL, dlg == F_FORALL ? "X" : ""); set(F_CONTABIL, dlg == F_CONTABIL && get_bool(F_CONTABIL)? "X" : " ");
set(F_CONTABIL, dlg == F_CONTABIL ? "X" : "");
} }
field(F_DATAINI).enable(!get_bool(F_CONTABIL)); field(F_DATAINI).enable(!get_bool(F_CONTABIL));
field(F_DATAEND).enable(!get_bool(F_CONTABIL)); field(F_DATAEND).enable(!get_bool(F_CONTABIL));
@ -960,7 +953,7 @@ bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long joll
break; break;
default: break; default: break;
} }
if (o.dlg() >= F_FORNOTASS && o.dlg() <= F_CONTABIL) if (o.dlg() >= F_ASSOC && o.dlg() <= F_CONTABIL)
if (e == fe_modify || e == fe_init) if (e == fe_modify || e == fe_init)
fattsel(o.dlg(), e); fattsel(o.dlg(), e);
if ((e == fe_modify || e >= se_enter) && jolly == 0) if ((e == fe_modify || e >= se_enter) && jolly == 0)
@ -976,6 +969,9 @@ void TPassive_mask::check_buttons(const int p)
const bool err_forn = fattsel.empty() || fattsel == FILTER_ALL; const bool err_forn = fattsel.empty() || fattsel == FILTER_ALL;
field(DLG_EXPORT).enable((curr_page() + p == 1 || p == 1001) && _f1 && fattsel != FILTER_CONT); field(DLG_EXPORT).enable((curr_page() + p == 1 || p == 1001) && _f1 && fattsel != FILTER_CONT);
field(F_GROUPCAU).show((curr_page() + p == 1 || p == 1001) && _f1 && fattsel != FILTER_CONT);
field(F_CAUSFA).show((curr_page() + p == 1 || p == 1001) && _f1 && fattsel != FILTER_CONT);
field(F_DESCAUSFA).show((curr_page() + p == 1 || p == 1001) && _f1 && fattsel != FILTER_CONT);
field(DLG_SAVEREC).enable((curr_page() + p == 1 || p == 1001) && (fattsel.empty() || fattsel == FILTER_ASS)); field(DLG_SAVEREC).enable((curr_page() + p == 1 || p == 1001) && (fattsel.empty() || fattsel == FILTER_ASS));
if (p >= 1000) if (p >= 1000)
{ {
@ -993,7 +989,6 @@ TPassive_mask::TPassive_mask(bool f1) : TAutomask("fp0400a"), _f1(f1), _filter_c
{ {
_tmp_dir = _tmp_dir.tempdir(); _tmp_dir = _tmp_dir.tempdir();
TMask::set_handler(F_CAUSFA, causfa_handler); TMask::set_handler(F_CAUSFA, causfa_handler);
TMask::set_handler(F_CAUSNC, causnc_handler);
} }
@ -1018,7 +1013,6 @@ void TPassive_app::load_mask(const TPassive_mask& mask) const
if (check_f1()) if (check_f1())
{ {
mask.field(F_CAUSFA).set(get_ini_codcaus()); mask.field(F_CAUSFA).set(get_ini_codcaus());
mask.field(F_CAUSNC).set(get_ini_codcaus(true));
mask.field(F_DATAINIREG).enable(mask.get_fattsel() == FILTER_CONT); mask.field(F_DATAINIREG).enable(mask.get_fattsel() == FILTER_CONT);
mask.field(F_DATAINIREG).set(get_datainireg()); mask.field(F_DATAINIREG).set(get_datainireg());
if(mask.field(F_DATAINIREG).get().empty()) if(mask.field(F_DATAINIREG).get().empty())
@ -1033,6 +1027,7 @@ void TPassive_app::load_mask(const TPassive_mask& mask) const
else else
{ {
mask.field(F_GROUPCON).hide(); mask.field(F_GROUPCON).hide();
mask.field(F_GROUPCON2).hide();
mask.field(F_GROUPCAU).hide(); mask.field(F_GROUPCAU).hide();
} }
} }
@ -1057,6 +1052,7 @@ void TPassive_app::main_loop()
{ {
TPassive_mask mask(check_f1()); TPassive_mask mask(check_f1());
load_mask(mask); load_mask(mask);
mask.first_focus(F_DATAINI);
while(mask.run() == K_ENTER) while(mask.run() == K_ENTER)
{ {
} }

View File

@ -1,59 +1,54 @@
#define START_MASK 501 #define START_MASK 501
#define F_FORNOTASS 501 #define F_ASSOC 501
#define F_FORASS 502 #define F_CONTABIL 502
#define F_FORALL 503 #define F_DATAINI 503
#define F_CONTABIL 504 #define F_DATAEND 504
#define F_DATAINI 505 #define F_DATAINIREG 505
#define F_DATAEND 506 #define F_DATAENDREG 506
#define F_DATAINIREG 507 #define F_FATTORD 507
#define F_DATAENDREG 508 #define F_VERSOORD 508
#define F_FATTORD 510 #define F_CAUSFA 509
#define F_VERSOORD 511 #define F_DESCAUSFA 510
#define F_CAUSFA 512 #define F_GROUPCON 511
#define F_DESCAUSFA 513 #define F_GROUPCON2 512
#define F_CAUSNC 514 #define F_PERIODPREC 513
#define F_DESCAUSNC 515 #define F_GROUPCAU 514
#define F_GROUPCON 516
#define F_GROUPCAU 517
#define F_PERIODPREC 518
#define END_MASK 599 #define END_MASK 599
#define F_PROT 401 #define F_PROT 401
#define S_SELCODPROT 101 #define S_SELCODPROT 101
#define S_CODPROT 102 #define S_CODPROT 102
#define F_DOCS 201 #define F_DOCS 201
#define S_SELECTED 101 #define S_SELECTED 101
#define S_ANNO 102 #define S_ANNO 102
#define S_TIPODOCSDI 103 #define S_TIPODOCSDI 103
#define S_NDOC 104 #define S_NDOC 104
#define S_DATARIC 105 #define S_DATARIC 105
#define S_DATADOC 106 #define S_DATADOC 106
#define S_TOTDOC 107 #define S_TOTDOC 107
#define S_FPPRO 108 #define S_FPPRO 108
#define S_NUMREGCONT 109 #define S_NUMREGCONT 109
#define S_DATAREGCONT 110 #define S_DATAREGCONT 110
#define S_FORNITORE 111 #define S_FORNITORE 111
#define S_RAGSOC 112 #define S_RAGSOC 112
#define S_STATOPAIV 113 #define S_STATOPAIV 113
#define S_PARIVA 114 #define S_PARIVA 114
#define S_CODFISC 115 #define S_CODFISC 115
#define S_ATTACH 116 #define S_ATTACH 116
#define S_CODSDI 117 #define S_RAGXML 117
#define S_RAGXML 118 #define S_NPROT 118
#define S_NPROT 119 #define S_PROKEY 119
#define S_PROKEY 120
#define F_ERR 301 #define F_ERR 301
#define S_SELECTF 101 #define S_SELECTF 101
#define S_STATOERR 102 #define S_STATOERR 102
#define S_PIVAERR 103 #define S_PIVAERR 103
#define S_CODFIERR 104 #define S_CODFIERR 104
#define S_RAGSERR 105 #define S_RAGSERR 105
#define S_DESCERR 106 #define S_DESCERR 106

View File

@ -40,48 +40,37 @@ ENDPAGE
PAGE "Fatture Passive" 0 2 0 0 PAGE "Fatture Passive" 0 2 0 0
GROUPBOX DLG_NULL 30 7 RADIOBUTTON F_ASSOC 20 50
BEGIN BEGIN
PROMPT 0 1 "@BFornitori" PROMPT 0 1 "@BFornitori"
END ITEM "|Non Associate"
ITEM "E|Associate"
BOOLEAN F_FORNOTASS ITEM "A|Tutte"
BEGIN FLAGS "Z"
PROMPT 1 2 "Non Associati"
END
BOOLEAN F_FORASS
BEGIN
PROMPT 1 3 "Associati"
END
BOOLEAN F_FORALL
BEGIN
PROMPT 1 4 "Tutti"
END END
DATE F_DATAINI DATE F_DATAINI
BEGIN BEGIN
PROMPT 1 5 "Data iniziale" PROMPT 0 4 "Data iniziale"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
DATE F_DATAEND DATE F_DATAEND
BEGIN BEGIN
PROMPT 1 6 "Data finale " PROMPT 25 4 "Data finale "
VALIDATE DATE_CMP_FUNC >= F_DATAINI VALIDATE DATE_CMP_FUNC >= F_DATAINI
WARNING "La data finale non può essere minore della data iniziale" WARNING "La data finale non può essere minore della data iniziale"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
GROUPBOX F_GROUPCON 30 5 GROUPBOX F_GROUPCON 32 5
BEGIN BEGIN
PROMPT 0 10 "@BContabilita'" PROMPT 0 10 "@BContabilita'"
END END
BOOLEAN F_CONTABIL BOOLEAN F_CONTABIL
BEGIN BEGIN
PROMPT 1 11 "Contabilizzate" PROMPT 1 11 "Mostra solo doc. registrati"
MODULE F1 MODULE F1
END END
@ -103,7 +92,7 @@ END
RADIOBUTTON F_FATTORD 20 20 RADIOBUTTON F_FATTORD 20 20
BEGIN BEGIN
PROMPT 31 1 "Ordinamento fatture per " PROMPT 52 1 "Ordinamento fatture per "
ITEM "|Data Ricezione" ITEM "|Data Ricezione"
ITEM "D|Data Documento" ITEM "D|Data Documento"
FLAGS "" FLAGS ""
@ -111,7 +100,7 @@ END
RADIOBUTTON F_VERSOORD 20 20 RADIOBUTTON F_VERSOORD 20 20
BEGIN BEGIN
PROMPT 52 1 "Ordinamento:" PROMPT 52 5 "Ordinamento:"
ITEM "|Decrescente" ITEM "|Decrescente"
ITEM "C|Crescente" ITEM "C|Crescente"
FLAGS "" FLAGS ""
@ -119,19 +108,34 @@ END
SPREADSHEET F_PROT 25 4 SPREADSHEET F_PROT 25 4
BEGIN BEGIN
PROMPT 31 5 "Selezionare o aggiungere un filtro sul Tipo Progressivo" PROMPT 0 5 "Selezionare o aggiungere un filtro sul Tipo Progressivo"
ITEM "@1" ITEM "@1"
ITEM "Codice\nProtocol.@12" ITEM "Codice\nProtocol.@12"
END END
GROUPBOX F_GROUPCAU 59 8 GROUPBOX F_GROUPCON2 59 3
BEGIN BEGIN
PROMPT 31 10 "@BParametri di default per Registrazione Contabile:" PROMPT 33 10 "@BContabilizzazione automatica:"
END
BOOLEAN F_PERIODPREC
BEGIN
PROMPT 34 11 "Selezione automatica liquid. periodo precedente"
MODULE F1
END
ENDPAGE
PAGE "Elenco Fatture" 0 2 0 0
GROUPBOX F_GROUPCAU 70 4
BEGIN
PROMPT 0 0 "@BParametri di default per Registrazione Contabile:"
END END
STRING F_CAUSFA 3 STRING F_CAUSFA 3
BEGIN BEGIN
PROMPT 32 11 "Causale per Fattura Acquisti (FA) " PROMPT 1 1 "Causale per Contabilizzazione"
FLAGS "UZ" FLAGS "UZ"
FIELD CODCAUS FIELD CODCAUS
USE LF_CAUSALI USE LF_CAUSALI
@ -154,7 +158,7 @@ END
STRING F_DESCAUSFA 50 STRING F_DESCAUSFA 50
BEGIN BEGIN
PROMPT 32 12 "" PROMPT 1 2 ""
USE LF_CAUSALI KEY 2 USE LF_CAUSALI KEY 2
CHECKTYPE NORMAL CHECKTYPE NORMAL
INPUT DESCR F_DESCAUSFA INPUT DESCR F_DESCAUSFA
@ -171,60 +175,9 @@ BEGIN
MODULE F1 MODULE F1
END END
STRING F_CAUSNC 3 SPREADSHEET F_DOCS -1 -1
BEGIN BEGIN
PROMPT 32 13 "Causale per Nota Credito Acquisti [TD04]" PROMPT 0 4 ""
FLAGS "UZ"
FIELD CODCAUS
USE LF_CAUSALI
INPUT CODCAUS F_CAUSNC
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Tipo" TIPODOC
DISPLAY "Registro" REG
DISPLAY "SC" TIPOMOV
DISPLAY "CA" MOVIND
DISPLAY "CE" COLLCESP
DISPLAY "770" M770
OUTPUT F_CAUSNC CODCAUS
OUTPUT F_DESCAUSNC DESCR
ADD RUN cg0 -4
CHECKTYPE NORMAL
WARNING "Causale assente"
MODULE F1
END
STRING F_DESCAUSNC 50
BEGIN
PROMPT 32 14 ""
USE LF_CAUSALI KEY 2
CHECKTYPE NORMAL
INPUT DESCR F_DESCAUSNC
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" CODCAUS
DISPLAY "Tipo" TIPODOC
DISPLAY "Registro" REG
DISPLAY "SC" TIPOMOV
DISPLAY "CA" MOVIND
DISPLAY "CE" COLLCESP
DISPLAY "770" M770
COPY OUTPUT F_CAUSNC
ADD RUN cg0 -4
MODULE F1
END
BOOLEAN F_PERIODPREC
BEGIN
PROMPT 33 16 "Selezione automatica liquid. periodo precedente"
END
ENDPAGE
PAGE "Elenco Fatture" 0 2 0 0
SPREADSHEET F_DOCS
BEGIN
PROMPT 0 2 ""
ITEM "" ITEM ""
ITEM "Anno" ITEM "Anno"
ITEM "Tipo Doc.\nSDI@6" ITEM "Tipo Doc.\nSDI@6"
@ -232,7 +185,7 @@ BEGIN
ITEM "Data\nRicezione@8" ITEM "Data\nRicezione@8"
ITEM "Data\nDoc.@8" ITEM "Data\nDoc.@8"
ITEM "Totale\nDocumento@12" ITEM "Totale\nDocumento@12"
ITEM "Salvato in\nFP PRO@7" ITEM "Fornitore\nassociato@7"
ITEM "Num. Registrazione\ncontabile@12" ITEM "Num. Registrazione\ncontabile@12"
ITEM "Data Registrazione\ncontabile@12" ITEM "Data Registrazione\ncontabile@12"
ITEM "Fornitore@7" ITEM "Fornitore@7"
@ -241,7 +194,6 @@ BEGIN
ITEM "Partita IVA@10" ITEM "Partita IVA@10"
ITEM "Cod. Fiscale@16" ITEM "Cod. Fiscale@16"
ITEM "Allegati@7" ITEM "Allegati@7"
ITEM "Codice\ndestinatario@8"
ITEM "Ragione Sociale (XML)@50" ITEM "Ragione Sociale (XML)@50"
ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@22" ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@22"
ITEM "Chiave Prot.@80" ITEM "Chiave Prot.@80"
@ -276,7 +228,7 @@ END
STRING S_CODPROT 12 STRING S_CODPROT 12
BEGIN BEGIN
PROMPT 1 3 "Codice Protocollo" PROMPT 1 3 "Tipo Protocollo"
FLAGS "" FLAGS ""
END END
@ -464,12 +416,6 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
STRING S_CODSDI 20
BEGIN
PROMPT 35 6 "Cod. Destinatario"
FLAGS "D"
END
BOOLEAN S_ATTACH BOOLEAN S_ATTACH
BEGIN BEGIN
PROMPT 1 7 "Documenti in allegato" PROMPT 1 7 "Documenti in allegato"

View File

@ -10,6 +10,7 @@
#define MOV_DATADOC "DATADOC" #define MOV_DATADOC "DATADOC"
#define MOV_RITFATT "RITFATT" #define MOV_RITFATT "RITFATT"
#define MOV_NUMDOC "NUMDOC" #define MOV_NUMDOC "NUMDOC"
#define MOV_NUMDOCEXT "NUMDOCEXT"
#define MOV_MESELIQ "MESELIQ" #define MOV_MESELIQ "MESELIQ"
#define MOV_TIPODOC "TIPODOC" #define MOV_TIPODOC "TIPODOC"
#define MOV_TOTDOC "TOTDOC" #define MOV_TOTDOC "TOTDOC"
@ -57,7 +58,7 @@
#define MOV_TNUMREG "TNUMREG" #define MOV_TNUMREG "TNUMREG"
#define MOV_IVALIQ "IVALIQ" #define MOV_IVALIQ "IVALIQ"
#define MOV_KEYFPPRO "KEYFPPRO" #define MOV_KEYFPPRO "KEYFPPRO"
#define MOV_PROGFPPRO "PROGFPPRO" #define MOV_DATAELABF9 "DATAELABF9"
#define NUMREG_PROVVISORIO 999999L #define NUMREG_PROVVISORIO 999999L