Patch level : 12.0 808
Files correlati : cg2.exe, fp0.exe Commento : - Corretto salvataggio movimenti spostato in write/rewrite - Tolto controllo se F8: inutile basta avere fp e f1 - Corretto flag registrazione collegata a fppro quando apro da monito passive - Cambiato messaggio in registrazione quando si modifica una registrazione gia' collegata a fppro - Aggiunto controllo data inizio fatturazione nell'handler di DATAREG - Corretto salvataggio data inizio fatturazione: salvava un booleano invece della data (?!)
This commit is contained in:
parent
91df0c01a1
commit
a266e781dd
@ -1255,7 +1255,6 @@ int TPrimanota_application::read(TMask& m)
|
|||||||
return _rel->status();
|
return _rel->status();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Trasferisce i dati da maschera a movimento di prima nota
|
// Trasferisce i dati da maschera a movimento di prima nota
|
||||||
void TPrimanota_application::mask2rel(const TMask& m)
|
void TPrimanota_application::mask2rel(const TMask& m)
|
||||||
{
|
{
|
||||||
@ -1446,6 +1445,13 @@ void TPrimanota_application::check_saldi()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TPrimanota_application::write_fppro()
|
||||||
|
{
|
||||||
|
// Controllo se la registrazione ha avuto effetto anche su FPPRO allora salvo riferimento sul mov
|
||||||
|
if (save_fppro() > 0 && !save_dbmov())
|
||||||
|
message_box(TString("ATTENZIONE:") << " non è stato possibile salvare i riferimenti del documento in ingresso per questo movimento.\n" <<
|
||||||
|
"Movimento registrato senza collegamento ai documenti in ingresso.");
|
||||||
|
}
|
||||||
|
|
||||||
int TPrimanota_application::write(const TMask& m)
|
int TPrimanota_application::write(const TMask& m)
|
||||||
{
|
{
|
||||||
@ -1470,6 +1476,8 @@ int TPrimanota_application::write(const TMask& m)
|
|||||||
const int err = _rel->write(true);
|
const int err = _rel->write(true);
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
{
|
{
|
||||||
|
write_fppro();
|
||||||
|
|
||||||
_saldi.registra();
|
_saldi.registra();
|
||||||
check_saldi();
|
check_saldi();
|
||||||
|
|
||||||
@ -1558,6 +1566,8 @@ int TPrimanota_application::rewrite(const TMask& m)
|
|||||||
const int err = _rel->rewrite(true);
|
const int err = _rel->rewrite(true);
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
{
|
{
|
||||||
|
write_fppro();
|
||||||
|
|
||||||
_saldi.registra();
|
_saldi.registra();
|
||||||
check_saldi();
|
check_saldi();
|
||||||
|
|
||||||
@ -1602,10 +1612,10 @@ void TPrimanota_application::clean_fppro()
|
|||||||
TMask& msk = curr_mask();
|
TMask& msk = curr_mask();
|
||||||
const KEY last_key = msk.last_key();
|
const KEY last_key = msk.last_key();
|
||||||
|
|
||||||
// Controlli: solo in mod modifica; che abbia fp (no F8); che non sono in salvataggio
|
// Controlli: solo in mod modifica; che abbia fp-f1 (no F8); che non sono in salvataggio
|
||||||
if (_mode != MODE_MOD
|
if (_mode != MODE_MOD
|
||||||
|| !has_f1_db(&msk)
|
|| !has_f1_db(&msk)
|
||||||
|| last_key != K_DEL && last_key != K_SAVE && last_key != K_ELIMMAS)
|
|| last_key != K_DEL && last_key != K_SAVE && last_key != K_ELIMMAS && last_key != K_QUIT)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const TString& numreg = msk.get(F_NUMREG);
|
const TString& numreg = msk.get(F_NUMREG);
|
||||||
@ -1624,7 +1634,7 @@ void TPrimanota_application::set_has_f1_db(TMask* m)
|
|||||||
if (m->find_by_id(F_DATAREG) != NULL && !m->get(F_DATAREG).empty())
|
if (m->find_by_id(F_DATAREG) != NULL && !m->get(F_DATAREG).empty())
|
||||||
{
|
{
|
||||||
if (TDate(m->get(F_DATAREG)) >= TDate(fp_settings().get_data_start_fatt()))
|
if (TDate(m->get(F_DATAREG)) >= TDate(fp_settings().get_data_start_fatt()))
|
||||||
_isfp = has_module(F1AUT) && !fp_settings().get_db_indirizzo().empty() && !fp_settings().is_f8();
|
_isfp = has_module(F1AUT) && !fp_settings().get_db_indirizzo().empty();
|
||||||
else
|
else
|
||||||
_isfp = false;
|
_isfp = false;
|
||||||
_is_set_fpcheck = true;
|
_is_set_fpcheck = true;
|
||||||
@ -2254,7 +2264,10 @@ void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_f1_ini && msk.find_by_id(FS_RECALC) != NULL)
|
if (_f1_ini && msk.find_by_id(FS_RECALC) != NULL)
|
||||||
|
{
|
||||||
|
msk.set(F_COLFPPRO, "X");
|
||||||
msk.set(FS_RECALC, "");
|
msk.set(FS_RECALC, "");
|
||||||
|
}
|
||||||
if (_f1_liq && msk.find_by_id(F_DIFFERITA) != NULL)
|
if (_f1_liq && msk.find_by_id(F_DIFFERITA) != NULL)
|
||||||
{
|
{
|
||||||
TDate datadoc(msk.get(F_DATADOC)); datadoc.set_day(1);
|
TDate datadoc(msk.get(F_DATADOC)); datadoc.set_day(1);
|
||||||
@ -2271,18 +2284,8 @@ bool TPrimanota_application::save(bool check_dirty)
|
|||||||
_swap_mask = false;
|
_swap_mask = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
const int fp_code = save_fppro();
|
|
||||||
const bool saved = TRelation_application::save(check_dirty);
|
|
||||||
|
|
||||||
// Controllo se la registrazione ha avuto effetto anche su FPPRO allora salvo riferimento sul mov
|
return TRelation_application::save(check_dirty);
|
||||||
if (saved)
|
|
||||||
{
|
|
||||||
if(fp_code > 0 && !save_dbmov())
|
|
||||||
message_box(TString("ATTENZIONE:") << " non è stato possibile salvare i riferimenti del documento in ingresso per questo movimento.\n" <<
|
|
||||||
"Movimento registrato senza collegamento ai documenti in ingresso.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return saved;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimanota_application::dump_rec(TConfig & ini, const TRectype & rec, int row, int pref)
|
void TPrimanota_application::dump_rec(TConfig & ini, const TRectype & rec, int row, int pref)
|
||||||
@ -2410,13 +2413,10 @@ int TPrimanota_application::save_fppro()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Anzitutto guardo la modalita' in cui sono
|
// Anzitutto guardo la modalita' in cui sono
|
||||||
// Se in modalita' inserimento continuo normalmente
|
// Se in modalita' inserimento continuo normalmente o in mod. modifica
|
||||||
if (_mode != MODE_INS)
|
|
||||||
{
|
|
||||||
// Se in modalita' modifica e sto salvando
|
|
||||||
// Guardo se quel documento corrisponde a un doc in FPPRO
|
// Guardo se quel documento corrisponde a un doc in FPPRO
|
||||||
// Lancio messaggio di avvertimento pulisco su db e proseguo col salvataggio del documento modificato
|
// Lancio messaggio di avvertimento pulisco su db e proseguo col salvataggio del documento modificato
|
||||||
if(_mode == MODE_MOD && last == K_SAVE)
|
if (_mode != MODE_INS && _mode == MODE_MOD)
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
query << "SELECT COUNT(*) AS COUNT FROM FPPRO00F WHERE PZ_NUMREGCONT = '" << msk.get(F_NUMREG) << "'";
|
query << "SELECT COUNT(*) AS COUNT FROM FPPRO00F WHERE PZ_NUMREGCONT = '" << msk.get(F_NUMREG) << "'";
|
||||||
@ -2425,28 +2425,19 @@ int TPrimanota_application::save_fppro()
|
|||||||
{
|
{
|
||||||
message_box(TString("Attenzione!") << " E' stato modificato un movimento già collegato a un documento in ingresso.");
|
message_box(TString("Attenzione!") << " E' stato modificato un movimento già collegato a un documento in ingresso.");
|
||||||
clean_fppro(); // Pulisco db
|
clean_fppro(); // Pulisco db
|
||||||
save_dbmov(); // Svuoto riferimento doc ingresso sul mov
|
save_dbmov(true); // Svuoto riferimento doc ingresso sul mov
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// In altre modalita' esco senza fare nulla sul db
|
else return pro_notsaved; // In altre modalita' esco senza fare nulla sul db
|
||||||
else return pro_notsaved;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Controllo che sto registrando un documento FA Fattura di Acquisto o NC Acquisto
|
// Controllo che sto registrando un documento FA Fattura di Acquisto o NC Acquisto
|
||||||
if (!check_causale(msk.get(F_CODCAUS)))
|
if (!check_causale(msk.get(F_CODCAUS)))
|
||||||
return pro_notsaved;
|
return pro_notsaved;
|
||||||
if (last != K_SAVE) { // Se sto uscendo avvertimento di non salvataggio e salto
|
|
||||||
message_box("La registrazione del movimento non verrà salvata sul database.");
|
|
||||||
return pro_notsaved;
|
|
||||||
}
|
|
||||||
|
|
||||||
const TDate data_operazione(msk.get(F_DATAREG));
|
const TDate data_operazione(msk.get(F_DATAREG));
|
||||||
const TDate data_documento(msk.get(F_DATADOC));
|
const TDate data_documento(msk.get(F_DATADOC));
|
||||||
const TString& numero_docext = msk.get(F_NUMDOCEXT);
|
const TString& numero_docext = msk.get(F_NUMDOCEXT);
|
||||||
const TString& numero_doc = msk.get(F_NUMDOC);
|
const TString& numero_doc = msk.get(F_NUMDOC);
|
||||||
const TString& codforn = msk.get(F_CODCLIFOR);
|
|
||||||
const TString& stato_piva = msk.get(F_STATOPAIV);
|
|
||||||
const TString& piva = msk.get(F_PIVA);
|
|
||||||
const TString& tot_doc = msk.get(F_TOTALE);
|
const TString& tot_doc = msk.get(F_TOTALE);
|
||||||
TToken_string fppro_keys(msk.get(F_PROKEY), ';');
|
TToken_string fppro_keys(msk.get(F_PROKEY), ';');
|
||||||
const TString& keyprginvio = fppro_keys.get();
|
const TString& keyprginvio = fppro_keys.get();
|
||||||
@ -2470,7 +2461,11 @@ int TPrimanota_application::save_fppro()
|
|||||||
const int numreg = fp_db().sq_get_int("PZ_NUMREGCONT");
|
const int numreg = fp_db().sq_get_int("PZ_NUMREGCONT");
|
||||||
if (numreg != 0)
|
if (numreg != 0)
|
||||||
{
|
{
|
||||||
error_box(TString("Il documento ") << data_documento.year() << " / " << numero_doc << " è già stato inserito con la registrazione numero " << numreg << "\nSalvataggio su protocollo in ingresso impossibile.");
|
const bool key = noyes_box(
|
||||||
|
TString("Il documento ") << data_documento.year() << " / " << numero_doc <<
|
||||||
|
" è già stato inserito con la registrazione numero " << numreg <<
|
||||||
|
"\nSi desidera continuare comunque?");
|
||||||
|
if(!key)
|
||||||
return pro_notsaved;
|
return pro_notsaved;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2497,7 +2492,7 @@ int TPrimanota_application::save_fppro()
|
|||||||
return saved? pro_noerr : pro_notsaved;
|
return saved? pro_noerr : pro_notsaved;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPrimanota_application::save_dbmov() const
|
bool TPrimanota_application::save_dbmov(bool clean) const
|
||||||
{
|
{
|
||||||
const TMask& msk = curr_mask();
|
const TMask& msk = curr_mask();
|
||||||
const TString& numreg = msk.get(H_NUMREG);
|
const TString& numreg = msk.get(H_NUMREG);
|
||||||
@ -2508,7 +2503,7 @@ bool TPrimanota_application::save_dbmov() const
|
|||||||
bool ok = mov.read() == NOERR;
|
bool ok = mov.read() == NOERR;
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
mov.put(MOV_KEYFPPRO, keyfppro);
|
mov.put(MOV_KEYFPPRO, !clean ? keyfppro : "");
|
||||||
ok = mov.rewrite() == NOERR;
|
ok = mov.rewrite() == NOERR;
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
|
@ -2262,10 +2262,13 @@ bool TPrimanota_application::caus_query_handler(TMask_field& f, KEY key)
|
|||||||
|
|
||||||
void TPrimanota_application::check_fppro_fields(TMask& m)
|
void TPrimanota_application::check_fppro_fields(TMask& m)
|
||||||
{
|
{
|
||||||
if (!check_causale(m.get(F_CODCAUS)) || !app().has_f1_db(&m))
|
const bool after_data = TDate(m.get(F_DATAREG)) >= TDate(fp_settings().get_data_start_fatt());
|
||||||
|
if (!check_causale(m.get(F_CODCAUS)) || !app().has_f1_db(&m) || !after_data)
|
||||||
{
|
{
|
||||||
if(m.find_by_id(DLG_LINK) != NULL)
|
if(m.find_by_id(DLG_LINK) != NULL)
|
||||||
m.disable(DLG_LINK);
|
m.disable(DLG_LINK);
|
||||||
|
if (m.find_by_id(F_COLFPPRO) != NULL)
|
||||||
|
m.hide(F_COLFPPRO);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3977,7 +3980,7 @@ bool TPro_msk::fppro_ok_handler(TMask_field& f, KEY k)
|
|||||||
sf.force_update();
|
sf.force_update();
|
||||||
if(!ok)
|
if(!ok)
|
||||||
message_box("Nessun documento selezionato.");
|
message_box("Nessun documento selezionato.");
|
||||||
msk.stop_run(20334);
|
msk.stop_run(K_QUIT);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,21 +208,26 @@ protected: // TApplication
|
|||||||
virtual void mask2ini(const TMask& msk, TConfig& ini);
|
virtual void mask2ini(const TMask& msk, TConfig& ini);
|
||||||
|
|
||||||
// Metodi per aggancio FPPRO (solo su operazioni di Fattura di Acquisto)
|
// Metodi per aggancio FPPRO (solo su operazioni di Fattura di Acquisto)
|
||||||
|
|
||||||
|
// Metodo chiamato dalla write e rewrite per salvare su db fatt.
|
||||||
|
void write_fppro();
|
||||||
// Salvo dati fornitore e registrazione contabile sul db FPPRO
|
// Salvo dati fornitore e registrazione contabile sul db FPPRO
|
||||||
int save_fppro();
|
int save_fppro();
|
||||||
// Salva sul movimento il riferimento al documento in FPPRO
|
// Salva sul movimento il riferimento al documento in FPPRO (keys)
|
||||||
bool save_dbmov() const;
|
bool save_dbmov(bool clean = false) const;
|
||||||
// Pulisce il mov e db dai firerimenti FPPRO (in MODE_MOD per edit/delete)
|
// Pulisce il mov e db dai firerimenti FPPRO (in MODE_MOD per edit/delete)
|
||||||
void clean_fppro();
|
void clean_fppro();
|
||||||
|
// setta variabili prima del controllo has_f1_db
|
||||||
void set_has_f1_db(TMask* m);
|
void set_has_f1_db(TMask* m);
|
||||||
bool has_f1_db(TMask* m);
|
bool has_f1_db(TMask* m);
|
||||||
|
|
||||||
virtual bool save(bool check_dirty);
|
virtual bool save(bool check_dirty);
|
||||||
|
|
||||||
bool get_mask_swap_file(TFilename& name) const;
|
bool get_mask_swap_file(TFilename& name) const;
|
||||||
bool force_mask_swap(const TCausale& old_caus, const TCausale& new_caus);
|
bool force_mask_swap(const TCausale& old_caus, const TCausale& new_caus);
|
||||||
|
|
||||||
protected: // TRelation_application
|
protected: // TRelation_application
|
||||||
void check_f1_ini();
|
void check_f1_ini(); // setto variabili se ho f1 o liq nei parametri (ini da fp)
|
||||||
virtual bool user_create();
|
virtual bool user_create();
|
||||||
virtual bool user_destroy();
|
virtual bool user_destroy();
|
||||||
virtual bool changing_mask(int mode);
|
virtual bool changing_mask(int mode);
|
||||||
|
@ -249,7 +249,7 @@ void TFP_settings::set_no_export_pronto(const bool no_export_pronto) const
|
|||||||
|
|
||||||
void TFP_settings::set_data_start_fatt(const char* date) const
|
void TFP_settings::set_data_start_fatt(const char* date) const
|
||||||
{
|
{
|
||||||
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_DATASTARTFATT, date);
|
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_DATASTARTFATT, date);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFP_settings::remove_para_ini(int idx)
|
void TFP_settings::remove_para_ini(int idx)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user