Patch level : 10.0 854

Files correlati     : tc2.exe
Ricompilazione Demo : [ ]
Commento            :

Tabelle di riclassificlazione per trasferimento a IPSOA


git-svn-id: svn://10.65.10.50/branches/R_10_00@21264 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2010-12-07 17:00:51 +00:00
parent 3c7ec717e2
commit 6e0819cd50
33 changed files with 982 additions and 2199 deletions

View File

@ -11,9 +11,9 @@
#define F_RIPRISTINO 121 #define F_RIPRISTINO 121
#define F_ULTINVIO 122 #define F_ULTINVIO 122
#define F_EMCAU 123 #define F_EMCAU 123
#define F_LICVPC1 124 #define F_LIVPC1 124
#define F_LICVPC2 125 #define F_LIVPC2 125
#define F_LICVPC3 126 #define F_LIVPC3 126
#define F_LICVPC4 127 #define F_LIVPC4 127
#define F_LICVPC5 128 #define F_LIVPC5 128
#define F_LICVPC6 129 #define F_LIVPC6 129

View File

@ -7,15 +7,11 @@ int main(int argc, char** argv)
const int op = argc < 2 ? 0 : argv[1][1]-'0'; const int op = argc < 2 ? 0 : argv[1][1]-'0';
switch (op) switch (op)
{ {
// case 1: tc2200(argc,argv); break; case 2: tc2300(argc,argv); break; // parametri ditta
case 2: tc2300(argc,argv); break; // parametri ditta
// case 3: tc2400(argc,argv); break;
case 4: tc2500(argc,argv); break; //gestore tabelle multirel case 4: tc2500(argc,argv); break; //gestore tabelle multirel
case 5: tc2600(argc,argv); break; //importazione PCon, Cuas, CodIVA
case 6: tc2700(argc,argv); break; //esportazione contabilita' a TeamSystem case 6: tc2700(argc,argv); break; //esportazione contabilita' a TeamSystem
case 7: tc2800(argc,argv); break; // Riclassificazione conti TeamSystem case 7: tc2800(argc,argv); break; // Riclassificazione conti TeamSystem
case 8: tc2900(argc,argv); break; // COnverione archivi CAMPO default: ; tc2100(argc,argv); break;
default: ; tc2100(argc,argv); break;
} }
exit(0); exit(0);
return 0; return 0;

View File

