Per il modulo ab1 (stampe) sono state commentate delle righe di codice che non

servivano.
Le maschere sono state modificate solo dal punto di vista estetico.
Il modulo ab2 (invio e ricezione) è stato completato: esegue ricezioni da as400 e
interne, ed esegue invii ad as400 (tranne la parte di analisi) e invii interni.
Il file ab2100a.ini è il file di configurazione per as400
Il file ab2100b.ini è il file di configurazione per l'interno


git-svn-id: svn://10.65.10.50/trunk@6073 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
sauro 1998-01-30 16:32:36 +00:00
parent 3e6d3d0bd4
commit 22557d5d80
9 changed files with 1828 additions and 139 deletions

View File

@ -1,4 +1,4 @@
// ab1100 Stampa tabelle
// ab1100 Stampa tabelle
//
// legge un file con estenzione .rpt che descrive la stampa.
// Vedi file leggimi.txt per il formato del file
@ -26,8 +26,8 @@ class AB1100_application : public TPrintapp
int _logicnum;
TString_array _string_roman, _string_compound;
TString_array _field_roman, _field_compound;
bool _stampa_registri;
bool _stampa_ca7; //tabella causali 770
// bool _stampa_registri;
// bool _stampa_ca7; //tabella causali 770
bool _tabella_comune;
public:
@ -78,7 +78,6 @@ bool AB1100_application::set_print(int)
}
}
}
_cur->setregion (from, to);
set_headers();
@ -144,7 +143,7 @@ bool AB1100_application::preprocess_page(int , int)
}
}
// Stampa tabella registri. Calcolo: pagine residue = pagine - stampate
if (_stampa_registri)
/* if (_stampa_registri)
{
const int pagine = _cur->file().get_int("I2");
const int stampate = _cur->file().get_int("I1");
@ -153,7 +152,7 @@ bool AB1100_application::preprocess_page(int , int)
set_row(1, "@126g%4d", residue);
else
set_row(1, "@126g%4s", " ");
}
} */
return TRUE;
}
@ -197,11 +196,11 @@ void AB1100_application::set_headers()
riga.overwrite(format("Ditta %4ld %s", codditta,(const char *)ragsoc));
}
if (_stampa_ca7)
/* if (_stampa_ca7)
{
TDate d (_msk->get(F_DATASTAMPA));
printer().setdate(d);
}
} */
riga.overwrite ("Data @< Pag. @#", riga.len()-22);
@ -214,8 +213,8 @@ void AB1100_application::set_headers()
NomeTabella.left_just (LungRiga);
/* else
NomeTabella.center_just (LungRiga); */
if (_stampa_ca7)
NomeTabella.center_just (LungRiga);
/* if (_stampa_ca7)
NomeTabella.center_just (LungRiga); */
set_header (last_riga++, "@b%s", (const char *)NomeTabella);
@ -408,8 +407,8 @@ bool AB1100_application::user_create()
// Flag per la stampa tabella registri
_tabname.upper();
_stampa_registri = (_tabname == "REG");
_stampa_ca7 = (_tabname == "%CA7");
// _stampa_registri = (_tabname == "REG");
// _stampa_ca7 = (_tabname == "%CA7");
_rel = new TRelation (_tabname);
_cur = new TCursor (_rel);

View File

@ -11,7 +11,7 @@ BEGIN
DISPLAY "Codice@12" CODCBL
DISPLAY "Descrizione@40" DESCRIZ
DISPLAY "I.B.@5" INDBIL
DISPLAY "D/M@5" DETT
// DISPLAY "D/M@5" DETT
DISPLAY "Con.C.@12" CODCONTR
DISPALY "SOSP.@5" SOSPESO
OUTPUT F_INIZIO CODCBL

View File

