Patch level :1.7 qualunque
Files correlati :un sacco Ricompilazione Demo : [ ] Commento :modifiche da maggio ad ottobre git-svn-id: svn://10.65.10.50/trunk@9924 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
cf0c1133fd
commit
b3ad7ac008
@ -2519,7 +2519,7 @@ BEGIN
|
|||||||
HELP "Motivo del controllo sanitario"
|
HELP "Motivo del controllo sanitario"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_C_RESPONSAB 50 15
|
STRING F_C_RESPONSAB 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 17 "Responsabile "
|
PROMPT 2 17 "Responsabile "
|
||||||
FIELD LF_CONTSAN->RESPONSAB
|
FIELD LF_CONTSAN->RESPONSAB
|
||||||
@ -2667,7 +2667,7 @@ BEGIN
|
|||||||
HELP "Motivo del controllo sanitario"
|
HELP "Motivo del controllo sanitario"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_I_RESPONSAB 50 15
|
STRING F_I_RESPONSAB 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 13 "Responsabile "
|
PROMPT 2 13 "Responsabile "
|
||||||
FIELD LF_IDONEITA->RESPONSAB
|
FIELD LF_IDONEITA->RESPONSAB
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include "soggetti.h"
|
#include "soggetti.h"
|
||||||
#include "donaz.h"
|
#include "donaz.h"
|
||||||
#include "contsan.h"
|
#include "contsan.h"
|
||||||
|
#include "idoneita.h"
|
||||||
#include "benem.h"
|
#include "benem.h"
|
||||||
#include "storico.h"
|
#include "storico.h"
|
||||||
#include "sezioni.h"
|
#include "sezioni.h"
|
||||||
@ -28,13 +29,17 @@ class TChiusuraPeriodica : public TPrintapp
|
|||||||
|
|
||||||
TMask* _msk;
|
TMask* _msk;
|
||||||
TRelation* _rel;
|
TRelation* _rel;
|
||||||
|
TLocalisamfile* _contsan;
|
||||||
|
TLocalisamfile* _idoneita;
|
||||||
|
TRecord_array* _scontrolli;
|
||||||
|
TRecord_array* _sidoneita;
|
||||||
int _cur;
|
int _cur;
|
||||||
TDate _data_chiusura, _dataud;
|
TDate _data_chiusura, _dataud;
|
||||||
TParagraph_string _operazione;
|
TParagraph_string _operazione;
|
||||||
bool _definitiva, _sospesi, _usosez;
|
bool _definitiva, _sospesi, _usosez;
|
||||||
TString16 _codsez, _codsot;
|
TString16 _codsez, _codsot;
|
||||||
int _numdon;
|
int _numdon;
|
||||||
TString16 _catfin1, _catfin2;
|
TString16 _catfin1, _catfin2, _contsan1, _contsan2, _motivo;
|
||||||
TAssoc_array _categorie;
|
TAssoc_array _categorie;
|
||||||
int _contatore, _totale;
|
int _contatore, _totale;
|
||||||
|
|
||||||
@ -171,6 +176,9 @@ bool TChiusuraPeriodica::preprocess_page(int file, int counter)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
TRectype* key = new TRectype(LF_CONTSAN);
|
||||||
|
long codice = recsog.get_long(SOG_CODICE);
|
||||||
|
key->put(CON_CODICE, codice);
|
||||||
const int totdon = recsog.get_int(SOG_TOTDON);
|
const int totdon = recsog.get_int(SOG_TOTDON);
|
||||||
if (_catfin1.not_empty() && totdon<=_numdon)
|
if (_catfin1.not_empty() && totdon<=_numdon)
|
||||||
{
|
{
|
||||||
@ -186,6 +194,23 @@ bool TChiusuraPeriodica::preprocess_page(int file, int counter)
|
|||||||
recsog.put(SOG_DATAULTAGG, oggi);
|
recsog.put(SOG_DATAULTAGG, oggi);
|
||||||
recsog.put(SOG_UTENULTAGG, user());
|
recsog.put(SOG_UTENULTAGG, user());
|
||||||
filesog.rewrite();
|
filesog.rewrite();
|
||||||
|
if (_contsan1.not_empty())
|
||||||
|
{
|
||||||
|
int err = _scontrolli->read(key);
|
||||||
|
int progcon = _scontrolli->rows()+1;
|
||||||
|
TRectype& reccon = _contsan->curr();
|
||||||
|
reccon.zero();
|
||||||
|
reccon.put(CON_CODICE, codice);
|
||||||
|
reccon.put(CON_PROGCON, progcon);
|
||||||
|
reccon.put(CON_DATACON, oggi);
|
||||||
|
reccon.put(CON_TIPOCON, _contsan1);
|
||||||
|
TString80 resp = user();
|
||||||
|
resp << " - CHIUSURA PERIODICA";
|
||||||
|
reccon.put(CON_RESPONSAB, resp);
|
||||||
|
reccon.put(CON_MOTIVO, _motivo);
|
||||||
|
_scontrolli->add_row(reccon);
|
||||||
|
_scontrolli->rewrite();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -204,6 +229,23 @@ bool TChiusuraPeriodica::preprocess_page(int file, int counter)
|
|||||||
recsog.put(SOG_DATAULTAGG, oggi);
|
recsog.put(SOG_DATAULTAGG, oggi);
|
||||||
recsog.put(SOG_UTENULTAGG, user());
|
recsog.put(SOG_UTENULTAGG, user());
|
||||||
filesog.rewrite();
|
filesog.rewrite();
|
||||||
|
if (_contsan2.not_empty())
|
||||||
|
{
|
||||||
|
int err = _scontrolli->read(key);
|
||||||
|
int progcon = _scontrolli->rows()+1;
|
||||||
|
TRectype& reccon = _contsan->curr();
|
||||||
|
reccon.zero();
|
||||||
|
reccon.put(CON_CODICE, codice);
|
||||||
|
reccon.put(CON_PROGCON, progcon);
|
||||||
|
reccon.put(CON_DATACON, oggi);
|
||||||
|
reccon.put(CON_TIPOCON, _contsan2);
|
||||||
|
TString80 resp = user();
|
||||||
|
resp << " - CHIUSURA PERIODICA";
|
||||||
|
reccon.put(CON_RESPONSAB, resp);
|
||||||
|
reccon.put(CON_MOTIVO, _motivo);
|
||||||
|
_scontrolli->add_row(reccon);
|
||||||
|
_scontrolli->rewrite();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -279,11 +321,15 @@ void TChiusuraPeriodica::set_page(int file, int cnt)
|
|||||||
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON));
|
set_row(1,"@9g@S", FLD(LF_SOGGETTI,SOG_CATDON));
|
||||||
set_row(1,"@12g@S", FLD(LF_SOGGETTI,SOG_COGNOME));
|
set_row(1,"@12g@S", FLD(LF_SOGGETTI,SOG_COGNOME));
|
||||||
set_row(1,"@38g@S", FLD(LF_SOGGETTI,SOG_NOME));
|
set_row(1,"@38g@S", FLD(LF_SOGGETTI,SOG_NOME));
|
||||||
set_row(1,"@64g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON));
|
set_row(1,"@64g@ld", FLD(LF_SOGGETTI,SOG_DATANASC));
|
||||||
set_row(1,"@75g@ld", FLD(LF_SOGGETTI,SOG_DATAISC));
|
set_row(1,"@75g@S", FLD(LF_SOGGETTI,SOG_TELABI));
|
||||||
set_row(1,"@86g@pn", FLD(LF_SOGGETTI,SOG_TOTDON, "###"));
|
set_row(1,"@90g@S", FLD(LF_SOGGETTI,SOG_TELLAV));
|
||||||
set_row(1,"@90g@6,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
|
set_row(1,"@105g@S", FLD(LF_SOGGETTI,SOG_TELALT));
|
||||||
set_row(1,"@97g#a", &_operazione);
|
set_row(1,"@120g@ld", FLD(LF_SOGGETTI,SOG_DATAULTDON));
|
||||||
|
set_row(1,"@131g@ld", FLD(LF_SOGGETTI,SOG_DATAISC));
|
||||||
|
set_row(1,"@142g@pn", FLD(LF_SOGGETTI,SOG_TOTDON, "###"));
|
||||||
|
set_row(1,"@152g@6,rs", FLD(LF_SOGGETTI,SOG_TESSAVIS));
|
||||||
|
set_row(1,"@159g#a", &_operazione);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TChiusuraPeriodica::filter_func_chiusura(const TRelation* rel)
|
bool TChiusuraPeriodica::filter_func_chiusura(const TRelation* rel)
|
||||||
@ -355,6 +401,20 @@ bool TChiusuraPeriodica::filter_func_chiusura(const TRelation* rel)
|
|||||||
if (data.ok())
|
if (data.ok())
|
||||||
filtrato = (data < app()._dataud);
|
filtrato = (data < app()._dataud);
|
||||||
}
|
}
|
||||||
|
if (filtrato)
|
||||||
|
{
|
||||||
|
TRectype* key = new TRectype(LF_CONTSAN);
|
||||||
|
long codice = recsog.get_long(SOG_CODICE);
|
||||||
|
key->put(CON_CODICE, codice);
|
||||||
|
int err = app()._scontrolli->read(key);
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
const TRectype& riga = app()._scontrolli->row(app()._scontrolli->rows());
|
||||||
|
data = riga.get_date(CON_DATACON);
|
||||||
|
if (data >= app()._dataud)
|
||||||
|
filtrato = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -396,6 +456,9 @@ bool TChiusuraPeriodica::set_print(int)
|
|||||||
_numdon = _msk->get_int(F_NUMDON);
|
_numdon = _msk->get_int(F_NUMDON);
|
||||||
_catfin1 = _msk->get(F_CATFIN1);
|
_catfin1 = _msk->get(F_CATFIN1);
|
||||||
_catfin2 = _msk->get(F_CATFIN2);
|
_catfin2 = _msk->get(F_CATFIN2);
|
||||||
|
_contsan1 = _msk->get(F_CONTSAN1);
|
||||||
|
_contsan2 = _msk->get(F_CONTSAN2);
|
||||||
|
_motivo = _msk->get(F_MOTIVO);
|
||||||
_definitiva = _msk->get_bool(F_DEFINITIVA);
|
_definitiva = _msk->get_bool(F_DEFINITIVA);
|
||||||
_sospesi = _msk->get_bool(F_SOSPESI);
|
_sospesi = _msk->get_bool(F_SOSPESI);
|
||||||
reset_files();
|
reset_files();
|
||||||
@ -434,8 +497,8 @@ void TChiusuraPeriodica::crea_intestazione()
|
|||||||
sep = "";
|
sep = "";
|
||||||
sep.fill('-');
|
sep.fill('-');
|
||||||
set_header(3, (const char *) sep);
|
set_header(3, (const char *) sep);
|
||||||
set_header(4,"@0gCodice@9gC.@12gCognome@38gNome@64gData u.d.@75gData isc.@86gDon.@90gTess.@97gOperazione");
|
set_header(4,"@0gCodice@9gC.@12gCognome@38gNome@64gData nasc.@75gTel.Abit.@90gTel. Lav.@105gTel.Altro@120gDt.ult.don.@131gData Iscr.@142gTot. don.@152gT.AVIS@159gOp.");
|
||||||
set_header(5,"@0g--------@9g--@12g-------------------------@38g-------------------------@64g----------@75g----------@86g---@90g------@97g-----------------------------------");
|
set_header(5,"@0g--------@9g--@12g-------------------------@38g-------------------------@64g----------@75g--------------@90g--------------@105g--------------@120g----------@131g----------@142g---------@152g------@159g----------");
|
||||||
printer().footerlen(3);
|
printer().footerlen(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -448,11 +511,19 @@ bool TChiusuraPeriodica::user_create()
|
|||||||
_rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS);
|
_rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS);
|
||||||
//cursore ordinamento per sezione+sottogruppo+cognome+nome
|
//cursore ordinamento per sezione+sottogruppo+cognome+nome
|
||||||
_cur = add_cursor(new TCursor(_rel, "", 3));
|
_cur = add_cursor(new TCursor(_rel, "", 3));
|
||||||
|
_contsan = new TLocalisamfile(LF_CONTSAN);
|
||||||
|
_idoneita = new TLocalisamfile(LF_IDONEITA);
|
||||||
|
_scontrolli = new TRecord_array(LF_CONTSAN, CON_PROGCON);
|
||||||
|
_sidoneita = new TRecord_array(LF_IDONEITA, IDO_PROGIDO);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TChiusuraPeriodica::user_destroy()
|
bool TChiusuraPeriodica::user_destroy()
|
||||||
{
|
{
|
||||||
|
delete _sidoneita;
|
||||||
|
delete _scontrolli;
|
||||||
|
delete _idoneita;
|
||||||
|
delete _contsan;
|
||||||
delete _rel;
|
delete _rel;
|
||||||
delete _msk;
|
delete _msk;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
12
at/at0600a.h
12
at/at0600a.h
@ -31,6 +31,14 @@
|
|||||||
#define F_CATFIN2 216 // categoria di arrivo con donazioni >= numdon
|
#define F_CATFIN2 216 // categoria di arrivo con donazioni >= numdon
|
||||||
#define F_D_CATFIN1 217
|
#define F_D_CATFIN1 217
|
||||||
#define F_D_CATFIN2 218
|
#define F_D_CATFIN2 218
|
||||||
|
// opzioni per controlli sanitari
|
||||||
|
#define F_CONTSAN1 301 // stato con donazioni < numdon
|
||||||
|
#define F_CONTSAN2 302 // stato con donazioni >= numdon
|
||||||
|
#define F_D_CONTSAN1 303 //
|
||||||
|
#define F_D_CONTSAN2 304 //
|
||||||
|
#define F_MOTIVO 305 // motivo da segnalare nel controllo
|
||||||
|
#define F_D_MOTIVO 306 //
|
||||||
|
|
||||||
// opzioni comuni
|
// opzioni comuni
|
||||||
#define F_SOSPESI 301
|
#define F_SOSPESI 401
|
||||||
#define F_DEFINITIVA 302
|
#define F_DEFINITIVA 402
|
||||||
|
@ -135,7 +135,7 @@ BEGIN
|
|||||||
HELP "Sottogruppo finale"
|
HELP "Sottogruppo finale"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 77 14
|
GROUPBOX DLG_NULL 77 17
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 "Opzioni per la chiusura"
|
PROMPT 1 5 "Opzioni per la chiusura"
|
||||||
END
|
END
|
||||||
@ -325,9 +325,30 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_CONTSAN1 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 "Stato del don. per la cat.(crea un controllo) "
|
||||||
|
FLAGS "U"
|
||||||
|
USE TCS SELECT S6=="S"
|
||||||
|
INPUT CODTAB F_CONTSAN1
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@30" S0
|
||||||
|
OUTPUT F_CONTSAN1 CODTAB
|
||||||
|
OUTPUT F_D_CONTSAN1 S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Codice non presente"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_CONTSAN1 30 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 56 15 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
STRING F_CATFIN2 2
|
STRING F_CATFIN2 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 15 "Cat. per num. don. maggiore del num. indicato "
|
PROMPT 2 16 "Cat. per num. don. maggiore del num. indicato "
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
USE CTD
|
USE CTD
|
||||||
INPUT CODTAB F_CATFIN2
|
INPUT CODTAB F_CATFIN2
|
||||||
@ -342,20 +363,61 @@ END
|
|||||||
|
|
||||||
STRING F_D_CATFIN2 30 20
|
STRING F_D_CATFIN2 30 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 56 15 ""
|
PROMPT 56 16 ""
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_CONTSAN2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 17 "Stato del don. per la cat.(crea un controllo) "
|
||||||
|
FLAGS "U"
|
||||||
|
USE TCS SELECT S6=="S"
|
||||||
|
INPUT CODTAB F_CONTSAN2
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@30" S0
|
||||||
|
OUTPUT F_CONTSAN2 CODTAB
|
||||||
|
OUTPUT F_D_CONTSAN2 S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Codice non presente"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_CONTSAN2 30 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 56 17 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_MOTIVO 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 18 "Motivo da specificare nel contr. (se creato) "
|
||||||
|
FLAGS "U"
|
||||||
|
USE MTC
|
||||||
|
INPUT CODTAB F_MOTIVO
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@30" S0
|
||||||
|
OUTPUT F_MOTIVO CODTAB
|
||||||
|
OUTPUT F_D_MOTIVO S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Codice non presente"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_MOTIVO 30 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 56 18 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
BOOLEAN F_SOSPESI
|
BOOLEAN F_SOSPESI
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 17 "Anche sospesi"
|
PROMPT 2 19 "Anche sospesi"
|
||||||
HELP "Indicare se si vogliono processare per la chiusura anche i soggetti sospesi"
|
HELP "Indicare se si vogliono processare per la chiusura anche i soggetti sospesi"
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_DEFINITIVA
|
BOOLEAN F_DEFINITIVA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 17 "Chiusura definitiva"
|
PROMPT 30 19 "Chiusura definitiva"
|
||||||
HELP "Se chiusura definitiva, le operazioni stampate verranno registrate"
|
HELP "Se chiusura definitiva, le operazioni stampate verranno registrate"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -107,29 +107,26 @@ bool TAttribuzioneBenemerenze::preprocess_page(int file, int counter)
|
|||||||
TRectype* key = new TRectype(LF_BENEM);
|
TRectype* key = new TRectype(LF_BENEM);
|
||||||
key->put(BEN_CODICE, codice);
|
key->put(BEN_CODICE, codice);
|
||||||
int err = _sbenemerenze->read(key);
|
int err = _sbenemerenze->read(key);
|
||||||
if (err == NOERR)
|
int r = _sbenemerenze->rows();
|
||||||
{
|
TRectype& rec = _sbenemerenze->row(r+1,TRUE);
|
||||||
int r = _sbenemerenze->rows();
|
|
||||||
TRectype& rec = _sbenemerenze->row(r+1,TRUE);
|
|
||||||
|
|
||||||
TString16 codsez = recsog.get(SOG_CODSEZ);
|
TString16 codsez = recsog.get(SOG_CODSEZ);
|
||||||
TString16 codsot = recsog.get(SOG_CODSOT);
|
TString16 codsot = recsog.get(SOG_CODSOT);
|
||||||
TString16 gruppoazie = recsog.get(SOG_GRUPPOAZIE);
|
TString16 gruppoazie = recsog.get(SOG_GRUPPOAZIE);
|
||||||
|
|
||||||
rec.put(BEN_TIPOBEN, tipoben);
|
rec.put(BEN_TIPOBEN, tipoben);
|
||||||
rec.put(BEN_DATAMAT, recsog.get(SOG_DATAULTDON));
|
rec.put(BEN_DATAMAT, recsog.get(SOG_DATAULTDON));
|
||||||
rec.put(BEN_BONUS, recsog.get(SOG_TOTDON));
|
rec.put(BEN_BONUS, recsog.get(SOG_TOTDON));
|
||||||
rec.put(BEN_DATABEN, _dataela);
|
rec.put(BEN_DATABEN, _dataela);
|
||||||
rec.put(BEN_DATACON, _datapre);
|
rec.put(BEN_DATACON, _datapre);
|
||||||
if (_attgruppi)
|
if (_attgruppi)
|
||||||
rec.put(BEN_GRUPPOAZIE, gruppoazie);
|
rec.put(BEN_GRUPPOAZIE, gruppoazie);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rec.put(BEN_CODSEZ, codsez);
|
rec.put(BEN_CODSEZ, codsez);
|
||||||
rec.put(BEN_CODSOT, codsot);
|
rec.put(BEN_CODSOT, codsot);
|
||||||
}
|
}
|
||||||
int err = _sbenemerenze->rewrite();
|
err = _sbenemerenze->rewrite();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -230,7 +230,8 @@ bool TStampaSospesi::filter_func_sospesi(const TRelation* rel)
|
|||||||
if (contsan.read() == NOERR)
|
if (contsan.read() == NOERR)
|
||||||
{
|
{
|
||||||
const TString16 motivo = contsan.get(CON_MOTIVO);
|
const TString16 motivo = contsan.get(CON_MOTIVO);
|
||||||
if ((app()._motivo1==motivo) || (app()._motivo2==motivo) || (app()._motivo3==motivo) || (app()._motivo4==motivo) || (app()._motivo5==motivo))
|
if ((app()._motivo1==motivo)
|
||||||
|
|| (app()._motivo2==motivo && app()._motivo2.not_empty()) || (app()._motivo3==motivo && app()._motivo3.not_empty()) || (app()._motivo4==motivo && app()._motivo4.not_empty()) || (app()._motivo5==motivo) && app()._motivo5.not_empty())
|
||||||
filtrato = TRUE;
|
filtrato = TRUE;
|
||||||
else
|
else
|
||||||
filtrato = FALSE;
|
filtrato = FALSE;
|
||||||
|
@ -45,6 +45,7 @@ class TStampaIscritti : public TPrintapp
|
|||||||
TDate _dataini, _datafin;
|
TDate _dataini, _datafin;
|
||||||
int _etlarghezza, _etcolonne;
|
int _etlarghezza, _etcolonne;
|
||||||
bool _attuale;
|
bool _attuale;
|
||||||
|
int _numdon;
|
||||||
|
|
||||||
static bool filter_func_iscritti(const TRelation* rel);
|
static bool filter_func_iscritti(const TRelation* rel);
|
||||||
|
|
||||||
@ -166,6 +167,11 @@ bool TStampaIscritti::filter_func_iscritti(const TRelation * rel)
|
|||||||
filtrato = (datadim >= app()._dataini && datadim <= app()._datafin);
|
filtrato = (datadim >= app()._dataini && datadim <= app()._datafin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (app()._numdon > 0 && filtrato)
|
||||||
|
{
|
||||||
|
const int totdon = sog.get_int(SOG_TOTDON);
|
||||||
|
filtrato = (totdon >= app()._numdon);
|
||||||
|
}
|
||||||
return filtrato;
|
return filtrato;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -314,6 +320,7 @@ bool TStampaIscritti::set_print(int m)
|
|||||||
_dataini = _msk->get(F_DATAINI);
|
_dataini = _msk->get(F_DATAINI);
|
||||||
_datafin = _msk->get(F_DATAFIN);
|
_datafin = _msk->get(F_DATAFIN);
|
||||||
_attuale = _msk->get_bool(F_ATTUALE);
|
_attuale = _msk->get_bool(F_ATTUALE);
|
||||||
|
_numdon = _msk->get_int(F_NUMDON);
|
||||||
current_cursor()->set_filterfunction(filter_func_iscritti, TRUE);
|
current_cursor()->set_filterfunction(filter_func_iscritti, TRUE);
|
||||||
reset_print();
|
reset_print();
|
||||||
printer().footerlen(0);
|
printer().footerlen(0);
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#define F_DATAINI 302
|
#define F_DATAINI 302
|
||||||
#define F_DATAFIN 303
|
#define F_DATAFIN 303
|
||||||
#define F_ATTUALE 304 // flag per stampare solo soggetti che sono ancora attualmente nella situazione richiesta (i/d)
|
#define F_ATTUALE 304 // flag per stampare solo soggetti che sono ancora attualmente nella situazione richiesta (i/d)
|
||||||
|
#define F_NUMDON 305 // soggetti che hanno almeno tot donazioni
|
||||||
|
|
||||||
#define F_ELENCO 401
|
#define F_ELENCO 401
|
||||||
#define F_ETICHETTE 402
|
#define F_ETICHETTE 402
|
||||||
|
@ -296,5 +296,10 @@ BEGIN
|
|||||||
HELP "Stampa solo i soggetti che sono ancora nella situazione scelta"
|
HELP "Stampa solo i soggetti che sono ancora nella situazione scelta"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_NUMDON 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 "Numero minimo donazioni "
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -47,7 +47,7 @@ class TFrequenza : public TPrintapp
|
|||||||
TDate _data_stampa;
|
TDate _data_stampa;
|
||||||
TDate _dataini,_datafin;
|
TDate _dataini,_datafin;
|
||||||
int _numdon;
|
int _numdon;
|
||||||
TString16 _tipodon;
|
TString16 _tipodon1, _tipodon2, _tipodon3, _tipodon4, _tipodon5, _tipodon;
|
||||||
ts _tipostampa;
|
ts _tipostampa;
|
||||||
TString16 _codsez, _codsot;
|
TString16 _codsez, _codsot;
|
||||||
int _etlarghezza, _etcolonne;
|
int _etlarghezza, _etcolonne;
|
||||||
@ -197,7 +197,7 @@ bool TFrequenza::filter_func_freq(const TRelation* rel)
|
|||||||
if ((datadon>=app()._dataini || !app()._dataini.ok()) && (datadon<=app()._datafin || !app()._datafin.ok()))
|
if ((datadon>=app()._dataini || !app()._dataini.ok()) && (datadon<=app()._datafin || !app()._datafin.ok()))
|
||||||
{
|
{
|
||||||
TString16 tipodon = riga.get(DON_TIPODON);
|
TString16 tipodon = riga.get(DON_TIPODON);
|
||||||
if ((app()._tipodon.empty()) || (app()._tipodon == tipodon))
|
if ((app()._tipodon.empty()) || (app()._tipodon1 == tipodon) || (app()._tipodon2 == tipodon) || (app()._tipodon3 == tipodon) || (app()._tipodon4 == tipodon) || (app()._tipodon5 == tipodon))
|
||||||
numdon++;
|
numdon++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -270,7 +270,7 @@ bool TFrequenza::preprocess_page(int file, int counter)
|
|||||||
if ((datadon>=_dataini) && (datadon<=_datafin))
|
if ((datadon>=_dataini) && (datadon<=_datafin))
|
||||||
{
|
{
|
||||||
TString16 tipodon = riga.get(DON_TIPODON);
|
TString16 tipodon = riga.get(DON_TIPODON);
|
||||||
if ((app()._tipodon.empty()) || (app()._tipodon == tipodon))
|
if ((app()._tipodon.empty()) || (app()._tipodon1 == tipodon) || (app()._tipodon2 == tipodon) || (app()._tipodon3 == tipodon) || (app()._tipodon4 == tipodon) || (app()._tipodon5 == tipodon))
|
||||||
{
|
{
|
||||||
numdon++;
|
numdon++;
|
||||||
dataultdon = datadon;
|
dataultdon = datadon;
|
||||||
@ -391,7 +391,14 @@ bool TFrequenza::set_print(int m)
|
|||||||
_numdon = _msk->get_int(F_NUMDON);
|
_numdon = _msk->get_int(F_NUMDON);
|
||||||
_dataini = _msk->get(F_DATAINI);
|
_dataini = _msk->get(F_DATAINI);
|
||||||
_datafin = _msk->get(F_DATAFIN);
|
_datafin = _msk->get(F_DATAFIN);
|
||||||
_tipodon = _msk->get(F_TIPODON);
|
_tipodon1 = _msk->get(F_TIPODON1);
|
||||||
|
_tipodon2 = _msk->get(F_TIPODON2);
|
||||||
|
_tipodon3 = _msk->get(F_TIPODON3);
|
||||||
|
_tipodon4 = _msk->get(F_TIPODON4);
|
||||||
|
_tipodon5 = _msk->get(F_TIPODON5);
|
||||||
|
_tipodon = _tipodon1;
|
||||||
|
_tipodon << _tipodon2 << _tipodon3 << _tipodon4 << _tipodon5;
|
||||||
|
//if (_tipodon1.empty()) && (_tipodon2.empty()) && (_tipodon3.empty()) && (_tipodon4.empty()) && (_tipodon5.empty()) && (!_dataini.ok()) && (!_datafin.ok()))
|
||||||
if ((_tipodon.empty()) && (!_dataini.ok()) && (!_datafin.ok()))
|
if ((_tipodon.empty()) && (!_dataini.ok()) && (!_datafin.ok()))
|
||||||
_ctrltotale = TRUE;
|
_ctrltotale = TRUE;
|
||||||
else
|
else
|
||||||
@ -446,8 +453,16 @@ void TFrequenza::crea_intestazione()
|
|||||||
}
|
}
|
||||||
sep << _numdon;
|
sep << _numdon;
|
||||||
sep << " DONAZIONI";
|
sep << " DONAZIONI";
|
||||||
if (_tipodon.not_empty())
|
if (_tipodon1.not_empty())
|
||||||
sep << ' ' << _tipodon;
|
sep << ' ' << _tipodon1;
|
||||||
|
if (_tipodon2.not_empty())
|
||||||
|
sep << ' ' << _tipodon2;
|
||||||
|
if (_tipodon3.not_empty())
|
||||||
|
sep << ' ' << _tipodon3;
|
||||||
|
if (_tipodon4.not_empty())
|
||||||
|
sep << ' ' << _tipodon4;
|
||||||
|
if (_tipodon5.not_empty())
|
||||||
|
sep << ' ' << _tipodon5;
|
||||||
if (_dataini.ok())
|
if (_dataini.ok())
|
||||||
sep << " DAL " << _dataini.string();
|
sep << " DAL " << _dataini.string();
|
||||||
if (_datafin.ok())
|
if (_datafin.ok())
|
||||||
@ -456,7 +471,7 @@ void TFrequenza::crea_intestazione()
|
|||||||
sep.center_just(80);
|
sep.center_just(80);
|
||||||
else
|
else
|
||||||
sep.center_just(132);
|
sep.center_just(132);
|
||||||
set_header(2, "@0g%s", (const char*) sep);
|
set_header(3, "@0g%s", (const char*) sep);
|
||||||
TString16 data_stampa = _data_stampa.string();
|
TString16 data_stampa = _data_stampa.string();
|
||||||
set_header(2,"@0g%10s", (const char*) data_stampa);
|
set_header(2,"@0g%10s", (const char*) data_stampa);
|
||||||
sep = "";
|
sep = "";
|
||||||
@ -465,21 +480,21 @@ void TFrequenza::crea_intestazione()
|
|||||||
set_header(2, "@73g%s", (const char*) sep);
|
set_header(2, "@73g%s", (const char*) sep);
|
||||||
else
|
else
|
||||||
set_header(2, "@110g%s", (const char*) sep);
|
set_header(2, "@110g%s", (const char*) sep);
|
||||||
set_header(3, "");
|
set_header(4, "");
|
||||||
if (_stampa80)
|
if (_stampa80)
|
||||||
{
|
{
|
||||||
set_header(4,"@0gCodice@9gCognome e nome@44gTelefono abit.@60gNum.don.");
|
set_header(5,"@0gCodice@9gCognome e nome@44gTelefono abit.@60gNum.don.");
|
||||||
set_header(5,"@0gTessera@44gTelefono lavoro@60gUlt.don.");
|
set_header(6,"@0gTessera@44gTelefono lavoro@60gUlt.don.");
|
||||||
set_header(6,"@0gCateg.@9gNato il@44gTelefono altro");
|
set_header(7,"@0gCateg.@9gNato il@44gTelefono altro");
|
||||||
set_header(7,"@0g--------@9g----------------------------------@44g--------------@60g----------");
|
set_header(8,"@0g--------@9g----------------------------------@44g--------------@60g----------");
|
||||||
_cognome_nome.set_width(35);
|
_cognome_nome.set_width(35);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
set_header(4,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gNum.don.");
|
set_header(5,"@0gCodice@9gC.@12gCognome e nome@38gNato il@49gIndirizzo@100gTelefono abit.@116gNum.don.");
|
||||||
set_header(5,"@0gTessera@49gCAP/Località/Comune/Prov.@100gTelefono lavoro@116gUlt.don.");
|
set_header(6,"@0gTessera@49gCAP/Località/Comune/Prov.@100gTelefono lavoro@116gUlt.don.");
|
||||||
set_header(6,"@100gTelefono altro");
|
set_header(7,"@100gTelefono altro");
|
||||||
set_header(7,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g----------");
|
set_header(8,"@0g--------@9g--@12g-------------------------@38g----------@49g--------------------------------------------------@100g---------------@116g----------");
|
||||||
_cognome_nome.set_width(25);
|
_cognome_nome.set_width(25);
|
||||||
}
|
}
|
||||||
printer().footerlen(3);
|
printer().footerlen(3);
|
||||||
|
12
at/at2900a.h
12
at/at2900a.h
@ -27,8 +27,16 @@
|
|||||||
#define F_NUMDON 302
|
#define F_NUMDON 302
|
||||||
#define F_DATAINI 303
|
#define F_DATAINI 303
|
||||||
#define F_DATAFIN 304
|
#define F_DATAFIN 304
|
||||||
#define F_TIPODON 305
|
#define F_TIPODON1 305
|
||||||
#define F_D_TIPODON 306
|
#define F_D_TIPODON1 306
|
||||||
|
#define F_TIPODON2 307
|
||||||
|
#define F_D_TIPODON2 308
|
||||||
|
#define F_TIPODON3 309
|
||||||
|
#define F_D_TIPODON3 310
|
||||||
|
#define F_TIPODON4 311
|
||||||
|
#define F_D_TIPODON4 312
|
||||||
|
#define F_TIPODON5 313
|
||||||
|
#define F_D_TIPODON5 314
|
||||||
|
|
||||||
#define F_ELENCO 401
|
#define F_ELENCO 401
|
||||||
#define F_ETICHETTE 402
|
#define F_ETICHETTE 402
|
||||||
|
@ -264,7 +264,7 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 77 4
|
GROUPBOX DLG_NULL 77 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 10 "Opzioni di elaborazione"
|
PROMPT 1 10 "Opzioni di elaborazione"
|
||||||
END
|
END
|
||||||
@ -292,25 +292,101 @@ BEGIN
|
|||||||
PROMPT 50 11 "al "
|
PROMPT 50 11 "al "
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_TIPODON 2
|
STRING F_TIPODON1 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "Tipo donazioni "
|
PROMPT 2 12 "Tipo donazioni "
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
USE TDN
|
USE TDN
|
||||||
INPUT CODTAB F_TIPODON
|
INPUT CODTAB F_TIPODON1
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@30" S0
|
DISPLAY "Descrizione@30" S0
|
||||||
OUTPUT F_TIPODON CODTAB
|
OUTPUT F_TIPODON1 CODTAB
|
||||||
OUTPUT F_D_TIPODON S0
|
OUTPUT F_D_TIPODON1 S0
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
WARNING "Codice non presente"
|
WARNING "Codice non presente"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_D_TIPODON 30
|
STRING F_D_TIPODON1 30
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 24 12 ""
|
PROMPT 24 12 ""
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_TIPODON2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 13 " "
|
||||||
|
FLAGS "U"
|
||||||
|
USE TDN
|
||||||
|
INPUT CODTAB F_TIPODON2
|
||||||
|
COPY DISPLAY F_TIPODON1
|
||||||
|
OUTPUT F_TIPODON2 CODTAB
|
||||||
|
OUTPUT F_D_TIPODON2 S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Codice non presente"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_TIPODON2 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 13 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_TIPODON3 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 " "
|
||||||
|
FLAGS "U"
|
||||||
|
USE TDN
|
||||||
|
INPUT CODTAB F_TIPODON3
|
||||||
|
COPY DISPLAY F_TIPODON1
|
||||||
|
OUTPUT F_TIPODON3 CODTAB
|
||||||
|
OUTPUT F_D_TIPODON3 S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Codice non presente"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_TIPODON3 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 14 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_TIPODON4 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 " "
|
||||||
|
FLAGS "U"
|
||||||
|
USE TDN
|
||||||
|
INPUT CODTAB F_TIPODON4
|
||||||
|
COPY DISPLAY F_TIPODON1
|
||||||
|
OUTPUT F_TIPODON4 CODTAB
|
||||||
|
OUTPUT F_D_TIPODON4 S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Codice non presente"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_TIPODON4 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 15 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_TIPODON5 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 16 " "
|
||||||
|
FLAGS "U"
|
||||||
|
USE TDN
|
||||||
|
INPUT CODTAB F_TIPODON5
|
||||||
|
COPY DISPLAY F_TIPODON1
|
||||||
|
OUTPUT F_TIPODON5 CODTAB
|
||||||
|
OUTPUT F_D_TIPODON5 S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Codice non presente"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_TIPODON5 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 16 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -505,7 +505,8 @@ void TStatDonGrRh::stampa_sezione(TString16 codsez, TString16 codsot)
|
|||||||
rigatotali.aggiorna_valore((int) colonnadm.integer(),riga[(int) colonnadm.integer()]);
|
rigatotali.aggiorna_valore((int) colonnadm.integer(),riga[(int) colonnadm.integer()]);
|
||||||
totdonazioni+=riga[(int) colonnadm.integer()];
|
totdonazioni+=riga[(int) colonnadm.integer()];
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",riga[(int) colonnadm.integer()].integer());
|
//valore.format("%8d",riga[(int) colonnadm.integer()].integer());
|
||||||
|
valore.format("%8s",riga[(int) colonnadm.integer()].string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
pos = pos+8;
|
pos = pos+8;
|
||||||
const char* indicedf = "DF";
|
const char* indicedf = "DF";
|
||||||
@ -513,12 +514,14 @@ void TStatDonGrRh::stampa_sezione(TString16 codsez, TString16 codsot)
|
|||||||
rigatotali.aggiorna_valore((int) colonnadf.integer(),riga[(int) colonnadf.integer()]);
|
rigatotali.aggiorna_valore((int) colonnadf.integer(),riga[(int) colonnadf.integer()]);
|
||||||
totdonazioni+=riga[(int) colonnadf.integer()];
|
totdonazioni+=riga[(int) colonnadf.integer()];
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",riga[(int) colonnadf.integer()].integer());
|
//valore.format("%8d",riga[(int) colonnadf.integer()].integer());
|
||||||
|
valore.format("%8s",riga[(int) colonnadf.integer()].string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
pos = pos+8;
|
pos = pos+8;
|
||||||
// stampo totale donazioni
|
// stampo totale donazioni
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",totdonazioni.integer());
|
//valore.format("%8d",totdonazioni.integer());
|
||||||
|
valore.format("%8s",totdonazioni.string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
pos = pos+10;
|
pos = pos+10;
|
||||||
|
|
||||||
@ -527,7 +530,8 @@ void TStatDonGrRh::stampa_sezione(TString16 codsez, TString16 codsot)
|
|||||||
totsoggetti+=riga[(int) colonnasm.integer()];
|
totsoggetti+=riga[(int) colonnasm.integer()];
|
||||||
rigatotali.aggiorna_valore((int) colonnasm.integer(),riga[(int) colonnasm.integer()]);
|
rigatotali.aggiorna_valore((int) colonnasm.integer(),riga[(int) colonnasm.integer()]);
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",riga[(int) colonnasm.integer()].integer());
|
//valore.format("%8d",riga[(int) colonnasm.integer()].integer());
|
||||||
|
valore.format("%8s",riga[(int) colonnasm.integer()].string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
pos = pos+8;
|
pos = pos+8;
|
||||||
const char* indicesf = "SF";
|
const char* indicesf = "SF";
|
||||||
@ -535,12 +539,14 @@ void TStatDonGrRh::stampa_sezione(TString16 codsez, TString16 codsot)
|
|||||||
totsoggetti+=riga[(int) colonnasf.integer()];
|
totsoggetti+=riga[(int) colonnasf.integer()];
|
||||||
rigatotali.aggiorna_valore((int) colonnasf.integer(),riga[(int) colonnasf.integer()]);
|
rigatotali.aggiorna_valore((int) colonnasf.integer(),riga[(int) colonnasf.integer()]);
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",riga[(int) colonnasf.integer()].integer());
|
//valore.format("%8d",riga[(int) colonnasf.integer()].integer());
|
||||||
|
valore.format("%8s",riga[(int) colonnasf.integer()].string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
pos = pos+8;
|
pos = pos+8;
|
||||||
// stampo totale donatori
|
// stampo totale donatori
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",totsoggetti.integer());
|
//valore.format("%8d",totsoggetti.integer());
|
||||||
|
valore.format("%8s",totsoggetti.string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
pos = pos+14;
|
pos = pos+14;
|
||||||
|
|
||||||
@ -548,7 +554,8 @@ void TStatDonGrRh::stampa_sezione(TString16 codsez, TString16 codsot)
|
|||||||
if (totsoggetti.integer()!=0)
|
if (totsoggetti.integer()!=0)
|
||||||
{
|
{
|
||||||
// maschi
|
// maschi
|
||||||
if (riga[(int) colonnasm.integer()].integer() != 0)
|
//if (riga[(int) colonnasm.integer()].integer() != 0)
|
||||||
|
if (riga[(int) colonnasm.integer()] != ZERO)
|
||||||
{
|
{
|
||||||
valore = "";
|
valore = "";
|
||||||
real perc = riga[(int) colonnadm.integer()] / riga[(int) colonnasm.integer()];
|
real perc = riga[(int) colonnadm.integer()] / riga[(int) colonnasm.integer()];
|
||||||
@ -557,7 +564,8 @@ void TStatDonGrRh::stampa_sezione(TString16 codsez, TString16 codsot)
|
|||||||
}
|
}
|
||||||
pos = pos+8;
|
pos = pos+8;
|
||||||
// femmine
|
// femmine
|
||||||
if (riga[(int) colonnasf.integer()].integer() != 0)
|
//if (riga[(int) colonnasf.integer()].integer() != 0)
|
||||||
|
if (riga[(int) colonnasf.integer()] != ZERO)
|
||||||
{
|
{
|
||||||
valore = "";
|
valore = "";
|
||||||
real perc = riga[(int) colonnadf.integer()] / riga[(int) colonnasf.integer()];
|
real perc = riga[(int) colonnadf.integer()] / riga[(int) colonnasf.integer()];
|
||||||
@ -597,47 +605,55 @@ void TStatDonGrRh::stampa_sezione(TString16 codsez, TString16 codsot)
|
|||||||
real& colonnadm = (real&)_colonne->find(indicedm);
|
real& colonnadm = (real&)_colonne->find(indicedm);
|
||||||
totdonazioni+=rigatotali[(int) colonnadm.integer()];
|
totdonazioni+=rigatotali[(int) colonnadm.integer()];
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",rigatotali[(int) colonnadm.integer()].integer());
|
//valore.format("%8d",rigatotali[(int) colonnadm.integer()].integer());
|
||||||
|
valore.format("%8s",rigatotali[(int) colonnadm.integer()].string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
pos = pos+8;
|
pos = pos+8;
|
||||||
const char* indicedf = "DF";
|
const char* indicedf = "DF";
|
||||||
real& colonnadf = (real&)_colonne->find(indicedf);
|
real& colonnadf = (real&)_colonne->find(indicedf);
|
||||||
totdonazioni+=rigatotali[(int) colonnadf.integer()];
|
totdonazioni+=rigatotali[(int) colonnadf.integer()];
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",rigatotali[(int) colonnadf.integer()].integer());
|
//valore.format("%8d",rigatotali[(int) colonnadf.integer()].integer());
|
||||||
|
valore.format("%8s",rigatotali[(int) colonnadf.integer()].string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
pos = pos+8;
|
pos = pos+8;
|
||||||
// stampo totale donazioni
|
// stampo totale donazioni
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",totdonazioni.integer());
|
//valore.format("%8d",totdonazioni.integer());
|
||||||
|
valore.format("%8s",totdonazioni.string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
pos = pos+10;
|
pos = pos+10;
|
||||||
const char* indicesm = "SM";
|
const char* indicesm = "SM";
|
||||||
real& colonnasm = (real&)_colonne->find(indicesm);
|
real& colonnasm = (real&)_colonne->find(indicesm);
|
||||||
totsoggetti+=rigatotali[(int) colonnasm.integer()];
|
totsoggetti+=rigatotali[(int) colonnasm.integer()];
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",rigatotali[(int) colonnasm.integer()].integer());
|
//valore.format("%8d",rigatotali[(int) colonnasm.integer()].integer());
|
||||||
|
valore.format("%8s",rigatotali[(int) colonnasm.integer()].string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
pos = pos+8;
|
pos = pos+8;
|
||||||
const char* indicesf = "SF";
|
const char* indicesf = "SF";
|
||||||
real& colonnasf = (real&)_colonne->find(indicesf);
|
real& colonnasf = (real&)_colonne->find(indicesf);
|
||||||
totsoggetti+=rigatotali[(int) colonnasf.integer()];
|
totsoggetti+=rigatotali[(int) colonnasf.integer()];
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",rigatotali[(int) colonnasf.integer()].integer());
|
//valore.format("%8d",rigatotali[(int) colonnasf.integer()].integer());
|
||||||
|
valore.format("%8s",rigatotali[(int) colonnasf.integer()].string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
pos = pos+8;
|
pos = pos+8;
|
||||||
// stampo totale donatori
|
// stampo totale donatori
|
||||||
valore = "";
|
valore = "";
|
||||||
valore.format("%8d",totsoggetti.integer());
|
//valore.format("%8d",totsoggetti.integer());
|
||||||
|
valore.format("%8s",totsoggetti.string());
|
||||||
rigastampa.overwrite((const char*)valore, pos);
|
rigastampa.overwrite((const char*)valore, pos);
|
||||||
|
|
||||||
pos = pos+14;
|
pos = pos+14;
|
||||||
|
|
||||||
// percentuale
|
// percentuale
|
||||||
if (totsoggetti.integer()!=0)
|
//if (totsoggetti.integer()!=0)
|
||||||
|
if (totsoggetti!=ZERO)
|
||||||
{
|
{
|
||||||
// maschi
|
// maschi
|
||||||
if (rigatotali[(int) colonnasm.integer()].integer() != 0)
|
//if (rigatotali[(int) colonnasm.integer()].integer() != 0)
|
||||||
|
if (rigatotali[(int) colonnasm.integer()] != ZERO)
|
||||||
{
|
{
|
||||||
valore = "";
|
valore = "";
|
||||||
real perc = rigatotali[(int) colonnadm.integer()] / rigatotali[(int) colonnasm.integer()];
|
real perc = rigatotali[(int) colonnadm.integer()] / rigatotali[(int) colonnasm.integer()];
|
||||||
@ -646,7 +662,8 @@ void TStatDonGrRh::stampa_sezione(TString16 codsez, TString16 codsot)
|
|||||||
}
|
}
|
||||||
pos = pos+8;
|
pos = pos+8;
|
||||||
// femmine
|
// femmine
|
||||||
if (rigatotali[(int) colonnasf.integer()].integer() != 0)
|
//if (rigatotali[(int) colonnasf.integer()].integer() != 0)
|
||||||
|
if (rigatotali[(int) colonnasf.integer()] != ZERO)
|
||||||
{
|
{
|
||||||
valore = "";
|
valore = "";
|
||||||
real perc = rigatotali[(int) colonnadf.integer()] / rigatotali[(int) colonnasf.integer()];
|
real perc = rigatotali[(int) colonnadf.integer()] / rigatotali[(int) colonnasf.integer()];
|
||||||
|
@ -306,7 +306,16 @@ void TStampaConvocazioni::fine_stampa()
|
|||||||
TString sep(80);
|
TString sep(80);
|
||||||
sep.fill('-');
|
sep.fill('-');
|
||||||
set_footer(1, (const char *) sep);
|
set_footer(1, (const char *) sep);
|
||||||
set_footer(2,"TOTALE GENERALE %d", _totfinestampa);
|
const TString16 sezini = _msk->get(F_SEZINI);
|
||||||
|
const TString16 sotini = _msk->get(F_SOTINI);
|
||||||
|
const TString16 sezfin = _msk->get(F_SEZFIN);
|
||||||
|
const TString16 sotfin = _msk->get(F_SOTFIN);
|
||||||
|
set_footer(3,"Da sezione/sottogruppo %s/%s", (const char*) sezini, (const char*) sotini);
|
||||||
|
set_footer(4," a sezione/sottogruppo %s/%s", (const char*) sezfin, (const char*) sotfin);
|
||||||
|
set_footer(6,"TOTALE GENERALE %d", _totfinestampa);
|
||||||
|
|
||||||
|
TString16 data_stampa = _data_stampa.string();
|
||||||
|
set_footer(8,"Stampato il %10s", (const char*) data_stampa);
|
||||||
printer().formfeed();
|
printer().formfeed();
|
||||||
reset_footer();
|
reset_footer();
|
||||||
}
|
}
|
||||||
|
13
at/at5100a.h
13
at/at5100a.h
@ -74,13 +74,16 @@
|
|||||||
|
|
||||||
#define AT_D_NETFORM 167
|
#define AT_D_NETFORM 167
|
||||||
|
|
||||||
// definizione cartoline
|
// definizione cartoline per donazioni
|
||||||
#define AT_CAFORM 168
|
#define AT_CAFORM 168
|
||||||
#define AT_CAPARAM 169
|
#define AT_CAPARAM 169
|
||||||
|
|
||||||
#define AT_D_CAFORM 170
|
#define AT_D_CAFORM 170
|
||||||
|
|
||||||
// definizione tessere
|
// definizione cartoline altre stampe (dove previste)
|
||||||
#define AT_TEFORM 171
|
#define AT_ACAFORM 171
|
||||||
|
#define AT_ACAPARAM 172
|
||||||
|
#define AT_D_ACAFORM 173
|
||||||
|
|
||||||
#define AT_D_TEFORM 172
|
// definizione tessere
|
||||||
|
#define AT_TEFORM 174
|
||||||
|
#define AT_D_TEFORM 175
|
||||||
|
@ -395,7 +395,7 @@ END
|
|||||||
|
|
||||||
GROUPBOX DLG_NULL 77 4
|
GROUPBOX DLG_NULL 77 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 7 "Cartoline"
|
PROMPT 1 7 "Cartoline per donazione"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING AT_CAFORM 8
|
STRING AT_CAFORM 8
|
||||||
|
@ -564,9 +564,9 @@ bool TTurniControlli::user_create()
|
|||||||
_rel = new TRelation(LF_SOGGETTI);
|
_rel = new TRelation(LF_SOGGETTI);
|
||||||
_rel->add(LF_SEZIONI,"CODSEZ==CODSEZ|CODSOT==CODSOT");
|
_rel->add(LF_SEZIONI,"CODSEZ==CODSEZ|CODSOT==CODSOT");
|
||||||
_rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS);
|
_rel->add("TCS", "CODTAB==STATO",1,0,ALIAS_TCS);
|
||||||
_rel->add("LCP", "CODTAB==RES_CODLOC",1,LF_SOGGETTI,ALIAS_LCPRES);
|
// _rel->add("LCP", "CODTAB==RES_CODLOC",1,LF_SOGGETTI,ALIAS_LCPRES);
|
||||||
_rel->add("LCP", "CODTAB==DOM_CODLOC",1,LF_SOGGETTI,ALIAS_LCPDOM);
|
_rel->add("LCP", "CODTAB==DOM_CODLOC",1,LF_SOGGETTI,ALIAS_LCPDOM);
|
||||||
_rel->add(LF_COMUNI, "COM==RES_CODCOM",1,LF_SOGGETTI,ALIAS_COMRES);
|
// _rel->add(LF_COMUNI, "COM==RES_CODCOM",1,LF_SOGGETTI,ALIAS_COMRES);
|
||||||
_rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,LF_SOGGETTI,ALIAS_COMDOM);
|
_rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,LF_SOGGETTI,ALIAS_COMDOM);
|
||||||
_rel->add(LF_COMUNI, "COM==COMNASC",1,LF_SOGGETTI,ALIAS_COMNAS);
|
_rel->add(LF_COMUNI, "COM==COMNASC",1,LF_SOGGETTI,ALIAS_COMNAS);
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ class TPrimaDon : public TPrintapp
|
|||||||
TRecord_array* _sdonazioni;
|
TRecord_array* _sdonazioni;
|
||||||
TLocalisamfile* _storico;
|
TLocalisamfile* _storico;
|
||||||
TRecord_array* _sstorico;
|
TRecord_array* _sstorico;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool user_create();
|
virtual bool user_create();
|
||||||
virtual bool user_destroy();
|
virtual bool user_destroy();
|
||||||
@ -51,6 +51,7 @@ bool TPrimaDon::preprocess_page(int file, int counter)
|
|||||||
int errd = _sdonazioni->read(keyd);
|
int errd = _sdonazioni->read(keyd);
|
||||||
if ((errd == NOERR) && (_sdonazioni->rows()>0))
|
if ((errd == NOERR) && (_sdonazioni->rows()>0))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
for (int d=1; d<=_sdonazioni->rows(); d++)
|
for (int d=1; d<=_sdonazioni->rows(); d++)
|
||||||
{
|
{
|
||||||
TRectype& riga = _sdonazioni->row(d, TRUE);
|
TRectype& riga = _sdonazioni->row(d, TRUE);
|
||||||
@ -85,7 +86,7 @@ bool TPrimaDon::preprocess_page(int file, int counter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
*/
|
||||||
TDate dataprisi = recsog.get(SOG_DATAPRISI);
|
TDate dataprisi = recsog.get(SOG_DATAPRISI);
|
||||||
TDate datapriaf = recsog.get(SOG_DATAPRIAF);
|
TDate datapriaf = recsog.get(SOG_DATAPRIAF);
|
||||||
TRectype& riga = _sdonazioni->row(1, TRUE);
|
TRectype& riga = _sdonazioni->row(1, TRUE);
|
||||||
@ -101,11 +102,10 @@ bool TPrimaDon::preprocess_page(int file, int counter)
|
|||||||
rewrite = TRUE;
|
rewrite = TRUE;
|
||||||
riga.put(DON_PRIMADON, TRUE);
|
riga.put(DON_PRIMADON, TRUE);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
if (rewrite)
|
if (rewrite)
|
||||||
_sdonazioni->rewrite();
|
_sdonazioni->rewrite();
|
||||||
}
|
}
|
||||||
return rewrite;
|
return rewrite;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrimaDon::set_page(int file, int cnt)
|
void TPrimaDon::set_page(int file, int cnt)
|
||||||
@ -141,7 +141,7 @@ bool TPrimaDon::user_create()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool TPrimaDon::user_destroy()
|
bool TPrimaDon::user_destroy()
|
||||||
{
|
{
|
||||||
delete _sstorico;
|
delete _sstorico;
|
||||||
delete _sdonazioni;
|
delete _sdonazioni;
|
||||||
delete _storico;
|
delete _storico;
|
||||||
|
172
at/at8200.cpp
172
at/at8200.cpp
@ -113,9 +113,10 @@ bool TAggConSan::menu(MENU_TAG m)
|
|||||||
if (!pr.open())
|
if (!pr.open())
|
||||||
return error_box("Errore in apertura stampante.");
|
return error_box("Errore in apertura stampante.");
|
||||||
|
|
||||||
bool controlli = _msk->get_bool(F_CONTROLLI);
|
|
||||||
bool anagrafica = _msk->get_bool(F_ANAGRAFICA);
|
bool anagrafica = _msk->get_bool(F_ANAGRAFICA);
|
||||||
|
bool controlli = _msk->get_bool(F_CONTROLLI);
|
||||||
bool benemerenze = _msk->get_bool(F_BENEMERENZE);
|
bool benemerenze = _msk->get_bool(F_BENEMERENZE);
|
||||||
|
TLocalisamfile& soggetti = _rel->lfile();
|
||||||
_rel->lfile().setkey(2);
|
_rel->lfile().setkey(2);
|
||||||
bool modificato = FALSE;
|
bool modificato = FALSE;
|
||||||
TDate oggi(TODAY);
|
TDate oggi(TODAY);
|
||||||
@ -134,6 +135,99 @@ bool TAggConSan::menu(MENU_TAG m)
|
|||||||
row.put(rigastampa);
|
row.put(rigastampa);
|
||||||
printer().setheaderline(3, row);
|
printer().setheaderline(3, row);
|
||||||
TRectype recsog = _rel->curr();
|
TRectype recsog = _rel->curr();
|
||||||
|
|
||||||
|
if (anagrafica)
|
||||||
|
{
|
||||||
|
TExternisamfile* fs = new TExternisamfile("$portasog");
|
||||||
|
TProgind *pi;
|
||||||
|
pi = new TProgind(fs->eod(),"Aggiornamento dati anagrafici", FALSE, TRUE, 10);
|
||||||
|
pi->setstatus(1);
|
||||||
|
for(fs->first(); !fs->eof(); fs->next())
|
||||||
|
{
|
||||||
|
pi->addstatus(1);
|
||||||
|
modificato = FALSE;
|
||||||
|
const TString80 cognome = fs->get("COGNOME");
|
||||||
|
const TString80 nome = fs->get("NOME");
|
||||||
|
const TDate datanasc = fs->get_date("DATANASC");
|
||||||
|
recsog.zero();
|
||||||
|
recsog.put(SOG_COGNOME, cognome);
|
||||||
|
recsog.put(SOG_NOME, nome);
|
||||||
|
recsog.put(SOG_DATANASC, datanasc);
|
||||||
|
if (recsog.read(_rel->lfile())==NOERR)
|
||||||
|
{
|
||||||
|
if (fs->get("DATAISC").not_empty())
|
||||||
|
recsog.put(SOG_DATAISC, fs->get("DATAISC"));
|
||||||
|
recsog.put(SOG_TESSAVIS, fs->get("TESSAVIS"));
|
||||||
|
recsog.put(SOG_COGNOME_SP, fs->get("COGNOME_SP"));
|
||||||
|
recsog.put(SOG_DOM_INDIR, fs->get("DOM_INDIR"));
|
||||||
|
recsog.put(SOG_DOM_CODCOM, fs->get("DOM_CODCOM"));
|
||||||
|
recsog.put(SOG_DOM_CODLOC, fs->get("DOM_CODLOC"));
|
||||||
|
recsog.put(SOG_DOM_STRADA, fs->get("DOM_STRADA"));
|
||||||
|
recsog.put(SOG_DOM_DISTRI, fs->get("DOM_DISTRI"));
|
||||||
|
recsog.put(SOG_DOM_CAP, fs->get("DOM_CAP"));
|
||||||
|
recsog.put(SOG_RES_INDIR, fs->get("RES_INDIR"));
|
||||||
|
recsog.put(SOG_RES_CODCOM, fs->get("RES_CODCOM"));
|
||||||
|
recsog.put(SOG_RES_CODLOC, fs->get("RES_CODLOC"));
|
||||||
|
recsog.put(SOG_RES_CAP, fs->get("RES_CAP"));
|
||||||
|
recsog.put(SOG_COMNASC, fs->get("COMNASC"));
|
||||||
|
recsog.put(SOG_SESSO, fs->get("SESSO"));
|
||||||
|
recsog.put(SOG_CF, fs->get("CF"));
|
||||||
|
recsog.put(SOG_DOCID, fs->get("DOCID"));
|
||||||
|
recsog.put(SOG_TELABI, fs->get("TELABI"));
|
||||||
|
recsog.put(SOG_TELLAV, fs->get("TELLAV"));
|
||||||
|
recsog.put(SOG_TELALT, fs->get("TELALT"));
|
||||||
|
recsog.put(SOG_TITINDIR, fs->get("TITINDIR"));
|
||||||
|
recsog.put(SOG_CATNOND1, fs->get("CATNOND1"));
|
||||||
|
recsog.put(SOG_CATNOND2, fs->get("CATNOND2"));
|
||||||
|
recsog.put(SOG_CODMED, fs->get("CODMED"));
|
||||||
|
recsog.put(SOG_NOTIZIARIO, fs->get("NOTIZIARIO"));
|
||||||
|
recsog.put(SOG_BENEM, fs->get("BENEM"));
|
||||||
|
recsog.put(SOG_CONSENSO, fs->get("CONSENSO"));
|
||||||
|
recsog.put(SOG_MODCONV, fs->get("MODCONV"));
|
||||||
|
recsog.put(SOG_GIOPREDON, fs->get("GIOPREDON"));
|
||||||
|
recsog.put(SOG_GIOPRECON, fs->get("GIOPRECON"));
|
||||||
|
recsog.put(SOG_CONDOCC, fs->get("CONDOCC"));
|
||||||
|
recsog.put(SOG_POSPROF, fs->get("POSPROF"));
|
||||||
|
recsog.put(SOG_RAMOATT, fs->get("RAMOATT"));
|
||||||
|
recsog.put(SOG_TITSTUD, fs->get("TITSTUD"));
|
||||||
|
recsog.put(SOG_PROFESS, fs->get("PROFESS"));
|
||||||
|
recsog.put(SOG_ESCLUSO, fs->get("ESCLUSO"));
|
||||||
|
recsog.put(SOG_TERMESCL, fs->get("TERMESCL"));
|
||||||
|
recsog.put(SOG_MOTESCL, fs->get("MOTESCL"));
|
||||||
|
recsog.put(SOG_DATAULTAGG, oggi);
|
||||||
|
recsog.put(SOG_UTENULTAGG, "PORT.");
|
||||||
|
recsog.rewrite(_rel->lfile());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rigastampa = "";
|
||||||
|
rigastampa << cognome;
|
||||||
|
rigastampa << " " << nome;
|
||||||
|
rigastampa << " " << datanasc.string();
|
||||||
|
const char* catdon = recsog.get(SOG_CATDON);
|
||||||
|
if (yesno_box("%s %s %s %s\nIl soggetto non esiste nell'archivio provinciale. Inserire?", (const char*) cognome,(const char*) nome, (const char*) datanasc.string(), catdon))
|
||||||
|
{
|
||||||
|
soggetti.setkey(1);
|
||||||
|
soggetti.last();
|
||||||
|
long lastcod = soggetti.get_long(SOG_CODICE);
|
||||||
|
soggetti.zero();
|
||||||
|
for (int i=0;i<recsog.items();i++)
|
||||||
|
soggetti.put(recsog.fieldname(i), fs->get(recsog.fieldname(i)));
|
||||||
|
soggetti.put(SOG_CODICE, lastcod+1);
|
||||||
|
soggetti.put(SOG_DATAULTAGG, oggi);
|
||||||
|
soggetti.put(SOG_UTENULTAGG, "PORT.-inserimento autom.");
|
||||||
|
soggetti.write();
|
||||||
|
rigastampa << " " << "*** INSERITO codice " << soggetti.get(SOG_CODICE);
|
||||||
|
soggetti.setkey(2);
|
||||||
|
}
|
||||||
|
row.reset();
|
||||||
|
row.put((const char*) rigastampa);
|
||||||
|
printer().print(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete pi;
|
||||||
|
delete fs;
|
||||||
|
}
|
||||||
if (controlli)
|
if (controlli)
|
||||||
{
|
{
|
||||||
TExternisamfile* fc = new TExternisamfile("$portacon");
|
TExternisamfile* fc = new TExternisamfile("$portacon");
|
||||||
@ -378,82 +472,6 @@ bool TAggConSan::menu(MENU_TAG m)
|
|||||||
delete pi;
|
delete pi;
|
||||||
delete fc;
|
delete fc;
|
||||||
}
|
}
|
||||||
if (anagrafica)
|
|
||||||
{
|
|
||||||
TExternisamfile* fs = new TExternisamfile("$portasog");
|
|
||||||
TProgind *pi;
|
|
||||||
pi = new TProgind(fs->eod(),"Aggiornamento dati anagrafici", FALSE, TRUE, 10);
|
|
||||||
pi->setstatus(1);
|
|
||||||
for(fs->first(); !fs->eof(); fs->next())
|
|
||||||
{
|
|
||||||
pi->addstatus(1);
|
|
||||||
modificato = FALSE;
|
|
||||||
const TString80 cognome = fs->get("COGNOME");
|
|
||||||
const TString80 nome = fs->get("NOME");
|
|
||||||
const TDate datanasc = fs->get_date("DATANASC");
|
|
||||||
recsog.zero();
|
|
||||||
recsog.put(SOG_COGNOME, cognome);
|
|
||||||
recsog.put(SOG_NOME, nome);
|
|
||||||
recsog.put(SOG_DATANASC, datanasc);
|
|
||||||
if (recsog.read(_rel->lfile())==NOERR)
|
|
||||||
{
|
|
||||||
if (fs->get("DATAISC").not_empty())
|
|
||||||
recsog.put(SOG_DATAISC, fs->get("DATAISC"));
|
|
||||||
recsog.put(SOG_TESSAVIS, fs->get("TESSAVIS"));
|
|
||||||
recsog.put(SOG_COGNOME_SP, fs->get("COGNOME_SP"));
|
|
||||||
recsog.put(SOG_DOM_INDIR, fs->get("DOM_INDIR"));
|
|
||||||
recsog.put(SOG_DOM_CODCOM, fs->get("DOM_CODCOM"));
|
|
||||||
recsog.put(SOG_DOM_CODLOC, fs->get("DOM_CODLOC"));
|
|
||||||
recsog.put(SOG_DOM_STRADA, fs->get("DOM_STRADA"));
|
|
||||||
recsog.put(SOG_DOM_DISTRI, fs->get("DOM_DISTRI"));
|
|
||||||
recsog.put(SOG_DOM_CAP, fs->get("DOM_CAP"));
|
|
||||||
recsog.put(SOG_RES_INDIR, fs->get("RES_INDIR"));
|
|
||||||
recsog.put(SOG_RES_CODCOM, fs->get("RES_CODCOM"));
|
|
||||||
recsog.put(SOG_RES_CODLOC, fs->get("RES_CODLOC"));
|
|
||||||
recsog.put(SOG_RES_CAP, fs->get("RES_CAP"));
|
|
||||||
recsog.put(SOG_COMNASC, fs->get("COMNASC"));
|
|
||||||
recsog.put(SOG_SESSO, fs->get("SESSO"));
|
|
||||||
recsog.put(SOG_CF, fs->get("CF"));
|
|
||||||
recsog.put(SOG_DOCID, fs->get("DOCID"));
|
|
||||||
recsog.put(SOG_TELABI, fs->get("TELABI"));
|
|
||||||
recsog.put(SOG_TELLAV, fs->get("TELLAV"));
|
|
||||||
recsog.put(SOG_TELALT, fs->get("TELALT"));
|
|
||||||
recsog.put(SOG_TITINDIR, fs->get("TITINDIR"));
|
|
||||||
recsog.put(SOG_CATNOND1, fs->get("CATNOND1"));
|
|
||||||
recsog.put(SOG_CATNOND2, fs->get("CATNOND2"));
|
|
||||||
recsog.put(SOG_CODMED, fs->get("CODMED"));
|
|
||||||
recsog.put(SOG_NOTIZIARIO, fs->get("NOTIZIARIO"));
|
|
||||||
recsog.put(SOG_BENEM, fs->get("BENEM"));
|
|
||||||
recsog.put(SOG_CONSENSO, fs->get("CONSENSO"));
|
|
||||||
recsog.put(SOG_MODCONV, fs->get("MODCONV"));
|
|
||||||
recsog.put(SOG_GIOPREDON, fs->get("GIOPREDON"));
|
|
||||||
recsog.put(SOG_GIOPRECON, fs->get("GIOPRECON"));
|
|
||||||
recsog.put(SOG_CONDOCC, fs->get("CONDOCC"));
|
|
||||||
recsog.put(SOG_POSPROF, fs->get("POSPROF"));
|
|
||||||
recsog.put(SOG_RAMOATT, fs->get("RAMOATT"));
|
|
||||||
recsog.put(SOG_TITSTUD, fs->get("TITSTUD"));
|
|
||||||
recsog.put(SOG_PROFESS, fs->get("PROFESS"));
|
|
||||||
recsog.put(SOG_ESCLUSO, fs->get("ESCLUSO"));
|
|
||||||
recsog.put(SOG_TERMESCL, fs->get("TERMESCL"));
|
|
||||||
recsog.put(SOG_MOTESCL, fs->get("MOTESCL"));
|
|
||||||
recsog.put(SOG_DATAULTAGG, oggi);
|
|
||||||
recsog.put(SOG_UTENULTAGG, "PORT.");
|
|
||||||
recsog.rewrite(_rel->lfile());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rigastampa = "";
|
|
||||||
rigastampa << cognome;
|
|
||||||
rigastampa << " " << nome;
|
|
||||||
rigastampa << " " << datanasc.string();
|
|
||||||
row.reset();
|
|
||||||
row.put((const char*) rigastampa);
|
|
||||||
printer().print(row);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
delete pi;
|
|
||||||
delete fs;
|
|
||||||
}
|
|
||||||
pr.formfeed();
|
pr.formfeed();
|
||||||
pr.close();
|
pr.close();
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// aggiornamento archivio da portatili
|
// aggiornamento archivio da portatili
|
||||||
// definizione campi per maschera di selezione
|
// definizione campi per maschera di selezione
|
||||||
|
|
||||||
#define F_CONTROLLI 101
|
#define F_ANAGRAFICA 101
|
||||||
#define F_ANAGRAFICA 102
|
#define F_CONTROLLI 102
|
||||||
#define F_BENEMERENZE 103
|
#define F_BENEMERENZE 103
|
||||||
|
@ -1,29 +1,38 @@
|
|||||||
#include "at8200a.h"
|
#include "at8200a.h"
|
||||||
PAGE "Aggiorna archivi da altra sezione" -1 -1 78 20
|
|
||||||
|
|
||||||
BOOLEAN F_CONTROLLI
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 5 "Aggiorna controlli sanitari e idoneita'"
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN F_ANAGRAFICA
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 6 "Aggiorna dati anagrafici"
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN F_BENEMERENZE
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 7 "Aggiorna benemerenze"
|
|
||||||
END
|
|
||||||
|
|
||||||
|
TOOLBAR "" 0 20 0 2
|
||||||
BUTTON DLG_OK 9 2
|
BUTTON DLG_OK 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -12 14 ""
|
PROMPT -12 -11 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_QUIT 9 2
|
BUTTON DLG_QUIT 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -22 14 ""
|
PROMPT -22 -11 ""
|
||||||
|
END
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Aggiorna archivi da altra sezione" -1 -1 78 20
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 77 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Opzioni di aggiornamento"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_ANAGRAFICA
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Aggiorna dati anagrafici"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_CONTROLLI
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Aggiorna controlli sanitari e idoneita'"
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
BOOLEAN F_BENEMERENZE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Aggiorna benemerenze"
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
@ -128,7 +128,19 @@ bool TCTDon2AT::menu(MENU_TAG m)
|
|||||||
int err = _sdonazioni->read(key);
|
int err = _sdonazioni->read(key);
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
{
|
{
|
||||||
calcola_donazioni_lib(recsog, _sdonazioni);
|
calcola_donazioni_lib(recsog, _sdonazioni);
|
||||||
|
recsog.rewrite(_rel->lfile());
|
||||||
|
|
||||||
|
TRectype* keyc = new TRectype(LF_CONTSAN);
|
||||||
|
keyc->put(CON_CODICE, codsog);
|
||||||
|
int err = _scontrolli->read(keyc);
|
||||||
|
|
||||||
|
TRectype* keyi = new TRectype(LF_IDONEITA);
|
||||||
|
keyi->put(IDO_CODICE, codsog);
|
||||||
|
err = _sidoneita->read(keyi);
|
||||||
|
|
||||||
|
con_reord(recsog,_scontrolli,_sidoneita);
|
||||||
|
|
||||||
recsog.rewrite(_rel->lfile());
|
recsog.rewrite(_rel->lfile());
|
||||||
}
|
}
|
||||||
TTable ctd("CTD");
|
TTable ctd("CTD");
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include "at8700a.h"
|
#include "at8700a.h"
|
||||||
#include "soggetti.h"
|
#include "soggetti.h"
|
||||||
#include "donaz.h"
|
#include "donaz.h"
|
||||||
|
#include "contsan.h"
|
||||||
|
|
||||||
#define CTBOFILENAME "at2ctbo.dat"
|
#define CTBOFILENAME "at2ctbo.dat"
|
||||||
|
|
||||||
@ -235,7 +236,24 @@ void TCtbo_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TStr
|
|||||||
valore = riga.get(DON_DATADON);
|
valore = riga.get(DON_DATADON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (code == "_MOTIVO")
|
||||||
|
{
|
||||||
|
|
||||||
|
const TDate datacon = cur.curr().get(SOG_DATASTATO);
|
||||||
|
const long codsog = cur.curr().get_long(SOG_CODICE);
|
||||||
|
TLocalisamfile controlli(LF_CONTSAN);
|
||||||
|
controlli.setkey(2);
|
||||||
|
controlli.put(CON_DATACON,datacon);
|
||||||
|
controlli.put(CON_CODICE,codsog);
|
||||||
|
if (controlli.read() == NOERR)
|
||||||
|
valore = controlli.get(CON_MOTIVO);
|
||||||
|
else
|
||||||
|
valore.cut(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
else NFCHECK("Macro non definita: %s", (const char *)code);
|
else NFCHECK("Macro non definita: %s", (const char *)code);
|
||||||
|
|
||||||
str = valore;
|
str = valore;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
340
at/at8800.cpp
340
at/at8800.cpp
@ -11,54 +11,27 @@
|
|||||||
|
|
||||||
#include "at8.h"
|
#include "at8.h"
|
||||||
#include "at8800a.h"
|
#include "at8800a.h"
|
||||||
#include "soggetti.h"
|
#include "atlib.h"
|
||||||
|
|
||||||
|
#include "contsan.h"
|
||||||
#include "donaz.h"
|
#include "donaz.h"
|
||||||
|
#include "idoneita.h"
|
||||||
|
#include "soggetti.h"
|
||||||
|
|
||||||
#define ATFILENAME "ctbo2at.dat"
|
#define ATFILENAME "pippo.txt"
|
||||||
|
|
||||||
class TCtbo2at_file;
|
|
||||||
|
|
||||||
class TCtbo2at: public TSkeleton_application
|
|
||||||
{
|
|
||||||
TMask* _msk;
|
|
||||||
TRelation* _rel;
|
|
||||||
TCursor* _cur;
|
|
||||||
TCtbo2at_file* _trasfile;
|
|
||||||
TRecord_array* _donazioni;
|
|
||||||
TLocalisamfile* _donaz;
|
|
||||||
TDate _data;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual bool create(void);
|
|
||||||
virtual void main_loop();
|
|
||||||
virtual bool destroy(void) ;
|
|
||||||
void transfer(void);
|
|
||||||
void inizializza_cur(void);
|
|
||||||
void inizializza_file(void);
|
|
||||||
void record(THash_object& lavoro);
|
|
||||||
static bool annulla_handler(TMask_field& f, KEY k);
|
|
||||||
public:
|
|
||||||
|
|
||||||
const TMask& msk() const { return *_msk; }
|
|
||||||
const TRecord_array& donazioni() { return *_donazioni;}
|
|
||||||
const TDate data() { return _data;}
|
|
||||||
|
|
||||||
TCtbo2at() {}
|
|
||||||
virtual ~TCtbo2at() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// restituisce un riferimento all' applicazione
|
|
||||||
inline TCtbo2at& app() { return (TCtbo2at&) main_app();}
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
// Classe TCtbo2at_file customizzata dalla TFile_text //
|
// Classe TCtbo2at_file customizzata dalla TFile_text //
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TCtbo2at_file: public TFile_text
|
class TCtbo2at_file: public TFile_text
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str);
|
virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
virtual int autosave(TRelation& rel, const TRecord_text& rec);
|
||||||
|
|
||||||
TCtbo2at_file(const TString& file_name, const TString& config_name);
|
TCtbo2at_file(const TString& file_name, const TString& config_name);
|
||||||
virtual ~TCtbo2at_file() { }
|
virtual ~TCtbo2at_file() { }
|
||||||
};
|
};
|
||||||
@ -68,17 +41,111 @@ TCtbo2at_file::TCtbo2at_file(const TString& file_name, const TString& config_nam
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TCtbo2at_file::autosave(TRelation& rel, const TRecord_text& rec)
|
||||||
|
{
|
||||||
|
const TString& type = rec.type();//prendo il tracciato record del tipo del record_text
|
||||||
|
TTracciato_record& tr = *t_rec(type);
|
||||||
|
|
||||||
|
TArray& a_tc = tr.tracciati_campo();
|
||||||
|
const int items = a_tc.items();
|
||||||
|
TString valore;
|
||||||
|
for (int i = 0; i < items; i++)
|
||||||
|
{
|
||||||
|
const TTracciato_campo& tc = tr.get(i);
|
||||||
|
TFieldref field(tc.field());
|
||||||
|
if (field.name().not_empty())
|
||||||
|
{
|
||||||
|
if (field.file()==0)
|
||||||
|
field.set_file(rel.lfile().num());
|
||||||
|
valore = rec.row(i);
|
||||||
|
// formatta il campo del file di testo secondo le specifiche del campo su file isam
|
||||||
|
preformat_field(field,valore,rel,tr.type());
|
||||||
|
const TRectype& rel_rec = rel.curr(field.file());
|
||||||
|
TFieldtypes tipo_campo = rel_rec.type(field.name());
|
||||||
|
bool vuoto = valore.blank();
|
||||||
|
switch(tipo_campo)
|
||||||
|
{
|
||||||
|
case _datefld:
|
||||||
|
{
|
||||||
|
if (real::is_null(valore))
|
||||||
|
{
|
||||||
|
valore.cut(0);
|
||||||
|
vuoto = TRUE;
|
||||||
|
}
|
||||||
|
TDate data(valore);
|
||||||
|
format_date(data, fpicture(tc), valore);//formatta la data secondo le specifiche del tracciato
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _realfld:
|
||||||
|
case _intfld:
|
||||||
|
case _longfld:
|
||||||
|
{
|
||||||
|
const real numero(valore);
|
||||||
|
vuoto = numero.is_zero();
|
||||||
|
|
||||||
|
valore = numero.string(fpicture(tc));//formatta il numero secondo le specifiche del tracciato
|
||||||
|
|
||||||
|
int length = flength(tc,rel_rec);
|
||||||
|
if (falign(tc) == 'L')
|
||||||
|
valore.left_just(length, ffiller(tc));
|
||||||
|
else
|
||||||
|
valore.right_just(length, ffiller(tc)); }
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
valore = format_field(tc, rel.lfile().num(), valore);//formatta il campo secondo le specifiche del record
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!vuoto && rel.exist(field.file()))
|
||||||
|
field.write(valore, rel);//faccio una write sulla relazione del fieldref
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int err = NOERR;
|
||||||
|
if (pre_writerel(rel,rec))
|
||||||
|
{
|
||||||
|
err= rel.write();
|
||||||
|
if (err == _isdupkey || err ==_isreinsert)
|
||||||
|
err = rel.rewrite();
|
||||||
|
}
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
// Classe TCtbo2at: applicazione principale //
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TCtbo2at: public TSkeleton_application
|
||||||
|
{
|
||||||
|
TMask* _msk;
|
||||||
|
TCtbo2at_file* _trasfile;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool create(void);
|
||||||
|
virtual void main_loop();
|
||||||
|
virtual bool destroy(void) ;
|
||||||
|
void transfer(void);
|
||||||
|
void inizializza_file(void);
|
||||||
|
static bool annulla_handler(TMask_field& f, KEY k);
|
||||||
|
bool test_donation(TRectype& recsog, const char* tipo, const TDate& datadon, const TString& luogodon);
|
||||||
|
bool test_inter(TRectype& recsog, const char* tipo, const TDate& datadon, int inter);
|
||||||
|
|
||||||
|
public:
|
||||||
|
const TMask& msk() const { return *_msk; }
|
||||||
|
|
||||||
|
TCtbo2at() {}
|
||||||
|
virtual ~TCtbo2at() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
// restituisce un riferimento all' applicazione
|
||||||
|
inline TCtbo2at& app() { return (TCtbo2at&) main_app();}
|
||||||
|
|
||||||
// creazione dell'applicazione
|
// creazione dell'applicazione
|
||||||
bool TCtbo2at::create()
|
bool TCtbo2at::create()
|
||||||
{
|
{
|
||||||
|
open_files(LF_SOGGETTI, LF_DONAZ, LF_CONTSAN, LF_IDONEITA, 0);
|
||||||
_msk = new TMask("at8800a");
|
_msk = new TMask("at8800a");
|
||||||
_rel = new TRelation(LF_SOGGETTI);
|
|
||||||
_cur = NULL;
|
|
||||||
_msk->set(F_FILENAME,ATFILENAME);
|
_msk->set(F_FILENAME,ATFILENAME);
|
||||||
_donaz = new TLocalisamfile(LF_DONAZ);
|
|
||||||
_donazioni = new TRecord_array(LF_DONAZ,DON_PROGDON);
|
|
||||||
|
|
||||||
//_msk->set_handler(DLG_CANCEL, annulla_handler);
|
|
||||||
_trasfile = NULL;
|
_trasfile = NULL;
|
||||||
return TSkeleton_application::create();
|
return TSkeleton_application::create();
|
||||||
}
|
}
|
||||||
@ -86,14 +153,7 @@ bool TCtbo2at::create()
|
|||||||
// distruzione dell'applicazione
|
// distruzione dell'applicazione
|
||||||
bool TCtbo2at::destroy()
|
bool TCtbo2at::destroy()
|
||||||
{
|
{
|
||||||
delete _donazioni;
|
|
||||||
delete _donaz;
|
|
||||||
delete _cur;
|
|
||||||
delete _rel;
|
|
||||||
delete _msk;
|
delete _msk;
|
||||||
|
|
||||||
if (_trasfile)
|
|
||||||
delete _trasfile;
|
|
||||||
return TSkeleton_application::destroy();
|
return TSkeleton_application::destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,82 +161,144 @@ bool TCtbo2at::destroy()
|
|||||||
void TCtbo2at::main_loop()
|
void TCtbo2at::main_loop()
|
||||||
{
|
{
|
||||||
// Preimposta gli eventuali valori specificati sulla riga di comando
|
// Preimposta gli eventuali valori specificati sulla riga di comando
|
||||||
|
//error_box("Attenzione: manca la configurazione del trasferimento!");
|
||||||
KEY key = K_ENTER;
|
KEY key = K_ENTER;
|
||||||
while (key != K_QUIT)
|
while (key != K_QUIT)
|
||||||
{
|
{
|
||||||
key = _msk->run();
|
key = _msk->run();
|
||||||
if (key == K_ENTER)
|
if (key == K_ENTER)
|
||||||
transfer();
|
transfer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TCtbo2at::test_donation(TRectype& recsog, const char* tipo, const TDate& datadon, const TString& luogodon)
|
||||||
|
{
|
||||||
|
//ricostruisce le donazioni del soggetto in esame
|
||||||
|
TRectype* key = new TRectype(LF_DONAZ);
|
||||||
|
key->put(DON_CODICE, recsog.get(SOG_CODICE));
|
||||||
|
TRecord_array donazioni(LF_DONAZ,DON_PROGDON);
|
||||||
|
donazioni.read(key);
|
||||||
|
// verificare se ha fatto una donazione di tipo <tipo> con data successiva all'ultima donazione
|
||||||
|
const int r=donazioni.last_row();
|
||||||
|
if (r > 0)
|
||||||
|
{
|
||||||
|
const TRectype& lastdon = donazioni[r];
|
||||||
|
if (lastdon.get_date(DON_DATADON) >= datadon)
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//aggiunge la nuova donazione
|
||||||
|
// compila i dati della donazione in esame
|
||||||
|
TRectype* rec = new TRectype(LF_DONAZ);
|
||||||
|
rec->put(DON_CODICE, recsog.get(SOG_CODICE));
|
||||||
|
rec->put(DON_PROGDON,r+1);
|
||||||
|
rec->put(DON_DATADON, datadon);
|
||||||
|
rec->put(DON_TIPODON, tipo);
|
||||||
|
rec->put(DON_CODSEZ,recsog.get(SOG_CODSEZ));
|
||||||
|
rec->put(DON_CODSOT,recsog.get(SOG_CODSOT));
|
||||||
|
rec->put(DON_LUOGODON, luogodon);
|
||||||
|
|
||||||
|
donazioni.insert_row(rec);
|
||||||
|
donazioni.write(TRUE);
|
||||||
|
calcola_donazioni_lib(recsog, &donazioni); // questo metodo sistema tutto!!!
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TCtbo2at::test_inter(TRectype& recsog, const char* tipo, const TDate& datadon, int inter)
|
||||||
|
{
|
||||||
|
TRectype* key_cont = new TRectype(LF_CONTSAN);
|
||||||
|
key_cont->put(CON_CODICE, recsog.get(SOG_CODICE));
|
||||||
|
TRecord_array controlli(LF_CONTSAN,CON_PROGCON);
|
||||||
|
controlli.read(key_cont);
|
||||||
|
|
||||||
|
TRectype* key = new TRectype(LF_IDONEITA);
|
||||||
|
key->put(IDO_CODICE, recsog.get(SOG_CODICE));
|
||||||
|
TRecord_array idoneita(LF_IDONEITA,IDO_PROGIDO);
|
||||||
|
idoneita.read(key);
|
||||||
|
|
||||||
|
const int r = idoneita.last_row(); //se trova una data idoneita >= di quella in esame, quest'ultima
|
||||||
|
if (r > 0) //viene ignorata
|
||||||
|
{
|
||||||
|
const TRectype& lastido = idoneita[r];
|
||||||
|
if (lastido.get_date(IDO_DATAIDO) >= datadon)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
TRectype* rec = new TRectype(LF_IDONEITA);
|
||||||
|
rec->put(IDO_CODICE, recsog.get(SOG_CODICE));
|
||||||
|
rec->put(IDO_PROGIDO, r+1);
|
||||||
|
rec->put(IDO_DATAIDO, datadon);
|
||||||
|
rec->put(IDO_TIPOIDO, stricmp(tipo, "SI") != 0 ? "AF" : "SI"); // Il mondo è bello perchè c'é l'AVIS
|
||||||
|
rec->put(IDO_IDO_SOS, "ID");
|
||||||
|
rec->put(IDO_INTERVALLO, inter);
|
||||||
|
idoneita.add_row(rec);
|
||||||
|
idoneita.write();
|
||||||
|
|
||||||
|
con_reord(recsog, &controlli, &idoneita);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// trasferimento dati da file CT su programma avis
|
// trasferimento dati da file CT su programma avis
|
||||||
void TCtbo2at::transfer()
|
void TCtbo2at::transfer()
|
||||||
{
|
{
|
||||||
inizializza_cur();
|
|
||||||
|
|
||||||
TFilename ctboini = "ctbo2at.ini";
|
TFilename ctboini = "ctbo2at.ini";
|
||||||
|
|
||||||
_trasfile = new TCtbo2at_file(_msk->get(F_FILENAME), ctboini);
|
_trasfile = new TCtbo2at_file(_msk->get(F_FILENAME), ctboini);
|
||||||
inizializza_file();
|
inizializza_file();
|
||||||
|
|
||||||
long n_sog = _cur->items();
|
TRelation rel(LF_SOGGETTI);
|
||||||
if (n_sog > 0)
|
TRectype& sogg = rel.curr();
|
||||||
{
|
|
||||||
TProgind pi(n_sog,"Lettura dati da archivio CT...",FALSE,TRUE);
|
TString8 str; // Stringa jolly di lavoro
|
||||||
|
TRecord_text curr;
|
||||||
TAssoc_array& tracciati = _trasfile->tracciati();
|
while (_trasfile->read(curr) == NOERR)
|
||||||
//scandisco tutti i soggetti
|
{
|
||||||
for (*_cur = 0; _cur->pos() < n_sog; ++(*_cur))
|
str = curr.get(2);
|
||||||
{
|
sogg.put(SOG_CODICE, str);
|
||||||
pi.addstatus(1L);
|
if (rel.read() != NOERR)
|
||||||
|
sogg.zero();
|
||||||
TRectype* key = new TRectype(LF_DONAZ);
|
|
||||||
key->put(DON_CODICE,_cur->file().get(SOG_CODICE));
|
_trasfile->autosave(rel, curr);
|
||||||
_donazioni->read(key);
|
//const long codsog = atol(curr.get(2));
|
||||||
|
const char* tipo[] = { "SI", "PL", "PI", "PP" };
|
||||||
THash_object* lavoro = tracciati.get_hashobj();
|
for (int i = 0; i < 4; i++)
|
||||||
//scandisco tutti i record di un effetto
|
{
|
||||||
for (int i = 0; lavoro != NULL; i++)
|
bool update = FALSE;
|
||||||
|
TDate datadon(TODAY);
|
||||||
|
str = curr.get(23+i);
|
||||||
|
if (!str.blank())
|
||||||
{
|
{
|
||||||
record(*lavoro);//emetto il record
|
datadon = TDate(str);
|
||||||
lavoro = tracciati.get_hashobj();
|
str = curr.get(32);
|
||||||
|
if (str == "UROM ")
|
||||||
|
str = "013"; else
|
||||||
|
if (str == "UROB ")
|
||||||
|
str = "O.BE"; else
|
||||||
|
if (str == "IMOLA ")
|
||||||
|
str = "70";
|
||||||
|
update |= test_donation(sogg, tipo[i], datadon, str);
|
||||||
}
|
}
|
||||||
}
|
str = curr.get(27+i);
|
||||||
|
if (!real::is_null(str))
|
||||||
|
{
|
||||||
|
update |= test_inter(sogg, tipo[i], datadon, atoi(str));
|
||||||
|
}
|
||||||
|
if (update)
|
||||||
|
rel.rewrite();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_trasfile->close();
|
_trasfile->close();
|
||||||
delete _trasfile;
|
|
||||||
_trasfile = NULL;
|
|
||||||
message_box("Operazione terminata");
|
message_box("Operazione terminata");
|
||||||
}
|
}
|
||||||
|
|
||||||
//inizializza il cursore
|
|
||||||
void TCtbo2at::inizializza_cur()
|
|
||||||
{
|
|
||||||
TProgind prg (1,"Preparazione archivio soggetti da trasferire\nPrego attendere...",FALSE, FALSE);
|
|
||||||
_cur = new TCursor(_rel);
|
|
||||||
_cur->freeze();
|
|
||||||
}
|
|
||||||
|
|
||||||
//inizializza il file di testo su cui emettere i dati
|
//inizializza il file di testo su cui emettere i dati
|
||||||
void TCtbo2at::inizializza_file()
|
void TCtbo2at::inizializza_file()
|
||||||
{
|
{
|
||||||
TFilename filect = _msk->get(F_FILENAME);
|
TFilename filect = _msk->get(F_FILENAME); //aggiungere lettura automatica nomi file
|
||||||
_trasfile->open(filect,'r');
|
_trasfile->open(filect,'r');
|
||||||
//_trasfile->force_record_separator(TRUE);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//emetto un record
|
|
||||||
void TCtbo2at::record(THash_object& lavoro)
|
|
||||||
{
|
|
||||||
TTracciato_record& oggetto = (TTracciato_record&)lavoro.obj();
|
|
||||||
const TString& tipo = oggetto.type();
|
|
||||||
TRecord_text rec(tipo);
|
|
||||||
//carico il record da emettere
|
|
||||||
_trasfile->autoload(rec, *_cur, &tipo);
|
|
||||||
_trasfile->write(rec);//emetto i dati su file
|
|
||||||
}
|
|
||||||
|
|
||||||
// handler per gestire la conferma dell'annullamento dei dati inseriti
|
// handler per gestire la conferma dell'annullamento dei dati inseriti
|
||||||
// nella maschera
|
// nella maschera
|
||||||
@ -198,37 +320,13 @@ void TCtbo2at_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, T
|
|||||||
TString valore;
|
TString valore;
|
||||||
if (code == "_TOTALE")
|
if (code == "_TOTALE")
|
||||||
{
|
{
|
||||||
int totale = 0;
|
|
||||||
TString16 tipodon(s.get());
|
|
||||||
CHECK(tipodon[0]=='!',"Macro _TOTALE senza carattere '!'");
|
|
||||||
tipodon.ltrim(1);
|
|
||||||
for (int r=1; r<=app().donazioni().rows(); r++)
|
|
||||||
{
|
|
||||||
const TRectype& riga = app().donazioni().row(r);
|
|
||||||
const TDate datadon = riga.get(DON_DATADON);
|
|
||||||
if ((riga.get(DON_TIPODON)==tipodon) && (app().data().year() == datadon.year()))
|
|
||||||
totale++;
|
|
||||||
}
|
|
||||||
valore.cut(0);
|
|
||||||
valore << totale;
|
|
||||||
}
|
}
|
||||||
else if (code == "_ULTIMA")
|
else if (code == "_ULTIMA")
|
||||||
{
|
{
|
||||||
valore.cut(0);
|
|
||||||
TString16 tipodon(s.get());
|
|
||||||
CHECK(tipodon[0]=='!',"Macro _ULTIMA senza carattere '!'");
|
|
||||||
tipodon.ltrim(1);
|
|
||||||
for (int r=1; r<=app().donazioni().rows(); r++)
|
|
||||||
{
|
|
||||||
const TRectype& riga = app().donazioni().row(r);
|
|
||||||
const TDate datadon = riga.get(DON_DATADON);
|
|
||||||
if ((riga.get(DON_TIPODON)==tipodon) && (app().data().year() == datadon.year()))
|
|
||||||
valore = riga.get(DON_DATADON);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else NFCHECK("Macro non definita: %s", (const char *)code);
|
else NFCHECK("Macro non definita: %s", (const char *)code);
|
||||||
str = valore;
|
str = valore;
|
||||||
}
|
}
|
||||||
|
|
||||||
int at8800(int argc, char* argv[])
|
int at8800(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
@ -86,14 +86,14 @@ void con_reord(TRectype& soggetto, TRecord_array* controlli, TRecord_array* idon
|
|||||||
if ((modstato == 'I') && (r_ultid == -1))
|
if ((modstato == 'I') && (r_ultid == -1))
|
||||||
r_ultid = r;
|
r_ultid = r;
|
||||||
}
|
}
|
||||||
TString16 id1 = ' ';
|
TString16 id1 = " ";
|
||||||
TString16 id2 = ' ';
|
TString16 id2 = " ";
|
||||||
TString16 id3 = ' ';
|
TString16 id3 = " ";
|
||||||
TString16 id4 = ' ';
|
TString16 id4 = " ";
|
||||||
int intsi = 0;
|
int intsi = 0;
|
||||||
int intaf = 0;
|
int intaf = 0;
|
||||||
tipo = ' ';
|
tipo = " ";
|
||||||
prosstipo = ' ';
|
prosstipo = " ";
|
||||||
data = TDate(NULLDATE);
|
data = TDate(NULLDATE);
|
||||||
prossdata = TDate(NULLDATE);
|
prossdata = TDate(NULLDATE);
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ void con_reord(TRectype& soggetto, TRecord_array* controlli, TRecord_array* idon
|
|||||||
soggetto.put(SOG_INTSI,intsi);
|
soggetto.put(SOG_INTSI,intsi);
|
||||||
if (intaf > 0)
|
if (intaf > 0)
|
||||||
soggetto.put(SOG_INTAF,intaf);
|
soggetto.put(SOG_INTAF,intaf);
|
||||||
tipo = ' ';
|
tipo = " ";
|
||||||
if (r_ultstato != -1)
|
if (r_ultstato != -1)
|
||||||
{
|
{
|
||||||
const TRectype& row = controlli->row(r_ultstato);
|
const TRectype& row = controlli->row(r_ultstato);
|
||||||
@ -407,7 +407,7 @@ void don_datepross(TRectype& soggetto)
|
|||||||
void calcola_donazioni_lib(TRectype& soggetto, TRecord_array* donazioni)
|
void calcola_donazioni_lib(TRectype& soggetto, TRecord_array* donazioni)
|
||||||
{
|
{
|
||||||
TDate ultdata(NULLDATE);
|
TDate ultdata(NULLDATE);
|
||||||
TString16 ulttipo = ' ';
|
TString16 ulttipo = " ";
|
||||||
const int i = donazioni->rows();
|
const int i = donazioni->rows();
|
||||||
const int donprecsi = soggetto.get_int(SOG_DONPRECSI);
|
const int donprecsi = soggetto.get_int(SOG_DONPRECSI);
|
||||||
const int donprecaf = soggetto.get_int(SOG_DONPRECAF);
|
const int donprecaf = soggetto.get_int(SOG_DONPRECAF);
|
||||||
|
@ -19,57 +19,72 @@ SECTION HEADER ODD 3
|
|||||||
STRINGA 1 6
|
STRINGA 1 6
|
||||||
BEGIN
|
BEGIN
|
||||||
KEY "Cartella clinica"
|
KEY "Cartella clinica"
|
||||||
PROMPT 1 2 "N.Car."
|
PROMPT 1 3 "N.Car."
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGA 2 2
|
STRINGA 2 2
|
||||||
BEGIN
|
BEGIN
|
||||||
KEY "Categoria"
|
KEY "Categoria"
|
||||||
PROMPT 8 2 "C."
|
PROMPT 8 3 "C."
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGA 3 15
|
STRINGA 3 15
|
||||||
BEGIN
|
BEGIN
|
||||||
KEY "Cognome e nome"
|
KEY "Cognome e nome"
|
||||||
PROMPT 11 2 "Cognome e nome"
|
PROMPT 11 3 "Cognome e nome"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGA 4 7
|
STRINGA 4 7
|
||||||
BEGIN
|
BEGIN
|
||||||
KEY "Nato il"
|
KEY "Nato il"
|
||||||
PROMPT 63 2 "Nato il"
|
PROMPT 63 3 "Nato il"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGA 5 9
|
STRINGA 5 9
|
||||||
BEGIN
|
BEGIN
|
||||||
KEY "Gruppo AB0"
|
KEY "Gruppo AB0"
|
||||||
PROMPT 74 2 " AB0 "
|
PROMPT 74 3 " AB0 "
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGA 6 9
|
STRINGA 6 9
|
||||||
BEGIN
|
BEGIN
|
||||||
KEY "Rh/AntiD"
|
KEY "Rh/AntiD"
|
||||||
PROMPT 84 2 " Rh "
|
PROMPT 84 3 " Rh "
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGA 7 9
|
STRINGA 7 9
|
||||||
BEGIN
|
BEGIN
|
||||||
KEY "Kell"
|
KEY "Kell"
|
||||||
PROMPT 94 2 " Kell "
|
PROMPT 94 3 " Kell "
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGA 8 9
|
STRINGA 8 9
|
||||||
BEGIN
|
BEGIN
|
||||||
KEY "Du"
|
KEY "Du"
|
||||||
PROMPT 104 2 " Du "
|
PROMPT 104 3 " Du "
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGA 9 11
|
STRINGA 9 13
|
||||||
BEGIN
|
BEGIN
|
||||||
KEY "Fenotipo"
|
KEY "Fenotipo"
|
||||||
PROMPT 114 2 " Fenotipo Rh "
|
PROMPT 114 3 " Fenotipo Rh "
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRINGA 10 10
|
||||||
|
BEGIN
|
||||||
|
KEY "Data"
|
||||||
|
PROMPT 1 2 "Data "
|
||||||
|
MESSAGE _TODAY
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMERO 11 7
|
||||||
|
BEGIN
|
||||||
|
KEY "Nr. pagina"
|
||||||
|
//PROMPT 115 2 "Pag. "
|
||||||
|
//MESSAGE _PAGENO
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
END // END SECTION HEADER
|
END // END SECTION HEADER
|
||||||
|
|
||||||
SECTION BODY ODD 3
|
SECTION BODY ODD 3
|
||||||
|
Loading…
x
Reference in New Issue
Block a user