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
167
at/at4100.cpp
167
at/at4100.cpp
@ -5,6 +5,7 @@
|
||||
|
||||
#include "soggetti.h"
|
||||
#include "donaz.h"
|
||||
#include "famiglie.h"
|
||||
#include "sezioni.h"
|
||||
#include <comuni.h>
|
||||
|
||||
@ -31,6 +32,8 @@
|
||||
#define IDON_SI "SI"
|
||||
#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 };
|
||||
|
||||
// definizione form per etichette
|
||||
@ -54,15 +57,18 @@ class TStampaScadenze : public TPrintapp
|
||||
TRelation* _rel;
|
||||
TMask* _msk;
|
||||
TLocalisamfile* _donaz;
|
||||
TLocalisamfile* _famiglie;
|
||||
TRecord_array* _sfamiglia;
|
||||
TScadenze_form* _form_eti;
|
||||
TScadenze_form* _form_car;
|
||||
TScadenze_form* _form_per;
|
||||
TAssoc_array _categorie;
|
||||
TAssoc_array _codfamiglie;
|
||||
TParagraph_string _cognome_nome, _dencom, _giopredon, _telefono, _dataconv;
|
||||
TDate _data_stampa;
|
||||
TDate _dataini, _datafin, _dataultid;
|
||||
int _intminconv;
|
||||
bool _usomodo, _usasez, _registra, _gpd_esclusivo, _proc_esclusivo;
|
||||
bool _usomodo, _usasez, _registra, _gpd_esclusivo, _proc_esclusivo, _perfamiglie;
|
||||
TString16 _giorni, _punto;
|
||||
TString16 _procdon, _modo, _ab01, _ab02, _ab03, _rh;
|
||||
ts _tipostampa;
|
||||
@ -226,9 +232,22 @@ void TStampaScadenze::set_page(int file, int cnt)
|
||||
{
|
||||
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);
|
||||
corpo.update();
|
||||
TForm_item& cognome = corpo.find_field(ETI_COGNOME);
|
||||
cognome.set(_cognome_nome);
|
||||
corpo.update();
|
||||
_contatore++;
|
||||
_netichette++;
|
||||
int nriga = 1;
|
||||
if (_etrighe > 0)
|
||||
{
|
||||
@ -243,12 +262,22 @@ void TStampaScadenze::set_page(int file, int cnt)
|
||||
riga1.cut(_etlarghezza);
|
||||
int colonna = ((r-1)*_etlarghezza);
|
||||
TString16 formato;
|
||||
formato << '@' << colonna << "g";
|
||||
formato << '@' << colonna << 'g';
|
||||
riga1.insert(formato,0);
|
||||
set_row(nriga++,riga1);
|
||||
}
|
||||
if (r < _etcolonne)
|
||||
++(*current_cursor());
|
||||
{
|
||||
bool avanza = TRUE;
|
||||
while (avanza)
|
||||
{
|
||||
++(*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 (printer().rows_left() < _form_per->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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
@ -700,6 +837,7 @@ bool TStampaScadenze::set_print(int m)
|
||||
_proc_esclusivo = _msk->get_bool(F_PROC_ESCLUSIVO);
|
||||
_usomodo = _msk->get_bool(F_USOMODO);
|
||||
_modo = _msk->get(F_MODO);
|
||||
_perfamiglie = _msk->get_bool(F_PERFAMIGLIE);
|
||||
_ab01 = _msk->get(F_AB01);
|
||||
_ab02 = _msk->get(F_AB02);
|
||||
_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);
|
||||
// filtro per categorie e altro
|
||||
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;
|
||||
_netichette = 0;
|
||||
_ncartoline = 0;
|
||||
@ -855,11 +1006,14 @@ void TStampaScadenze::crea_intestazione()
|
||||
bool TStampaScadenze::user_create()
|
||||
{
|
||||
_rel = new TRelation(LF_SOGGETTI);
|
||||
_rel->add(LF_FAMIGLIE, "CODFAM==CODICE", 2);
|
||||
_rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS);
|
||||
_rel->add("LCP", "CODTAB==DOM_CODLOC",1,0,ALIAS_LCPDOM);
|
||||
_rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,0,ALIAS_COMDOM);
|
||||
_rel->add(LF_SEZIONI, "CODSEZ==CODSEZ|CODSOT==CODSOT");
|
||||
_donaz = new TLocalisamfile(LF_DONAZ);
|
||||
_famiglie = new TLocalisamfile(LF_FAMIGLIE);
|
||||
_sfamiglia = new TRecord_array(LF_FAMIGLIE,FAM_PROGFAM);
|
||||
add_cursor(new TCursor(_rel, "", 3));
|
||||
_msk = new TMask("at4100a");
|
||||
TConfig config(CONFIG_STUDIO);
|
||||
@ -888,7 +1042,10 @@ bool TStampaScadenze::user_destroy()
|
||||
delete _form_per;
|
||||
delete _form_car;
|
||||
delete _form_eti;
|
||||
delete _form_eti;
|
||||
delete _msk;
|
||||
delete _sfamiglia;
|
||||
delete _famiglie;
|
||||
delete _donaz;
|
||||
delete _rel;
|
||||
return TRUE;
|
||||
|
@ -47,6 +47,7 @@
|
||||
#define F_REGISTRA 322
|
||||
#define F_GPD_ESCLUSIVO 323
|
||||
#define F_PROC_ESCLUSIVO 324
|
||||
#define F_PERFAMIGLIE 325
|
||||
|
||||
#define F_ELENCO 401
|
||||
#define F_COMPLETO 402
|
||||
|
@ -290,7 +290,7 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 77 9
|
||||
GROUPBOX DLG_NULL 77 10
|
||||
BEGIN
|
||||
PROMPT 1 9 "Opzioni di convocazione"
|
||||
END
|
||||
@ -413,9 +413,11 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 77 3
|
||||
BOOLEAN F_PERFAMIGLIE
|
||||
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
|
||||
|
||||
LISTBOX F_AB01 5
|
||||
|
Loading…
x
Reference in New Issue
Block a user