diff --git a/src/f1/f1lib.cpp b/src/f1/f1lib.cpp index 18d4640c9..d66d27e12 100644 --- a/src/f1/f1lib.cpp +++ b/src/f1/f1lib.cpp @@ -7,6 +7,160 @@ #include "cfven.h" #include "../fp/fp0400a.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) { @@ -39,14 +193,14 @@ TString& TProtocollo::get_prot() const 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) @@ -74,7 +228,7 @@ const char* get_codcaus(const char * tipodoc, const char* codcf) if (!TString(codcaus).empty()) return codcaus; } - return get_ini_codcaus(nc); + return get_ini_codcaus(); } bool get_endatareg() diff --git a/src/f1/f1lib.h b/src/f1/f1lib.h index 323fe2f27..cf33e46b3 100644 --- a/src/f1/f1lib.h +++ b/src/f1/f1lib.h @@ -8,8 +8,7 @@ #define FILE_CONFIG CONFIG_DITTA #define FILE_SECTION "f1" -#define F1_CAUSFA "causfa" -#define F1_CAUSNC "causnc" +#define F1_CAUS "caus" #define F1_INIREGCONT "cg2CONTAB" #define LOG_MSG 0 #define LOG_WARN 1 @@ -20,9 +19,46 @@ enum err_cont no_codcaus = -1, no_selected = -2, is_already_cont = -3, + cancel = -4, 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 { int _year{}; @@ -55,14 +91,16 @@ public: 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); bool get_endatareg(); TString get_datainireg(); TString get_dataendreg(); 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_datainireg(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) bool check_causale(const TString& cod_caus, const TString& tipo_doc); void run_cont_ini(bool liq); - #endif \ No newline at end of file diff --git a/src/fp/fp0400.cpp b/src/fp/fp0400.cpp index c25932203..3506e44af 100644 --- a/src/fp/fp0400.cpp +++ b/src/fp/fp0400.cpp @@ -9,6 +9,7 @@ #include #include "../f1/f1lib.h" #include "mov.h" +#include "comuni.h" #define FILTER_NOASS "" #define FILTER_ASS "E" @@ -67,7 +68,6 @@ protected: TDate load_data() const; // Handlers 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); 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(fp_db().sq_get("ATTACHMENT") != "0" ? "" : "X"); - row.add(paa_codsdi.blank() ? fp_db().sq_get("PEC") : paa_codsdi); 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"))); 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; 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)) return fattsel << FILTER_CONT; - return fattsel; + return fattsel << get(F_ASSOC); } 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(); 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_DESCAUSFA).set(""); set_ini_codcaus(""); @@ -433,28 +426,9 @@ bool TPassive_mask::causfa_handler(TMask_field& f, KEY k) 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) { - TSheet_field& docs = sfield(sheet_field); + TSheet_field& docs = sfield((short)sheet_field); TString_array& sht = docs.rows_array(); const int items = sht.items(); @@ -474,6 +448,7 @@ void TPassive_mask::salva_for() const TSheet_field& sf = sfield(F_DOCS); 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) { 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) << "'"; fp_db().sq_set_exec(q_update, false); row->add("X", sf.cid2index(S_FPPRO)); - sf.force_update(); } } } @@ -504,6 +478,7 @@ void TPassive_mask::salva_for() const } fp_db().sq_commit(); 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))); if (codcaus.empty()) 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++; TString num; num.format("%04d", n); TFilename newf_ini; @@ -639,16 +620,16 @@ void TPassive_mask::log_contab() if (config.get("Result") == "OK") { - numdoc = config.get("NUMDOC", "23"); - numreg = config.get("NUMREG", "23"); - protiv = config.get("PROTIVA", "23"); + numdoc = config.get(MOV_NUMDOCEXT, "23"); + numreg = config.get(MOV_NUMREG, "23"); + protiv = config.get(MOV_PROTIVA, "23"); doc_saved.insert(doc_saved.end(), numdoc); save_numreg.insert(save_numreg.end(), numreg); save_protiv.insert(save_protiv.end(), protiv); } else if(config.get("Result") == "CANCEL") { - numdoc = config.get("NUMDOC", "23"); + numdoc = config.get(MOV_NUMDOCEXT, "23"); doc_canceled.insert(doc_canceled.end(), numdoc); } } @@ -706,6 +687,8 @@ void TPassive_mask::contabilizza() case no_selected: message_box("Selezionare almeno un documento."); break; + case cancel: + next_page(1000); default: break; } if(stato >= 1000) @@ -780,11 +763,27 @@ void TPassive_mask::new_forn() forn_conf.set("PEC", pec); forn_conf.set("RAGSOC", row->get(sf.cid2index(S_RAGSERR))); 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("TIPOCF", "F"); forn_conf.set("RAGGOR", "O"); - forn_conf.set("PADESTIN", row_elenco_fatt.get(sf.cid2index(S_CODSDI))); row->add("", 0); } @@ -861,18 +860,12 @@ bool TPassive_mask::aggiorna_forn() void TPassive_mask::fattsel(const int dlg, TField_event& e) { if (e == fe_init) - { - set(F_FORNOTASS, "X"); - set(F_FORASS, ""); - set(F_FORALL, ""); set(F_CONTABIL, ""); - } else { - set(F_FORNOTASS, dlg == F_FORNOTASS ? "X" : ""); - set(F_FORASS, dlg == F_FORASS ? "X" : ""); - set(F_FORALL, dlg == F_FORALL ? "X" : ""); - set(F_CONTABIL, dlg == F_CONTABIL ? "X" : ""); + if(dlg == F_CONTABIL) + set(F_ASSOC, "A"); + set(F_CONTABIL, dlg == F_CONTABIL && get_bool(F_CONTABIL)? "X" : " "); } field(F_DATAINI).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; 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) fattsel(o.dlg(), e); 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; 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)); if (p >= 1000) { @@ -993,7 +989,6 @@ TPassive_mask::TPassive_mask(bool f1) : TAutomask("fp0400a"), _f1(f1), _filter_c { _tmp_dir = _tmp_dir.tempdir(); 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()) { 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).set(get_datainireg()); if(mask.field(F_DATAINIREG).get().empty()) @@ -1033,6 +1027,7 @@ void TPassive_app::load_mask(const TPassive_mask& mask) const else { mask.field(F_GROUPCON).hide(); + mask.field(F_GROUPCON2).hide(); mask.field(F_GROUPCAU).hide(); } } @@ -1057,6 +1052,7 @@ void TPassive_app::main_loop() { TPassive_mask mask(check_f1()); load_mask(mask); + mask.first_focus(F_DATAINI); while(mask.run() == K_ENTER) { } diff --git a/src/fp/fp0400a.h b/src/fp/fp0400a.h index f83ebdc35..c7f1bfb45 100644 --- a/src/fp/fp0400a.h +++ b/src/fp/fp0400a.h @@ -1,59 +1,54 @@ #define START_MASK 501 -#define F_FORNOTASS 501 -#define F_FORASS 502 -#define F_FORALL 503 -#define F_CONTABIL 504 -#define F_DATAINI 505 -#define F_DATAEND 506 -#define F_DATAINIREG 507 -#define F_DATAENDREG 508 -#define F_FATTORD 510 -#define F_VERSOORD 511 -#define F_CAUSFA 512 -#define F_DESCAUSFA 513 -#define F_CAUSNC 514 -#define F_DESCAUSNC 515 -#define F_GROUPCON 516 -#define F_GROUPCAU 517 -#define F_PERIODPREC 518 +#define F_ASSOC 501 +#define F_CONTABIL 502 +#define F_DATAINI 503 +#define F_DATAEND 504 +#define F_DATAINIREG 505 +#define F_DATAENDREG 506 +#define F_FATTORD 507 +#define F_VERSOORD 508 +#define F_CAUSFA 509 +#define F_DESCAUSFA 510 +#define F_GROUPCON 511 +#define F_GROUPCON2 512 +#define F_PERIODPREC 513 +#define F_GROUPCAU 514 #define END_MASK 599 - #define F_PROT 401 #define S_SELCODPROT 101 #define S_CODPROT 102 -#define F_DOCS 201 +#define F_DOCS 201 -#define S_SELECTED 101 -#define S_ANNO 102 -#define S_TIPODOCSDI 103 -#define S_NDOC 104 -#define S_DATARIC 105 -#define S_DATADOC 106 -#define S_TOTDOC 107 -#define S_FPPRO 108 -#define S_NUMREGCONT 109 -#define S_DATAREGCONT 110 -#define S_FORNITORE 111 -#define S_RAGSOC 112 -#define S_STATOPAIV 113 -#define S_PARIVA 114 -#define S_CODFISC 115 -#define S_ATTACH 116 -#define S_CODSDI 117 -#define S_RAGXML 118 -#define S_NPROT 119 -#define S_PROKEY 120 +#define S_SELECTED 101 +#define S_ANNO 102 +#define S_TIPODOCSDI 103 +#define S_NDOC 104 +#define S_DATARIC 105 +#define S_DATADOC 106 +#define S_TOTDOC 107 +#define S_FPPRO 108 +#define S_NUMREGCONT 109 +#define S_DATAREGCONT 110 +#define S_FORNITORE 111 +#define S_RAGSOC 112 +#define S_STATOPAIV 113 +#define S_PARIVA 114 +#define S_CODFISC 115 +#define S_ATTACH 116 +#define S_RAGXML 117 +#define S_NPROT 118 +#define S_PROKEY 119 -#define F_ERR 301 +#define F_ERR 301 -#define S_SELECTF 101 -#define S_STATOERR 102 -#define S_PIVAERR 103 -#define S_CODFIERR 104 -#define S_RAGSERR 105 -#define S_DESCERR 106 \ No newline at end of file +#define S_SELECTF 101 +#define S_STATOERR 102 +#define S_PIVAERR 103 +#define S_CODFIERR 104 +#define S_RAGSERR 105 +#define S_DESCERR 106 \ No newline at end of file diff --git a/src/fp/fp0400a.uml b/src/fp/fp0400a.uml index 06ec356fd..4b3dea04c 100644 --- a/src/fp/fp0400a.uml +++ b/src/fp/fp0400a.uml @@ -40,48 +40,37 @@ ENDPAGE PAGE "Fatture Passive" 0 2 0 0 -GROUPBOX DLG_NULL 30 7 +RADIOBUTTON F_ASSOC 20 50 BEGIN PROMPT 0 1 "@BFornitori" -END - -BOOLEAN F_FORNOTASS -BEGIN - PROMPT 1 2 "Non Associati" -END - -BOOLEAN F_FORASS -BEGIN - PROMPT 1 3 "Associati" -END - -BOOLEAN F_FORALL -BEGIN - PROMPT 1 4 "Tutti" + ITEM "|Non Associate" + ITEM "E|Associate" + ITEM "A|Tutte" + FLAGS "Z" END DATE F_DATAINI BEGIN - PROMPT 1 5 "Data iniziale" + PROMPT 0 4 "Data iniziale" CHECKTYPE REQUIRED END DATE F_DATAEND BEGIN - PROMPT 1 6 "Data finale " + PROMPT 25 4 "Data finale " VALIDATE DATE_CMP_FUNC >= F_DATAINI WARNING "La data finale non può essere minore della data iniziale" CHECKTYPE REQUIRED END -GROUPBOX F_GROUPCON 30 5 +GROUPBOX F_GROUPCON 32 5 BEGIN PROMPT 0 10 "@BContabilita'" END BOOLEAN F_CONTABIL BEGIN - PROMPT 1 11 "Contabilizzate" + PROMPT 1 11 "Mostra solo doc. registrati" MODULE F1 END @@ -103,7 +92,7 @@ END RADIOBUTTON F_FATTORD 20 20 BEGIN - PROMPT 31 1 "Ordinamento fatture per " + PROMPT 52 1 "Ordinamento fatture per " ITEM "|Data Ricezione" ITEM "D|Data Documento" FLAGS "" @@ -111,7 +100,7 @@ END RADIOBUTTON F_VERSOORD 20 20 BEGIN - PROMPT 52 1 "Ordinamento:" + PROMPT 52 5 "Ordinamento:" ITEM "|Decrescente" ITEM "C|Crescente" FLAGS "" @@ -119,19 +108,34 @@ END SPREADSHEET F_PROT 25 4 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 "Codice\nProtocol.@12" END -GROUPBOX F_GROUPCAU 59 8 +GROUPBOX F_GROUPCON2 59 3 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 STRING F_CAUSFA 3 BEGIN - PROMPT 32 11 "Causale per Fattura Acquisti (FA) " + PROMPT 1 1 "Causale per Contabilizzazione" FLAGS "UZ" FIELD CODCAUS USE LF_CAUSALI @@ -154,7 +158,7 @@ END STRING F_DESCAUSFA 50 BEGIN - PROMPT 32 12 "" + PROMPT 1 2 "" USE LF_CAUSALI KEY 2 CHECKTYPE NORMAL INPUT DESCR F_DESCAUSFA @@ -171,60 +175,9 @@ BEGIN MODULE F1 END -STRING F_CAUSNC 3 +SPREADSHEET F_DOCS -1 -1 BEGIN - PROMPT 32 13 "Causale per Nota Credito Acquisti [TD04]" - 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 "" + PROMPT 0 4 "" ITEM "" ITEM "Anno" ITEM "Tipo Doc.\nSDI@6" @@ -232,7 +185,7 @@ BEGIN ITEM "Data\nRicezione@8" ITEM "Data\nDoc.@8" ITEM "Totale\nDocumento@12" - ITEM "Salvato in\nFP PRO@7" + ITEM "Fornitore\nassociato@7" ITEM "Num. Registrazione\ncontabile@12" ITEM "Data Registrazione\ncontabile@12" ITEM "Fornitore@7" @@ -241,7 +194,6 @@ BEGIN ITEM "Partita IVA@10" ITEM "Cod. Fiscale@16" ITEM "Allegati@7" - ITEM "Codice\ndestinatario@8" ITEM "Ragione Sociale (XML)@50" ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@22" ITEM "Chiave Prot.@80" @@ -276,7 +228,7 @@ END STRING S_CODPROT 12 BEGIN - PROMPT 1 3 "Codice Protocollo" + PROMPT 1 3 "Tipo Protocollo" FLAGS "" END @@ -464,12 +416,6 @@ BEGIN FLAGS "D" END -STRING S_CODSDI 20 -BEGIN - PROMPT 35 6 "Cod. Destinatario" - FLAGS "D" -END - BOOLEAN S_ATTACH BEGIN PROMPT 1 7 "Documenti in allegato" diff --git a/src/include/mov.h b/src/include/mov.h index c39e68571..74cef32dd 100755 --- a/src/include/mov.h +++ b/src/include/mov.h @@ -10,6 +10,7 @@ #define MOV_DATADOC "DATADOC" #define MOV_RITFATT "RITFATT" #define MOV_NUMDOC "NUMDOC" +#define MOV_NUMDOCEXT "NUMDOCEXT" #define MOV_MESELIQ "MESELIQ" #define MOV_TIPODOC "TIPODOC" #define MOV_TOTDOC "TOTDOC" @@ -57,7 +58,7 @@ #define MOV_TNUMREG "TNUMREG" #define MOV_IVALIQ "IVALIQ" #define MOV_KEYFPPRO "KEYFPPRO" -#define MOV_PROGFPPRO "PROGFPPRO" +#define MOV_DATAELABF9 "DATAELABF9" #define NUMREG_PROVVISORIO 999999L