Aggiunti programmi di ricezione contabile

git-svn-id: svn://10.65.10.50/trunk@1165 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1995-03-24 11:23:24 +00:00
parent 6a9d1d2c3f
commit 02732528b6
27 changed files with 6739 additions and 3 deletions

@ -11,8 +11,18 @@ int main(int argc,char** argv)
{
case 1:
cg2200(argc, argv); break;
case 2:
cg2300(argc, argv); break;
case 3:
cg2400(argc, argv); break;
case 5:
cg2600(argc, argv); break;
case 6:
cg2700(argc, argv); break;
case 7:
cg2800(argc, argv); break;
default:
cg2100(argc,argv); break;
cg2100(argc, argv); break;
}
return 0;
}

@ -3,5 +3,10 @@
int cg2100(int argc, char** argv);
int cg2200(int argc, char** argv);
int cg2300(int argc, char* argv[]);
int cg2400(int argc, char* argv[]);
int cg2600(int argc, char* argv[]);
int cg2700(int argc, char* argv[]);
int cg2800(int argc, char* argv[]);
#endif // __CG2_H

@ -1,10 +1,39 @@
#include <default.url>
MENU TASK_MENUBAR
SUBMENU MENU_FILE "~File"
SUBMENU MENU_FILE "~File"
MENUBAR MENU_BAR(1)
MENU MENU_BAR(1)
SUBMENU MENU_FILE "~File"
SUBMENU MENU_FILE "~File"
MENUBAR MENU_BAR(2)
MENU MENU_BAR(2)
SUBMENU MENU_FILE "~File"
MENUBAR MENU_BAR(3)
MENU MENU_BAR(3)
SUBMENU MENU_FILE "~File"
MENUBAR MENU_BAR(4)
MENU MENU_BAR(4)
SUBMENU MENU_FILE "~File"
MENUBAR MENU_BAR(5)
MENU MENU_BAR(5)
SUBMENU MENU_FILE "~File"
MENUBAR MENU_BAR(6)
MENU MENU_BAR(6)
SUBMENU MENU_FILE "~File"
MENUBAR MENU_BAR(7)
MENU MENU_BAR(7)
SUBMENU MENU_FILE "~File"

103
cg/cg2300.cpp Executable file

@ -0,0 +1,103 @@
#include <applicat.h>
#include <tabapp.h>
#include <strings.h>
#include <stdtypes.h>
#include <tabutil.h>
#include <utility.h>
#include <prefix.h>
#include "..\ba\batbtra.h"
class Tabtra_application : public Tab_application
{
private:
TMask* _msk;
TString _tabname;
public:
bool user_create();
virtual void init_query_mode(TMask&);
virtual void init_modify_mode(TMask&);
virtual void init_insert_mode(TMask&);
Tabtra_application() {}
virtual ~Tabtra_application() {}
};
HIDDEN inline Tabtra_application& app() {return (Tabtra_application&) main_app();}
HIDDEN bool ultimo_handler(TMask& m, KEY k)
{
if (k == K_SHIFT+K_F12)
{
m.enable(F_NUMULTRAS);
m.enable(F_DATAULTRAS);
}
return TRUE;
}
HIDDEN bool ditta_handler(TMask_field& f, KEY k)
{
if (k == K_TAB)
{
long codditta = f.mask().get_long(F_CODDITTARIC);
if (codditta != 0)
{
if (prefhndl->exist(codditta))
return TRUE;
else
{
f.error_box("La ditta selezionata non e' abilitata per la contabilita' ");
return FALSE;
}
}
}
return TRUE;
}
void Tabtra_application::init_query_mode(TMask& m)
{
m.disable(F_NUMULTRAS);
m.disable(F_DATAULTRAS);
}
void Tabtra_application::init_modify_mode(TMask& m)
{
m.disable(F_NUMULTRAS);
m.disable(F_DATAULTRAS);
}
void Tabtra_application::init_insert_mode(TMask& m)
{
m.disable(F_NUMULTRAS);
m.disable(F_DATAULTRAS);
}
bool Tabtra_application::user_create()
{
Tab_application::user_create();
_msk = get_mask();
_tabname = get_tabname();
if (_tabname == "%TRA")
{
_msk->set_handler(ultimo_handler);
_msk->set_handler(F_CODDITTARIC, ditta_handler);
}
return TRUE;
}
cg2300(int argc, char* argv[])
{
Tabtra_application a;
a.run(argc,argv, "Tabelle");
return 0;
}

589
cg/cg2400.cpp Executable file

