Corretti errori Gabriella
git-svn-id: svn://10.65.10.50/trunk@2543 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5e3950f072
commit
f3802c0cf8
@ -111,6 +111,7 @@ BEGIN
|
|||||||
ITEM "Num. doc."
|
ITEM "Num. doc."
|
||||||
ITEM "Prot. IVA"
|
ITEM "Prot. IVA"
|
||||||
ITEM "Pagamento"
|
ITEM "Pagamento"
|
||||||
|
ITEM "Bloccata"
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -224,6 +225,11 @@ BEGIN
|
|||||||
PROMPT 1 4 "Numero doc. "
|
PROMPT 1 4 "Numero doc. "
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BOOLEAN 113
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 5 "Pagamenti bloccati"
|
||||||
|
END
|
||||||
|
|
||||||
NUMBER 111 5
|
NUMBER 111 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 41 5 "Protocollo IVA "
|
PROMPT 41 5 "Protocollo IVA "
|
||||||
|
246
cg/cg2102.cpp
246
cg/cg2102.cpp
@ -269,7 +269,6 @@ bool TPrimanota_application::sub_cgs_imp(int n, const TImporto& imp)
|
|||||||
return tot.is_zero();
|
return tot.is_zero();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TImporto TPrimanota_application::real2imp(const real& r, char row_type)
|
TImporto TPrimanota_application::real2imp(const real& r, char row_type)
|
||||||
{
|
{
|
||||||
bool dare;
|
bool dare;
|
||||||
@ -513,19 +512,26 @@ HIDDEN bool imptot_error(const TImporto& imptot, const TImporto& impsal, bool va
|
|||||||
if (!residuo.is_zero())
|
if (!residuo.is_zero())
|
||||||
{
|
{
|
||||||
const char* const pic = val ? ".3" : ".";
|
const char* const pic = val ? ".3" : ".";
|
||||||
|
TPrimanota_application& a = app();
|
||||||
|
const TMask& m = a.curr_mask();
|
||||||
|
|
||||||
TString msg(255);
|
TString msg(255);
|
||||||
msg << "Il totale documento " << (val ? "in valuta" : "inserito")
|
msg << "Il totale documento " << (val ? "in valuta" : "inserito")
|
||||||
<< " e' " << imptot.valore().string(pic) << ' ' << imptot.sezione() << ",\n";
|
<< " e' " << imptot.valore().string(pic) << ' ' << imptot.sezione() << ",\n";
|
||||||
msg << "i pagamenti e le spese ammontano a "
|
msg << "i pagamenti e le spese ammontano a "
|
||||||
<< impsal.valore().string(pic) << ' ' << impsal.sezione() << ",\n";
|
<< impsal.valore().string(pic) << ' ' << impsal.sezione() << ",\n";
|
||||||
msg << "per cui il residuo e' " << residuo.valore().string(pic) << '.';
|
msg << "per cui il residuo e' " << residuo.valore().string(pic);
|
||||||
if (app().curr_mask().edit_mode() && impsal.is_zero())
|
if (val)
|
||||||
|
msg << ' ' << m.get(SK_VALUTA);
|
||||||
|
msg << '.';
|
||||||
|
|
||||||
|
if (m.edit_mode() && impsal.is_zero())
|
||||||
{
|
{
|
||||||
msg << "\nSi desidera registrare ugualmente?";
|
msg << "\nSi desidera registrare ugualmente?";
|
||||||
ok = app().cgs().yesno_box(msg);
|
ok = a.cgs().yesno_box(msg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ok = app().cgs().error_box(msg);
|
ok = a.cgs().error_box(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
@ -537,7 +543,8 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
if (k == K_ENTER)
|
if (k == K_ENTER)
|
||||||
{
|
{
|
||||||
const real saldo = app().calcola_saldo();
|
TPrimanota_application& a = app();
|
||||||
|
const real saldo = a.calcola_saldo();
|
||||||
|
|
||||||
if (saldo != ZERO)
|
if (saldo != ZERO)
|
||||||
{
|
{
|
||||||
@ -545,8 +552,8 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
|
|||||||
return f.error_box("Il movimento e' sbilanciato di %s lire.", ss);
|
return f.error_box("Il movimento e' sbilanciato di %s lire.", ss);
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool paga = app().is_pagamento();
|
const bool paga = a.is_pagamento();
|
||||||
const bool nota = app().is_nota_credito();
|
const bool nota = a.is_nota_credito();
|
||||||
|
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
const long numreg = m.get_long(F_NUMREG);
|
const long numreg = m.get_long(F_NUMREG);
|
||||||
@ -554,7 +561,7 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
|
|||||||
const bool in_valuta = m.get(SK_VALUTA).not_empty();
|
const bool in_valuta = m.get(SK_VALUTA).not_empty();
|
||||||
TImporto saldaconto, saldaconto_val;
|
TImporto saldaconto, saldaconto_val;
|
||||||
|
|
||||||
TSheet_field& cg = app().cgs();
|
TSheet_field& cg = a.cgs();
|
||||||
bool empty = TRUE;
|
bool empty = TRUE;
|
||||||
for (int i = 0; i < cg.items(); i++)
|
for (int i = 0; i < cg.items(); i++)
|
||||||
{
|
{
|
||||||
@ -600,7 +607,7 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
saldaconto += importo;
|
saldaconto += importo;
|
||||||
if (in_valuta)
|
if (in_valuta)
|
||||||
saldaconto_val += app().partite().importo_speso(numreg, i+1, TRUE);
|
saldaconto_val += a.partite().importo_speso(numreg, i+1, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -608,25 +615,26 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
|
|||||||
|
|
||||||
if (paga)
|
if (paga)
|
||||||
{
|
{
|
||||||
const char s(app().causale().sezione(2));
|
const char s(a.causale().sezione(2));
|
||||||
const real t(f.mask().get(F_TOTALE));
|
const real t(m.get(F_TOTALE));
|
||||||
const TImporto totdoc(s, t);
|
const TImporto totdoc(s, t);
|
||||||
const bool ok = imptot_error(totdoc, saldaconto, FALSE);
|
bool ok = imptot_error(totdoc, saldaconto, FALSE);
|
||||||
if (!ok) return FALSE;
|
|
||||||
|
|
||||||
if (in_valuta)
|
if (ok && in_valuta && !saldaconto.is_zero())
|
||||||
{
|
{
|
||||||
const real t(f.mask().get(SK_TOTDOCVAL));
|
const real t(m.get(SK_TOTDOCVAL));
|
||||||
const TImporto totdoc_val(s, t);
|
const TImporto totdoc_val(s, t);
|
||||||
const bool ok = imptot_error(totdoc_val, saldaconto_val, TRUE);
|
ok = imptot_error(totdoc_val, saldaconto_val, TRUE);
|
||||||
if (!ok) return FALSE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (app().is_fattura())
|
if (!ok)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a.is_fattura())
|
||||||
{
|
{
|
||||||
TBill contocf;
|
TBill contocf;
|
||||||
if (app().cerca_conto_cf(contocf) < 0)
|
if (a.cerca_conto_cf(contocf) < 0)
|
||||||
{
|
{
|
||||||
TString msg(80); msg = "Non esiste una riga contabile riferita al ";
|
TString msg(80); msg = "Non esiste una riga contabile riferita al ";
|
||||||
msg << (contocf.tipo() == 'C' ? "cliente" : "fornitore") << ' ';
|
msg << (contocf.tipo() == 'C' ? "cliente" : "fornitore") << ' ';
|
||||||
@ -789,8 +797,13 @@ bool TPrimanota_application::cg_notify(TSheet_field& cg, int r, KEY k)
|
|||||||
|
|
||||||
CHECKD(r >= 0, "Chi e' quel ca$$one che notifica la riga ", r);
|
CHECKD(r >= 0, "Chi e' quel ca$$one che notifica la riga ", r);
|
||||||
|
|
||||||
|
TPrimanota_application& a = app();
|
||||||
|
|
||||||
if (k == K_CTRL + K_DEL)
|
if (k == K_CTRL + K_DEL)
|
||||||
|
{
|
||||||
|
a.calcola_saldo(); // Ricalcola saldo dopo cancellazione
|
||||||
return TRUE; // Ritorna subito, altrimenti crea riga vuota
|
return TRUE; // Ritorna subito, altrimenti crea riga vuota
|
||||||
|
}
|
||||||
|
|
||||||
TToken_string& row = cg.row(r);
|
TToken_string& row = cg.row(r);
|
||||||
const char tipo = row_type(row); // Tipo della riga in esame
|
const char tipo = row_type(row); // Tipo della riga in esame
|
||||||
@ -813,7 +826,9 @@ bool TPrimanota_application::cg_notify(TSheet_field& cg, int r, KEY k)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (tipo == 'K')
|
if (tipo == 'K')
|
||||||
app().notify_cgline_deletion(r+1);
|
{
|
||||||
|
a.notify_cgline_deletion(r+1);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case K_ENTER:
|
case K_ENTER:
|
||||||
@ -824,20 +839,21 @@ bool TPrimanota_application::cg_notify(TSheet_field& cg, int r, KEY k)
|
|||||||
{
|
{
|
||||||
const int s = type2pos('L');
|
const int s = type2pos('L');
|
||||||
if (s < 0)
|
if (s < 0)
|
||||||
app().crea_somma_spese(growth);
|
a.crea_somma_spese(growth);
|
||||||
else
|
else
|
||||||
app().sub_cgs_imp(s, growth);
|
a.sub_cgs_imp(s, growth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (app().iva() == nessuna_iva && !app().is_saldaconto())
|
if (a.iva() == nessuna_iva && !a.is_saldaconto())
|
||||||
app().generazione_righe_cg(r);
|
a.generazione_righe_cg(r);
|
||||||
}
|
}
|
||||||
app().calcola_saldo();
|
if (k == K_ENTER)
|
||||||
|
a.calcola_saldo();
|
||||||
break;
|
break;
|
||||||
case K_CTRL+K_INS: // Post inserimento
|
case K_CTRL+K_INS: // Post inserimento
|
||||||
if (app().is_pagamento())
|
if (a.is_pagamento())
|
||||||
{
|
{
|
||||||
const char tipo = cg.mask().get(SK_TIPORIGA)[0];
|
const char tipo = cg.mask().get(SK_TIPORIGA)[0];
|
||||||
if (tipo == 'K' || tipo == 'G')
|
if (tipo == 'K' || tipo == 'G')
|
||||||
@ -848,7 +864,7 @@ bool TPrimanota_application::cg_notify(TSheet_field& cg, int r, KEY k)
|
|||||||
const char sez = app().causale().sezione(k);
|
const char sez = app().causale().sezione(k);
|
||||||
const real imp(cg.mask().get(K_RESIDUO));
|
const real imp(cg.mask().get(K_RESIDUO));
|
||||||
TImporto importo(sez, imp);
|
TImporto importo(sez, imp);
|
||||||
app().set_cgs_row(r, importo, conto, desc, tipo);
|
a.set_cgs_row(r, importo, conto, desc, tipo);
|
||||||
|
|
||||||
if (tipo == 'K')
|
if (tipo == 'K')
|
||||||
{
|
{
|
||||||
@ -870,9 +886,9 @@ bool TPrimanota_application::cg_notify(TSheet_field& cg, int r, KEY k)
|
|||||||
{
|
{
|
||||||
const int s = type2pos('L');
|
const int s = type2pos('L');
|
||||||
if (s < 0)
|
if (s < 0)
|
||||||
app().crea_somma_spese(importo);
|
a.crea_somma_spese(importo);
|
||||||
else
|
else
|
||||||
app().sub_cgs_imp(s, importo);
|
a.sub_cgs_imp(s, importo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1128,18 +1144,19 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
|||||||
static real oldimp, oldiva;
|
static real oldimp, oldiva;
|
||||||
|
|
||||||
TToken_string& row = iva.row(r);
|
TToken_string& row = iva.row(r);
|
||||||
const TCausale& cau = app().causale();
|
TPrimanota_application& a = app();
|
||||||
|
const TCausale& cau = a.causale();
|
||||||
|
|
||||||
if (k == K_SPACE)
|
if (k == K_SPACE)
|
||||||
{
|
{
|
||||||
oldimp = real(row.get(0)); // Imponibile
|
oldimp = real(row.get(0)); // Imponibile
|
||||||
oldiva = real(row.get(3)); // Imposta
|
oldiva = real(row.get(3)); // Imposta
|
||||||
|
|
||||||
if (oldiva.is_zero() && cau.corrispettivi())
|
if (oldiva.is_zero() && cau.corrispettivi()) // In caso di corrispettivi ...
|
||||||
{ // In caso di corrispettivi ...
|
{
|
||||||
const TCodiceIVA i(row.get(1));
|
const TString zanicchi(row.get(1)); // Codice IVA
|
||||||
const real percent = i.percentuale();
|
const TCodiceIVA i(zanicchi);
|
||||||
oldiva = scorpora(oldimp, percent); // ... scorpora imposta dall'imponibile
|
oldiva = i.scorpora(oldimp); // ... scorpora imposta dall'imponibile
|
||||||
}
|
}
|
||||||
|
|
||||||
const char tipod = detraibile(row) ? 'D' : 'N';
|
const char tipod = detraibile(row) ? 'D' : 'N';
|
||||||
@ -1152,7 +1169,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
|||||||
if (c.ok())
|
if (c.ok())
|
||||||
{
|
{
|
||||||
const TString80 d(cau.desc_agg(ri));
|
const TString80 d(cau.desc_agg(ri));
|
||||||
oldposiva = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), c, d, tipod);
|
oldposiva = a.set_cgs_row(-1, app().real2imp(ZERO, 'I'), c, d, tipod);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (ri == 4) // Se non esiste il conto IVA indetraibile ...
|
if (ri == 4) // Se non esiste il conto IVA indetraibile ...
|
||||||
@ -1169,7 +1186,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
|||||||
if (oldpos < 0)
|
if (oldpos < 0)
|
||||||
{
|
{
|
||||||
const TString80 d(cau.desc_agg(2));
|
const TString80 d(cau.desc_agg(2));
|
||||||
oldpos = app().set_cgs_row(-1, app().real2imp(ZERO, 'I'), oldconto, d, 'I');
|
oldpos = a.set_cgs_row(-1, a.real2imp(ZERO, 'I'), oldconto, d, 'I');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1186,27 +1203,27 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
|||||||
int delimp = -1, deliva = -1; // Eventuali righe contabili da cancellare
|
int delimp = -1, deliva = -1; // Eventuali righe contabili da cancellare
|
||||||
if (oldpos >= 0) // Se il conto esisteva anche prima ...
|
if (oldpos >= 0) // Se il conto esisteva anche prima ...
|
||||||
{ // sottrai il vecchio imponibile
|
{ // sottrai il vecchio imponibile
|
||||||
TImporto i(app().get_cgs_imp(oldpos));
|
TImporto i(a.get_cgs_imp(oldpos));
|
||||||
i.valore() -= oldimp;
|
i.valore() -= oldimp;
|
||||||
app().set_cgs_imp(oldpos, i);
|
a.set_cgs_imp(oldpos, i);
|
||||||
if (i.is_zero()) delimp = oldpos;
|
if (i.is_zero()) delimp = oldpos;
|
||||||
}
|
}
|
||||||
if (oldposiva >= 0) // Se conto IVA esisteva anche prima ...
|
if (oldposiva >= 0) // Se conto IVA esisteva anche prima ...
|
||||||
{ // sottrai la vecchia imposta
|
{ // sottrai la vecchia imposta
|
||||||
TImporto i(app().get_cgs_imp(oldposiva));
|
TImporto i(a.get_cgs_imp(oldposiva));
|
||||||
i.valore() -= oldiva;
|
i.valore() -= oldiva;
|
||||||
app().set_cgs_imp(oldposiva, i);
|
a.set_cgs_imp(oldposiva, i);
|
||||||
if (i.is_zero()) deliva = oldposiva;
|
if (i.is_zero()) deliva = oldposiva;
|
||||||
}
|
}
|
||||||
|
|
||||||
real imponibile(row.get(0)); // Nuovo imponibile
|
real imponibile(row.get(0)); // Nuovo imponibile
|
||||||
real imposta(row.get(3)); // Nuova imposta
|
real imposta(row.get(3)); // Nuova imposta
|
||||||
|
|
||||||
if (imposta.is_zero() && app().causale().corrispettivi())
|
if (imposta.is_zero() && cau.corrispettivi()) // In caso di corrispettivi ...
|
||||||
{ // In caso di corrispettivi ...
|
{
|
||||||
const TCodiceIVA i(row.get(1));
|
const TString zanicchi(row.get(1));
|
||||||
const real percent = i.percentuale();
|
const TCodiceIVA i(zanicchi);
|
||||||
imposta = scorpora(imponibile, percent); // ... scorpora imposta dall'imponibile
|
imposta = i.scorpora(imponibile); // ... scorpora imposta dall'imponibile
|
||||||
}
|
}
|
||||||
|
|
||||||
TBill conto(row, 5, 0x3);
|
TBill conto(row, 5, 0x3);
|
||||||
@ -1216,7 +1233,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
|||||||
|
|
||||||
// Calcola riga causale col conto opportuno
|
// Calcola riga causale col conto opportuno
|
||||||
const int ri = detrarre ? RIGA_IVA_DETRAIBILE : RIGA_IVA_NON_DETRAIBILE;
|
const int ri = detrarre ? RIGA_IVA_DETRAIBILE : RIGA_IVA_NON_DETRAIBILE;
|
||||||
TBill contoiva; app().causale().bill(ri, contoiva);
|
TBill contoiva; cau.bill(ri, contoiva);
|
||||||
|
|
||||||
if (ri == 4 && !contoiva.ok()) // Se non c'e' il conto IVA indetraibile ...
|
if (ri == 4 && !contoiva.ok()) // Se non c'e' il conto IVA indetraibile ...
|
||||||
{ // ... somma imponibile e imposta
|
{ // ... somma imponibile e imposta
|
||||||
@ -1229,24 +1246,24 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
|||||||
{
|
{
|
||||||
if (delimp >= 0)
|
if (delimp >= 0)
|
||||||
{
|
{
|
||||||
app().reset_cgs_row(delimp); // Cancella vecchia riga
|
a.reset_cgs_row(delimp); // Cancella vecchia riga
|
||||||
if (deliva > delimp) deliva--;
|
if (deliva > delimp) deliva--;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TImporto val(app().real2imp(imponibile, 'I'));
|
const TImporto val(a.real2imp(imponibile, 'I'));
|
||||||
if (conto.ok() && !val.is_zero()) // Se c'e' imponibile ...
|
if (conto.ok() && !val.is_zero()) // Se c'e' imponibile ...
|
||||||
{ // crea una nuova riga contabile
|
{ // crea una nuova riga contabile
|
||||||
const TString80 d(cau.desc_agg(2));
|
const TString80 d(cau.desc_agg(2));
|
||||||
app().set_cgs_row(-1, val, conto, d, 'I');
|
a.set_cgs_row(-1, val, conto, d, 'I');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TImporto val(app().real2imp(imponibile, 'I'));
|
TImporto val(a.real2imp(imponibile, 'I'));
|
||||||
const bool empty = app().add_cgs_imp(newpos, val);
|
const bool empty = a.add_cgs_imp(newpos, val);
|
||||||
if (empty) // Se la riga si e' azzerata ...
|
if (empty) // Se la riga si e' azzerata ...
|
||||||
{ // ... cancellala
|
{ // ... cancellala
|
||||||
app().reset_cgs_row(newpos);
|
a.reset_cgs_row(newpos);
|
||||||
newpos = -1;
|
newpos = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1259,24 +1276,24 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
|||||||
int newposiva = type2pos(tipod);
|
int newposiva = type2pos(tipod);
|
||||||
|
|
||||||
if (deliva >= 0 && newposiva != deliva) // E' cambiato il tipo d'imposta
|
if (deliva >= 0 && newposiva != deliva) // E' cambiato il tipo d'imposta
|
||||||
app().reset_cgs_row(deliva); // Azzera il vecchio tipo se necessario
|
a.reset_cgs_row(deliva); // Azzera il vecchio tipo se necessario
|
||||||
|
|
||||||
if (newposiva < 0)
|
if (newposiva < 0)
|
||||||
{
|
{
|
||||||
if (!imposta.is_zero()) // Se c'e' imposta ...
|
if (!imposta.is_zero()) // Se c'e' imposta ...
|
||||||
{ // ... crea nuova riga per l'IVA
|
{ // ... crea nuova riga per l'IVA
|
||||||
const TImporto val(app().real2imp(imposta, 'I'));
|
const TImporto val(a.real2imp(imposta, 'I'));
|
||||||
const TString80 d(cau.desc_agg(ri));
|
const TString80 d(cau.desc_agg(ri));
|
||||||
newposiva = app().set_cgs_row(-1, val, contoiva, d, tipod);
|
newposiva = a.set_cgs_row(-1, val, contoiva, d, tipod);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const TImporto val(app().real2imp(imposta, 'I'));
|
const TImporto val(a.real2imp(imposta, 'I'));
|
||||||
const bool empty = app().add_cgs_imp(newposiva, val);
|
const bool empty = a.add_cgs_imp(newposiva, val);
|
||||||
if (empty) // Se l'imposta si e' azzerata ...
|
if (empty) // Se l'imposta si e' azzerata ...
|
||||||
{
|
{
|
||||||
app().reset_cgs_row(newposiva); // ... cancellala
|
a.reset_cgs_row(newposiva); // ... cancellala
|
||||||
newposiva = -1;
|
newposiva = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1284,20 +1301,20 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
|||||||
oldiva = imposta;
|
oldiva = imposta;
|
||||||
oldposiva = newposiva;
|
oldposiva = newposiva;
|
||||||
|
|
||||||
TMask& m = app().curr_mask();
|
TMask& m = a.curr_mask();
|
||||||
if (r == 0) // Se cambio la prima riga ...
|
if (r == 0) // Se cambio la prima riga ...
|
||||||
{
|
{
|
||||||
app().add_cgs_tot(m); // ... ricalcola conti e imponibili
|
a.add_cgs_tot(m); // ... ricalcola conti e imponibili
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
app().calcola_saldo(); // Calcola sbilancio
|
a.calcola_saldo(); // Calcola sbilancio
|
||||||
app().calcola_imp(); // Calcola imponibili
|
a.calcola_imp(); // Calcola imponibili
|
||||||
}
|
}
|
||||||
|
|
||||||
if (app().is_fattura() && m.insert_mode())
|
if (a.is_fattura() && m.insert_mode())
|
||||||
{
|
{
|
||||||
TPagamento& pag = app().pagamento();
|
TPagamento& pag = a.pagamento();
|
||||||
real imposta, imponibile;
|
real imposta, imponibile;
|
||||||
if (pag.in_valuta())
|
if (pag.in_valuta())
|
||||||
{
|
{
|
||||||
@ -1314,7 +1331,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
|||||||
pimposta.round(pag.round()); pimponibile.round(pag.round());
|
pimposta.round(pag.round()); pimponibile.round(pag.round());
|
||||||
|
|
||||||
if (pimposta != imposta || pimponibile != imponibile)
|
if (pimposta != imposta || pimponibile != imponibile)
|
||||||
app().set_scadenze(m); // Ricalcola rate
|
a.set_scadenze(m); // Ricalcola rate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -1373,19 +1390,16 @@ 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();
|
TMask& m = f.mask();
|
||||||
if (m.get(CG_ROWTYPE)[0] == 'T') // Se riga totale documento
|
if (m.get(CG_ROWTYPE)[0] == 'T') // Se riga totale documento
|
||||||
{
|
{
|
||||||
|
const char tipo = app().clifo(); // Tipo conto richiesto dal movimento
|
||||||
char cf = m.get(f.dlg()-2)[0];
|
char cf = m.get(f.dlg()-2)[0];
|
||||||
if (cf < ' ') cf = ' '; // Tipo conto della riga
|
if (cf < ' ') cf = ' '; // Tipo conto della riga
|
||||||
|
|
||||||
char tipo = ' '; // Tipo conto richiesto dal movimento
|
|
||||||
if (!app().causale().corrispettivi())
|
|
||||||
tipo = app().clifo();
|
|
||||||
|
|
||||||
if (cf != tipo) // Incongruenza!
|
if (cf != tipo) // Incongruenza!
|
||||||
{
|
{
|
||||||
const char* d = tipo == ' ' ? "normale" : (tipo == 'C' ? "clienti" : "fornitori");
|
const char* d = tipo == ' ' ? "normale" : (tipo == 'C' ? "clienti" : "fornitori");
|
||||||
@ -1393,7 +1407,7 @@ bool TPrimanota_application::cg_conto_handler(TMask_field& f, KEY key)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1430,22 +1444,28 @@ bool TPrimanota_application::sheet_clifo_handler(TMask_field& f, KEY k)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (k == K_TAB || k == K_ENTER)
|
if (k == K_TAB || k == K_ENTER)
|
||||||
{
|
|
||||||
TMask& m = f.mask();
|
|
||||||
const short cid = 100 + (f.dlg() % 100) -1;
|
|
||||||
const int conto = m.get_int(cid);
|
|
||||||
if (conto == 0)
|
|
||||||
{
|
{
|
||||||
const long codice = atol(f.get());
|
const long codice = atol(f.get());
|
||||||
if (codice > 0L)
|
if (codice > 0L)
|
||||||
|
{
|
||||||
|
TMask& m = f.mask();
|
||||||
|
const short cid = 100 + (f.dlg() % 100) -1;
|
||||||
|
const short gid = cid-1;
|
||||||
|
const int conto = m.get_int(cid);
|
||||||
|
const int gruppo = m.get_int(gid);
|
||||||
|
if (gruppo == 0 && conto == 0)
|
||||||
{
|
{
|
||||||
TBill c(0, 0, codice, f.dlg() > 300 ? 'F' : 'C');
|
TBill c(0, 0, codice, f.dlg() > 300 ? 'F' : 'C');
|
||||||
c.descrizione(); // Carica gruppo e conto
|
m.set(f.dlg()+1, c.descrizione()); // Carica gruppo e conto
|
||||||
m.set(cid-1, c.gruppo());
|
if (c.ok())
|
||||||
|
{
|
||||||
|
m.set(gid-1, c.tipo() == 'C' ? "C" : "F");
|
||||||
|
m.set(gid, c.gruppo());
|
||||||
m.set(cid, c.conto());
|
m.set(cid, c.conto());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1727,15 +1747,12 @@ bool TPrimanota_application::numdoc_handler(TMask_field& f, KEY key)
|
|||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
if (key == K_TAB && f.to_check(key, TRUE) && m.insert_mode() && app().is_saldaconto())
|
if (key == K_TAB && f.to_check(key, TRUE) && m.insert_mode() && app().is_saldaconto())
|
||||||
{
|
|
||||||
if (!app().npart_is_prot()) // Copiare numero documento nel numero partita?
|
|
||||||
{
|
|
||||||
if (m.get(F_NUMRIF).empty())
|
|
||||||
{
|
{
|
||||||
const TString16 n = f.get();
|
const TString16 n = f.get();
|
||||||
if (n.not_empty())
|
if (n.not_empty() && !app().npart_is_prot()) // Copiare numero documento nel numero partita?
|
||||||
m.set(F_NUMRIF, f.get(), TRUE);
|
{
|
||||||
}
|
if (m.field(F_NUMRIF).active() && m.get(F_NUMRIF).empty())
|
||||||
|
m.set(F_NUMRIF, n, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -1750,7 +1767,7 @@ bool TPrimanota_application::datadoc_handler(TMask_field& f, KEY key)
|
|||||||
const TDate dd(f.get()); // Fattura o nota credito
|
const TDate dd(f.get()); // Fattura o nota credito
|
||||||
if (dd.ok())
|
if (dd.ok())
|
||||||
{
|
{
|
||||||
if (m.get(F_ANNORIF).empty() && m.insert_mode())
|
if (m.insert_mode() && m.field(F_ANNORIF).active() && m.get(F_ANNORIF).empty())
|
||||||
m.set(F_ANNORIF, dd.year()); // copia anno documento
|
m.set(F_ANNORIF, dd.year()); // copia anno documento
|
||||||
|
|
||||||
TPrimanota_application& a = app();
|
TPrimanota_application& a = app();
|
||||||
@ -1807,31 +1824,40 @@ bool TPrimanota_application::occas_handler(TMask_field& f, KEY key)
|
|||||||
// Certified 99%
|
// Certified 99%
|
||||||
void TPrimanota_application::add_cgs_tot(TMask& m)
|
void TPrimanota_application::add_cgs_tot(TMask& m)
|
||||||
{
|
{
|
||||||
const char tipo = app().clifo();
|
const bool corri = causale().corrispettivi();
|
||||||
|
const char tipo = corri ? ' ' : app().clifo();
|
||||||
int gruppo = 0, conto = 0;
|
int gruppo = 0, conto = 0;
|
||||||
const long codice = m.get_long(tipo == 'C' ? F_CLIENTE : F_FORNITORE);
|
long codice = corri ? 0L : m.get_long(tipo == 'C' ? F_CLIENTE : F_FORNITORE);
|
||||||
|
|
||||||
|
TSheet_field& ss = cgs();
|
||||||
const int riga_totale = type2pos('T');
|
const int riga_totale = type2pos('T');
|
||||||
|
|
||||||
|
// Cerca di preservare il gruppo-conto-sottoconto sulla riga totale
|
||||||
if (riga_totale >= 0)
|
if (riga_totale >= 0)
|
||||||
{
|
{
|
||||||
TToken_string& rowt = cgs().row(riga_totale);
|
TToken_string& rowt = ss.row(riga_totale);
|
||||||
gruppo = rowt.get_int(3);
|
gruppo = rowt.get_int(3);
|
||||||
conto = rowt.get_int();
|
conto = rowt.get_int();
|
||||||
|
if (corri)
|
||||||
|
codice = rowt.get_long();
|
||||||
}
|
}
|
||||||
|
|
||||||
TBill nuovo(gruppo, conto, codice, tipo);
|
TBill nuovo(gruppo, conto, codice, tipo);
|
||||||
if ((gruppo == 0 || conto == 0) && !causale().corrispettivi())
|
if (!corri && (gruppo == 0 || conto == 0))
|
||||||
nuovo.find(); // Compila anche gruppo e conto
|
nuovo.find(); // Compila anche gruppo e conto in base al codice clifo
|
||||||
|
|
||||||
if (nuovo.gruppo() == 0 || nuovo.conto() == 0)
|
if (nuovo.gruppo() == 0 || nuovo.conto() == 0)
|
||||||
{
|
{
|
||||||
// Se l'utente non ha ancora specificato un conto lo prendo dalla prima riga della causale
|
// Se l'utente non ha ancora specificato un conto lo prendo dalla prima riga della causale
|
||||||
causale().bill(1, nuovo);
|
causale().bill(1, nuovo);
|
||||||
|
|
||||||
|
// Nelle fatture si deve sempre aggiungere il codice clifo (in causale normalmente non c'e')
|
||||||
|
if (!corri)
|
||||||
|
nuovo.codclifo() = codice;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (riga_totale >= 0)
|
if (riga_totale >= 0)
|
||||||
{
|
{
|
||||||
TSheet_field& ss = cgs();
|
|
||||||
TToken_string& row = ss.row(riga_totale);
|
TToken_string& row = ss.row(riga_totale);
|
||||||
const TBill vecchio(row, 2, 0x1);
|
const TBill vecchio(row, 2, 0x1);
|
||||||
if (!vecchio.empty() && nuovo != vecchio) // Se cambio cliente/fornitore
|
if (!vecchio.empty() && nuovo != vecchio) // Se cambio cliente/fornitore
|
||||||
@ -1996,22 +2022,23 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
|
|||||||
if (!suspended_handler(f, key))
|
if (!suspended_handler(f, key))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
const real imp(app().ivas().row(1).get(0)); // Se il totale non e' stato spezzato
|
TPrimanota_application& a = app();
|
||||||
|
const real imp(a.ivas().row(1).get(0)); // Se il totale non e' stato spezzato
|
||||||
if (imp.is_zero())
|
if (imp.is_zero())
|
||||||
{
|
{
|
||||||
TToken_string& row = app().ivas().row(0);
|
TToken_string& row = a.ivas().row(0);
|
||||||
|
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
iva_notify(app().ivas(), 0, K_SPACE);
|
iva_notify(a.ivas(), 0, K_SPACE);
|
||||||
|
|
||||||
const TCodiceIVA iva(f.get());
|
const TCodiceIVA iva(f.get());
|
||||||
const bool corr = app().causale().corrispettivi();
|
const bool corr = a.causale().corrispettivi();
|
||||||
const bool acq3 = (app().iva() == iva_acquisti) && (row.get_int(2) == 3);
|
const bool acq3 = (a.iva() == iva_acquisti) && (row.get_int(2) == 3);
|
||||||
|
|
||||||
real tot = app().totale_documento(); // Calcola totale documento
|
real tot = a.totale_documento(); // Calcola totale documento
|
||||||
real imposta; // Calcola imposta
|
real imposta; // Calcola imposta
|
||||||
if (!corr && !acq3)
|
if (!corr && !acq3)
|
||||||
imposta = app().scorpora(tot, iva.percentuale());
|
imposta = iva.scorpora(tot);
|
||||||
|
|
||||||
row.add(tot.string(), 0); // imponibile
|
row.add(tot.string(), 0); // imponibile
|
||||||
row.add(imposta.string(), 3); // imposta
|
row.add(imposta.string(), 3); // imposta
|
||||||
@ -2020,12 +2047,12 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
|
|||||||
{
|
{
|
||||||
row.add(iva.codice(), 1); // Aggiorna codice IVA
|
row.add(iva.codice(), 1); // Aggiorna codice IVA
|
||||||
TBill bill; // Aggiorna conto della prima riga IVA
|
TBill bill; // Aggiorna conto della prima riga IVA
|
||||||
app().IVA2bill(iva, bill);
|
a.IVA2bill(iva, bill);
|
||||||
bill.add_to(row, 4, 0x7);
|
bill.add_to(row, 4, 0x7);
|
||||||
}
|
}
|
||||||
app().ivas().force_update(0);
|
a.ivas().force_update(0);
|
||||||
|
|
||||||
iva_notify(app().ivas(), 0, K_ENTER);
|
iva_notify(a.ivas(), 0, K_ENTER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -2187,13 +2214,12 @@ bool TPrimanota_application::protiva_handler(TMask_field& f, KEY key)
|
|||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (key == K_TAB &&
|
if (key == K_TAB && m.insert_mode() && app().npart_is_prot() &&
|
||||||
app().is_saldaconto() && app().npart_is_prot() &&
|
m.field(F_NUMRIF).active() && m.get(F_NUMRIF).empty())
|
||||||
m.insert_mode() && m.get(F_NUMRIF).empty())
|
|
||||||
{
|
{
|
||||||
const TString& piva = f.get();
|
const TString& piva = f.get();
|
||||||
if (piva.not_empty())
|
if (piva.not_empty())
|
||||||
m.set(F_NUMRIF, piva);
|
m.set(F_NUMRIF, piva, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
|
@ -30,7 +30,7 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k)
|
|||||||
TMask* msk = &(ps.mask());
|
TMask* msk = &(ps.mask());
|
||||||
TString_array& rws = app().pag_rows();
|
TString_array& rws = app().pag_rows();
|
||||||
|
|
||||||
const int rdiff = atoi(msk->get(FS_RDIFFER));
|
const int rdiff = msk->get_int(FS_RDIFFER);
|
||||||
const bool in_valuta = pag.in_valuta();
|
const bool in_valuta = pag.in_valuta();
|
||||||
const int impos = in_valuta ? 2 : 1;
|
const int impos = in_valuta ? 2 : 1;
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k)
|
|||||||
{
|
{
|
||||||
case K_SPACE:
|
case K_SPACE:
|
||||||
{
|
{
|
||||||
const bool can = !recalc && pag.n_rate() > 1 && ps.row(r).get_char(11) != 'X';
|
const bool can = !recalc && pag.n_rate() > 1 && ps.row(r).get_char(13) != 'X';
|
||||||
ps.sheet_mask().enable(DLG_DELREC, can);
|
ps.sheet_mask().enable(DLG_DELREC, can);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -94,7 +94,7 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case K_DEL:
|
case K_DEL:
|
||||||
doit = !recalc && pag.n_rate() > 1 && ps.row(r).get_char(11) != 'X';
|
doit = !recalc && pag.n_rate() > 1 && ps.row(r).get_char(13) != 'X';
|
||||||
if (doit)
|
if (doit)
|
||||||
{
|
{
|
||||||
pag.remove_rata(r);
|
pag.remove_rata(r);
|
||||||
@ -123,7 +123,6 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// settato da recalc_rate se occorre ridefinire lo sheet
|
// settato da recalc_rate se occorre ridefinire lo sheet
|
||||||
// aggiungendo o togliendo righe
|
// aggiungendo o togliendo righe
|
||||||
bool need_recalc = FALSE;
|
bool need_recalc = FALSE;
|
||||||
@ -299,11 +298,10 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
|
|||||||
bool ok = TRUE;
|
bool ok = TRUE;
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
|
|
||||||
const bool set_scad = m.field(F_NUMRIF).active() && !m.get(F_NUMRIF).blank();
|
const bool set_scad = m.page_enabled(2); // E' attiva pagina 3
|
||||||
|
|
||||||
if (key == K_ENTER)
|
if (key == K_ENTER)
|
||||||
{
|
{
|
||||||
const bool required = (m.insert_mode() && !m.get_bool(F_SOLAIVA)) || set_scad;
|
const bool required = app().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"
|
error_box("Il codice di pagamento e' obbligatorio!\n"
|
||||||
@ -414,8 +412,8 @@ bool TPrimanota_application::valuta_handler(TMask_field& f, KEY key)
|
|||||||
{
|
{
|
||||||
TMask_field& dc = m.field(SK_DATACAMBIO);
|
TMask_field& dc = m.field(SK_DATACAMBIO);
|
||||||
if (dc.get().empty()) // Inizializza data cambio se assente
|
if (dc.get().empty()) // Inizializza data cambio se assente
|
||||||
m.set(SK_DATACAMBIO, m.get(F_DATADOC), TRUE);
|
dc.set(m.get(F_DATADOC));
|
||||||
else if (f.focusdirty())
|
if (f.focusdirty())
|
||||||
{
|
{
|
||||||
dc.set_dirty();
|
dc.set_dirty();
|
||||||
dc.check(RUNNING_CHECK); // Forza ricerca cambio
|
dc.check(RUNNING_CHECK); // Forza ricerca cambio
|
||||||
@ -448,7 +446,7 @@ bool TPrimanota_application::datacambio_handler(TMask_field& f, KEY key)
|
|||||||
|
|
||||||
bool TPrimanota_application::cambio_handler(TMask_field& f, KEY key)
|
bool TPrimanota_application::cambio_handler(TMask_field& f, KEY key)
|
||||||
{
|
{
|
||||||
if (key == K_TAB)
|
if (key == K_TAB && f.to_check(key, TRUE))
|
||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
TPrimanota_application& a = app();
|
TPrimanota_application& a = app();
|
||||||
@ -463,7 +461,7 @@ bool TPrimanota_application::cambio_handler(TMask_field& f, KEY key)
|
|||||||
{
|
{
|
||||||
TPagamento& pag = a.pagamento();
|
TPagamento& pag = a.pagamento();
|
||||||
const real ex(f.get());
|
const real ex(f.get());
|
||||||
pag.set_cambio(ex); // Aggiorna cambio sul pagamento
|
pag.set_cambio(ex, m.get_bool(FS_RECALC)); // Aggiorna cambio sul pagamento
|
||||||
update = TRUE;
|
update = TRUE;
|
||||||
|
|
||||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||||
@ -674,14 +672,14 @@ void TPrimanota_application::set_totale_pagamento()
|
|||||||
|
|
||||||
const TMask& m = curr_mask();
|
const TMask& m = curr_mask();
|
||||||
TPagamento& pag = pagamento();
|
TPagamento& pag = pagamento();
|
||||||
pag.set_cambio(m.get_real(SK_CAMBIO));
|
pag.set_cambio(m.get_real(SK_CAMBIO), FALSE);
|
||||||
real implit;
|
|
||||||
|
|
||||||
if (pag.in_valuta())
|
if (pag.in_valuta())
|
||||||
{
|
{
|
||||||
imposta = m.get_real(F_IMPOSTE) / pag.cambio(); imposta.round(3);
|
imposta = m.get_real(F_IMPOSTE) / pag.cambio(); imposta.round(3);
|
||||||
imponibile = m.get_real(SK_TOTDOCVAL) - imposta;
|
imponibile = m.get_real(SK_TOTDOCVAL) - imposta;
|
||||||
implit = m.get_real(F_TOTALE);
|
const real totlit = m.get_real(F_TOTALE);
|
||||||
|
pag.set_totlit(totlit);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -690,7 +688,6 @@ void TPrimanota_application::set_totale_pagamento()
|
|||||||
}
|
}
|
||||||
|
|
||||||
pag.set_total(imponibile, imposta, spese);
|
pag.set_total(imponibile, imposta, spese);
|
||||||
pag.set_implit(implit);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimanota_application::set_scadenze(TMask& m)
|
void TPrimanota_application::set_scadenze(TMask& m)
|
||||||
@ -772,15 +769,15 @@ bool TPrimanota_application::read_scadenze(TMask& m)
|
|||||||
real importo = scadenza.get(SCAD_IMPORTO);
|
real importo = scadenza.get(SCAD_IMPORTO);
|
||||||
const TDate scad = scadenza.get(SCAD_DATASCAD);
|
const TDate scad = scadenza.get(SCAD_DATASCAD);
|
||||||
const int tipop = scadenza.get_int(SCAD_TIPOPAG);
|
const int tipop = scadenza.get_int(SCAD_TIPOPAG);
|
||||||
const bool paid = i <= protette; // Non cancellabile
|
const bool prot = i <= protette; // Non cancellabile
|
||||||
const TString16 ulc = scadenza.get(SCAD_ULTCLASS);
|
const TString16 ulc = scadenza.get(SCAD_ULTCLASS);
|
||||||
if (in_valuta)
|
if (in_valuta)
|
||||||
{
|
{
|
||||||
const real impval(scadenza.get(SCAD_IMPORTOVAL));
|
const real impval(scadenza.get(SCAD_IMPORTOVAL));
|
||||||
pag.set_rata(i-1, impval, importo, scad, tipop, ulc, paid);
|
pag.set_rata(i-1, impval, importo, scad, tipop, ulc, prot);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
pag.set_rata(i-1, importo, ZERO, scad, tipop, ulc, paid);
|
pag.set_rata(i-1, importo, ZERO, scad, tipop, ulc, prot);
|
||||||
|
|
||||||
TToken_string& str = ps.row(i-1);
|
TToken_string& str = ps.row(i-1);
|
||||||
str.add(scadenza.get(SCAD_CODABIPR), 7);
|
str.add(scadenza.get(SCAD_CODABIPR), 7);
|
||||||
@ -795,6 +792,9 @@ bool TPrimanota_application::read_scadenze(TMask& m)
|
|||||||
m.set(FS_VSCAB, str.get(10));
|
m.set(FS_VSCAB, str.get(10));
|
||||||
m.set(FS_AGENTE, scadenza.get(SCAD_CODAG));
|
m.set(FS_AGENTE, scadenza.get(SCAD_CODAG));
|
||||||
}
|
}
|
||||||
|
str.add(scadenza.get(SCAD_DESCR), 11);
|
||||||
|
str.add(scadenza.get(SCAD_BLOCCATA), 12);
|
||||||
|
str.add(prot ? "X" : " ", 13);
|
||||||
}
|
}
|
||||||
m.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
m.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
||||||
m.set(FS_NAMEPAG, pag.name());
|
m.set(FS_NAMEPAG, pag.name());
|
||||||
@ -893,31 +893,27 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
|||||||
|
|
||||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||||
|
|
||||||
partita.elimina_rata(-1);
|
partita.elimina_rata(-1); // Elimina tutte le rate eventuali
|
||||||
for (i = 0; i < pag.n_rate(); i++)
|
for (i = 0; i < ps.items(); i++)
|
||||||
{
|
{
|
||||||
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);
|
scadenza.put(SCAD_CODPAG, codpag); // Codice pagamento
|
||||||
scadenza.put(SCAD_TIPOPAG, pag.tipo_rata(i));
|
scadenza.put(SCAD_CODAG, agente); // Codice agente
|
||||||
scadenza.put(SCAD_ULTCLASS, pag.ulc_rata(i));
|
|
||||||
if (partita.in_valuta())
|
scadenza.put(SCAD_DATASCAD, row.get(0)); // 0 = Data scadenza
|
||||||
{
|
scadenza.put(SCAD_IMPORTO, row.get()); // 1 = Importo
|
||||||
scadenza.put(SCAD_IMPORTO, pag.tlit_rata(i));
|
scadenza.put(SCAD_IMPORTOVAL, row.get()); // 2 = Importo in valuta
|
||||||
scadenza.put(SCAD_IMPORTOVAL, pag.tpay_rata(i));
|
row.get(); // 4 = Percentuale
|
||||||
}
|
scadenza.put(SCAD_TIPOPAG, row.get()); // 5 = Tipo pagamento
|
||||||
else
|
scadenza.put(SCAD_ULTCLASS, row.get()); // 6 = Ulteriore classificazione
|
||||||
{
|
scadenza.put(SCAD_CODABIPR, row.get()); // 7 = Ns ABI
|
||||||
scadenza.put(SCAD_IMPORTO, pag.tpay_rata(i));
|
scadenza.put(SCAD_CODCABPR, row.get()); // 8 = Ns CAB
|
||||||
scadenza.zero(SCAD_IMPORTOVAL);
|
scadenza.put(SCAD_CODABI, row.get()); // 9 = Vs ABI
|
||||||
}
|
scadenza.put(SCAD_CODCAB, row.get()); //10 = Vs CAB
|
||||||
scadenza.put(SCAD_DATASCAD, pag.data_rata(i));
|
scadenza.put(SCAD_DESCR, row.get()); //11 = Note
|
||||||
scadenza.put(SCAD_CODABIPR, row.get(7));
|
scadenza.put(SCAD_BLOCCATA, row.get()); //12 = Non pagabile
|
||||||
scadenza.put(SCAD_CODCABPR, row.get(8));
|
|
||||||
scadenza.put(SCAD_CODABI, row.get(9));
|
|
||||||
scadenza.put(SCAD_CODCAB, row.get(10));
|
|
||||||
scadenza.put(SCAD_CODAG, agente);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -965,32 +961,38 @@ bool TPrimanota_application::showpartite_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
bool ok = TRUE;
|
bool ok = TRUE;
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
|
TPrimanota_application& a = app();
|
||||||
|
|
||||||
const char tipo = m.get(116)[0];
|
const char tipo = m.get(CG_ROWTYPE)[0];
|
||||||
if (tipo == 'K' || (tipo == 'T' && app().causale().tipomov() == 2))
|
if (tipo == 'K' || (tipo == 'T' && a.causale().tipomov() == 2))
|
||||||
{
|
{
|
||||||
TSheet_field& s = *m.get_sheet();
|
TSheet_field& s = *m.get_sheet();
|
||||||
const int riga = s.selected();
|
const int riga = s.selected();
|
||||||
|
|
||||||
if (k == K_SPACE)
|
if (k == K_SPACE)
|
||||||
{
|
{
|
||||||
const bool ok = app().edit_partite(m, riga);
|
const bool ok = a.edit_partite(m, riga);
|
||||||
if (ok && riga < s.items())
|
if (ok && riga < s.items())
|
||||||
k = K_ENTER;
|
k = K_ENTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (k == K_ENTER)
|
if (k == K_ENTER)
|
||||||
{
|
{
|
||||||
const long curreg = app().curr_mask().get_long(F_NUMREG);
|
const long curreg = a.curr_mask().get_long(F_NUMREG);
|
||||||
const TImporto importo(app().get_cgs_imp(riga));
|
const TImporto importo(a.get_cgs_imp(riga));
|
||||||
const TImporto speso(app().partite().importo_speso(curreg, riga+1));
|
const TImporto speso(a.partite().importo_speso(curreg, riga+1));
|
||||||
|
|
||||||
|
if (tipo == 'K' && !speso.is_zero())
|
||||||
|
{
|
||||||
|
a.disable_cgs_cells(riga, 'K');
|
||||||
|
a.cgs().force_update(riga);
|
||||||
|
}
|
||||||
|
|
||||||
if (importo != speso)
|
if (importo != speso)
|
||||||
{
|
{
|
||||||
const char* ss = speso.valore().string(".");
|
const char* ss = speso.valore().string(".");
|
||||||
return f.error_box("L'importo deve essere %s %c", ss, speso.sezione());
|
return f.error_box("L'importo deve essere %s %c", ss, speso.sezione());
|
||||||
}
|
}
|
||||||
if (tipo == 'K' && !speso.is_zero())
|
|
||||||
app().disable_cgs_cells(riga, 'K');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
|
@ -703,6 +703,13 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
if (in_valuta)
|
if (in_valuta)
|
||||||
gm.add_importo(row, scad.importo(TRUE), TRUE, 6);
|
gm.add_importo(row, scad.importo(TRUE), TRUE, 6);
|
||||||
|
|
||||||
|
const TString& descr = scad.get(SCAD_DESCR);
|
||||||
|
if (descr.not_empty())
|
||||||
|
row.add(descr, 4);
|
||||||
|
|
||||||
|
const bool blocked = scad.get_bool(SCAD_BLOCCATA);
|
||||||
|
row.add(blocked ? "X" : " " , 12);
|
||||||
|
|
||||||
const int lastp = scad.last();
|
const int lastp = scad.last();
|
||||||
for (int pa = scad.first(); pa <= lastp; pa = scad.succ(pa))
|
for (int pa = scad.first(); pa <= lastp; pa = scad.succ(pa))
|
||||||
{
|
{
|
||||||
@ -1052,17 +1059,20 @@ bool TGame_mask::edit_scadenza_handler(TMask_field& f, KEY k)
|
|||||||
|
|
||||||
if (nrata != 0 && nrigp == 0)
|
if (nrata != 0 && nrigp == 0)
|
||||||
{
|
{
|
||||||
|
if (m.get_bool(113))
|
||||||
|
return f.error_box("La rata %d e' bloccata.", nrata);
|
||||||
|
|
||||||
const TValuta parval(game.riga(nriga));
|
const TValuta parval(game.riga(nriga));
|
||||||
const TValuta curval(gm, P_VALUTA, P_DATACAMBIO, P_CAMBIO);
|
const TValuta curval(gm, P_VALUTA, P_DATACAMBIO, P_CAMBIO);
|
||||||
if (parval != curval)
|
if (parval != curval)
|
||||||
{
|
{
|
||||||
TString c = parval.codice();
|
TString c = parval.codice();
|
||||||
if (c.empty()) c = "lire";
|
if (c.empty()) c = "lire";
|
||||||
return error_box("La fattura deve essere pagata in %s.", (const char*)c);
|
return f.error_box("La fattura deve essere pagata in %s.", (const char*)c);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __EXTRA__
|
#ifdef __EXTRA__
|
||||||
gm._tipomov = (tipo_movimento) 3;
|
gm._tipomov = tm_pagamento;
|
||||||
gm._descr = "";
|
gm._descr = "";
|
||||||
gm._numdoc = "";
|
gm._numdoc = "";
|
||||||
gm._datadoc = TDate(TODAY);
|
gm._datadoc = TDate(TODAY);
|
||||||
@ -1407,10 +1417,12 @@ void TGame_mask::fill_partite()
|
|||||||
|
|
||||||
app().begin_wait();
|
app().begin_wait();
|
||||||
|
|
||||||
for (TPartita* gioco = app().partite().first();
|
TPartite_array& giochi = app().partite();
|
||||||
gioco != NULL;
|
for (TPartita* gioco = giochi.first(); gioco != NULL; gioco = giochi.next())
|
||||||
gioco = app().partite().next())
|
|
||||||
{
|
{
|
||||||
|
// Visualizza solo le partite con almeno una riga! Non posso scaricarle a priori in quanto
|
||||||
|
// potrebbero essere state cancellate proprio ora e quindi devo tenerle cosi' per aggiornare
|
||||||
|
// correttamente gli archivi.
|
||||||
if (gioco->ok())
|
if (gioco->ok())
|
||||||
{
|
{
|
||||||
const TBill& zio = gioco->conto();
|
const TBill& zio = gioco->conto();
|
||||||
@ -1420,31 +1432,29 @@ void TGame_mask::fill_partite()
|
|||||||
}
|
}
|
||||||
|
|
||||||
TLocalisamfile partita(LF_PARTITE);
|
TLocalisamfile partita(LF_PARTITE);
|
||||||
partita.zero();
|
TRectype& curpar = partita.curr();
|
||||||
|
curpar.zero();
|
||||||
if (conto().tipo() > ' ') // Ignora gruppo e conto dei clifo
|
if (conto().tipo() > ' ') // Ignora gruppo e conto dei clifo
|
||||||
{
|
{
|
||||||
partita.put(PART_TIPOCF, conto().tipo());
|
curpar.put(PART_TIPOCF, conto().tipo());
|
||||||
partita.put(PART_SOTTOCONTO, conto().codclifo());
|
curpar.put(PART_SOTTOCONTO, conto().codclifo());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
conto().put(partita.curr()); // Scrive completamente i conti normali
|
conto().put(curpar); // Scrive completamente i conti normali
|
||||||
|
|
||||||
const TRectype filter(partita.curr()); // Record campione
|
const TRectype filter(curpar); // Record campione
|
||||||
|
|
||||||
for (int err = partita.read(_isgteq);
|
for (int err = partita.read(_isgteq);
|
||||||
err == NOERR && partita.curr() == filter;
|
err == NOERR && curpar == filter;
|
||||||
err = partita.read(_isgreat))
|
err = partita.read(_isgreat))
|
||||||
{
|
{
|
||||||
const int anno = partita.get_int(PART_ANNO);
|
if (!giochi.exist(curpar))
|
||||||
const TString16 num(partita.get(PART_NUMPART));
|
|
||||||
|
|
||||||
if (!app().partite().exist(conto(), anno, num))
|
|
||||||
{
|
{
|
||||||
TPartita game(conto(), anno, num);
|
TPartita game(curpar);
|
||||||
if (all || !game.chiusa())
|
if (all || !game.chiusa())
|
||||||
update_partita(game, -1);
|
update_partita(game, -1);
|
||||||
}
|
}
|
||||||
partita.put(PART_NRIGA, 9999); // Forza lettura partita successiva nella prossima read
|
curpar.put(PART_NRIGA, 9999); // Forza lettura partita successiva nella prossima read
|
||||||
}
|
}
|
||||||
|
|
||||||
a.sort();
|
a.sort();
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
PAGE "Rata pagamento" -1 -1 50 13
|
PAGE "Rata pagamento" -1 -1 50 15
|
||||||
|
|
||||||
DATE 101
|
DATE 101
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -14,12 +14,6 @@ BEGIN
|
|||||||
WARNING "L'importo della rata non puo' essere nullo"
|
WARNING "L'importo della rata non puo' essere nullo"
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN 112
|
|
||||||
BEGIN
|
|
||||||
PROMPT 35 1 "Protetta"
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER 103 15 3
|
NUMBER 103 15 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Importo valuta "
|
PROMPT 1 4 "Importo valuta "
|
||||||
@ -140,6 +134,27 @@ BEGIN
|
|||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 11 "Note:"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN 114
|
||||||
|
BEGIN
|
||||||
|
PROMPT 12 11 "Non cancellabile"
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN 113
|
||||||
|
BEGIN
|
||||||
|
PROMPT 38 11 "Bloccata"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 112 50 47
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 12 ""
|
||||||
|
END
|
||||||
|
|
||||||
BUTTON DLG_DELREC 10 2
|
BUTTON DLG_DELREC 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -13 -1 ""
|
PROMPT -13 -1 ""
|
||||||
|
@ -222,7 +222,9 @@ BEGIN
|
|||||||
ITEM "Ns.CAB"
|
ITEM "Ns.CAB"
|
||||||
ITEM "Vs.ABI"
|
ITEM "Vs.ABI"
|
||||||
ITEM "Vs.CAB"
|
ITEM "Vs.CAB"
|
||||||
ITEM "Protetta"
|
ITEM "Note@50"
|
||||||
|
ITEM "Bloccata"
|
||||||
|
ITEM "Non cancellabile"
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FS_RESET 7 1
|
BUTTON FS_RESET 7 1
|
||||||
|
@ -59,6 +59,7 @@ public:
|
|||||||
int conto() const { return _conto; }
|
int conto() const { return _conto; }
|
||||||
long sottoconto() const { return _sottoconto; }
|
long sottoconto() const { return _sottoconto; }
|
||||||
long codclifo() const { return _sottoconto; }
|
long codclifo() const { return _sottoconto; }
|
||||||
|
long& codclifo() { return _sottoconto; }
|
||||||
|
|
||||||
bool find();
|
bool find();
|
||||||
const TString& descrizione() const;
|
const TString& descrizione() const;
|
||||||
|
@ -360,7 +360,7 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
|||||||
_dirty = TRUE;
|
_dirty = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPagamento::set_cambio(const real& cambio)
|
void TPagamento::set_cambio(const real& cambio, bool recalc_lit)
|
||||||
{
|
{
|
||||||
const int first = _tpr < 4 ? 0 : 1;
|
const int first = _tpr < 4 ? 0 : 1;
|
||||||
const bool era_valuta = _cambio != 1.0;
|
const bool era_valuta = _cambio != 1.0;
|
||||||
@ -381,10 +381,13 @@ void TPagamento::set_cambio(const real& cambio)
|
|||||||
{
|
{
|
||||||
TToken_string& row = (TToken_string&)_rate[i];
|
TToken_string& row = (TToken_string&)_rate[i];
|
||||||
if (in_valuta)
|
if (in_valuta)
|
||||||
|
{
|
||||||
|
if (recalc_lit)
|
||||||
{
|
{
|
||||||
imp = tpay_rata(i) * _cambio; imp.round(0);
|
imp = tpay_rata(i) * _cambio; imp.round(0);
|
||||||
row.add(imp.string(), 7);
|
row.add(imp.string(), 7);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
imp = tlit_rata(i);
|
imp = tlit_rata(i);
|
||||||
@ -420,12 +423,12 @@ void TPagamento::set_cambio(const real& cambio)
|
|||||||
set_total(imponibile, imposta, spese);
|
set_total(imponibile, imposta, spese);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (in_valuta) adjust_importo_lire();
|
// if (in_valuta) adjust_importo_lire();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPagamento::set_implit(const real & r)
|
void TPagamento::set_totlit(const real & r)
|
||||||
{
|
{
|
||||||
_implit = r;
|
_totlit = r;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPagamento::adjust_importo_lire()
|
void TPagamento::adjust_importo_lire()
|
||||||
@ -435,7 +438,7 @@ void TPagamento::adjust_importo_lire()
|
|||||||
real totlit;
|
real totlit;
|
||||||
for (int i = 0; i < n_rate(); i++)
|
for (int i = 0; i < n_rate(); i++)
|
||||||
totlit += tlit_rata(i);
|
totlit += tlit_rata(i);
|
||||||
real residuo = _implit - totlit;
|
real residuo = _totlit - totlit;
|
||||||
if (!residuo.is_zero())
|
if (!residuo.is_zero())
|
||||||
{
|
{
|
||||||
real rs = tlit_rata(first) + residuo;
|
real rs = tlit_rata(first) + residuo;
|
||||||
@ -1666,7 +1669,7 @@ void TPagamento::set_sheet(TSheet_field& sf, int sscad)
|
|||||||
if (_inited)
|
if (_inited)
|
||||||
{
|
{
|
||||||
const bool in_valuta = _cambio != 1.0;
|
const bool in_valuta = _cambio != 1.0;
|
||||||
if (in_valuta) adjust_importo_lire();
|
// if (in_valuta) adjust_importo_lire();
|
||||||
|
|
||||||
// si istanzia uno sheet di primanota
|
// si istanzia uno sheet di primanota
|
||||||
for (int i = 0; i < n_rate(); i++)
|
for (int i = 0; i < n_rate(); i++)
|
||||||
@ -1691,9 +1694,6 @@ void TPagamento::set_sheet(TSheet_field& sf, int sscad)
|
|||||||
ts.add(tr, 4); // 4 - Tipo rata
|
ts.add(tr, 4); // 4 - Tipo rata
|
||||||
ts.add(uc, 5); // 5 - Ulteriore classificazione
|
ts.add(uc, 5); // 5 - Ulteriore classificazione
|
||||||
ts.add(desc_tipo(tr, uc), 6); // 6 - Descrizione tipo rata
|
ts.add(desc_tipo(tr, uc), 6); // 6 - Descrizione tipo rata
|
||||||
// 7,8,9,10 - Banche
|
|
||||||
const bool paid = ratapagata(i);
|
|
||||||
ts.add(paid ? "X" : "", 11); // 11 - Pagaya
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int d = sf.items()-1; d >= i; d--)
|
for (int d = sf.items()-1; d >= i; d--)
|
||||||
|
@ -35,7 +35,7 @@ class TPagamento : public TObject
|
|||||||
real _imposta; // imposta da affettare
|
real _imposta; // imposta da affettare
|
||||||
real _spese; // spese da affettare
|
real _spese; // spese da affettare
|
||||||
real _cambio; // cambio valuta
|
real _cambio; // cambio valuta
|
||||||
real _implit; // imponibile in lire
|
real _totlit; // imponibile in lire
|
||||||
TDistrib _slicer; // affettatrice
|
TDistrib _slicer; // affettatrice
|
||||||
bool _new; // non letto da database
|
bool _new; // non letto da database
|
||||||
TString_array _rate; // rate medesime
|
TString_array _rate; // rate medesime
|
||||||
@ -141,7 +141,7 @@ public:
|
|||||||
void set_inizio_scadenza(char v) { _inscad = v; }
|
void set_inizio_scadenza(char v) { _inscad = v; }
|
||||||
void set_code(const char* c) { _code = c; }
|
void set_code(const char* c) { _code = c; }
|
||||||
void set_round(int n) { _round = n; }
|
void set_round(int n) { _round = n; }
|
||||||
void set_cambio(const real& ex);
|
void set_cambio(const real& ex, bool recalc_lit);
|
||||||
bool in_valuta() const { return _cambio != 1.0; }
|
bool in_valuta() const { return _cambio != 1.0; }
|
||||||
const real& cambio() const { return _cambio; }
|
const real& cambio() const { return _cambio; }
|
||||||
|
|
||||||
@ -186,7 +186,7 @@ public:
|
|||||||
// setta l'importo in lire di una rata
|
// setta l'importo in lire di una rata
|
||||||
void set_implit(int i, const real & r);
|
void set_implit(int i, const real & r);
|
||||||
// setta l'imponibile in lire totale
|
// setta l'imponibile in lire totale
|
||||||
void set_implit(const real & r);
|
void set_totlit(const real & r);
|
||||||
|
|
||||||
// slicer interface
|
// slicer interface
|
||||||
void set_total(const real& ib, const real& im, const real& sp);
|
void set_total(const real& ib, const real& im, const real& sp);
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
#ifndef __SALDACON_H
|
#ifndef __SALDACON_H
|
||||||
#define __SALDACON_H
|
#define __SALDACON_H
|
||||||
|
|
||||||
@ -306,7 +305,6 @@ public:
|
|||||||
TPartita(const TRectype& part);
|
TPartita(const TRectype& part);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class TPartite_array : private TAssoc_array
|
class TPartite_array : private TAssoc_array
|
||||||
{
|
{
|
||||||
TString80 _key; // Work string
|
TString80 _key; // Work string
|
||||||
|
Loading…
x
Reference in New Issue
Block a user