Patch level : 12.0 786

Files correlati     : cg2100
Commento            :
- Spostato bottone Fatture SDI
- Modificata query elenco fatture FPPRO per:
- ricerca default codice fornitore;
- query per salvataggio verifica fattura
- query con data
- Corretto caricamento chiavi db sbagliato: prendeva sempre lo stesso (ultimo)
- Aggiunta possibilita di ricerca per p. iva
- Aggiunto filtro data documento
- Caricamento automatico alla pressione dei flag
- Aggiunto controllo tipo documento Nota Credito di Acquisto
This commit is contained in:
Simone Palacino 2019-05-10 13:16:53 +02:00
parent 329e124d07
commit 5ef0686517
6 changed files with 283 additions and 110 deletions

View File

@ -124,13 +124,14 @@ TMask* TPrimanota_application::load_mask(int n)
ism.set_handler(CG_RATEO, sheet_rateo_handler); ism.set_handler(CG_RATEO, sheet_rateo_handler);
ism.set_handler(CG_RISCONTO, sheet_risconto_handler); ism.set_handler(CG_RISCONTO, sheet_risconto_handler);
if (!is_fp(m)) if (!is_fp(m))
m->hide(F_PROTFPPRO);
else
{ {
m->add_button_tool(DLG_LINK, "Fatture SDI", TOOL_ELABORA); m->hide(F_PROTFPPRO);
m->set_handler(DLG_LINK, fppro_mask); if(m->find_by_id(DLG_LINK) != NULL)
m->disable(DLG_LINK);
} }
else
if (m->find_by_id(DLG_LINK) != NULL)
m->set_handler(DLG_LINK, fppro_mask);
if (_quadratura) if (_quadratura)
m->set_handler(F_ADJUST_IVA, quadratura_handler); m->set_handler(F_ADJUST_IVA, quadratura_handler);
@ -1572,7 +1573,7 @@ void TPrimanota_application::clean_fppro()
// Controlli: solo in mod modifica; che abbia fp (no F8); che non sono in salvataggio // Controlli: solo in mod modifica; che abbia fp (no F8); che non sono in salvataggio
if (_mode != MODE_MOD if (_mode != MODE_MOD
|| !is_fp(&msk) || !is_fp(&msk)
|| last_key != 127 && last_key != K_SAVE) || last_key != K_DEL && last_key != K_SAVE)
return; return;
const TString& numreg = msk.get(F_NUMREG); const TString& numreg = msk.get(F_NUMREG);
@ -2380,11 +2381,8 @@ int TPrimanota_application::save_fppro()
else return pro_notsaved; else return pro_notsaved;
} }
// Controllo che sto registrando un documento FA Fattura di Acquisto // Controllo che sto registrando un documento FA Fattura di Acquisto o NC Acquisto
TLocalisamfile clifo(LF_CAUSALI); if (!TPro_msk::check_causale(msk.get(F_CODCAUS)))
clifo.setkey(1);
clifo.put("CODCAUS", msk.get(F_CODCAUS));
if (clifo.read() != NOERR || clifo.get("TIPODOC") != "FA")
return pro_notsaved; return pro_notsaved;
if (last != K_SAVE) { // Se sto uscendo avvertimento di non salvataggio e salto if (last != K_SAVE) { // Se sto uscendo avvertimento di non salvataggio e salto
message_box("La registrazione del movimento non verrà salvata sul database."); message_box("La registrazione del movimento non verrà salvata sul database.");
@ -2395,48 +2393,25 @@ int TPrimanota_application::save_fppro()
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& codfisc = msk.get(F_COFI); const TString& codforn = msk.get(F_CODCLIFOR);
const TString& stato_piva = msk.get(F_STATOPAIV); const TString& stato_piva = msk.get(F_STATOPAIV);
const TString& piva = msk.get(F_PIVA); 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), ';');
const TString& keyprginvio = fppro_keys.get();
const TString& keyheaderfatt = fppro_keys.get();
const TString& keybodyfatt = fppro_keys.get();
TString id_fornitore; TString where_str;
where_str << " (PZ_DATA = \'" << data_documento.date2ansi() << "\' AND PQ_IMPTOTDOC = \'" << tot_doc << "\' AND PZ_NUMERO = \'" << (!numero_docext.empty() ? numero_docext : numero_doc) << "\') ";
TString& query = TPro_msk::query_fppro(keyprginvio, keyheaderfatt, keybodyfatt, where_str);
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 pro_notsaved;
}
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); fp_db().sq_set_exec(query);
const int n = fp_db().sq_items(); const int n = fp_db().sq_items();
if (n != 1) if (n != 1)
{ {
message_box(TString("Attenzione,") << "al movimento non è stato abbinato nessun documento elettronico.\n" << message_box(TString("Attenzione, ") << "al movimento non è stato abbinato nessun documento elettronico.\n" <<
"Per conserntire una corretta archiviazione sostitutiva si consiglia di non confermare la registrazione e di procedere\n" << "Per consentire una corretta archiviazione sostitutiva si consiglia di non confermare la registrazione e di procedere\n" <<
"all'identificazione del fornitore tramite il monitor fatture passive.\n" << "all'identificazione del fornitore tramite il monitor fatture passive.\n" <<
"In caso di documento escluso dalla fatturazione elettronica ignorate questo messaggio."); "In caso di documento escluso dalla fatturazione elettronica ignorate questo messaggio.");
return pro_notsaved; return pro_notsaved;
@ -2456,9 +2431,9 @@ int TPrimanota_application::save_fppro()
return pro_notsaved; return pro_notsaved;
} }
const TString keyprginvio = fp_db().sq_get("PZ_KEYPRGINVIO"); /*const TString keyprginvio = fp_db().sq_get("PZ_KEYPRGINVIO");
const TString keyheaderfatt = fp_db().sq_get("PZ_KEYHEADERFATT"); const TString keyheaderfatt = fp_db().sq_get("PZ_KEYHEADERFATT");
const TString keybodyfatt = fp_db().sq_get("PZ_KEYBODYFATT"); const TString keybodyfatt = fp_db().sq_get("PZ_KEYBODYFATT");*/
const int numregcont = msk.get_int(F_NUMREG); const int numregcont = msk.get_int(F_NUMREG);
const int clifor = msk.get_int(F_CODCLIFOR); const int clifor = msk.get_int(F_CODCLIFOR);

