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_RISCONTO, sheet_risconto_handler);
if (!is_fp(m))
m->hide(F_PROTFPPRO);
else
{
m->add_button_tool(DLG_LINK, "Fatture SDI", TOOL_ELABORA);
m->set_handler(DLG_LINK, fppro_mask);
m->hide(F_PROTFPPRO);
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)
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
if (_mode != MODE_MOD
|| !is_fp(&msk)
|| last_key != 127 && last_key != K_SAVE)
|| last_key != K_DEL && last_key != K_SAVE)
return;
const TString& numreg = msk.get(F_NUMREG);
@ -2380,11 +2381,8 @@ int TPrimanota_application::save_fppro()
else return pro_notsaved;
}
// Controllo che sto registrando un documento FA Fattura di Acquisto
TLocalisamfile clifo(LF_CAUSALI);
clifo.setkey(1);
clifo.put("CODCAUS", msk.get(F_CODCAUS));
if (clifo.read() != NOERR || clifo.get("TIPODOC") != "FA")
// Controllo che sto registrando un documento FA Fattura di Acquisto o NC Acquisto
if (!TPro_msk::check_causale(msk.get(F_CODCAUS)))
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.");
@ -2395,48 +2393,25 @@ int TPrimanota_application::save_fppro()
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& 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);
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;
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) << "\' ;";
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);
fp_db().sq_set_exec(query);
const int n = fp_db().sq_items();
if (n != 1)
{
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" <<
message_box(TString("Attenzione, ") << "al movimento non è stato abbinato nessun documento elettronico.\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" <<
"In caso di documento escluso dalla fatturazione elettronica ignorate questo messaggio.");
return pro_notsaved;
@ -2456,9 +2431,9 @@ int TPrimanota_application::save_fppro()
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 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 clifor = msk.get_int(F_CODCLIFOR);

View File

@ -201,25 +201,31 @@
#define F_COFIS 603
#define F_STATOPAIVS 604
#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_DATAI 608
#define F_TOTDOCI 609
#define F_PROTFPPROI 610
#define F_FPPROKEYSI 611
#define F_SHEET_TEXT 612
#define F_SHOWALL 613
#define F_NUMEROI 611
#define F_DATAI 612
#define F_TOTDOCI 613
#define F_PROTFPPROI 614
#define F_FPPROKEYSI 615
#define F_SHEET_TEXT 616
#define F_SHOWALL 617
#define F_SELFPPROS 101
#define F_DATAORARICS 102
#define F_DATAS 103
#define F_IMPTOTDOCS 104
#define F_NUMEROS 105
#define F_FISCIVAPAESES 106
#define F_FISCIVACODS 107
#define F_CODFISCALES 108
#define F_TIPOPROTS 109
#define F_PROGRESSS 110
#define F_TIPODOCS 102
#define F_DATAORARICS 103
#define F_DATAS 104
#define F_IMPTOTDOCS 105
#define F_NUMEROS 106
#define F_FISCIVAPAESES 107
#define F_FISCIVACODS 108
#define F_CODFISCALES 109
#define F_TIPOPROTS 110
#define F_PROGRESSS 111
#define F_KEYFPPROS 112
#endif

View File

@ -2,8 +2,17 @@
#include "cg21sld.h"
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>
ENDPAGE
PAGE "Testata" -1 -1 77 20
@ -597,7 +606,7 @@ END
STRING F_PROTFPPRO 18
BEGIN
PROMPT 1 17 "Codice Protocollo FPPRO "
PROMPT 1 18 "Codice Protocollo FPPRO "
FLAGS "D"
END

View File

@ -2259,18 +2259,21 @@ bool TPrimanota_application::caus_query_handler(TMask_field& f, KEY key)
return true;
}
#define TIPO_REG_ACQ 2
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.disable(DLG_LINK);
}
else if(m.get(F_TIPODOC) == "FA" && m.find_by_id(F_PROTFPPRO) != NULL && m.field(F_PROTFPPRO).hidden())
{
m.show(F_PROTFPPRO);
m.enable(DLG_LINK);
}
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.enable(DLG_LINK);
}
}
// Handler of the F_CODCAUS field on the modify mask
@ -3842,7 +3845,7 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key)
bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
{
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;
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);
if (forn == 0)
{
message_box("Inserire prima il fornitore");
return false;
msk->set(F_ENABSEARCH, "X");
abilita_piva(msk);
//message_box("Inserire prima il fornitore");
//return false;
}
const TString& codfisc = msk->get(F_COFIS);
const TString& stato_piva = msk->get(F_STATOPAIVS);
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;
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" <<
"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 << "\n" <<
"ORDER BY P1_DATAORARIC ASC;";
TString date = "";
if (msk->get_bool(F_ENABDATE))
date = TDate(msk->get_date(F_DATESEARCH));
if(!msk->get_bool(F_ENABSEARCH))
query = query_fppro(msk->get(F_CODCLIFORS), date);
else
query = query_fppro(stato_piva, piva, date);
fp_db().sq_set_exec(query, false);
TSheet_field& sf = msk->sfield(F_SHEETFPPROS);
@ -3923,6 +3913,7 @@ bool TPro_msk::load_fppro_mask(TMask* msk, KEY k)
continue;
TToken_string& row = sf.row(-1);
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("PZ_DATA")));
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("PZ_TIPOPROT"));
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.show();
@ -3960,13 +3954,12 @@ bool TPro_msk::fppro_ok_handler(TMask_field& f, KEY k)
{
if(!loaded && *row->get(0) == 'X')
{
msk.set(F_NUMEROI, row->get(4));
msk.set(F_DATAI, row->get(2));
msk.set(F_TOTDOCI, row->get(3));
TString protocollo; protocollo << TDate(row->get(1)).year() << "-" << row->get(8) << "/" << row->get(9);
msk.set(F_NUMEROI, row->get(5));
msk.set(F_DATAI, row->get(3));
msk.set(F_TOTDOCI, row->get(4));
TString protocollo; protocollo << TDate(row->get(2)).year() << "-" << row->get(9) << "/" << row->get(10);
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, key_prot);
msk.set(F_FPPROKEYSI, row->get(11));
loaded = true;
ok = true;
break;
@ -3981,6 +3974,43 @@ bool TPro_msk::fppro_ok_handler(TMask_field& f, KEY k)
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
{
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)
{
if (o.dlg() == F_SELFPPROS)
switch (o.dlg())
{
if(e == fe_modify)
case F_SELFPPROS:
if (e == fe_modify)
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)
{
TMask::set_handler(DLG_CONFIG, fppro_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_COFIS, cg_msk.get(F_COFI));
TMask::set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV));
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);
// Bottone riporta doc FPPRO in testata Prima Nota
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
void fppro_selfatt() const;
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
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();
// Carica documenti FPPRO sulla maschera
static bool load_fppro_mask(TMask* msk, KEY k = 32);
static bool check_causale(const TString& cod_caus);
TPro_msk() = delete;
TPro_msk(TMask& cg_msk);
};