@ -0,0 +1,589 @@
// Ricezione dati da sistema
#include <mask.h>
#include <printapp.h>
#include <relation.h>
#include <tabutil.h>
#include <utility.h>
#include <config.h>
#include <urldefid.h>
#include <mailbox.h>
#include <execp.h>
#include <prefix.h>
#include <scanner.h>
#include <nditte.h>
#include "cglib04.h"
//#include "ba7.h"
#include "cg2400.h"
TString80 TEMP;
class TRic_sistema : public TApplication
{
TTable* _tab_tra;
TTransfer_file* _tras_file;
int _numtotdisk,_progdisk,_numdisk,_numinv,_numinvp,_nultras;
int _stato_ripartenza,_nultras_tab;
bool _sequenza,_disketto;
bool _prima_volta,_baipassa;
TString _nomeid,_nomeidp,_marker,_trasf,_trasfer,_pathname,_ragsoc_dittar;
long _dittainv,_dittainvp,_dittaric,_totrectras,_totrectrasp;
TDate _datatras,_datatrasp,_dataultras_tab,_dataultras;
TString _sigle_file,_nrec_file;
char _agg_cau,_agg_pcon,_agg_cls,_agg_clifo;
bool _agg_fatatt,_agg_fatpas;
public:
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG m);
bool main_loop();
bool leggi_marker();
void leggi_trasfer();
void ripristina_trasfer();
long leggi_tabella_tras();
void componi_path(TMask&);
bool video_ripartenza();
void ditta_ricevente();
bool ripartenza();
bool set_flag();
void aggiorna_tabella();
const char* converti (TString& data_AS400);
static bool baipassa(TMask& m,KEY k);
TRic_sistema() {};
};
HIDDEN TRic_sistema& app() { return (TRic_sistema &) main_app(); }
bool TRic_sistema::create()
{
TApplication::create();
_tab_tra = new TTable ("%TRA");
_tras_file = new TTransfer_file();
_numdisk = 1;
_prima_volta = TRUE;
_nultras = 0;
_nultras_tab = 0;
_baipassa = FALSE;
dispatch_e_menu (BAR_ITEM(1));
return TRUE;
}
bool TRic_sistema::destroy()
{
delete _tab_tra;
delete _tras_file;
return TApplication::destroy();
}
void TRic_sistema::componi_path(TMask& msk)
{
TString path,drive;
int pos;
path = msk.get(F_PATHNAME);
drive = msk.get(F_DRIVE);
pos = path.find(':');
if (drive == "A:" || drive == "B:" || drive == "D:" || drive == "E:")
_disketto = TRUE;
else
_disketto = FALSE;
if (pos)
path = path.mid(pos+1);
if (path != "")
{
_marker << drive << "\\" << path << "\\marker";
_trasfer << drive << "\\" << path << "\\trasfer";
if (!_disketto)
_pathname << drive << "\\" << path;
}
else
{
_marker << drive << "\\marker";
_trasfer << drive << "\\trasfer";
if (!_disketto)
_pathname << drive << "\\";
}
}
const char* TRic_sistema::converti (TString& data_AS400)
{
TEMP = data_AS400.mid(4,2);
TEMP << "-" << data_AS400.mid(2,2);
TEMP << "-" << data_AS400.mid(0,2);
return TEMP;
}
bool TRic_sistema::leggi_marker()
{
TString16 tmp;
if (!fexist(_marker))
{
if (_disketto)
return error_box("File marker non presente sul dischetto %d: impossibile proseguire", _numdisk);
else
return error_box("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 (_progdisk != _numdisk)
{
message_box("Il dischetto inserito non rispecchia la giusta sequenza");
_sequenza = FALSE;
fclose(i);
return TRUE;
}
else
_sequenza = TRUE;
if (letti == 0)
return error_box("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));
tmp = buffer.sub(17,23);
_datatras = converti(tmp);
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("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 (!prefhndl->exist(_dittaric))
return error_box("Libreria archivi ditta non presente su disco");
}
else
return error_box("Codici NON PRESENTI in tabella ricezione: caricarli e riprovare");
}
return TRUE;
}
return FALSE;
}
bool TRic_sistema::main_loop()
{
TMask msk ("cg2400b");
KEY tasto;
tasto = msk.run();
if (tasto == K_ENTER)
{
componi_path(msk);
do
{
if (_disketto)
{
char drive = msk.get(F_DRIVE)[0];
if (yesno_box("Inserire il dischetto %d nell' unita' %c", _numdisk,drive))
{
if (!leggi_marker())
return FALSE;
if (_sequenza)
{
if (video_ripartenza())
ripristina_trasfer();
else
return FALSE;
set_flag();
aggiorna_tabella();
_tras_file->close(); // Chiude il trasfer letto dalla directory della ditta
_numdisk++;
}
}
else
return FALSE;
}
else
{
if (!leggi_marker())
return FALSE;
if (_sequenza)
{
if (video_ripartenza())
ripristina_trasfer();
else
return FALSE;
_tras_file->close(); // Chiude il trasfer letto da disco
set_flag();
aggiorna_tabella();
_tras_file->close(); // Chiude il trasfer letto dalla directory della ditta
_numdisk++;
}
else
return FALSE;
}
}
while (_numdisk <= _numtotdisk);
}
return FALSE;
}
void TRic_sistema::leggi_trasfer()
{
_nultras = 0;
_trasf = _tras_file->path(_dittaric);
_trasf << "\\trasfer";
_tras_file->open(_trasf);
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();
}
}
}
bool TRic_sistema::ripartenza()
{
if (_stato_ripartenza == 1)
return error_box("Rilevato stato di RIPARTENZA CON DATI CONTRADDITORI: procedura interrotta");
if (_stato_ripartenza == 2)
return error_box("Trasferimento precedente NON COMPLETATO: completarlo prima di questo");
return TRUE;
}
bool TRic_sistema::video_ripartenza()
{
TDate dataultras;
if (_prima_volta)
{
leggi_trasfer();
_prima_volta = FALSE;
TMask msk ("cg2400a");
KEY tasto;
ditta_ricevente();
_stato_ripartenza = _tras_file->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 == 1 || _stato_ripartenza == 2 )
msk.set(F_STATO, "NON COMPLETA");
else
if (_stato_ripartenza == 0)
msk.set(F_STATO, "COMPLETA");
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("Trasferimento FUORI SEQUENZA: manca un trasferimento intermedio");
else
if (_numinv < (_nultras_tab +1))
warning_box("I dischetti risultano GIA' TRASFERITI");
else
return TRUE;
}
while (tasto == K_ENTER);
}
}
return TRUE;
}
bool TRic_sistema::baipassa(TMask& m,KEY k)
{
if (k == K_SHIFT+K_F7)
app()._baipassa = TRUE;
else
app()._baipassa = FALSE;
return FALSE;
}
void TRic_sistema::ripristina_trasfer()
{
TString ditta,app;
if (_numdisk == 1)
set_firm(_dittaric);
// app.format("%05da", _dittaric);
// ditta << "C:\\prassi\\" << app << "\\trasfer";
// fcopy(_trasfer,/*ditta*/_trasf,TRUE);
_tras_file->fcopytemp(_trasfer, _trasf, TRUE);
}
void TRic_sistema::ditta_ricevente()
{
TLocalisamfile nditte (LF_NDITTE);
nditte.setkey(1);
nditte.zero();
nditte.put(NDT_CODDITTA, _dittaric);
if (nditte.read() == NOERR)
_ragsoc_dittar = nditte.get(NDT_RAGSOC);
}
long TRic_sistema::leggi_tabella_tras()
{
TString dep;
long ditta = 0;
_tab_tra->zero();
dep = format("%10s%05d", (const char*) _nomeid, _dittainv);
_tab_tra->put("CODTAB", (const char*) 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");
_agg_fatpas = _tab_tra->get_bool("B1");
}
return ditta;
}
bool TRic_sistema::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(_trasf);
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();
// La fill_index e' richiamata dentro a read_control_rec
// _tras_file->fill_index(_sigle_file,_nrec_file);
}
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 == "A")
{
if (nrec > 0)
{
flag = "C";
fatto = FALSE;
}
}
else
{
flag = "*";
fatto = FALSE;
}
uselab = sigla;
}
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,38);
record.overwrite(_nrec_file,47);
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);
record.overwrite(" ",241);
const int size = 256;
if (!_tras_file->write_control_rec(record, size))
return FALSE;
}
conf.set("FlStTra", flag);
return TRUE;
}
void TRic_sistema::aggiorna_tabella()
{
TString dep;
_tab_tra->zero();
dep = format("%10s%05d", (const char*) _nomeid, _dittainv);
_tab_tra->put("CODTAB", (const char*) dep);
if (_tab_tra->read() == NOERR)
{
_tab_tra->put("I1", (long)_nultras);
_tab_tra->put("D0", _dataultras);
_tab_tra->rewrite();
}
}
bool TRic_sistema::menu(MENU_TAG m)
{
if (m == BAR_ITEM(1))
return main_loop();
return FALSE;
}
int cg2400 (int argc, char* argv[])
{
TRic_sistema a;
a.run(argc, argv,"Ricezione da sistema");
return TRUE;
}

