Martellata per benino la stampa scaduto: sistemata la stampa totali e
la stampa intestazione cli/fo. La maggior parte delle modifiche riguarda la preprocess_page(). git-svn-id: svn://10.65.10.50/trunk@2973 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
e14fef8edd
commit
f820668b01
113
sc/sc2300.cpp
113
sc/sc2300.cpp
@ -69,7 +69,6 @@ class TStampaScaduto : public TPrintapp
|
|||||||
TRelation *_rel1, *_rel2; // Relazioni di lavoro...
|
TRelation *_rel1, *_rel2; // Relazioni di lavoro...
|
||||||
int _cur1, _cur2, // Identificatori dei cursori di lavoro...
|
int _cur1, _cur2, // Identificatori dei cursori di lavoro...
|
||||||
_cur3, _cur4;
|
_cur3, _cur4;
|
||||||
int _pending_total;
|
|
||||||
|
|
||||||
TSelection_ext_mask *_m;
|
TSelection_ext_mask *_m;
|
||||||
TLocalisamfile *_scad,*_pagsca;
|
TLocalisamfile *_scad,*_pagsca;
|
||||||
@ -345,8 +344,7 @@ void TStampaScaduto::compute_all(TPartita& p)
|
|||||||
|
|
||||||
bool TStampaScaduto::preprocess_page(int file, int counter)
|
bool TStampaScaduto::preprocess_page(int file, int counter)
|
||||||
{
|
{
|
||||||
TRectype& rc = current_cursor()->curr(file);
|
TRectype rc(current_cursor()->curr(file));
|
||||||
int lastgood = 0;
|
|
||||||
|
|
||||||
if (file == LF_PARTITE)
|
if (file == LF_PARTITE)
|
||||||
{
|
{
|
||||||
@ -358,12 +356,11 @@ bool TStampaScaduto::preprocess_page(int file, int counter)
|
|||||||
else
|
else
|
||||||
if (_tipost == altri)
|
if (_tipost == altri)
|
||||||
rec = current_cursor()->curr(LF_PCON);
|
rec = current_cursor()->curr(LF_PCON);
|
||||||
|
|
||||||
int nriga = 1;
|
|
||||||
|
|
||||||
|
int nriga = 1;
|
||||||
bool checked = cs.checked(c->read(_isequal));
|
bool checked = cs.checked(c->read(_isequal));
|
||||||
|
|
||||||
if (!checked && !_end_printed) // Se non e' stato selezionato salta alla prossima part
|
if (!checked && !_end_printed) // Se non e' stato selezionato salta al prossimo record
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (_tipost == clienti || _tipost == fornitori)
|
if (_tipost == clienti || _tipost == fornitori)
|
||||||
@ -382,45 +379,34 @@ bool TStampaScaduto::preprocess_page(int file, int counter)
|
|||||||
if (_cod != _cod_pre || _end_printed) // Controlla se e' cambiato il codice cli/fo/conto
|
if (_cod != _cod_pre || _end_printed) // Controlla se e' cambiato il codice cli/fo/conto
|
||||||
{
|
{
|
||||||
reset_print();
|
reset_print();
|
||||||
if (_pending_total > 0 || _end_printed) // stampa i totali del precedente solo se non e' la prima
|
if (_cod_pre != "") // stampa i totali del precedente solo se non e' la prima
|
||||||
{
|
{
|
||||||
TAssoc_array& a = (TAssoc_array&) _t[0];
|
TAssoc_array& sin_tot = (TAssoc_array&) _t[0];
|
||||||
if (a.items() > 0)
|
if (sin_tot.items() > 0)
|
||||||
{
|
|
||||||
print_totali(nriga);
|
print_totali(nriga);
|
||||||
lastgood = nriga;
|
|
||||||
_pending_total = 0;
|
if (_end_printed)
|
||||||
if (_end_printed)
|
{
|
||||||
return TRUE; // Go back, print and exit!
|
TAssoc_array& gen_tot = (TAssoc_array&) _t[1];
|
||||||
|
if (gen_tot.items() > 0)
|
||||||
|
{
|
||||||
|
set_row(nriga,"TOTALE GENERALE");
|
||||||
|
print_totali_rows(nriga,1);
|
||||||
|
}
|
||||||
|
return TRUE; // Go back, print and exit!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_cod_pre = _cod;
|
||||||
if (checked)
|
_pending_clifo = TRUE;
|
||||||
{
|
|
||||||
_pending_clifo = TRUE;
|
|
||||||
_cod_pre = _cod;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TPartita p(rc);
|
TPartita p(rc);
|
||||||
|
|
||||||
int r = p.prima_fattura();
|
|
||||||
|
|
||||||
if (rc.get_int(PART_NRIGA) == 1)
|
|
||||||
{
|
|
||||||
_pending_total++;
|
|
||||||
if (_pending_clifo)
|
|
||||||
{
|
|
||||||
set_page_clifoco(nriga); // Setta le righe per stampare le informazioni del cli/fo/conto
|
|
||||||
_pending_clifo = FALSE;
|
|
||||||
set_row(++nriga,"");
|
|
||||||
nriga++;
|
|
||||||
}
|
|
||||||
if (r > 0)
|
|
||||||
set_page_part(nriga);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Pesca gli estremi dalla prima riga di fattura, che non e' necessariamente la riga #1
|
//Pesca gli estremi dalla prima riga di fattura, che non e' necessariamente la riga #1
|
||||||
|
int r = p.prima_fattura();
|
||||||
|
|
||||||
|
if (r < 1) return TRUE; // se non ci sono fatture ... salta al prossimo
|
||||||
|
|
||||||
_residuo = "";
|
_residuo = "";
|
||||||
_nonscad = "";
|
_nonscad = "";
|
||||||
_buonfin = "";
|
_buonfin = "";
|
||||||
@ -446,37 +432,23 @@ bool TStampaScaduto::preprocess_page(int file, int counter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
current_cursor()->repos(); // Very, very necessary...
|
current_cursor()->repos(); // Very, very necessary...
|
||||||
|
|
||||||
if (r < 1)
|
// Se c'e' qualcosa da stampare (ovvero almeno un importo non nullo)
|
||||||
|
const bool to_print = !_residuo.empty() || !_nonscad.empty() || !_sc_1.empty() || !_sc_2.empty() ||
|
||||||
|
!_sc_3.empty() || !_sc_4.empty() || !_sc_5.empty() || !_sc_6.empty() || (_tipost == clienti && !_buonfin.empty());
|
||||||
|
if (to_print)
|
||||||
{
|
{
|
||||||
_pending_total--;
|
if (rc.get_int(PART_NRIGA) == 1)
|
||||||
if (_pending_clifo)
|
|
||||||
_pending_clifo = (_pending_total > 0);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_residuo.empty() && _nonscad.empty() && _sc_1.empty() && _sc_2.empty() &&
|
|
||||||
_sc_3.empty() && _sc_4.empty() && _sc_5.empty() && _sc_6.empty())
|
|
||||||
{
|
|
||||||
if (_tipost == clienti)
|
|
||||||
{
|
{
|
||||||
if (_buonfin.empty())
|
if (_pending_clifo)
|
||||||
{
|
{
|
||||||
// se ha stampato i totali precedenti deve mantenerli
|
set_page_clifoco(nriga); // Setta le righe per stampare le informazioni del cli/fo/conto
|
||||||
for (int i = lastgood; i <= nriga; i++) reset_row(i);
|
set_row(++nriga,"");
|
||||||
_pending_total--;
|
nriga++;
|
||||||
if (_pending_clifo)
|
_pending_clifo = FALSE;
|
||||||
_pending_clifo = (_pending_total > 0);
|
|
||||||
return lastgood;
|
|
||||||
}
|
}
|
||||||
|
set_page_part(nriga);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = lastgood; i <= nriga; i++) reset_row(i);
|
|
||||||
_pending_total--;
|
|
||||||
if (_pending_clifo) _pending_clifo = (_pending_total > 0);
|
|
||||||
return lastgood;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -568,8 +540,7 @@ bool TStampaScaduto::set_print(int)
|
|||||||
else _tipost = fornitori;
|
else _tipost = fornitori;
|
||||||
if (_m->get_key() == 1) _ordcod = TRUE;
|
if (_m->get_key() == 1) _ordcod = TRUE;
|
||||||
else _ordcod = FALSE;
|
else _ordcod = FALSE;
|
||||||
_end_printed = _pending_clifo =FALSE;
|
_end_printed = _pending_clifo = FALSE;
|
||||||
_pending_total = 0;
|
|
||||||
_gcr = _m->get_int(F_GIORNI);
|
_gcr = _m->get_int(F_GIORNI);
|
||||||
_stvaluta = _m->get_bool(F_VALUTA);
|
_stvaluta = _m->get_bool(F_VALUTA);
|
||||||
_datas = (const char *)(_m->get(F_DATASTAMPA));
|
_datas = (const char *)(_m->get(F_DATASTAMPA));
|
||||||
@ -707,22 +678,18 @@ void TStampaScaduto::print_totali_rows(int& nriga, bool what)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TStampaScaduto::print_totali(int& nriga)
|
void TStampaScaduto::print_totali(int& nriga)
|
||||||
// Riconosce all'interno se stampare o meno anche il totale generale
|
|
||||||
{
|
{
|
||||||
TString s("CLIENTE");
|
TString s("CLIENTE");
|
||||||
|
|
||||||
if (_tipost == fornitori) s = "FORNITORE";
|
if (_tipost == fornitori) s = "FORNITORE";
|
||||||
else if (_tipost == altri) s = "CONTO";
|
else if (_tipost == altri) s = "CONTO";
|
||||||
|
reset_row(nriga);
|
||||||
set_row(nriga++,"");
|
set_row(nriga++,"");
|
||||||
|
reset_row(nriga);
|
||||||
set_row(nriga,"TOTALE %s",(const char*) s);
|
set_row(nriga,"TOTALE %s",(const char*) s);
|
||||||
print_totali_rows(nriga,0);
|
print_totali_rows(nriga,0);
|
||||||
set_row(nriga++,"");
|
set_row(++nriga,"");
|
||||||
if (_end_printed)
|
nriga++;
|
||||||
{
|
|
||||||
set_row(nriga,"TOTALE GENERALE");
|
|
||||||
print_totali_rows(nriga,1);
|
|
||||||
set_row(nriga++,"");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TStampaScaduto::print_header()
|
void TStampaScaduto::print_header()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user