Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : Stampa per categorie: possibilita' di stampare le etichette per nucleo famigliare git-svn-id: svn://10.65.10.50/trunk@6954 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
93dd671c64
commit
02624f9694
161
at/at2700.cpp
161
at/at2700.cpp
@ -8,6 +8,7 @@
|
||||
#include "soggetti.h"
|
||||
#include "benem.h"
|
||||
#include "donaz.h"
|
||||
#include "famiglie.h"
|
||||
#include "sezioni.h"
|
||||
#include <comuni.h>
|
||||
|
||||
@ -32,7 +33,7 @@
|
||||
#define ALIAS_BNZ 600 // benemerenze
|
||||
#define ALIAS_GAZ 300 // gruppi aziendale
|
||||
|
||||
#define ETI_INDIRIZZO 4 // numero campo indirizzo in etichetta (deve essere sempre cosi')
|
||||
#define ETI_COGNOME 3 // numero campo cognome e nome in etichetta (deve essere sempre cosi') per famiglie
|
||||
|
||||
enum ts { undefined=0, sintetico=1, completo=2, schede=3, etichette=4, cartoline=5, personale=6 };
|
||||
|
||||
@ -60,20 +61,23 @@ class TStampaPerCategorie : public TPrintapp
|
||||
TMask* _msk;
|
||||
TLocalisamfile* _benem;
|
||||
TLocalisamfile* _donaz;
|
||||
TLocalisamfile* _famiglie;
|
||||
TRecord_array* _sbenemerenze;
|
||||
TRecord_array* _sfamiglia;
|
||||
TEti_percat_form* _form_eti;
|
||||
TEti_percat_form* _form_car;
|
||||
TEti_percat_form* _form_sch;
|
||||
TEti_percat_form* _form_per;
|
||||
TAssoc_array _catdon;
|
||||
TAssoc_array _catnondon;
|
||||
TAssoc_array _codfamiglie;
|
||||
TParagraph_string _cognome_nome, _dencom, _benemerenza;
|
||||
TString80 _rigastampa;
|
||||
TDate _data_stampa;
|
||||
ts _tipostampa;
|
||||
TString16 _lettini, _lettfin, _capini, _capfin;
|
||||
TString16 _gruppoazie, _gruppoold;
|
||||
bool _pergruppo;
|
||||
bool _pergruppo, _perfamiglie;
|
||||
int _contatore;
|
||||
TString16 _codsez, _codsot, _orario, _datacart;
|
||||
TString80 _invitoper, _data, _presso1, _presso2, _presso3, _presso4;
|
||||
@ -257,7 +261,19 @@ void TStampaPerCategorie::set_page(int file, int cnt)
|
||||
{
|
||||
if (current_cursor()->pos()<current_cursor()->items())
|
||||
{
|
||||
bool avanza = TRUE;
|
||||
while (avanza)
|
||||
{
|
||||
if (current_cursor()->pos()<current_cursor()->items())
|
||||
avanza = !(preprocess_page(file, cnt));
|
||||
else
|
||||
avanza = FALSE;
|
||||
if (avanza)
|
||||
++(*current_cursor());
|
||||
}
|
||||
force_setpage(TRUE);
|
||||
TForm_item& cognome = corpo.find_field(ETI_COGNOME);
|
||||
cognome.set(_cognome_nome);
|
||||
corpo.update();
|
||||
for (word i = 0; i < corpo.height(); i++)
|
||||
{
|
||||
@ -271,10 +287,16 @@ void TStampaPerCategorie::set_page(int file, int cnt)
|
||||
set_row(i+1,riga1);
|
||||
}
|
||||
if (r < _etcolonne)
|
||||
{
|
||||
++(*current_cursor());
|
||||
if (current_cursor()->pos()<current_cursor()->items())
|
||||
preprocess_page(file, cnt);
|
||||
{
|
||||
bool avanza = TRUE;
|
||||
while (avanza)
|
||||
{
|
||||
++(*current_cursor());
|
||||
if (current_cursor()->pos()<current_cursor()->items())
|
||||
avanza = !(preprocess_page(file, cnt));
|
||||
else
|
||||
avanza = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -612,6 +634,123 @@ bool TStampaPerCategorie::preprocess_page(int file, int counter)
|
||||
if (_tipostampa==etichette)
|
||||
if (printer().rows_left() < _form_eti->get_body().height())
|
||||
printer().formfeed();
|
||||
|
||||
if (_perfamiglie)
|
||||
{
|
||||
TRectype& recfam = current_cursor()->curr(LF_FAMIGLIE);
|
||||
const long codice = recsog.get_long(SOG_CODICE);
|
||||
const long codsufam = recfam.get_long(FAM_CODFAM);
|
||||
const int rigafamsog = recfam.get_int(FAM_PROGFAM);
|
||||
if ( codsufam == codice)
|
||||
{
|
||||
TRectype key = TRectype(LF_FAMIGLIE);
|
||||
key.put(FAM_FAMIGLIA, recfam.get_long(FAM_FAMIGLIA));
|
||||
const int err = _sfamiglia->read(key);
|
||||
if (err == NOERR)
|
||||
{
|
||||
current_cursor()->save_status();
|
||||
// controllo se qualcuno che lo precede nella famiglia rientra
|
||||
// nella selezione, in questo caso ho gia' stampato la famiglia
|
||||
// che viene stampata quando incontro il primo componente che
|
||||
// rientra nella famiglia
|
||||
// se non l'ho ancora stampato, accodo tutti i nominativi
|
||||
// della famiglia e stampo
|
||||
bool dastampare=TRUE;
|
||||
for (int r=1; r<=_sfamiglia->rows(); r++)
|
||||
{
|
||||
const TRectype& riga = _sfamiglia->row(r);
|
||||
long codfam = riga.get_long(FAM_CODFAM);
|
||||
if (!(codice == codfam))
|
||||
{
|
||||
TLocalisamfile sog(LF_SOGGETTI);
|
||||
sog.setkey(1);
|
||||
sog.put(SOG_CODICE, codfam);
|
||||
if (sog.read() == NOERR)
|
||||
{
|
||||
current_cursor()->curr().put(SOG_CODSEZ, sog.get(SOG_CODSEZ));
|
||||
current_cursor()->curr().put(SOG_CODSOT, sog.get(SOG_CODSOT));
|
||||
current_cursor()->curr().put(SOG_COGNOME, sog.get(SOG_COGNOME));
|
||||
current_cursor()->curr().put(SOG_NOME, sog.get(SOG_NOME));
|
||||
current_cursor()->curr().put(SOG_DATANASC, sog.get(SOG_DATANASC));
|
||||
if (current_cursor()->test() == NOERR)
|
||||
if (r < rigafamsog)
|
||||
dastampare = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
//current_cursor()->restore_status();
|
||||
if (dastampare)
|
||||
{
|
||||
TString256 cognome = "";
|
||||
for (int r=1; r<=_sfamiglia->rows(); r++)
|
||||
{
|
||||
const TRectype& riga = _sfamiglia->row(r);
|
||||
long codfam = riga.get_long(FAM_CODFAM);
|
||||
if (codice == codfam)
|
||||
{
|
||||
TLocalisamfile sog(LF_SOGGETTI);
|
||||
sog.setkey(1);
|
||||
sog.put(SOG_CODICE, codfam);
|
||||
if (sog.read() == NOERR)
|
||||
{
|
||||
cognome << sog.get(SOG_COGNOME);
|
||||
cognome << " ";
|
||||
cognome << sog.get(SOG_NOME);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TLocalisamfile sog(LF_SOGGETTI);
|
||||
sog.setkey(1);
|
||||
sog.put(SOG_CODICE, codfam);
|
||||
if (sog.read() == NOERR)
|
||||
{
|
||||
current_cursor()->curr().put(SOG_CODSEZ, sog.get(SOG_CODSEZ));
|
||||
current_cursor()->curr().put(SOG_CODSOT, sog.get(SOG_CODSOT));
|
||||
current_cursor()->curr().put(SOG_COGNOME, sog.get(SOG_COGNOME));
|
||||
current_cursor()->curr().put(SOG_NOME, sog.get(SOG_NOME));
|
||||
current_cursor()->curr().put(SOG_DATANASC, sog.get(SOG_DATANASC));
|
||||
if (current_cursor()->test() == NOERR)
|
||||
{
|
||||
//TLocalisamfile soggetti(LF_SOGGETTI);
|
||||
//soggetti.setkey(1);
|
||||
//soggetti.put(SOG_CODICE, codfam);
|
||||
sog.put(SOG_CODICE, codfam);
|
||||
if (sog.read() == NOERR)
|
||||
{
|
||||
cognome << ", ";
|
||||
cognome << sog.get(SOG_COGNOME);
|
||||
cognome << " ";
|
||||
cognome << sog.get(SOG_NOME);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_cognome_nome = cognome;
|
||||
}
|
||||
}
|
||||
current_cursor()->restore_status();
|
||||
if (!dastampare)
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TString80 cognome= "";
|
||||
cognome << recsog.get(SOG_COGNOME);
|
||||
cognome << " ";
|
||||
cognome << recsog.get(SOG_NOME);
|
||||
_cognome_nome = cognome;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TString80 cognome= "";
|
||||
cognome << recsog.get(SOG_COGNOME);
|
||||
cognome << " ";
|
||||
cognome << recsog.get(SOG_NOME);
|
||||
_cognome_nome = cognome;
|
||||
}
|
||||
_contatore++;
|
||||
return TRUE;
|
||||
}
|
||||
@ -648,12 +787,15 @@ bool TStampaPerCategorie::set_print(int m)
|
||||
{
|
||||
if (_tipostampa == cartoline)
|
||||
dati_cartolina();
|
||||
if (_tipostampa == etichette)
|
||||
_cognome_nome.set_width(200);
|
||||
_codsez = "**";
|
||||
_codsot = "**";
|
||||
_gruppoold = "**";
|
||||
_contatore = 0;
|
||||
TString80 chiave = "";
|
||||
_pergruppo = _msk->get_bool(F_PERGRUPPO);
|
||||
_perfamiglie = _msk->get_bool(F_PERFAMIGLIE);
|
||||
bool percap = _msk->get_bool(F_PERCAP);
|
||||
_capini = _msk->get(F_CAPINI);
|
||||
_capfin = _msk->get(F_CAPFIN);
|
||||
@ -857,10 +999,11 @@ void TStampaPerCategorie::crea_intestazione()
|
||||
}
|
||||
|
||||
bool TStampaPerCategorie::user_create()
|
||||
{
|
||||
{
|
||||
_rel = new TRelation(LF_SOGGETTI);
|
||||
_rel->add(LF_DONAZ, "CODICE==CODICE", 1);
|
||||
_rel->add(LF_BENEM, "CODICE==CODICE", 1);
|
||||
_rel->add(LF_FAMIGLIE, "CODFAM==CODICE", 2);
|
||||
_rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT");
|
||||
_rel->add("BNZ", "CODTAB==TIPOBEN", 1, LF_BENEM, ALIAS_BNZ);
|
||||
_rel->add("CTD", "CODTAB==CATDON",1,0,ALIAS_CTD);
|
||||
@ -876,7 +1019,9 @@ bool TStampaPerCategorie::user_create()
|
||||
_rel->add(LF_MEDICI, "CODMED==CODMED");
|
||||
_donaz = new TLocalisamfile(LF_DONAZ);
|
||||
_benem = new TLocalisamfile(LF_BENEM);
|
||||
_famiglie = new TLocalisamfile(LF_FAMIGLIE);
|
||||
_sbenemerenze = new TRecord_array(LF_BENEM,BEN_PROGBEN);
|
||||
_sfamiglia = new TRecord_array(LF_FAMIGLIE,FAM_PROGFAM);
|
||||
add_cursor(new TSorted_cursor(_rel,"SOG_CODSEZ|SOG_CODSOT","",3));
|
||||
_msk = new TMask("at2700a");
|
||||
|
||||
@ -904,7 +1049,9 @@ bool TStampaPerCategorie::user_destroy()
|
||||
delete _form_car;
|
||||
delete _form_eti;
|
||||
delete _msk;
|
||||
delete _sfamiglia;
|
||||
delete _sbenemerenze;
|
||||
delete _famiglie;
|
||||
delete _benem;
|
||||
delete _donaz;
|
||||
delete _rel;
|
||||
|
@ -45,6 +45,7 @@
|
||||
#define F_LETTINI 407
|
||||
#define F_LETTFIN 408
|
||||
#define F_NOTIZIARIO 409
|
||||
#define F_PERFAMIGLIE 410
|
||||
|
||||
#define F_SINTETICO 501
|
||||
#define F_COMPLETO 502
|
||||
|
@ -415,7 +415,7 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 77 6
|
||||
GROUPBOX DLG_NULL 77 7
|
||||
BEGIN
|
||||
PROMPT 1 14 "Opzioni di stampa"
|
||||
END
|
||||
@ -497,5 +497,10 @@ BEGIN
|
||||
//PICTURE "!!"
|
||||
END
|
||||
|
||||
BOOLEAN F_PERFAMIGLIE
|
||||
BEGIN
|
||||
PROMPT 2 19 "Raggruppa per famiglie (solo etichette)"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
Loading…
x
Reference in New Issue
Block a user