Patch level : 1.7 670
Files correlati : at4.exe at4100a.msk Ricompilazione Demo : [ ] Commento : aggiunta possibilita` di stampa etichette per famiglie git-svn-id: svn://10.65.10.50/trunk@11714 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
e8b5425061
commit
5f8af429fd
163
at/at4100.cpp
163
at/at4100.cpp
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include "soggetti.h"
|
#include "soggetti.h"
|
||||||
#include "donaz.h"
|
#include "donaz.h"
|
||||||
|
#include "famiglie.h"
|
||||||
#include "sezioni.h"
|
#include "sezioni.h"
|
||||||
#include <comuni.h>
|
#include <comuni.h>
|
||||||
|
|
||||||
@ -31,6 +32,8 @@
|
|||||||
#define IDON_SI "SI"
|
#define IDON_SI "SI"
|
||||||
#define IDON_AF "AF"
|
#define IDON_AF "AF"
|
||||||
|
|
||||||
|
#define ETI_COGNOME 3 // numero campo cognome e nome in etichetta (deve essere sempre cosi') per famiglie
|
||||||
|
|
||||||
enum ts { undefined = 0, elenco = 1, completo = 2, etichette = 3, cartoline = 4, sms = 5, personale = 6 };
|
enum ts { undefined = 0, elenco = 1, completo = 2, etichette = 3, cartoline = 4, sms = 5, personale = 6 };
|
||||||
|
|
||||||
// definizione form per etichette
|
// definizione form per etichette
|
||||||
@ -54,15 +57,18 @@ class TStampaScadenze : public TPrintapp
|
|||||||
TRelation* _rel;
|
TRelation* _rel;
|
||||||
TMask* _msk;
|
TMask* _msk;
|
||||||
TLocalisamfile* _donaz;
|
TLocalisamfile* _donaz;
|
||||||
|
TLocalisamfile* _famiglie;
|
||||||
|
TRecord_array* _sfamiglia;
|
||||||
TScadenze_form* _form_eti;
|
TScadenze_form* _form_eti;
|
||||||
TScadenze_form* _form_car;
|
TScadenze_form* _form_car;
|
||||||
TScadenze_form* _form_per;
|
TScadenze_form* _form_per;
|
||||||
TAssoc_array _categorie;
|
TAssoc_array _categorie;
|
||||||
|
TAssoc_array _codfamiglie;
|
||||||
TParagraph_string _cognome_nome, _dencom, _giopredon, _telefono, _dataconv;
|
TParagraph_string _cognome_nome, _dencom, _giopredon, _telefono, _dataconv;
|
||||||
TDate _data_stampa;
|
TDate _data_stampa;
|
||||||
TDate _dataini, _datafin, _dataultid;
|
TDate _dataini, _datafin, _dataultid;
|
||||||
int _intminconv;
|
int _intminconv;
|
||||||
bool _usomodo, _usasez, _registra, _gpd_esclusivo, _proc_esclusivo;
|
bool _usomodo, _usasez, _registra, _gpd_esclusivo, _proc_esclusivo, _perfamiglie;
|
||||||
TString16 _giorni, _punto;
|
TString16 _giorni, _punto;
|
||||||
TString16 _procdon, _modo, _ab01, _ab02, _ab03, _rh;
|
TString16 _procdon, _modo, _ab01, _ab02, _ab03, _rh;
|
||||||
ts _tipostampa;
|
ts _tipostampa;
|
||||||
@ -226,9 +232,22 @@ void TStampaScadenze::set_page(int file, int cnt)
|
|||||||
{
|
{
|
||||||
if (current_cursor()->pos()<current_cursor()->items())
|
if (current_cursor()->pos()<current_cursor()->items())
|
||||||
{
|
{
|
||||||
_netichette++;
|
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);
|
force_setpage(TRUE);
|
||||||
|
TForm_item& cognome = corpo.find_field(ETI_COGNOME);
|
||||||
|
cognome.set(_cognome_nome);
|
||||||
corpo.update();
|
corpo.update();
|
||||||
|
_contatore++;
|
||||||
|
_netichette++;
|
||||||
int nriga = 1;
|
int nriga = 1;
|
||||||
if (_etrighe > 0)
|
if (_etrighe > 0)
|
||||||
{
|
{
|
||||||
@ -243,12 +262,22 @@ void TStampaScadenze::set_page(int file, int cnt)
|
|||||||
riga1.cut(_etlarghezza);
|
riga1.cut(_etlarghezza);
|
||||||
int colonna = ((r-1)*_etlarghezza);
|
int colonna = ((r-1)*_etlarghezza);
|
||||||
TString16 formato;
|
TString16 formato;
|
||||||
formato << '@' << colonna << "g";
|
formato << '@' << colonna << 'g';
|
||||||
riga1.insert(formato,0);
|
riga1.insert(formato,0);
|
||||||
set_row(nriga++,riga1);
|
set_row(nriga++,riga1);
|
||||||
}
|
}
|
||||||
if (r < _etcolonne)
|
if (r < _etcolonne)
|
||||||
|
{
|
||||||
|
bool avanza = TRUE;
|
||||||
|
while (avanza)
|
||||||
|
{
|
||||||
++(*current_cursor());
|
++(*current_cursor());
|
||||||
|
if (current_cursor()->pos()<current_cursor()->items())
|
||||||
|
avanza = !(preprocess_page(file, cnt));
|
||||||
|
else
|
||||||
|
avanza = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -597,6 +626,114 @@ bool TStampaScadenze::preprocess_page(int file, int counter)
|
|||||||
if (_tipostampa==personale)
|
if (_tipostampa==personale)
|
||||||
if (printer().rows_left() < _form_per->get_body().height())
|
if (printer().rows_left() < _form_per->get_body().height())
|
||||||
printer().formfeed();
|
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)
|
||||||
|
{
|
||||||
|
TRecnotype pos = current_cursor()->pos();
|
||||||
|
// 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()) = pos;
|
||||||
|
if (!dastampare)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString80 cognome= "";
|
||||||
|
cognome << recsog.get(SOG_COGNOME);
|
||||||
|
cognome << " ";
|
||||||
|
cognome << recsog.get(SOG_NOME);
|
||||||
|
_cognome_nome = cognome;
|
||||||
|
}
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -700,6 +837,7 @@ bool TStampaScadenze::set_print(int m)
|
|||||||
_proc_esclusivo = _msk->get_bool(F_PROC_ESCLUSIVO);
|
_proc_esclusivo = _msk->get_bool(F_PROC_ESCLUSIVO);
|
||||||
_usomodo = _msk->get_bool(F_USOMODO);
|
_usomodo = _msk->get_bool(F_USOMODO);
|
||||||
_modo = _msk->get(F_MODO);
|
_modo = _msk->get(F_MODO);
|
||||||
|
_perfamiglie = _msk->get_bool(F_PERFAMIGLIE);
|
||||||
_ab01 = _msk->get(F_AB01);
|
_ab01 = _msk->get(F_AB01);
|
||||||
_ab02 = _msk->get(F_AB02);
|
_ab02 = _msk->get(F_AB02);
|
||||||
_ab03 = _msk->get(F_AB03);
|
_ab03 = _msk->get(F_AB03);
|
||||||
@ -751,6 +889,19 @@ bool TStampaScadenze::set_print(int m)
|
|||||||
current_cursor()->setfilter("((TCS->S6 == \"I\" ) || (TCS->S6 == \"F\")) && (ESCLUSO == \"\")", TRUE);
|
current_cursor()->setfilter("((TCS->S6 == \"I\" ) || (TCS->S6 == \"F\")) && (ESCLUSO == \"\")", TRUE);
|
||||||
// filtro per categorie e altro
|
// filtro per categorie e altro
|
||||||
current_cursor()->set_filterfunction(filter_func_scadenze);
|
current_cursor()->set_filterfunction(filter_func_scadenze);
|
||||||
|
|
||||||
|
if (_perfamiglie)
|
||||||
|
{
|
||||||
|
TConfig config(CONFIG_STUDIO);
|
||||||
|
TString16 etformato = config.get("EtFFormato");
|
||||||
|
_etlarghezza = config.get_int("EtFLarghezza");
|
||||||
|
_etcolonne = config.get_int("EtFColonne");
|
||||||
|
_etrighe = config.get_int("EtFRighe");
|
||||||
|
_etbordoini = config.get_int("EtFBordoIni");
|
||||||
|
_etbordofin = config.get_int("EtFBordoFin");
|
||||||
|
delete _form_eti;
|
||||||
|
_form_eti = new TScadenze_form(etformato);
|
||||||
|
}
|
||||||
_contatore = 0;
|
_contatore = 0;
|
||||||
_netichette = 0;
|
_netichette = 0;
|
||||||
_ncartoline = 0;
|
_ncartoline = 0;
|
||||||
@ -855,11 +1006,14 @@ void TStampaScadenze::crea_intestazione()
|
|||||||
bool TStampaScadenze::user_create()
|
bool TStampaScadenze::user_create()
|
||||||
{
|
{
|
||||||
_rel = new TRelation(LF_SOGGETTI);
|
_rel = new TRelation(LF_SOGGETTI);
|
||||||
|
_rel->add(LF_FAMIGLIE, "CODFAM==CODICE", 2);
|
||||||
_rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS);
|
_rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS);
|
||||||
_rel->add("LCP", "CODTAB==DOM_CODLOC",1,0,ALIAS_LCPDOM);
|
_rel->add("LCP", "CODTAB==DOM_CODLOC",1,0,ALIAS_LCPDOM);
|
||||||
_rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,0,ALIAS_COMDOM);
|
_rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,0,ALIAS_COMDOM);
|
||||||
_rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT");
|
_rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT");
|
||||||
_donaz = new TLocalisamfile(LF_DONAZ);
|
_donaz = new TLocalisamfile(LF_DONAZ);
|
||||||
|
_famiglie = new TLocalisamfile(LF_FAMIGLIE);
|
||||||
|
_sfamiglia = new TRecord_array(LF_FAMIGLIE,FAM_PROGFAM);
|
||||||
add_cursor(new TCursor(_rel, "", 3));
|
add_cursor(new TCursor(_rel, "", 3));
|
||||||
_msk = new TMask("at4100a");
|
_msk = new TMask("at4100a");
|
||||||
TConfig config(CONFIG_STUDIO);
|
TConfig config(CONFIG_STUDIO);
|
||||||
@ -888,7 +1042,10 @@ bool TStampaScadenze::user_destroy()
|
|||||||
delete _form_per;
|
delete _form_per;
|
||||||
delete _form_car;
|
delete _form_car;
|
||||||
delete _form_eti;
|
delete _form_eti;
|
||||||
|
delete _form_eti;
|
||||||
delete _msk;
|
delete _msk;
|
||||||
|
delete _sfamiglia;
|
||||||
|
delete _famiglie;
|
||||||
delete _donaz;
|
delete _donaz;
|
||||||
delete _rel;
|
delete _rel;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
#define F_REGISTRA 322
|
#define F_REGISTRA 322
|
||||||
#define F_GPD_ESCLUSIVO 323
|
#define F_GPD_ESCLUSIVO 323
|
||||||
#define F_PROC_ESCLUSIVO 324
|
#define F_PROC_ESCLUSIVO 324
|
||||||
|
#define F_PERFAMIGLIE 325
|
||||||
|
|
||||||
#define F_ELENCO 401
|
#define F_ELENCO 401
|
||||||
#define F_COMPLETO 402
|
#define F_COMPLETO 402
|
||||||
|
@ -290,7 +290,7 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 77 9
|
GROUPBOX DLG_NULL 77 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 9 "Opzioni di convocazione"
|
PROMPT 1 9 "Opzioni di convocazione"
|
||||||
END
|
END
|
||||||
@ -413,9 +413,11 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 77 3
|
BOOLEAN F_PERFAMIGLIE
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 18 "Dati gruppo-ematici"
|
PROMPT 2 17 "Uso famiglie per etichette"
|
||||||
|
MESSAGE TRUE ENABLE,F_MODO
|
||||||
|
MESSAGE FALSE RESET,F_MODO|DISABLE,F_MODO
|
||||||
END
|
END
|
||||||
|
|
||||||
LISTBOX F_AB01 5
|
LISTBOX F_AB01 5
|
||||||
|
Loading…
x
Reference in New Issue
Block a user