Files correlati : cg1.exe cg2.exe cg3.exe cg3100a.msk cg3600a.msk cg3600b.msk cg4700a.msk Ricompilazione Demo : [ ] Commento : EP20036 Richiamo registrazione fatt. vendita già inserita, vado alla pagina IVA col mouse mi posiziono sul campo "CR"cerco di entrare nella list box associata al campo. Errore dell'applicazione cg2.exe* (l'errore può non comparire subito ma dopo essere usciti dalla registrazione contabile avendo eseguito quando descritto sopra e poi rientrati ripetendo il tutto.)Win 2000 EP20039 Compilo la maschera fino al group box "Intesta deleghe a", col mouse mi posiziono sul campo Tipo e cerco di entrare nella list box associata al campo: Errore CG1.exe EP20040 Col mouse: mi posiziono sul campo "Stampa dal registro IVA" entro nella tabella registri associata al campo mi posiziono sulla riga del registro iva vendite e clicco sul bottone collega: la procedura ritorna nella maschera Lista movimenti anziché entrare nella tabella registri EP20042 Lavoro col mouse: richiamo un movimento inserito con causale V01 abilitata al saldaconto, vado alla pagina Scadenze e mi posiziono sul campo Ns. Banca ABI.Entro nella tabella banche associata al campo, seleziono una banca inserita e clicco sul bottone collega.Ritorno alla pagina scadenze del movimento contabile. EP20044 Se in file impostazione stampante è indicato stampa su... Visualizzazione, la stampa viene visualizzata correttamente ma non esce stampa su carta. EP20045 Correzione righe di prima nota, digito la password e clicco su conferma, mi propone la ditta 1 e clicco su selezione, compare maschera righe di prima nota errata vuota clicco sul bottone tutti errore dell'applicazione cg1.exe n.b. anche nella versione1.7(E' corretto che il bottone Tutti sia attivo?) EP20051 Col mouse: clicco sul bottone di ricerca richiamo conto 1 1 1 mi posiziono sul campo "codice tabella analisi" ed entro nella tabella associata al campo clicco sul bottone nuovo errore: impossibile trovare CB5.DLL EP20053 Se in file impostazione stampante è indicato stampa su... Visualizzazione la stampa viene visualizzata correttamente ma non esce stampa su carta. EP20059 Ho inserito n clienti. Clicco sul bottone di ricerca e richiamo un cliente già registrato. Clicco sulla freccina singola a sx del botone ricerca (e anche sulle altre freccie): messaggo "vuoi registrare dati inseriti?" EP20060 Il bottone ricerca non ha "freccie avanti-dietro" NON DEVE AVERLO! NON E' UN PROGRAMMA DI IMMISSIONE DATI EP20061 Il bottone ricerca non ha "freccie avanti-dietro" NON DEVE AVERLO! NON E' UN PROGRAMMA DI IMMISSIONE DATI EP20063 entrando nella voce tabella piano dei conti errore impossibile trovare CB5.DLL EP20073 all'interno dei campi (es.numero protocollo) il comando di tastiera "canc" non funziona EP20076 Richiamo un'anagrafica già inserita clicco su nuovo messaggio :"registrare le modifiche?" git-svn-id: svn://10.65.10.50/trunk@11127 c028cbd2-c16b-5b4b-a496-9718f37d4682
873 lines
22 KiB
C++
Executable File
873 lines
22 KiB
C++
Executable File
// Ricezione dati da sistema e da PC
|
|
|
|
#include <applicat.h>
|
|
#include <config.h>
|
|
#include <mask.h>
|
|
#include <prefix.h>
|
|
#include <progind.h>
|
|
#include <tabutil.h>
|
|
#include <utility.h>
|
|
|
|
#include <nditte.h>
|
|
|
|
#include "cg6400.h"
|
|
#include "cglib04.h"
|
|
#include "cgsaldac.h"
|
|
|
|
class TRic_archivi : public TSkeleton_application
|
|
{
|
|
TTransfer_file* _tras_file;
|
|
TLocalisamfile* _caus;
|
|
TLocalisamfile* _rcaus;
|
|
TLocalisamfile* _clifo;
|
|
TLocalisamfile* _pcon;
|
|
TLocalisamfile* _mov;
|
|
TLocalisamfile* _rmov;
|
|
TLocalisamfile* _rmoviva;
|
|
TLocalisamfile* _occas;
|
|
TLocalisamfile* _part;
|
|
TLocalisamfile* _scad;
|
|
TLocalisamfile* _pagsca;
|
|
|
|
TString80 TEMP;
|
|
|
|
char _scelta, _ric_auto;
|
|
|
|
int _numtotdisk,_progdisk,_numdisk,_numinv,_numinvp,_nultras;
|
|
int _stato_ripartenza,_nultras_tab;
|
|
bool _sequenza,_disketto;
|
|
bool _prima_volta,_baipassa;
|
|
TString _nomeid,_nomeidp,_ragsoc_dittar;
|
|
TFilename _marker,_trasf,_trasfer,_pathname;
|
|
long _dittainv,_dittainvp,_dittaric,_totrectras,_totrectrasp;
|
|
TDate _datatras,_datatrasp,_dataultras_tab,_dataultras;
|
|
TString _sigle_file,_nrec_file,_trasfhard;
|
|
char _agg_cau,_agg_pcon,_agg_cls,_agg_clifo,_agg_fatatt,_agg_fatpas;
|
|
|
|
public:
|
|
TString _titolo;
|
|
|
|
virtual bool create();
|
|
virtual bool destroy();
|
|
virtual bool check_autorization() const
|
|
{return FALSE;}
|
|
virtual void main_loop();
|
|
bool leggi_marker();
|
|
bool leggi_marker_rep();
|
|
void leggi_trasfer(const char* nome);
|
|
void ripristina_trasfer();
|
|
void trasfer2tempfile();
|
|
long leggi_tabella_tras();
|
|
void componi_path(TMask*);
|
|
bool video_ripartenza();
|
|
void ditta_ricevente();
|
|
bool ripartenza();
|
|
bool set_flag();
|
|
void aggiorna_tabella();
|
|
int controllo_ripartenza();
|
|
|
|
static bool baipassa(TMask& m,KEY k);
|
|
|
|
TRic_archivi(char ric_trasfer,char ric_auto = '\0');
|
|
};
|
|
|
|
HIDDEN TRic_archivi& app() { return (TRic_archivi &) main_app(); }
|
|
|
|
TRic_archivi::TRic_archivi(char ric_trasfer,char ric_auto) :
|
|
_scelta(toupper(ric_trasfer)), _ric_auto(toupper(ric_auto))
|
|
{
|
|
if (_scelta == 'S')
|
|
_titolo = TR("Ricezione archivi da sistema");
|
|
else
|
|
{
|
|
_scelta = 'P';
|
|
_titolo = TR("Ricezione archivi da PC");
|
|
}
|
|
}
|
|
|
|
bool TRic_archivi::create()
|
|
{
|
|
open_files(LF_TABCOM, 0);
|
|
_tras_file = new TTransfer_file(_scelta);
|
|
|
|
_caus = new TLocalisamfile (LF_CAUSALI);
|
|
_rcaus = new TLocalisamfile (LF_RCAUSALI);
|
|
_clifo = new TLocalisamfile (LF_CLIFO);
|
|
_pcon = new TLocalisamfile (LF_PCON);
|
|
_mov = new TLocalisamfile (LF_MOV);
|
|
_rmov = new TLocalisamfile (LF_RMOV);
|
|
_rmoviva = new TLocalisamfile (LF_RMOVIVA);
|
|
_occas = new TLocalisamfile (LF_OCCAS);
|
|
_part = new TLocalisamfile (LF_PARTITE);
|
|
_scad = new TLocalisamfile (LF_SCADENZE);
|
|
_pagsca = new TLocalisamfile (LF_PAGSCA);
|
|
|
|
_numdisk = 1;
|
|
_prima_volta = TRUE;
|
|
_nultras = 0;
|
|
_nultras_tab = 0;
|
|
_baipassa = FALSE;
|
|
|
|
return TSkeleton_application::create();
|
|
}
|
|
|
|
bool TRic_archivi::destroy()
|
|
{
|
|
delete _tras_file;
|
|
|
|
delete _caus;
|
|
delete _rcaus;
|
|
delete _clifo;
|
|
delete _pcon;
|
|
delete _mov;
|
|
delete _rmov;
|
|
delete _rmoviva;
|
|
delete _occas;
|
|
delete _part;
|
|
delete _scad;
|
|
delete _pagsca;
|
|
|
|
return TApplication::destroy();
|
|
}
|
|
|
|
void TRic_archivi::componi_path(TMask* msk)
|
|
{
|
|
TFilename path = msk->get(F_PATHNAME);
|
|
|
|
const TString8 drive = msk->get(F_DRIVE);
|
|
// Inizio cazzata - da sostituire con _disketto = ::os_is_removable_drive(drive)
|
|
if (drive == "A:" || drive == "B:")
|
|
_disketto = TRUE;
|
|
else
|
|
_disketto = FALSE;
|
|
// Fine cazzata
|
|
|
|
const int pos = path.find(':');
|
|
if (pos)
|
|
path = path.mid(pos+1);
|
|
|
|
if (path.not_empty())
|
|
{
|
|
_marker << drive << "\\" << path << "\\marker";
|
|
_trasfer << drive << "\\" << path << "\\trasfer";
|
|
if (!_disketto)
|
|
_pathname << drive << "\\" << path;
|
|
}
|
|
else
|
|
{
|
|
_marker << drive << "\\marker";
|
|
_trasfer << drive << "\\trasfer";
|
|
if (!_disketto)
|
|
_pathname << drive << "\\";
|
|
}
|
|
}
|
|
|
|
bool TRic_archivi::leggi_marker()
|
|
{
|
|
if (!_marker.exist())
|
|
{
|
|
if (_disketto)
|
|
return error_box(FR("File marker non presente sul dischetto %d: impossibile proseguire"), _numdisk);
|
|
else
|
|
return error_box(FR("File marker non presente in %s: impossibile proseguire"), (const char*)_pathname);
|
|
}
|
|
|
|
FILE* i;
|
|
|
|
const word size = 64;
|
|
TString buffer(size);
|
|
|
|
if ( (i = fopen(_marker,"r+t")) != NULL)
|
|
{
|
|
const word letti = fread((char*)(const char*)buffer,sizeof(char),size,i);
|
|
|
|
_progdisk = atoi(buffer.sub(31,33));
|
|
_numtotdisk = atoi(buffer.sub(29,31));
|
|
|
|
if (_numtotdisk == 0)
|
|
{
|
|
message_box(TR("Il numero totale dischi su marker non e' significativo: impossibile proseguire"));
|
|
fclose(i);
|
|
return FALSE;
|
|
}
|
|
|
|
if (_progdisk != _numdisk)
|
|
{
|
|
message_box(FR("Il dischetto inserito (%d) non rispecchia la giusta sequenza (%d)"), _numdisk, _progdisk);
|
|
_sequenza = FALSE;
|
|
fclose(i);
|
|
return TRUE;
|
|
}
|
|
else
|
|
_sequenza = TRUE;
|
|
|
|
if (letti == 0)
|
|
{
|
|
fclose(i);
|
|
return error_box(TR("Rilevati ERRORI nel file MARKER: impossibile proseguire"));
|
|
}
|
|
|
|
_nomeid = buffer.sub(0,10);
|
|
_dittainv = atol(buffer.sub(10,14));
|
|
_totrectras = atol(buffer.sub(23,29));
|
|
_numinv = atoi(buffer.sub(14,17));
|
|
|
|
TString16 tmp = buffer.sub(17,23);
|
|
_datatras = converti(tmp,FALSE);
|
|
|
|
if (_numdisk > 1) //Va fatto solo dal disco 2 in poi
|
|
if (_nomeid != _nomeidp || _dittainv != _dittainvp || _totrectras != _totrectrasp
|
|
|| _numinv != _numinvp || _datatras != _datatrasp)
|
|
return error_box(FR("I dati del marker del disco %d, non corrispondono ai dati del marker del disco 1"), _numdisk);
|
|
|
|
_nomeidp = _nomeid;
|
|
_dittainvp = _dittainv;
|
|
_totrectrasp = _totrectras;
|
|
_numinvp = _numinv;
|
|
_datatrasp = _datatras;
|
|
|
|
fclose(i);
|
|
|
|
if (_numdisk == 1) // Va fatto solo per il primo disco
|
|
{
|
|
_dittaric = leggi_tabella_tras();
|
|
|
|
if (_dittaric != 0)
|
|
{
|
|
if (!prefix().exist(_dittaric))
|
|
return error_box(FR("Libreria archivi ditta %ld non presente su disco"), _dittaric);
|
|
}
|
|
else
|
|
return error_box(TR("Codici NON PRESENTI in tabella ricezione: caricarli e riprovare"));
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
bool TRic_archivi::leggi_marker_rep()
|
|
{
|
|
TString16 tmp;
|
|
|
|
if (!_marker.exist())
|
|
{
|
|
if (_disketto)
|
|
return error_box(FR("File marker non presente sul dischetto %d: impossibile proseguire"), _numdisk);
|
|
else
|
|
return error_box(FR("File marker non presente in %s: impossibile proseguire"), (const char*)_pathname);
|
|
}
|
|
|
|
const word size = 64;
|
|
TString buffer(size);
|
|
|
|
FILE* inmark = fopen(_marker,"r");
|
|
if (inmark != NULL)
|
|
{
|
|
const word letti = fread((char*)(const char*)buffer,sizeof(char),size,inmark);
|
|
fclose(inmark);
|
|
|
|
_progdisk = atoi(buffer.sub(34,36));
|
|
_numtotdisk = atoi(buffer.sub(32,34));
|
|
|
|
if (_progdisk != _numdisk)
|
|
{
|
|
message_box(FR("Il dischetto inserito (%d) non rispecchia la giusta sequenza (%d)"), _numdisk, _progdisk);
|
|
_sequenza = FALSE;
|
|
return TRUE;
|
|
}
|
|
else
|
|
_sequenza = TRUE;
|
|
|
|
if (letti == 0)
|
|
return error_box(TR("Rilevati ERRORI nel file MARKER: impossibile proseguire"));
|
|
|
|
_nomeid = buffer.sub(0,10);
|
|
_dittainv = atol(buffer.sub(10,15));
|
|
_totrectras = atol(buffer.sub(26,32));
|
|
_numinv = atoi(buffer.sub(15,18));
|
|
tmp = buffer.sub(18,26);
|
|
_datatras = converti(tmp,TRUE);
|
|
|
|
if (_numdisk > 1) //Va fatto solo dal disco 2 in poi
|
|
if (_nomeid != _nomeidp || _dittainv != _dittainvp || _totrectras != _totrectrasp
|
|
|| _numinv != _numinvp || _datatras != _datatrasp)
|
|
return error_box(FR("I dati del marker del disco %d, non corrispondono ai dati del marker del disco 1"), _numdisk);
|
|
|
|
_nomeidp = _nomeid;
|
|
_dittainvp = _dittainv;
|
|
_totrectrasp = _totrectras;
|
|
_numinvp = _numinv;
|
|
_datatrasp = _datatras;
|
|
|
|
if (_numdisk == 1) // Va fatto solo per il primo disco
|
|
{
|
|
_dittaric = leggi_tabella_tras();
|
|
|
|
if (_dittaric != 0)
|
|
{
|
|
if (!prefix().exist(_dittaric))
|
|
return error_box(FR("Gli archivi della ditta %ld non sono presenti su disco"), _dittaric);
|
|
}
|
|
else
|
|
return error_box(TR("Codici NON PRESENTI in tabella ricezione: caricarli e riprovare"));
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
return error_box(FR("Impossibile accedere al file %s"), (const char*)_marker);
|
|
}
|
|
|
|
void TRic_archivi::main_loop()
|
|
{
|
|
if (_ric_auto == 'A')
|
|
{
|
|
_dittaric = get_firm();
|
|
_trasf = _tras_file->path(_dittaric);
|
|
_trasf << "\\trasfer";
|
|
_tras_file->open(_trasf);
|
|
|
|
if (_scelta == 'S')
|
|
{
|
|
trasfer2tempfile();
|
|
_tras_file->close(); // Chiude il trasfer letto dalla directory della ditta
|
|
::remove(_trasf);
|
|
TString80 tab = _tras_file->path(_dittaric);
|
|
TString tabcdx = tab;
|
|
TString tabdbf = tab;
|
|
tabcdx << "\\ttab.cdx";
|
|
tabdbf << "\\ttab.dbf";
|
|
::remove(tabcdx);
|
|
::remove(tabdbf);
|
|
}
|
|
else
|
|
if (_scelta == 'P')
|
|
{
|
|
trasfer2tempfile();
|
|
_tras_file->close(); // Chiude il trasfer letto dalla directory della ditta
|
|
::remove(_trasf);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (_scelta == 'S')
|
|
{
|
|
TMask maskera("cg6400b");
|
|
TMask* msk = &maskera;
|
|
|
|
KEY tasto = msk->run();
|
|
if (tasto == K_ENTER)
|
|
{
|
|
componi_path(msk);
|
|
|
|
do
|
|
{
|
|
if (_disketto)
|
|
{
|
|
char drive = msk->get(F_DRIVE)[0];
|
|
if (yesno_box(FR("Inserire il dischetto %d nell' unita' %c"), _numdisk,drive))
|
|
{
|
|
if (!leggi_marker())
|
|
return;
|
|
|
|
if (_sequenza)
|
|
{
|
|
if (video_ripartenza())
|
|
ripristina_trasfer();
|
|
else
|
|
return;
|
|
_numdisk++;
|
|
}
|
|
}
|
|
else
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if (!leggi_marker())
|
|
return;
|
|
|
|
if (_sequenza)
|
|
{
|
|
if (video_ripartenza())
|
|
ripristina_trasfer();
|
|
else
|
|
return;
|
|
_numdisk++;
|
|
}
|
|
else
|
|
return;
|
|
}
|
|
}
|
|
while (_numdisk <= _numtotdisk);
|
|
|
|
trasfer2tempfile();
|
|
set_flag();
|
|
aggiorna_tabella();
|
|
_tras_file->close(); // Chiude il trasfer letto dalla directory della ditta
|
|
::remove(_trasf);
|
|
TFilename tab = _tras_file->path(_dittaric);
|
|
TFilename tabcdx = tab;
|
|
TFilename tabdbf = tab;
|
|
tabcdx << "\\ttab.cdx";
|
|
tabdbf << "\\ttab.dbf";
|
|
::remove(tabcdx);
|
|
::remove(tabdbf);
|
|
}
|
|
}
|
|
else
|
|
if (_scelta == 'P')
|
|
{
|
|
TMask maskera("cg6400b");
|
|
TMask* msk = &maskera;
|
|
|
|
KEY tasto = msk->run();
|
|
|
|
if (tasto == K_ENTER)
|
|
{
|
|
componi_path(msk);
|
|
|
|
do
|
|
{
|
|
if (_disketto)
|
|
{
|
|
char drive = msk->get(F_DRIVE)[0];
|
|
if (yesno_box(FR("Inserire il dischetto %d nell' unita' %c"), _numdisk,drive))
|
|
{
|
|
if (!leggi_marker_rep())
|
|
return;
|
|
|
|
if (_sequenza)
|
|
{
|
|
if (video_ripartenza())
|
|
ripristina_trasfer();
|
|
else
|
|
return;
|
|
_numdisk++;
|
|
}
|
|
}
|
|
else
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if (!leggi_marker_rep())
|
|
return;
|
|
|
|
if (_sequenza)
|
|
{
|
|
if (video_ripartenza())
|
|
ripristina_trasfer();
|
|
else
|
|
return;
|
|
_numdisk++;
|
|
}
|
|
else
|
|
return;
|
|
}
|
|
}
|
|
while (_numdisk <= _numtotdisk);
|
|
|
|
trasfer2tempfile();
|
|
set_flag();
|
|
aggiorna_tabella();
|
|
_tras_file->close(); // Chiude il trasfer letto dalla directory della ditta
|
|
::remove(_trasf);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void TRic_archivi::leggi_trasfer(const char* nome)
|
|
{
|
|
_nultras = 0;
|
|
|
|
_trasf = _tras_file->path(_dittaric);
|
|
_trasf << nome;
|
|
|
|
_tras_file->open(_trasf);
|
|
|
|
if (_tras_file->exist())
|
|
{
|
|
if (_scelta == 'S')
|
|
{
|
|
if (_tras_file->read_control_rec_t())
|
|
{
|
|
_nultras = _tras_file->nultras();
|
|
_dataultras = _tras_file->dataultras();
|
|
}
|
|
}
|
|
else
|
|
if (_scelta == 'P')
|
|
{
|
|
if (_tras_file->read_control_rec())
|
|
{
|
|
_nultras = _tras_file->nultras();
|
|
_dataultras = _tras_file->dataultras();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Questa funzione ritorna:
|
|
// - 0 se non vengono rilevate condizioni di ripartenza o di trasferimento
|
|
// non completato.
|
|
// - 1 se viene rilevato uno stato di RIPARTENZA CON DATI CONTRADDITORI
|
|
// - 2 se viene rilevato un trasferimento precedente NON COMPLETATO
|
|
|
|
int TRic_archivi::controllo_ripartenza()
|
|
{
|
|
TString std;
|
|
bool flag = FALSE;
|
|
int var = 0;
|
|
|
|
set_firm(_dittaric);
|
|
|
|
TString trasfer;
|
|
trasfer = _tras_file->path(_dittaric);
|
|
trasfer << HEADER;
|
|
|
|
_tras_file->open(trasfer);
|
|
|
|
TConfig conf(CONFIG_DITTA);
|
|
std = conf.get("FlStTra");
|
|
|
|
if (_tras_file->read_control_rec())
|
|
flag = TRUE;
|
|
|
|
if (std == "" && flag)
|
|
var = 1;
|
|
|
|
if (std == "*" && flag)
|
|
{
|
|
TString ult_file = _tras_file->ult_file();
|
|
TString key = _tras_file->key();
|
|
if (ult_file != "" || key != "")
|
|
var = 1;
|
|
}
|
|
|
|
if (std != "" && std != "*")
|
|
var = 2;
|
|
|
|
_tras_file->close();
|
|
|
|
return var;
|
|
}
|
|
|
|
bool TRic_archivi::ripartenza()
|
|
{
|
|
if (_stato_ripartenza == 1)
|
|
return error_box(TR("Rilevato stato di RIPARTENZA CON DATI CONTRADDITORI: procedura interrotta"));
|
|
|
|
if (_stato_ripartenza == 2)
|
|
return error_box(TR("Trasferimento precedente NON COMPLETATO: completarlo prima di questo"));
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TRic_archivi::video_ripartenza()
|
|
{
|
|
TDate dataultras;
|
|
|
|
if (_prima_volta)
|
|
{
|
|
leggi_trasfer("\\trasfer");
|
|
|
|
_prima_volta = FALSE;
|
|
|
|
TMask maskera("cg6400a");
|
|
TMask* msk = &maskera;
|
|
|
|
KEY tasto;
|
|
|
|
ditta_ricevente();
|
|
_stato_ripartenza = controllo_ripartenza();
|
|
|
|
msk->set(F_NOMEID, _nomeid);
|
|
msk->set(F_CODDITTAINV, _dittainv);
|
|
msk->set(F_CODDITTARIC, _dittaric);
|
|
msk->set(F_RAGSOC, _ragsoc_dittar);
|
|
msk->set(F_NULTRASDSK, _numinv);
|
|
TString data1 = _datatras.string();
|
|
msk->set(F_DATAULTRASDSK, data1);
|
|
|
|
if (_nultras != 0)
|
|
{
|
|
msk->set(F_NULTRASTAB, _nultras);
|
|
TString data2 = _dataultras.string();
|
|
msk->set(F_DATAULTRASTAB, data2);
|
|
}
|
|
else
|
|
{
|
|
msk->set(F_NULTRASTAB, _nultras_tab);
|
|
TString data2 = _dataultras_tab.string();
|
|
msk->set(F_DATAULTRASTAB, data2);
|
|
}
|
|
|
|
if (_stato_ripartenza == 0)
|
|
msk->set(F_STATO, "COMPLETO");
|
|
else
|
|
msk->set(F_STATO, "NON COMPLETO");
|
|
|
|
if (_numdisk == 1) // Va fatto solo per il primo disco
|
|
{
|
|
do
|
|
{
|
|
msk->set_handler(baipassa);
|
|
|
|
tasto = msk->run();
|
|
|
|
if (tasto != K_ENTER)
|
|
return FALSE;
|
|
|
|
if (_baipassa)
|
|
return TRUE;
|
|
|
|
if (!ripartenza())
|
|
return FALSE;
|
|
|
|
if (_numinv > (_nultras_tab + 1))
|
|
warning_box(FR("Trasferimento FUORI SEQUENZA: manca un trasferimento intermedio.\n"
|
|
"Numero invio n. %d, ultimo trasferimento n. %d."), _numinv, _nultras_tab);
|
|
else
|
|
if (_numinv < (_nultras_tab +1))
|
|
warning_box(FR("I dischetti risultano GIA' TRASFERITI.\n"
|
|
"Numero invio n. %d, ultimo trasferimento n. %d."), _numinv, _nultras_tab);
|
|
else
|
|
return TRUE;
|
|
}
|
|
while (tasto == K_ENTER);
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool TRic_archivi::baipassa(TMask& m,KEY k)
|
|
{
|
|
if ( (k == K_SHIFT+K_F7) && (app()._stato_ripartenza == 0) )
|
|
app()._baipassa = TRUE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void TRic_archivi::ripristina_trasfer()
|
|
{
|
|
TProgind prg (1,TR("Trasferimento archivi in corso\nPrego attendere"),FALSE, FALSE);
|
|
|
|
if (_numdisk == 1)
|
|
{
|
|
// set_firm(_dittaric);
|
|
fcopy(_trasfer,_trasf,FALSE);
|
|
}
|
|
else
|
|
fcopy(_trasfer,_trasf,TRUE);
|
|
}
|
|
|
|
void TRic_archivi::trasfer2tempfile()
|
|
{
|
|
_trasfhard = _tras_file->path(_dittaric);
|
|
_trasfhard << HEADER;
|
|
switch (_scelta)
|
|
{
|
|
case 'S': _tras_file->fcopytemp(_trasf,_trasfhard); break;
|
|
case 'P': _tras_file->fcopytemp_PC(_trasf,_trasfhard); break;
|
|
default: break;
|
|
}
|
|
}
|
|
|
|
void TRic_archivi::ditta_ricevente()
|
|
{
|
|
_ragsoc_dittar = cache().get(LF_NDITTE, _dittaric).get(NDT_RAGSOC);
|
|
}
|
|
|
|
long TRic_archivi::leggi_tabella_tras()
|
|
{
|
|
TString dep(16);
|
|
long ditta = 0;
|
|
bool agg_fatatt,agg_fatpas;
|
|
|
|
TTable tab_tra ("%TRA");
|
|
|
|
tab_tra.zero();
|
|
dep.format("%10s%05ld", (const char*) _nomeid, _dittainv);
|
|
tab_tra.put("CODTAB", dep);
|
|
if (tab_tra.read() == NOERR)
|
|
{
|
|
ditta = tab_tra.get_long("I0");
|
|
_nultras_tab = tab_tra.get_int ("I1");
|
|
_dataultras_tab = tab_tra.get_date("D0");
|
|
_agg_cau = tab_tra.get_char("S0");
|
|
_agg_clifo = tab_tra.get_char("S1");
|
|
_agg_pcon = tab_tra.get_char("S2");
|
|
_agg_cls = tab_tra.get_char("S3");
|
|
agg_fatatt = tab_tra.get_bool("B0");
|
|
if (agg_fatatt)
|
|
_agg_fatatt = 'X';
|
|
else
|
|
_agg_fatatt = ' ';
|
|
|
|
agg_fatpas = tab_tra.get_bool("B1");
|
|
if (agg_fatpas)
|
|
_agg_fatpas = 'X';
|
|
else
|
|
_agg_fatpas = ' ';
|
|
}
|
|
|
|
return ditta;
|
|
}
|
|
|
|
bool TRic_archivi::set_flag()
|
|
{
|
|
TString sigla;
|
|
long nrec;
|
|
int j;
|
|
int k = 0;
|
|
TString flag;
|
|
TString record;
|
|
TString ana_com,pcon_cau;
|
|
TString uselab;
|
|
bool fatto = TRUE;
|
|
|
|
TConfig conf(CONFIG_DITTA);
|
|
|
|
ana_com = conf.get("AnCfCm","cg");
|
|
pcon_cau = conf.get("PcTcCm","cg");
|
|
|
|
_tras_file->open(_trasfhard);
|
|
|
|
if (_tras_file->exist())
|
|
{
|
|
if (_tras_file->read_control_rec())
|
|
{
|
|
_nultras = _tras_file->nultras();
|
|
_dataultras = _tras_file->dataultras();
|
|
_sigle_file = _tras_file->sigle_file();
|
|
_nrec_file = _tras_file->nrec_file();
|
|
record = _tras_file->record();
|
|
}
|
|
|
|
for (j = 0; j < _sigle_file.len(); j++)
|
|
{
|
|
sigla = _sigle_file.mid(j,1);
|
|
nrec = atol(_nrec_file.mid(k,6));
|
|
|
|
if (fatto)
|
|
{
|
|
if (sigla == "W" || sigla == "P")
|
|
{
|
|
if (nrec > 0 && pcon_cau == "")
|
|
{
|
|
flag = "T";
|
|
fatto = FALSE;
|
|
}
|
|
}
|
|
else
|
|
if (sigla == "A")
|
|
{
|
|
if (nrec > 0 && ana_com == "")
|
|
{
|
|
flag = "T";
|
|
fatto = FALSE;
|
|
}
|
|
}
|
|
else
|
|
if (sigla == "Z" || sigla == "U" || sigla == "B")
|
|
{
|
|
if (nrec > 0)
|
|
{
|
|
flag = "C";
|
|
fatto = FALSE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
flag = "*";
|
|
fatto = FALSE;
|
|
}
|
|
|
|
if (flag == "T")
|
|
uselab = sigla;
|
|
else
|
|
uselab = "";
|
|
}
|
|
|
|
if (sigla == "W" || sigla == "P")
|
|
{
|
|
if (pcon_cau == "X")
|
|
{
|
|
_sigle_file.overwrite(" ",j);
|
|
_nrec_file.overwrite("000000",k);
|
|
}
|
|
}
|
|
|
|
if (sigla == "A")
|
|
{
|
|
if (ana_com == "X")
|
|
{
|
|
_sigle_file.overwrite(" ",j);
|
|
_nrec_file.overwrite("000000",k);
|
|
}
|
|
}
|
|
k += 6;
|
|
}
|
|
|
|
record.overwrite(_sigle_file,86);
|
|
record.overwrite(_nrec_file,95);
|
|
|
|
TString agg(7);
|
|
|
|
agg[0] = _agg_cls;
|
|
agg[1] = _agg_cau;
|
|
agg[2] = _agg_clifo;
|
|
agg[3] = _agg_pcon;
|
|
agg[4] = _agg_fatatt;
|
|
agg[5] = _agg_fatpas;
|
|
agg[6] = '\0';
|
|
|
|
record.overwrite(agg,234);
|
|
record.overwrite(uselab,240);
|
|
TString str;
|
|
str.spaces(60);
|
|
record.overwrite(str,241);
|
|
|
|
const int size = 1024;
|
|
|
|
if (!_tras_file->write_control_rec(record, size))
|
|
return FALSE;
|
|
}
|
|
|
|
conf.set("FlStTra", flag);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void TRic_archivi::aggiorna_tabella()
|
|
{
|
|
TTable tab_tra("%TRA");
|
|
TString16 dep;
|
|
dep.format("%10s%05ld", (const char*) _nomeid, _dittainv);
|
|
tab_tra.put("CODTAB", dep);
|
|
if (tab_tra.read() == NOERR)
|
|
{
|
|
tab_tra.put("I1", (long)_nultras);
|
|
tab_tra.put("D0", _dataultras);
|
|
tab_tra.rewrite();
|
|
}
|
|
}
|
|
|
|
int cg6400 (int argc, char* argv[])
|
|
{
|
|
char p3 = '\0';
|
|
|
|
if (argc > 4)
|
|
p3 = *argv[3];
|
|
|
|
TRic_archivi* main_app = new TRic_archivi(*argv[2],p3);
|
|
main_app->run(argc, argv,main_app->_titolo);
|
|
delete main_app;
|
|
return TRUE;
|
|
}
|