cg210?.* Aggiustamenti gestione saldaconto

cg5400.cpp Corretto azzeramento tabella LIM all'inizio di un esercizio


git-svn-id: svn://10.65.10.50/trunk@1651 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-07-27 14:07:32 +00:00
parent e16e4d62c3
commit e6eb3ec25d
7 changed files with 104 additions and 289 deletions

View File

@ -107,8 +107,6 @@ TMask* TPrimanota_application::load_mask(int n)
m->set_handler(F_DESCR, descr_handler);
m->set_handler(F_CODCAUS, caus_modify_handler);
m->set_handler(F_SHEETCG, cg_handler);
m->set_handler(F_CAMBIO, cambio_handler);
m->set_handler(F_VISVAL, visval_handler);
TSheet_field& cg = (TSheet_field&)m->field(F_SHEETCG);
cg.set_notify(cg_notify);
@ -117,12 +115,6 @@ TMask* TPrimanota_application::load_mask(int n)
if (n == 1) // movimento non IVA
{
m->set_handler(S_TOTDOC, totdoc_handler);
m->set_handler(S_SPESE, speserimb_handler);
m->set_handler(S_ALSPESE, altrespese_handler);
m->set_handler(S_ABBATT, abbatt_handler);
m->set_handler(S_ABBPASS, abbpass_handler);
m->set_handler(S_RITPROF, ritprof_handler);
m->set_handler(S_DIFFCAMB, diffcamb_handler);
}
cgm.set_handler(101, dareavere_handler);
@ -316,23 +308,11 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
char tipr = ' ';
if (_is_saldaconto)
{
if (nriga < 8) continue; // non si cagano gli importi totali
switch(nriga)
{
case 8:
tipr = 'P'; break;
case 9:
tipr = 'A'; break;
case 10:
tipr = 'G'; break;
case 11:
tipr = 'R'; break;
default:
tipr = ' '; break;
}
if (nriga < 12 && nriga != 10) continue; // Si considerano solo le spese
tipr = nriga == 10 ? 'G' : 'L';
}
const int pos = set_cgs_row(-1,zero,tc,desc,tipr);
if (sezione > ' ')
if (sezione > ' ' && tipr != ' ')
cgs().disable_cell(pos, sezione == 'A' ? 0 : 1);
}
else
@ -455,7 +435,7 @@ void TPrimanota_application::init_mask(TMask& m)
if (_iva == nessuna_iva)
{
m.enable(-5, _is_saldaconto); // Abilita campi saldaconto
m.enable(-5, _is_saldaconto); // Abilita campi saldaconto
}
else
{
@ -480,7 +460,7 @@ void TPrimanota_application::init_mask(TMask& m)
m.show(F_CODIVA, m.mode() == MODE_INS); // Codice IVA standard
}
// Show/Hide campi valuta: F_VALUTA, F_CAMBIO, F_VISVAL (GROUP 3)
// Show/Hide campi valuta: F_VALUTA, F_CAMBIO, F_DATACAMBIO (GROUP 3)
const bool valuta = _ges_val && causale().valuta();
m.show(-3, valuta);
}
@ -497,14 +477,17 @@ void TPrimanota_application::init_query_mode(TMask& m)
void TPrimanota_application::fill_sheet(TMask& m) const
{
TSheet_field& cgs = (TSheet_field&)m.field(F_SHEETCG);
for (int r = cgs.items(); r < 16; r++) cgs.row(r);
{
if (_iva != nessuna_iva || !_is_saldaconto)
{
TSheet_field& cgs = (TSheet_field&)m.field(F_SHEETCG);
for (int r = cgs.items(); r < 16; r++) cgs.row(r);
}
if (_iva != nessuna_iva)
{
TSheet_field& ivas = (TSheet_field&)m.field(F_SHEETIVA);
for (r = ivas.items(); r < 16; r++) ivas.row(r);
for (int r = ivas.items(); r < 16; r++) ivas.row(r);
ivas.enable_column(2, _iva == iva_acquisti); // Tipo detrazione
ivas.enable_column(4, !m.insert_mode()); // Tipo costo ricavo
}

View File

@ -37,9 +37,6 @@
#define F_CODPAG 122
#define F_ANNORIF 123
#define F_NUMRIF 124
#define F_VALUTA 126
#define F_CAMBIO 127
#define F_VISVAL 128
#define F_PROVVISORIO 129
#define F_TIPOMOV 130
#define F_OCCASEDIT 131
@ -104,14 +101,12 @@
#define I_CONTO4 233
#define I_SOTTOCONTO4 234
// importi saldaconto
// Saldaconto
#define S_TOTDOC 401
#define S_SPESE 402
#define S_ABBATT 403
#define S_ABBPASS 404
#define S_RITPROF 405
#define S_ALSPESE 406
#define S_DIFFCAMB 407
#define S_TOTDOCVAL 402
#define S_VALUTA 403
#define S_DATACAMBIO 404
#define S_CAMBIO 405
// copie 2a pag.
#define K_CODDITTA 501

View File

@ -16,7 +16,7 @@ END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 1 "Ditta "
FLAGS "FRD"
FLAGS "DFR"
USE LF_NDITTE KEY 1
INPUT CODDITTA F_CODDITTA
OUTPUT K_CODDITTA CODDITTA
@ -174,109 +174,71 @@ BEGIN
COPY OUTPUT F_DESCAGG
END
STRING F_VALUTA 3
BEGIN
PROMPT 1 9 "Valuta "
HELP "Codice della valuta per movimento"
FIELD LF_MOV->CODVAL
FLAGS "U"
GROUP 3
USE %VAL
INPUT CODTAB F_VALUTA
DISPLAY "Codice" CODTAB
DISPLAY "Nome@50" S0
DISPLAY "Cambio@15" R10
DISPLAY "Ultimo aggiornamento" D0
OUTPUT F_VALUTA CODTAB
OUTPUT F_CAMBIO R10
CHECKTYPE NORMAL
END
NUMBER F_CAMBIO 15 5
BEGIN
PROMPT 20 9 "Cambio "
HELP "Cambio della valuta"
FIELD LF_MOV->CAMBIO
FLAGS "RU"
GROUP 3
PICTURE ".5"
END
BOOLEAN F_VISVAL
BEGIN
PROMPT 47 9 "Visualizza importi in valuta"
HELP "Indicare se gli importi sono visualizzati in valuta (non in Lit)"
GROUP 3
END
GROUPBOX DLG_NULL 78 8
BEGIN
PROMPT 1 10 "Voci di spesa per saldaconto"
PROMPT 1 10 "Voci per saldaconto"
END
NUMBER S_TOTDOC 15 0
BEGIN
PROMPT 2 11 "Totale documento "
FLAGS "R"
PICTURE "."
GROUP 5
END
NUMBER S_TOTDOCVAL 15 2
BEGIN
PROMPT 42 11 "Totale in valuta "
HELP ""
FLAGS "R"
PICTURE "."
GROUP 5
END
NUMBER S_SPESE 15 0
BEGIN
PROMPT 2 12 "Spese e rimborsi "
HELP ""
FLAGS "R"
PICTURE "."
GROUP 5
END
NUMBER S_ALSPESE 15 0
BEGIN
PROMPT 39 12 "Altre spese "
HELP ""
FLAGS "R"
PICTURE "."
GROUP 5
PICTURE ".2"
GROUP 3
END
NUMBER S_ABBATT 15 0
BEGIN
PROMPT 2 14 "Abbuoni attivi "
HELP ""
FLAGS "R"
PICTURE "."
GROUP 5
STRING S_VALUTA 3
BEGIN
PROMPT 2 13 "Valuta "
HELP "Codice della valuta per movimento"
FIELD LF_MOV->CODVAL
FLAGS "U"
GROUP 3
USE %VAL
INPUT CODTAB S_VALUTA
DISPLAY "Codice" CODTAB
DISPLAY "Nome@50" S0
DISPLAY "Ultimo cambio@15" R10
DISPLAY "Ultimo aggiornamento" D0
OUTPUT S_VALUTA CODTAB
OUTPUT S_CAMBIO R10
CHECKTYPE NORMAL
END
NUMBER S_ABBPASS 15 0
BEGIN
PROMPT 39 14 "Abbuoni passivi "
HELP ""
DATE S_DATACAMBIO
BEGIN
PROMPT 20 13 "Data cambio "
FLAGS "R"
PICTURE "."
GROUP 5
USE CAM
INPUT CODTAB[1,3] S_VALUTA
INPUT CODTAB[4,11] S_DATACAMBIO
DISPLAY "Valuta" CODTAB[1,3]
DISPLAY "Data@10" D0
DISPLAY "Cambio@18" R10
OUTPUT S_VALUTA CODTAB[1,3]
OUTPUT S_DATACAMBIO D0
OUTPUT S_CAMBIO R10
GROUP 3
END
NUMBER S_RITPROF 15 0
BEGIN
PROMPT 2 16 "Ritenuta prof. "
HELP ""
FLAGS "R"
PICTURE "."
GROUP 5
END
NUMBER S_DIFFCAMB 15 0
BEGIN
PROMPT 39 16 "Diff. cambio "
HELP ""
FLAGS "R"
PICTURE "."
GROUP 5
NUMBER S_CAMBIO 15 5
BEGIN
PROMPT 50 13 "Cambio "
HELP "Cambio della valuta"
FIELD LF_MOV->CAMBIO
FLAGS "RU"
GROUP 3
PICTURE ".5"
END
ENDPAGE
@ -312,7 +274,6 @@ BEGIN
FLAGS "D"
END
DATE K_DATACOMP
BEGIN
PROMPT 1 4 "Data di competenza "

View File

@ -344,18 +344,16 @@ void TPrimanota_application::disable_cgs_cells(int n, char tipo)
int last = 0;
switch(tipo)
{
case 'A': // Abbuoni attivi
case 'C': // Differenza cambio
case 'D': // IVA Detraibile
case 'F': // Ritenute Fiscali
case 'N':
case 'G': // vedi enum TipoConto per i prossimi 6
case 'A':
case 'P':
case 'R':
case 'L':
case 'C':
case 'N': // IVA Non detraibile
case 'P': // Abbuoni passsivi
case 'R': // Ritenute professionali
case 'S': // Ritenute Sociali
case 'T': // Totale documento
last = 3; // IVA Non detraibile
last = 3;
break;
case 'I':
last = 7; // Imponibile
@ -380,8 +378,8 @@ void TPrimanota_application::disable_cgs_cells(int n, char tipo)
void TPrimanota_application::reset_sheet_row(TSheet_field& s, int n)
{
s.row(s.items()); // Append a new line
s.destroy(n); // Remove line n
s.row(s.items()); // Append a new line
s.destroy(n); // Remove line n
}
int TPrimanota_application::set_cgs_row(int n, const TImporto& imp,
@ -1646,17 +1644,17 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
{
app().add_cgs_tot(m);
if (m.field(F_VISVAL).active())
if (m.field(S_VALUTA).active())
{
const TString16 valuta(clifo.get("CODVAL"));
if (valuta.not_empty() && valuta != m.get(F_VALUTA))
if (valuta.not_empty() && valuta != m.get(S_VALUTA))
{
TTable val("%val");
val.put("CODTAB", valuta);
if (val.read() == NOERR)
{
m.set(F_VALUTA, valuta);
m.set(F_CAMBIO, val.get("R0"), TRUE);
m.set(S_VALUTA, valuta);
m.set(S_CAMBIO, val.get("R10"), TRUE);
}
}
}
@ -1790,65 +1788,6 @@ void TPrimanota_application::add_cgs_rit(bool fiscali)
}
}
void TPrimanota_application::add_cgs_row_noniva(TipoConto t)
{
// aggiunge riga IVA relativa al tipo conto passato
// determina numero riga e legge importo
// schiaffa e aggiorna
real imp = 0.0;
int row = -1;
switch (t)
{
case asp:
t = spr; // accorpiamo con le spese per ora
case spr:
imp = real(curr_mask().get(S_SPESE));
imp += real(curr_mask().get(S_ALSPESE));
row = 10;
break;
case aba:
imp = real(curr_mask().get(S_ABBATT));
row = 9;
break;
case abp:
imp = real(curr_mask().get(S_ABBPASS));
row = 8;
break;
case rpf:
imp = real(curr_mask().get(S_RITPROF));
row = 11;
break;
case dfc:
imp = real(curr_mask().get(S_DIFFCAMB));
// row 0 (sconosciuto) for now
row = 0;
break;
}
char tipo = (char)t;
if (row != -1)
{
int pos = type2pos(tipo);
if (pos < 0)
{
TBill conto; if (row != 0) causale().bill(row, conto);
const TString80 desc(row == 0 ? "" : causale().desc_agg(row));
set_cgs_row(-1, real2imp(imp, tipo), conto, desc, tipo);
}
else
{
if (imp.is_zero())
reset_cgs_row(pos);
else
set_cgs_imp(pos, real2imp(imp, tipo));
}
}
}
// Handler of the F_PROTIVA
bool TPrimanota_application::protiva_handler(TMask_field& f, KEY key)
{
@ -1884,75 +1823,6 @@ bool TPrimanota_application::ritsoc_handler(TMask_field& f, KEY key)
return TRUE;
}
bool TPrimanota_application::speserimb_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
app().add_cgs_row_noniva(spr);
return TRUE;
}
bool TPrimanota_application::altrespese_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
app().add_cgs_row_noniva(asp);
return TRUE;
}
bool TPrimanota_application::abbatt_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
app().add_cgs_row_noniva(aba);
return TRUE;
}
bool TPrimanota_application::abbpass_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
app().add_cgs_row_noniva(abp);
return TRUE;
}
bool TPrimanota_application::ritprof_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
app().add_cgs_row_noniva(rpf);
return TRUE;
}
bool TPrimanota_application::diffcamb_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
app().add_cgs_row_noniva(dfc);
return TRUE;
}
bool TPrimanota_application::cambio_handler(TMask_field& f, KEY key)
{
if (key == K_TAB && f.focusdirty())
{
if (f.get().empty())
f.set(f.mask().exchange().string());
else
f.mask().field(F_VISVAL).on_hit();
}
return TRUE;
}
// Handler of F_VISVAL
// Certified 99%
bool TPrimanota_application::visval_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE)
{
TMask& m = f.mask();
const bool on = f.get().not_empty();
const real e(f.mask().get(F_CAMBIO));
m.set_exchange(on, e);
}
return TRUE;
}
// Handler of F_CORRLIRE
// Certified 99%
bool TPrimanota_application::corrlire_handler(TMask_field& f, KEY key)