View File

@ -49,20 +49,43 @@ BEGIN
FLAGS "D"
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
BEGIN
PROMPT 0 4 "@BSelezionare la fattura, quindi premere 'Riporta Dati'"
PROMPT 0 6 "@BSelezionare la fattura, quindi premere 'Riporta Dati'"
END
BOOLEAN F_SHOWALL
BEGIN
PROMPT 0 5 "Mostra anche fatture già registrate"
PROMPT 0 7 "Mostra anche fatture già registrate"
END
SPREADSHEET F_SHEETFPPROS 0 15
BEGIN
PROMPT 0 6 ""
PROMPT 0 8 ""
ITEM " "
ITEM "Tipo Doc@7"
ITEM "Data Ricezione"
ITEM "Data Doc."
ITEM "Importo Totale"
@ -72,6 +95,7 @@ BEGIN
ITEM "Cod. Fiscale"
ITEM "Tipo Protocollo\nin ingresso"
ITEM "Progressivo di ingresso"
ITEM "Chiave FPPRO@H"
END
STRING F_NUMEROI 20
@ -117,6 +141,12 @@ BEGIN
FLAGS ""
END
STRING F_TIPODOCS 4
BEGIN
PROMPT 10 0 "TIPODOC"
FLAGS "D"
END
DATE F_DATAS
BEGIN
PROMPT 1 1 "DATA"
@ -171,6 +201,12 @@ BEGIN
FLAGS "D"
END
STRING F_KEYFPPROS 80
BEGIN
PROMPT 1 10 "CHIAVE FPPRO"
FLAGS ""
END
ENDPAGE
TOOLBAR "Documento" 0 0 0 2