17
cg/cg2400.h Executable file

@ -0,0 +1,17 @@
// Campi maschera ba7300a
#define F_NOMEID 101
#define F_CODDITTAINV 102
#define F_CODDITTARIC 103
#define F_RAGSOC 104
#define F_NULTRASDSK 105
#define F_NULTRASTAB 106
#define F_DATAULTRASDSK 107
#define F_DATAULTRASTAB 108
#define F_STATO 109
#define F_NOME 110
// Campi maschera ba7300b
#define F_DRIVE 150
#define F_PATHNAME 151

85
cg/cg2400a.uml Executable file

@ -0,0 +1,85 @@
#include "cg2400.h"
PAGE "" -1 -1 70 15
STRING F_NOMEID 10
BEGIN
PROMPT 1 1 "Nome simbolico sistema inviante "
FLAGS "ZD"
END
NUMBER F_CODDITTAINV 5
BEGIN
PROMPT 1 2 "Codice ditta inviante "
FLAGS "ZD"
END
NUMBER F_CODDITTARIC 5
BEGIN
PROMPT 1 4 "Ditta ricevente "
USE LF_NDITTE KEY 1
INPUT CODDITTA F_CODDITTARIC
OUTPUT F_RAGSOC RAGSOC
FLAGS "RDZ"
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 1 5 "Ragione sociale "
FLAGS "D"
END
TEXT DLG_NULL
BEGIN
PROMPT 27 7 "Presente su dischetto"
END
TEXT DLG_NULL
BEGIN
PROMPT 51 7 "Ultimo intrapreso"
END
NUMBER F_NULTRASDSK 3
BEGIN
PROMPT 1 8 "Numero invio "
FLAGS "D"
END
NUMBER F_NULTRASTAB 3
BEGIN
PROMPT 51 8 ""
FLAGS "D"
END
DATE F_DATAULTRASDSK
BEGIN
PROMPT 1 9 "Data limite trasferimento "
FLAGS "D"
END
DATE F_DATAULTRASTAB
BEGIN
PROMPT 51 9 ""
FLAGS "D"
END
STRING F_STATO 14
BEGIN
PROMPT 1 10 "Stato del trasferimento "
FLAGS "D"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

36
cg/cg2400b.uml Executable file

@ -0,0 +1,36 @@
#include "cg2400.h"
PAGE "" -1 -1 44 8
LIST F_DRIVE 2
BEGIN
PROMPT 2 2 "Disco "
ITEM "A:|A:"
ITEM "B:|B:"
ITEM "C:|C:"
ITEM "D:|D:"
ITEM "E:|E:"
ITEM "F:|F:"
END
STRING F_PATHNAME 30
BEGIN
PROMPT 2 4 "Percorso "
HELP "Specificare il percorso completo dove ricercare il file di ricezione dati"
FLAGS "U"
//VALIDATE FILENAME_FUNC
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

1746
cg/cg2600.cpp Executable file

File diff suppressed because it is too large Load Diff

10
cg/cg2600.h Executable file

@ -0,0 +1,10 @@
// Campi maschera cg2600a.uml
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_NULTRAS 103
#define F_DATAULTRAS 104
#define F_STATO 105
#define F_USELAB 106
#define F_STD 107

63
cg/cg2600a.uml Executable file

@ -0,0 +1,63 @@
#include "cg2600.h"
PAGE "" -1 -1 70 11
NUMBER F_CODDITTA 5
BEGIN
PROMPT 1 1 "Ditta ricevente "
USE LF_NDITTE KEY 1
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
FLAGS "RDZ"
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 1 2 "Ragione sociale "
FLAGS "D"
END
NUMBER F_NULTRAS 3
BEGIN
PROMPT 1 4 "Numero invio "
FLAGS "D"
END
DATE F_DATAULTRAS
BEGIN
PROMPT 1 5 "Data limite trasferimento "
FLAGS "D"
END
STRING F_STD 1
BEGIN
PROMPT 1 6 "Stato del trasferimento "
FLAGS "D"
END
STRING F_USELAB 1
BEGIN
PROMPT 31 6 ""
FLAGS "D"
END
STRING F_STATO 14
BEGIN
PROMPT 35 6 ""
FLAGS "D"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

1075
cg/cg2700.cpp Executable file

File diff suppressed because it is too large Load Diff

8
cg/cg2700.h Executable file

@ -0,0 +1,8 @@
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_LISTA 103
#define F_NUMERO 104
#define F_DATALIMITE 105
#define F_SDT 106
#define F_SIGLA 107
#define F_CHIAVE 108

77
cg/cg2700a.uml Executable file

@ -0,0 +1,77 @@
#include "cg2700.h"
PAGE "" -1 -1 78 17
NUMBER F_CODDITTA 5
BEGIN
PROMPT 2 1 "Ditta ricevente "
FLAGS "FRD"
USE LF_NDITTE KEY 1
CHECKTYPE REQUIRED
INPUT CODDITTA F_CODDITTA
OUTPUT F_CODDITTA CODDITTA
OUTPUT F_RAGSOC RAGSOC
END
STRING F_RAGSOC 50
BEGIN
PROMPT 2 2 "Ragione sociale "
FLAGS "D"
END
RADIOBUTTON F_LISTA 31
BEGIN
PROMPT 2 4 "Scelta controllo "
HELP "Indicare il tipo di controllo"
ITEM "1|Lista controllo movim. errati"
ITEM "2|Lista controllo tutti movim."
END
NUMBER F_NUMERO 3
BEGIN
PROMPT 2 9 "Numero invio "
FLAGS "D"
END
DATE F_DATALIMITE
BEGIN
PROMPT 2 10 "Data limite trasferimento "
FLAGS "D"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 11 "Stato ricezione "
END
STRING F_SDT 1
BEGIN
PROMPT 31 11 ""
FLAGS "D"
END
STRING F_SIGLA 1
BEGIN
PROMPT 34 11 ""
FLAGS "D"
END
STRING F_CHIAVE 15
BEGIN
PROMPT 37 11 ""
FLAGS "D"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