View File

@ -87,8 +87,6 @@ class TPrimanota_application : public TRelation_application
static bool ritfis_handler(TMask_field& f, KEY key);
static bool ritsoc_handler(TMask_field& f, KEY key);
static bool main_codiva_handler(TMask_field& f, KEY key);
static bool cambio_handler(TMask_field& f, KEY key);
static bool visval_handler(TMask_field& f, KEY key);
static bool corrlire_handler(TMask_field& f, KEY key);
static bool corrvaluta_handler(TMask_field& f, KEY key);
static bool occas_code_handler(TMask_field& f, KEY key);
@ -198,7 +196,6 @@ protected:
void add_cgs_tot(TMask& m);
void add_cgs_rit(bool fisc);
void add_cgs_row_noniva(TipoConto t);
void generazione_righe_cg(int r);
void reset_cgs_row(int n) { reset_sheet_row(cgs(), n); }

View File

@ -22,8 +22,8 @@ enum TipoIVA
enum TipoConto
{
spr = 'G', // spese e rimborsi
aba = 'A', // abbattimenti attivi
abp = 'P', // abbattimenti passivi
aba = 'A', // abbuoni attivi
abp = 'P', // abbuoni passivi
rpf = 'R', // ritenute professionali
asp = 'L', // altre spese
dfc = 'C', // differenza cambio

View File

@ -23,12 +23,32 @@ protected: // TApplication
virtual bool menu(MENU_TAG);
public:
void azzera_lim(int year, int month) const;
bool reg_restore(const TString& reg, int year, int month, int day, bool giornale);
bool inl_restore(const TString& lbu, int year, int month);
TRipristina_stampa() : _op(restore_reg) {}
};
// Azzera flag di stampato della liquidazione mensile dal mese dato in poi
void TRipristina_stampa::azzera_lim(int year, int month) const
{
TTable lim("LIM"); // Azzera i flag di stampa liquidazione
lim.put("CODTAB", format("%04d%02d", year, month));
for (int err = lim.read(_isgteq); err == NOERR; err = lim.next())
{
if (atoi(lim.get("CODTAB").left(4)) != year) break;
const bool stampato = lim.get_bool("B1");
if (stampato)
{
lim.zero("B1");
lim.rewrite();
}
}
}
bool TRipristina_stampa::reg_restore(const TString& regist,
int year, int month, int day,
bool giornale)
@ -118,19 +138,7 @@ bool TRipristina_stampa::reg_restore(const TString& regist,
reg.put("I4", (long)mese); // Ultimo mese di stampa liquidazione
if (reg.get_int("I8") >= mese)
reg.zero("I8"); // Mese di ultima stampa credito precedente
TTable lim("LIM"); // Azzera i flag di stampa liquidazione
lim.put("CODTAB", format("%04d%02d", year, mese+1));
for (int err = lim.read(_isgteq); err == NOERR; err = lim.next())
{
if (atoi(lim.get("CODTAB").left(4)) != year) break;
const bool stampato = lim.get_bool("B1");
if (stampato)
{
lim.zero("B1");
lim.rewrite();
}
}
azzera_lim(year, mese+1);
}
}
else
@ -139,7 +147,8 @@ bool TRipristina_stampa::reg_restore(const TString& regist,
if (!giornale)
{
reg.zero("I4");
reg.zero("I8");
reg.zero("I8");
azzera_lim(year, 1);
}
}