@ -1,27 +1,117 @@
#include "tc2.h" #include "tc2.h"
#include "tctbico.h"
// gestione tabelle Zucchetti // gestione tabelle Zucchetti
#include <modaut.h> #include <modaut.h>
#include <modtbapp.h> #include <modtbapp.h>
#include <tabutil.h> #include <tabutil.h>
///////////////////////////////////////////////////////////
// TConti_mask
///////////////////////////////////////////////////////////
class TConti_mask : public TMask
{
private:
protected:
public:
TConti_mask(const char * maskname);
~TConti_mask();
};
TConti_mask::TConti_mask(const char * maskname)
: TMask(maskname)
{
TString disp;
int fpos = 0;
int pos = 2;
TFilename tmp;
tmp.tempdir();
tmp.add("tmp.msk");
for (int i = 1; i <= 6; i++)
{
const int len = ini_get_int(CONFIG_DITTA, "tc", "IPLIVPC", 0, i);
const short id = F_CODTAB + i;
if (len <= 0)
{
field(id).hide();
field(id).disable();
}
else
{
ofstream out(tmp);
TString prompt = (i == 1) ? "Codice " : "";
TEdit_field & kfld = efield(id);
kfld.set_prompt(prompt);
pos += prompt.len() + 2;
kfld.set_rect(pos, 2, len, 1, len);
pos += len + 2;
TString80 fld("CODTAB[");
fld << ++fpos << ',';
fpos += len -1;
fld << fpos << "]";
kfld.set_field(fld);
out << "US &ICO\n";
if (len > 0)
{
if (i > 1)
out << "CO IN " << id - 1 << '\n';
out << "IN " << fld << ' ' << id << '\n';
disp << "DI \"" << prompt << "@" << max(len, prompt.len()) << "\" " << fld << '\n';
out << disp << "DI \"Descrizione@60\" S0\n";
if (i > 1)
out << "CO OU " << id - 1 << '\n';
out << "OU " << id << ' ' << fld << '\n';
}
out << "EN" << '\n';
out.close();
TScanner scan(tmp);
while (scan.pop() != "EN")
kfld.parse_item(scan);
}
}
ofstream out(tmp);
TEdit_field & dfld = efield(F_DESC);
out << "US &ICO KEY 2\n";
out << "IN S0 " << F_DESC << '\n';
out << "DI \"Descrizione@60\" S0\n" << disp;
out << "CO OU " << F_CODTAB1 << '\n';
out << "EN" << '\n';
out.close();
TScanner scan(tmp);
while (scan.pop() != "EN")
dfld.parse_item(scan);
}
TConti_mask::~TConti_mask()
{
}
// applicazione per la gestione delle tabelle di magazzino // applicazione per la gestione delle tabelle di magazzino
class Tab_app_teamsystem : public TTable_module_application class Tab_app_IPSOA : public TTable_module_application
{ {
protected: // TRelation_application protected: // TRelation_application
virtual bool user_create() ; virtual bool user_create() ;
public: public:
Tab_app_teamsystem() {} Tab_app_IPSOA() {}
virtual ~Tab_app_teamsystem() {} virtual ~Tab_app_IPSOA() {}
}; };
HIDDEN inline Tab_app_teamsystem& app() { return (Tab_app_teamsystem&)main_app(); } HIDDEN inline Tab_app_IPSOA& app() { return (Tab_app_IPSOA&)main_app(); }
bool Tab_app_teamsystem::user_create() bool Tab_app_IPSOA::user_create()
{ {
/* /*
la Tab_application::user_create() apre la maschera TMask in modo automatico la Tab_application::user_create() apre la maschera TMask in modo automatico
@ -41,15 +131,18 @@ bool Tab_app_teamsystem::user_create()
if (ok) if (ok)
{ {
//TMask& mask = *set_mask(); TMask& mask = *get_mask(MODE_QUERY);
} TString name = mask.source_file(); name.lower();
if (name.find("ico") >= 0)
set_mask(new TConti_mask(name));
}
return ok; return ok;
} }
int tc2100(int argc, char **argv) int tc2100(int argc, char **argv)
{ {
Tab_app_teamsystem a; Tab_app_IPSOA a;
a.run(argc, argv, TR("Tabella")); a.run(argc, argv, TR("Tabella"));
return 0; return 0;
} }

View File

@ -71,72 +71,58 @@ BEGIN
FIELD IPRCAU FIELD IPRCAU
END END
//???
NUMBER F_EMCAU 3
BEGIN
PROMPT 42 12 "Caus.TS movim.senza causale "
USE &ICA
INPUT CODTAB F_EMCAU
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@60" S0
OUTPUT F_EMCAU CODTAB
CHECKTYPE REQUIRED
FLAGS "Z"
FIELD IPREMCAU
END
BOOLEAN F_RICLVALUTE BOOLEAN F_RICLVALUTE
BEGIN BEGIN
PROMPT 2 14 "Trascodifica valute" PROMPT 42 12 "Trascodifica valute"
FIELD IPRVAL FIELD IPRVAL
END END
NUMBER F_LIVPC1 2 NUMBER F_LIVPC1 2
BEGIN BEGIN
PROMPT 2 16 "Lunghezza livelli piano dei conti : 1 " PROMPT 2 14 "Lunghezza livelli piano dei conti : 1 "
FIELD IPLIVPC[1] FIELD IPLIVPC[1]
END END
NUMBER F_LIVPC2 2 NUMBER F_LIVPC2 2
BEGIN BEGIN
PROMPT 46 16 "2 " PROMPT 46 14 "2 "
FIELD IPLIVPC[2] FIELD IPLIVPC[2]
END END
NUMBER F_LIVPC3 2 NUMBER F_LIVPC3 2
BEGIN BEGIN
PROMPT 52 16 "3 " PROMPT 52 14 "3 "
FIELD IPLIVPC[3] FIELD IPLIVPC[3]
END END
NUMBER F_LIVPC3 2 NUMBER F_LIVPC4 2
BEGIN BEGIN
PROMPT 58 16 "4 " PROMPT 58 14 "4 "
FIELD IPLIVPC[4] FIELD IPLIVPC[4]
END END
NUMBER F_LIVPC5 2 NUMBER F_LIVPC5 2
BEGIN BEGIN
PROMPT 64 16 "5 " PROMPT 64 14 "5 "
FIELD IPLIVPC[5] FIELD IPLIVPC[5]
END END
NUMBER F_LIVPC6 2 NUMBER F_LIVPC6 2
BEGIN BEGIN
PROMPT 70 16 "6 " PROMPT 70 14 "6 "
FIELD IPLIVPC[6] FIELD IPLIVPC[6]
END END
BOOLEAN F_RIPRISTINO BOOLEAN F_RIPRISTINO
BEGIN BEGIN
PROMPT 2 18 "Ripristina alla data" PROMPT 2 16 "Ripristina alla data"
MESSAGE FALSE DISABLE,F_ULTINVIO MESSAGE FALSE DISABLE,F_ULTINVIO
MESSAGE TRUE ENABLE,F_ULTINVIO MESSAGE TRUE ENABLE,F_ULTINVIO
END END
DATE F_ULTINVIO DATE F_ULTINVIO
BEGIN BEGIN
PROMPT 42 18 "Data ultimo invio " PROMPT 42 16 "Data ultimo invio "
FIELD TSULTINV FIELD TSULTINV
FLAGS "D" FLAGS "D"
END END

View File

@ -1,375 +0,0 @@
#include <applicat.h>
#include <automask.h>
#include <progind.h>
#include <reputils.h>
#include <utility.h>
#include <textset.h>
#include <reprint.h>
#include <scanner.h>
#include "tc2.h"
#include "tc2600a.h"
#include "tabmod.h"
///////////////////////////////////////////////
//// CLASSI DERIVATE PER IMPORTAZIONE DATI ////
///////////////////////////////////////////////
/////////////////////////////////////////////////////////////
// Recordset specifici per i dati da trasferire
/////////////////////////////////////////////////////////////
//Piano dei conti
class TImporta_pconto_recordset : public TCSV_recordset
{
public:
TImporta_pconto_recordset(const char * fileName);
};
TImporta_pconto_recordset::TImporta_pconto_recordset(const char * fileName)
: TCSV_recordset("CSV(\"|\")")
{
load_file(fileName);
}
///////////////////////////////////////////////
//// DEFINIZIONE CLASSE TAutomask ////
///////////////////////////////////////////////
class TImportaTS_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TImportaTS_mask();
};
TImportaTS_mask::TImportaTS_mask() :TAutomask ("tc2600a")
{
}
bool TImportaTS_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
switch (f.dlg())
{
//giochetto per avere la lista dei files validi nella directory di trasferimento!
case F_PCONTI:
if (e == fe_button)
{
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"),
"File@32");
TFilename path = get(F_PATH);
path.add("*.txt"); //files delle testate
list_files(path, as.rows_array());
TFilename name;
FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
{
name = *row;
*row = name.name();
}
if (as.run() == K_ENTER)
{
f.set(as.row(as.selected()));
}
}
break;
case F_CAUSALI:
if (e == fe_button)
{
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"),
"File@32");
TFilename path = get(F_PATH);
path.add("*.txt"); //files delle testate
list_files(path, as.rows_array());
TFilename name;
FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
{
name = *row;
*row = name.name();
}
if (as.run() == K_ENTER)
{
f.set(as.row(as.selected()));
}
}
break;
case F_CODIVA:
if (e == fe_button)
{
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"),
"File@32");
TFilename path = get(F_PATH);
path.add("*.txt"); //files delle testate
list_files(path, as.rows_array());
TFilename name;
FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
{
name = *row;
*row = name.name();
}
if (as.run() == K_ENTER)
{
f.set(as.row(as.selected()));
}
}
break;
default:
break;
}
return true;
}
///////////////////////////////////////
// TSkeleton_application
///////////////////////////////////////
class TDocTS : public TSkeleton_application
{
TImportaTS_mask* _msk;
protected:
//metodi che fanno gli inserimenti sulle tabelle di campo
void upload_pconti (const TFilename& file, TLog_report& log) const;
void upload_causali(const TFilename& file, TLog_report& log) const;
void upload_codiva (const TFilename& file, TLog_report& log) const;
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
bool transfer();
TDocTS() {};
};
TDocTS& app() { return (TDocTS&) main_app(); }
//funzione che importa il piano dei conto sulla tabella corretta
void TDocTS::upload_pconti (const TFilename& file, TLog_report& log) const
{
TImporta_pconto_recordset s(file); //crea un recordset con struttura predefinita come indicato nella classe opportuna
TModule_table pconti("TCO");
TProgind pi(s.items(),"Importazione Piano dei Conti in Corso...",true,true);
for (bool ok=s.move_first();ok;ok=s.move_next())
{
if (!pi.addstatus(1))
break;
//salto le righe di testata del file
//per farlo leggo il gruppo e controllo che sia numerico
TString dconto = s.get(1).as_string();
if (dconto.blank() || !isdigit(dconto[1]))
continue;
pconti.zero();
TString4 gr = dconto.left(2); //leggo il gruppo
TString4 co = dconto.mid(3,2); //leggo il conto
TString4 sc = dconto.mid(6,3); //leggo il sottoconto
TString conto = gr; //leggo il gruppo
TString desc = s.get(2).as_string(); //leggo la descrizione
conto << ((co.blank() || co == "**") ? "00" : co);
conto << ((sc.blank() || sc == "***") ? "000" : sc);
pconti.put("CODTAB", conto); //put del gruppo
pconti.put("S0", desc); //put del conto
int err = pconti.write_rewrite(); //Tenta di aggiungere un record ma se esiste gia' lo aggiorna
TString str = "Il Conto ";
str << conto;
if (err == NOERR)
{
str << " è stato inserito";
log.log(0,str);
}
else
{
str << " non è stato inserito, errore " << err;
log.log(2,str);
}
}
return;
}
void TDocTS::upload_causali(const TFilename& file, TLog_report& log) const
{
TScanner s(file); //legge il file che gli passo riga per riga
TString curr = s.line();
TModule_table causa("TCA");
TProgind pi(fsize(file),"Importazione Causali in Corso...",true,true);
while (s.ok())
{
if (!pi.addstatus(s.tellg()))
break;
causa.zero();
curr = s.line();
TString8 cod = curr.mid(1,6);
TString desc = curr.mid(7,16);
//salto le righe di testata del file
cod.trim();
if (cod.blank() || !real::is_natural(cod))
continue;
cod.lpad(3, '0');
if (cod.len() > 3)
{
TString errore = "ERRORE:";
errore <<" la causale con codice " << cod << " non può essere inserita (codice max 3 caratteri)";
log.log(2,errore);
}
causa.put("CODTAB",cod);
causa.put("S0",desc);
int err = causa.write_rewrite(); //Tenta di aggiungere un record ma se esiste gia' lo aggiorna
TString str = "La Causale con codice ";
str << cod;
if (err == NOERR)
{
str << " è stata inserita";
log.log(0,str);
}
else
{
str << " non è stata inserita, errore " << err;
log.log(2,str);
}
}
return;
};
//funzione che importa i codici IVA sulla tabella corretta
void TDocTS::upload_codiva(const TFilename& file, TLog_report& log) const
{
TScanner s(file); //crea un recordset con struttura predefinita come indicato nella classe opportuna
TModule_table iva("TIV"); //instanzio l'ISAM file che lavota sulla tabella IVA
TProgind pi(fsize(file),"Importazione Dati IVA in Corso...",true,true);
while(s.ok())
{
if (!pi.addstatus(s.tellg()))
break;
//salto le righe di testata del file
iva.zero();
TString curr = s.line();
TString8 cod = curr.mid(1,8);
TString desc = curr.mid(9,18);
//salto le righe di testata del file
cod.trim();
if (cod.blank() || !real::is_natural(cod))
continue;
cod.lpad(3, '0');
if (cod.len() > 3)
{
TString errore = "ERRORE:";
errore <<" i dati IVA con codice " << cod << " non possono essere inseriti (codice max 3 caratteri)";
log.log(2,errore);
}
iva.put("CODTAB",cod);
iva.put("S0",desc);
int err = iva.write_rewrite(); //Tenta di aggiungere un record ma se esiste gia' lo aggiorna
TString str = "I dati IVA con codice ";
str << cod;
if (err == NOERR)
{
str << " sono stati inseriti";
log.log(0,str);
}
else
{
str << " non sono stati inseriti, errore " << err;
log.log(2,str);
}
}
return;
};
bool TDocTS::transfer()
{
TLog_report log("Importazione documenti da TeamSystem");
//prelevo il path dei file da caricare dalla maschera
TFilename path = _msk->get(F_PATH);
const short ids [] = {F_PCONTI,F_CAUSALI,F_CODIVA,0};
//eseguo tutte le importazioni (una alla volta)
for (int i = 0; ids[i]; i++)
{
//prelevo di volta in volta il nome del file giusto dalla maschera:
//prima il file Anagrafiche, poi quello delle fatture e poi quello delle ricevute
TFilename name = _msk->get(ids[i]);
//se sono riuscito a prelevare un nome di file, allora:
if (name.full())
{
//costruisco il nome del file
TFilename full = path;
full.add(name);
//se eiste il file, esegui l'elaborazione corretta
if (full.exist())
{
switch (i)
{
case 0: upload_pconti (full, log); break;
case 1: upload_causali(full, log); break;
case 2: upload_codiva (full, log); break;
default: break;
}
}
}
}
TReport_book buc;
buc.add(log);
if (buc.pages()>0)
buc.preview(); //visualizzo il log di importazione dei documenti
return true;
}
bool TDocTS::create()
{
_msk = new TImportaTS_mask();
return TSkeleton_application::create();
}
bool TDocTS::destroy()
{
delete _msk;
return TApplication::destroy();
}
void TDocTS::main_loop()
{
KEY tasto;
tasto = _msk->run();
if (tasto == K_ENTER)
{
if (transfer())
{
message_box(TR("Importazione documenti completata"));
}
}
}
int tc2600 (int argc, char* argv[])
{
TDocTS main_app;
main_app.run(argc, argv, TR("Importazione Tabelle"));
return true;
}

View File

@ -1,83 +0,0 @@
#include "tc2600a.h"
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_ELABORA 10 2
BEGIN
PROMPT -12 -11 "~Elabora"
PICTURE BMP_ELABORA
MESSAGE EXIT,K_ENTER
END
#include <helpbar.h>
ENDPAGE
TOOLBAR "" 0 -2 0 2
STRING DLG_PROFILE 50
BEGIN
PROMPT 9 0 "Profilo "
PSELECT
FLAGS "H"
END
ENDPAGE
PAGE "Importazione dati da TeamSystem" 0 2 0 0
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 2 1 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 2 "Codice "
FLAGS "FD"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 23 2 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 76 6
BEGIN
PROMPT 2 4 "@bSorgente"
END
STRING F_PATH 256 50
BEGIN
PROMPT 3 5 "Cartella "
DSELECT
CHECKTYPE REQUIRED
FIELD FileInPath
END
STRING F_PCONTI 25
BEGIN
PROMPT 3 6 "Piano dei Conti "
FIELD PCONTI
END
STRING F_CAUSALI 25
BEGIN
PROMPT 3 7 "Causali "
FIELD CAUSALI
END
STRING F_CODIVA 25
BEGIN
PROMPT 3 8 "Codici IVA "
FIELD CODIVA
END
ENDPAGE
ENDMASK

View File

@ -22,7 +22,7 @@
#include "../cg/cglib01.h" #include "../cg/cglib01.h"
#include "../cg/cg2103.h" #include "../cg/cg2103.h"
bool TTS_mask::apply_filter(const TRecordset& righe) const bool TIP_mask::apply_filter(const TRecordset& righe) const
{ {
const TDate dal = get(F_DATA_DA); const TDate dal = get(F_DATA_DA);
const TDate al = get(F_DATA_AL); const TDate al = get(F_DATA_AL);
@ -35,7 +35,7 @@ bool TTS_mask::apply_filter(const TRecordset& righe) const
return true; return true;
} }
bool TTS_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TIP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
bool ok = true; bool ok = true;
switch (o.dlg()) switch (o.dlg())
@ -49,7 +49,7 @@ bool TTS_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
return ok; return ok;
} }
void TTS_mask::serialize(bool bSave) void TIP_mask::serialize(bool bSave)
{ {
const char* defpar = "tc"; const char* defpar = "tc";
TConfig ini(CONFIG_DITTA, defpar); TConfig ini(CONFIG_DITTA, defpar);
@ -67,24 +67,24 @@ void TTS_mask::serialize(bool bSave)
} }
} }
TTS_mask::TTS_mask(const char * maskname) TIP_mask::TIP_mask(const char * maskname)
: TAutomask(maskname), _updating(false), _next_update(0) : TAutomask(maskname), _updating(false), _next_update(0)
{ {
serialize(false); serialize(false);
} }
TTS_mask::~TTS_mask() TIP_mask::~TIP_mask()
{ {
serialize(true); serialize(true);
} }
bool TTS_campo_sender::destroy() bool TIP_campo_sender::destroy()
{ {
delete _mask; delete _mask;
return TTS_sender::destroy(); return TIP_sender::destroy();
} }
TRecordset & TTS_campo_sender::movrecset() TRecordset & TIP_campo_sender::movrecset()
{ {
const TMask & m = get_mask(); const TMask & m = get_mask();
const TDate from = m.get_date(F_DATA_DA); const TDate from = m.get_date(F_DATA_DA);
@ -105,7 +105,7 @@ TRecordset & TTS_campo_sender::movrecset()
return *mov; return *mov;
} }
TRecordset & TTS_campo_sender::rmovrecset(const TRecordset & mov) TRecordset & TIP_campo_sender::rmovrecset(const TRecordset & mov)
{ {
TRecordset * rmov = get_recset(LF_RMOV); TRecordset * rmov = get_recset(LF_RMOV);
@ -119,7 +119,7 @@ TRecordset & TTS_campo_sender::rmovrecset(const TRecordset & mov)
return *rmov; return *rmov;
} }
TRecordset & TTS_campo_sender::rivarecset(const TRecordset & mov) TRecordset & TIP_campo_sender::rivarecset(const TRecordset & mov)
{ {
TRecordset * rmoviva = get_recset(LF_RMOVIVA); TRecordset * rmoviva = get_recset(LF_RMOVIVA);
@ -133,7 +133,7 @@ TRecordset & TTS_campo_sender::rivarecset(const TRecordset & mov)
return *rmoviva; return *rmoviva;
} }
const TRecordset& TTS_campo_sender::clirecset(const char tipocf, const long codcf) const TRecordset& TIP_campo_sender::clirecset(const char tipocf, const long codcf)
{ {
TRecordset * clifo = get_recset(LF_CLIFO); TRecordset * clifo = get_recset(LF_CLIFO);
@ -148,7 +148,7 @@ const TRecordset& TTS_campo_sender::clirecset(const char tipocf, const long codc
return *clifo; return *clifo;
} }
bool TTS_campo_sender::test_swap(const TRecordset& mov) bool TIP_campo_sender::test_swap(const TRecordset& mov)
{ {
TRecordset & rmov = rmovrecset(mov); TRecordset & rmov = rmovrecset(mov);
const int anno = mov.get(MOV_ANNOIVA).as_int(); const int anno = mov.get(MOV_ANNOIVA).as_int();
@ -160,7 +160,7 @@ bool TTS_campo_sender::test_swap(const TRecordset& mov)
return s; return s;
} }
bool TTS_campo_sender::swap_ritsoc(const TRecordset& mov) bool TIP_campo_sender::swap_ritsoc(const TRecordset& mov)
{ {
TRecordset & rmov = rmovrecset(mov); TRecordset & rmov = rmovrecset(mov);
bool ok = rmov.move_first(); bool ok = rmov.move_first();
@ -182,21 +182,21 @@ bool TTS_campo_sender::swap_ritsoc(const TRecordset& mov)
return s; return s;
} }
bool TTS_campo_sender::mov_regolarizzazione(const TRecordset& mov) bool TIP_campo_sender::mov_regolarizzazione(const TRecordset& mov)
{ {
const TString& codcaus = mov.get(MOV_CODCAUS).as_string(); const TString& codcaus = mov.get(MOV_CODCAUS).as_string();
return _caus_regolarizzazione.objptr(codcaus) != NULL; return _caus_regolarizzazione.objptr(codcaus) != NULL;
} }
bool TTS_campo_sender::mov_intra(const TRecordset& mov) bool TIP_campo_sender::mov_intra(const TRecordset& mov)
{ {
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string()); const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
return caus.get_bool(CAU_INTRACOM); return caus.get_bool(CAU_INTRACOM);
} }
bool TTS_campo_sender::mov_reverse_charge(const TRecordset& mov) bool TIP_campo_sender::mov_reverse_charge(const TRecordset& mov)
{ {
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string()); const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
const int regsp = caus.get_int(CAU_REGSPIVA); const int regsp = caus.get_int(CAU_REGSPIVA);
@ -204,7 +204,7 @@ bool TTS_campo_sender::mov_reverse_charge(const TRecordset& mov)
return regsp == 13 || regsp == 50 || regsp == 51; return regsp == 13 || regsp == 50 || regsp == 51;
} }
bool TTS_campo_sender::regime_agricolo(const TRecordset& mov) const bool TIP_campo_sender::regime_agricolo(const TRecordset& mov) const
{ {
TToken_string key; TToken_string key;
@ -219,11 +219,11 @@ bool TTS_campo_sender::regime_agricolo(const TRecordset& mov) const
return attiv.get_bool(ATT_REGAGR); return attiv.get_bool(ATT_REGAGR);
} }
TMask & TTS_campo_sender::get_mask() TMask & TIP_campo_sender::get_mask()
{ {
if (_mask == NULL) if (_mask == NULL)
{ {
_mask = new TTS_mask(mask_name()); _mask = new TIP_mask(mask_name());
TDate to(TODAY); TDate to(TODAY);
TConfig configtc(CONFIG_DITTA, "tc"); TConfig configtc(CONFIG_DITTA, "tc");
const TDate from(configtc.get("TSULTINV")); const TDate from(configtc.get("TSULTINV"));
@ -243,7 +243,7 @@ TMask & TTS_campo_sender::get_mask()
return * _mask; return * _mask;
} }
bool TTS_campo_sender::find_regolarizzazione(TRecordset& mov) bool TIP_campo_sender::find_regolarizzazione(TRecordset& mov)
{ {
bool found = false; bool found = false;
@ -299,21 +299,21 @@ bool TTS_campo_sender::find_regolarizzazione(TRecordset& mov)
return found; return found;
} }
long TTS_campo_sender::iva11_reverse(const TRecordset & mov) long TIP_campo_sender::iva11_reverse(const TRecordset & mov)
{ {
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string()); const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
return caus.get_int(CAU_REGSPIVA); return caus.get_int(CAU_REGSPIVA);
} }
const char * TTS_campo_sender::decode_causale(const TRecordset& mov) const char * TIP_campo_sender::decode_causale(const TRecordset& mov)
{ {
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string()); const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
return caus.get(CAU_DESCR); return caus.get(CAU_DESCR);
} }
void TTS_campo_sender::postprocess_movs(TRecordset & mov) void TIP_campo_sender::postprocess_movs(TRecordset & mov)
{ {
if (yesno_box(TR("Confermare il traferimento"))) if (yesno_box(TR("Confermare il traferimento")))
{ {
@ -358,7 +358,7 @@ bool search_reg(const TRelation& rel, void* pJolly)
} }
bool TTS_campo_sender::create() bool TIP_campo_sender::create()
{ {
TRelation rel(LF_CAUSALI); TRelation rel(LF_CAUSALI);
TCursor c(&rel); TCursor c(&rel);
@ -382,12 +382,12 @@ bool TTS_campo_sender::create()
if (big_cli_code) if (big_cli_code)
riclassifica().add("TSNOHCLI", EMPTY_STRING); riclassifica().add("TSNOHCLI", EMPTY_STRING);
return ok && TTS_sender::create(); return ok && TIP_sender::create();
} }
int tc2700(int argc, char* argv[]) int tc2700(int argc, char* argv[])
{ {
TTS_campo_sender app; TIP_campo_sender app;
app.run(argc, argv, TR("Invio a TeamSystem")); app.run(argc, argv, TR("Invio a IPSOA"));
return 0; return 0;
} }

63
tc/tc2700.h Executable file
View File

@ -0,0 +1,63 @@
#include <automask.h>
#include "tc2701.h"
///////////////////////////////////////////////////////////
// TIP_mask
///////////////////////////////////////////////////////////
class TIP_mask : public TAutomask
{
clock_t _next_update;
bool _updating;
private:
bool apply_filter(const TRecordset& righe) const;
void serialize(bool bSave);
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TIP_mask(const char * maskname);
~TIP_mask();
};
///////////////////////////////////////////////////////////
// TIP_campo_sender
///////////////////////////////////////////////////////////
class TIP_campo_sender : public TIP_sender
{
TIP_mask * _mask;
TAssoc_array _caus_regolarizzazione;
protected:
virtual TRecordset & movrecset();
virtual TRecordset & rmovrecset(const TRecordset & mov);
virtual TRecordset & rivarecset(const TRecordset & mov);
virtual const TRecordset & clirecset(const char tipocf, const long codcf);
virtual TMask & get_mask();
virtual const char * mask_name() const {return "tc0700a"; }
protected:
virtual bool find_regolarizzazione(TRecordset& mov);
virtual const char * decode_causale(const TRecordset& mov);
virtual bool test_swap(const TRecordset& mov);
virtual bool swap_ritsoc(const TRecordset& mov);
virtual bool mov_regolarizzazione(const TRecordset& mov);
virtual bool mov_intra(const TRecordset& mov);
virtual bool mov_reverse_charge(const TRecordset& mov);
virtual long iva11_reverse(const TRecordset & mov);
virtual bool regime_agricolo(const TRecordset& mov) const;
public:
virtual void postprocess_movs(TRecordset & mov);
virtual bool create();
virtual bool destroy();
TIP_campo_sender() : TIP_sender(), _mask(NULL) {}
~TIP_campo_sender() {}
};

10
tc/tc2700a.h Executable file
View File

@ -0,0 +1,10 @@
// invio dati ad altra procedura (teamsystem)
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_MOVIMENTI 103
#define F_INTRASTAT 104
#define F_PATH 105
#define F_FILE 106
#define F_DATA_DA 107
#define F_DATA_AL 108

View File

@ -25,7 +25,7 @@
HIDDEN const char* const __tiporicconti = "TSCONTI"; HIDDEN const char* const __tiporicconti = "TSCONTI";
TObject* TTSRiclassifica_cache::key2obj(const char* key) TObject* TIPRiclassifica_cache::key2obj(const char* key)
{ {
TToken_string tok(key); TToken_string tok(key);
TString8 tab, cod; TString8 tab, cod;
@ -39,7 +39,7 @@ TObject* TTSRiclassifica_cache::key2obj(const char* key)
return NULL; return NULL;
} }
long TTSRiclassifica_cache::decode(const char* tab, const TString& cod) long TIPRiclassifica_cache::decode(const char* tab, const TString& cod)
{ {
TToken_string tok; TToken_string tok;
tok.add(tab); tok.add(tab);
@ -48,7 +48,7 @@ long TTSRiclassifica_cache::decode(const char* tab, const TString& cod)
return (ric ? atol(*ric) : 0); return (ric ? atol(*ric) : 0);
} }
const char * TTSRiclassifica_cache::sdecode(const char* tab, const TString& cod) const char * TIPRiclassifica_cache::sdecode(const char* tab, const TString& cod)
{ {
TToken_string tok; TToken_string tok;
tok.add(tab); tok.add(tab);
@ -85,13 +85,13 @@ const long TSbill2ricl(char & t, int gr, int co, long so)
return codricl; return codricl;
} }
TTS_sender& app() { return (TTS_sender&)main_app(); } TIP_sender& app() { return (TIP_sender&)main_app(); }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TTS_textset // TIP_textset
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TTS_textset : public TAS400_recordset class TIP_textset : public TAS400_recordset
{ {
TAssoc_array _contatori; TAssoc_array _contatori;
@ -107,7 +107,7 @@ public:
virtual const TString& rec_type(TRecnotype r = -1) const; virtual const TString& rec_type(TRecnotype r = -1) const;
virtual bool set(const char* field, const TVariant& v); virtual bool set(const char* field, const TVariant& v);
TTS_textset(const char* query = ""); TIP_textset(const char* query = "");
}; };
class TIVA_item : public TObject class TIVA_item : public TObject
@ -132,7 +132,7 @@ public:
virtual ~TIVA_item() {} virtual ~TIVA_item() {}
}; };
long TTS_textset::add_count(const char* tipo, long i) long TIP_textset::add_count(const char* tipo, long i)
{ {
CHECK(strlen(tipo) == 1, "Tipo record non valido"); CHECK(strlen(tipo) == 1, "Tipo record non valido");
real* n = (real*)_contatori.objptr(tipo); real* n = (real*)_contatori.objptr(tipo);
@ -145,13 +145,13 @@ long TTS_textset::add_count(const char* tipo, long i)
return n->integer(); return n->integer();
} }
const TString& TTS_textset::rec_type(TRecnotype r) const const TString& TIP_textset::rec_type(TRecnotype r) const
{ {
const TString& t = TAS400_recordset::rec_type(r); const TString& t = TAS400_recordset::rec_type(r);
return t; return t;
} }
bool TTS_textset::destroy(TRecnotype r) bool TIP_textset::destroy(TRecnotype r)
{ {
bool ok; bool ok;
if (r >= 0) if (r >= 0)
@ -171,7 +171,7 @@ bool TTS_textset::destroy(TRecnotype r)
return ok; return ok;
} }
void TTS_textset::add_field(const char* trc, const char* name, int len, void TIP_textset::add_field(const char* trc, const char* name, int len,
char tipo, int from, const char* def) char tipo, int from, const char* def)
{ {
const bool required = false; const bool required = false;
@ -190,7 +190,7 @@ void TTS_textset::add_field(const char* trc, const char* name, int len,
create_field(fname, pos, len, t, required); create_field(fname, pos, len, t, required);
} }
bool TTS_textset::set(const char* field, const TVariant& var) bool TIP_textset::set(const char* field, const TVariant& var)
{ {
const char* err = NULL; const char* err = NULL;
int c = -1; int c = -1;
@ -242,7 +242,7 @@ bool TTS_textset::set(const char* field, const TVariant& var)
return ok; return ok;
} }
TTS_textset::TTS_textset(const char* query) TIP_textset::TIP_textset(const char* query)
: TAS400_recordset(TString("AS400(7001,1,6)\n") << query) : TAS400_recordset(TString("AS400(7001,1,6)\n") << query)
{ {
const char an = 'a'; const char an = 'a';
@ -529,10 +529,10 @@ TTS_textset::TTS_textset(const char* query)
} }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TTS_sender // TIP_sender
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
const TString & TTS_sender::descr2agg(const char* d) const TString & TIP_sender::descr2agg(const char* d)
{ {
TString & descr = get_tmp_string(128); TString & descr = get_tmp_string(128);
@ -550,13 +550,13 @@ const TString & TTS_sender::descr2agg(const char* d)
return descr; return descr;
} }
bool TTS_sender::new_rec(const char* t) bool TIP_sender::new_rec(const char* t)
{ {
CHECK(t && *t, "Tipo non valido"); CHECK(t && *t, "Tipo non valido");
return _tsfile->new_rec(t) >= 0; return _tsfile->new_rec(t) >= 0;
} }
void TTS_sender::log(int sev, const char* msg) void TIP_sender::log(int sev, const char* msg)
{ {
if (_log != NULL) if (_log != NULL)
{ {
@ -572,24 +572,24 @@ void TTS_sender::log(int sev, const char* msg)
} }
} }
void TTS_sender::set(const char* field, const TVariant& var) void TIP_sender::set(const char* field, const TVariant& var)
{ {
_tsfile->set(field, var); _tsfile->set(field, var);
} }
const TVariant& TTS_sender::get(const char* field) const TVariant& TIP_sender::get(const char* field)
{ {
return _tsfile->get(field); return _tsfile->get(field);
} }
void TTS_sender::remove_last() void TIP_sender::remove_last()
{ {
_tsfile->destroy(_tsfile->last()); _tsfile->destroy(_tsfile->last());
_tsfile->move_last(); _tsfile->move_last();
} }
bool TTS_sender::add_optional_rec(TRecordset& mov, bool rec_to_add) bool TIP_sender::add_optional_rec(TRecordset& mov, bool rec_to_add)
{ {
if (rec_to_add) if (rec_to_add)
{ {
@ -599,7 +599,7 @@ bool TTS_sender::add_optional_rec(TRecordset& mov, bool rec_to_add)
return false; return false;
} }
bool TTS_sender::add_regol(TRecordset& mov, bool rec_to_add) bool TIP_sender::add_regol(TRecordset& mov, bool rec_to_add)
{ {
rec_to_add = add_optional_rec(mov, rec_to_add); rec_to_add = add_optional_rec(mov, rec_to_add);
@ -644,7 +644,7 @@ bool TTS_sender::add_regol(TRecordset& mov, bool rec_to_add)
return rec_to_add; return rec_to_add;
} }
void TTS_sender::add_ulteriori(TRecordset& mov) void TIP_sender::add_ulteriori(TRecordset& mov)
{ {
bool rec_to_add = true; bool rec_to_add = true;
@ -652,11 +652,11 @@ void TTS_sender::add_ulteriori(TRecordset& mov)
add_regol(mov, rec_to_add); add_regol(mov, rec_to_add);
} }
void TTS_sender::add_ratei_risconti(const TRecordset& mov) void TIP_sender::add_ratei_risconti(const TRecordset& mov)
{ {
} }
const TString & TTS_sender::dittamulti(const TRecordset& mov) const const TString & TIP_sender::dittamulti(const TRecordset& mov) const
{ {
if (multi_activity()) if (multi_activity())
{ {
@ -678,7 +678,7 @@ const TString & TTS_sender::dittamulti(const TRecordset& mov) const
return _dittamulti; return _dittamulti;
} }
void TTS_sender::add_new_rec(const TRecordset& mov) void TIP_sender::add_new_rec(const TRecordset& mov)
{ {
set("TRF-80-SEGUENTE", "S"); set("TRF-80-SEGUENTE", "S");
if (new_rec("0")) if (new_rec("0"))
@ -688,7 +688,7 @@ void TTS_sender::add_new_rec(const TRecordset& mov)
} }
} }
void TTS_sender::add_diversi(const TRecordset& mov, const bool moviva) void TIP_sender::add_diversi(const TRecordset& mov, const bool moviva)
{ {
const bool vendite = mov.get(MOV_TIPO).as_string()[0] != 'F'; const bool vendite = mov.get(MOV_TIPO).as_string()[0] != 'F';
const TString16 codice = scod2ricl("TSREG", mov.get(MOV_REG)); const TString16 codice = scod2ricl("TSREG", mov.get(MOV_REG));
@ -865,7 +865,7 @@ void TTS_sender::add_diversi(const TRecordset& mov, const bool moviva)
} }
} }
void TTS_sender::add_conti_ricavo_costo(const TRecordset& mov) void TIP_sender::add_conti_ricavo_costo(const TRecordset& mov)
{ {
TRecordset & rmov = rmovrecset(mov); TRecordset & rmov = rmovrecset(mov);
@ -945,7 +945,7 @@ void TTS_sender::add_conti_ricavo_costo(const TRecordset& mov)
} }
} }
void TTS_sender::add_tot_fattura(const TRecordset& mov) void TIP_sender::add_tot_fattura(const TRecordset& mov)
{ {
const bool vendite = mov.get(MOV_TIPO).as_string()[0] != 'F'; const bool vendite = mov.get(MOV_TIPO).as_string()[0] != 'F';
real totdoc = mov.get(MOV_TOTDOC).as_real(); real totdoc = mov.get(MOV_TOTDOC).as_real();
@ -970,7 +970,7 @@ void TTS_sender::add_tot_fattura(const TRecordset& mov)
_rit_acc = ZERO; _rit_acc = ZERO;
} }
void TTS_sender::add_datiiva(const TRecordset& mov) void TIP_sender::add_datiiva(const TRecordset& mov)
{ {
TRecordset & rmoviva = rivarecset(mov); TRecordset & rmoviva = rivarecset(mov);
TString16 codice = scod2ricl("TSREG", mov.get(MOV_REG)); TString16 codice = scod2ricl("TSREG", mov.get(MOV_REG));
@ -1058,7 +1058,7 @@ void TTS_sender::add_datiiva(const TRecordset& mov)
} }
} }
void TTS_sender::add_header(const TRecordset& mov, const bool fullhesd) void TIP_sender::add_header(const TRecordset& mov, const bool fullhesd)
{ {
const bool moviva = !mov.get(MOV_REG).is_empty(); const bool moviva = !mov.get(MOV_REG).is_empty();
const TString8 src_caus(mov.get(MOV_CODCAUS).as_string()); const TString8 src_caus(mov.get(MOV_CODCAUS).as_string());
@ -1121,7 +1121,7 @@ void TTS_sender::add_header(const TRecordset& mov, const bool fullhesd)
} }
} }
void TTS_sender::get_citta_provincia(const TRecordset& cli, TString & dencom, TString & provcom, bool nascita) void TIP_sender::get_citta_provincia(const TRecordset& cli, TString & dencom, TString & provcom, bool nascita)
{ {
TString16 key; TString16 key;
@ -1158,7 +1158,7 @@ void TTS_sender::get_citta_provincia(const TRecordset& cli, TString & dencom, TS
} }
} }
void TTS_sender::add_clifor(char tipocf, long codcf) void TIP_sender::add_clifor(char tipocf, long codcf)
{ {
// dati clienti/fornitore // dati clienti/fornitore
if (codcf != 0) if (codcf != 0)
@ -1256,7 +1256,7 @@ void TTS_sender::add_clifor(char tipocf, long codcf)
} }
} }
void TTS_sender::add_mov(TRecordset& mov) void TIP_sender::add_mov(TRecordset& mov)
{ {
TString msg; msg << TR("Registrazione n.") << ' ' << mov.get(MOV_NUMREG); TString msg; msg << TR("Registrazione n.") << ' ' << mov.get(MOV_NUMREG);
log(0, msg); log(0, msg);
@ -1282,7 +1282,7 @@ void TTS_sender::add_mov(TRecordset& mov)
} }
} }
const long TTS_sender::bill2ricl(char & t, int gr, int co, long so, const bool header_cli) const long TIP_sender::bill2ricl(char & t, int gr, int co, long so, const bool header_cli)
{ {
long codricl = 0; long codricl = 0;
if (gr > 0) if (gr > 0)
@ -1339,7 +1339,7 @@ const long TTS_sender::bill2ricl(char & t, int gr, int co, long so, const bool h
return codricl; return codricl;
} }
const TString & TTS_sender::scod2ricl(const char* tab, const TString& cod) const TString & TIP_sender::scod2ricl(const char* tab, const TString& cod)
{ {
TString & codricl = get_tmp_string(); TString & codricl = get_tmp_string();
if (cod.full()) if (cod.full())
@ -1364,12 +1364,12 @@ const TString & TTS_sender::scod2ricl(const char* tab, const TString& cod)
return codricl; return codricl;
} }
const TString & TTS_sender::scod2ricl(const char* tab, const TVariant& cod) const TString & TIP_sender::scod2ricl(const char* tab, const TVariant& cod)
{ {
return scod2ricl(tab, cod.as_string()); return scod2ricl(tab, cod.as_string());
} }
const long TTS_sender::cod2ricl(const char* tab, const TString& cod) const long TIP_sender::cod2ricl(const char* tab, const TString& cod)
{ {
long codricl = 0; long codricl = 0;
if (cod.full()) if (cod.full())
@ -1399,12 +1399,12 @@ const long TTS_sender::cod2ricl(const char* tab, const TString& cod)
return codricl; return codricl;
} }
const long TTS_sender::cod2ricl(const char* tab, const TVariant& cod) const long TIP_sender::cod2ricl(const char* tab, const TVariant& cod)
{ {
return cod2ricl(tab, cod.as_string()); return cod2ricl(tab, cod.as_string());
} }
void TTS_sender::set_parameters() void TIP_sender::set_parameters()
{ {
TConfig configtc(CONFIG_DITTA, "tc"); TConfig configtc(CONFIG_DITTA, "tc");
@ -1465,26 +1465,26 @@ void TTS_sender::set_parameters()
} }
} }
bool TTS_sender::create() bool TIP_sender::create()
{ {
_tabelle = new TTSRiclassifica_cache; _tabelle = new TIPRiclassifica_cache;
set_parameters(); set_parameters();
return TSkeleton_application::create(); return TSkeleton_application::create();
} }
bool TTS_sender::destroy() bool TIP_sender::destroy()
{ {
delete _tabelle; delete _tabelle;
return TSkeleton_application::destroy(); return TSkeleton_application::destroy();
} }
void TTS_sender::main_loop() void TIP_sender::main_loop()
{ {
TMask & m = get_mask(); TMask & m = get_mask();
while (m.run() != K_QUIT) while (m.run() != K_QUIT)
{ {
const char* const title = TR("Invio a TeamSystem"); const char* const title = TR("Invio a TeamSystem");
_tsfile = new TTS_textset; _tsfile = new TIP_textset;
_log = new TLog_report(title); _log = new TLog_report(title);
_errors_logged = false; _errors_logged = false;

114
tc/tc2701.h Executable file
View File

@ -0,0 +1,114 @@
#include <applicat.h>
#include <recarray.h>
#include <relation.h>
#include <reputils.h>
#include <textset.h>
///////////////////////////////////////////////////////////
// TRiclassifica_cache
///////////////////////////////////////////////////////////
class TIPRiclassifica_cache : public TCache
{
TLocalisamfile _multirel;
protected:
virtual TObject* key2obj(const char* key);
public:
const char * sdecode(const char* tab, const TString& cod);
long decode(const char* tab, const TString& cod);
TIPRiclassifica_cache() : _multirel(LF_MULTIREL) { _multirel.setkey(2);}
};
///////////////////////////////////////////////////////////
// TIP_sender
///////////////////////////////////////////////////////////
const long TSbill2ricl(char & t, int gr, int co, long so);
///////////////////////////////////////////////////////////
// TIP_sender
///////////////////////////////////////////////////////////
class TIP_textset;
class TIP_sender : public TSkeleton_application
{
TIPRiclassifica_cache* _tabelle;
TAssoc_array _riclassifica;
TIP_textset* _tsfile;
TLog_report* _log;
bool _errors_logged;
TString8 _dittamulti;
TAssoc_array _dittemulti;
long _empty_caus;
TArray _recsets;
TAssoc_array _iva;
TAssoc_array _contiiva;
TAssoc_array _contirit;
bool _professionista;
bool _ventilazione;
real _rit_acc;
protected:
TRecordset * get_recset(const int logicnum) const { return (TRecordset *) _recsets.objptr(logicnum);}
TRecordset * set_recset(const int logicnum, TRecordset * r) { _recsets.add(r, logicnum); return r;}
TArray & recsets() { return _recsets;}
const TString & descr2agg(const char* d);
bool new_rec(const char* t);
void remove_last();
void set(const char* field, const TVariant& var);
void set(const char* field, const TString & str) { set(field, TVariant(str)); }
void set(const char* field, const int n) { set(field, TVariant((long)n)); }
void set(const char* field, const char* s) { set(field, TVariant(s)); }
void set(const char* field, const TDate& d) { set(field, TVariant(d)); }
void set(const char* field, const real& v) { set(field, TVariant(v)); }
const TVariant& get(const char* field);
void add_mov(TRecordset& mov);
void add_clifor(char tipocf, long codcf);
void add_header(const TRecordset& mov, const bool fullhead = true);
void add_datiiva(const TRecordset& mov);
void add_tot_fattura(const TRecordset& mov);
void add_conti_ricavo_costo(const TRecordset& mov);
void add_new_rec(const TRecordset& mov);
void add_diversi(const TRecordset& mov, const bool moviva);
void add_ratei_risconti(const TRecordset& mov);
void add_ulteriori(TRecordset& mov);
bool add_regol(TRecordset& mov, bool rec_to_add);
bool add_optional_rec(TRecordset& mov, bool rec_to_add);
const TString & scod2ricl(const char* tab, const TString& cod);
const TString & scod2ricl(const char* tab, const TVariant& cod);
const long cod2ricl(const char* tab, const TString& cod);
const long cod2ricl(const char* tab, const TVariant& cod);
const long bill2ricl(char & t, int gr, int co, long so, const bool header_cli = true);
virtual void get_citta_provincia(const TRecordset& cli, TString & dencom, TString & provcom, bool nascita = false);
virtual const char * decode_causale(const TRecordset& mov) { return EMPTY_STRING; }
virtual bool test_swap(const TRecordset& mov) { return false;}
virtual bool swap_ritsoc(const TRecordset& mov) { return false;}
virtual bool mov_regolarizzazione(const TRecordset& mov) { return false;}
virtual bool mov_intra(const TRecordset& mov) { return false;}
virtual bool mov_reverse_charge(const TRecordset& mov) { return false;}
virtual long iva11_reverse(const TRecordset & mov) { return 0L;}
bool add_iva_to_mov(const TRecordset& mov) { return mov_intra(mov) || mov_reverse_charge(mov);}
protected:
virtual bool find_regolarizzazione(TRecordset& mov) {return false;}
virtual TRecordset & movrecset() pure;
virtual TRecordset & rmovrecset(const TRecordset & mov) pure;
virtual TRecordset & rivarecset(const TRecordset & mov) pure;
virtual const TRecordset & clirecset(const char tipocf, const long codcf) pure;
virtual bool regime_agricolo(const TRecordset& mov) const { return false; }
virtual TMask & get_mask() pure ;
public:
void log(int sev, const char* msg);
virtual bool multi_activity() const { return true; }
virtual const TString & dittamulti(const TRecordset& mov) const ;
TAssoc_array & riclassifica() {return _riclassifica;}
virtual void postprocess_movs(TRecordset & mov) {}
virtual void set_parameters();
virtual bool create();
virtual void main_loop();
virtual bool destroy();
TIP_sender() : _tabelle(NULL), _tsfile(NULL), _log(NULL) {}
};

View File

@ -10,15 +10,15 @@
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
//MASCHERA //MASCHERA
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
class TTS_ricl_msk : public TAutomask class TIP_ricl_msk : public TAutomask
{ {
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public: public:
TTS_ricl_msk() : TAutomask("tc2800a") {} TIP_ricl_msk() : TAutomask("tc2800a") {}
}; };
bool TTS_ricl_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TIP_ricl_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
switch (o.dlg()) switch (o.dlg())
{ {
@ -30,7 +30,7 @@ bool TTS_ricl_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
return true; return true;
} }
class TTSRiclass_application : public TRelation_application class TIPRiclass_application : public TRelation_application
// @author:(INTERNAL) Vari // @author:(INTERNAL) Vari
// @access:(INTERNAL) Private Member // @access:(INTERNAL) Private Member
@ -67,17 +67,17 @@ protected:
// @access Public Member // @access Public Member
public: public:
// @cmember Costruttore // @cmember Costruttore
TTSRiclass_application() : _msk(NULL), _rel(NULL) { } TIPRiclass_application() : _msk(NULL), _rel(NULL) { }
// @cmember Distruttore // @cmember Distruttore
virtual ~TTSRiclass_application() {} virtual ~TIPRiclass_application() {}
}; };
void TTSRiclass_application::print() void TIPRiclass_application::print()
{ {
TFilename rep("tctsricl.rep"); TFilename rep("tcipricl.rep");
TString cmd; TString cmd;
rep.custom_path(); rep.custom_path();
@ -86,67 +86,61 @@ void TTSRiclass_application::print()
stampa.run(); stampa.run();
} }
void TTSRiclass_application::init_query_mode(TMask& m) void TIPRiclass_application::init_query_mode(TMask& m)
{ {
TRelation_application::init_query_mode(m); TRelation_application::init_query_mode(m);
m.show(-1, _use_pcn); m.show(-1);
m.enable(-1, _use_pcn); m.enable(-1);
m.show(-20, !_use_pcn);
m.hide(-2); m.hide(-2);
m.disable(-2); m.disable(-2);
m.disable(-10); m.disable(-10);
} }
void TTSRiclass_application::init_query_insert_mode(TMask& m) void TIPRiclass_application::init_query_insert_mode(TMask& m)
{ {
TRelation_application::init_query_insert_mode(m); TRelation_application::init_query_insert_mode(m);
m.hide(-1); m.hide(-1);
m.disable(-1); m.disable(-1);
m.show(-20, !_use_pcn); m.show(-2);
m.show(-2, _use_pcn); m.enable(-2);
m.enable(-2, _use_pcn); m.enable(-10);
m.enable(-10, _use_pcn);
} }
void TTSRiclass_application::init_modify_mode(TMask& m) void TIPRiclass_application::init_modify_mode(TMask& m)
{ {
TRelation_application::init_modify_mode(m); TRelation_application::init_modify_mode(m);
m.show(-1, _use_pcn); m.show(-1);
m.show(-20, !_use_pcn);
m.disable(-1);
m.hide(-2);
m.disable(-10);
}
void TTSRiclass_application::init_insert_mode(TMask& m)
{
TRelation_application::init_insert_mode(m);
m.show(-1, _use_pcn);
m.show(-20, !_use_pcn);
m.disable(-1); m.disable(-1);
m.hide(-2); m.hide(-2);
m.disable(-2); m.disable(-2);
m.disable(-10); m.disable(-10);
} }
bool TTSRiclass_application::user_create() void TIPRiclass_application::init_insert_mode(TMask& m)
{
TRelation_application::init_insert_mode(m);
m.show(-1);
m.disable(-1);
m.hide(-2);
m.disable(-2);
m.disable(-10);
}
bool TIPRiclass_application::user_create()
{ {
_rel = new TRelation(LF_RICLPDC); _rel = new TRelation(LF_RICLPDC);
_msk = new TTS_ricl_msk; _msk = new TIP_ricl_msk;
TConfig config(CONFIG_DITTA); TConfig config(CONFIG_DITTA);
_use_pcn = config.get_bool("TSUSECMPCN");
_msk->show(-10, _use_pcn); set_search_field(F_SOTTOCONTO);
_msk->show(-20, !_use_pcn);
set_search_field(_use_pcn ? F_SOTTOCONTO : F_SOTTOCONTO1);
TFilename rep("tctsricl.rep"); TFilename rep("tcipricl.rep");
if (rep.custom_path()) if (rep.custom_path())
enable_menu_item(M_FILE_PRINT); enable_menu_item(M_FILE_PRINT);
@ -158,7 +152,7 @@ bool TTSRiclass_application::user_create()
return true; return true;
} }
bool TTSRiclass_application::user_destroy() bool TIPRiclass_application::user_destroy()
{ {
if (_msk) if (_msk)
delete _msk; delete _msk;
@ -172,7 +166,7 @@ bool TTSRiclass_application::user_destroy()
int tc2800(int argc, char* argv[]) int tc2800(int argc, char* argv[])
{ {
TTSRiclass_application a; TIPRiclass_application a;
a.run(argc, argv, TR("Riclassificazione piano dei conti Team System")); a.run(argc, argv, TR("Riclassificazione piano dei conti Team System"));
return 0; return 0;

17
tc/tc2800a.h Executable file
View File

@ -0,0 +1,17 @@
//id campi maschera tc0800a (file piano dei conti Team System)
//campi normali
#define F_COD 101
#define F_IPCONTO 103
#define F_DESCRIZ 105
#define F_GRUPPO 106
#define F_CONTO 107
#define F_SOTTOCONTO 108
#define F_DESCG 109
#define F_DESCC 110
#define F_IPDESCR 111
#define F_GRUPPO1 112
#define F_CONTO1 113
#define F_SOTTOCONTO1 114
#define F_GRUPPO2 115
#define F_CONTO2 116
#define F_SOTTOCONTO2 117

218
tc/tc2800a.uml Executable file
View File

@ -0,0 +1,218 @@
#include "tc0800a.h"
TOOLBAR "topbar" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Riclassificazione Conti" 0 2 0 0
LIST F_COD 7
BEGIN
PROMPT 50 50 ""
ITEM "IPCONTI|IPCONTI"
FIELD TIPORIC
FLAGS "D"
KEY 1
END
GROUPBOX DLG_NULL 78 9
BEGIN
PROMPT 1 1 "Conto Campo"
END
NUMBER F_GRUPPO2 3
BEGIN
PROMPT 2 2 "Gruppo "
HELP "Codice del gruppo"
FIELD GRUPPO
USE LF_RICLPDC
JOIN LF_PCON INTO GRUPPO==GRUPPO CONTO==CONTO SOTTOCONTO==SOTTOCONTO
JOIN &ICO TO LF_RICLPDC INTO CODTAB==CODICE
INPUT TIPORIC F_COD SELECT
INPUT GRUPPO F_GRUPPO2
INPUT CONTO F_CONTO2
INPUT SOTTOCONTO F_SOTTOCONTO2
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" LF_PCON->DESCR
DISPLAY "Gruppo TS" CODICE[1,2]
DISPLAY "Conto TS" CODICE[3,4]
DISPLAY "Sottoconto TS" CODICE[5,7]
DISPLAY "Descrizione@50" &TCO->S0
OUTPUT F_GRUPPO2 GRUPPO
OUTPUT F_CONTO2 CONTO
OUTPUT F_SOTTOCONTO2 SOTTOCONTO
OUTPUT F_GRUPPO GRUPPO
OUTPUT F_CONTO CONTO
OUTPUT F_SOTTOCONTO SOTTOCONTO
KEY 1
GROUP 1
CHECKTYPE REQUIRED
END
NUMBER F_GRUPPO 3
BEGIN
PROMPT 2 2 "Gruppo "
HELP "Codice del gruppo"
FIELD GRUPPO
KEY 1
GROUP 2
USE LF_PCON KEY 1 SELECT CONTO=""
JOIN LF_RICLPDC INTO TIPORIC=="TSCONTI" GRUPPO==GRUPPO CONTO==CONTO SOTTOCONTO==SOTTOCONTO
JOIN &ICO TO LF_RICLPDC INTO CODTAB==CODICE
INPUT GRUPPO F_GRUPPO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo TS" LF_RICLPDC->CODICE[1,2]
DISPLAY "Conto TS" LF_RICLPDC->CODICE[3,4]
DISPLAY "Sottoconto TS" LF_RICLPDC->CODICE[5,7]
DISPLAY "Descrizione@50" &TCO->S0
OUTPUT F_GRUPPO GRUPPO
OUTPUT F_GRUPPO2 GRUPPO
OUTPUT F_DESCG DESCR
CHECKTYPE REQUIRED
ADD RUN cg0 -0
FLAGS "G"
END
STRING F_DESCG 50
BEGIN
PROMPT 24 2 ""
FLAGS "D"
END
NUMBER F_CONTO2 3
BEGIN
PROMPT 2 4 "Conto "
HELP "Codice dell'eventuale conto"
FIELD CONTO
COPY ALL F_GRUPPO2
KEY 1
GROUP 1
CHECKTYPE NORMAL
WARNING "Manca il conto"
END
NUMBER F_CONTO 12
BEGIN
PROMPT 2 4 "Conto "
HELP "Codice dell'eventuale conto"
FIELD CONTO
KEY 1
GROUP 2
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO=""))
JOIN LF_RICLPDC INTO TIPORIC=="IPCONTI" GRUPPO==GRUPPO CONTO==CONTO SOTTOCONTO==SOTTOCONTO
JOIN &ICO TO LF_RICLPDC INTO CODTAB==CODICE
COPY INPUT F_GRUPPO
INPUT CONTO F_CONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
DISPLAY "Conto IPSOA" LF_RICLPDC->CODICE
DISPLAY "Descrizione@50" &ICO->S0
OUTPUT F_GRUPPO GRUPPO
OUTPUT F_GRUPPO2 GRUPPO
OUTPUT F_CONTO CONTO
OUTPUT F_CONTO2 CONTO
OUTPUT F_DESCC DESCR
CHECKTYPE NORMAL
WARNING "Manca il conto"
ADD RUN cg0 -0
FLAGS "G"
END
STRING F_DESCC 50
BEGIN
PROMPT 24 4 ""
FLAGS "D"
END
NUMBER F_SOTTOCONTO2 6
BEGIN
PROMPT 2 6 "Sottoconto "
HELP "Codice dell'eventuale sottoconto"
FIELD SOTTOCONTO
COPY ALL F_GRUPPO2
KEY 1
GROUP 1
CHECKTYPE NORMAL
END
NUMBER F_SOTTOCONTO 6
BEGIN
PROMPT 2 6 "Sottoconto "
HELP "Codice dell'eventuale sottoconto"
FIELD SOTTOCONTO
KEY 1
GROUP 2
USE LF_PCON KEY 1 SELECT (SOTTOCONTO!="")
JOIN LF_RICLPDC INTO TIPORIC=="IPCONTI" GRUPPO==GRUPPO CONTO==CONTO SOTTOCONTO==SOTTOCONTO
JOIN &ICO TO LF_RICLPDC INTO CODTAB==CODICE
COPY INPUT F_CONTO
INPUT SOTTOCONTO F_SOTTOCONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Sosp." SOSPESO
DISPLAY "Descrizione@50" DESCR
DISPLAY "Conto IPSOA" LF_RICLPDC->CODICE
DISPLAY "Descrizione@50" &ICO->S0
OUTPUT F_GRUPPO GRUPPO
OUTPUT F_GRUPPO2 GRUPPO
OUTPUT F_CONTO CONTO
OUTPUT F_CONTO2 CONTO
OUTPUT F_SOTTOCONTO SOTTOCONTO
OUTPUT F_SOTTOCONTO2 SOTTOCONTO
OUTPUT F_DESCRIZ DESCR
ADD RUN cg0 -0
CHECKTYPE NORMAL
FLAGS "G"
END
STRING F_DESCRIZ 50
BEGIN
PROMPT 2 8 "Descrizione"
USE LF_PCON KEY 2
JOIN LF_RICLPDC INTO TIPORIC=="IPCONTI" GRUPPO==GRUPPO CONTO==CONTO SOTTOCONTO==SOTTOCONTO
JOIN &ICO TO LF_RICLPDC INTO CODTAB==CODICE
INPUT DESCR F_DESCRIZ
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Conto IPSOA" LF_RICLPDC->CODICE
DISPLAY "Descrizione@50" &ICO->S0
COPY OUTPUT F_SOTTOCONTO
KEY 2
CHECKTYPE REQUIRED
GROUP 10
END
STRING F_IPCONTO 12
BEGIN
PROMPT 2 10 "Conto IPSOA "
CHECKTYPE SEARCH
USE &ICO
INPUT CODTAB F_IPCONTO
DISPLAY "Conto IPSOA" CODTAB
DISPLAY "Descrizione@60" S0
OUTPUT F_IPCONTO CODTAB
OUTPUT F_IPDESCR S0
FIELD CODICE
END
STRING F_IPDESCR 50
BEGIN
PROMPT 2 12 "Descrizione "
USE &ICO KEY 2
INPUT S0 F_IPDESCR
DISPLAY "Descrizione@60" S0
DISPLAY "Conto IPSOA" CODTAB
COPY OUTPUT F_IPCONTO
CHECKTYPE SEARCH
END
ENDPAGE
ENDMASK

File diff suppressed because it is too large Load Diff

View File

@ -1,77 +0,0 @@
#include "tc2900a.h"
PAGE "Invio a TeamSystem da transfer AS400" -1 -1 78 20
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 2 1 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 2 "Codice "
FLAGS "FD"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 23 2 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 76 4
BEGIN
PROMPT 2 4 "Sorgente"
END
STRING F_INPATH 256 39
BEGIN
PROMPT 3 5 "Cartella "
DSELECT
CHECKTYPE REQUIRED
FIELD TSTAInPath
END
STRING F_INFILET 18
BEGIN
PROMPT 3 6 "File transfer "
FIELD TSTAInFile
END
GROUPBOX DLG_NULL 76 4
BEGIN
PROMPT 2 8 "Destinazione"
END
STRING F_PATH 256 39
BEGIN
PROMPT 3 9 "Cartella "
DSELECT
CHECKTYPE REQUIRED
FIELD TSTADestPath
END
STRING F_FILE 18
BEGIN
PROMPT 3 10 "File "
FIELD TSTADestFile
CHECKTYPE REQUIRED
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

117
tc/tcipatt.uml Executable file
View File

@ -0,0 +1,117 @@
#include "tcts.h"
TOOLBAR "topbar" 0 0 0 2
#include "relapbar.h"
ENDPAGE
PAGE "Valute" 0 2 0 0
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 1 "Codice Attività Campo "
END
LIST F_COD 5
BEGIN
PROMPT 50 50 ""
ITEM "IPATT|IPATT"
FIELD COD
FLAGS "D"
KEY 1
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 2 "Codice "
FLAGS "FD"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 23 2 ""
FLAGS "D"
END
STRING F_CODTAB 3
BEGIN
PROMPT 2 2 ""
USE LF_MULTIREL
JOIN LF_ATTIV INTO CODDITTA==#F_CODITTA CODATT==FIRST
JOIN &IAT INTO CODTAB==DATA
INPUT COD F_COD SELECT
INPUT FIRST F_CODTAB
DISPLAY "Codice Attivita" FIRST
DISPLAY "Descrizione@60" LF_ATTIV->S0
DISPLAY "Codice attività IPSOA" DATA
DISPLAY "Descrizione@50" &IAT->S0
OUTPUT F_CODTAB FIRST
OUTPUT F_DESC %VAL->S0
OUTPUT F_COD_CAMPO DATA
CHECKTYPE REQUIRED
FIELD FIRST
FLAGS "UZG"
KEY 1
GROUP 1
END
STRING F_CODTAB1 3
BEGIN
PROMPT 2 4 ""
USE LF_ATTIV
JOIN LF_MULTIREL INTO COD=="IPATT" FIRST==CODATT
JOIN &IAT TO LF_MULTIREL INTO CODTAB==DATA
INPUT CODDITTA F_CODDITTA SELECT
INPUT CODATT F_CODTAB1
DISPLAY "Cod." CODATT
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice attività IPSOA" LF_MULTIREL->DATA
DISPLAY "Descrizione@50" &IAT->S0
OUTPUT F_CODTAB CODATT
OUTPUT F_CODTAB1 CODATT
OUTPUT F_DESC S0
CHECKTYPE REQUIRED
FIELD FIRST
FLAGS "UZ"
KEY 1
GROUP 2
END
STRING F_DESC 50
BEGIN
PROMPT 10 4 "Descrizione "
FLAGS "D"
GROUP 3
CHECKTYPE REQUIRED
END
STRING F_COD_CAMPO 2
BEGIN
PROMPT 2 6 "Codice Attività IPSOA "
FIELD DATA
FLAGS "UZ"
USE &IAT
INPUT CODTAB F_COD_CAMPO
DISPLAY "Cod." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_COD_CAMPO CODTAB
OUTPUT F_DESC1 S0
CHECKTYPE REQUIRED
END
STRING F_DESC1 50 35
BEGIN
PROMPT 37 6 ""
USE &IAT KEY 2
INPUT S0 F_DESC1
DISPLAY "Descrizione@60" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_COD_CAMPO
END
ENDPAGE
ENDMASK

View File

@ -14,7 +14,7 @@ END
LIST F_COD 5 LIST F_COD 5
BEGIN BEGIN
PROMPT 50 50 "" PROMPT 50 50 ""
ITEM "TSCAU|TSCAU" ITEM "IPCAU|IPCAU"
FIELD COD FIELD COD
FLAGS "D" FLAGS "D"
KEY 1 KEY 1
@ -25,13 +25,13 @@ BEGIN
PROMPT 2 2 "" PROMPT 2 2 ""
USE LF_MULTIREL USE LF_MULTIREL
JOIN LF_CAUSALI INTO CODCAUS==FIRST JOIN LF_CAUSALI INTO CODCAUS==FIRST
JOIN &TCA INTO CODTAB==DATA JOIN &ICA INTO CODTAB==DATA
INPUT COD F_COD SELECT INPUT COD F_COD SELECT
INPUT FIRST F_CODTAB INPUT FIRST F_CODTAB
DISPLAY "Codice" FIRST DISPLAY "Codice" FIRST
DISPLAY "Descrizione@60" LF_CAUSALI->DESCR DISPLAY "Descrizione@60" LF_CAUSALI->DESCR
DISPLAY "Causale Teamsystem" DATA DISPLAY "Causale IPSOA" DATA
DISPLAY "Descrizione@50" &TCA->S0 DISPLAY "Descrizione@50" &ICA->S0
OUTPUT F_CODTAB FIRST OUTPUT F_CODTAB FIRST
OUTPUT F_CODTAB1 FIRST OUTPUT F_CODTAB1 FIRST
OUTPUT F_COD_CAMPO DATA OUTPUT F_COD_CAMPO DATA
@ -46,13 +46,13 @@ NUMBER F_CODTAB1 3
BEGIN BEGIN
PROMPT 2 2 "" PROMPT 2 2 ""
USE LF_CAUSALI USE LF_CAUSALI
JOIN LF_MULTIREL INTO COD=="TSCAU" FIRST==CODCAUS JOIN LF_MULTIREL INTO COD=="IPCAU" FIRST==CODCAUS
JOIN &TCA TO LF_MULTIREL INTO CODTAB==DATA JOIN &TCA TO LF_MULTIREL INTO CODTAB==DATA
INPUT CODCAUS F_CODTAB1 INPUT CODCAUS F_CODTAB1
DISPLAY "Cod." CODCAUS DISPLAY "Cod." CODCAUS
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
DISPLAY "Causale Teamsystem" LF_MULTIREL->DATA DISPLAY "Causale IPSOA" LF_MULTIREL->DATA
DISPLAY "Descrizione@50" &TCA->S0 DISPLAY "Descrizione@50" &ICA->S0
DISPLAY "Documento" TIPODOC DISPLAY "Documento" TIPODOC
DISPLAY "Registro" REG DISPLAY "Registro" REG
DISPLAY "Tipo movimento" TIPOMOV DISPLAY "Tipo movimento" TIPOMOV
@ -78,19 +78,19 @@ BEGIN
INPUT DESCR F_DESC INPUT DESCR F_DESC
DISPLAY "Descrizione@60" DESCR DISPLAY "Descrizione@60" DESCR
DISPLAY "Codice" CODCAUS DISPLAY "Codice" CODCAUS
DISPLAY "Causale Teamsystem" LF_MULTIREL->DATA DISPLAY "Causale IPSOA" LF_MULTIREL->DATA
DISPLAY "Descrizione@50" &TCA->S0 DISPLAY "Descrizione@50" &ICA->S0
COPY OUTPUT F_CODTAB1 COPY OUTPUT F_CODTAB1
KEY 2 KEY 2
GROUP 3 GROUP 3
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
NUMBER F_COD_CAMPO 3 NUMBER F_COD_CAMPO 4
BEGIN BEGIN
PROMPT 2 4 "Causale Teamsystem" PROMPT 2 4 "Causale IPSOA "
FIELD DATA FIELD DATA
USE &TCA USE &ICA
INPUT CODTAB F_COD_CAMPO INPUT CODTAB F_COD_CAMPO
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@60" S0 DISPLAY "Descrizione@60" S0

View File

@ -13,7 +13,7 @@ END
LIST F_COD 5 LIST F_COD 5
BEGIN BEGIN
PROMPT 50 50 "" PROMPT 50 50 ""
ITEM "TSCDP|TSCDP" ITEM "IPCDP|IPCDP"
FIELD COD FIELD COD
FLAGS "D" FLAGS "D"
KEY 1 KEY 1
@ -29,8 +29,8 @@ BEGIN
INPUT FIRST F_CODTAB INPUT FIRST F_CODTAB
DISPLAY "Codice" FIRST DISPLAY "Codice" FIRST
DISPLAY "Descrizione@60" %CPG->S0 DISPLAY "Descrizione@60" %CPG->S0
DISPLAY "Condizione TeamSystem" DATA DISPLAY "Condizione IPSOA" DATA
DISPLAY "Descrizione@50" &TPG->S0 DISPLAY "Descrizione@50" &IPG->S0
OUTPUT F_CODTAB FIRST OUTPUT F_CODTAB FIRST
OUTPUT F_CODTAB1 FIRST OUTPUT F_CODTAB1 FIRST
OUTPUT F_COD_CAMPO DATA OUTPUT F_COD_CAMPO DATA
@ -46,13 +46,13 @@ BEGIN
PROMPT 2 2 "" PROMPT 2 2 ""
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
USE %CPG USE %CPG
JOIN LF_MULTIREL INTO COD=="TSCDP" FIRST==CODTAB JOIN LF_MULTIREL INTO COD=="IPCDP" FIRST==CODTAB
JOIN &TPG TO LF_MULTIREL INTO CODTAB==DATA JOIN &IPG TO LF_MULTIREL INTO CODTAB==DATA
INPUT CODTAB F_CODTAB1 INPUT CODTAB F_CODTAB1
DISPLAY "Cod." CODTAB DISPLAY "Cod." CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Condizione TeamSystem" LF_MULTIREL->DATA DISPLAY "Condizione IPSOA" LF_MULTIREL->DATA
DISPLAY "Descrizione@50" &TPG->S0 DISPLAY "Descrizione@50" &IPG->S0
OUTPUT F_CODTAB CODTAB OUTPUT F_CODTAB CODTAB
OUTPUT F_CODTAB1 CODTAB OUTPUT F_CODTAB1 CODTAB
OUTPUT F_DESC S0 OUTPUT F_DESC S0
@ -67,14 +67,14 @@ STRING F_DESC 50
BEGIN BEGIN
PROMPT 10 2 "Descrizione " PROMPT 10 2 "Descrizione "
USE %CPG KEY 2 USE %CPG KEY 2
JOIN LF_MULTIREL INTO COD=="TSCDP" FIRST==CODTAB JOIN LF_MULTIREL INTO COD=="IPCDP" FIRST==CODTAB
JOIN &TPG TO LF_MULTIREL INTO CODTAB==DATA JOIN &IPG TO LF_MULTIREL INTO CODTAB==DATA
INPUT CODTAB F_CODTAB1 INPUT CODTAB F_CODTAB1
INPUT S0 F_DESC INPUT S0 F_DESC
DISPLAY "Descrizione@60" S0 DISPLAY "Descrizione@60" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Condizione TeamSystem" LF_MULTIREL->DATA DISPLAY "Condizione IPSOA" LF_MULTIREL->DATA
DISPLAY "Descrizione@50" &TPG->S0 DISPLAY "Descrizione@50" &IPG->S0
COPY OUTPUT F_CODTAB1 COPY OUTPUT F_CODTAB1
GROUP 3 GROUP 3
KEY 2 KEY 2
@ -83,9 +83,9 @@ END
NUMBER F_COD_CAMPO 4 NUMBER F_COD_CAMPO 4
BEGIN BEGIN
PROMPT 2 4 "Pagamento TeamSystem " PROMPT 2 4 "Pagamento IPSOA "
FIELD DATA FIELD DATA
USE &TPG USE &IPG
INPUT CODTAB F_COD_CAMPO INPUT CODTAB F_COD_CAMPO
DISPLAY "Cod." CODTAB DISPLAY "Cod." CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
@ -98,7 +98,7 @@ END
STRING F_DESC1 50 40 STRING F_DESC1 50 40
BEGIN BEGIN
PROMPT 32 4 "" PROMPT 32 4 ""
USE &TPG KEY 2 USE &IPG KEY 2
INPUT S0 F_DESC1 INPUT S0 F_DESC1
DISPLAY "Descrizione@60" S0 DISPLAY "Descrizione@60" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB

View File

@ -14,7 +14,7 @@ END
LIST F_COD 5 LIST F_COD 5
BEGIN BEGIN
PROMPT 50 50 "" PROMPT 50 50 ""
ITEM "TSIVA|TSIVA" ITEM "IPIVA|IPIVA"
FIELD COD FIELD COD
FLAGS "D" FLAGS "D"
KEY 1 KEY 1
@ -25,13 +25,13 @@ BEGIN
PROMPT 2 2 "" PROMPT 2 2 ""
USE LF_MULTIREL USE LF_MULTIREL
JOIN %IVA INTO CODTAB==FIRST JOIN %IVA INTO CODTAB==FIRST
JOIN &TIV INTO CODTAB==DATA JOIN &IIV INTO CODTAB==DATA
INPUT COD F_COD SELECT INPUT COD F_COD SELECT
INPUT FIRST F_CODTAB INPUT FIRST F_CODTAB
DISPLAY "Codice IVA" FIRST DISPLAY "Codice IVA" FIRST
DISPLAY "Descrizione@60" %IVA->S0 DISPLAY "Descrizione@60" %IVA->S0
DISPLAY "Codice IVA Teamsystem" DATA DISPLAY "Codice IVA IPSOA" DATA
DISPLAY "Descrizione@50" &TIV->S0 DISPLAY "Descrizione@50" &IIV->S0
OUTPUT F_CODTAB FIRST OUTPUT F_CODTAB FIRST
OUTPUT F_CODTAB1 FIRST OUTPUT F_CODTAB1 FIRST
OUTPUT F_COD_CAMPO DATA OUTPUT F_COD_CAMPO DATA
@ -49,13 +49,13 @@ BEGIN
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD FIRST FIELD FIRST
USE %IVA USE %IVA
JOIN LF_MULTIREL INTO COD=="TSIVA" FIRST==CODTAB JOIN LF_MULTIREL INTO COD=="IPIVA" FIRST==CODTAB
JOIN &TIV TO LF_MULTIREL INTO CODTAB==DATA JOIN &IIV TO LF_MULTIREL INTO CODTAB==DATA
INPUT CODTAB F_CODTAB1 INPUT CODTAB F_CODTAB1
DISPLAY "Cod." CODTAB DISPLAY "Cod." CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Codice IVA Teamsystem" LF_MULTIREL->DATA DISPLAY "Codice IVA IPSOA" LF_MULTIREL->DATA
DISPLAY "Descrizione@50" &TIV->S0 DISPLAY "Descrizione@50" &IIV->S0
OUTPUT F_CODTAB1 CODTAB OUTPUT F_CODTAB1 CODTAB
OUTPUT F_CODTAB CODTAB OUTPUT F_CODTAB CODTAB
OUTPUT F_DESC S0 OUTPUT F_DESC S0
@ -69,13 +69,13 @@ STRING F_DESC 50
BEGIN BEGIN
PROMPT 10 2 "Descrizione " PROMPT 10 2 "Descrizione "
USE %IVA KEY 2 USE %IVA KEY 2
JOIN LF_MULTIREL INTO COD=="TSIVA" FIRST==CODTAB JOIN LF_MULTIREL INTO COD=="IPIVA" FIRST==CODTAB
JOIN &TIV TO LF_MULTIREL INTO CODTAB==DATA JOIN &IIV TO LF_MULTIREL INTO CODTAB==DATA
INPUT S0 F_DESC INPUT S0 F_DESC
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Cod." CODTAB DISPLAY "Cod." CODTAB
DISPLAY "Codice IVA Teamsystem" LF_MULTIREL->DATA DISPLAY "Codice IVA IPSOA" LF_MULTIREL->DATA
DISPLAY "Descrizione@50" &TIV->S0 DISPLAY "Descrizione@50" &IIV->S0
COPY OUTPUT F_CODTAB1 COPY OUTPUT F_CODTAB1
KEY 2 KEY 2
GROUP 3 GROUP 3
@ -84,10 +84,10 @@ END
NUMBER F_COD_CAMPO 3 NUMBER F_COD_CAMPO 3
BEGIN BEGIN
PROMPT 2 4 "Codice IVA Teamsystem " PROMPT 2 4 "Codice IVA IPSOA "
FIELD DATA FIELD DATA
FLAGS "Z" FLAGS "Z"
USE &TIV USE &IIV
INPUT CODTAB F_COD_CAMPO INPUT CODTAB F_COD_CAMPO
DISPLAY "Cod." CODTAB DISPLAY "Cod." CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
@ -99,7 +99,7 @@ END
STRING F_DESC1 50 40 STRING F_DESC1 50 40
BEGIN BEGIN
PROMPT 32 4 "" PROMPT 32 4 ""
USE &TIV KEY 2 USE &IIV KEY 2
INPUT S0 F_DESC1 INPUT S0 F_DESC1
DISPLAY "Descrizione@60" S0 DISPLAY "Descrizione@60" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB

View File

@ -14,7 +14,7 @@ END
LIST F_COD 5 LIST F_COD 5
BEGIN BEGIN
PROMPT 50 50 "" PROMPT 50 50 ""
ITEM "TSNAZ|TSNAZ" ITEM "IPNAZ|IPNAZ"
FIELD COD FIELD COD
FLAGS "D" FLAGS "D"
KEY 1 KEY 1
@ -25,13 +25,13 @@ BEGIN
PROMPT 2 2 "" PROMPT 2 2 ""
USE LF_MULTIREL USE LF_MULTIREL
JOIN %STA INTO CODTAB==FIRST JOIN %STA INTO CODTAB==FIRST
JOIN &TNA INTO CODTAB==DATA JOIN &INA INTO CODTAB==DATA
INPUT COD F_COD SELECT INPUT COD F_COD SELECT
INPUT FIRST F_CODTAB INPUT FIRST F_CODTAB
DISPLAY "Codice stato" FIRST DISPLAY "Codice stato" FIRST
DISPLAY "Descrizione@60" %STA->S0 DISPLAY "Descrizione@60" %STA->S0
DISPLAY "Nazione Teamsystem" DATA DISPLAY "Nazione IPSOA" DATA
DISPLAY "Descrizione@50" &TNA->S0 DISPLAY "Descrizione@50" &INA->S0
OUTPUT F_CODTAB FIRST OUTPUT F_CODTAB FIRST
OUTPUT F_CODTAB1 FIRST OUTPUT F_CODTAB1 FIRST
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
@ -45,13 +45,13 @@ NUMBER F_CODTAB1 3
BEGIN BEGIN
PROMPT 2 2 "" PROMPT 2 2 ""
USE %STA USE %STA
JOIN LF_MULTIREL INTO COD=="TSNAZ" FIRST==CODTAB JOIN LF_MULTIREL INTO COD=="IPNAZ" FIRST==CODTAB
JOIN &TNA TO LF_MULTIREL INTO CODTAB==DATA JOIN &INA TO LF_MULTIREL INTO CODTAB==DATA
INPUT CODTAB F_CODTAB1 INPUT CODTAB F_CODTAB1
DISPLAY "Cod." CODTAB DISPLAY "Cod." CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Nazione Teamsystem" LF_MULTIREL->DATA DISPLAY "Nazione IPSOA" LF_MULTIREL->DATA
DISPLAY "Descrizione@50" &TNA->S0 DISPLAY "Descrizione@50" &INA->S0
OUTPUT F_CODTAB CODTAB OUTPUT F_CODTAB CODTAB
OUTPUT F_CODTAB1 CODTAB OUTPUT F_CODTAB1 CODTAB
OUTPUT F_DESC S0 OUTPUT F_DESC S0
@ -66,13 +66,13 @@ STRING F_DESC 50
BEGIN BEGIN
PROMPT 10 2 "Descrizione " PROMPT 10 2 "Descrizione "
USE %STA KEY 2 USE %STA KEY 2
JOIN LF_MULTIREL INTO COD=="TSNAZ" FIRST==CODTAB JOIN LF_MULTIREL INTO COD=="IPNAZ" FIRST==CODTAB
JOIN &TNA TO LF_MULTIREL INTO CODTAB==DATA JOIN &INA TO LF_MULTIREL INTO CODTAB==DATA
INPUT S0 F_DESC INPUT S0 F_DESC
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Cod." CODTAB DISPLAY "Cod." CODTAB
DISPLAY "Nazione Teamsystem" LF_MULTIREL->DATA DISPLAY "Nazione IPSOA" LF_MULTIREL->DATA
DISPLAY "Descrizione@50" &TNA->S0 DISPLAY "Descrizione@50" &INA->S0
COPY OUTPUT F_CODTAB1 COPY OUTPUT F_CODTAB1
KEY 2 KEY 2
GROUP 3 GROUP 3
@ -81,7 +81,7 @@ END
NUMBER F_COD_CAMPO 4 NUMBER F_COD_CAMPO 4
BEGIN BEGIN
PROMPT 2 4 "Nazione Teamsystem " PROMPT 2 4 "Nazione IPSOA "
FIELD DATA FIELD DATA
FLAGS "Z" FLAGS "Z"
USE &TNA USE &TNA
@ -96,7 +96,7 @@ END
STRING F_DESC1 50 40 STRING F_DESC1 50 40
BEGIN BEGIN
PROMPT 32 4 "" PROMPT 32 4 ""
USE &TNA KEY 2 USE &INA KEY 2
INPUT S0 F_DESC1 INPUT S0 F_DESC1
DISPLAY "Descrizione@60" S0 DISPLAY "Descrizione@60" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB

View File

@ -13,7 +13,7 @@ END
LIST F_COD 5 LIST F_COD 5
BEGIN BEGIN
PROMPT 50 50 "" PROMPT 50 50 ""
ITEM "TSREG|TSREG" ITEM "IPREG|IPREG"
FIELD COD FIELD COD
FLAGS "D" FLAGS "D"
KEY 1 KEY 1
@ -29,13 +29,12 @@ STRING F_CODTAB 3
BEGIN BEGIN
PROMPT 2 2 "" PROMPT 2 2 ""
USE LF_MULTIREL USE LF_MULTIREL
JOIN &TRE INTO CODTAB==DATA JOIN &IRE INTO CODTAB==DATA
INPUT COD F_COD SELECT INPUT COD F_COD SELECT
INPUT FIRST F_CODTAB INPUT FIRST F_CODTAB
DISPLAY "Codice registro" FIRST DISPLAY "Codice registro" FIRST
DISPLAY "Tipo" DATA[1,1] DISPLAY "Codice registro" CODICE
DISPLAY "Codice registro" DATA[2,3] DISPLAY "Descrizione@50" &IRE->S0
DISPLAY "Descrizione@50" &TRE->S0
OUTPUT F_CODTAB FIRST OUTPUT F_CODTAB FIRST
OUTPUT F_CODTAB1 FIRST OUTPUT F_CODTAB1 FIRST
FLAGS "UZ" FLAGS "UZ"
@ -49,15 +48,14 @@ STRING F_CODTAB1 3
BEGIN BEGIN
PROMPT 2 2 "" PROMPT 2 2 ""
USE REG USE REG
JOIN LF_MULTIREL INTO COD=="TSREG" FIRST==CODTAB[5,7] JOIN LF_MULTIREL INTO COD=="IPREG" FIRST==CODTAB[5,7]
JOIN &TRE TO LF_MULTIREL INTO CODTAB==DATA JOIN &IRE TO LF_MULTIREL INTO CODTAB==DATA
INPUT CODTAB[1,4] F_ANNO SELECT INPUT CODTAB[1,4] F_ANNO SELECT
INPUT CODTAB[5,7] F_COD_CAMPO INPUT CODTAB[5,7] F_COD_CAMPO
DISPLAY "Codice" CODTAB[5,7] DISPLAY "Codice" CODTAB[5,7]
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Tipo" LF_MULTIREL->DATA[1,1] DISPLAY "Codice registro" LF_MULTIREL->DATA
DISPLAY "Codice registro" LF_MULTIREL->DATA[2,3] DISPLAY "Descrizione@50" &IRE->S0
DISPLAY "Descrizione@50" &TRE->S0
OUTPUT F_CODTAB CODTAB[5,7] OUTPUT F_CODTAB CODTAB[5,7]
OUTPUT F_CODTAB1 CODTAB[5,7] OUTPUT F_CODTAB1 CODTAB[5,7]
OUTPUT F_DESC S0 OUTPUT F_DESC S0
@ -72,41 +70,28 @@ STRING F_DESC 50
BEGIN BEGIN
PROMPT 10 2 "" PROMPT 10 2 ""
USE REG KEY 2 USE REG KEY 2
JOIN LF_MULTIREL INTO COD=="TSREG" FIRST==CODTAB[5,7] JOIN LF_MULTIREL INTO COD=="IPREG" FIRST==CODTAB[5,7]
JOIN &TRE TO LF_MULTIREL INTO CODTAB==DATA JOIN &IRE TO LF_MULTIREL INTO CODTAB==DATA
INPUT S0 F_DESC INPUT S0 F_DESC
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Anno" CODTAB[1,4] DISPLAY "Anno" CODTAB[1,4]
DISPLAY "Codice" CODTAB[5,7] DISPLAY "Codice" CODTAB[5,7]
DISPLAY "Tipo" LF_MULTIREL->DATA[1,1] DISPLAY "Codice registro IPSOA" LF_MULTIREL->DATA
DISPLAY "Codice registro" LF_MULTIREL->DATA[2,3] DISPLAY "Descrizione@50" &IRE->S0
DISPLAY "Descrizione@50" &TRE->S0
COPY OUTPUT F_CODTAB1 COPY OUTPUT F_CODTAB1
KEY 2 KEY 2
GROUP 3 GROUP 3
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
LIST F_TIPO 1 13
BEGIN
PROMPT 2 4 "Tipo "
ITEM "A|Acquisti"
ITEM "C|Corrispettivi"
ITEM "V|Vendite"
FIELD DATA[1,1]
END
STRING F_COD_CAMPO 2 STRING F_COD_CAMPO 2
BEGIN BEGIN
PROMPT 2 6 "Registro TeamSystem" PROMPT 2 6 "Registro IPSOA"
FIELD DATA[2,3] FIELD DATA
USE &TRE USE &IRE
INPUT CODTAB[1,1] F_TIPO INPUT CODTAB F_COD_CAMPO
INPUT CODTAB[2,3] F_COD_CAMPO
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_TIPO CODTAB[1,1]
OUTPUT F_COD_CAMPO CODTAB[2,3]
OUTPUT F_DESC1 S0 OUTPUT F_DESC1 S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
@ -114,7 +99,7 @@ END
STRING F_DESC1 50 40 STRING F_DESC1 50 40
BEGIN BEGIN
PROMPT 32 6 "" PROMPT 32 6 ""
USE &TRE KEY 2 USE &IRE KEY 2
INPUT S0 F_DESC1 INPUT S0 F_DESC1
DISPLAY "Descrizione@60" S0 DISPLAY "Descrizione@60" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB

109
tc/tcipval.uml Executable file
View File

@ -0,0 +1,109 @@
#include "tcts.h"
TOOLBAR "topbar" 0 0 0 2
#include "relapbar.h"
ENDPAGE
PAGE "Valute" 0 2 0 0
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 1 "Codice Valuta Campo "
END
LIST F_COD 5
BEGIN
PROMPT 50 50 ""
ITEM "IPVAL|IPVAL"
FIELD COD
FLAGS "D"
KEY 1
END
STRING F_CODTAB 3
BEGIN
PROMPT 2 2 ""
USE LF_MULTIREL
JOIN %VAL INTO CODTAB==FIRST
JOIN &IVA INTO CODTAB==DATA
INPUT COD F_COD SELECT
INPUT FIRST F_CODTAB
DISPLAY "Codice valuta" FIRST
DISPLAY "Descrizione@60" %VAL->S0
DISPLAY "Sigla valuta IPSOA" DATA
DISPLAY "Descrizione@50" &IVA->S0
OUTPUT F_CODTAB FIRST
OUTPUT F_DESC %VAL->S0
OUTPUT F_COD_CAMPO DATA
CHECKTYPE REQUIRED
FIELD FIRST
FLAGS "UZG"
KEY 1
GROUP 1
END
STRING F_CODTAB1 3
BEGIN
PROMPT 2 2 ""
USE %VAL
JOIN LF_MULTIREL INTO COD=="IPVAL" FIRST==CODTAB
JOIN &IVA TO LF_MULTIREL INTO CODTAB==DATA
INPUT CODTAB F_CODTAB1
DISPLAY "Cod." CODTAB
DISPLAY "Descrizione@50" S0
DISPLAY "Sigla valuta IPSOA" LF_MULTIREL->DATA
DISPLAY "Descrizione@50" &IVA->S0
OUTPUT F_CODTAB CODTAB
OUTPUT F_CODTAB1 CODTAB
OUTPUT F_DESC S0
CHECKTYPE REQUIRED
FIELD FIRST
FLAGS "UZ"
KEY 1
GROUP 2
END
STRING F_DESC 50
BEGIN
PROMPT 10 2 "Descrizione "
USE %VAL KEY 2
JOIN LF_MULTIREL INTO COD=="IPVAL" FIRST==CODTAB
JOIN &IVA TO LF_MULTIREL INTO CODTAB==DATA
INPUT S0 F_DESC
DISPLAY "Descrizione@50" S0
DISPLAY "Cod." CODTAB
DISPLAY "Sigla valuta IPSOA" LF_MULTIREL->DATA
DISPLAY "Descrizione@50" &IVA->S0
COPY OUTPUT F_CODTAB1
KEY 2
GROUP 3
CHECKTYPE REQUIRED
END
STRING F_COD_CAMPO 3
BEGIN
PROMPT 2 4 "Codice Valuta IPSOA "
FIELD DATA
FLAGS "UZ"
USE &IVA
INPUT CODTAB F_COD_CAMPO
DISPLAY "Cod." CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_COD_CAMPO CODTAB
OUTPUT F_DESC1 S0
CHECKTYPE REQUIRED
END
STRING F_DESC1 50 35
BEGIN
PROMPT 37 4 ""
USE &IVA KEY 2
INPUT S0 F_DESC1
DISPLAY "Descrizione@60" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_COD_CAMPO
END
ENDPAGE
ENDMASK

View File

@ -127,8 +127,8 @@ Item_01 = "Causali", "tc2 -0 &ICA", ""
Item_02 = "Condizioni di pagamento", "tc2 -0 &IPG", "" Item_02 = "Condizioni di pagamento", "tc2 -0 &IPG", ""
Item_03 = "Stati esteri", "tc2 -0 &INA", "" Item_03 = "Stati esteri", "tc2 -0 &INA", ""
Item_04 = "Registri", "tc2 -0 &IRE", "" Item_04 = "Registri", "tc2 -0 &IRE", ""
Item_05 = "Codici IVA", "tc2 -0 &TIV", "" Item_05 = "Codici IVA", "tc2 -0 &IIV", ""
Item_06 = "Valute", "tc2 -0 &IIV", "" Item_06 = "Valute", "tc2 -0 &IVA", ""
Item_07 = "Attività", "tc2 -0 &IAT", "" Item_07 = "Attività", "tc2 -0 &IAT", ""
Item_08 = "Piano dei conti", "tc2 -0 &ICO", "" Item_08 = "Piano dei conti", "tc2 -0 &ICO", ""

2
tc/tctbiat.h Executable file
View File

@ -0,0 +1,2 @@
#define F_CODTAB 102
#define F_DESC 103

2
tc/tctbica.h Executable file
View File

@ -0,0 +1,2 @@
#define F_CODTAB 102
#define F_DESC 103

View File

@ -1,3 +1,4 @@
#define F_CODTAB 100
#define F_CODTAB1 101 #define F_CODTAB1 101
#define F_CODTAB2 102 #define F_CODTAB2 102
#define F_CODTAB3 103 #define F_CODTAB3 103

View File

@ -13,97 +13,57 @@ END
STRING F_CODTAB1 12 STRING F_CODTAB1 12
BEGIN BEGIN
PROMPT 2 2 "Codice : 1 " PROMPT 2 2 "Codice "
USE &ICO CHECKTYPE NORMAL
INPUT CODTAB[1,2] F_CODTAB1 FLAGS "B"
INPUT CODTAB[3,4] F_CODTAB2
INPUT CODTAB[5,6] F_CODTAB3
INPUT CODTAB[7,8] F_CODTAB4
INPUT CODTAB[9,10] F_CODTAB5
INPUT CODTAB[11,12] F_CODTAB6
DISPLAY "Livello 1" CODTAB[1,2]
DISPLAY "Livello 2" CODTAB[3,4]
DISPLAY "Livello 3" CODTAB[5,6]
DISPLAY "Livello 4" CODTAB[7,8]
DISPLAY "Livello 5" CODTAB[9,10]
DISPLAY "Livello 6" CODTAB[11,12]
DISPLAY "Descrizione@60" S0
OUTPUT F_CODTAB1 CODTAB[1,2]
OUTPUT F_CODTAB2 CODTAB[3,4]
OUTPUT F_CODTAB3 CODTAB[5,6]
OUTPUT F_CODTAB4 CODTAB[7,8]
OUTPUT F_CODTAB5 CODTAB[9,10]
OUTPUT F_CODTAB6 CODTAB[11,12]
OUTPUT F_DESC S0
CHECKTYPE REQUIRED
FIELD CODTAB[1,2]
KEY 1 KEY 1
END END
STRING F_CODTAB2 2 STRING F_CODTAB2 12
BEGIN BEGIN
PROMPT 20 2 "2 " PROMPT 20 2 "2 "
COPY ALL F_CODTAB1 CHECKTYPE SEARCH
CHECKTYPE SEARCH FLAGS "B"
FIELD CODTAB[3,4]
VALIDATE FIXLEN_FUNC 2
KEY 1 KEY 1
END END
STRING F_CODTAB3 2 STRING F_CODTAB3 12
BEGIN BEGIN
PROMPT 26 2 "3 " PROMPT 26 2 "3 "
COPY ALL F_CODTAB1 CHECKTYPE SEARCH
CHECKTYPE SEARCH FLAGS "B"
FIELD CODTAB[5,6]
VALIDATE FIXLEN_FUNC 2
KEY 1 KEY 1
END END
STRING F_CODTAB4 2 STRING F_CODTAB4 12
BEGIN BEGIN
PROMPT 26 2 "4 " PROMPT 26 2 "4 "
COPY ALL F_CODTAB1 CHECKTYPE SEARCH
CHECKTYPE SEARCH FLAGS "B"
FIELD CODTAB[7,8]
VALIDATE FIXLEN_FUNC 2
KEY 1 KEY 1
END END
STRING F_CODTAB5 2 STRING F_CODTAB5 12
BEGIN BEGIN
PROMPT 26 2 "5 " PROMPT 26 2 "5 "
COPY ALL F_CODTAB1 CHECKTYPE SEARCH
CHECKTYPE SEARCH FLAGS "B"
FIELD CODTAB[9,10]
VALIDATE FIXLEN_FUNC 2
KEY 1 KEY 1
END END
STRING F_CODTAB6 2 STRING F_CODTAB6 12
BEGIN BEGIN
PROMPT 26 2 "4 " PROMPT 26 2 "6 "
COPY ALL F_CODTAB1 CHECKTYPE SEARCH
CHECKTYPE SEARCH FLAGS "B"
FIELD CODTAB[11,12]
VALIDATE FIXLEN_FUNC 2
KEY 1 KEY 1
END END
STRING F_DESC 50 STRING F_DESC 50
BEGIN BEGIN
PROMPT 2 5 "Descrizione " PROMPT 2 5 "Descrizione "
USE &ICO KEY 2
INPUT S0 F_DESC
DISPLAY "Descrizione@60" S0
DISPLAY "Livello 1" CODTAB[1,2]
DISPLAY "Livello 2" CODTAB[3,4]
DISPLAY "Livello 3" CODTAB[5,6]
DISPLAY "Livello 4" CODTAB[7,8]
DISPLAY "Livello 5" CODTAB[9,10]
DISPLAY "Livello 6" CODTAB[11,12]
COPY OUTPUT F_CODTAB
FIELD S0 FIELD S0
FLAGS "B"
KEY 2 KEY 2
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END

2
tc/tctbiiv.h Executable file
View File

@ -0,0 +1,2 @@
#define F_CODTAB 102
#define F_DESC 103

2
tc/tctbina.h Executable file
View File

@ -0,0 +1,2 @@
#define F_CODTAB 102
#define F_DESC 103

2
tc/tctbipg.h Executable file
View File

@ -0,0 +1,2 @@
#define F_CODTAB 102
#define F_DESC 103

View File

@ -11,7 +11,7 @@ BEGIN
PROMPT 1 1 "Codice Pagamento IPSOA" PROMPT 1 1 "Codice Pagamento IPSOA"
END END
NUMBER F_CODTAB 4 NUMBER F_CODTAB 3
BEGIN BEGIN
PROMPT 2 2 "Codice " PROMPT 2 2 "Codice "
USE &IPG USE &IPG

2
tc/tctbiva.h Executable file
View File

@ -0,0 +1,2 @@
#define F_CODTAB 102
#define F_DESC 103