View File

@ -201,25 +201,31 @@
#define F_COFIS 603 #define F_COFIS 603
#define F_STATOPAIVS 604 #define F_STATOPAIVS 604
#define F_PIVAS 605 #define F_PIVAS 605
#define F_SHEETFPPROS 606 #define F_RAGSOCS 606
#define F_ENABSEARCH 607
#define F_ENABDATE 608
#define F_DATESEARCH 609
#define F_SHEETFPPROS 610
#define F_NUMEROI 607 #define F_NUMEROI 611
#define F_DATAI 608 #define F_DATAI 612
#define F_TOTDOCI 609 #define F_TOTDOCI 613
#define F_PROTFPPROI 610 #define F_PROTFPPROI 614
#define F_FPPROKEYSI 611 #define F_FPPROKEYSI 615
#define F_SHEET_TEXT 612 #define F_SHEET_TEXT 616
#define F_SHOWALL 613 #define F_SHOWALL 617
#define F_SELFPPROS 101 #define F_SELFPPROS 101
#define F_DATAORARICS 102 #define F_TIPODOCS 102
#define F_DATAS 103 #define F_DATAORARICS 103
#define F_IMPTOTDOCS 104 #define F_DATAS 104
#define F_NUMEROS 105 #define F_IMPTOTDOCS 105
#define F_FISCIVAPAESES 106 #define F_NUMEROS 106
#define F_FISCIVACODS 107 #define F_FISCIVAPAESES 107
#define F_CODFISCALES 108 #define F_FISCIVACODS 108
#define F_TIPOPROTS 109 #define F_CODFISCALES 109
#define F_PROGRESSS 110 #define F_TIPOPROTS 110
#define F_PROGRESSS 111
#define F_KEYFPPROS 112
#endif #endif

View File

@ -2,8 +2,17 @@
#include "cg21sld.h" #include "cg21sld.h"
TOOLBAR "topbar" 0 0 0 2 TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_LINK 2 2
BEGIN
PROMPT 3 1 "Fatture SDI"
PICTURE TOOL_ELABORA
MODULE FP
END
#include <relapbar.h> #include <relapbar.h>
ENDPAGE ENDPAGE
PAGE "Testata" -1 -1 77 20 PAGE "Testata" -1 -1 77 20
@ -597,7 +606,7 @@ END
STRING F_PROTFPPRO 18 STRING F_PROTFPPRO 18
BEGIN BEGIN
PROMPT 1 17 "Codice Protocollo FPPRO " PROMPT 1 18 "Codice Protocollo FPPRO "
FLAGS "D" FLAGS "D"
END END