1477
cg/cg2800.cpp Executable file

File diff suppressed because it is too large Load Diff

68
cg/cg2800.h Executable file

@ -0,0 +1,68 @@
// Campi maschera cg2800a.uml
#define F_NUMREG 101
#define F_NUMRIG 102
// Campi maschera cg2800b.uml
#define F_DATAREG 103
#define F_DATADOC 104
#define F_ANNO 105
#define F_REGIVA 106
#define F_PROTIVA 107
#define F_NUPROTIVA 108
#define F_CODCAUS 109
#define F_CODPAG 110
#define F_GRUPPO 111
#define F_CONTO 112
#define F_SOTTOCONTO 113
#define F_SEZIONE 114
#define F_IMPORTO 115
#define F_DESCR 116
#define F_GRUPPOC 117
#define F_CONTOC 118
#define F_SOTTOC 119
#define F_NUMDOC 120
#define F_DESCRREG 121
#define F_DESCRCAU 122
#define F_DESCRPAG 123
#define F_DESCRPARTITA 124
#define F_DESCRCPARTITA 125
// Campi maschera cg2800c.uml
#define F_CODCF 150
#define F_RAGSOCOCC 151
#define F_DATA74TER 152
#define F_INDOCC 153
#define F_LOCALITA 154
#define F_CAPOCC 155
#define F_PROVOCC 156
#define F_IMPONIBILE 157
#define F_IMPOSTA 158
#define F_CODIVA 159
#define F_TIPODET 160
#define F_TIPOCR 161
#define F_RAGSOCCF 162
#define F_DESCRCODIVA 163
// Campi maschera cg2801a.uml
#define F_CODDITTA 200
#define F_RAGDITTA 201
// Campi maschera cg2803a.uml
#define F_CODDITTARIC 250
#define F_RAGSOC 251
#define F_NULTRAS 252
#define F_DATAULTRAS 253
#define F_STD 254
#define F_USELAB 255
#define F_STATO 256
#define F_AGGCAUSALI 257
#define F_AGGCLIFO 258
#define F_AGGPCON 259
#define F_AGGIVD 260
#define F_FATTEM 261
#define F_FATTRIC 262

32
cg/cg2800a.uml Executable file

@ -0,0 +1,32 @@
#include "cg2800.h"
PAGE "" -1 -1 50 8
NUMBER F_NUMREG 6
BEGIN
PROMPT 2 1 "Numero di registrazione "
HELP "Inserire il numero di registrazione che si vuole modificare"
FLAGS "RZ"
CHECKTYPE REQUIRED
END
NUMBER F_NUMRIG 2
BEGIN
PROMPT 2 3 "Numero di riga "
HELP "Inserire il numero della riga desiderata. Se non viene specificata si entra in modifica della testata"
FLAGS "RZ"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

179
cg/cg2800b.uml Executable file

@ -0,0 +1,179 @@
#include "cg2800.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_SAVEREC 10 2
BEGIN
PROMPT -15 -1 "~Registra"
MESSAGE EXIT,K_SAVE
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -45 -1 ""
MESSAGE EXIT,K_ESC
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -55 -1 ""
MESSAGE EXIT,K_QUIT
END
ENDPAGE
PAGE "" -1 -1 78 18
NUMBER F_NUMREG 6
BEGIN
PROMPT 1 1 "Numero registrazione "
HELP "Inserire il numero di registrazione che si vuole modificare"
FLAGS "RZ"
CHECKTYPE REQUIRED
END
NUMBER F_NUMRIG 2
BEGIN
PROMPT 40 1 "Numero di riga "
HELP "Inserire il numero della riga desiderata. Se non viene specificata si entra in modifica della testata"
FLAGS "RZ"
END
DATE F_DATAREG
BEGIN
PROMPT 1 3 "Data registrazione "
END
LIST F_ANNO 10
BEGIN
PROMPT 40 3 "Anno di riferimento "
ITEM "0|Corrente"
ITEM "1|Precedente"
END
DATE F_DATADOC
BEGIN
PROMPT 1 4 "Data del documento "
END
STRING F_NUMDOC 7
BEGIN
PROMPT 40 4 "Numero docomento "
END
STRING F_REGIVA 1
BEGIN
PROMPT 1 6 "Registro IVA "
END
STRING F_DESCRREG 49
BEGIN
PROMPT 28 6 ""
FLAGS "D"
END
NUMBER F_PROTIVA 5
BEGIN
PROMPT 1 7 "Numero protocollo iva "
FLAGS "R"
END
NUMBER F_NUPROTIVA 5
BEGIN
PROMPT 40 7 "Ultimo protoc. riepilog. "
FLAGS "R"
END
STRING F_CODCAUS 3
BEGIN
PROMPT 1 8 "Codice causale "
FLAGS "Z"
END
STRING F_DESCRCAU 49
BEGIN
PROMPT 28 8 ""
FLAGS "D"
END
STRING F_CODPAG 2
BEGIN
PROMPT 1 9 "Codice pagamento "
END
STRING F_DESCRPAG 49
BEGIN
PROMPT 28 9 ""
FLAGS "D"
END
NUMBER F_GRUPPO 2
BEGIN
PROMPT 1 11 "Sottoconto partita "
FLAGS "R"
END
NUMBER F_CONTO 2
BEGIN
PROMPT 29 11 ""
FLAGS "R"
END
NUMBER F_SOTTOCONTO 6
BEGIN
PROMPT 34 11 ""
FLAGS "R"
END
STRING F_DESCRPARTITA 50
BEGIN
PROMPT 1 12 "Descrizione partita "
FLAGS "D"
END
LIST F_SEZIONE 7
BEGIN
PROMPT 1 13 "Sezione "
ITEM "D|Dare"
ITEM "A|Avere"
END
STRING F_DESCR 30
BEGIN
PROMPT 1 14 "Descrizione aggiuntiva "
END
NUMBER F_IMPORTO 15
BEGIN
PROMPT 1 15 "Importo "
FLAGS "R"
PICTURE "."
END
NUMBER F_GRUPPOC 2
BEGIN
PROMPT 1 16 "Sottoconto contropart. "
FLAGS "R"
END
NUMBER F_CONTOC 2
BEGIN
PROMPT 29 16 ""
FLAGS "R"
END
NUMBER F_SOTTOC 6
BEGIN
PROMPT 34 16 ""
FLAGS "R"
END
STRING F_DESCRCPARTITA 50
BEGIN
PROMPT 1 17 "Descrizione c/partita "
FLAGS "D"
END
ENDPAGE
ENDMASK

