Patch level : 12.0 846

Files correlati     : cg2.exe cg2FPPRO.msk
Commento            :
- Sistemate larghezze colonne maschera fppro
- Sistemato ordinamento fatture sdi
- Corretti problemi dovuti al caricamento delle righe di scad e delle ritenute: non faceva i calcoli automatici e dava errore in salvataggio
This commit is contained in:
Simone Palacino 2019-06-27 16:43:17 +02:00
parent 2be681a379
commit 6a67a022ce
4 changed files with 71 additions and 29 deletions

View File

@ -1483,11 +1483,12 @@ int TPrimanota_application::controlli_f1(const TMask& m)
const TDate data_documento(m.get(F_DATADOC)); const TDate data_documento(m.get(F_DATADOC));
TString msg; msg << "Attenzione il documento " << data_documento.year() << " / " << m.get(F_NUMDOCEXT) << TString msg; msg << "Attenzione il documento " << data_documento.year() << " / " << m.get(F_NUMDOCEXT) <<
" appena registrato e' gia' stato inserito con la registrazione numero " << numreg << " appena registrato e' gia' stato inserito con la registrazione numero " << numreg <<
"\nSe si vuole registrare questo documento in ingresso, scollegarlo prima dalla precedente registrazione."; "\nSe si vuole registrare questo documento elettronico, scollegarlo prima dalla precedente registrazione.";
error_box(msg); error_box(msg);
return pro_numreg_err; return pro_numreg_err;
} }
} }
//app().curr_mask().set(FS_RECALC, "");
return pro_noerr; return pro_noerr;
} }
@ -2321,6 +2322,7 @@ void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query)
//msk.set(F_TOTALE, calcola_imp()); //msk.set(F_TOTALE, calcola_imp());
msk.set(F_COLFPPRO, "X"); msk.set(F_COLFPPRO, "X");
msk.set(FS_RECALC, ""); msk.set(FS_RECALC, "");
set_scad_f1(msk);
} }
if (_f1_liq && msk.find_by_id(F_DIFFERITA) != NULL) if (_f1_liq && msk.find_by_id(F_DIFFERITA) != NULL)
{ {
@ -2331,6 +2333,30 @@ void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query)
} }
} }
void TPrimanota_application::set_scad_f1(TMask& m)
{
const TString& cp = m.get(F_CODPAG);
const TString& dt = m.get(F_DATADOC);
set_pagamento(cp, dt);
set_totale_pagamento(false);
TPagamento& pag = pagamento();
if (m.field(FS_RECALC).enabled())
{
m.set(FS_RDIFFER, "1");
m.set(FS_NAMEPAG, pag.name());
m.set(FS_TIPOPR, pag.desc_tpr());
m.set(FS_MCOMM, pag.mese_commerciale() ? "X" : "");
m.set(FS_RECALC, "");
m.set(FS_NRATE, pag.n_rate());
}
pag.set_rate_auto();
TSheet_field& ps = m.sfield(FS_RATESHEET);
pag.set_sheet(ps); // prepara lo sheet
set_banche(m);
_pag_rows = ps.rows_array(); // copia sheet
}
bool TPrimanota_application::save(bool check_dirty) bool TPrimanota_application::save(bool check_dirty)
{ {
if (_swap_mask == true) if (_swap_mask == true)

View File

@ -1760,7 +1760,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
real pimponibile(pag.imponibile(inv)); real pimponibile(pag.imponibile(inv));
pimponibile.round(pag.round(inv)); pimponibile.round(pag.round(inv));
if (pimposta != imposta || pimponibile != imponibile) if ((pimposta != imposta || pimponibile != imponibile) && !a.has_f1_db(&m))
a.set_scadenze(m); // Ricalcola rate a.set_scadenze(m); // Ricalcola rate
} }
} }
@ -3847,7 +3847,7 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key)
return true; return true;
} }
void TPrimanota_application::set_righe_iva_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk) void TPrimanota_application::write_righe_iva_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
{ {
TSheet_field& sf = cg_msk.sfield(F_SHEETIVA); TSheet_field& sf = cg_msk.sfield(F_SHEETIVA);
const vector<TPro_msk::riga_iva_s>& righe = msk->get_righeiva(); const vector<TPro_msk::riga_iva_s>& righe = msk->get_righeiva();
@ -3867,22 +3867,28 @@ void TPrimanota_application::set_righe_iva_f1(TMask& cg_msk, const shared_ptr<TP
} }
} }
} }
bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
bool TPrimanota_application::set_scadenze_f1(const TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
{ {
TSheet_field& sf = cg_msk.sfield(FS_RATESHEET); TSheet_field& sf = cg_msk.sfield(FS_RATESHEET);
int items = sf.items();
const vector<TPro_msk::scadenza_s>& righe = msk->get_scadenze(); const vector<TPro_msk::scadenza_s>& righe = msk->get_scadenze();
int i = 0; int i = 0;
for (auto it = righe.begin(); it != righe.end(); ++it, ++i) for (auto it = righe.begin(); it != righe.end(); ++it, ++i)
{ {
TToken_string& row = sf.row(i); TToken_string& row = app().pags().row(i);
if(i >= items)
pag_notify(sf, i, K_CTRL+K_INS);
pag_notify(sf, i, K_SPACE);
row.add(it->data, cid2index(101)); row.add(it->data, cid2index(101));
row.add(it->importo, cid2index(102)); row.add(it->importo, cid2index(102));
pag_notify(sf, i, K_ENTER);
} }
return !righe.empty(); return !righe.empty();
} }
void TPrimanota_application::set_clifo(TMask& cg_msk, const shared_ptr<TPro_msk>& msk) void TPrimanota_application::write_clifo(TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
{ {
TLocalisamfile clifo(LF_CLIFO); TLocalisamfile clifo(LF_CLIFO);
clifo.setkey(5); clifo.setkey(5);
@ -3913,6 +3919,7 @@ void TPrimanota_application::set_totale(TMask& cg_msk, const shared_ptr<TPro_msk
{ {
totale -= rit; totale -= rit;
cg_msk.set(F_RITFIS, rit); cg_msk.set(F_RITFIS, rit);
app().add_cgs_ritenute('F');
} }
cg_msk.set(F_TOTALE, totale); cg_msk.set(F_TOTALE, totale);
} }
@ -3923,11 +3930,12 @@ void TPrimanota_application::riporta_dati_f1(TMask& cg_msk, const shared_ptr<TPr
cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7)); cg_msk.set(F_NUMDOC, msk->get_numdoc().right(7));
cg_msk.set(F_DATADOC, msk->get_datadoc()); cg_msk.set(F_DATADOC, msk->get_datadoc());
if (!cg_msk.get(F_CODCLIFOR).full() && msk->get_numdoc().full()) if (!cg_msk.get(F_CODCLIFOR).full() && msk->get_numdoc().full())
set_clifo(cg_msk, msk); write_clifo(cg_msk, msk);
set_righe_iva_f1(cg_msk, msk); write_righe_iva_f1(cg_msk, msk);
set_totale(cg_msk, msk); set_totale(cg_msk, msk);
if (set_scadenze_f1(cg_msk, msk)) cg_msk.set(FS_RECALC, ""); cg_msk.disable(FS_RDIFFER); cg_msk.disable(FS_MCOMM); cg_msk.disable(FS_NRATE);
cg_msk.set(FS_RECALC, ""); if(write_scad_f1(cg_msk, msk))
app().set_scad_f1(cg_msk);
} }
bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key) bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
@ -3950,7 +3958,11 @@ bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key)
// Riporto dati FPPRO su maschera Prima Nota (solo se hai F1) // Riporto dati FPPRO su maschera Prima Nota (solo se hai F1)
// Se non hai F1 collego senza riportarti i dati (solo le chiavi db) // Se non hai F1 collego senza riportarti i dati (solo le chiavi db)
if (msk->should_bring_back()) if (msk->should_bring_back())
{
riporta_dati_f1(cg_msk, msk); riporta_dati_f1(cg_msk, msk);
//TConfig ini("cg2CONTAB0001.ini");
//app().ini2mask(ini, cg_msk, false);
}
cg_msk.set(F_PROKEY, msk->get_fpprokeys()); cg_msk.set(F_PROKEY, msk->get_fpprokeys());
is_collegato(cg_msk.field(F_COLFPPRO)); is_collegato(cg_msk.field(F_COLFPPRO));
cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA)); cg_msk.set(F_ANNORIF, cg_msk.get(F_ANNOIVA));
@ -4263,11 +4275,14 @@ TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva
{ {
query << " PZ_DATA = '" << TDate(date).date2ansi() << "' "; query << " PZ_DATA = '" << TDate(date).date2ansi() << "' ";
if (order) if (order)
query << "\nORDER BY P1_DATAORARIC ASC"; query << "\nORDER BY P1_DATAORARIC ASC, PZ_TIPOPROT ASC, PZ_NUMPROT ASC";
query << ";"; query << ";";
} }
else else
{
query.cut(0) << query.left(query.len() - 6); query.cut(0) << query.left(query.len() - 6);
query << "\nORDER BY P1_DATAORARIC ASC, PZ_TIPOPROT ASC, PZ_NUMPROT ASC;";
}
return query; return query;
} }