View File

@ -2259,14 +2259,17 @@ bool TPrimanota_application::caus_query_handler(TMask_field& f, KEY key)
return true; return true;
} }
#define TIPO_REG_ACQ 2
void TPrimanota_application::check_fppro_fields(TMask& m) void TPrimanota_application::check_fppro_fields(TMask& m)
{ {
if(m.get(F_TIPODOC) != "FA" && m.find_by_id(F_PROTFPPRO) != NULL) if (!TPro_msk::check_causale(m.get(F_CODCAUS)) && m.find_by_id(F_PROTFPPRO) != NULL)
{ {
m.hide(F_PROTFPPRO); m.hide(F_PROTFPPRO);
m.disable(DLG_LINK); m.disable(DLG_LINK);
} }
else if(m.get(F_TIPODOC) == "FA" && m.find_by_id(F_PROTFPPRO) != NULL && m.field(F_PROTFPPRO).hidden()) else
if (TPro_msk::check_causale(m.get(F_CODCAUS)) && m.find_by_id(F_PROTFPPRO) != NULL && m.field(F_PROTFPPRO).hidden())
{ {
m.show(F_PROTFPPRO); m.show(F_PROTFPPRO);
m.enable(DLG_LINK); m.enable(DLG_LINK);
@ -3842,7 +3845,7 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key)
bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key) bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
{ {
TMask& cg_msk = f.mask(); TMask& cg_msk = f.mask();
if (!app().get_isfp() || key != K_SPACE && key != K_TAB || f.mask().get(F_TIPODOC) != "FA") if (!app().get_isfp() || key != K_SPACE && key != K_TAB || !TPro_msk::check_causale(f.mask().get(F_CODCAUS)))
return true; return true;
auto msk = std::make_shared<TPro_msk>(cg_msk); auto msk = std::make_shared<TPro_msk>(cg_msk);
@ -3877,38 +3880,25 @@ bool TPro_msk::load_fppro_mask(TMask* msk, KEY k)
const int forn = msk->get_int(F_CODCLIFORS); const int forn = msk->get_int(F_CODCLIFORS);
if (forn == 0) if (forn == 0)
{ {
message_box("Inserire prima il fornitore"); msk->set(F_ENABSEARCH, "X");
return false; abilita_piva(msk);
//message_box("Inserire prima il fornitore");
//return false;
} }
const TString& codfisc = msk->get(F_COFIS); const TString& codfisc = msk->get(F_COFIS);
const TString& stato_piva = msk->get(F_STATOPAIVS); const TString& stato_piva = msk->get(F_STATOPAIVS);
const TString& piva = msk->get(F_PIVAS); const TString& piva = msk->get(F_PIVAS);
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 << ")";
TString query; TString query;
query << "SELECT PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, PZ_NUMPROT, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" << TString date = "";
"FROM PAA0200F\n" << "JOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" << if (msk->get_bool(F_ENABDATE))
"JOIN PAA0100F\n" << " ON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_KEYBODYFATT\n" << date = TDate(msk->get_date(F_DATESEARCH));
"JOIN PAA2700F\n" << "ON P2_KEYPRGINVIO = PQ_KEYPRGINVIO AND P2_KEYHEADERFATT = PQ_KEYHEADERFATT AND P2_KEYBODYFATT = PQ_KEYBODYFATT\n" << if(!msk->get_bool(F_ENABSEARCH))
"WHERE " << id_fornitore << "\n" << query = query_fppro(msk->get(F_CODCLIFORS), date);
"ORDER BY P1_DATAORARIC ASC;"; else
query = query_fppro(stato_piva, piva, date);
fp_db().sq_set_exec(query, false); fp_db().sq_set_exec(query, false);
TSheet_field& sf = msk->sfield(F_SHEETFPPROS); TSheet_field& sf = msk->sfield(F_SHEETFPPROS);
@ -3923,6 +3913,7 @@ bool TPro_msk::load_fppro_mask(TMask* msk, KEY k)
continue; continue;
TToken_string& row = sf.row(-1); TToken_string& row = sf.row(-1);
row.add("", 0); row.add("", 0);
row.add(fp_db().sq_get("P7_TIPODOC"));
row.add(TDate(fp_db().sq_get_date("P1_DATAORARIC"))); row.add(TDate(fp_db().sq_get_date("P1_DATAORARIC")));
row.add(TDate(fp_db().sq_get_date("PZ_DATA"))); row.add(TDate(fp_db().sq_get_date("PZ_DATA")));
row.add(fp_db().sq_get("PQ_IMPTOTDOC")); row.add(fp_db().sq_get("PQ_IMPTOTDOC"));
@ -3932,6 +3923,9 @@ bool TPro_msk::load_fppro_mask(TMask* msk, KEY k)
row.add(fp_db().sq_get("P2_CODFISCALE")); row.add(fp_db().sq_get("P2_CODFISCALE"));
row.add(fp_db().sq_get("PZ_TIPOPROT")); row.add(fp_db().sq_get("PZ_TIPOPROT"));
row.add(fp_db().sq_get("PZ_NUMPROT")); row.add(fp_db().sq_get("PZ_NUMPROT"));
TString fppro_keys;
fppro_keys << fp_db().sq_get("PZ_KEYPRGINVIO") << ";" << fp_db().sq_get("PZ_KEYHEADERFATT") << ";" << fp_db().sq_get("PZ_KEYBODYFATT");
row.add(fppro_keys);
} }
sf.force_update(); sf.force_update();
sf.show(); sf.show();
@ -3960,13 +3954,12 @@ bool TPro_msk::fppro_ok_handler(TMask_field& f, KEY k)
{ {
if(!loaded && *row->get(0) == 'X') if(!loaded && *row->get(0) == 'X')
{ {
msk.set(F_NUMEROI, row->get(4)); msk.set(F_NUMEROI, row->get(5));
msk.set(F_DATAI, row->get(2)); msk.set(F_DATAI, row->get(3));
msk.set(F_TOTDOCI, row->get(3)); msk.set(F_TOTDOCI, row->get(4));
TString protocollo; protocollo << TDate(row->get(1)).year() << "-" << row->get(8) << "/" << row->get(9); TString protocollo; protocollo << TDate(row->get(2)).year() << "-" << row->get(9) << "/" << row->get(10);
msk.set(F_PROTFPPROI, protocollo); msk.set(F_PROTFPPROI, protocollo);
TString key_prot; key_prot << fp_db().sq_get("PZ_KEYPRGINVIO") << ";" << fp_db().sq_get("PZ_KEYHEADERFATT") << ";" << fp_db().sq_get("PZ_KEYBODYFATT"); msk.set(F_FPPROKEYSI, row->get(11));
msk.set(F_FPPROKEYSI, key_prot);
loaded = true; loaded = true;
ok = true; ok = true;
break; break;
@ -3981,6 +3974,43 @@ bool TPro_msk::fppro_ok_handler(TMask_field& f, KEY k)
return true; return true;
} }
bool TPro_msk::piva_handler(TMask_field& f, KEY k)
{
TMask& msk = f.mask();
bool ok = true;
if(k == K_TAB && f.active() && f.focusdirty())
{
ok = load_fppro_mask(&msk, 32);
}
return ok;
}
bool TPro_msk::date_handler(TMask_field& f, KEY k)
{
TMask& msk = f.mask();
bool ok = true;
if (k == K_TAB && f.active() && f.focusdirty())
{
ok = load_fppro_mask(&msk, 32);
}
return ok;
}
bool TPro_msk::check_causale(const TString& cod_caus)
{
bool nc = false;
bool nc_acq = false;
bool fa = false;
TCausale caus(cod_caus);
if ((nc = caus.tipo_doc() == "NC"))
nc_acq = caus.reg().tipo() == TIPO_REG_ACQ;
fa = caus.tipo_doc() == "FA";
return fa || nc && nc_acq;
}
void TPro_msk::fppro_selfatt() const void TPro_msk::fppro_selfatt() const
{ {
const TMask& mask = *this; const TMask& mask = *this;
@ -3997,21 +4027,130 @@ void TPro_msk::fppro_selfatt() const
bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
if (o.dlg() == F_SELFPPROS) switch (o.dlg())
{ {
if(e == fe_modify) case F_SELFPPROS:
if (e == fe_modify)
fppro_selfatt(); fppro_selfatt();
break;
case F_SHOWALL:
if (e == fe_modify)
load_fppro_mask(this, 32);
break;
case F_ENABSEARCH:
if (e == fe_modify)
{
abilita_piva(this);
load_fppro_mask(this);
}
break;
case F_ENABDATE:
if (e == fe_modify)
{
field(F_DATESEARCH).show(o.mask().get_bool(F_ENABDATE));
if (!o.mask().get_bool(F_ENABDATE))
load_fppro_mask(this);
}
break;
default:
break;
}
return true;
}
TString& TPro_msk::query_fppro(const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt,
const TString& where_str)
{
return query_fppro("", "", "", where_str, "", keyprginvio, keyheaderfatt, keybodyfatt, false, false);
}
TString& TPro_msk::query_fppro(const TString& codforn, const TString& date)
{
return query_fppro(codforn, "", "", "", date, "", "", "", true, false);
}
TString& TPro_msk::query_fppro(const TString& stato_piva, const TString& piva, const TString& date)
{
return query_fppro("", stato_piva, piva, "", date, "", "", "", true, true);
}
TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order, bool piva_research)
{
TString id_fornitore;
TString keys;
if(piva_research && !piva.empty())
{
id_fornitore << " (P2_FISCIVAPAESE = ";
if (!stato_piva.empty())
id_fornitore << "\'" << stato_piva << "\'";
else
id_fornitore << "\'IT\'";
id_fornitore << " AND P2_FISCIVACOD = \'" << piva << "\') ";
}
else
{
if(codforn.empty() && !keyprginvio.empty() && !keyheaderfatt.empty() && !keybodyfatt.empty())
{
keys << " (PZ_KEYPRGINVIO = '" << keyprginvio << "' AND PZ_KEYHEADERFATT = '" << keyheaderfatt << "' AND PZ_KEYBODYFATT = '" << keybodyfatt << "') ";
}
if(!codforn.empty())
id_fornitore << " (PZ_CLIFOR = '" << codforn << "') ";
} }
return true; static TString query;
query.cut(0) << "SELECT PZ_CLIFOR, PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, P7_TIPODOC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, PZ_NUMPROT, 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" <<
"JOIN PAA0700F\n" << "ON P7_KEYPRGINVIO = PQ_KEYPRGINVIO AND P7_KEYHEADERFATT = PQ_KEYHEADERFATT AND P7_KEYBODYFATT = PQ_KEYBODYFATT\n" <<
"WHERE ";
if (!id_fornitore.empty())
{
query << id_fornitore << " ";
if (!date.empty())
query << " AND PZ_DATA = '" << TDate(date).date2ansi() << "' ";
if (order)
query << "\nORDER BY P1_DATAORARIC ASC";
query << ";";
}
else if(!keys.empty())
{
query << keys;
if (!where_str.empty())
query << " AND " << where_str;
query << ";";
}
else
query.cut(0);
return query;
}
void TPro_msk::abilita_piva(TMask* msk)
{
if (msk->get_bool(F_ENABSEARCH))
{
msk->enable(F_PIVAS);
msk->enable(F_STATOPAIVS);
}
else
{
msk->enable(F_PIVAS, false);
msk->enable(F_STATOPAIVS, false);
}
} }
TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2fppro"), _parent_mask(cg_msk) TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2fppro"), _parent_mask(cg_msk)
{ {
TMask::set_handler(DLG_CONFIG, fppro_handler); TMask::set_handler(DLG_CONFIG, fppro_handler);
TMask::set_handler(DLG_LINK, fppro_ok_handler); TMask::set_handler(DLG_LINK, fppro_ok_handler);
TMask::set_handler(F_PIVAS, piva_handler);
TMask::set_handler(F_DATESEARCH, date_handler);
TMask::set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR)); TMask::set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR));
TMask::set(F_COFIS, cg_msk.get(F_COFI)); TMask::set(F_COFIS, cg_msk.get(F_COFI));
TMask::set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV)); TMask::set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV));
TMask::set(F_PIVAS, cg_msk.get(F_PIVA)); TMask::set(F_PIVAS, cg_msk.get(F_PIVA));
TMask::set(F_RAGSOCS, cg_msk.get(F_RAGSOCCF));
set(F_DATESEARCH, TDate(TODAY));
} }

