Patch level : 12.0 748

Files correlati     : cg
Commento            : Aggiunto salvataggio di prima nota in FPPRO
This commit is contained in:
Simone Palacino 2019-03-27 11:37:35 +01:00
parent 56746e985e
commit 090a1f7e65
2 changed files with 84 additions and 0 deletions

View File

@ -20,6 +20,8 @@
// Campi su maschera
#include "cg2100.h"
#include "tsdb.h"
#include "../fp/fplib.h"
///////////////////////////////////////////////////////////
// Dati incasso immediato
@ -2164,6 +2166,7 @@ bool TPrimanota_application::save(bool check_dirty)
_swap_mask = false;
return true;
}
save_fppro();
return TRelation_application::save(check_dirty);
}
@ -2277,6 +2280,86 @@ void TPrimanota_application::mask2ini(const TMask& msk, TConfig& ini)
}
}
bool TPrimanota_application::save_fppro() const
{
const KEY last = curr_mask().last_key();
if (last == K_ESC || last == K_QUIT || last == K_F9) // Salto se sto uscendo
return true;
// Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP
if (fp_settings().get_db_indirizzo().empty() || fp_settings().is_f8())
return true; // Salto il salvataggio in FPPRO
TMask& msk = curr_mask();
const TDate data_operazione(msk.get(F_DATAREG));
const TDate data_documento(msk.get(F_DATADOC));
const TString& numero_docext = msk.get(F_NUMDOCEXT);
const TString& numero_doc = msk.get(F_NUMDOC);
const TString& codfisc = msk.get(F_COFI);
const TString& stato_piva = msk.get(F_STATOPAIV);
const TString& piva = msk.get(F_PIVA);
const TString& tot_doc = msk.get(F_TOTALE);
TString id_fornitore;
if (!piva.empty())
{
id_fornitore << " (P2_FISCIVAPAESE = ";
if (!stato_piva.empty())
id_fornitore << "\'" << stato_piva << "\'";
else
id_fornitore << "\'IT\'";
id_fornitore << " AND P2_FISCIVACOD = \'" << piva << "\'";
}
if(!codfisc.empty())
{
if (!id_fornitore.empty())
id_fornitore << " OR ";
id_fornitore << " P2_CODFISCALE = \'" << codfisc << "\'";
}
if(!id_fornitore.empty())
id_fornitore << ")";
else
{
error_box("Attenzione non è stata inserita ne la partita iva ne il cod.fisc del fornitore:\nimpossibile associarlo in FPPRO");
return false;
}
TString query;
query << "SELECT PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" <<
"FROM PAA0200F\n" << "JOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" <<
"JOIN PAA0100F\n" << " ON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_KEYBODYFATT\n" <<
"JOIN PAA2700F\n" << "ON P2_KEYPRGINVIO = PQ_KEYPRGINVIO AND P2_KEYHEADERFATT = PQ_KEYHEADERFATT AND P2_KEYBODYFATT = PQ_KEYBODYFATT\n" <<
"WHERE " << id_fornitore << " AND PZ_DATA = \'" << data_documento.date2ansi() << "\' AND PQ_IMPTOTDOC = \'" << tot_doc << "\' AND PZ_NUMERO = \'" << (!numero_docext.empty() ? numero_docext : numero_doc) << "\' ;";
fp_db().sq_set_exec(query);
const TDate& dataoraric = fp_db().sq_get_date("P1_DATAORARIC"); // Devo controllare che la data operazione sia maggiore della data ric
if (dataoraric.empty())
{
message_box("Attenzione non è stato possibile indentificare\nil documento con una fattura in FPPRO");
return false;
}
if(data_operazione < TDate(dataoraric))
{
error_box("Attenzione non è possibile registrare una fattura\ncon data operazione minore della data di ricezione.");
return false;
}
const TString keyprginvio = fp_db().sq_get("PZ_KEYPRGINVIO");
const TString keyheaderfatt = fp_db().sq_get("PZ_KEYHEADERFATT");
const TString keybodyfatt = fp_db().sq_get("PZ_KEYBODYFATT");
const int numregcont = msk.get_int(F_NUMREG);
const int clifor = msk.get_int(F_CODCLIFOR);
TString update_query;
update_query << "UPDATE FPPRO00F\n" <<
"SET PZ_TIPOCF = 'F', PZ_CLIFOR = \'" << clifor << "\', PZ_DATACONT = \'" << TDate(TODAY).date2ansi() << "\', PZ_NUMREGCONT = \'" << numregcont << "\', PZ_DATAREGCONT = \'" << data_operazione.date2ansi() << "\'\n" <<
"WHERE PZ_KEYPRGINVIO = \'" << keyprginvio << "\' AND PZ_KEYHEADERFATT = \'" << keyheaderfatt << "\' AND PZ_KEYBODYFATT = \'" << keybodyfatt << "\';";
fp_db().sq_set_exec(update_query);
return fp_db().sq_commit();
}
bool TPrimanota_application::link_cesp(const TMask& msk, const char* action)
{
// Controlla autorizzazione

View File

@ -181,6 +181,7 @@ protected: // TApplication
void dump_fatt(TConfig& ini, TPartita & game, int rigafatt, int pref = 0);
virtual void ini2mask(TConfig& ini, TMask& msk, bool query);
virtual void mask2ini(const TMask& msk, TConfig& ini);
bool save_fppro() const;
virtual bool save(bool check_dirty);
bool get_mask_swap_file(TFilename& name) const;