View File

@ -185,9 +185,9 @@ class TPrimanota_application : public TRelation_application
static bool quadratura_handler(TMask_field& f, KEY k); // Bottone quadratura per ATS static bool quadratura_handler(TMask_field& f, KEY k); // Bottone quadratura per ATS
static void set_righe_iva_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk); static void write_righe_iva_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
static bool set_scadenze_f1(const TMask& cg_msk, const shared_ptr<TPro_msk>& msk); static bool write_scad_f1(const TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
static void set_clifo(TMask& cg_msk, const shared_ptr<TPro_msk>& msk); static void write_clifo(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
static void set_totale(TMask& cg_msk, const shared_ptr<TPro_msk>& msk); static void set_totale(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
static void riporta_dati_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk); static void riporta_dati_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
// Handlers per aggancio FPPRO // Handlers per aggancio FPPRO
@ -210,6 +210,7 @@ protected: // TApplication
virtual void print(); virtual void print();
void dump_rec(TConfig & ini, const TRectype & rec, int row = 0, int pref = 0); void dump_rec(TConfig & ini, const TRectype & rec, int row = 0, int pref = 0);
void dump_fatt(TConfig& ini, TPartita & game, int rigafatt, int pref = 0); void dump_fatt(TConfig& ini, TPartita & game, int rigafatt, int pref = 0);
void set_scad_f1(TMask& m);
virtual void ini2mask(TConfig& ini, TMask& msk, bool query); virtual void ini2mask(TConfig& ini, TMask& msk, bool query);
virtual void mask2ini(const TMask& msk, TConfig& ini); virtual void mask2ini(const TMask& msk, TConfig& ini);

View File

@ -91,18 +91,18 @@ SPREADSHEET F_SHEETFPPROS 0 15
BEGIN BEGIN
PROMPT 0 8 "" PROMPT 0 8 ""
ITEM " " ITEM " "
ITEM "Tipo Doc@7" ITEM "Tipo Doc@5"
ITEM "Data Ricezione" ITEM "Data\nRicezione@8"
ITEM "Data Doc." ITEM "Data\nDoc.@8"
ITEM "Importo Totale" ITEM "Totale\nDocumento@7"
ITEM "Ritenute d'acconto" ITEM "Ritenute\nfiscali@6"
ITEM "Numero" ITEM "Numero@14"
ITEM "Paese" ITEM "Paese@4"
ITEM "P. IVA" ITEM "P. IVA@10"
ITEM "Cod. Fiscale" ITEM "Cod. Fiscale@14"
ITEM "Tipo Protocollo\nin ingresso" ITEM "Tipo Protocollo\nin ingresso@10"
ITEM "Progressivo di ingresso" ITEM "Progressivo\ndi ingresso@10"
ITEM "Chiave FPPRO@80" ITEM "Chiave FPPRO@40"
END END
STRING F_NUMEROI 20 STRING F_NUMEROI 20