@ -196,14 +196,15 @@ class TRicezione_userdef : public TObject_reception
//classe derivata nella quale viene gestita la funzione di trasferimento
class TTrasfer: public TApplication
//class TTrasfer: public TApplication
class TTrasfer: public TSkeleton_application
{
// private:
// TArray _files;
protected:
// TFile_text* _trasfile; //File di testo
virtual bool menu(MENU_TAG) pure; //Gli dico che non è implementata in questa classe, ma obbligatoriamente in un'altra
// virtual bool menu(MENU_TAG) pure; //Gli dico che non è implementata in questa classe, ma obbligatoriamente in un'altra
virtual void main_loop() pure; //Gli dico che non è implementata in questa classe, ma obbligatoriamente in un'altra
//Controlla che il percorso e il file specificati esistono
static bool inseriscipercorso(TMask_field& f, KEY k);
public:
@ -220,9 +221,10 @@ class TRicezione:public TTrasfer
TObject_reception *_rice;
protected:
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG);
// virtual bool create();
// virtual bool destroy();
// virtual bool menu(MENU_TAG);
virtual void main_loop();
public:
@ -234,31 +236,64 @@ class TRicezione:public TTrasfer
TFile_text * trans_file() {return _rice->trans_file();}
TRicezione() {}
TRicezione() {_rice=NULL;}
virtual ~TRicezione() {}
};
class TObject_send:public TObject
{
protected:
TFile_text* _trasfile; //File di testo da cui ricevere
public:
TFile_text * trans_file() {return _trasfile;}
virtual void converti(int);
virtual void converti(int main_file,const char * tabname);
TObject_send() {_trasfile = NULL;}
TObject_send(const TFilename &percorso);
virtual ~TObject_send() { delete _trasfile;}
};
//Classe derivata per il trasferimento
class TInvio_AS400:public TTrasfer
class TInvio:public TTrasfer
{
TFile_text* _trasfile; //File di testo da cui ricevere
TObject_send *_invio;
protected:
virtual bool menu(MENU_TAG);
//virtual bool menu(MENU_TAG);
virtual void main_loop();
static bool inseriscipercorso(TMask_field& f, KEY k);
//Esegue il ciclo di ricezione
void converti(int);
public:
TInvio() {}
virtual ~TInvio() {}
};
class TInvio_AS400:public TObject_send
{
protected:
void trasferisci_albero(TRectype &,TRecord_text&, TAssoc_array&);
bool cerca_padre(TLocalisamfile &, TRectype &);
long my_num(TLocalisamfile&, TAssoc_array&);
bool mov_da_scrivere(TRectype &);
void formatta(TRecord_text&,TRectype&,int&);
public:
TInvio_AS400() {}
virtual void converti(int);
TInvio_AS400(const TFilename &percorso);
virtual ~TInvio_AS400() {}
};
class TInvio_user_defined:public TObject_send
{
public:
// virtual void converti(int) {} //DA definire
TInvio_user_defined(const TString & config, const TFilename &percorso);
virtual ~TInvio_user_defined() {}
};
// **********************
// da spostare in ablib01

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
#include "ab2100a.h"
PAGE "" 0 -1 0 19
PAGE "Ricezione e Invio di Bilanci & Analisi" 0 -1 0 19
GROUPBOX DLG_NULL 76 5
BEGIN
@ -28,11 +28,11 @@ LISTBOX F_TIPO_RICE 15
BEGIN
PROMPT 2 5 "Tipo: "
ITEM "1|WINDOWS"
MESSAGE DISABLE,F_PERCORSO_UTENTE|DISABLE,F_TESTO_UTENTE
MESSAGE DISABLE,F_PERCORSO_UTENTE|DISABLE,F_TESTO_UTENTE|HIDE, F_TIPO_BILANCIO
ITEM "2|AS400"
MESSAGE DISABLE,F_PERCORSO_UTENTE|DISABLE,F_TESTO_UTENTE
MESSAGE DISABLE,F_PERCORSO_UTENTE|DISABLE,F_TESTO_UTENTE|SHOW, F_TIPO_BILANCIO
ITEM "3|USER DEFINED"
MESSAGE ENABLE,F_PERCORSO_UTENTE|DISABLE,F_TESTO_UTENTE
MESSAGE ENABLE,F_PERCORSO_UTENTE|DISABLE,F_TESTO_UTENTE|SHOW, F_TIPO_BILANCIO
END
TEXT F_TESTO_UTENTE
@ -75,18 +75,21 @@ BOOLEAN F_PIANO_CONTI
BEGIN
PROMPT 2 9 "Piano dei conti"
FLAG "D"
GROUP 1
END
BOOLEAN F_PERIODI_BILANCI
BEGIN
PROMPT 2 11 "Tabella periodi di bilanci"
FLAG "D"
GROUP 1
END
BOOLEAN F_ANALISI
BEGIN
PROMPT 2 13 "Tabella analisi di bilancio"
FLAG "D"
GROUP 1
END
BOOLEAN F_MOVIMENTI
@ -94,6 +97,7 @@ BEGIN
PROMPT 2 15 "Movimenti"
MESSAGE TRUE ENABLE,F_TIPO_BILANCIO | COPY, F_SALDI
FLAG "D"
GROUP 1
END
BOOLEAN F_SALDI
@ -102,6 +106,7 @@ BEGIN
MESSAGE TRUE ENABLE,F_TIPO_BILANCIO
MESSAGE FALSE COPY, F_MOVIMENTI | DISABLE, F_TIPO_BILANCIO
FLAG "D"
GROUP 1
END
BOOLEAN F_VOCI
@ -109,6 +114,7 @@ BEGIN
PROMPT 40 11 "Voci"
MESSAGE TRUE COPY, F_RELAZ | COPY, F_SRELAZ
MESSAGE FALSE COPY, F_RELAZ | COPY, F_SRELAZ
GROUP 1
END
BOOLEAN F_RELAZ
@ -116,6 +122,7 @@ BEGIN
PROMTP 40 13 "Relazioni"
MESSAGE TRUE COPY, F_VOCI | COPY, F_SRELAZ
MESSAGE FALSE COPY, F_VOCI | COPY, F_SRELAZ
GROUP 1
END
BOOLENAN F_SRELAZ
@ -123,6 +130,7 @@ BEGIN
PROMPT 40 15 "Sottorelazioni"
MESSAGE TRUE COPY, F_RELAZ | COPY, F_VOCI
MESSAGE FALSE COPY, F_RELAZ | COPY, F_VOCI
GROUP 1
END
BUTTON DLG_OK 10 2

