- Sistemato il seguente errore: quando la distinta del quadro G occupa piu' di un modulo bisogna stampare prima 2 pagine bianche del quadro G.
git-svn-id: svn://10.65.10.50/trunk@3798 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
a57dacf3fd
commit
997973b645
@ -50,6 +50,96 @@ END
|
|||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
|
SECTION HEADER LAST 18
|
||||||
|
|
||||||
|
STRINGA 1
|
||||||
|
BEGIN
|
||||||
|
KEY "CODICE FISCALE"
|
||||||
|
PROMPT 4 11 ""
|
||||||
|
FIELD 106@->COFI
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 2
|
||||||
|
BEGIN
|
||||||
|
KEY "RAGIONE SOCIALE"
|
||||||
|
PROMPT 39 11 ""
|
||||||
|
FIELD 106@->RAGSOC
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 3
|
||||||
|
BEGIN
|
||||||
|
KEY "COGNOME"
|
||||||
|
PROMPT 39 11 ""
|
||||||
|
FIELD 106@->RAGSOC[1,30]
|
||||||
|
GROUP 1
|
||||||
|
FLAGS "H"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 4
|
||||||
|
BEGIN
|
||||||
|
KEY "NOME"
|
||||||
|
PROMPT 17 13 ""
|
||||||
|
FIELD 106@->RAGSOC[31,50]
|
||||||
|
GROUP 1
|
||||||
|
FLAGS "H"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 5
|
||||||
|
BEGIN
|
||||||
|
KEY "COMUNE DI RES."
|
||||||
|
PROMPT 17 13 ""
|
||||||
|
FIELD 413@->DENCOM
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 6
|
||||||
|
BEGIN
|
||||||
|
KEY "PROV DI RES."
|
||||||
|
PROMPT 58 13 ""
|
||||||
|
FIELD 413@->PROVCOM
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 7
|
||||||
|
BEGIN
|
||||||
|
KEY "VIA di RES."
|
||||||
|
PROMPT 65 13 ""
|
||||||
|
FIELD 106@->INDRF
|
||||||
|
FIELD 106@->INDRES
|
||||||
|
GROUP 4
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 8
|
||||||
|
BEGIN
|
||||||
|
KEY "NUM. CIVICO di RES."
|
||||||
|
PROMPT 101 13 ""
|
||||||
|
FIELD 106@->CIVRF
|
||||||
|
FIELD 106@->CIVRES
|
||||||
|
GROUP 4
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 9
|
||||||
|
BEGIN
|
||||||
|
KEY "CAP"
|
||||||
|
PROMPT 122 13 ""
|
||||||
|
FIELD 106@->CAPRF
|
||||||
|
FIELD 106@->CAPRES
|
||||||
|
GROUP 4
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 13
|
||||||
|
BEGIN
|
||||||
|
KEY "CODICE FISCALE DICHIARANTE"
|
||||||
|
PROMPT 118 16 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 14
|
||||||
|
BEGIN
|
||||||
|
KEY "NUM. FOGLIO"
|
||||||
|
PROMPT 120 17 ""
|
||||||
|
FLAGS "H"
|
||||||
|
END
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
SECTION BODY ODD 8
|
SECTION BODY ODD 8
|
||||||
|
|
||||||
STRINGA 1
|
STRINGA 1
|
||||||
|
241
m770/77stq.cpp
241
m770/77stq.cpp
@ -1065,8 +1065,8 @@ bool TQuadroG::print(const long codditta, const long NumFis, const long NumNoFis
|
|||||||
|
|
||||||
_PaginaCorrente = PRIMA;
|
_PaginaCorrente = PRIMA;
|
||||||
|
|
||||||
if (!InitPrint(codditta))
|
/* if (! */InitPrint(codditta); /*)*/
|
||||||
return FALSE;
|
// return FALSE;
|
||||||
|
|
||||||
for (int pagina=1; pagina <= QG_PAGINE; pagina++, next_page(pr))
|
for (int pagina=1; pagina <= QG_PAGINE; pagina++, next_page(pr))
|
||||||
{
|
{
|
||||||
@ -1117,6 +1117,9 @@ class TDistintaG : public TQuadroG
|
|||||||
int calcola_firma();
|
int calcola_firma();
|
||||||
public:
|
public:
|
||||||
virtual bool print(const long codditta, const long NumFis, const long NumNoFis);
|
virtual bool print(const long codditta, const long NumFis, const long NumNoFis);
|
||||||
|
|
||||||
|
void stampa_testata_quadroG(TPrinter& pr);
|
||||||
|
|
||||||
TDistintaG(const char* form, const char* quadro) : TQuadroG(form,quadro) {}
|
TDistintaG(const char* form, const char* quadro) : TQuadroG(form,quadro) {}
|
||||||
virtual ~TDistintaG() {}
|
virtual ~TDistintaG() {}
|
||||||
};
|
};
|
||||||
@ -1161,7 +1164,7 @@ void TDistintaG::stampa_totali(TPrinter& pr, bool tot)
|
|||||||
{
|
{
|
||||||
TPrint_section& totali = section('F', even_page);
|
TPrint_section& totali = section('F', even_page);
|
||||||
totali.update();
|
totali.update();
|
||||||
const int lasty = calcola_firma();
|
const int lasty = calcola_firma() - 1;
|
||||||
for (int i = 0; i < totali.items(); i++)
|
for (int i = 0; i < totali.items(); i++)
|
||||||
{
|
{
|
||||||
TPrintrow& row = totali.row(i);
|
TPrintrow& row = totali.row(i);
|
||||||
@ -1215,6 +1218,45 @@ void TDistintaG::set_body(TPrinter& pr, const char tipo)
|
|||||||
progind()->addstatus(1);
|
progind()->addstatus(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TDistintaG::stampa_testata_quadroG(TPrinter& pr)
|
||||||
|
{
|
||||||
|
TPrint_section& head = section('H', last_page);
|
||||||
|
const word r = head.height()-1;
|
||||||
|
TPrintrow& head_row = head.row(r-1);
|
||||||
|
|
||||||
|
// Setta il cod.fis. del dichiarante se necessario
|
||||||
|
if (tipo_ditta() == estinto)
|
||||||
|
{
|
||||||
|
TForm_item& cfd = head.find_field(H_COFI_DIC);
|
||||||
|
cfd.set(_cofi_dic);
|
||||||
|
}
|
||||||
|
// Righe da saltare nelle prime pag. dei moduli successivi al primo (che' son
|
||||||
|
// senza le righe del posizionamento...)
|
||||||
|
int righedasaltare=HEADER_PRIMA_NOPOS;
|
||||||
|
head.update();
|
||||||
|
for (word j = 0; j <= r; j++)
|
||||||
|
{
|
||||||
|
if (j==0)
|
||||||
|
{
|
||||||
|
if (_modulaser)
|
||||||
|
{
|
||||||
|
TPrintrow& r = head.row(j);
|
||||||
|
if (!_GiaMessoStartDoc)
|
||||||
|
put_modulaser(r, STARTDOC);
|
||||||
|
put_modulaser(r, STARTDITTA);
|
||||||
|
put_modulaser(r, STARTPAGE, 1);
|
||||||
|
pr.print(r);
|
||||||
|
_RigaCorr++;
|
||||||
|
r.reset();
|
||||||
|
righedasaltare--;
|
||||||
|
}
|
||||||
|
if (!PaginaPosizionamento())
|
||||||
|
fill_page(pr, righedasaltare);
|
||||||
|
}
|
||||||
|
pr.print(head.row(j));
|
||||||
|
_RigaCorr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool TDistintaG::print(const long codditta, const long NumFis, const long NumNoFis)
|
bool TDistintaG::print(const long codditta, const long NumFis, const long NumNoFis)
|
||||||
{
|
{
|
||||||
@ -1387,6 +1429,12 @@ bool TDistintaG::print(const long codditta, const long NumFis, const long NumNoF
|
|||||||
stampa_totali(pr,FALSE);
|
stampa_totali(pr,FALSE);
|
||||||
|
|
||||||
_EndPrintDitta = _finite_fis && _finite_nofis;
|
_EndPrintDitta = _finite_fis && _finite_nofis;
|
||||||
|
if (!_EndPrintDitta)
|
||||||
|
{ // Se la distinta occupa piu' di un modulo devo fare in modo
|
||||||
|
next_page(pr); // che vengano stampate la testata del quadro G piu' le prime
|
||||||
|
stampa_testata_quadroG(pr); // due pagine vuote prima di continuare a stampare la distinta
|
||||||
|
next_page(pr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} // for pagina..
|
} // for pagina..
|
||||||
} // while !EndPrintDitta
|
} // while !EndPrintDitta
|
||||||
@ -1398,194 +1446,8 @@ bool TDistintaG::print(const long codditta, const long NumFis, const long NumNoF
|
|||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
/*
|
|
||||||
VECCHIA PRINT DELLA DISTINTA
|
|
||||||
TCursor* cur = cursor();
|
|
||||||
|
|
||||||
bool StabilitaInesistenzaNoFis = FALSE;
|
|
||||||
bool StabilitaInesistenzaFis = FALSE;
|
|
||||||
long CtrFis = NumFis;
|
|
||||||
long CtrNoFis = NumNoFis;
|
|
||||||
long PtrFis = -1L, PtrNoFis=-1L;
|
|
||||||
TPrinter& pr = printer();
|
|
||||||
|
|
||||||
_CtrFisStampati = _CtrNoFisStampati = 0;
|
|
||||||
_finite_fis = _finite_nofis = FALSE;
|
|
||||||
_GiaStampatiFis = _GiaStampatiNoFis = FALSE;
|
|
||||||
_EndPrintDitta = FALSE; // Vero se stampato l'ultimo record
|
|
||||||
bool LastRecord = FALSE; // Vero se letto l'ultimo record
|
|
||||||
_PaginaCorrente = PRIMA;
|
|
||||||
|
|
||||||
_codditta = codditta;
|
|
||||||
_RigaCorr = 0;
|
|
||||||
|
|
||||||
const long items = filtra(codditta);
|
|
||||||
|
|
||||||
while (!_EndPrintDitta)
|
|
||||||
{
|
|
||||||
for (int pagina=1; pagina <= QGD_PAGINE; pagina++, next_page(pr))
|
|
||||||
{
|
|
||||||
pr.formlen(QGD_FORMLEN);
|
|
||||||
|
|
||||||
if (_PaginaCorrente == PRIMA)
|
|
||||||
{
|
|
||||||
_EndPrintDitta=(_finite_fis && _finite_nofis);
|
|
||||||
|
|
||||||
if (_EndPrintDitta )
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (_finite_fis || StabilitaInesistenzaFis)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (_modulaser) ClearFlagModulaser();
|
|
||||||
|
|
||||||
for (int righe=0; righe < QGD_RIGHE_PRIMA; righe++)
|
|
||||||
{
|
|
||||||
// Stampa intestazione, solo sul primo foglio.
|
|
||||||
if (!righe)
|
|
||||||
{
|
|
||||||
(*cur) = PtrFis >= 0L ? PtrFis : 0L;
|
|
||||||
stampa_testata(pr);
|
|
||||||
}
|
|
||||||
|
|
||||||
// La prima volta si deve posizionare sul primo record di p.f.
|
|
||||||
if (PtrFis<0L && !StabilitaInesistenzaFis)
|
|
||||||
{
|
|
||||||
bool Trovato = FALSE;
|
|
||||||
|
|
||||||
while (!Trovato)
|
|
||||||
{
|
|
||||||
const long ditta = cur->curr().get_long(QGD_CODDITTA);
|
|
||||||
if (ditta != codditta)
|
|
||||||
break;
|
|
||||||
const char tipo = cur->curr().get(QGD_TIPOA)[0];
|
|
||||||
if (tipo != 'G')
|
|
||||||
{
|
|
||||||
PtrFis = cur->pos();
|
|
||||||
Trovato = TRUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
++(*cur);
|
|
||||||
}
|
|
||||||
StabilitaInesistenzaFis = !Trovato;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (StabilitaInesistenzaFis)
|
|
||||||
{
|
|
||||||
_finite_fis=TRUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
(*cur) = PtrFis;
|
|
||||||
const char tipo = cur->curr().get(QGD_TIPOA)[0];
|
|
||||||
|
|
||||||
if (tipo != 'F')
|
|
||||||
break;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CtrFis--;
|
|
||||||
if (CtrFis == 0L) _finite_fis = TRUE;
|
|
||||||
set_body(pr, 'F');
|
|
||||||
// La stampa e' finita se ho STAMPATO l'ultimo record
|
|
||||||
LastRecord = cur->pos() >= items-1;
|
|
||||||
_EndPrintDitta = LastRecord;
|
|
||||||
if (!LastRecord)
|
|
||||||
{
|
|
||||||
++(*cur);
|
|
||||||
PtrFis = cur->pos();
|
|
||||||
LastRecord = cur->pos() >= items-1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} // for righe..
|
|
||||||
PtrFis = cur->pos();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_PaginaCorrente == SECONDA)
|
|
||||||
{
|
|
||||||
// Reset del flag di pagina con posiz.
|
|
||||||
if (_posiziona && _PaginaPosizionamento) _PaginaPosizionamento = FALSE;
|
|
||||||
for (int righe=0; righe < QGD_RIGHE_SECONDA; righe++)
|
|
||||||
{
|
|
||||||
if (!righe)
|
|
||||||
_CtrNoFisStampati = 0;
|
|
||||||
|
|
||||||
// All'inizio salta le righe in alto
|
|
||||||
if (!righe)
|
|
||||||
fill_page(pr, HEADER_SECONDA_GD);
|
|
||||||
|
|
||||||
if (_finite_nofis || StabilitaInesistenzaNoFis)
|
|
||||||
break;
|
|
||||||
|
|
||||||
// La prima volta si deve posizionare sul primo record di p.g.
|
|
||||||
if (PtrNoFis<0L && !StabilitaInesistenzaNoFis)
|
|
||||||
{
|
|
||||||
bool Trovato = FALSE;
|
|
||||||
bool eof = FALSE;
|
|
||||||
(*cur) = PtrFis-1 > 0L ? PtrFis-1 : 0L; // parti dall'inizio
|
|
||||||
while (!Trovato && !eof)
|
|
||||||
{
|
|
||||||
eof = cur->pos() >= items-1;
|
|
||||||
const char tipo = cur->curr().get(QGD_TIPOA)[0];
|
|
||||||
if (tipo == 'G')
|
|
||||||
{
|
|
||||||
PtrNoFis = cur->pos();
|
|
||||||
Trovato = TRUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
++(*cur);
|
|
||||||
}
|
|
||||||
StabilitaInesistenzaNoFis = !Trovato;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Gestisce i casi in cui non ci sono percipienti nella distinta..
|
|
||||||
// if (items==0) _EndPrintDitta=TRUE;
|
|
||||||
|
|
||||||
if (StabilitaInesistenzaNoFis)
|
|
||||||
{
|
|
||||||
_finite_nofis=TRUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
(*cur) = PtrNoFis;
|
|
||||||
const char tipo = cur->curr().get(QGD_TIPOA)[0];
|
|
||||||
|
|
||||||
if (tipo != 'G')
|
|
||||||
break;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CtrNoFis--;
|
|
||||||
if (CtrNoFis == 0L) _finite_nofis = TRUE;
|
|
||||||
set_body(pr, 'G');
|
|
||||||
LastRecord = cur->pos() >= items-1;
|
|
||||||
_EndPrintDitta = LastRecord;
|
|
||||||
_CtrNoFisStampati++;
|
|
||||||
if (!LastRecord)
|
|
||||||
{
|
|
||||||
++(*cur);
|
|
||||||
PtrNoFis = cur->pos();
|
|
||||||
LastRecord = cur->pos() >= items-1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
PtrNoFis = cur->pos();
|
|
||||||
}
|
|
||||||
} // for pagina..
|
|
||||||
} // while !EndPrintDitta
|
|
||||||
|
|
||||||
if (usa_progind())
|
|
||||||
{
|
|
||||||
delete _prog;
|
|
||||||
_prog = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -3000,6 +2862,7 @@ bool TStampaQuadroG::print_quadro(const int OffsetDitta, const bool modulaser)
|
|||||||
|
|
||||||
items_g = _form_g->filtra(codditta);
|
items_g = _form_g->filtra(codditta);
|
||||||
items_gd = _form_gd->filtra(codditta);
|
items_gd = _form_gd->filtra(codditta);
|
||||||
|
if (items_g == 0 && items_gd == 0) continue;
|
||||||
|
|
||||||
// Dice al form quanto e' lunga la progress-bar
|
// Dice al form quanto e' lunga la progress-bar
|
||||||
_form_g->set_items_gd(items_g, items_gd);
|
_form_g->set_items_gd(items_g, items_gd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user