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));
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.";
"\nSe si vuole registrare questo documento elettronico, scollegarlo prima dalla precedente registrazione.";
error_box(msg);
return pro_numreg_err;
}
}
//app().curr_mask().set(FS_RECALC, "");
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_COLFPPRO, "X");
msk.set(FS_RECALC, "");
set_scad_f1(msk);
}
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)
{
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));
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
}
}
@ -3847,7 +3847,7 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key)
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);
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::set_scadenze_f1(const TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
bool TPrimanota_application::write_scad_f1(const TMask& cg_msk, const shared_ptr<TPro_msk>& msk)
{
TSheet_field& sf = cg_msk.sfield(FS_RATESHEET);
int items = sf.items();
const vector<TPro_msk::scadenza_s>& righe = msk->get_scadenze();
int i = 0;
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->importo, cid2index(102));
pag_notify(sf, i, K_ENTER);
}
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);
clifo.setkey(5);
@ -3913,6 +3919,7 @@ void TPrimanota_application::set_totale(TMask& cg_msk, const shared_ptr<TPro_msk
{
totale -= rit;
cg_msk.set(F_RITFIS, rit);
app().add_cgs_ritenute('F');
}
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_DATADOC, msk->get_datadoc());
if (!cg_msk.get(F_CODCLIFOR).full() && msk->get_numdoc().full())
set_clifo(cg_msk, msk);
set_righe_iva_f1(cg_msk, msk);
write_clifo(cg_msk, msk);
write_righe_iva_f1(cg_msk, msk);
set_totale(cg_msk, msk);
if (set_scadenze_f1(cg_msk, msk))
cg_msk.set(FS_RECALC, "");
cg_msk.set(FS_RECALC, ""); cg_msk.disable(FS_RDIFFER); cg_msk.disable(FS_MCOMM); cg_msk.disable(FS_NRATE);
if(write_scad_f1(cg_msk, msk))
app().set_scad_f1(cg_msk);
}
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)
// Se non hai F1 collego senza riportarti i dati (solo le chiavi db)
if (msk->should_bring_back())
{
riporta_dati_f1(cg_msk, msk);
//TConfig ini("cg2CONTAB0001.ini");
//app().ini2mask(ini, cg_msk, false);
}
cg_msk.set(F_PROKEY, msk->get_fpprokeys());
is_collegato(cg_msk.field(F_COLFPPRO));
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() << "' ";
if (order)
query << "\nORDER BY P1_DATAORARIC ASC";
query << "\nORDER BY P1_DATAORARIC ASC, PZ_TIPOPROT ASC, PZ_NUMPROT ASC";
query << ";";
}
else
{
query.cut(0) << query.left(query.len() - 6);
query << "\nORDER BY P1_DATAORARIC ASC, PZ_TIPOPROT ASC, PZ_NUMPROT ASC;";
}
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 void set_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 void set_clifo(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 write_scad_f1(const 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 riporta_dati_f1(TMask& cg_msk, const shared_ptr<TPro_msk>& msk);
// Handlers per aggancio FPPRO
@ -210,6 +210,7 @@ protected: // TApplication
virtual void print();
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 set_scad_f1(TMask& m);
virtual void ini2mask(TConfig& ini, TMask& msk, bool query);
virtual void mask2ini(const TMask& msk, TConfig& ini);

View File

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