200
ab/ab2100b.ini Executable file
View File

@ -0,0 +1,200 @@
[MAIN]
DECSEP =
FIELDSEP = |
RECORDSEP =
RECORDSIZE = 0
TYPEFIELD = 0
[RECORD PIACO]
USE = 78
FIELD(1) = CODCBL
FIELD(2) = DESCRIZ
ALIGN(2) = L
FIELD(3) = INDBIL
FIELD(4) = CODCONTR
FIELD(5) = SOSPESO
[RECORD NTBBB]
USE = %NTB
FIELD(1) = COD
FIELD(2) = CODTAB
ALING(2) = L
FIELD(3) = S0
ALIGN(3) = L
[RECORD TBBBD]
USE = %PDB
FIELD(1) = COD
FIELD(2) = CODTAB
ALIGN(2) = L
FIELD(3) = S0
ALIGN(3) = L
FIELD(4) = I0
FIELD(5) = I1
FIELD(6) = I2
FIELD(7) = I3
[RECORD SALDI]
USE = 79
FIELD(1) = CODDITTA
FIELD(2) = ANNO
FIELD(3) = CODPDB
FIELD(4) = TIPOBIL
FIELD(5) = CODCBL
FIELD(6) = FLDA
FIELD(7) = SALDO
FIELD(8) = PDARE
FIELD(9) = PAVERE
FIELD(10) = RDARE
FIELD(11) = RAVERE
FIELD(12) = IDMOVDETT
ALIGN(12) = L
[RECORD ANALI]
USE = 82
FIELD(1) = CODAN
FIELD(2) = DESCRIZ
ALIGN(2) = L
FIELD(3) = TIPOAN
FIELD(4) = PFSTAL
FIELD(5) = PFSTRF
FIELD(6) = NOTE
[RECORD CARAD]
USE = 126
FIELD(1) = ID
FIELD(2) = STD
FIELD(3) = CLI
FIELD(4) = SPI
FIELD(5) = STI
FIELD(6) = DST
ALING(6) = L
FIELD(7) = CLT
FIELD(8) = SPT
FIELD(9) = STT
FIELD(10) = SVT
FIELD(11) = LST
FIELD(12) = ODA
FIELD(13) = SKI
FIELD(14) = SKT
FIELD(15) = NDV
FIELD(16) = RII
FIELD(17) = RIT
FIELD(18) = TVL
[RECORD COLLD]
USE = 127
FIELD(1) = ID
FIELD(2) = F4A
FIELD(3) = F4B
FIELD(4) = P4A
FIELD(5) = P4B
FIELD(6) = A5A
FIELD(7) = A5B
FIELD(8) = P5A
FIELD(9) = P5B
FIELD(10) = A6A
FIELD(11) = A6B
FIELD(12) = X4A
FIELD(13) = X4B
FIELD(14) = X5A
FIELD(15) = X5B
FIELD(16) = X6A
FIELD(17) = X6B
FIELD(18) = P6A
FIELD(19) = P6B
FIELD(20) = K4A
FIELD(21) = K5A
FIELD(22) = K6A
[RECORD MOVDE]
USE = 80
FIELD(1) = CODDITTA
FIELD(2) = ANNO
FIELD(3) = CODPDB
FIELD(4) = TIPOBIL
FIELD(5) = CODCBL
FIELD(6) = ID
FIELD(7) = TIPODETT
FIELD(8) = CODDETT
ALING(8) = L
FIELD(9) = DESCRIZ
ALIGN(9) = L
FIELD(10) = FLDA
FIELD(11) = IMPORTO
FIELD(12) = PDARE
FIELD(13) = PAVERE
FIELD(14) = RDARE
FIELD(15) = RAVERE
FIELD(16) = DATAREG
FIELD(17) = ANR
FIELD(18) = DATADOC
FIELD(19) = NDOC
FIELD(20) = CAUS
FIELD(21) = IMMESSO
FIELD(22) = DETT
FIELD(23) = INDIR
FIELD(24) = LOC
FIELD(25) = PROV
FIELD(26) = CAP
FIELD(27) = COFI
FIELD(28) = STATOPAIV
FIELD(29) = PAIV
FIELD(30) = IDPADRE
FIELD(31) = IDFIGLIO
FIELD(32) = IDSUCC
FIELD(33) = IDPREC
[RECORD RELNA]
USE = 85
FIELD(1) = CODAN
FIELD(2) = ID
FIELD(3) = IDPADRE
FIELD(4) = IDFIGLIO
FIELD(5) = IDPREC
FIELD(6) = IDSUCC
FIELD(7) = TIPOCOD
FIELD(8) = CODVC
ALING(8) = R
LENGTH(8)= 10
FIELD(9) = IDCOMP
FIELD(10) = DESCRIZ
ALIGN(10) = L
FIELD(11) = IDCARADD
FIELD(12) = USACARADD
FIELD(13) = IDCOLDICH
FIELD(14) = VOCEINCID
[RECORD RELVC]
USE = 84
FIELD(1) = TIPOCOD
FIELD(2) = CODVC
FIELD(3) = IDCOMP
FIELD(4) = NEXTCOMP
FIELD(5) = PREVCOMP
FIELD(6) = COMP
ALING(6) = L
[RECORD TVOCI]
USE = 83
FIELD(1) = CODVC
FIELD(2) = DESCRIZ
ALING(2) = L
FIELD(3) = TIPOVC
FIELD(4) = CODCBL
FIELD(5) = INDBIL
FIELD(6) = IDCARADD
FIELD(7) = TVL
FIELD(8) = CLASSEVOCE

