From 8156729afeb93ff31a211dcd1e378f1080e51016 Mon Sep 17 00:00:00 2001 From: sauro Date: Mon, 15 Dec 1997 11:12:32 +0000 Subject: [PATCH] =?UTF-8?q?ab0200a.uml:=20Commentato=20il=20campo=20F=5FDE?= =?UTF-8?q?TTAGLIO=20poich=C3=A8=20non=20=C3=A8=20pi=C3=B9=20utilizzato=20?= =?UTF-8?q?ab1.cpp:=20Aggiunto=20commenti=20per=20descrivere=20la=20sintas?= =?UTF-8?q?si=20per=20lanciare=20le=20varie=20applicazini=20ab1200.frm:=20?= =?UTF-8?q?Tolto=20il=20campo=20F=5FDETTAGLIO=20e=20aggiornato=20di=20cons?= =?UTF-8?q?eguenza=20ab2100.cpp,=20ab2100.h:=20Completato=20l'applicazione?= =?UTF-8?q?=20di=20ricezione=20e=20trasferimento=20ab2100a.ini:=20Completa?= =?UTF-8?q?to=20con=20tutti=20i=20tracciati=20disponibili=20nel=20TRDANBI?= =?UTF-8?q?=20ab2100a.uml:=20Completata=20la=20gestione=20a=20livello=20di?= =?UTF-8?q?=20maschera=20dei=20campi=20booleani?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://10.65.10.50/trunk@5741 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ab/ab0200a.uml | 22 +++--- ab/ab1.cpp | 4 +- ab/ab1200.frm | 93 ++++++++++------------ ab/ab2100.cpp | 210 +++++++++++++++++++++++++++++++++++++++++++------ ab/ab2100.h | 58 +++++++++++++- ab/ab2100a.ini | 5 +- ab/ab2100a.uml | 11 ++- 7 files changed, 304 insertions(+), 99 deletions(-) diff --git a/ab/ab0200a.uml b/ab/ab0200a.uml index 3ad740b5c..d012b46ee 100755 --- a/ab/ab0200a.uml +++ b/ab/ab0200a.uml @@ -82,20 +82,20 @@ BEGIN FLAGS "ZRU" END - -LIST F_DETTAGLIO 15 -BEGIN - PROMPT 2 14 "Dettaglio/Movimenti " - FIELD LF_ABPCON->DETT - ITEM " |Nessuno" - ITEM "D|Dettaglio" - ITEM "M|Movimenti" -END +//Questo campo è stato tolto +//LIST F_DETTAGLIO 15 +//BEGIN +// PROMPT 2 14 "Dettaglio/Movimenti " +// FIELD LF_ABPCON->DETT +// ITEM " |Nessuno" +// ITEM "D|Dettaglio" +// ITEM "M|Movimenti" +//END BOOLEAN SOSPENDI BEGIN - PROMTP 2 16 " Conto sospeso" - FIELD LF_ABPCON->SOSPESO + PROMTP 2 16 " Conto sospeso" + FIELD LF_ABPCON->SOSPESO END ENDPAGE diff --git a/ab/ab1.cpp b/ab/ab1.cpp index f1ee77202..34a0bae16 100755 --- a/ab/ab1.cpp +++ b/ab/ab1.cpp @@ -13,9 +13,9 @@ int main(int argc, char** argv) switch (r) { case 0: - rt = ab1100(argc,argv) ; break; + rt = ab1100(argc,argv) ; break; // Sintassi ab1 -0 %tabella -utente case 1: - rt = ab1200(argc,argv) ; break; + rt = ab1200(argc,argv) ; break; // Sintassi ab1 -1 -utente default: error_box(usage, argv[0]) ; break; } diff --git a/ab/ab1200.frm b/ab/ab1200.frm index be99c6563..e269096d4 100755 --- a/ab/ab1200.frm +++ b/ab/ab1200.frm @@ -5,111 +5,98 @@ END DESCRIPRION BEGIN - 78->* "Piano dei Conti" + 78->* "Piano dei Conti" END GENERAL BEGIN - OFFSET 0 0 - FONT "Courier New" - SIZE 7 + OFFSET 0 0 + FONT "Courier New" + SIZE 7 END SECTION HEADER ODD 6 STRINGA 1 80 BEGIN - KEY "Separatore (iniziale)" - PROMPT 1 3 "--------------------------------------------------------------------------------" + KEY "Separatore (iniziale)" + PROMPT 1 3 "--------------------------------------------------------------------------------" END -STRINGA 2 7 +STRINGA 2 12 BEGIN - KEY "Intestazione (Codice)" - PROMPT 1 4 "Codice" + KEY "Intestazione (Codice)" + PROMPT 1 4 "Codice" END STRINGA 3 40 BEGIN - KEY "Intestazione (Descrizione)" - PROMPT 25 4 "Descrizione" + KEY "Intestazione (Descrizione)" + PROMPT 25 4 "Descrizione" END NUMERO 4 5 BEGIN - KEY "Intestazione (I.b.)" - PROMPT 53 4 "I.b." + KEY "Intestazione (I.b.)" + PROMPT 53 4 "I.b." END -STRINGA 5 4 +STRINGA 5 12 BEGIN - KEY "Intestazione (d/m)" - PROMPT 58 4 "D/M" + KEY "Intestazione (Codcontr)" + PROMPT 63 4 "Cod. Contr." END -STRINGA 6 12 +STRINGA 6 6 BEGIN - KEY "Intestazione (Codcontr)" - PROMPT 63 4 "Cod. Contr." -END - -STRINGA 7 6 -BEGIN - KEY "Intestazione (Sosp.)" - PROMPT 75 4 "Sosp." + KEY "Intestazione (Sosp.)" + PROMPT 75 4 "Sosp." END -STRINGA 8 80 +STRINGA 7 80 BEGIN - KEY "Separatore (finale)" - PROMPT 1 5 "--------------------------------------------------------------------------------" + KEY "Separatore (finale)" + PROMPT 1 5 "--------------------------------------------------------------------------------" END END //Il -2 significa che stampa su 1 o 2 righe secondo quello che devo stampare SECTION BODY ODD -2 -STRINGA 1 12 +STRINGA 2 12 BEGIN - KEY "Codice" - PROMPT 1 1 "" - FIELD 78->CODCBL + KEY "Codice" + PROMPT 1 1 "" + FIELD 78->CODCBL END //Sintassi: TIPO id lunghezza_per_riga numero_righe -STRINGA 2 40 2 +STRINGA 3 40 2 BEGIN - KEY "Descrizione" - PROMPT 14 1 "" - FIELD 78->DESCRIZ + KEY "Descrizione" + PROMPT 14 1 "" + FIELD 78->DESCRIZ END -NUMERO 3 1 +NUMERO 4 1 BEGIN - KEY "Indicatore" - PROMPT 55 1 "" - FIELD 78->INDBIL -END - -STRINGA 4 1 -BEGIN - KEY "Dettaglio" - PROMPT 59 1 "" - FIELD 78->DETT + KEY "Indicatore" + PROMPT 55 1 "" + FIELD 78->INDBIL END STRINGA 5 12 BEGIN - KEY "Cod. contr." - PROMPT 63 1 "" - FIELD 78->CODCONTR + KEY "Cod. contr." + PROMPT 63 1 "" + FIELD 78->CODCONTR END STRINGA 6 1 BEGIN - KEY "Sospeso" - PROMPT 76 1 "" - FIELD 78->SOSPESO + KEY "Sospeso" + PROMPT 76 1 "" + FIELD 78->SOSPESO END END diff --git a/ab/ab2100.cpp b/ab/ab2100.cpp index 8ac7de641..c09a99328 100755 --- a/ab/ab2100.cpp +++ b/ab/ab2100.cpp @@ -1,42 +1,47 @@ //AB2100.CPP: Ricezione-Trasferimetno tabelle #include #include +#include #include "ab2100a.h" #include "ab2.h" #include "ab2100.h" - +#include "caradd.h" +#include "colldich.h" bool TRiceTras::create() -{ +{ + _files.add(new TLocalisamfile(LF_CARADD),1); + _files.add(new TLocalisamfile(LF_COLLDICH),2); dispatch_e_menu(BAR_ITEM(1)); //Simula la scelta di una voce di menu return TRUE; } TFile_text* TRiceTras::set_config_name(TString &config, const TMask &msk, const TFilename &percorso) { - int tipo_ricezione = msk.get_int(F_TIPO_RICE); - switch (tipo_ricezione) - { - case 1: - { - config="ab2100a.ini"; - _trasfile = new TABfile_text(percorso, config); //Leggo il file di configurazione - return _trasfile; - } - case 2: - { - config="ab2100a.ini"; /*DA CAMBIARE*/ - _trasfile = new TFile_text(percorso, config); //Leggo il file di configurazione - return _trasfile; - } - case 3: - { - config=msk.get(F_PERCORSO_UTENTE); break; - _trasfile = new TFile_text(percorso, config); //Leggo il file di configurazione - return _trasfile; - } - } - return NULL; + if (_trasfile != NULL) + delete _trasfile; + _trasfile=NULL; + int tipo_ricezione = msk.get_int(F_TIPO_RICE); + switch (tipo_ricezione) + { + case 1: // RICEZIONE INTERNA: WINDOWS + config="ab2100a.ini"; /*DA CAMBIARE*/ + break; + case 2: //RICEZIONE ESTERNA: AS400 + config="ab2100a.ini"; + break; + case 3://RICEZIONE ESTERNA: USER DEFINED + config=msk.get(F_PERCORSO_UTENTE); + break; + default: + config.cut(0); + break; + } + + if (config.not_empty()) + _trasfile = new TABfile_text(percorso, config); //Leggo il file di configurazione + + return _trasfile; } bool TRiceTras::destroy() //Distruttore @@ -67,4 +72,159 @@ int ab2100(int argc, char **argv) error_box ("Sintassi: \n -0 -R - per ricezione \n -0 -T - per trasferimetno"); } return 0; +} + +TAdditional_car::TAdditional_car() : + TRectype(LF_CARADD) +{ +} + + +void TAdditional_car::put_str(const char* fieldname, const char* val) +{ + if (strcmp(fieldname,ABCA_ID)==0) + { + static TString16 id; + CHECK(length(ABCA_ID)<=16,"ID in CARADD deve essere max lungo 16"); + id = val; + id.right_just(length(ABCA_ID)); + TRectype::put_str(fieldname, (const char *)id); + } else + TRectype::put_str(fieldname, val); +} + +bool TAdditional_car::same_as(real other_id) +{ + bool r; + //TLocalisamfile ca(LF_CARADD); + TAdditional_cars ca; + + ca.put(ABCA_ID,other_id); + ca.read(); + real id=get(ABCA_ID); + put(ABCA_ID,ca.get(ABCA_ID)); + r= (*this == ca.curr()); + put(ABCA_ID,id); + return r; +} + +TAdditional_cars::TAdditional_cars(TFilelock lockmode) : + TLocalisamfile (LF_CARADD) +{ + set_curr(new TAdditional_car()); + if (lockmode==_excllock) + { + lock(); //Il file è già aperto: gli faccio un lock + if (last()==NOERR) + _lastid=get_long(ABCA_ID); + else + _lastid=0; + } else + _lastid=-1; +} + +long TAdditional_cars::lastid() +{ + if (_lastid>=0) + { + return _lastid; + } else { + TLocalisamfile ca(LF_CARADD); + if (ca.last()==NOERR) + return atol(get(ABCA_ID)); + else + return 0; + } +} + + +int TAdditional_cars::write() +{ + int err; + if (_lastid>=0) + { + curr().put(ABCA_ID,++_lastid); + err=TLocalisamfile::write(); + } else { + do { + curr().put(ABCA_ID,lastid()+1); + err=TLocalisamfile::write(); + } while (err==_isdupkey); + } + return err; +} + + + +/***********************/ +TAdditional_col::TAdditional_col() : + TRectype(LF_COLLDICH) +{ +} + + +long TAdditional_cols::_lastid = 0; + +TAdditional_cols::TAdditional_cols() : + TLocalisamfile (LF_COLLDICH) +{ + set_curr(new TAdditional_col()); + if (_lastid == 0) + { + if (last()==NOERR) + _lastid=get_long(ABCD_ID); + } +} + +/*long TAdditional_cols::lastid() +{ + if (_lastid>=0) + { + return _lastid; + } else { + TLocalisamfile ca(LF_COLLDICH); + if (ca.last()==NOERR) + return atol(get(ABCD_ID)); + else + return 0; + } +} */ + + +int TAdditional_cols::write() +{ + int err = NOERR; + bool scrivo = FALSE; + + for (int i = curr().items(); (i > 1) && (!scrivo); i--) //Estraggo il campo + { + const char * name_field = curr().fieldname(i); + const char * str = ""; + if (name_field) //Inizializzo la stringa solo se il puntatore non è nullo + str = curr().get(name_field); + if (strlen(str) > 0) //Se la stringa è stata inizilizzata a qualcosa entro per controllare + { + for (int ii = 0; str[ii]; ii++) + {//scorro il contenuto del campo per controllare se è vuoto + if ((str[ii] != ' ') && (str[ii] != '0')) + { + scrivo = TRUE; //se trovo qualcosa di "non vuoto" setto il flag di scrittura + break; + } + } + } + } + + if (scrivo) + { + do { + curr().put(ABCD_ID,++_lastid); + err=TLocalisamfile::write(); + } while (err==_isdupkey); + err=TLocalisamfile::write(); + } + else + curr().put(ABCD_ID,0); //Il record non è stato scritto ma devo inserire nella chiave del rocord + //l'indice (=0) poichè questo andrà inserito in RELANA + return err; } \ No newline at end of file diff --git a/ab/ab2100.h b/ab/ab2100.h index 34f691760..535e8c1ab 100755 --- a/ab/ab2100.h +++ b/ab/ab2100.h @@ -78,7 +78,9 @@ //classe derivata nella quale viene gestita la funzione di trasferimento class TRiceTras: public TApplication -{ +{ + private: + TArray _files; protected: TFile_text* _trasfile; //File di testo @@ -96,9 +98,9 @@ class TRiceTras: public TApplication class TABfile_text: public TFile_text { TAssoc_array _last_id; - static long _idcaradd; +// static long _idcaradd; long _idncomp; - long _idcoldich; + //long _idcoldich; TString _codvc_prec; protected: // virtual void preformat_field(TRelation& rel,const TFieldref&field,const TRecord_text& rec,TString &str); @@ -107,10 +109,60 @@ protected: void cambia_data(TString& str); virtual bool pre_writerel(TRelation& rel,const TRecord_text& rec); void scrivi_temp_link(TRelation& rel,const TRecord_text& rec); + void aggiorna_rel_link(TLocalisamfile &relvoc); public: TABfile_text(const char* file_name, const char* set_config_name); virtual ~TABfile_text() {} }; +// ********************** +// da spostare in ablib01 + +class TAdditional_car: public TRectype +{ +protected: + virtual void put_str(const char* fieldname, const char* val); + +public: + bool same_as(real id); + TAdditional_car(); + virtual ~TAdditional_car() {} +}; + + +/***************************/ + +class TAdditional_cars: public TLocalisamfile +{ + long _lastid; // usato in caso di lock +public: + long lastid(); + TAdditional_car & current() + {return (TAdditional_car & )(TLocalisamfile::curr());} + virtual int write(); + //int write(); + TAdditional_cars(TFilelock lockmode=_manulock); + virtual ~TAdditional_cars() {} +}; + + + +class TAdditional_col: public TRectype +{ +public: + TAdditional_col(); + virtual ~TAdditional_col() {} +}; + +class TAdditional_cols: public TLocalisamfile +{ + static long _lastid; + public: + //long lastid(); + virtual int write(); + TAdditional_cols(); + virtual ~TAdditional_cols() {} +}; #endif //_AB2100_H + diff --git a/ab/ab2100a.ini b/ab/ab2100a.ini index c7858c0ad..9457736f4 100755 --- a/ab/ab2100a.ini +++ b/ab/ab2100a.ini @@ -190,10 +190,11 @@ POSITION(5)=102 NAME(6)=FLAG_DETT_MOV TYPE(6)=STRINGA_R -FIELD(6)=78->DETT -FTYPE(6)=STRINGA_R POSITION(6)=103 LENGTH(6)=1 +// FIELD(6)=78->DETT è stato dolto +// FTYPE(6)=STRINGA_R + NAME(7)=CODICE_CONTO_SEZ_OPPOSTA TYPE(7)=FILLED_STRINGA_R10 diff --git a/ab/ab2100a.uml b/ab/ab2100a.uml index 0cccac8d0..a11833432 100755 --- a/ab/ab2100a.uml +++ b/ab/ab2100a.uml @@ -27,9 +27,9 @@ END LISTBOX F_TIPO_RICE 15 BEGIN PROMPT 2 5 "Tipo: " - ITEM "1|AS400" + ITEM "1|WINDOWS" MESSAGE DISABLE,F_PERCORSO_UTENTE|DISABLE,F_TESTO_UTENTE - ITEM "2|WINDOWS" + ITEM "2|AS400" MESSAGE DISABLE,F_PERCORSO_UTENTE|DISABLE,F_TESTO_UTENTE ITEM "3|USER DEFINED" MESSAGE ENABLE,F_PERCORSO_UTENTE|DISABLE,F_TESTO_UTENTE @@ -55,7 +55,7 @@ END STRING F_TIPO_BILANCIO 2 2 BEGIN PROMPT 60 18 "" - FLAG "RU" + FLAG "DRU" KEY 1 USE %NTB KEY 1 INPUT %NTB->CODTAB F_TIPO_BILANCIO @@ -74,22 +74,26 @@ END BOOLEAN F_PIANO_CONTI BEGIN PROMPT 2 9 "Piano dei conti" + FLAG "D" END BOOLEAN F_PERIODI_BILANCI BEGIN PROMPT 2 11 "Tabella periodi di bilanci" + FLAG "D" END BOOLEAN F_ANALISI BEGIN PROMPT 2 13 "Tabella analisi di bilancio" + FLAG "D" END BOOLEAN F_MOVIMENTI BEGIN PROMPT 2 15 "Movimenti" MESSAGE TRUE ENABLE,F_TIPO_BILANCIO | COPY, F_SALDI + FLAG "D" END BOOLEAN F_SALDI @@ -97,6 +101,7 @@ BEGIN PROMPT 40 9 "Saldi" MESSAGE TRUE ENABLE,F_TIPO_BILANCIO MESSAGE FALSE COPY, F_MOVIMENTI | DISABLE, F_TIPO_BILANCIO + FLAG "D" END BOOLEAN F_VOCI