View File

@ -380,13 +380,21 @@ class TPro_msk : public TAutomask
static bool fppro_handler(TMask_field& f, KEY k); static bool fppro_handler(TMask_field& f, KEY k);
// Bottone riporta doc FPPRO in testata Prima Nota // Bottone riporta doc FPPRO in testata Prima Nota
static bool fppro_ok_handler(TMask_field& f, KEY k); static bool fppro_ok_handler(TMask_field& f, KEY k);
static bool piva_handler(TMask_field& f, KEY k);
static bool date_handler(TMask_field& f, KEY k);
// Non permette la selezione multipla // Non permette la selezione multipla
void fppro_selfatt() const; void fppro_selfatt() const;
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;
public: public:
static TString& query_fppro(const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, const TString& where_str);
static TString& query_fppro(const TString& codforn, const TString& date);
static TString& query_fppro(const TString& stato_piva, const TString& piva, const TString& date);
static TString& query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order = true, bool piva_research = false);
static void abilita_piva(TMask* msk);
//bool is_fp(); //bool is_fp();
// Carica documenti FPPRO sulla maschera // Carica documenti FPPRO sulla maschera
static bool load_fppro_mask(TMask* msk, KEY k = 32); static bool load_fppro_mask(TMask* msk, KEY k = 32);
static bool check_causale(const TString& cod_caus);
TPro_msk() = delete; TPro_msk() = delete;
TPro_msk(TMask& cg_msk); TPro_msk(TMask& cg_msk);
}; };