167
cg/cg2800c.uml Executable file

@ -0,0 +1,167 @@
#include "cg2800.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_SAVEREC 10 2
BEGIN
PROMPT -15 -1 "~Registra"
MESSAGE EXIT,K_SAVE
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -45 -1 ""
MESSAGE EXIT,K_ESC
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -55 -1 ""
MESSAGE EXIT,K_QUIT
END
ENDPAGE
PAGE "" -1 -1 78 18
NUMBER F_NUMREG 6
BEGIN
PROMPT 1 1 "Numero registrazione "
HELP "Inserire il numero di registrazione che si vuole modificare"
FLAGS "RZ"
CHECKTYPE REQUIRED
END
NUMBER F_NUMRIG 2
BEGIN
PROMPT 52 1 "Numero di riga "
HELP "Inserire il numero della riga desiderata. Se non viene specificata si entra in modifica della testata"
FLAGS "RZ"
END
NUMBER F_CODCF 6
BEGIN
PROMPT 1 3 "Codice C/F "
FLAGS "R"
END
STRING F_RAGSOCCF 50
BEGIN
PROMPT 26 3 ""
FLAGS "D"
END
DATE F_DATA74TER
BEGIN
PROMPT 1 4 "Data reg. 74TER "
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 0 6 "Cliente occasionale"
END
STRING F_RAGSOCOCC 25
BEGIN
PROMPT 1 7 "Ragione sociale "
END
STRING F_INDOCC 22
BEGIN
PROMPT 1 8 "Indirizzo "
END
STRING F_LOCALITA 18
BEGIN
PROMPT 1 9 "Localita' "
END
STRING F_CAPOCC 5
BEGIN
PROMPT 46 9 "C.A.P. "
END
STRING F_PROVOCC 2
BEGIN
PROMPT 62 9 "Provincia "
END
NUMBER F_IMPONIBILE 15
BEGIN
PROMPT 1 11 "Imponibile "
FLAGS "R"
PICTURE "."
END
STRING F_CODIVA 2
BEGIN
PROMPT 1 12 "Codice IVA "
FLAGS "Z"
END
STRING F_DESCRCODIVA 48
BEGIN
PROMPT 28 12 ""
FLAGS "D"
END
NUMBER F_IMPOSTA 15
BEGIN
PROMPT 1 13 "Imposta "
FLAGS "R"
PICTURE "."
END
NUMBER F_TIPODET 1
BEGIN
PROMPT 1 14 "Tipo detraibilita' "
SHEET "Codice|Tipo detraibilita'@75"
INPUT F_TIPODET
ITEM " |Regime normale"
ITEM "1|IVA indetraibile su acquisti riferiti a ricavi esenti"
ITEM "3|IVA indicata per passaggi interni al solo fine del calcolo di ventilazione"
ITEM "9|IVA non detraibile per l'articolo 19"
OUTPUT F_TIPODET
END
LIST F_TIPOCR 47
BEGIN
PROMPT 1 15 "Tipo Costo/Ricavo "
ITEM " |0. Acquisti o vendite in genere"
ITEM "1|1. Acquisti beni per rivendita"
ITEM "2|2. Acquisti beni ammortizzabili"
ITEM "3|3. Acquisti beni ammortizzabili con detr. 6%"
ITEM "4|4. Vendita beni strumentali art. 17"
ITEM "5|5. Beni per rivendita da non ventilare"
ITEM "8|8. Altri beni strumentali acquistati in leasing"
ITEM "9|9. Spese generali"
HELP "Tipo Costo/Ricavo del conto"
END
NUMBER F_GRUPPO 2
BEGIN
PROMPT 1 16 "Sottoconto costo/ricavo "
FLAGS "R"
END
NUMBER F_CONTO 2
BEGIN
PROMPT 30 16 ""
FLAGS "R"
END
NUMBER F_SOTTOCONTO 6
BEGIN
PROMPT 35 16 ""
FLAGS "R"
END
STRING F_DESCRPARTITA 50
BEGIN
PROMPT 1 17 "Descrizione sottoconto "
FLAGS "D"
END
ENDPAGE
ENDMASK

241
cg/cg2801.cpp Executable file

