git-svn-id: svn://10.65.10.50/branches/R_10_00@23029 c028cbd2-c16b-5b4b-a496-9718f37d4682

This commit is contained in:
guy 2014-12-18 17:32:24 +00:00
parent b120057874
commit 083b4b84f8
4 changed files with 359 additions and 363 deletions

View File

@ -50,7 +50,7 @@ bool TStampa_registri_app::filter_func (const TRelation * r)
const bool regst = mov.get_bool(MOV_REGST);
if (regst) //il movimento e' gia'
return false; //stato stampato in forma definitiva
const tipo_sospensione ts = (tipo_sospensione) r->lfile("REG").get_int("I9");
const tipo_sospensione ts = (tipo_sospensione)r->lfile("REG").get_int("I9");
if (ts == liquidazione) // Movimento valido solo ai fini della liquidazione
return false;
}
@ -84,18 +84,10 @@ HIDDEN int compare_righeiva(const TObject** o1, const TObject** o2)
//********* funzioni accessorie e di ricerca *********//
bool TStampa_registri_app::stampa_totali_finali()
{
//TConfig conf(CONFIG_DITTA);
//return conf.get_bool("StTfFr");
return ini_get_bool(CONFIG_DITTA, "cg", "StTfFr");
}
{ return ini_get_bool(CONFIG_DITTA, "cg", "StTfFr"); }
bool TStampa_registri_app::stampa_datareg()
{
//TConfig conf(CONFIG_STUDIO);
//return conf.get_bool("NoDtRg");
return ini_get_bool(CONFIG_STUDIO, "cg", "NoDtRg");
}
{ return ini_get_bool(CONFIG_STUDIO, "cg", "NoDtRg"); }
const char* TStampa_registri_app::descr_doc()
{ return cache().get("%TPD", _tipodoc, "S0"); }
@ -220,11 +212,9 @@ bool TStampa_registri_app::ricalcola(int mese)
//_frequiva == 'T' => esiste la lim solo se m == 3/6/9/12
//(no problem: la Prima Nota pensa lei a invalidare B0 e B1
//dei trimestri a cui appartiene il mese modificato)
if (_frequiva == 'M' ||
(m == 3 || m == 6 || m == 9 || m == 12))
if (_frequiva == 'M' || (m == 3 || m == 6 || m == 9 || m == 12))
{
TString8 key; key.format("%04d%02d", _annoes, m);
lim.setkey(1);
lim.put("CODTAB", key);
if (lim.read() != NOERR || !lim.get_bool("B1"))
return true;
@ -234,7 +224,6 @@ bool TStampa_registri_app::ricalcola(int mese)
if (_frequiva == 'M')
{
TString8 key; key.format("%04d%02d", _annoes, mese);
lim.setkey(1);
lim.put("CODTAB", key);
if (lim.read() != NOERR || !lim.get_bool("B1"))
return true;
@ -244,7 +233,6 @@ bool TStampa_registri_app::ricalcola(int mese)
//aggiusta il mese al trimestre a cui appartiene
mese += 2 - ((mese-1) % 3);
TString8 key; key.format("%04d%02d", _annoes, mese);
lim.setkey(1);
lim.put("CODTAB", key);
if (lim.read() != NOERR || !lim.get_bool("B1"))
return true;
@ -254,10 +242,10 @@ bool TStampa_registri_app::ricalcola(int mese)
void TStampa_registri_app::look_reg()
{
_liquidazione = _tabreg->get_bool("B7");
_riep_liq = _tabreg->get_bool("B6");
_corrispettivi = _tabreg->get_bool("B0");
_sosp_imposta = _tabreg->get_bool("B1");
_liquidazione = _tabreg->get_bool("B7");
_riep_liq = _tabreg->get_bool("B6");
_corrispettivi = _tabreg->get_bool("B0");
_sosp_imposta = _tabreg->get_bool("B1");
_pagine_stampate = _tabreg->get_long("I1");
_numini = _pagine_stampate;
_cod_un_loc = _tabreg->get_int("I7");
@ -267,12 +255,12 @@ void TStampa_registri_app::look_reg()
_tipoatt = tipo_attivita();
_attivita = desc_attivita(_codatt);
_desc_lib = _tabreg->get ("S0");
_stampa_ind_ditta = _tabreg->get_bool ("B9");
_stampa_ind_comp = _tabreg->get_bool ("B5");
_stampa_cred_pre = _tabreg->get_bool ("B4");
_freq_riepilogo = _tabreg->get_char ("S9");
_stampa_plafonds = _tabreg->get_char ("S10") == 'X';
_stampa_num_pag = _tabreg->get_char ("S11") == 'X';
_stampa_ind_ditta = _tabreg->get_bool("B9");
_stampa_ind_comp = _tabreg->get_bool("B5");
_stampa_cred_pre = _tabreg->get_bool("B4");
_freq_riepilogo = _tabreg->get_char("S9");
_stampa_plafonds = _tabreg->get_char("S10") == 'X';
_stampa_num_pag = _tabreg->get_char("S11") == 'X';
}
bool TStampa_registri_app::compila_reg(const TMask& m)
@ -426,7 +414,6 @@ bool TStampa_registri_app::mask_azzera (TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
app()._selected.reset();
f.mask().reset(F_SELECT);
f.mask().reset(DA_CODICE);
f.mask().reset(A_CODICE);
@ -493,7 +480,7 @@ bool TStampa_registri_app::mask_mese (TMask_field& f, KEY k)
return true;
}
bool TStampa_registri_app::look_reg(int i, int anno, TString& codlib, int m, const char* cod, int* umese, long ditta)
bool TStampa_registri_app::look_reg(int i, int anno, const TString& codlib, int m, const char* cod, int* umese, long ditta)
{
TString8 y;
@ -506,20 +493,19 @@ bool TStampa_registri_app::look_reg(int i, int anno, TString& codlib, int m, con
tiporeg tipo = (tiporeg)_tabreg->get_int("I0");
if (tipo == vendita || tipo == acquisto || tipo == riepilogativo)
{
const bool only_you = _ditte->one_checked() && _ditte->checked() == 1;
TString16 cod_lib_un = _tabreg->get("S6");
TDate u_data = _tabreg->get_date("D3");
TDate sca_vid = _tabreg->get_date("D1");
if (codlib != cod_lib_un)
{
if (_selected.ones() == 1L)
if (_selected[i])
if (only_you && _ditte->checked(i))
message_box(FR("Ditta %ld: il codice libro unico del registro non e' uguale al codice libro unico indicato"), ditta);
return false;
}
if (m < *umese)
{
if (_selected.ones() == 1L)
if (_selected[i])
if (only_you && _ditte->checked(i))
message_box(FR("Ditta %ld: il mese indicato e' inferiore al mese dell'ultima data di stampa del registro"), ditta);
return false;
}
@ -530,8 +516,7 @@ bool TStampa_registri_app::look_reg(int i, int anno, TString& codlib, int m, con
if (sca_vid.ok())
if (sca_vid.month() < m)
{
if (_selected.ones() == 1L)
if (_selected[i])
if (only_you && _ditte->checked(i))
message_box(FR("Ditta %ld: la data scadenza di vidimazione del registro non deve essere inferiore al mese indicato"), ditta);
return false;
}
@ -541,7 +526,7 @@ bool TStampa_registri_app::look_reg(int i, int anno, TString& codlib, int m, con
return false;
}
bool TStampa_registri_app::look_regs(int anno, TString& codlib, int m, int* umese, long ditta, TProgind* prog)
bool TStampa_registri_app::look_regs(int anno, const TString& codlib, int m, int* umese, long ditta, TProgind* prog)
{
bool ok = false;
@ -597,17 +582,14 @@ bool TStampa_registri_app::mask_libun (TMask_field& f, KEY k)
{
if (k==K_TAB && f.mask().is_running())
{
TString16 codlib(f.mask().get(CODICE_LIB_UN));
const TString& codlib = f.mask().get(CODICE_LIB_UN);
if (codlib.empty())
{
app()._test = true;
return true;
}
return app()._test = true;
if (app()._selected.ones() == 0l)
if (!app()._ditte->one_checked())
return true;
TProgind* p = new TProgind(2,TR("Verifica parametri in corso..."),false,true,30);
TProgind* p = new TProgind(2,TR("Verifica parametri in corso..."),false,true);
TString16 cod(f.mask().get(CODICE_LIBRO_IVA));
int fino_a_mese = f.mask().get_int(MESE);
@ -644,8 +626,8 @@ bool TStampa_registri_app::mask_libun (TMask_field& f, KEY k)
ok = app().look_regs(anno,codlib,fino_a_mese,&mese,ditta,p);
if (!ok)
{
if (app()._selected.ones() == 1L) //solo se ho selezionato 1 ditta devo dare il messaggio
if (app()._selected[i]) //ed e' proprio quella selezionata
if (app()._ditte->checked() == 1L) //solo se ho selezionato 1 ditta devo dare il messaggio
if (app()._ditte->checked(i)) //ed e' proprio quella selezionata
{
p->addstatus(1);
app().set_firm(app().__firm);
@ -728,31 +710,46 @@ bool TStampa_registri_app::year_handler(TMask_field& f, KEY key)
{
if (key == K_TAB && f.focusdirty())
{
TWait_cursor hourglass;
app().set_year(atoi(f.get()));
app().build_nomiditte();
app().build_ditte_sheet();
const int freq = f.mask().get_int(F_FREQUENZA);
app().build_ditte_sheet(freq);
}
return true;
}
void TStampa_registri_app::build_ditte_sheet()
void TStampa_registri_app::build_ditte_sheet(int flags)
{
TWait_cursor hourglass;
if (_nomiditte.empty())
build_nomiditte();
TBit_array sel;
FOR_EACH_CHECKED_ROW(*_ditte, r, riga)
{
const long ditta = riga->get_long(1);
sel.set(ditta);
}
// build sheet
_ditte->destroy();
_ditte->enable_row(-1);
for (int i = 0; i < _nomiditte.items(); i++)
{
TToken_string* d = new TToken_string(63);
*d = (const TToken_string&)_nomiditte[i];
const char vers = d->get_char(2);
const bool selectable = vers == '?';
d->insert(" |", 0);
TToken_string d = (const TToken_string&)_nomiditte[i];
const char vers = d.get_char(2);
if ((flags == 0x1 && vers != 'M') || (flags == 0x2 && vers != 'T'))
continue;
d.insert(" |", 0);
const long pos = _ditte->add(d);
if (selectable)
if (vers == '?')
_ditte->disable_row(pos);
else if (_selected[i])
_ditte->check(pos);
else
{
const long ditta = d.get_long(1);
if (sel[ditta])
_ditte->check(i);
}
}
}
@ -815,7 +812,7 @@ void TStampa_registri_app::set_choice_limits(TMask& m)
long first = -1l, last = -1l;
for (int i = 0; i < _ditte->items(); i++)
{
if (_selected[i])
if (_ditte->checked(i))
{
const long dit = _ditte->row(i).get_long(1);
if (first < 0) first = dit;
@ -824,14 +821,14 @@ void TStampa_registri_app::set_choice_limits(TMask& m)
}
if (first > 0) m.set(DA_CODICE, first);
if (last > 0) m.set(A_CODICE, last);
m.set(F_SELECT, _selected.ones());
m.set(F_SELECT, _ditte->checked());
if (m.is_running() && first > 0)
app().set_firm(first);
}
long TStampa_registri_app::select_firm_range(long from, long to)
{
if (to == 0l) to = 99999L;
if (to <= 0l) to = 99999L;
for (int i = 0; i < _ditte->items(); i++)
{
if (_ditte->row_disabled(i))
@ -844,17 +841,11 @@ long TStampa_registri_app::select_firm_range(long from, long to)
const long cod = d.get_long(1);
if (cod >= from && cod <= to)
{
_selected.set(i);
_ditte->check(i);
}
else
{
_selected.set(i,false);
_ditte->uncheck(i);
}
}
return _selected.ones();
return _ditte->checked();
}
void TStampa_registri_app::build_nomiditte(TProgind* pnd)
@ -898,11 +889,7 @@ bool TStampa_registri_app::set_ditte(TMask& m)
_ditte->enable_check();
// seleziona e aggiungi alle gia' selezionate
if (_ditte->run() == K_ENTER)
{
for (long j = 0; j < _ditte->items(); j++)
_selected.set(j, _ditte->checked(j));
set_choice_limits(m);
}
}
} while (tasto != K_ENTER && tasto != K_QUIT);
return tasto == K_ENTER;
@ -919,7 +906,7 @@ bool TStampa_registri_app::user_create()
_rel->add(LF_RMOVIVA,"NUMREG=NUMREG",1,LF_MOV);
_rel->add ("REG", "CODTAB[1,4]=ANNOIVA|CODTAB[5,7]=REG");
_cur = new TSorted_cursor(_rel, "DATAREG|PROTIVA|NUMREG","", 2);
_ditte = new TArray_sheet(-1, -1, -4, -4, TR("Selezione Ditte"),
_ditte = new TArray_sheet(-1, 4, -4, -4, TR("Selezione Ditte"),
HR("@1|Cod.@5R|Ragione Sociale@50|Vers."));
_n_ditte = 0l;
__firm = TApplication::get_firm();
@ -927,8 +914,7 @@ bool TStampa_registri_app::user_create()
TDate oggi(TODAY);
_annoes = oggi.year();
build_nomiditte();
build_ditte_sheet();
build_ditte_sheet(0x3);
add_cursor(_cur);
add_file(LF_MOV);
add_file(LF_RMOVIVA);
@ -3393,16 +3379,23 @@ void TStampa_registri_app::no_movimenti()
if (_tipo_stampa == rif_giornale)
da = 1;
else
da = _frequiva == 'M' ? _fino_a_mese : _fino_a_mese-2; // Mi sembra più sensato 19/06/2013
}
{
// da = _frequiva == 'M' ? _fino_a_mese : _fino_a_mese-2; // Mi sembra più sensato 19/06/2013
da = _data_da.month(); // Mi sembra ancora più sensato 18/12/2014
if (_frequiva == 'T')
{
da = ((da-1) / 3) * 3 + 1;
CHECKD(da < a, "Mese iniziale non valido per trimestrale ", da);
}
}
} else
if (_tipo_stampa == libro_unico)
da = _fino_a_mese;
da = _fino_a_mese; else
if (_tipo_stampa == prova)
{
da = _data_da.month();
if (_tipo_stampa == prova)
a = _data_a.month();
else
a = _fino_a_mese;
a = _data_a.month();
}
//RICALCOLO PROGRESSIVI per registro riepilogativo
//il ricalcolo dei progressivi mensili viene sempre
@ -3620,11 +3613,12 @@ bool TStampa_registri_app::set_print(int n)
m.set_handler (A_CODICE, to_ditt_handler);
m.set_handler (DA_CODICE, fr_ditt_handler);
m.set_handler (ANNO, year_handler);
m.set_handler (F_FREQUENZA, year_handler);
m.set(DA_CODICE, get_firm());
m.set(A_CODICE, get_firm(), 0x3);
m.field(F_SELECT).set(format("%ld",_selected.ones()));
m.set(F_SELECT, _ditte->checked());
set_choice_limits(m);
set_real_picture("###.###.###.###");
@ -3633,90 +3627,86 @@ bool TStampa_registri_app::set_print(int n)
bool ok = true;
while (ok = set_ditte(m))
{
if (_selected.ones() > 0l)
{
//*****azzeramento dei totali progressivi e dei flag di controllo della loro stampa
_totdoc_prog = 0;
_totimpn_prog = 0;
_totimps_prog = 0;
_rows_left = 69;
_riporti_stampati = false;
_totali_stampati = false;
_annoes = m.get_int(ANNO);//in realta' e' l'anno IVA !!!
_tipo_stampa = (tipo_stampa) m.get_int(TIPO_STAMPA);
_stampa_width = m.get_int(STAMPA_WIDTH);
_stampa_len = m.get_int(STAMPA_LEN);
_tabname = (_annoes > 1997) ? "PRM" : "PIM"; // Dal 1998 in poi utilizza i PRM e non i PIM
if (_stampa_width == 1)
_stampa_width = 132;
else _stampa_width = 198;
if (_stampa_len != 0)
printer().formlen(_stampa_len);
printer().footerlen(RIGHE_FOOTER);
//Se stampa di prova l'utente indica data_da e data_a
if (_tipo_stampa == prova)
{
_data_stampa = m.get(DATA_STAMPA);
_data_da = m.get(DA_DATA);
_data_a = m.get(A_DATA);
if (!_data_da.ok())
_data_da = TDate(1, 1, _annoes); // Meglio cosi'
if (!_data_a.ok())
_data_a = TDate(31, 12, _annoes); // Meglio cosi'
const TDate d(31,12,_annoes);
if (_data_a == d)
_tipo_riepilogativo = m.get(TIPO_RIEPILOGATIVO)[0];
else
_tipo_riepilogativo = ' ';
printer().setdate(_data_stampa);
}
else //stampe definitive
{
if (_tipo_stampa == bollato || _tipo_stampa == rif_giornale)
{
_fino_a_mese = m.get_int(FINO_A_MESE);
_data_da = TDate(1, 1, _annoes); // Meglio cosi'
}
else //stampa su libro unico
{
_codlib = m.get(CODICE_LIB_UN);
_fino_a_mese = m.get_int(MESE);
_u_stampata = m.get_int(ULTIMA_PAGINA);
_rif_vid = m.get_bool(RIF_VID);
_primast = _u_stampata;
_data_da = TDate(1, _fino_a_mese, _annoes); // Meglio cosi'
}
int giorni_del_mese = 31;
if (_fino_a_mese == 12)
{
giorni_del_mese = 31;
_tipo_riepilogativo = m.get(TIPO_RIEPILOGATIVO)[0];
}
else
{
_tipo_riepilogativo = ' ';
TDate primo(1, _fino_a_mese, _annoes);
primo.set_end_month(); // Meglio cosi'
giorni_del_mese = primo.day();
}
_data_a = TDate(giorni_del_mese, _fino_a_mese, _annoes); // Meglio cosi'
}
_stampa_data_reg = stampa_datareg();
if (_tipo_stampa == libro_unico)
compila_lib();
stampa_registri_IVA(m);
}
else
if (!_ditte->one_checked())
{
warning_box(TR("Nessuna ditta selezionata!"));
continue;
}
//*****azzeramento dei totali progressivi e dei flag di controllo della loro stampa
_totdoc_prog = 0;
_totimpn_prog = 0;
_totimps_prog = 0;
_rows_left = 69;
_riporti_stampati = false;
_totali_stampati = false;
_annoes = m.get_int(ANNO);//in realta' e' l'anno IVA !!!
_tipo_stampa = (tipo_stampa) m.get_int(TIPO_STAMPA);
_stampa_len = m.get_int(STAMPA_LEN);
_tabname = (_annoes > 1997) ? "PRM" : "PIM"; // Dal 1998 in poi utilizza i PRM e non i PIM
if (m.get_int(STAMPA_WIDTH) == 1)
_stampa_width = 132;
else
_stampa_width = 198;
if (_stampa_len != 0)
printer().formlen(_stampa_len);
printer().footerlen(RIGHE_FOOTER);
//Se stampa di prova l'utente indica data_da e data_a
if (_tipo_stampa == prova)
{
_data_stampa = m.get(DATA_STAMPA);
_data_da = m.get(DA_DATA);
_data_a = m.get(A_DATA);
if (!_data_da.ok())
_data_da = TDate(1, 1, _annoes); // Meglio cosi'
if (!_data_a.ok())
_data_a = TDate(31, 12, _annoes); // Meglio cosi'
const TDate d(31,12,_annoes);
if (_data_a == d)
_tipo_riepilogativo = m.get(TIPO_RIEPILOGATIVO)[0];
else
_tipo_riepilogativo = ' ';
printer().setdate(_data_stampa);
}
else //stampe definitive
{
if (_tipo_stampa == bollato || _tipo_stampa == rif_giornale)
{
_fino_a_mese = m.get_int(FINO_A_MESE);
_data_da = TDate(1, 1, _annoes); // Meglio cosi'
}
else //stampa su libro unico
{
_codlib = m.get(CODICE_LIB_UN);
_fino_a_mese = m.get_int(MESE);
_u_stampata = m.get_int(ULTIMA_PAGINA);
_rif_vid = m.get_bool(RIF_VID);
_primast = _u_stampata;
_data_da = TDate(1, _fino_a_mese, _annoes); // Meglio cosi'
}
int giorni_del_mese = 31;
if (_fino_a_mese == 12)
{
giorni_del_mese = 31;
_tipo_riepilogativo = m.get(TIPO_RIEPILOGATIVO)[0];
}
else
{
_tipo_riepilogativo = ' ';
TDate primo(1, _fino_a_mese, _annoes);
primo.set_end_month(); // Meglio cosi'
giorni_del_mese = primo.day();
}
_data_a = TDate(giorni_del_mese, _fino_a_mese, _annoes); // Meglio cosi'
}
_stampa_data_reg = stampa_datareg();
if (_tipo_stampa == libro_unico)
compila_lib();
stampa_registri_IVA(m);
}
return false;
}
@ -3727,216 +3717,215 @@ bool TStampa_registri_app::stampa_registri_IVA(const TMask& m)
{
bool ok = false;
TRectype mov_from(LF_MOV), mov_to(LF_MOV);
for (int i = 0; i < _ditte->items(); i++)
{
if (_selected[(long)i])
{
bool msg = true;
_ditta = _ditte->row(i).get_long(1);
_frequiva = _ditte->row(i).get_char(3);
_intesta_liq = false;
_intesta_vidi = false;
_primast = _u_stampata;
_ok_vidi = false;
_stampa_mese = 13;
TApplication::set_firm(_ditta);
_st_tot_fin = stampa_totali_finali();
look_lia();
ok = compila_reg(m);
if (!ok) continue;
if (_tipo_stampa == bollato || _tipo_stampa == rif_giornale)
if (!controlla_mov())
{
TApplication::set_firm(__firm);
return error_box(TR("Finire di stampare registri anno precedente"));
}
if (!_stampa_tutti_i_registri)
{
_scelta = no_liquidazione;
mov_from.put(MOV_DATAREG, _data_da);
mov_to.put(MOV_DATAREG, _data_a);
_cur->setregion(mov_from, mov_to);
_cur->set_filterfunction(filter_func, true);
//la filter function viene chiamata quando posiziono il cursore
//e' lei che determina _stampa_mese da settare in setta_mask
(*_cur) = 0L;
ok = setta_mask(i);
if (!ok) continue;
if (_liquidazione)
{
_size_header = 3;
if ((_tipo_stampa == bollato || _tipo_stampa == rif_giornale) && !_stampa_ind_ditta) _size_header++;
clear_stliq();
//l'inizializzazione di _scelta vale per tutti
//i mesi da stampare di un certo registro (su
//cui c'e' la X di stampa liquidazione). Cio'
//e' molto importante (per capire vedi appunti)
_scelta = controlla_liquidazione();
if (_scelta == non_proseguire)
return false;
}
const long item = _cur->items();
// 17.5.95 Leggo parametri di stampa del registro
const long codditta = get_firm();
TString16 config; config.format("REG%05ld%s", codditta, (const char*)_codreg);
printer().read_configuration(config);
_mov_empty = true;
if (item > 0l)
{
print();
if (is_cancelled())
return false;
}
else //non ci sono movimenti da stampare nel periodo richiesto!
no_movimenti();
if (_tipo_stampa == libro_unico && _rif_vid)
{
_intesta_vidi = true;
stampa_vidi(); //stampa riferimenti vidimazione
}
}
else //stampa tutti i registri
{
FOR_EACH_CHECKED_ROW(*_ditte, i, riga)
{
bool msg = true;
_ditta = riga->get_long(1);
_frequiva = riga->get_char(3);
_intesta_liq = false;
_intesta_vidi = false;
_primast = _u_stampata;
_ok_vidi = false;
_stampa_mese = 13;
TApplication::set_firm(_ditta);
_st_tot_fin = stampa_totali_finali();
look_lia();
ok = compila_reg(m);
if (!ok) continue;
if (_tipo_stampa == bollato || _tipo_stampa == rif_giornale)
{
if (!controlla_mov())
{
TApplication::set_firm(__firm);
return error_box(TR("Finire di stampare registri anno precedente"));
}
}
if (!_stampa_tutti_i_registri)
{
_scelta = no_liquidazione;
mov_from.put(MOV_DATAREG, _data_da);
mov_to.put(MOV_DATAREG, _data_a);
_cur->setregion(mov_from, mov_to);
_cur->set_filterfunction(filter_func, true);
//la filter function viene chiamata quando posiziono il cursore
//e' lei che determina _stampa_mese da settare in setta_mask
(*_cur) = 0L;
ok = setta_mask(i);
if (!ok) continue;
if (_liquidazione)
{
_size_header = 3;
if ((_tipo_stampa == bollato || _tipo_stampa == rif_giornale) && !_stampa_ind_ditta) _size_header++;
clear_stliq();
//l'inizializzazione di _scelta vale per tutti
//i mesi da stampare di un certo registro (su
//cui c'e' la X di stampa liquidazione). Cio'
//e' molto importante (per capire vedi appunti)
_scelta = controlla_liquidazione();
if (_scelta == non_proseguire)
return false;
}
const long item = _cur->items();
TDate sca_vid;
bool one_printed = false; // Flag per vedere se ha stampato almeno un registro (solo per rif. al libro giornale)
for (_tabreg->first(); !_tabreg->eof(); _tabreg->next())
{
_tipo_reg = (tiporeg)_tabreg->get_int("I0");
const TString16 codtab = _tabreg->get("CODTAB");
const int anno = atoi(codtab.left(4));
if (anno > _annoes)
break;
if (anno == _annoes)
//registro iva
if (_tipo_reg == vendita || _tipo_reg == acquisto || _tipo_reg == riepilogativo)
// 17.5.95 Leggo parametri di stampa del registro
const long codditta = get_firm();
TString16 config; config.format("REG%05ld%s", codditta, (const char*)_codreg);
printer().read_configuration(config);
_mov_empty = true;
if (item > 0l)
{
print();
if (is_cancelled())
return false;
}
else //non ci sono movimenti da stampare nel periodo richiesto!
no_movimenti();
if (_tipo_stampa == libro_unico && _rif_vid)
{
_intesta_vidi = true;
stampa_vidi(); //stampa riferimenti vidimazione
}
}
else //stampa tutti i registri
{
_scelta = controlla_liquidazione();
if (_scelta == non_proseguire)
return false;
TDate sca_vid;
bool one_printed = false; // Flag per vedere se ha stampato almeno un registro (solo per rif. al libro giornale)
for (_tabreg->first(); !_tabreg->eof(); _tabreg->next())
{
_tipo_reg = (tiporeg)_tabreg->get_int("I0");
const TString16 codtab = _tabreg->get("CODTAB");
const int anno = atoi(codtab.left(4));
if (anno > _annoes)
break;
if (anno == _annoes)
//registro iva
if (_tipo_reg == vendita || _tipo_reg == acquisto || _tipo_reg == riepilogativo)
{
_codreg = codtab.mid(4,3);
const TString8 cod_lib_un = _tabreg->get("S6");
sca_vid = _tabreg->get_date("D1");
_stampa_plafonds = _tabreg->get_char ("S10") == 'X';
_stampa_num_pag = _tabreg->get_char ("S11") == 'X';
_stampa_ind_ditta = _tabreg->get_bool("B9");
_liquidazione = _tabreg->get_bool("B7");
if (_tipo_stampa != prova)
_u_data = _tabreg->get_date("D3");
if (_tipo_stampa == bollato || _tipo_stampa == rif_giornale)
{
_codreg = codtab.mid(4,3);
const TString8 cod_lib_un = _tabreg->get("S6");
sca_vid = _tabreg->get_date("D1");
_stampa_plafonds = _tabreg->get_char ("S10") == 'X';
_stampa_num_pag = _tabreg->get_char ("S11") == 'X';
_stampa_ind_ditta = _tabreg->get_bool("B9");
_liquidazione = _tabreg->get_bool("B7");
if (_tipo_stampa != prova)
_u_data = _tabreg->get_date("D3");
if (_tipo_stampa == bollato || _tipo_stampa == rif_giornale)
{
if (cod_lib_un.not_empty())
continue;
if (sca_vid.ok())
if (sca_vid.month() < _fino_a_mese)
continue;
if (_u_data.ok())
if (_data_a < _u_data) //e' molto imp. che rimanga < e non <= !!!
{ //(per via del discorso liq. annuale)
message_box(FR("Ditta %ld: Il registro %s e' gia' stato stampato come bollato di %s"),
_ditta, (const char*) _codreg, itom(_fino_a_mese));
continue;
}
}
if (_tipo_stampa == rif_giornale) //stampa con riferimenti al libro giornale
{
TDate d;
bool good;
bool trovato = cerca_libro_gio(d, good);
if (trovato)
one_printed = true;
else
continue;
} else
if (_tipo_stampa == libro_unico) //stampa su libro unico
{
if (cod_lib_un != _codlib)
if (cod_lib_un.not_empty())
continue;
if (sca_vid.ok())
if (sca_vid.month() < _fino_a_mese)
continue;
if (sca_vid.ok())
if (sca_vid.month() < _fino_a_mese)
continue;
if (_u_data.ok())
if (_fino_a_mese < _u_data.month()) //significa che e' gia'
continue; //stato stampato
}
msg = false;
if (_u_data.ok())
if (_data_a < _u_data) //e' molto imp. che rimanga < e non <= !!!
{ //(per via del discorso liq. annuale)
message_box(FR("Ditta %ld: Il registro %s è già stato stampato come bollato di %s"),
_ditta, (const char*) _codreg, itom(_fino_a_mese));
continue;
}
}
if (_tipo_stampa == rif_giornale) //stampa con riferimenti al libro giornale
{
TDate d;
bool good;
bool trovato = cerca_libro_gio(d, good);
if (trovato)
one_printed = true;
else
continue;
} else
if (_tipo_stampa == libro_unico) //stampa su libro unico
{
if (cod_lib_un != _codlib)
continue;
if (sca_vid.ok())
if (sca_vid.month() < _fino_a_mese)
continue;
if (_u_data.ok())
if (_fino_a_mese < _u_data.month()) //significa che e' gia'
continue; //stato stampato
}
msg = false;
look_reg();
look_reg();
_intesta_liq = false;
_intesta_vidi = false;
_primast = _u_stampata; //per la numerazione dei registri successivi
_ok_vidi = false;
_stampa_mese = 13;
_scelta = no_liquidazione;
_intesta_liq = false;
_intesta_vidi = false;
_primast = _u_stampata; //per la numerazione dei registri successivi
_ok_vidi = false;
_stampa_mese = 13;
_scelta = no_liquidazione;
//modifica del 09/11/1995
mov_from.put(MOV_DATAREG, _data_da);
mov_to.put(MOV_DATAREG, _data_a);
_cur->setregion(mov_from, mov_to);
_cur->set_filterfunction(NULL);
_cur->set_filterfunction(filter_func, true);
(*_cur) = 0L;
ok = setta_mask(i);
if (!ok) continue;
//modifica del 09/11/1995
mov_from.put(MOV_DATAREG, _data_da);
mov_to.put(MOV_DATAREG, _data_a);
_cur->setregion(mov_from, mov_to);
_cur->set_filterfunction(NULL);
_cur->set_filterfunction(filter_func, true);
(*_cur) = 0L;
ok = setta_mask(i);
if (!ok) continue;
if (_liquidazione)
{
_size_header = 3;
if ((_tipo_stampa == bollato || _tipo_stampa == rif_giornale) && !_stampa_ind_ditta)
_size_header++;
clear_stliq();
//N.B. E' fondamentale che _scelta venga ri-inizializzata ad ogni
//registro(cioe' dopo la stampa di ciascuno). Infatti il B0 di un
//certo mese puo' essere cambiato durante la stampa di un certo
//registro
_scelta = controlla_liquidazione();
if (_scelta == non_proseguire)
return false;
}
// Guardo se ci sono movimenti
const long items = _cur->items();
if (_liquidazione)
{
_size_header = 3;
if ((_tipo_stampa == bollato || _tipo_stampa == rif_giornale) && !_stampa_ind_ditta)
_size_header++;
clear_stliq();
//N.B. E' fondamentale che _scelta venga ri-inizializzata ad ogni
//registro(cioe' dopo la stampa di ciascuno). Infatti il B0 di un
//certo mese puo' essere cambiato durante la stampa di un certo
//registro
_scelta = controlla_liquidazione();
if (_scelta == non_proseguire)
return false;
}
// Guardo se ci sono movimenti
const long items = _cur->items();
//Leggo parametri di stampa del registro
TString16 config;
const long codditta = get_firm();
const char* reg = (const char*)_codreg;
config.format("REG%05ld%s", codditta, reg);
printer().read_configuration(config);
//Leggo parametri di stampa del registro
const long codditta = get_firm();
const char* reg = (const char*)_codreg;
TString16 config; config.format("REG%05ld%s", codditta, reg);
printer().read_configuration(config);
_mov_empty = true;
_mov_empty = true;
if (items > 0l)
{
print();
if (is_cancelled())
return false;
}
else
no_movimenti();
if (items > 0l)
{
print();
if (is_cancelled())
return false;
}
else
no_movimenti();
if (_tipo_stampa == libro_unico && _rif_vid)
{
_intesta_vidi = true;
stampa_vidi(); //stampa riferimenti vidimazione
}
}
} //for
if (_tipo_stampa == libro_unico && _rif_vid)
{
_intesta_vidi = true;
stampa_vidi(); //stampa riferimenti vidimazione
}
}
} //for
if (_tipo_stampa == rif_giornale && !one_printed) // stampa con rif libro giornale
message_box(FR("Ditta %ld: nessun registro soddisfa i parametri indicati"), _ditta);
if (_tipo_stampa == rif_giornale && !one_printed) // stampa con rif libro giornale
message_box(FR("Ditta %ld: nessun registro soddisfa i parametri indicati"), _ditta);
if (msg)
if(_tipo_stampa == libro_unico && _fino_a_mese == 1 && _selected.ones() == 1L)
message_box(FR("Ditta %ld: nessun registro soddisfa i parametri indicati"), _ditta); //viene gia' dato nell'handler
} //da Gennaio)
}
if (msg)
if(_tipo_stampa == libro_unico && _fino_a_mese == 1 && _ditte->checked() == 1L)
message_box(FR("Ditta %ld: nessun registro soddisfa i parametri indicati"), _ditta); //viene gia' dato nell'handler
} //da Gennaio)
}
printer().read_configuration();
TApplication::set_firm(__firm);

View File

@ -40,7 +40,6 @@ class TStampa_registri_app : public TPrintapp
TRiga_array _riga_prospettoXcassa;
TTipodoc_array _doc_array;
TRiga_array _tot_iva_array, _tot_prec_iva_array;
TBit_array _selected;
TArray_sheet *_ditte;
TArray _nomiditte;
tiporeg _tipo_reg;
@ -111,8 +110,8 @@ public:
bool stampo_liquidazione(int);
bool ventilazione(const char*);
bool cerca_libro_gio(TDate&, bool&);
bool look_reg (int, int, TString&, int, const char*, int*, long);
bool look_regs(int, TString&, int, int*, long, TProgind*);
bool look_reg (int, int, const TString&, int, const char*, int*, long);
bool look_regs(int, const TString&, int, int*, long, TProgind*);
bool stampa_totali_finali();
bool stampa_datareg();
bool stampa_registri_IVA(const TMask&);
@ -122,7 +121,7 @@ public:
void stampa_prospetto_riepilogo(tiporeg, const TString&, const TString&, const bool);
void stampa_progressivi(TRiga_array&, TRigaiva_array&, tiporeg, const bool);
void set_choice_limits(TMask&);
void build_ditte_sheet();
void build_ditte_sheet(int flags);
tiporeg cerca_reg(const TString&);
void set_page_tot_reg();
void send_message(char,const TFilename&,int);
@ -160,8 +159,7 @@ public:
virtual void preprocess_footer();
virtual void on_page_printed(int file);
TStampa_registri_app() : TPrintapp(), _ditte(NULL), _selected(10000), _nomiditte(100), _test(FALSE) {}
virtual ~TStampa_registri_app() {}
TStampa_registri_app() : TPrintapp(), _ditte(NULL), _nomiditte(100), _test(FALSE) {}
};

View File

@ -22,6 +22,7 @@
#define RIF_VID 122
#define STAMPA_WIDTH 123
#define STAMPA_LEN 124
#define F_FREQUENZA 125

View File

@ -22,7 +22,7 @@ END
NUMBER ANNO 4
BEGIN
PROMPT 2 2 "Anno "
PROMPT 41 3 "Anno "
HELP "Anno di cui si vuole stampare il registro"
FLAGS "A"
WARNING "Inserire l'anno"
@ -30,9 +30,17 @@ BEGIN
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 35 5
GROUPBOX DLG_NULL 35 6
BEGIN
PROMPT 2 3 "Scelta ditte"
PROMPT 2 2 "Scelta ditte"
END
LIST F_FREQUENZA 1 12
BEGIN
PROMPT 3 3 "Frequenza "
ITEM "0|"
ITEM "1|Mensile"
ITEM "2|Trimestrale"
END
NUMBER DA_CODICE 5