View File

@ -49,20 +49,43 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
STRING F_RAGSOCS 50
BEGIN
PROMPT 0 3 "Rag. Soc."
FLAGS "D"
END
BOOLEAN F_ENABSEARCH
BEGIN
PROMPT 0 4 "Effettua ricerca per P.IVA/Disabilita ricerca per cod. Fornitore"
END
BOOLEAN F_ENABDATE
BEGIN
PROMPT 0 5 "Abilita filtro per data"
END
DATE F_DATESEARCH
BEGIN
PROMPT 35 5 "Data documento"
FLAGS "H"
END
TEXT F_SHEET_TEXT TEXT F_SHEET_TEXT
BEGIN BEGIN
PROMPT 0 4 "@BSelezionare la fattura, quindi premere 'Riporta Dati'" PROMPT 0 6 "@BSelezionare la fattura, quindi premere 'Riporta Dati'"
END END
BOOLEAN F_SHOWALL BOOLEAN F_SHOWALL
BEGIN BEGIN
PROMPT 0 5 "Mostra anche fatture già registrate" PROMPT 0 7 "Mostra anche fatture già registrate"
END END
SPREADSHEET F_SHEETFPPROS 0 15 SPREADSHEET F_SHEETFPPROS 0 15
BEGIN BEGIN
PROMPT 0 6 "" PROMPT 0 8 ""
ITEM " " ITEM " "
ITEM "Tipo Doc@7"
ITEM "Data Ricezione" ITEM "Data Ricezione"
ITEM "Data Doc." ITEM "Data Doc."
ITEM "Importo Totale" ITEM "Importo Totale"
@ -72,6 +95,7 @@ BEGIN
ITEM "Cod. Fiscale" ITEM "Cod. Fiscale"
ITEM "Tipo Protocollo\nin ingresso" ITEM "Tipo Protocollo\nin ingresso"
ITEM "Progressivo di ingresso" ITEM "Progressivo di ingresso"
ITEM "Chiave FPPRO@H"
END END
STRING F_NUMEROI 20 STRING F_NUMEROI 20
@ -117,6 +141,12 @@ BEGIN
FLAGS "" FLAGS ""
END END
STRING F_TIPODOCS 4
BEGIN
PROMPT 10 0 "TIPODOC"
FLAGS "D"
END
DATE F_DATAS DATE F_DATAS
BEGIN BEGIN
PROMPT 1 1 "DATA" PROMPT 1 1 "DATA"
@ -171,6 +201,12 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
STRING F_KEYFPPROS 80
BEGIN
PROMPT 1 10 "CHIAVE FPPRO"
FLAGS ""
END
ENDPAGE ENDPAGE
TOOLBAR "Documento" 0 0 0 2 TOOLBAR "Documento" 0 0 0 2