@ -0,0 +1,241 @@
#include "cglib04.h"
#include "cg2801.h"
bool TDitta_ric::create()
{
TApplication::create();
_nditte = new TLocalisamfile (LF_PCON);
dispatch_e_menu (BAR_ITEM(1));
return TRUE;
}
bool TDitta_ric::destroy()
{
delete _nditte;
return TApplication::destroy();
}
bool TDitta_ric::set()
{
TMask msk ("cg2801a");
KEY tasto;
tasto = msk.run();
if (tasto != K_ENTER) return FALSE;
_dittaric = msk.get_int(F_CODDITTA);
if (!esegui_controlli()) return FALSE;
set_firm(_dittaric);
return FALSE;
}
bool TDitta_ric::leggi_trasfer()
{
_trasf = _tras_file.path(_dittaric);
_trasf << "\\trasfer";
_tras_file.open(_trasf);
if (_tras_file.exist())
{
if (_tras_file.read_control_rec())
{
_control_rec = _tras_file.record();
_uselab = _tras_file.ult_file();
_key = _tras_file.key();
_sigle_file = _tras_file.sigle_file();
_nrec_file = _tras_file.nrec_file();
}
else
return error_box("Rilevati gravi errori negli archivi:procedura interrotta");
}
else
return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata");
return TRUE;
}
bool TDitta_ric::esegui_controlli()
{
TConfig conf(CONFIG_DITTA);
_std = conf.get("FlStTra");
if (!prefhndl->exist(_dittaric))
return error_box("Codice ditta NON PRESENTE in archivio oppure NON ATTIVATO in contabilita' generale");
if (_std == "")
{
if (!leggi_trasfer())
return FALSE;
if (_uselab != " ")
return error_box("Ultimo trasferimento NON COMPLETATO: completarlo");
}
else
return error_box("Ultimo trasferimento NON COMPLETATO: completarlo");
if (!controlli())
return FALSE;
return TRUE;
}
bool TDitta_ric::controlli()
{
TString ana_com,pcon_cau,uselab;
bool fatto = FALSE;
TConfig conf(CONFIG_DITTA);
ana_com = conf.get("AnCfCm","cg");
pcon_cau = conf.get("PcTcCm","cg");
if (ana_com == "X" || pcon_cau == "X")
{
if (ana_com == "X")
{
int p = _sigle_file.find('A');
if (p >= 0)
{
_sigle_file.overwrite(" ",p);
_nrec_file.overwrite("000000", p * 6);
}
}
if (pcon_cau == "X")
{
int p = _sigle_file.find('W');
if (p >= 0)
{
_sigle_file.overwrite(" ",p);
_nrec_file.overwrite("000000", p * 6);
}
p = _sigle_file.find('P');
if (p >= 0)
{
_sigle_file.overwrite(" ",p);
_nrec_file.overwrite("000000", p * 6);
}
}
_control_rec.overwrite(_sigle_file,38);
_control_rec.overwrite(_nrec_file,47);
_tras_file.write_control_rec(_control_rec,256);
leggi_record_controllo();
}
setta_parametri_record("","T",FALSE);
int k = 0;
for ( int j = 0; j < _sigle_file.len(); j++)
{
TString sigla = _sigle_file.mid(j,1);
long nrec = atol(_nrec_file.mid(k,6));
if (sigla != "Z" && sigla != "U" && sigla != "B")
{
if (nrec != 0)
{
uselab = sigla;
_control_rec.overwrite(uselab,240);
_control_rec.overwrite(" ",241);
fatto = TRUE;
break;
}
}
k += 6;
}
if (!fatto)
{
int p = _sigle_file.find('Z');
if (p >= 0)
{
setta_parametri_record("","C",FALSE);
_control_rec.overwrite(" ",240);
_control_rec.overwrite(" ",241);
}
else
{
setta_parametri_record("","*",FALSE);
_control_rec.overwrite(" ",240);
_control_rec.overwrite(" ",241);
fremove(_trasf);
setta_parametri_record(""," ",FALSE);
}
}
char agg_cau = _control_rec.sub(235,236)[0];
char agg_clifo = _control_rec.sub(236,237)[0];
char agg_pcon = _control_rec.sub(237,238)[0];
if (agg_cau != ' ')
agg_cau = 'D';
if (agg_clifo != ' ')
agg_clifo = 'D';
if (agg_pcon != ' ')
agg_pcon = 'D';
TString agg(4);
agg[0] = agg_cau;
agg[1] = agg_clifo;
agg[2] = agg_pcon;
agg[3] = '\0';
_control_rec.overwrite(agg,235);
const int size = 256;
if (!_tras_file.write_control_rec(_control_rec, size))
return FALSE;
TConfig cfd (CONFIG_DITTA);
TString std = cfd.get("FlStTra");
if (std == "")
return error_box ("Non risultano TRASFERIMENTI ATTIVI sulla ditta richiesta");
return TRUE;
}
void TDitta_ric::leggi_record_controllo()
{
_tras_file.read_control_rec();
_control_rec = _tras_file.record();
}
void TDitta_ric::setta_parametri_record(const TString& sigla,const TString& flag,bool uselab)
{
TConfig conf (CONFIG_DITTA);
conf.set("FlStTra", flag);
if (uselab)
{
leggi_record_controllo();
_control_rec.overwrite(sigla,240);
const int size = 256;
_tras_file.write_control_rec(_control_rec, size);
}
}
bool TDitta_ric::menu(MENU_TAG m)
{
if (m == BAR_ITEM(1))
return set();
return FALSE;
}

43
cg/cg2801.h Executable file

@ -0,0 +1,43 @@
// Scelta ditta per ricezione
#include <mask.h>
#include <applicat.h>
#include <relation.h>
#include <tabutil.h>
#include <utility.h>
#include <config.h>
#include <urldefid.h>
#include <execp.h>
#include <prefix.h>
#include <lffiles.h>
#include <nditte.h>
#include "cg2800.h"
//#include "cglib04.h"
class TDitta_ric : public TApplication
{
TLocalisamfile* _nditte;
TTransfer_file _tras_file;
TString _trasf,_std,_uselab,_record,_nrec_file,_sigle_file,_key;
long _dittaric;
TString _control_rec;
public:
TString _titolo;
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG m);
bool set();
bool esegui_controlli();
bool leggi_trasfer();
bool controlli();
void leggi_record_controllo();
void setta_parametri_record(const TString& sigla,const TString& flag,bool uselab);
TDitta_ric() {};
};

47
cg/cg2801a.uml Executable file

@ -0,0 +1,47 @@
#include "cg2800.h"
PAGE "Selezione Ditta" -1 -1 64 6
NUMBER F_CODDITTA 5
BEGIN
PROMPT 1 1 "Codice "
HELP "Codice della ditta da attivare"
FLAGS "FR"
USE LF_NDITTE KEY 1
INPUT CODDITTA F_CODDITTA
DISPLAY "Codice" CODDITTA
DISPLAY "Ragione sociale@50" RAGSOC
OUTPUT F_CODDITTA CODDITTA
OUTPUT F_RAGDITTA RAGSOC
CHECKTYPE NORMAL
WARNING "Ditta assente"
KEY 1
GROUP 1
END
STRING F_RAGDITTA 50
BEGIN
PROMPT 1 2 "Rag. Soc. "
USE LF_NDITTE KEY 2
HELP "Ragione sociale della ditta da selezionare"
INPUT RAGSOC F_RAGDITTA
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice" CODDITTA
COPY OUTPUT F_CODDITTA
KEY 2
GROUP 1
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

363
cg/cg2802.cpp Executable file

