Correzioni saldaconto
git-svn-id: svn://10.65.10.50/trunk@2553 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
806c1731f6
commit
195bcc0381
@ -279,12 +279,10 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
|
|||||||
{
|
{
|
||||||
m->efield(F_CODPAG).enable(!nota_credito);
|
m->efield(F_CODPAG).enable(!nota_credito);
|
||||||
|
|
||||||
m->show(F_ANNORIF, _is_saldaconto); // Mostra/nasconde anno e riferimento partita
|
|
||||||
m->show(F_NUMRIF, _is_saldaconto);
|
|
||||||
|
|
||||||
TEdit_field& numrif = m->efield(F_NUMRIF);
|
TEdit_field& numrif = m->efield(F_NUMRIF);
|
||||||
numrif.set_justify(iva == iva_acquisti ? _num_for : _num_cli);
|
numrif.set_justify(iva == iva_acquisti ? _num_for : _num_cli);
|
||||||
numrif.set_trim(!numrif.right_justified());
|
numrif.set_trim(!numrif.right_justified());
|
||||||
|
activate_numrif(FALSE);
|
||||||
|
|
||||||
const bool av = causale().reg().agenzia_viaggi();
|
const bool av = causale().reg().agenzia_viaggi();
|
||||||
m->show(F_DATA74TER, av);
|
m->show(F_DATA74TER, av);
|
||||||
|
@ -75,9 +75,8 @@ END
|
|||||||
STRING F_CODCAUS 3
|
STRING F_CODCAUS 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 9 "Causale "
|
PROMPT 1 9 "Causale "
|
||||||
HELP "Codice della causale dell'operazione"
|
|
||||||
FLAGS "UZ"
|
FLAGS "UZ"
|
||||||
FIELD LF_MOV->CODCAUS
|
FIELD CODCAUS
|
||||||
USE LF_CAUSALI KEY 1
|
USE LF_CAUSALI KEY 1
|
||||||
INPUT CODCAUS F_CODCAUS
|
INPUT CODCAUS F_CODCAUS
|
||||||
DISPLAY "Codice" CODCAUS
|
DISPLAY "Codice" CODCAUS
|
||||||
@ -94,7 +93,6 @@ END
|
|||||||
STRING F_DESCRCAUS 50
|
STRING F_DESCRCAUS 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 21 9 ""
|
PROMPT 21 9 ""
|
||||||
HELP "Descrizione della causale dell'operazione"
|
|
||||||
USE LF_CAUSALI KEY 2
|
USE LF_CAUSALI KEY 2
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
INPUT DESCR F_DESCRCAUS
|
INPUT DESCR F_DESCRCAUS
|
||||||
|
@ -52,6 +52,7 @@ BEGIN
|
|||||||
FLAGS "DU"
|
FLAGS "DU"
|
||||||
GROUP 3
|
GROUP 3
|
||||||
PICTURE ".5"
|
PICTURE ".5"
|
||||||
|
FIELD ANTIOUTPUT
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
|
127
cg/cg2102.cpp
127
cg/cg2102.cpp
@ -296,11 +296,17 @@ void TPrimanota_application::disable_cgs_cells(int n, char tipo)
|
|||||||
switch(tipo)
|
switch(tipo)
|
||||||
{
|
{
|
||||||
case 'T': // Totale documento
|
case 'T': // Totale documento
|
||||||
if (!causale().corrispettivi())
|
if (causale().corrispettivi())
|
||||||
{
|
{
|
||||||
|
last = 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
last = 3;
|
||||||
cg.disable_cell(n, 5);
|
cg.disable_cell(n, 5);
|
||||||
cg.disable_cell(n, 6);
|
cg.disable_cell(n, 6);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case 'A': // Abbuoni attivi
|
case 'A': // Abbuoni attivi
|
||||||
case 'C': // Differenza cambio
|
case 'C': // Differenza cambio
|
||||||
case 'D': // IVA Detraibile
|
case 'D': // IVA Detraibile
|
||||||
@ -1391,24 +1397,23 @@ bool TPrimanota_application::cg_gruppo_handler(TMask_field& f, KEY key)
|
|||||||
bool TPrimanota_application::cg_conto_handler(TMask_field& f, KEY key)
|
bool TPrimanota_application::cg_conto_handler(TMask_field& f, KEY key)
|
||||||
{
|
{
|
||||||
bool ok = TRUE;
|
bool ok = TRUE;
|
||||||
|
|
||||||
if (key == K_ENTER)
|
if (key == K_ENTER)
|
||||||
{
|
{
|
||||||
if (!app().causale().corrispettivi())
|
TMask& m = f.mask();
|
||||||
|
if (m.get(CG_ROWTYPE)[0] == 'T' && !app().causale().corrispettivi())
|
||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
const char tipo = app().clifo(); // Tipo conto richiesto dal movimento
|
||||||
if (m.get(CG_ROWTYPE)[0] == 'T') // Se riga totale documento
|
char cf = m.get(f.dlg()-2)[0];
|
||||||
|
if (cf < ' ') cf = ' '; // Tipo conto della riga
|
||||||
|
if (cf != tipo) // Incongruenza!
|
||||||
{
|
{
|
||||||
const char tipo = app().clifo(); // Tipo conto richiesto dal movimento
|
const char* d = tipo == 'C' ? "clienti" : "fornitori";
|
||||||
char cf = m.get(f.dlg()-2)[0];
|
ok = f.error_box("La riga totale richiede un conto %s.", d);
|
||||||
if (cf < ' ') cf = ' '; // Tipo conto della riga
|
}
|
||||||
if (cf != tipo) // Incongruenza!
|
}
|
||||||
{
|
|
||||||
const char* d = tipo == ' ' ? "normale" : (tipo == 'C' ? "clienti" : "fornitori");
|
|
||||||
ok = f.error_box("La riga totale richiede un conto %s.", d);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1752,7 +1757,7 @@ bool TPrimanota_application::numdoc_handler(TMask_field& f, KEY key)
|
|||||||
const TString16 n = f.get();
|
const TString16 n = f.get();
|
||||||
if (n.not_empty() && !app().npart_is_prot()) // Copiare numero documento nel numero partita?
|
if (n.not_empty() && !app().npart_is_prot()) // Copiare numero documento nel numero partita?
|
||||||
{
|
{
|
||||||
if (m.field(F_NUMRIF).active() && m.get(F_NUMRIF).empty())
|
if (m.field(F_NUMRIF).active() && m.get(F_NUMRIF).blank())
|
||||||
m.set(F_NUMRIF, n, TRUE);
|
m.set(F_NUMRIF, n, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2216,7 +2221,7 @@ bool TPrimanota_application::protiva_handler(TMask_field& f, KEY key)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (key == K_TAB && m.insert_mode() && app().npart_is_prot() &&
|
if (key == K_TAB && m.insert_mode() && app().npart_is_prot() &&
|
||||||
m.field(F_NUMRIF).active() && m.get(F_NUMRIF).empty())
|
m.field(F_NUMRIF).active() && m.get(F_NUMRIF).blank())
|
||||||
{
|
{
|
||||||
const TString& piva = f.get();
|
const TString& piva = f.get();
|
||||||
if (piva.not_empty())
|
if (piva.not_empty())
|
||||||
@ -2324,18 +2329,69 @@ bool TPrimanota_application::corrvaluta_handler(TMask_field& f, KEY key)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TPrimanota_application::activate_numrif(bool init_pag)
|
||||||
|
{
|
||||||
|
CHECK(iva() != nessuna_iva, "Non esiste il numero riferimento in questa maschera!");
|
||||||
|
TMask& m = curr_mask();
|
||||||
|
|
||||||
|
bool shown = is_saldaconto(); // Il numero riferimento esiste
|
||||||
|
|
||||||
|
if (shown)
|
||||||
|
{
|
||||||
|
const bool solaiva = m.get_bool(F_SOLAIVA);
|
||||||
|
if (solaiva) shown = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shown != m.field(F_NUMRIF).shown())
|
||||||
|
{
|
||||||
|
m.show(F_ANNORIF, shown);
|
||||||
|
m.show(F_NUMRIF, shown);
|
||||||
|
if (!shown)
|
||||||
|
{
|
||||||
|
m.reset(F_ANNORIF);
|
||||||
|
m.reset(F_NUMRIF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gestione pagina 3
|
||||||
|
const bool page = shown && is_fattura() && !m.get(F_NUMRIF).blank();
|
||||||
|
if (page != m.page_enabled(2))
|
||||||
|
{
|
||||||
|
m.enable_page(2, page);
|
||||||
|
if (page && init_pag && m.is_running())
|
||||||
|
{
|
||||||
|
if (m.edit_mode())
|
||||||
|
{
|
||||||
|
const TString16 dt(m.get(F_DATADOC));
|
||||||
|
set_pagamento(NULL, dt); // Reset pagamento
|
||||||
|
set_totale_pagamento();
|
||||||
|
|
||||||
|
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||||
|
pagamento().set_sheet(ps); // Aggiorna lo sheet
|
||||||
|
pag_rows() = ps.rows_array(); // copia sheet
|
||||||
|
}
|
||||||
|
else
|
||||||
|
set_scadenze(m); // Inizializza pagamento
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return shown;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handler del checkbox di movimento di sola IVA
|
||||||
bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key)
|
bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key)
|
||||||
{
|
{
|
||||||
if (key == K_SPACE)
|
if (key == K_SPACE)
|
||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
|
TPrimanota_application& a = app();
|
||||||
|
|
||||||
bool anchecg = f.get().empty();
|
bool anchecg = f.get().empty();
|
||||||
bool recalcg = anchecg;
|
bool recalcg = anchecg;
|
||||||
|
|
||||||
if (m.is_running() && app().is_fattura())
|
if (m.is_running() && a.is_fattura())
|
||||||
{
|
{
|
||||||
const TPartita* game = app().partite().first();
|
const TPartita* game = a.partite().first();
|
||||||
|
|
||||||
if (anchecg)
|
if (anchecg)
|
||||||
{
|
{
|
||||||
@ -2350,37 +2406,32 @@ bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key)
|
|||||||
bool del = TRUE;
|
bool del = TRUE;
|
||||||
if (game != NULL)
|
if (game != NULL)
|
||||||
del = f.yesno_box("Si desidera cancellare il saldaconto?");
|
del = f.yesno_box("Si desidera cancellare il saldaconto?");
|
||||||
if (del)
|
if (!del)
|
||||||
{
|
|
||||||
m.set(F_NUMRIF, "", TRUE);
|
|
||||||
m.reset(F_ANNORIF);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
f.reset();
|
f.reset();
|
||||||
anchecg = TRUE;
|
anchecg = TRUE;
|
||||||
recalcg = FALSE;
|
recalcg = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
a.activate_numrif(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
m.enable(F_ANNORIF, anchecg);
|
|
||||||
m.enable(F_NUMRIF, anchecg);
|
|
||||||
|
|
||||||
m.show(F_SHEETCG, anchecg);
|
m.show(F_SHEETCG, anchecg);
|
||||||
m.show(F_DARE, anchecg);
|
m.show(F_DARE, anchecg);
|
||||||
m.show(F_AVERE, anchecg);
|
m.show(F_AVERE, anchecg);
|
||||||
|
|
||||||
if (m.is_running() && recalcg)
|
if (m.is_running() && recalcg)
|
||||||
{
|
{
|
||||||
TSheet_field& iva = app().ivas();
|
TSheet_field& iva = a.ivas();
|
||||||
const int righe = iva.items();
|
const int righe = iva.items();
|
||||||
TProgind pi(righe, "Generazione righe contabilita'", FALSE, TRUE, 16);
|
TProgind pi(righe, "Generazione righe contabilita'", FALSE, TRUE, 16);
|
||||||
|
|
||||||
app().cgs().reset();
|
TSheet_field& cg = a.cgs();
|
||||||
app().add_cgs_tot(m);
|
cg.reset();
|
||||||
if (m.get(F_RITFIS).not_empty()) app().add_cgs_rit(TRUE);
|
|
||||||
if (m.get(F_RITSOC).not_empty()) app().add_cgs_rit(FALSE);
|
a.add_cgs_tot(m); // Genera totale documento
|
||||||
|
if (m.get(F_RITFIS).not_empty()) a.add_cgs_rit(TRUE); // Genera ritenute fiscali
|
||||||
|
if (m.get(F_RITSOC).not_empty()) a.add_cgs_rit(FALSE); // Genera ritenute sociali
|
||||||
|
|
||||||
TToken_string oldrow(128);
|
TToken_string oldrow(128);
|
||||||
for (int i = 0; i < righe; i++)
|
for (int i = 0; i < righe; i++)
|
||||||
@ -2390,15 +2441,15 @@ bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key)
|
|||||||
{
|
{
|
||||||
oldrow = r;
|
oldrow = r;
|
||||||
r = "";
|
r = "";
|
||||||
iva_notify(iva, i, K_SPACE);
|
iva_notify(iva, i, K_SPACE); // Simula la creazione di una nuova riga iva
|
||||||
r = oldrow;
|
r = oldrow;
|
||||||
iva_notify(iva, i, K_ENTER);
|
iva_notify(iva, i, K_ENTER);
|
||||||
}
|
}
|
||||||
pi.setstatus(i+1);
|
pi.setstatus(i+1);
|
||||||
}
|
}
|
||||||
app().fill_sheet(m);
|
a.fill_sheet(m); // Aggiunge righe vuote
|
||||||
app().cgs().force_update();
|
cg.force_update();
|
||||||
m.set_focus();
|
m.set_focus(); // Ripristina il focus al campo (a causa della progind)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -178,6 +178,7 @@ protected:
|
|||||||
bool is_fattura() const { return gestione_saldaconto() && causale().tipomov() == 1; }
|
bool is_fattura() const { return gestione_saldaconto() && causale().tipomov() == 1; }
|
||||||
bool is_nota_credito() const { return gestione_saldaconto() && causale().tipomov() == 2; }
|
bool is_nota_credito() const { return gestione_saldaconto() && causale().tipomov() == 2; }
|
||||||
bool is_pagamento() const { return gestione_saldaconto() && causale().tipomov() >= 3; }
|
bool is_pagamento() const { return gestione_saldaconto() && causale().tipomov() >= 3; }
|
||||||
|
bool activate_numrif(bool set_pag);
|
||||||
|
|
||||||
void fill_sheet(TMask& m) const;
|
void fill_sheet(TMask& m) const;
|
||||||
void init_mask(TMask& m);
|
void init_mask(TMask& m);
|
||||||
|
101
cg/cg2104.cpp
101
cg/cg2104.cpp
@ -247,16 +247,10 @@ bool TPrimanota_application::pag_sheet_handler(TMask_field& f, KEY key)
|
|||||||
const char* const pic = in_valuta ? ".3" : ".";
|
const char* const pic = in_valuta ? ".3" : ".";
|
||||||
const TString is(imp.string(pic));
|
const TString is(imp.string(pic));
|
||||||
const TString ts(tot.string(pic));
|
const TString ts(tot.string(pic));
|
||||||
const bool recalc = yesno_box("Il totale delle rate e' %s mentre\n"
|
ok = yesno_box("Il totale delle rate e' %s mentre\n"
|
||||||
"il totale del documento e' %s.\n"
|
"il totale del documento e' %s.\n"
|
||||||
"Si desidera ricalcolare le rate e poi\n"
|
"Si desidera registrare ugualmente?",
|
||||||
"registrare in un secondo momento?",
|
(const char*)is, (const char*)ts);
|
||||||
(const char*)is, (const char*)ts);
|
|
||||||
if (recalc)
|
|
||||||
{
|
|
||||||
app().set_scadenze(m);
|
|
||||||
ok = FALSE; // Permette di guardare il risultato prima di registrare
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,19 +298,20 @@ bool TPrimanota_application::tipopag_handler(TMask_field& f, KEY key)
|
|||||||
bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
|
bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
|
||||||
{
|
{
|
||||||
bool ok = TRUE;
|
bool ok = TRUE;
|
||||||
TMask& m = f.mask();
|
|
||||||
|
|
||||||
const bool set_scad = m.page_enabled(2); // E' attiva pagina 3
|
TMask& m = f.mask();
|
||||||
|
TPrimanota_application& a = app();
|
||||||
|
const bool set_scad = a.is_fattura() && m.page_enabled(2); // E' attiva pagina 3
|
||||||
if (key == K_ENTER)
|
if (key == K_ENTER)
|
||||||
{
|
{
|
||||||
const bool required = app().is_fattura() && (m.insert_mode() || set_scad);
|
const bool required = a.is_fattura() && (m.insert_mode() || set_scad);
|
||||||
if (required && f.get().empty())
|
if (required && f.get().empty())
|
||||||
{
|
{
|
||||||
error_box("Il codice di pagamento e' obbligatorio!\n"
|
f.error_box("Il codice di pagamento e' obbligatorio!\n"
|
||||||
"Se possibile esso verra' proposto, ma potra'\n"
|
"Se possibile esso verra' proposto, ma potra'\n"
|
||||||
"essere modificato prima di registrare il movimento.");
|
"essere modificato prima di registrare il movimento.");
|
||||||
|
|
||||||
const char typ = app().clifo();
|
const char typ = a.clifo();
|
||||||
const long cod = m.get_long(typ == 'C' ? F_CLIENTE : F_FORNITORE);
|
const long cod = m.get_long(typ == 'C' ? F_CLIENTE : F_FORNITORE);
|
||||||
|
|
||||||
TLocalisamfile clifo(LF_CLIFO);
|
TLocalisamfile clifo(LF_CLIFO);
|
||||||
@ -336,7 +331,7 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad)
|
if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad)
|
||||||
app().set_scadenze(m);
|
a.set_scadenze(m);
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
@ -346,7 +341,7 @@ bool TPrimanota_application::annorif_handler(TMask_field& f, KEY key)
|
|||||||
bool ok = TRUE;
|
bool ok = TRUE;
|
||||||
const TMask& m = f.mask();
|
const TMask& m = f.mask();
|
||||||
|
|
||||||
if (f.to_check(key) && f.get().empty() &&
|
if (f.to_check(key, TRUE) && f.get().empty() &&
|
||||||
(m.insert_mode() || m.get(F_NUMRIF).not_empty()))
|
(m.insert_mode() || m.get(F_NUMRIF).not_empty()))
|
||||||
{
|
{
|
||||||
const TString& anno = m.get(F_DATADOC).right(4);
|
const TString& anno = m.get(F_DATADOC).right(4);
|
||||||
@ -364,27 +359,39 @@ bool TPrimanota_application::numrif_handler(TMask_field& f, KEY key)
|
|||||||
|
|
||||||
if (f.to_check(key, TRUE))
|
if (f.to_check(key, TRUE))
|
||||||
{
|
{
|
||||||
|
TPrimanota_application& a = app();
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
const bool empty = f.get().blank();
|
|
||||||
|
if (f.focusdirty() && m.insert_mode() && f.get().blank())
|
||||||
if (empty && f.focusdirty() && m.insert_mode() && !m.get_bool(F_SOLAIVA))
|
|
||||||
{
|
{
|
||||||
f.set(m.get(app()._npart_is_prot ? F_PROTIVA : F_NUMDOC));
|
f.set(m.get(a._npart_is_prot ? F_PROTIVA : F_NUMDOC));
|
||||||
|
|
||||||
if (m.get(F_CODPAG).empty())
|
if (m.get(F_CODPAG).empty())
|
||||||
{
|
{
|
||||||
TMask_field& clifo = m.field(app().iva() == iva_vendite ? F_CLIENTE : F_FORNITORE);
|
TMask_field& clifo = m.field(a.iva() == iva_vendite ? F_CLIENTE : F_FORNITORE);
|
||||||
|
clifo.set_dirty();
|
||||||
clifo.on_hit();
|
clifo.on_hit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TMask_field& anno = m.field(F_ANNORIF);
|
||||||
|
if (anno.get().empty())
|
||||||
|
{
|
||||||
|
anno.set_dirty();
|
||||||
|
anno.on_hit();
|
||||||
|
}
|
||||||
|
|
||||||
ok = error_box("Il numero di riferimento partita e' obbligatorio!\n"
|
ok = error_box("Il numero di riferimento partita e' obbligatorio!\n"
|
||||||
"Se possibile esso verra' proposto, ma potra'\n"
|
"Se possibile esso verra' proposto, ma potra'\n"
|
||||||
"essere modificato prima di registrare il movimento.");
|
"essere modificato prima di registrare il movimento.");
|
||||||
}
|
}
|
||||||
m.enable_page(2, !f.get().blank());
|
|
||||||
|
if (key == K_TAB && a.is_fattura())
|
||||||
|
a.activate_numrif(TRUE);
|
||||||
|
|
||||||
if (key == K_ENTER && m.edit_mode())
|
if (ok && key == K_ENTER && m.edit_mode())
|
||||||
{
|
{
|
||||||
const TPartita* old = app().partite().first();
|
const TPartita* old = a.partite().first();
|
||||||
if (old && old->ok() && empty) // Se esisteva una partita ma ora non piu'
|
if (old && old->ok() && f.get().blank()) // Se esisteva una partita ma ora non piu'
|
||||||
{
|
{
|
||||||
const KEY k = yesnocancel_box("Attenzione la fattura della partita %d %s verra' eliminata.\n"
|
const KEY k = yesnocancel_box("Attenzione la fattura della partita %d %s verra' eliminata.\n"
|
||||||
"Premere SI per cancellarla, NO per ripristinarla, ANNULLA per modificarla",
|
"Premere SI per cancellarla, NO per ripristinarla, ANNULLA per modificarla",
|
||||||
@ -512,8 +519,7 @@ bool TPrimanota_application::recalc_handler(TMask_field& f, KEY key)
|
|||||||
// cio' implica, evidentemente, che si memorizzi non solo il
|
// cio' implica, evidentemente, che si memorizzi non solo il
|
||||||
// nuovo tpr ma anche il fatto che lo si e' cambiato, in quanto
|
// nuovo tpr ma anche il fatto che lo si e' cambiato, in quanto
|
||||||
// se si riattiva il ricalcolo occorre rimetterlo come era
|
// se si riattiva il ricalcolo occorre rimetterlo come era
|
||||||
// in precedenza, aggiungendo (su conferma) un pompino
|
// in precedenza.
|
||||||
// di emergenza salvaguai al gentile cliente
|
|
||||||
// ---------------------------------------------------------
|
// ---------------------------------------------------------
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||||
@ -847,8 +853,8 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
|||||||
const TString desc(m.get(F_DESCR));
|
const TString desc(m.get(F_DESCR));
|
||||||
const TString codpag(m.get(F_CODPAG));
|
const TString codpag(m.get(F_CODPAG));
|
||||||
const TString codcaus(causale().codice());
|
const TString codcaus(causale().codice());
|
||||||
const TValuta cambio (m, SK_VALUTA, SK_DATACAMBIO, SK_CAMBIO);
|
const TValuta cambio(m, SK_VALUTA, SK_DATACAMBIO, SK_CAMBIO);
|
||||||
const TString agente (m.get(FS_AGENTE));
|
const TString agente(m.get(FS_AGENTE));
|
||||||
const char sezione = get_cgs_imp(0).sezione(); // Dare/Avere
|
const char sezione = get_cgs_imp(0).sezione(); // Dare/Avere
|
||||||
|
|
||||||
TBill clifo;
|
TBill clifo;
|
||||||
@ -900,20 +906,23 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
|||||||
TToken_string& row = ps.row(i);
|
TToken_string& row = ps.row(i);
|
||||||
|
|
||||||
TRiga_scadenze& scadenza = partita.new_row();
|
TRiga_scadenze& scadenza = partita.new_row();
|
||||||
scadenza.put(SCAD_CODPAG, codpag);
|
<<<<<<< cg2104.cpp
|
||||||
scadenza.put(SCAD_TIPOPAG, pag.tipo_rata(i));
|
scadenza.put(SCAD_CODPAG, codpag); // Codice pagamento
|
||||||
scadenza.put(SCAD_ULTCLASS, pag.ulc_rata(i));
|
scadenza.put(SCAD_CODAG, agente); // Codice agente
|
||||||
scadenza.put(SCAD_IMPORTO, pag.tlit_rata(i));
|
|
||||||
scadenza.put(SCAD_IMPORTO, row.get(1)); // 1 = Importo
|
scadenza.put(SCAD_DATASCAD, row.get(0)); // 0 = Data scadenza
|
||||||
scadenza.put(SCAD_IMPORTOVAL, row.get(2)); // 2 = Importo in valuta
|
scadenza.put(SCAD_IMPORTO, row.get()); // 1 = Importo
|
||||||
scadenza.put(SCAD_DATASCAD, pag.data_rata(i));
|
scadenza.put(SCAD_IMPORTOVAL, row.get()); // 2 = Importo in valuta
|
||||||
scadenza.put(SCAD_CODABIPR, row.get(7));
|
row.get(); // 3 = Percentuale
|
||||||
scadenza.put(SCAD_CODCABPR, row.get(8));
|
scadenza.put(SCAD_TIPOPAG, row.get()); // 4 = Tipo pagamento
|
||||||
scadenza.put(SCAD_CODABI, row.get(9));
|
scadenza.put(SCAD_ULTCLASS, row.get()); // 5 = Ulteriore classificazione
|
||||||
scadenza.put(SCAD_CODCAB, row.get(10));
|
row.get(); // 6 = Descrizione pagamento
|
||||||
scadenza.put(SCAD_DESCR, row.get(11)); //11 = Note
|
scadenza.put(SCAD_CODABIPR, row.get()); // 7 = Ns ABI
|
||||||
scadenza.put(SCAD_BLOCCATA, row.get(12)); //12 = Non pagabile
|
scadenza.put(SCAD_CODCABPR, row.get()); // 8 = Ns CAB
|
||||||
scadenza.put(SCAD_CODAG, agente);
|
scadenza.put(SCAD_CODABI, row.get()); // 9 = Vs ABI
|
||||||
|
scadenza.put(SCAD_CODCAB, row.get()); //10 = Vs CAB
|
||||||
|
scadenza.put(SCAD_DESCR, row.get()); //11 = Note
|
||||||
|
scadenza.put(SCAD_BLOCCATA, row.get()); //12 = Non pagabile
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
218
cg/cg2105.cpp
218
cg/cg2105.cpp
@ -14,6 +14,81 @@
|
|||||||
#include <partite.h> // Archivio partite
|
#include <partite.h> // Archivio partite
|
||||||
#include <scadenze.h> // Archivio scadenze
|
#include <scadenze.h> // Archivio scadenze
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Definizione Maschera partite
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TGame_mask : public TMask
|
||||||
|
{
|
||||||
|
const TBill _conto; // Conto fisso del cliente/fornitore
|
||||||
|
long _numreg; // Numero movimento contabile
|
||||||
|
int _numrig; // Riga contabile corrente (prima = 1!)
|
||||||
|
TImporto _importo; // Importo su riga contabile
|
||||||
|
TImporto _residuo, _resval; // Residuo della riga contabile
|
||||||
|
int _riga_partite; // Riga corrente delle partite
|
||||||
|
bool _changed; // Flag di modifica partite
|
||||||
|
bool _valfirst; // La colonna della valuta precede le lire
|
||||||
|
|
||||||
|
tipo_movimento _tipomov; // Dati per la creazione di un nuovo movimento
|
||||||
|
char _sezione;
|
||||||
|
TDate _datadoc;
|
||||||
|
TString _codpag, _descr, _numdoc;
|
||||||
|
|
||||||
|
TDecoder _causali; // Decodificatore delle causali
|
||||||
|
|
||||||
|
protected:
|
||||||
|
static bool annopart_handler(TMask_field& f, KEY k);
|
||||||
|
static bool numpart_handler(TMask_field& f, KEY k);
|
||||||
|
static bool partite_notify(TSheet_field& partite, int r, KEY k);
|
||||||
|
static bool scadenze_notify(TSheet_field& partite, int r, KEY k);
|
||||||
|
static bool show_all_handler(TMask_field& f, KEY k);
|
||||||
|
static bool edit_scadenza_handler(TMask_field& f, KEY k);
|
||||||
|
static bool nuovo_handler(TMask_field& f, KEY k);
|
||||||
|
static bool cambio_handler(TMask_field& f, KEY k);
|
||||||
|
|
||||||
|
void add_importo(TToken_string& s, const TImporto& i, bool val = FALSE, int pos = -1);
|
||||||
|
void add_descrizione(TToken_string& s, const TRiga_partite& riga, int pos = -1);
|
||||||
|
TImporto get_importo(TToken_string& s, int pos) const;
|
||||||
|
|
||||||
|
void fill_partite();
|
||||||
|
|
||||||
|
real aggiorna_residuo();
|
||||||
|
|
||||||
|
int update_partita(const TPartita& game, int prow);
|
||||||
|
void update_saldo_clifo();
|
||||||
|
int nuova_riga(TPartita& partita) const;
|
||||||
|
int nuovo_pagamento(TPartita& partita, int nriga, int rata) const;
|
||||||
|
bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp) const;
|
||||||
|
|
||||||
|
char calcola_sezione() const;
|
||||||
|
void align_number(TMask_field& f) const;
|
||||||
|
long number_distance(const char* key, const char* num) const;
|
||||||
|
bool same_number(const char* key, const char* num) const;
|
||||||
|
void append_conto(TString& s) const;
|
||||||
|
|
||||||
|
#ifdef __EXTRA__
|
||||||
|
bool edit_fattura(TPartita& p, int nriga);
|
||||||
|
bool prima_nota(const long nreg);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const TRiga_partite* cerca_prima_riga() const;
|
||||||
|
void aggiorna_valuta(const TValuta& val);
|
||||||
|
void aggiorna_sorelle(const TRiga_partite& part) const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
TSheet_field& partite() const { return (TSheet_field&)field(P_PARTITE); }
|
||||||
|
TSheet_field& scadenze() const { return (TSheet_field&)field(P_SCADENZE); }
|
||||||
|
const TBill& conto() const { return _conto; }
|
||||||
|
|
||||||
|
const TImporto& residuo(bool val) const { return val ? _resval : _residuo; }
|
||||||
|
bool changed() const { return _changed; }
|
||||||
|
|
||||||
|
TGame_mask(const TBill& bill, long numreg, int riga);
|
||||||
|
virtual ~TGame_mask() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Maschera pagamenti
|
// Maschera pagamenti
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -22,6 +97,7 @@ class TPay_mask : public TMask
|
|||||||
{
|
{
|
||||||
TDate _datadoc;
|
TDate _datadoc;
|
||||||
real _da_pagare, _pagabile;
|
real _da_pagare, _pagabile;
|
||||||
|
const TGame_mask& _parent;
|
||||||
|
|
||||||
TDecoder _causale;
|
TDecoder _causale;
|
||||||
|
|
||||||
@ -38,12 +114,13 @@ public:
|
|||||||
void set_pag(const TRectype& oldpag, const TRiga_scadenze& scad, const TImporto& importo);
|
void set_pag(const TRectype& oldpag, const TRiga_scadenze& scad, const TImporto& importo);
|
||||||
void get_pag(TRectype& oldpag) const;
|
void get_pag(TRectype& oldpag) const;
|
||||||
|
|
||||||
TPay_mask();
|
TPay_mask(const TGame_mask& parent);
|
||||||
virtual ~TPay_mask() {}
|
virtual ~TPay_mask() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
TPay_mask::TPay_mask()
|
TPay_mask::TPay_mask(const TGame_mask& parent)
|
||||||
: TMask("cg2100s"), _causale(LF_CAUSALI, CAU_CODCAUS, CAU_DESCR)
|
: TMask("cg2100s"), _parent(parent),
|
||||||
|
_causale(LF_CAUSALI, CAU_CODCAUS, CAU_DESCR)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,10 +195,7 @@ void TPay_mask::set_pag(const TRectype& oldpag, const TRiga_scadenze& scad,
|
|||||||
const long numreg = sum.get_long(PART_NREG);
|
const long numreg = sum.get_long(PART_NREG);
|
||||||
const int numrig = sum.get_int(PART_NUMRIG);
|
const int numrig = sum.get_int(PART_NUMRIG);
|
||||||
|
|
||||||
if (in_valuta)
|
_pagabile = _parent.residuo(in_valuta).valore();
|
||||||
_pagabile = val.lit2val(residuo.valore());
|
|
||||||
else
|
|
||||||
_pagabile = residuo.valore();
|
|
||||||
|
|
||||||
TReal_field& resp = (TReal_field&)field(S_RESIDUOPAG);
|
TReal_field& resp = (TReal_field&)field(S_RESIDUOPAG);
|
||||||
resp.set_decimals(in_valuta ? 3 : 0);
|
resp.set_decimals(in_valuta ? 3 : 0);
|
||||||
@ -186,8 +260,11 @@ void TPay_mask::gioca_cambi(int force)
|
|||||||
{
|
{
|
||||||
const real totale = get(S_IMPORTO);
|
const real totale = get(S_IMPORTO);
|
||||||
const real totval = get(S_IMPORTOVAL);
|
const real totval = get(S_IMPORTOVAL);
|
||||||
const TValuta cambio(*this, S_VALUTA, S_DATACAMBIO, S_CAMBIO);
|
#ifdef __EXTRA__
|
||||||
|
const TValuta cambio(this, S_VALUTA, S_DATACAMBIO, S_CAMBIO);
|
||||||
|
#else
|
||||||
|
const TValuta cambio(_parent, P_VALUTA, P_DATACAMBIO, P_CAMBIO);
|
||||||
|
#endif
|
||||||
if ( (force == 0x1 || totale.is_zero()) && !(totval.is_zero() || cambio.in_lire()) )
|
if ( (force == 0x1 || totale.is_zero()) && !(totval.is_zero() || cambio.in_lire()) )
|
||||||
{
|
{
|
||||||
const real new_totale = cambio.val2lit(totval);
|
const real new_totale = cambio.val2lit(totval);
|
||||||
@ -289,7 +366,7 @@ bool TPay_mask::cambio_handler(TMask_field& f, KEY k)
|
|||||||
if (k == K_TAB && f.focusdirty())
|
if (k == K_TAB && f.focusdirty())
|
||||||
{
|
{
|
||||||
TPay_mask& m = (TPay_mask&)f.mask();
|
TPay_mask& m = (TPay_mask&)f.mask();
|
||||||
m.gioca_cambi(0x1);
|
m.gioca_cambi();
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -326,73 +403,6 @@ bool TPay_mask::conto_handler(TMask_field& f, KEY k)
|
|||||||
// Maschera partite
|
// Maschera partite
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TGame_mask : public TMask
|
|
||||||
{
|
|
||||||
const TBill _conto; // Conto fisso del cliente/fornitore
|
|
||||||
long _numreg; // Numero movimento contabile
|
|
||||||
int _numrig; // Riga contabile corrente (prima = 1!)
|
|
||||||
TImporto _importo; // Importo su riga contabile
|
|
||||||
TImporto _residuo; // Residuo della riga contabile
|
|
||||||
int _riga_partite; // Riga corrente delle partite
|
|
||||||
bool _changed; // Flag di modifica partite
|
|
||||||
bool _valfirst; // La colonna della valuta precede le lire
|
|
||||||
|
|
||||||
tipo_movimento _tipomov; // Dati per la creazione di un nuovo movimento
|
|
||||||
char _sezione;
|
|
||||||
TDate _datadoc;
|
|
||||||
TString _codpag, _descr, _numdoc;
|
|
||||||
|
|
||||||
TDecoder _causali; // Decodificatore delle causali
|
|
||||||
|
|
||||||
protected:
|
|
||||||
static bool annopart_handler(TMask_field& f, KEY k);
|
|
||||||
static bool numpart_handler(TMask_field& f, KEY k);
|
|
||||||
static bool partite_notify(TSheet_field& partite, int r, KEY k);
|
|
||||||
static bool scadenze_notify(TSheet_field& partite, int r, KEY k);
|
|
||||||
static bool show_all_handler(TMask_field& f, KEY k);
|
|
||||||
static bool edit_scadenza_handler(TMask_field& f, KEY k);
|
|
||||||
static bool nuovo_handler(TMask_field& f, KEY k);
|
|
||||||
static bool cambio_handler(TMask_field& f, KEY k);
|
|
||||||
|
|
||||||
void add_importo(TToken_string& s, const TImporto& i, bool val = FALSE, int pos = -1);
|
|
||||||
void add_descrizione(TToken_string& s, const TRiga_partite& riga, int pos = -1);
|
|
||||||
TImporto get_importo(TToken_string& s, int pos) const;
|
|
||||||
|
|
||||||
void fill_partite();
|
|
||||||
real aggiorna_residuo();
|
|
||||||
|
|
||||||
int update_partita(const TPartita& game, int prow);
|
|
||||||
void update_saldo_clifo();
|
|
||||||
int nuova_riga(TPartita& partita) const;
|
|
||||||
int nuovo_pagamento(TPartita& partita, int nriga, int rata) const;
|
|
||||||
bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp) const;
|
|
||||||
|
|
||||||
char calcola_sezione() const;
|
|
||||||
void align_number(TMask_field& f) const;
|
|
||||||
long number_distance(const char* key, const char* num) const;
|
|
||||||
bool same_number(const char* key, const char* num) const;
|
|
||||||
void append_conto(TString& s) const;
|
|
||||||
|
|
||||||
#ifdef __EXTRA__
|
|
||||||
bool edit_fattura(TPartita& p, int nriga);
|
|
||||||
bool prima_nota(const long nreg);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const TRiga_partite* cerca_prima_riga() const;
|
|
||||||
void aggiorna_valuta(const TValuta& val);
|
|
||||||
void aggiorna_sorelle(const TRiga_partite& part) const;
|
|
||||||
|
|
||||||
public:
|
|
||||||
TSheet_field& partite() const { return (TSheet_field&)field(P_PARTITE); }
|
|
||||||
TSheet_field& scadenze() const { return (TSheet_field&)field(P_SCADENZE); }
|
|
||||||
const TBill& conto() const { return _conto; }
|
|
||||||
|
|
||||||
bool changed() const { return _changed; }
|
|
||||||
|
|
||||||
TGame_mask(const TBill& bill, long numreg, int riga);
|
|
||||||
virtual ~TGame_mask() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
void TGame_mask::append_conto(TString& s) const
|
void TGame_mask::append_conto(TString& s) const
|
||||||
{
|
{
|
||||||
switch (conto().tipo())
|
switch (conto().tipo())
|
||||||
@ -518,12 +528,15 @@ bool TGame_mask::show_all_handler(TMask_field& f, KEY k)
|
|||||||
|
|
||||||
bool TGame_mask::cambio_handler(TMask_field& f, KEY k)
|
bool TGame_mask::cambio_handler(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
if (k == K_TAB && f.focusdirty() &&
|
if (k == K_TAB && f.focusdirty())
|
||||||
yesno_box("Aggiornare gli importi dei pagamenti?"))
|
|
||||||
{
|
{
|
||||||
TGame_mask& gm = (TGame_mask&)f.mask();
|
TGame_mask& gm = (TGame_mask&)f.mask();
|
||||||
const TValuta val(gm, P_VALUTA, P_DATACAMBIO, P_CAMBIO);
|
const bool needed = app().partite().mov2rig(gm._numreg, gm._numrig) > 0;
|
||||||
gm.aggiorna_valuta(val);
|
if (needed && yesno_box("Aggiornare gli importi dei pagamenti?"))
|
||||||
|
{
|
||||||
|
const TValuta val(gm, P_VALUTA, P_DATACAMBIO, P_CAMBIO);
|
||||||
|
gm.aggiorna_valuta(val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -553,10 +566,10 @@ real TGame_mask::aggiorna_residuo()
|
|||||||
const TValuta cambio(*this, P_VALUTA, P_DATACAMBIO, P_CAMBIO);
|
const TValuta cambio(*this, P_VALUTA, P_DATACAMBIO, P_CAMBIO);
|
||||||
if (cambio.in_valuta())
|
if (cambio.in_valuta())
|
||||||
{
|
{
|
||||||
TImporto resval = _importo; cambio.lit2val(resval);
|
_resval = _importo; cambio.lit2val(_resval);
|
||||||
resval -= app().partite().importo_speso(_numreg, _numrig, TRUE); // Residuo della riga
|
_resval -= app().partite().importo_speso(_numreg, _numrig, TRUE); // Residuo della riga
|
||||||
resval.normalize(sez);
|
_resval.normalize(sez);
|
||||||
set(P_RESIDUOVAL, resval.valore());
|
set(P_RESIDUOVAL, _resval.valore());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -648,8 +661,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
gm.set(P_ANNO, anno); // Aggiorna campi di ricerca
|
gm.set(P_ANNO, anno); // Aggiorna campi di ricerca
|
||||||
gm.set(P_NUMERO, num);
|
gm.set(P_NUMERO, num);
|
||||||
|
|
||||||
TValuta cambio;
|
TString prima_valuta; // Codice prima valuta
|
||||||
bool prima_valuta = FALSE;
|
|
||||||
|
|
||||||
if (anno > 0)
|
if (anno > 0)
|
||||||
{
|
{
|
||||||
@ -664,17 +676,18 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
TToken_string riga_fattura(80);
|
TToken_string riga_fattura(80);
|
||||||
|
|
||||||
const int lastrow = game->last();
|
const int lastrow = game->last();
|
||||||
|
|
||||||
|
if (lastrow > 0 && prima_valuta.empty())
|
||||||
|
prima_valuta = game->riga(lastrow).get(PART_CODVAL);
|
||||||
|
|
||||||
|
const bool in_valuta = prima_valuta.not_empty();
|
||||||
|
|
||||||
for (int ri = game->first(); ri <= lastrow; ri = game->succ(ri))
|
for (int ri = game->first(); ri <= lastrow; ri = game->succ(ri))
|
||||||
{
|
{
|
||||||
const TRiga_partite& riga = game->riga(ri);
|
const TRiga_partite& riga = game->riga(ri);
|
||||||
if (!riga.is_fattura())
|
if (!riga.is_fattura())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
cambio.get(riga);
|
|
||||||
const bool in_valuta = cambio.in_valuta();
|
|
||||||
if (in_valuta)
|
|
||||||
prima_valuta = TRUE;
|
|
||||||
|
|
||||||
riga_fattura.cut(0);
|
riga_fattura.cut(0);
|
||||||
riga_fattura.add(ri);
|
riga_fattura.add(ri);
|
||||||
riga_fattura.add("");
|
riga_fattura.add("");
|
||||||
@ -839,8 +852,8 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
{
|
{
|
||||||
TToken_string& sp = scadenze.row(scadenze.add(""));
|
TToken_string& sp = scadenze.row(scadenze.add(""));
|
||||||
sp.add("Saldo partita", 4);
|
sp.add("Saldo partita", 4);
|
||||||
if (cambio.in_valuta())
|
if (prima_valuta.not_empty())
|
||||||
sp << ' ' << cambio.codice();
|
sp << ' ' << prima_valuta;
|
||||||
|
|
||||||
gm.add_importo(sp, tot_lit);
|
gm.add_importo(sp, tot_lit);
|
||||||
gm.add_importo(sp, tot_val, TRUE);
|
gm.add_importo(sp, tot_val, TRUE);
|
||||||
@ -850,15 +863,16 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
delete game;
|
delete game;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prima_valuta != gm._valfirst)
|
if (prima_valuta.not_empty() != gm._valfirst)
|
||||||
{
|
{
|
||||||
sheet.swap_columns(106, 107); // Scambia le colonne dell'importo in lire e in valuta
|
sheet.swap_columns(106, 107); // Scambia le colonne dell'importo in lire e in valuta
|
||||||
gm._valfirst = prima_valuta;
|
gm._valfirst = prima_valuta.not_empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
sheet.force_update();
|
if (sheet.items() > 0)
|
||||||
if (sheet.items() > 0 && sheet.selected() > 0)
|
|
||||||
sheet.select(0, TRUE);
|
sheet.select(0, TRUE);
|
||||||
|
else
|
||||||
|
sheet.force_update();
|
||||||
|
|
||||||
main_app().end_wait();
|
main_app().end_wait();
|
||||||
}
|
}
|
||||||
@ -1425,8 +1439,10 @@ void TGame_mask::fill_partite()
|
|||||||
// correttamente gli archivi.
|
// correttamente gli archivi.
|
||||||
if (gioco->ok())
|
if (gioco->ok())
|
||||||
{
|
{
|
||||||
const TBill& zio = gioco->conto();
|
const TBill& k = gioco->conto();
|
||||||
if (zio.tipo() <= ' ' || zio.sottoconto() == conto().sottoconto())
|
const bool u = (k.tipo() > ' ' && k.sottoconto() == conto().sottoconto()) ||
|
||||||
|
k == conto();
|
||||||
|
if (u)
|
||||||
update_partita(*gioco, -1);
|
update_partita(*gioco, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1487,7 +1503,7 @@ bool TGame_mask::edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp) co
|
|||||||
TRectype oldpag = p.pagamento(nriga, nrata, nrigp);
|
TRectype oldpag = p.pagamento(nriga, nrata, nrigp);
|
||||||
TRiga_partite& somma = p.riga(nrigp);
|
TRiga_partite& somma = p.riga(nrigp);
|
||||||
|
|
||||||
TPay_mask* pm = new TPay_mask; // We must create masks on the heap
|
TPay_mask* pm = new TPay_mask(*this); // We must create masks on the heap
|
||||||
TPay_mask& m = *pm;
|
TPay_mask& m = *pm;
|
||||||
|
|
||||||
if (nriga == TPartita::UNASSIGNED)
|
if (nriga == TPartita::UNASSIGNED)
|
||||||
|
@ -52,6 +52,7 @@ public:
|
|||||||
int pred(int r) const { return _recarr.pred_row(r); }
|
int pred(int r) const { return _recarr.pred_row(r); }
|
||||||
int succ(int r) const { return _recarr.succ_row(r); }
|
int succ(int r) const { return _recarr.succ_row(r); }
|
||||||
bool exist(int r) const { return _recarr.exist(r); }
|
bool exist(int r) const { return _recarr.exist(r); }
|
||||||
|
int rows() const { return _recarr.rows(); }
|
||||||
|
|
||||||
TTree_rectype(const TRectype& testata, const TRectype& riga, const char* num);
|
TTree_rectype(const TRectype& testata, const TRectype& riga, const char* num);
|
||||||
TTree_rectype(int testata, int riga, const char* num);
|
TTree_rectype(int testata, int riga, const char* num);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user