View File

@ -190,9 +190,8 @@ bool TFile_text_AS400::pre_writerel(TRelation& rel,const TRecord_text& rec)
if (logic_num==LF_ABSALDI)
{//Parte riservata ai SALDI: modifico (immetto) il tipo di bilancio con il valore passato da maschera
//solo se questo campo è vuoto, nel caso contratio lascio il valore letto
TString prova = rel.lfile().get(ABMD_TIPOBIL);
if ( rel.lfile().get(ABMD_TIPOBIL) == "" )
rel.lfile().put(ABMD_TIPOBIL,get_tipo_bil());
// TString prova = get_tipo_bil();
rel.lfile().put(ABMD_TIPOBIL,get_tipo_bil());
return TRUE;
}//Fine parte riservata ai SALDI
@ -307,7 +306,7 @@ bool TFile_text_AS400::pre_writerel(TRelation& rel,const TRecord_text& rec)
{//Scrivo la chiave anche sul file secondario della relazione
real idcaradd_ra;
idcaradd_ra = 0;
TString prova = *idcaradd_ra.string();
// TString prova = *idcaradd_ra.string();
TLocalisamfile fil(LF_VOCI);
fil.curr()=rel.curr();
if (fil.read() != NOERR)
@ -397,7 +396,7 @@ bool TFile_text_AS400::pre_writerel(TRelation& rel,const TRecord_text& rec)
//Non ho trovato la VOCE o CARATTERISTICA ADDIZIONALE oppure è diversa
caradd.write();
rel.lfile().put(ABRA_USACARADD,TRUE); //Setto il flag
long prova = atol (caradd.get(ABCA_ID)); //Solo per debug
// long prova = atol (caradd.get(ABCA_ID)); //Solo per debug
rel.lfile().put(ABRA_IDCARADD,caradd.get(ABCA_ID)); //Aggiungo il collegamento alla carat. add.
}
else
@ -450,7 +449,7 @@ bool TTrasfer::inseriscipercorso(TMask_field& f, KEY k)
if (((f.dlg() == F_PERCORSO) || (f.dlg() == F_TIPO_RICE ))&& modificato)
{//Entro in questo if tutte le volte che è stato modificato il campo F_PERCORSO
//o F_TIPO_RICE
if (f.mask().get_int(F_TIPO_RICE) == 2)
if (f.mask().get_int(F_TIPO_RICE) == RICEZIONE_AS400)
{ //Questa parte dell'handler è riservata solo al campo F_PERCORSO
//se è abilitata la ricezione da AS400: in tutti gli altri casi
//non è garantito che ci sia un record di testa
@ -509,7 +508,7 @@ bool TTrasfer::inseriscipercorso(TMask_field& f, KEY k)
/* ********************************************************************************************************* */
/* TRicezione */
/*********************************************************************************************************** */
/*
bool TRicezione::create()
{
_files.add(new TLocalisamfile(LF_CARADD),1);
@ -521,13 +520,17 @@ bool TRicezione::create()
bool TRicezione::destroy() //Distruttore
{
return TRUE;
}
} */
//Funzione membro che effettua la conversione
bool TRicezione::menu(MENU_TAG)
{
//bool TRicezione::menu(MENU_TAG)
void TRicezione::main_loop()
{
_files.add(new TLocalisamfile(LF_CARADD),1);
_files.add(new TLocalisamfile(LF_COLLDICH),2);
TString config_file; //Nome del file di configurazione
TMask msk("AB2100A"); //Maschera dove si chiede di immettere il percorso del file sorgente
TFilename percorso; //Contiene il percorso completo del file sorgente
@ -539,7 +542,7 @@ bool TRicezione::menu(MENU_TAG)
if (msk.run()== K_ENTER) //Eseguo la maschera
{
//Visualizza una finestra di attesa
TIndwin idle(0,"Attendere: aggiornamento della tabella in corso. L'operazione potrebbe richiedere qualche minuto ... ",FALSE,FALSE,60);
TIndwin idle(0,"Attendere: aggiornamento della tabella in corso. \n L'operazione potrebbe richiedere qualche minuto ... ",FALSE,FALSE,60);
percorso=msk.get(F_PERCORSO); //Leggo il contenuto di F_PERCORSO
@ -570,7 +573,7 @@ bool TRicezione::menu(MENU_TAG)
//messaggio finale
message_box(" ... aggiornamento delle tabelle selezionate effettuato");
} //end if (msk.run())
return FALSE;
// return FALSE;
}
@ -578,8 +581,9 @@ void TObject_reception::ricevi(TMask & msk)
{
TRecord_text rec; //Istanzio un tipo record_text
if (msk.get_bool(F_VOCI))
{
if ((msk.get_bool(F_VOCI)) &&
(msk.get_int(F_TIPO_RICE) == RICEZIONE_AS400))
{//Eseguo questa parte solo per la ricezione AS400
TRelation *r=_trasfile->t_rec(LF_VOCI)->relation();
TAdditional_cars * ca=new TAdditional_cars(_excllock);
r->replacef(ca,LF_CARADD);
@ -619,6 +623,12 @@ void TObject_reception::ricevi(TMask & msk)
if (msk.get_bool(F_RELAZ))
{
_trasfile->autosave(rec,LF_RELVOCI);
if (msk.get_int(F_TIPO_RICE) != RICEZIONE_AS400)
{// Se è abilitito è abilitato la RICEZIONE_INTERNA devo ricevere anche questi files
_trasfile->autosave(rec,LF_RELANA);
_trasfile->autosave(rec,LF_CARADD);
_trasfile->autosave(rec,LF_COLLDICH);
}
}
}
}
@ -948,7 +958,7 @@ void TRicezione_AS400::build_relana(TString& config_file, const TMask &msk, cons
//ft = set_config_name(config_file,msk,percorso);
ft = trans_file();
ft->close(); //Chiudo il file
// ft->close(); //Chiudo il file
ft->open('r'); //Apro il file di testo in lettura
//Inizia il ciclo sulle Analisi in radici
@ -1008,8 +1018,8 @@ void TRicezione_AS400::build_relana(TString& config_file, const TMask &msk, cons
// modifica e scarica il record
TRectype prova(LF_COLLDICH);
prova= rel.lfile(LF_COLLDICH).curr();
// TRectype prova(LF_COLLDICH);
// prova= rel.lfile(LF_COLLDICH).curr();
ft->autosave(rel,rec); //La relazione principale è basata su RELANA
tabtree.remove(key);
} while ((ft->read(rec) == NOERR) && (rec.type() == TIPO_SRELAZ));
@ -1150,15 +1160,23 @@ void TRicezione_AS400::print_ana_tree(int &level,TRectype & nodo,FILE * stream)
void TRicezione_AS400::ricevi(TMask & msk)
{
trasfile()->set_tipo_bilancio(msk.get(F_TIPO_BILANCIO));
// Eseguo la ricezione normale
TObject_reception::ricevi(msk);
trasfile()->set_tipo_bilancio(msk.get(F_TIPO_BILANCIO));
// E aggiungo il resto ...
if (msk.get_bool(F_MOVIMENTI))
{
build_balancetree(LF_MOVDETT);
}
if (msk.get_bool(F_SRELAZ))
{
TString config_file;
TFilename percorso;
percorso=msk.get(F_PERCORSO); //Leggo il contenuto di F_PERCORSO: è stato controllato prima
build_relana(config_file,msk,percorso);
}
//La chiusura del _trasfile non può essere eseguita prima poichè questo
//serve nella costruzione dell'albero dei movimenti
if (_trasfile != NULL)
@ -1167,13 +1185,6 @@ void TRicezione_AS400::ricevi(TMask & msk)
delete _trasfile;
_trasfile =NULL;
}
if (msk.get_bool(F_SRELAZ))
{
TString config_file;
TFilename percorso;
percorso=msk.get(F_PERCORSO); //Leggo il contenuto di F_PERCORSO: è stato controllato prima
build_relana(config_file,msk,percorso);
}
}
TObject_reception::TObject_reception(const TFilename &percorso)
@ -1181,6 +1192,7 @@ TObject_reception::TObject_reception(const TFilename &percorso)
if (_trasfile != NULL)
delete _trasfile;
_trasfile = new TFile_text(percorso, "C:/SAURO/TEMP/AB2100B.INI"); /*DA CAMBIARE*/
_trasfile->open('r'); //apro il TFile_text in lettura
//_trasfile = new TFile_text(percorso, config); //Leggo il file di configurazione
}
@ -1191,12 +1203,15 @@ TRicezione_AS400::TRicezione_AS400(const TFilename &percorso)
delete _trasfile;
TString config("ab2100a.ini");
_trasfile = new TFile_text_AS400(percorso, config); //Leggo il file di configurazione
_trasfile->open('r'); //apro il TFile_text in lettura
}
TRicezione_userdef ::TRicezione_userdef(const TString & config, const TFilename &percorso)
{
if (_trasfile != NULL)
delete _trasfile;
_trasfile = new TFile_text(percorso, config); //Leggo il file di configurazione
_trasfile->open('r'); //apro il TFile_text in lettura
}

View File

@ -10,7 +10,7 @@
#include <assoc.h>
#include <varrec.h>
#define TABELLA_TIPO_BILANCI "NTBBB"
const char* get_ordinamento(TVariable_rectype & rec)
{
@ -250,12 +250,60 @@ void TInvio_AS400::formatta(TRecord_text &rec, TRectype &node, int &logic_num)
rec.add(SIGLA_TABELLA_PERIODI,SIGLA_TAB_PER);
}
}
void TObject_send::converti(int logic_num)
{
TRelation *tr_relation=_trasfile->t_rec(logic_num)->relation();
TRecord_text rec(_trasfile->t_rec(logic_num)->type()); //Istanzio un tipo record_text
TCursor *cur=NULL;
cur = new TCursor(tr_relation);
//Leggo il numero di records da convertire
long items =cur->items();
//Barra scorrevole di attesa
TProgind idle(items,"Attendere: conversione in corso ...",TRUE,TRUE,60);
//Ciclo principale di conversione
for (*cur=0;cur->pos()<items;++*cur)
{
idle.addstatus(1);
_trasfile->autoload(rec,logic_num);
rec.add(rec.type(),0);
_trasfile->write(rec);
}
delete cur;
}
void TObject_send::converti(int main_file, const char * tabname)
{
TRelation *tr_relation=_trasfile->t_rec(main_file,tabname)->relation();
TRecord_text rec(_trasfile->t_rec(main_file,tabname)->type()); //Istanzio un tipo record_text
TCursor *cur=NULL;
cur = new TCursor(tr_relation);
int logic_num= tr_relation->lfile().num();
//Leggo il numero di records da convertire
long items =cur->items();
//Barra scorrevole di attesa
TProgind idle(items,"Attendere: conversione in corso ...",TRUE,TRUE,60);
//Ciclo principale di conversione
for (*cur=0;cur->pos()<items;++*cur)
{
idle.addstatus(1);
// _trasfile->autoload(rec,logic_num);
_trasfile->autoload(rec,tabname);
rec.add(rec.type(),0);
_trasfile->write(rec);
}
delete cur;
}
void TInvio_AS400::converti(int logic_num)
{
TRelation *tr_relation=_trasfile->t_rec(logic_num)->relation();
TRecord_text rec(_trasfile->t_rec(logic_num)->type()); //Istanzio un tipo record_text
TRelation *tr_relation=trans_file()->t_rec(logic_num)->relation();
TRecord_text rec(trans_file()->t_rec(logic_num)->type()); //Istanzio un tipo record_text
TCursor *cur=NULL;
TAssoc_array progressivi;
@ -289,27 +337,27 @@ void TInvio_AS400::converti(int logic_num)
if (logic_num == LF_MOVDETT)
{//In questo caso la conversione è un po' particolare
rec.set_type(tr_relation->lfile().get(ABMD_TIPO_TRACCIATO));
_trasfile->autoload(rec,*cur,&rec.type());
trans_file()->autoload(rec,*cur,&rec.type());
if (mov_da_scrivere(tr_relation->lfile().curr()))
{
trasferisci_albero(tr_relation->lfile().curr(),rec,progressivi);
formatta(rec,tr_relation->lfile().curr(),logic_num);
_trasfile->write(rec);
trans_file()->write(rec);
}
}
else
{//in tutti gli altri casi la conversione è semplice
_trasfile->autoload(rec,logic_num);
trans_file()->autoload(rec,logic_num);
if (logic_num == LF_ABSALDI || logic_num == LF_TABCOM)
formatta(rec,tr_relation->lfile().curr(),logic_num);
_trasfile->write(rec);
trans_file()->write(rec);
}
}
delete cur;
}
//Handler per l'inserimento del percorso completo
bool TInvio_AS400::inseriscipercorso(TMask_field& f, KEY k)
bool TInvio::inseriscipercorso(TMask_field& f, KEY k)
{
TString percorso;
percorso=f.get(); //Leggo il contenuto del campo
@ -318,9 +366,9 @@ bool TInvio_AS400::inseriscipercorso(TMask_field& f, KEY k)
//Funzione membro che esegue la conversione di trasferimento
bool TInvio_AS400::menu(MENU_TAG)
//bool TInvio_AS400::menu(MENU_TAG)
void TInvio::main_loop()
{
TString config_file("ab2100b"); //Nome del file di configurazione
TMask msk("AB2100A"); //Maschera dove si chiede di immettere il percorso del file sorgente
TFilename percorso; //Contiene il percorso completo del file sorgente
@ -328,53 +376,129 @@ bool TInvio_AS400::menu(MENU_TAG)
msk.set_handler(F_PERCORSO, inseriscipercorso); //Assegno un handler al campo F_PERCORSO
//inseriscipercorso controlla che il percorso (e il file) esista e sia corretto
msk.set_handler(F_PERCORSO_UTENTE, inseriscipercorso);
msk.hide(F_TIPO_BILANCIO); //nascondo questo campo poichè non mi serve
msk.hide(F_TESTO_TIPOBIL); //nascondo questo campo poichè non mi serve
msk.hide(F_VOCI); //nascondo questo campo poichè non mi serve
msk.hide(F_RELAZ); //nascondo questo campo poichè non mi serve
msk.hide(F_SRELAZ); //nascondo questo campo poichè non mi serve
msk.enable(-1,TRUE);
if (msk.run()== K_ENTER) //Eseguo la maschera
{
//A questo punto il percorso e' corretto
percorso=msk.get(F_PERCORSO); //Leggo il contenuto di F_PERCORSO
_trasfile = new TFile_text_AS400(percorso, config_file); //Leggo il file di configurazione
_trasfile->open(percorso,'w'); //Apro il file di testo in rettura
if (msk.get_int(F_TIPO_RICE) == RICEZIONE_AS400)
{
if ((msk.get_bool(F_VOCI) == TRUE) ||
(msk.get_bool(F_RELAZ) == TRUE) ||
(msk.get_bool(F_SRELAZ) == TRUE))
{
message_box("L'ivio a AS400 delle VOCI, RELAZIONI e SOTTORELAZIONI non è attualmente previsto");
}
_invio = new TInvio_AS400(percorso);
}
if (msk.get_int(F_TIPO_RICE) == RICEZIONE_INTERNA)
{
_invio = new TObject_send(percorso);
}
if (msk.get_int(F_TIPO_RICE) == RICEZIONE_USER_DEFINED)
{
TString config_file(msk.get(F_PERCORSO_UTENTE)); //Nome del file di configurazione
_invio = new TInvio_user_defined(config_file,percorso);
}
// Parte di invio
if (msk.get_bool(F_PIANO_CONTI)==TRUE) //Controllo se si è scelto di convertire il piano dei conti
{
converti(LF_ABPCON); //Conversione
_invio->converti(LF_ABPCON); //Conversione
}
if (msk.get_bool(F_PERIODI_BILANCI)==TRUE) //Scelta di convertire la tabella periodi bilanci
{
converti(LF_TABCOM);
if (msk.get_int(F_TIPO_RICE) == RICEZIONE_AS400)
{//Se eseguo un invio a AS400 converto passando il numero del file
_invio->converti(LF_TABCOM);
}
else
{ //Se eseguo un invio interno converto passando il nome della tabella comune
_invio->converti(LF_TABCOM,"%PDB");
_invio->converti(LF_TABCOM,"%NTB");
}
}
if (msk.get_bool(F_ANALISI)==TRUE) //scelta di cnverite la tabella tipi analisi di bilancio
{
converti(LF_ANALISI);
_invio->converti(LF_ANALISI);
}
if (msk.get_bool(F_MOVIMENTI)==TRUE) //scelta di cnverite la tabella tipi analisi di bilancio
{
converti(LF_MOVDETT);
_invio->converti(LF_MOVDETT);
}
if (msk.get_bool(F_SALDI)==TRUE) //scelta di cnverite la tabella tipi analisi di bilancio
{
converti(LF_ABSALDI);
_invio->converti(LF_ABSALDI);
}
_trasfile->close();
delete _trasfile;
if (msk.get_int(F_TIPO_RICE) != RICEZIONE_AS400)
{// Solo se non è un invio ad AS400
if (msk.get_bool(F_VOCI)==TRUE) //scelta di cnverite la tabella tipi analisi di bilancio
{
_invio->converti(LF_VOCI);
}
if (msk.get_bool(F_RELAZ)==TRUE) //scelta di cnverite la tabella tipi analisi di bilancio
{
_invio->converti(LF_RELVOCI);
}
if (msk.get_bool(F_SRELAZ)==TRUE) //scelta di cnverite la tabella tipi analisi di bilancio
{
if (msk.get_int(F_TIPO_RICE) == RICEZIONE_INTERNA)
{
_invio->converti(LF_CARADD);
_invio->converti(LF_COLLDICH);
}
_invio->converti(LF_RELANA);
}
}
delete _invio;
//messaggio finale
message_box(" ... aggiornamento delle tabelle effettuato");
} //end if (msk.run())
return FALSE;
// return FALSE;
}
int ab2102(int argc, char **argv)
{
TInvio_AS400 a;
TInvio a;
a.run(argc,argv,"Trasferimento su file di testo");
return 0;
}
}
TObject_send::TObject_send(const TFilename &percorso)
{
if (_trasfile != NULL)
delete _trasfile;
_trasfile = new TFile_text(percorso, "AB2100B.INI"); /*DA CAMBIARE*/
_trasfile->open('w'); //apro il TFile_text in lettura
}
TInvio_AS400::TInvio_AS400(const TFilename &percorso)
{
if (_trasfile != NULL)
delete _trasfile;
_trasfile = new TFile_text(percorso, "AB2100A.INI"); /*DA CAMBIARE*/
_trasfile->open('w'); //apro il TFile_text in lettura
}
TInvio_user_defined::TInvio_user_defined(const TString & config, const TFilename &percorso)
{
if (_trasfile != NULL)
delete _trasfile;
_trasfile = new TFile_text(percorso, config); //Leggo il file di configurazione
_trasfile->open('w'); //apro il TFile_text in lettura
}

View File

@ -9,9 +9,9 @@ BEGIN
USE %ARB
INPUT CODTAB[1,5] F_INIZIO1
DISPLAY "Codice" CODTAB[1,5]
DISPLAY "Anno" CODTAB[6,9]
DISPLAY "Periodo" CODTAB[10,12]
DISPLAY "Tipo" CODTAB[13,15]
DISPLAY "Anno@15" CODTAB[6,9]
DISPLAY "Periodo@15" CODTAB[10,12]
DISPLAY "Tipo@15" CODTAB[13,15]
OUTPUT F_INIZIO1 CODTAB[1,5]
GROUP 1
FIELD CODTAB[1,5]