Patch level : 12.0 748
Files correlati : cg Commento : Aggiunto salvataggio di prima nota in FPPRO
This commit is contained in:
parent
56746e985e
commit
090a1f7e65
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user