@ -0,0 +1,363 @@
#include "cglib04.h"
#include "cg2802.h"
HIDDEN int date2esc(const TDate& d, int* prevesc)
{
if (prevesc) *prevesc = 0;
TTable esc("ESC");
for (int err = esc.first(); err == NOERR; err = esc.next())
{
const TDate ia(esc.get("D0")); // Data inizio esercizio
const TDate fa(esc.get("D1")); // Data fine esercizio
const anno = esc.get_int("CODTAB");
if (d >= ia && d <= fa)
return anno;
if (prevesc) *prevesc = anno;
}
return 0;
}
bool TAnn_mov::create()
{
TApplication::create();
_pcon = new TLocalisamfile (LF_PCON);
_clifo = new TLocalisamfile (LF_CLIFO);
TString80 tmpmov = "%";
tmpmov << get_firm_dir();
tmpmov << "\\" << TEMP_MOV;
TString80 tmprmov = "%";
tmprmov << get_firm_dir();
tmprmov << "\\" << TEMP_RMOV;
TString80 tmprmoviva = "%";
tmprmoviva << get_firm_dir();
tmprmoviva << "\\" << TEMP_RMOVIVA;
_tmov = new TIsamtempfile(LF_MOV, tmpmov, 0);
_trmov = new TIsamtempfile(LF_RMOV, tmprmov, 0);
_tiva = new TIsamtempfile(LF_RMOVIVA, tmprmoviva, 0);
_rec_mov = new TRectype (LF_MOV);
dispatch_e_menu (BAR_ITEM(1));
return TRUE;
}
bool TAnn_mov::destroy()
{
delete _pcon;
delete _clifo;
delete _tmov;
delete _trmov;
delete _tiva;
delete _rec_mov;
return TApplication::destroy();
}
bool TAnn_mov::set()
{
_dittaric = get_firm();
if (!esegui_controlli()) return FALSE;
if (!video())
return FALSE;
return FALSE;
}
bool TAnn_mov::video()
{
TMask msk ("cg2802a");
KEY tasto;
do
{
tasto = msk.run();
if (tasto != K_ENTER) return FALSE;
if (esiste_testata_mov(msk))
{
TMask mask ("cg2802b");
mask.set_handler(F_REGIVA, codice_registro_hnd);
mask.set_handler(F_CODCAUS, codice_causale_hnd);
setta_campi_maschera(mask);
tasto = mask.run();
switch (tasto)
{
case K_ESC :
break;
case K_QUIT :
break;
case K_SAVE :
{
annulla(mask);
}
break;
default:
break;
}
}
}
while (tasto != K_QUIT); //K_ENTER
return TRUE;
}
bool TAnn_mov::esiste_testata_mov(TMask& m)
{
long nrec;
_numreg = m.get_long(F_NUMREG);
_tmov->setkey(1);
_tmov->zero();
_tmov->put(MOV_NUMREG, _numreg);
if (_tmov->read() == NOERR)
{
nrec = _tmov->get_long(MOV_NUMGIO);
nrec += _tras_file.start('Z');
_tras_file.read_rec_trasfer(nrec);
_record = _tras_file.read_rec();
char annullato = _record.sub(248,249)[0];
if (annullato == 'A')
return error_box("Registrazione presente ma gia' ANNULLATA in precedenza");
*_rec_mov = _tmov->curr();
}
else
return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento");
return TRUE;
}
void TAnn_mov::setta_campi_maschera(TMask& m)
{
TDate datareg (_rec_mov->get_date(MOV_DATAREG));
TDate datadoc (_rec_mov->get_date(MOV_DATADOC));
TString numdoc = _rec_mov->get (MOV_NUMDOC);
TString regiva = _rec_mov->get (MOV_REG);
regiva.trim();
long protiva = _rec_mov->get_long(MOV_PROTIVA);
TString codcaus = _rec_mov->get (MOV_CODCAUS);
m.set(F_NUMREG, _numreg);
m.set(F_DATAREG, datareg.string());
m.set(F_DATADOC, datadoc.string());
m.set(F_NUMDOC, numdoc);
m.set(F_REGIVA, regiva);
m.set(F_PROTIVA, protiva);
m.set(F_CODCAUS, codcaus);
m.disable(F_NUMREG);
m.disable(F_DATAREG);
m.disable(F_DATADOC);
m.disable(F_NUMDOC);
m.disable(F_REGIVA);
m.disable(F_PROTIVA);
m.disable(F_CODCAUS);
}
void TAnn_mov::annulla(TMask& m)
{
TRectype* rec_rmov,* rec_riva;
rec_rmov = new TRectype (LF_RMOV);
long numreg = m.get_long(F_NUMREG);
_trmov->setkey(1);
_trmov->zero();
_trmov->put(RMV_NUMREG, numreg);
*rec_rmov = _trmov->curr();
for (_trmov->read(); !_trmov->eof(); _trmov->next())
{
if (_trmov->curr() > *rec_rmov) break;
long numrec = _trmov->get_int(RMV_ANNOES);
numrec += _tras_file.start('Z');
_tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota
_tras_file.put("A","Z1",51,numrec);
_tras_file.write(numrec);
}
delete rec_rmov;
rec_riva = new TRectype (LF_RMOVIVA);
_tiva->setkey(1);
_tiva->zero();
_tiva->put(RMI_NUMREG, numreg);
*rec_riva = _tiva->curr();
for (_tiva->read(); !_tiva->eof(); _tiva->next())
{
if (_tiva->curr() > *rec_riva) break;
long numrec = _tiva->get_int(RMI_ANNOES);
numrec += _tras_file.start('U');
_tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota
_tras_file.put("A","U1",51,numrec);
_tras_file.write(numrec);
}
delete rec_riva;
}
bool TAnn_mov::leggi_trasfer()
{
_trasf = _tras_file.path(_dittaric);
_trasf << "\\trasfer";
_tras_file.open(_trasf);
if (_tras_file.exist())
{
if (_tras_file.read_control_rec())
_control_rec = _tras_file.record();
else
return error_box("Rilevati gravi errori negli archivi:procedura interrotta");
}
else
return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata");
return TRUE;
}
bool TAnn_mov::codice_registro_hnd(TMask_field& f, KEY k)
{
TTable reg ("REG");
TString descr,dep;
if (k == K_TAB)
{
TString codreg = f.get();
char cr = codreg[0];
TDate datareg (f.mask().get(F_DATAREG));
int anno = date2esc(datareg);
if (isdigit(cr))
dep.format("%04d%03c", anno, cr);
else
dep.format("%04d%-3c", anno, cr);
reg.zero();
reg.put("CODTAB", dep);
if (reg.read() == NOERR)
{
descr = reg.get("S0");
f.mask().set(F_DESCRREG, descr);
}
}
return TRUE;
}
bool TAnn_mov::codice_causale_hnd(TMask_field& f, KEY k)
{
TLocalisamfile cau (LF_CAUSALI);
TString descr;
if (k == K_TAB)
{
TString codcau = f.get();
cau.setkey(1);
cau.zero();
cau.put("CODCAUS", codcau);
if (cau.read() == NOERR)
{
descr = cau.get("DESCR");
f.mask().set(F_DESCRCAU, descr);
}
}
return TRUE;
}
bool TAnn_mov::esegui_controlli()
{
TConfig conf(CONFIG_DITTA);
_std = conf.get("FlStTra");
if (!prefhndl->exist(_dittaric))
return error_box("Rilevati GRAVI ERRORI negli archivi: procedura interrotta");
if (!leggi_trasfer())
return FALSE;
if (!controlli())
return FALSE;
return TRUE;
}
bool TAnn_mov::controlli()
{
if (_std == "M")
return error_box("Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato");
if (_std == "*")
{
warning_box("Trasferimento interamente completato: proseguire per cancellare il file");
fremove(_trasf);
setta_parametri_record(""," ",FALSE);
return FALSE;
}
return TRUE;
}
void TAnn_mov::leggi_record_controllo()
{
_tras_file.read_control_rec();
_control_rec = _tras_file.record();
}
void TAnn_mov::setta_parametri_record(const TString& sigla,const TString& flag,bool uselab)
{
TConfig conf (CONFIG_DITTA);
conf.set("FlStTra", flag);
if (uselab)
{
leggi_record_controllo();
_control_rec.overwrite(sigla,240);
const int size = 256;
_tras_file.write_control_rec(_control_rec, size);
}
}
bool TAnn_mov::menu(MENU_TAG m)
{
if (m == BAR_ITEM(1))
return set();
return FALSE;
}

