Merge remote-tracking branch 'origin/R_10_00' into R_10_00
This commit is contained in:
commit
3d9f58af40
@ -235,12 +235,15 @@
|
||||
</SqlCompiler>
|
||||
<SqlCompiler Include="..\src\fp\sql\fp0106.sql">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</SqlCompiler>
|
||||
<SqlCompiler Include="..\src\fp\sql\fp0108.sql">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</SqlCompiler>
|
||||
<SqlCompiler Include="..\src\fp\sql\fp0110.sql">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</SqlCompiler>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
@ -3,3 +3,5 @@ cg2fppro.msk
|
||||
|
||||
Cambiata icona ricarica fatture su 'Fatture SDI'
|
||||
Aggiunta importazione percent. e natura iva da ini con f1
|
||||
Corretta importazione importo totale con ritenute
|
||||
Corretto calcolo ritenute in maschera fppro
|
||||
|
@ -9,79 +9,79 @@ Patch = 846
|
||||
Versione = 21511200
|
||||
|
||||
[cg99]
|
||||
Kill(0) = batbmsp.msk|x
|
||||
Kill(1) = bastcve.rep|x
|
||||
Kill(2) = batbins.msk|x
|
||||
Kill(3) = bastscc.rep|x
|
||||
Kill(4) = batbcam.msk|x
|
||||
Kill(5) = batbpdb.msk|x
|
||||
Kill(6) = bastver.msk|x
|
||||
Kill(7) = batbcco.msk|x
|
||||
Kill(8) = batbesc.msk|x
|
||||
Kill(9) = batbdpn.msk|x
|
||||
Kill(10) = bastndo.msk|x
|
||||
Kill(11) = bastesc.msk|x
|
||||
Kill(12) = batbndo.msk|x
|
||||
Kill(0) = bastndo.msk|x
|
||||
Kill(1) = batblbu.msk|x
|
||||
Kill(2) = bastzon.msk|x
|
||||
Kill(3) = bastesc.msk|x
|
||||
Kill(4) = bastscc.msk|x
|
||||
Kill(5) = bastvet.msk|x
|
||||
Kill(6) = bastcve.msk|x
|
||||
Kill(7) = batbntb.msk|x
|
||||
Kill(8) = bastndo.rep|x
|
||||
Kill(9) = batbvet.msk|x
|
||||
Kill(10) = batbcve.msk|x
|
||||
Kill(11) = batbndo.msk|x
|
||||
Kill(12) = bastpor.msk|x
|
||||
Kill(13) = batbind.msk|x
|
||||
Kill(14) = bastmsp.msk|x
|
||||
Kill(15) = bastreg.rep|x
|
||||
Kill(14) = batbtit.msk|x
|
||||
Kill(15) = bastntb.rep|x
|
||||
Kill(16) = batbleg.msk|x
|
||||
Kill(17) = bastpor.msk|x
|
||||
Kill(18) = batbpor.msk|x
|
||||
Kill(19) = batbcfi.msk|x
|
||||
Kill(17) = bastcco.rep|x
|
||||
Kill(18) = bastmsp.rep|x
|
||||
Kill(19) = bastreg.rep|x
|
||||
Kill(20) = bastcco.msk|x
|
||||
Kill(21) = bastmsp.rep|x
|
||||
Kill(22) = batbtit.msk|x
|
||||
Kill(23) = batbcve.msk|x
|
||||
Kill(24) = batbivd.msk|x
|
||||
Kill(25) = batbscc.msk|x
|
||||
Kill(26) = bastcfi.rep|x
|
||||
Kill(27) = batbarb.msk|x
|
||||
Kill(28) = bastver.rep|x
|
||||
Kill(29) = bastleg.msk|x
|
||||
Kill(30) = bastzon.rep|x
|
||||
Kill(31) = bastleg.rep|x
|
||||
Kill(32) = bastcam.rep|x
|
||||
Kill(33) = batblia.msk|x
|
||||
Kill(34) = batbzon.msk|x
|
||||
Kill(35) = bastvet.rep|x
|
||||
Kill(21) = bastmsp.msk|x
|
||||
Kill(22) = bastnot.msk|x
|
||||
Kill(23) = batbcam.msk|x
|
||||
Kill(24) = bastpor.rep|x
|
||||
Kill(25) = batbpdb.msk|x
|
||||
Kill(26) = batbins.msk|x
|
||||
Kill(27) = bastscc.rep|x
|
||||
Kill(28) = bastvet.rep|x
|
||||
Kill(29) = bastpdb.msk|x
|
||||
Kill(30) = batbesc.msk|x
|
||||
Kill(31) = bastleg.msk|x
|
||||
Kill(32) = bastivd.msk|x
|
||||
Kill(33) = batbdpn.msk|x
|
||||
Kill(34) = bastdpn.rep|x
|
||||
Kill(35) = batbmsp.msk|x
|
||||
Kill(36) = bastdpn.msk|x
|
||||
Kill(37) = bastivd.msk|x
|
||||
Kill(38) = bastarb.rep|x
|
||||
Kill(39) = bastcam.msk|x
|
||||
Kill(40) = bastntb.msk|x
|
||||
Kill(41) = bastivd.rep|x
|
||||
Kill(42) = bastdpn.rep|x
|
||||
Kill(43) = bastpdb.msk|x
|
||||
Kill(44) = batbinl.msk|x
|
||||
Kill(45) = bastesc.rep|x
|
||||
Kill(37) = bastcve.rep|x
|
||||
Kill(38) = bastesc.rep|x
|
||||
Kill(39) = batbdel.msk|x
|
||||
Kill(40) = bastver.rep|x
|
||||
Kill(41) = bastcam.msk|x
|
||||
Kill(42) = batbreg.msk|x
|
||||
Kill(43) = bastivd.rep|x
|
||||
Kill(44) = batbnot.msk|x
|
||||
Kill(45) = bastntb.msk|x
|
||||
Kill(46) = bastreg.msk|x
|
||||
Kill(47) = batbreg.msk|x
|
||||
Kill(48) = bastzon.msk|x
|
||||
Kill(49) = bastarb.msk|x
|
||||
Kill(50) = batblia.msk|x
|
||||
Kill(51) = cgtbcon.msk|x
|
||||
Kill(52) = batbnot.msk|x
|
||||
Kill(53) = batbdel.msk|x
|
||||
Kill(54) = batbvet.msk|x
|
||||
Kill(55) = batbtra.msk|x
|
||||
Kill(47) = batbzon.msk|x
|
||||
Kill(48) = batbtra.msk|x
|
||||
Kill(49) = bastcfi.msk|x
|
||||
Kill(50) = bastarb.rep|x
|
||||
Kill(51) = bastarb.msk|x
|
||||
Kill(52) = bastpdb.rep|x
|
||||
Kill(53) = cgtbcon.msk|x
|
||||
Kill(54) = batbver.msk|x
|
||||
Kill(55) = batblia.msk|x
|
||||
Kill(56) = bastnot.rep|x
|
||||
Kill(57) = bastpdb.rep|x
|
||||
Kill(58) = bastscc.msk|x
|
||||
Kill(59) = bastcco.rep|x
|
||||
Kill(60) = batbntb.msk|x
|
||||
Kill(61) = bastvet.msk|x
|
||||
Kill(62) = batbver.msk|x
|
||||
Kill(63) = bastcfi.msk|x
|
||||
Kill(64) = batblbu.msk|x
|
||||
Kill(65) = bastntb.rep|x
|
||||
Kill(66) = bastcve.msk|x
|
||||
Kill(67) = bastndo.rep|x
|
||||
Kill(68) = bastnot.msk|x
|
||||
Kill(69) = bastpor.rep|x
|
||||
Kill(57) = batbinl.msk|x
|
||||
Kill(58) = bastver.msk|x
|
||||
Kill(59) = batbcco.msk|x
|
||||
Kill(60) = bastcam.rep|x
|
||||
Kill(61) = bastcfi.rep|x
|
||||
Kill(62) = batbscc.msk|x
|
||||
Kill(63) = batbcfi.msk|x
|
||||
Kill(64) = bastzon.rep|x
|
||||
Kill(65) = batbivd.msk|x
|
||||
Kill(66) = batbpor.msk|x
|
||||
Kill(67) = bastleg.rep|x
|
||||
Kill(68) = batblia.msk|x
|
||||
Kill(69) = batbarb.msk|x
|
||||
|
||||
[cg]
|
||||
Data = 25-06-2019
|
||||
Data = 26-06-2019
|
||||
Descrizione = Contabilita' Generale
|
||||
Dischi = 1
|
||||
Moduli = ba
|
||||
|
Binary file not shown.
@ -1,3 +1,10 @@
|
||||
fp0.exe
|
||||
fp0400a.msk
|
||||
fp0500a.msk
|
||||
|
||||
Aggiunta esportazione percentuale e natura iva per f1
|
||||
Corretto calcolo ritenute fiscali se piu di una
|
||||
Aggiunta colonna ritenute fiscali nel monitor passive
|
||||
Sistemata maschera fp0500 per lo sheet "altri dati gestionali"
|
||||
Corretta esportazione altri dati gestionali
|
||||
Corretto controllo tipo documento con tipo causale (TD01 -> FA, TD04 -> NC)
|
||||
|
@ -3,11 +3,13 @@ Demo=0
|
||||
|
||||
[fp1]
|
||||
File(0) = fp0.exe|X
|
||||
Patch = 0844
|
||||
File(4) = fp0400a.msk|X
|
||||
File(5) = fp0500a.msk|X
|
||||
Patch = 844
|
||||
Versione = 21511200
|
||||
|
||||
[fp]
|
||||
Data = 25-06-2019
|
||||
Data = 26-06-2019
|
||||
Descrizione = Fattura Elettronica
|
||||
Dischi = 1
|
||||
Moduli = cg,ve
|
||||
|
Binary file not shown.
@ -28,7 +28,9 @@ enum
|
||||
pro_err = -86552,
|
||||
pro_noerr = 1,
|
||||
pro_notsaved = 0,
|
||||
pro_nofp = -1
|
||||
pro_nofp = -1,
|
||||
pro_dataric_err = -2,
|
||||
pro_numreg_err = -3
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -1449,7 +1451,9 @@ 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" <<
|
||||
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.");
|
||||
}
|
||||
|
||||
@ -1463,10 +1467,43 @@ bool TPrimanota_application::has_tot_doc(TToken_string& fppro_keys)
|
||||
return tot.full() && real(tot) != 0;
|
||||
}
|
||||
|
||||
int TPrimanota_application::controlli_f1(const TMask& m)
|
||||
{
|
||||
if (m.find_by_id(F_PROKEY) != NULL && m.get(F_PROKEY).full() && has_f1_db((TMask*)&m) && fp_db().sq_is_connect() && check_causale(m.get(F_CODCAUS)))
|
||||
{
|
||||
TToken_string keys(m.get(F_PROKEY), ';');
|
||||
const TDate dataoraric = fppro_db().set_keys(keys).get_dataorarioric();
|
||||
// Devo controllare che la data operazione sia maggiore della data ric
|
||||
const TDate data_operazione(m.get(F_DATAREG));
|
||||
if (data_operazione < dataoraric)
|
||||
return pro_dataric_err;
|
||||
const int numreg = fppro_db().set_keys(keys).get_numregcont();
|
||||
if (numreg != 0)
|
||||
{
|
||||
const TDate data_documento(m.get(F_DATADOC));
|
||||
TString msg; msg << "Attenzione il documento " << data_documento.year() << " / " << m.get(F_NUMDOCEXT) <<
|
||||
" appena registrato e' gia' stato inserito con la registrazione numero " << numreg <<
|
||||
"\nSe si vuole registrare questo documento in ingresso, scollegarlo prima dalla precedente registrazione.";
|
||||
error_box(msg);
|
||||
return pro_numreg_err;
|
||||
}
|
||||
}
|
||||
return pro_noerr;
|
||||
}
|
||||
|
||||
int TPrimanota_application::write(const TMask& m)
|
||||
{
|
||||
static int lasterr = NOERR;
|
||||
|
||||
switch (controlli_f1(m)) // Solo con F1
|
||||
{
|
||||
case pro_dataric_err:
|
||||
error_box("Attenzione non è possibile registrare una fattura\ncon data operazione minore della data di ricezione.");
|
||||
case pro_numreg_err:
|
||||
return _isnowarning;
|
||||
default: case pro_noerr: break;
|
||||
}
|
||||
|
||||
const long numreg = m.get_long(F_NUMREG);
|
||||
if (numreg > _lastreg) _lastreg = numreg; // Aggiorna ultima registrazione libera
|
||||
|
||||
@ -1569,10 +1606,19 @@ int TPrimanota_application::write(const TMask& m)
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
int TPrimanota_application::rewrite(const TMask& m)
|
||||
{
|
||||
mask2rel(m);
|
||||
|
||||
switch (controlli_f1(m)) // Solo con F1
|
||||
{
|
||||
case pro_dataric_err:
|
||||
error_box("Attenzione non è possibile registrare una fattura\ncon data operazione minore della data di ricezione.");
|
||||
case pro_numreg_err:
|
||||
return _isnowarning;
|
||||
default: case pro_noerr: break;
|
||||
}
|
||||
|
||||
const int err = _rel->rewrite(true);
|
||||
if (err == NOERR)
|
||||
{
|
||||
@ -2414,11 +2460,6 @@ int TPrimanota_application::save_fppro()
|
||||
// Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP
|
||||
if (!has_f1_db(&msk))
|
||||
return pro_nofp;
|
||||
if (!fp_db().sq_is_connect())
|
||||
{
|
||||
message_box("Attenzione connesione al database non riuscita.\nImpossibile collegarsi ai documenti in entrata.");
|
||||
return pro_nofp;
|
||||
}
|
||||
|
||||
// Anzitutto guardo la modalita' in cui sono
|
||||
// Se in modalita' inserimento continuo normalmente o in mod. modifica
|
||||
@ -2448,8 +2489,9 @@ int TPrimanota_application::save_fppro()
|
||||
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& tot_doc = msk.get(F_TOTALE);
|
||||
real tot_doc = msk.get_real(F_TOTALE);
|
||||
const real ritenute = msk.get_real(F_RITFIS);
|
||||
tot_doc += ritenute;
|
||||
TToken_string fppro_keys(msk.get(F_PROKEY), ';');
|
||||
const TString& keyprginvio = fppro_keys.get();
|
||||
const TString& keyheaderfatt = fppro_keys.get();
|
||||
@ -2457,35 +2499,25 @@ int TPrimanota_application::save_fppro()
|
||||
|
||||
// Controllo che i dati corrispondano a quelli nella fattura in ingresso
|
||||
TString where_str;
|
||||
where_str << " (PZ_DATA = \'" << data_documento.date2ansi() << "\'";
|
||||
if (has_tot_doc(fppro_keys))
|
||||
where_str << " (PZ_DATA = \'" << data_documento.date2ansi() << "\' AND PQ_IMPTOTDOC = \'" << tot_doc << "\' AND PZ_NUMERO = \'" << (!numero_docext.empty() ? numero_docext : numero_doc) << "\') ";
|
||||
else
|
||||
where_str << " (PZ_DATA = \'" << data_documento.date2ansi() << "\' AND PZ_NUMERO = \'" << (!numero_docext.empty() ? numero_docext : numero_doc) << "\') ";
|
||||
TString& query = TPro_msk::query_fppro(keyprginvio, keyheaderfatt, keybodyfatt, where_str);
|
||||
where_str << " AND PQ_IMPTOTDOC = \'" << tot_doc << "\'";
|
||||
if(!numero_docext.empty())
|
||||
where_str << " AND PZ_NUMERO = \'" << numero_docext << "\'";
|
||||
where_str << ") ";
|
||||
TString& query = TPro_msk::query_string();
|
||||
query << "WHERE PZ_KEYPRGINVIO = '" << keyprginvio << "' AND PZ_KEYHEADERFATT = '" << keyheaderfatt << "' AND PZ_KEYBODYFATT = '" << keybodyfatt << "'";
|
||||
query << " AND " << where_str;
|
||||
|
||||
fp_db().sq_set_exec(query);
|
||||
if(has_f1_db(&msk) && fp_db().sq_items() != 1)
|
||||
{
|
||||
warning_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" <<
|
||||
"Per consentire una corretta archiviazione sostitutiva si consiglia di provvedere al controllo della registrazione e di procedere\n" <<
|
||||
"all'inserimento dei dati riportati sulla fattura per la corretta identificazione del documento in entrata.\n" <<
|
||||
"Se possibile utilizzare il 'Riporta documento' o la contabilizzazione dal monitor delle fatture passive per evitare errori.\n"
|
||||
"In caso di documento escluso dalla fatturazione elettronica ignorate questo messaggio.");
|
||||
return pro_notsaved;
|
||||
}
|
||||
const int numreg = fp_db().sq_get_int("PZ_NUMREGCONT");
|
||||
if (numreg != 0)
|
||||
{
|
||||
TString msg; msg << "Attenzione il documento " << data_documento.year() << " / " << numero_doc <<
|
||||
" appena registrato e' gia' stato inserito con la registrazione numero " << numreg <<
|
||||
"\nControllare e nel caso provvedere a correggere l'associazione del movimento ai documenti in ingresso.";
|
||||
warning_box(msg);
|
||||
}
|
||||
|
||||
// Devo controllare che la data operazione sia maggiore della data ric
|
||||
const TDate dataoraric = fp_db().sq_get_date("P1_DATAORARIC");
|
||||
if(data_operazione < dataoraric)
|
||||
{
|
||||
error_box("Attenzione non è possibile registrare una fattura\ncon data operazione minore della data di ricezione.");
|
||||
save_dbmov(true);
|
||||
return pro_notsaved;
|
||||
}
|
||||
|
||||
@ -2494,13 +2526,17 @@ int TPrimanota_application::save_fppro()
|
||||
|
||||
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 << "\';";
|
||||
"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);
|
||||
const bool saved = fp_db().sq_commit();
|
||||
if (!saved)
|
||||
{
|
||||
error_box("Attenzione non è stato possibile registrare la fattura nel database.");
|
||||
save_dbmov(true);
|
||||
}
|
||||
return saved? pro_noerr : pro_notsaved;
|
||||
}
|
||||
|
||||
|
@ -4011,22 +4011,24 @@ bool TPro_msk::load_fppro_mask(TMask* msk, KEY k)
|
||||
const bool show_all = msk->get_bool(F_SHOWALL);
|
||||
if (numreg != "0" && !show_all)
|
||||
continue;
|
||||
|
||||
TToken_string& row = sf.row(-1);
|
||||
TToken_string keys(fp_db().sq_get("PZ_KEYPRGINVIO"), ';');
|
||||
keys.add(fp_db().sq_get("PZ_KEYHEADERFATT")); keys.add(fp_db().sq_get("PZ_KEYBODYFATT"));
|
||||
|
||||
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"));
|
||||
row.add(fp_db().sq_get("P7_IMPORTORIT"));
|
||||
row.add(fppro_db().set_keys(keys).get_ritenute());
|
||||
row.add(fp_db().sq_get("PZ_NUMERO"));
|
||||
row.add(fp_db().sq_get("P2_FISCIVAPAESE"));
|
||||
row.add(fp_db().sq_get("P2_FISCIVACOD"));
|
||||
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);
|
||||
row.add(keys);
|
||||
}
|
||||
sf.force_update();
|
||||
sf.show();
|
||||
@ -4200,12 +4202,6 @@ void TPro_msk::add_scad(const TDate& date, const real& importo)
|
||||
_scadenze.insert(_scadenze.end(), { date, importo });
|
||||
}
|
||||
|
||||
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);
|
||||
@ -4240,7 +4236,7 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva
|
||||
}
|
||||
|
||||
static TString query;
|
||||
query.cut(0) << "SELECT PZ_CLIFOR, PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, P7_TIPODOC, PQ_IMPTOTDOC, P7_IMPORTORIT, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, PZ_NUMPROT, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" <<
|
||||
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" <<
|
||||
@ -4276,6 +4272,18 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva
|
||||
return query;
|
||||
}
|
||||
|
||||
TString& TPro_msk::query_string()
|
||||
{
|
||||
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 \nJOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" <<
|
||||
"JOIN PAA0100F \nON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_KEYBODYFATT\n" <<
|
||||
"JOIN PAA2700F \nON P2_KEYPRGINVIO = PQ_KEYPRGINVIO AND P2_KEYHEADERFATT = PQ_KEYHEADERFATT AND P2_KEYBODYFATT = PQ_KEYBODYFATT\n" <<
|
||||
"JOIN PAA0700F \nON P7_KEYPRGINVIO = PQ_KEYPRGINVIO AND P7_KEYHEADERFATT = PQ_KEYHEADERFATT AND P7_KEYBODYFATT = PQ_KEYBODYFATT\n";
|
||||
return query;
|
||||
}
|
||||
|
||||
void TPro_msk::abilita_piva(TMask* msk)
|
||||
{
|
||||
if (msk->get_bool(F_ENABSEARCH))
|
||||
|
@ -227,6 +227,8 @@ protected: // TApplication
|
||||
// setta variabili prima del controllo has_f1_db
|
||||
void set_has_f1_db(TMask* m);
|
||||
bool has_f1_db(TMask* m);
|
||||
// Controlli prima di write e rewrite
|
||||
int controlli_f1(const TMask& m);
|
||||
|
||||
virtual bool save(bool check_dirty);
|
||||
|
||||
@ -459,11 +461,10 @@ public:
|
||||
void add_scad(const TDate& date, const real& importo);
|
||||
bool should_bring_back() const { return _riporta; }
|
||||
|
||||
|
||||
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 TString& query_string();
|
||||
static void abilita_piva(TMask* msk);
|
||||
//bool is_fp();
|
||||
// Carica documenti FPPRO sulla maschera
|
||||
|
125
src/f1/f1lib.cpp
125
src/f1/f1lib.cpp
@ -5,10 +5,10 @@
|
||||
#include "cg2102.h"
|
||||
#include "execp.h"
|
||||
#include "cfven.h"
|
||||
#include "../fp/fp0400a.h"
|
||||
#include "reputils.h"
|
||||
#include "../fp/fplib.h"
|
||||
#include "causali.h"
|
||||
#include "clifo.h"
|
||||
#include "../fp/fplib.h"
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// TFppro
|
||||
@ -18,9 +18,7 @@ TFppro& fppro_db()
|
||||
{
|
||||
static TFppro* fppro = nullptr;
|
||||
if (fppro == nullptr)
|
||||
{
|
||||
fppro = new TFppro();
|
||||
}
|
||||
return *fppro;
|
||||
}
|
||||
|
||||
@ -37,14 +35,14 @@ bool TFppro::guess_the_doc(const TLocalisamfile& mov)
|
||||
"\tP7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" <<
|
||||
"JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" <<
|
||||
"JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n";
|
||||
fp_db().sq_set_exec(query);
|
||||
_db->sq_set_exec(query);
|
||||
|
||||
const keys_s keys = { fp_db().sq_get("KEYPRGINVIO"), fp_db().sq_get("KEYHEADERFATT"), fp_db().sq_get("KEYBODYFATT") };
|
||||
const TDate data = fp_db().sq_get_date("DATA");
|
||||
const TString numdoc = fp_db().sq_get("NUMDOC");
|
||||
const real imptotdoc(fp_db().sq_get("IMPTOTDOC"));
|
||||
const TString4 statopiva = fp_db().sq_get("STATOPIVA");
|
||||
const TString piva = fp_db().sq_get("PIVA");
|
||||
const keys_s keys = { _db->sq_get("KEYPRGINVIO"), _db->sq_get("KEYHEADERFATT"), _db->sq_get("KEYBODYFATT") };
|
||||
const TDate data = _db->sq_get_date("DATA");
|
||||
const TString numdoc = _db->sq_get("NUMDOC");
|
||||
const real imptotdoc(_db->sq_get("IMPTOTDOC"));
|
||||
const TString4 statopiva = _db->sq_get("STATOPIVA");
|
||||
const TString piva = _db->sq_get("PIVA");
|
||||
|
||||
// Prendo il fornitore del mov per controllare la p.iva
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
@ -78,10 +76,10 @@ int TFppro::get_numreg()
|
||||
if (!_is_set)
|
||||
{
|
||||
if (set_query())
|
||||
return fp_db().sq_get_int("PZ_NUMREGCONT");
|
||||
return _db->sq_get_int("PZ_NUMREGCONT");
|
||||
return -1;
|
||||
}
|
||||
return fp_db().sq_get_int("PZ_NUMREGCONT");
|
||||
return _db->sq_get_int("PZ_NUMREGCONT");
|
||||
}
|
||||
|
||||
int TFppro::get_numreg(TToken_string& keys)
|
||||
@ -95,31 +93,33 @@ TDate TFppro::get_datareg()
|
||||
if (!_is_set)
|
||||
{
|
||||
if (set_query())
|
||||
return fp_db().sq_get_date("PZ_DATAREGCONT");
|
||||
return _db->sq_get_date("PZ_DATAREGCONT");
|
||||
return TDate();
|
||||
}
|
||||
return fp_db().sq_get_date("PZ_DATAREGCONT");
|
||||
return _db->sq_get_date("PZ_DATAREGCONT");
|
||||
}
|
||||
|
||||
TDate TFppro::get_datareg(TToken_string& keys)
|
||||
{
|
||||
if (set_keys(keys))
|
||||
set_keys(keys);
|
||||
if (_is_set)
|
||||
return get_datareg();
|
||||
return TDate();
|
||||
}
|
||||
|
||||
real TFppro::get_ritenute() const
|
||||
{
|
||||
real imp = ZERO;
|
||||
TString query;
|
||||
query << "SELECT P7_IMPORTORIT AS IMPORTO FROM PAA0700F\n" <<
|
||||
"WHERE P7_KEYPRGINVIO = '" << _keys.prginvio << "' AND P7_KEYHEADERFATT = '" << _keys.headerfatt << "' AND P7_KEYBODYFATT = '" << _keys.bodyfatt << "'";
|
||||
fp_db().sq_set_exec(query);
|
||||
if(fp_db().sq_items() >= 1)
|
||||
return fp_db().sq_get_real("IMPORTO");
|
||||
return ZERO;
|
||||
_db->sq_set_exec(query, false);
|
||||
for(bool ok = _db->sq_next(); ok; ok = _db->sq_next())
|
||||
imp += _db->sq_get_real("IMPORTO");
|
||||
return imp;
|
||||
}
|
||||
|
||||
bool TFppro::set_keys(TToken_string& keys)
|
||||
TFppro& TFppro::set_keys(TToken_string& keys)
|
||||
{
|
||||
if(keys.items() == 3)
|
||||
{
|
||||
@ -127,30 +127,49 @@ bool TFppro::set_keys(TToken_string& keys)
|
||||
_keys.headerfatt = keys.get(1);
|
||||
_keys.bodyfatt = keys.get(2);
|
||||
_is_set = false;
|
||||
return _keys_setted = true;
|
||||
_keys_setted = true;
|
||||
}
|
||||
return _keys_setted = false;
|
||||
_keys_setted = false;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool TFppro::set_keys(keys_s keys)
|
||||
TFppro& TFppro::set_keys(keys_s keys)
|
||||
{
|
||||
if(*keys.prginvio != 0 && *keys.headerfatt != 0 && *keys.bodyfatt != 0)
|
||||
{
|
||||
_keys = keys;
|
||||
_is_set = false;
|
||||
return _keys_setted = true;
|
||||
_keys_setted = true;
|
||||
}
|
||||
_is_set = false;
|
||||
return _keys_setted = false;
|
||||
_keys_setted = false;
|
||||
return *this;
|
||||
}
|
||||
|
||||
TDate TFppro::get_data_first_doc()
|
||||
TDate TFppro::get_data_first_doc() const
|
||||
{
|
||||
TString query;
|
||||
query << "SELECT min(a.DATA) AS DATA \nFROM( \n\tSELECT P7_DATA as DATA \n" <<
|
||||
"\tFROM PAA0700F \n\tUNION \n\tSELECT P7_DATA as DATA \n\tFROM PAF0700F \n) a";
|
||||
fp_db().sq_set_exec(query);
|
||||
return fp_db().sq_get_date("DATA");
|
||||
_db->sq_set_exec(query);
|
||||
return _db->sq_get_date("DATA");
|
||||
}
|
||||
|
||||
TDate TFppro::get_dataorarioric() const
|
||||
{
|
||||
TString query;
|
||||
query << "SELECT P1_DATAORARIC \nFROM PAA0100F \n" <<
|
||||
"WHERE P1_KEYPRGINVIO = '" << _keys.prginvio << "' AND P1_KEYHEADERFATT = '" << _keys.headerfatt << "' AND P1_KEYBODYFATT = '" << _keys.bodyfatt << "'";
|
||||
_db->sq_set_exec(query);
|
||||
return _db->sq_get_date("P1_DATAORARIC");
|
||||
}
|
||||
|
||||
int TFppro::get_numregcont() const
|
||||
{
|
||||
TString query;
|
||||
query << "SELECT PZ_NUMREGCONT FROM FPPRO00F\n" << where_str();
|
||||
_db->sq_set_exec(query);
|
||||
return _db->sq_get_int("PZ_NUMREGCONT");
|
||||
}
|
||||
|
||||
bool TFppro::set_query()
|
||||
@ -158,18 +177,26 @@ bool TFppro::set_query()
|
||||
if (_keys_setted)
|
||||
{
|
||||
_fppro_query.cut(0) << "SELECT * FROM FPPRO00F " << where_str();
|
||||
return _is_set = fp_db().sq_set_exec(_fppro_query);
|
||||
return _is_set = _db->sq_set_exec(_fppro_query);
|
||||
}
|
||||
return _is_set = false;
|
||||
}
|
||||
|
||||
const char* TFppro::where_str() const
|
||||
{
|
||||
TString str;
|
||||
str << " WHERE PZ_KEYPRGINVIO = '" << _keys.prginvio << "' AND PZ_KEYHEADERFATT = '" << _keys.headerfatt << "' AND PZ_KEYBODYFATT = '" << _keys.bodyfatt << "'";
|
||||
static TString str;
|
||||
str.cut(0) << " WHERE PZ_KEYPRGINVIO = '" << _keys.prginvio << "' AND PZ_KEYHEADERFATT = '" << _keys.headerfatt << "' AND PZ_KEYBODYFATT = '" << _keys.bodyfatt << "'";
|
||||
return str;
|
||||
}
|
||||
|
||||
TFppro::TFppro() : _keys({ "\0", "\0", "\0" }), _guess(false), _keys_setted(false), _is_set(false)
|
||||
{
|
||||
_db = new SSimple_query();
|
||||
const bool ok = set_connection(*_db);
|
||||
// Non utilizzo l'autocommit, viene gestito manualmente
|
||||
if (ok) _db->sq_set_autocommit(false);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// TProtocollo
|
||||
//////////////////////////////////////////////////////////
|
||||
@ -366,4 +393,38 @@ bool TF1_log::show_log()
|
||||
_log = NULL;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TFppro::set_connection(SSimple_query& s)
|
||||
{
|
||||
bool ok = true;
|
||||
#ifdef DBG
|
||||
TString ip = fp_settings().get_db_indirizzo();
|
||||
if (ip.upper() != "TESTCAMPO2012")
|
||||
{
|
||||
if (s.sq_connect("TESTCAMPO2012@campo_fp",
|
||||
"fp",
|
||||
"fp",
|
||||
TSDB_MSSQL) != NOERR)
|
||||
{
|
||||
warning_box("Impossibile connettersi al DB esterno");
|
||||
ok = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#endif
|
||||
if (s.sq_connect(
|
||||
fp_settings().get_db_str_con(),
|
||||
fp_settings().get_db_user(),
|
||||
fp_settings().get_db_password(),
|
||||
TSDB_MSSQL) != NOERR)
|
||||
{
|
||||
warning_box("Impossibile connettersi al DB esterno");
|
||||
ok = false;
|
||||
}
|
||||
#ifdef DBG
|
||||
}
|
||||
#endif
|
||||
return ok;
|
||||
}
|
@ -2,9 +2,8 @@
|
||||
#define _F1LIBH_
|
||||
|
||||
#include "strings.h"
|
||||
#include "config.h"
|
||||
#include "report.h"
|
||||
#include "reputils.h"
|
||||
#include "tsdb.h"
|
||||
|
||||
#define FILE_CONFIG CONFIG_DITTA
|
||||
#define FILE_SECTION "f1"
|
||||
@ -34,6 +33,7 @@ class TFppro : public TObject
|
||||
const char* bodyfatt;
|
||||
};
|
||||
private:
|
||||
SSimple_query* _db;
|
||||
keys_s _keys;
|
||||
bool _guess;
|
||||
bool _keys_setted;
|
||||
@ -46,20 +46,26 @@ public:
|
||||
bool check_reg(TToken_string& keys, int numreg);
|
||||
// Se un mov. registrato non e' collegato all'FPPRO cerco di capire qual'e`
|
||||
bool guess_the_doc(const TLocalisamfile& mov);
|
||||
// Getters
|
||||
void get_keys_fppro();
|
||||
int get_numreg();
|
||||
int get_numreg(TToken_string& keys);
|
||||
TDate get_datareg();
|
||||
TDate get_datareg(TToken_string& keys);
|
||||
real get_ritenute() const;
|
||||
bool set_query();
|
||||
bool set_keys(TToken_string& keys);
|
||||
bool set_keys(keys_s keys);
|
||||
TDate get_data_first_doc() const;
|
||||
TDate get_dataorarioric() const;
|
||||
int get_numregcont() const;
|
||||
// Setters
|
||||
bool set_query();
|
||||
TFppro& set_keys(TToken_string& keys);
|
||||
TFppro& set_keys(keys_s keys);
|
||||
|
||||
static TDate get_data_first_doc();
|
||||
|
||||
TFppro() : _keys({"\0", "\0", "\0" }), _guess(false), _keys_setted(false), _is_set(false) { }
|
||||
TFppro::TFppro(TToken_string& keys) : TFppro() { set_keys(keys); }
|
||||
static bool set_connection(SSimple_query& s);
|
||||
|
||||
TFppro();
|
||||
TFppro(TToken_string& keys) : TFppro() { set_keys(keys); }
|
||||
};
|
||||
|
||||
class TProtocollo : TObject
|
||||
|
@ -247,6 +247,8 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
|
||||
const TDate& dataregcont = fp_db().sq_get_date("DATAREGCONT");
|
||||
const TString& filter_elab = get_fattsel();
|
||||
const bool is_contab = dataregcont != TDate("20010101");
|
||||
TToken_string keys("", ';');
|
||||
keys.add(fp_db().sq_get("KEYPROG")); keys.add(fp_db().sq_get("KEYHEAD")); keys.add(fp_db().sq_get("KEYFATT"));
|
||||
|
||||
clifo.zero();
|
||||
clifo.put(CLI_TIPOCF, 'F');
|
||||
@ -271,6 +273,7 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
|
||||
row.add(fp_db().sq_get_date("DATA_RIC"));
|
||||
row.add(fp_db().sq_get_date("DATA_DOC"));
|
||||
row.add(fp_db().sq_get("TOT_DOC"));
|
||||
row.add(fppro_db().set_keys(keys).get_ritenute());
|
||||
|
||||
// Decido se mettere o meno il flag
|
||||
if (forn_code == 0)
|
||||
@ -301,12 +304,10 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
|
||||
row.add(paa_codpaese, sf.cid2index(S_STATOPAIV));
|
||||
row.add(paa_piva);
|
||||
row.add(paa_codfisc);
|
||||
|
||||
row.add(fp_db().sq_get("ATTACHMENT") != "0" ? "" : "X");
|
||||
row.add(denom);
|
||||
row.add(TProtocollo(fp_db().sq_get_int("ANNO_PROT"), fp_db().sq_get("TIPO_PROT"), fp_db().sq_get("NUM_PROT")));
|
||||
TString key_prot; key_prot << fp_db().sq_get("KEYPROG") << ";" << fp_db().sq_get("KEYHEAD") << ";" << fp_db().sq_get("KEYFATT");
|
||||
row.add(key_prot);
|
||||
row.add(keys);
|
||||
}
|
||||
|
||||
}
|
||||
@ -566,10 +567,10 @@ int TPassive_mask::prepara_contab() const
|
||||
TString codcaus(get_codcaus(row->get(2), row->get(10)));
|
||||
|
||||
TString tipodoc(row->get(sf.cid2index(S_TIPODOCSDI)));
|
||||
if(tipodoc == "TD01" && !check_causale(codcaus, "FA"))
|
||||
if(tipodoc == "TD01" && !check_causale(codcaus, "FA", true))
|
||||
if(!yesno_box("Attenzione, per un documento di tipo TD01 e' stata selezionata \nuna causale diversa da Fattura d'Acquisto.\nProcedere lo stesso con l'esportazione?"))
|
||||
continue;
|
||||
if(tipodoc == "TD04" && !check_causale(codcaus, "NC"))
|
||||
if(tipodoc == "TD04" && !check_causale(codcaus, "NC", true))
|
||||
if(!yesno_box("Attenzione, per un documento di tipo TD04 e' stata selezionata \nuna causale diversa da Nota Credito di Acquisto.\nProcedere lo stesso con l'esportazione?"))
|
||||
continue;
|
||||
n_sel++;
|
||||
@ -599,7 +600,7 @@ int TPassive_mask::prepara_contab() const
|
||||
real imp = calcola_importo(riva);
|
||||
totdoc.cut(0) << imp;
|
||||
}
|
||||
real rit = TFppro(keys).get_ritenute();
|
||||
real rit = fppro_db().set_keys(keys).get_ritenute();
|
||||
if(rit != ZERO)
|
||||
{
|
||||
contab_ini.set("TOTDOC", (abs(real(totdoc)) - rit).string());
|
||||
|
@ -30,18 +30,19 @@
|
||||
#define S_DATARIC 105
|
||||
#define S_DATADOC 106
|
||||
#define S_TOTDOC 107
|
||||
#define S_FPPRO 108
|
||||
#define S_NUMREGCONT 109
|
||||
#define S_DATAREGCONT 110
|
||||
#define S_FORNITORE 111
|
||||
#define S_RAGSOC 112
|
||||
#define S_STATOPAIV 113
|
||||
#define S_PARIVA 114
|
||||
#define S_CODFISC 115
|
||||
#define S_ATTACH 116
|
||||
#define S_RAGXML 117
|
||||
#define S_NPROT 118
|
||||
#define S_PROKEY 119
|
||||
#define S_TOTRIT 108
|
||||
#define S_FPPRO 109
|
||||
#define S_NUMREGCONT 110
|
||||
#define S_DATAREGCONT 111
|
||||
#define S_FORNITORE 112
|
||||
#define S_RAGSOC 113
|
||||
#define S_STATOPAIV 114
|
||||
#define S_PARIVA 115
|
||||
#define S_CODFISC 116
|
||||
#define S_ATTACH 117
|
||||
#define S_RAGXML 118
|
||||
#define S_NPROT 119
|
||||
#define S_PROKEY 120
|
||||
|
||||
|
||||
#define F_ERR 301
|
||||
|
@ -184,23 +184,24 @@ BEGIN
|
||||
PROMPT 0 4 ""
|
||||
ITEM ""
|
||||
ITEM "Anno"
|
||||
ITEM "Tipo Doc.\nSDI@6"
|
||||
ITEM "Numero\nDocumento@18"
|
||||
ITEM "Tipo Doc.\nSDI@5"
|
||||
ITEM "Numero\nDocumento@14"
|
||||
ITEM "Data\nRicezione@8"
|
||||
ITEM "Data\nDoc.@8"
|
||||
ITEM "Totale\nDocumento@12"
|
||||
ITEM "Fornitore\nassociato@7"
|
||||
ITEM "Num. Registrazione\ncontabile@12"
|
||||
ITEM "Data Registrazione\ncontabile@12"
|
||||
ITEM "Fornitore@7"
|
||||
ITEM "Ragione Sociale@50"
|
||||
ITEM "Totale\nDocumento@7"
|
||||
ITEM "Totale\nritenute@6"
|
||||
ITEM "Fornitore\nassociato@6"
|
||||
ITEM "Num. Regis.\ncontabile@8"
|
||||
ITEM "Data Regis.\ncontabile@8"
|
||||
ITEM "Fornitore@5"
|
||||
ITEM "Ragione Sociale@40"
|
||||
ITEM "Stato\nP.IVA@4"
|
||||
ITEM "Partita IVA@10"
|
||||
ITEM "Cod. Fiscale@16"
|
||||
ITEM "Allegati@7"
|
||||
ITEM "Ragione Sociale (XML)@50"
|
||||
ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@22"
|
||||
ITEM "Chiave Prot.@80"
|
||||
ITEM "Cod. Fiscale@12"
|
||||
ITEM "Allegati@6"
|
||||
ITEM "Ragione Sociale (XML)@40"
|
||||
ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@20"
|
||||
ITEM "Chiave Prot.@40"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
@ -311,6 +312,12 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER S_TOTRIT 10 2
|
||||
BEGIN
|
||||
PROMPT 1 2 "Totale Ritenute"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN S_FPPRO
|
||||
BEGIN
|
||||
PROMPT 15 2 "Salvato in FP-PRO"
|
||||
|
Loading…
x
Reference in New Issue
Block a user