55
cg/cg2802.h Executable file

@ -0,0 +1,55 @@
// Annullamento movimenti da ricevere
#include <mask.h>
#include <applicat.h>
#include <relation.h>
#include <tabutil.h>
#include <utility.h>
#include <config.h>
#include <urldefid.h>
#include <execp.h>
#include <prefix.h>
#include <lffiles.h>
#include <nditte.h>
#include "cg2800.h"
HIDDEN int date2esc(const TDate& d, int* prevesc = NULL);
class TAnn_mov : public TApplication
{
TIsamtempfile* _tmov,* _trmov,* _tiva;
TLocalisamfile* _pcon,* _clifo;
TRectype* _rec_mov;
TTransfer_file _tras_file;
TString _trasf,_std,_uselab,_record,_nrec_file,_sigle_file,_key;
long _dittaric,_numreg;
TString _control_rec;
public:
TString _titolo;
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG m);
bool set();
bool esegui_controlli();
bool leggi_trasfer();
bool controlli();
void leggi_record_controllo();
bool video();
void annulla(TMask& m);
bool esiste_testata_mov(TMask& m);
void setta_campi_maschera(TMask& m);
void setta_parametri_record(const TString& sigla,const TString& flag,bool uselab);
static bool codice_registro_hnd (TMask_field& f, KEY k);
static bool codice_causale_hnd (TMask_field& f, KEY k);
TAnn_mov() {};
};

25
cg/cg2802a.uml Executable file

@ -0,0 +1,25 @@
#include "cg2800.h"
PAGE "" -1 -1 50 6
NUMBER F_NUMREG 6
BEGIN
PROMPT 2 1 "Numero di registrazione "
HELP "Inserire il numero di registrazione che si vuole modificare"
FLAGS "RZ"
CHECKTYPE REQUIRED
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

86
cg/cg2802b.uml Executable file

@ -0,0 +1,86 @@
#include "cg2800.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_SAVEREC 10 2
BEGIN
PROMPT -15 -1 "~Registra"
MESSAGE EXIT,K_SAVE
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -45 -1 ""
MESSAGE EXIT,K_ESC
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -55 -1 ""
MESSAGE EXIT,K_QUIT
END
ENDPAGE
PAGE "" -1 -1 78 18
NUMBER F_NUMREG 6
BEGIN
PROMPT 1 1 "Numero registrazione "
HELP "Inserire il numero di registrazione che si vuole modificare"
FLAGS "RZ"
CHECKTYPE REQUIRED
END
DATE F_DATAREG
BEGIN
PROMPT 1 3 "Data registrazione "
END
STRING F_NUMDOC 7
BEGIN
PROMPT 1 5 "Numero docomento "
END
DATE F_DATADOC
BEGIN
PROMPT 1 6 "Data del documento "
END
STRING F_REGIVA 1
BEGIN
PROMPT 1 8 "Registro IVA "
END
STRING F_DESCRREG 49
BEGIN
PROMPT 28 8 ""
FLAGS "D"
END
NUMBER F_PROTIVA 5
BEGIN
PROMPT 1 9 "Numero protocollo iva "
FLAGS "R"
END
STRING F_CODCAUS 3
BEGIN
PROMPT 1 11 "Codice causale "
FLAGS "Z"
END
STRING F_DESCRCAU 49
BEGIN
PROMPT 28 11 ""
FLAGS "D"
END
STRING F_DESCR 30
BEGIN
PROMPT 1 13 "Descrizione aggiuntiva "
END
ENDPAGE
ENDMASK

100
cg/cg2803a.uml Executable file

@ -0,0 +1,100 @@
#include "cg2800.h"
PAGE "" -1 -1 78 20
NUMBER F_CODDITTARIC 5
BEGIN
PROMPT 1 1 "Ditta ricevente "
USE LF_NDITTE KEY 1
INPUT CODDITTA F_CODDITTARIC
OUTPUT F_RAGSOC RAGSOC
FLAGS "RDZ"
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 1 2 "Ragione sociale "
FLAGS "D"
END
NUMBER F_NULTRAS 3
BEGIN
PROMPT 1 4 "Numero ultimo invio ricevuto "
END
DATE F_DATAULTRAS
BEGIN
PROMPT 1 6 "Data ultimo invio ricevuto "
END
STRING F_STD 1
BEGIN
PROMPT 1 8 "Stato del trasferimento "
END
STRING F_USELAB 1
BEGIN
PROMPT 34 8 ""
END
STRING F_STATO 14
BEGIN
PROMPT 38 8 ""
END
LIST F_AGGCAUSALI 6
BEGIN
PROMPT 1 10 "Aggiornamento causali gia' presenti "
ITEM "N|No"
ITEM "D|Descr."
ITEM "T|Tutto"
END
LIST F_AGGCLIFO 6
BEGIN
PROMPT 1 11 "Aggiornamento Clienti/Fornitori gia' presenti "
ITEM "N|No"
ITEM "D|Descr."
ITEM "T|Tutto"
END
LIST F_AGGPCON 6
BEGIN
PROMPT 1 12 "Aggiornamento voci Piano dei Conti gia' presenti "
ITEM "N|No"
ITEM "D|Descr."
ITEM "T|Tutto"
END
LIST F_AGGIVD 6
BEGIN
PROMPT 1 13 "Aggiornamento classi Piano dei Conti "
ITEM "N|No"
ITEM "D|Descr."
ITEM "T|Tutto"
END
BOOLEAN F_FATTEM
BEGIN
PROMPT 1 14 "Riattribuzione num. protocollo su fatture emesse "
END
BOOLEAN F_FATTRIC
BEGIN
PROMPT 1 15 "Riattribuzione num. protocollo su fatture ricevute "
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK