Patch level : 10.0 NO PATCH
Files correlati : tc2 e tabelle Ricompilazione Demo : [ ] Commento : Aggiunti i programmi tc2 - Trasefrimento ipsoa git-svn-id: svn://10.65.10.50/branches/R_10_00@21107 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
7cc06c1ce1
commit
96cd5b4c1b
27
tc/tc2.cpp
Executable file
27
tc/tc2.cpp
Executable file
@ -0,0 +1,27 @@
|
||||
#include <xvt.h>
|
||||
|
||||
#include "tc2.h"
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
const int op = argc < 2 ? 0 : argv[1][1]-'0';
|
||||
switch (op)
|
||||
{
|
||||
// case 1: tc2200(argc,argv); break;
|
||||
case 2: tc2300(argc,argv); break; // parametri ditta
|
||||
// case 3: tc2400(argc,argv); break;
|
||||
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 7: tc2800(argc,argv); break; // Riclassificazione conti TeamSystem
|
||||
case 8: tc2900(argc,argv); break; // COnverione archivi CAMPO
|
||||
default: ; tc2100(argc,argv); break;
|
||||
}
|
||||
exit(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
26
tc/tc2.h
Executable file
26
tc/tc2.h
Executable file
@ -0,0 +1,26 @@
|
||||
#ifndef __tc2_H
|
||||
#define __tc2_H
|
||||
|
||||
int tc2100(int argc, char* argv[]);
|
||||
int tc2300(int argc, char* argv[]);
|
||||
int tc2500(int argc, char* argv[]);
|
||||
int tc2600(int argc, char* argv[]);
|
||||
int tc2700(int argc, char* argv[]);
|
||||
int tc2800(int argc, char* argv[]);
|
||||
int tc2900(int argc, char* argv[]);
|
||||
|
||||
#endif // __tc2_H
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
55
tc/tc2100.cpp
Executable file
55
tc/tc2100.cpp
Executable file
@ -0,0 +1,55 @@
|
||||
#include "tc2.h"
|
||||
|
||||
// gestione tabelle Zucchetti
|
||||
#include <modaut.h>
|
||||
#include <modtbapp.h>
|
||||
#include <tabutil.h>
|
||||
|
||||
|
||||
// applicazione per la gestione delle tabelle di magazzino
|
||||
class Tab_app_teamsystem : public TTable_module_application
|
||||
{
|
||||
|
||||
protected: // TRelation_application
|
||||
virtual bool user_create() ;
|
||||
|
||||
public:
|
||||
Tab_app_teamsystem() {}
|
||||
virtual ~Tab_app_teamsystem() {}
|
||||
};
|
||||
|
||||
HIDDEN inline Tab_app_teamsystem& app() { return (Tab_app_teamsystem&)main_app(); }
|
||||
|
||||
|
||||
bool Tab_app_teamsystem::user_create()
|
||||
{
|
||||
/*
|
||||
la Tab_application::user_create() apre la maschera TMask in modo automatico
|
||||
basandosi sul parametro passato sulla linea di comando e sulla convenzione
|
||||
nome = "BATB"+parametro;
|
||||
ORA:
|
||||
- questa convenzione cambierà per separare i programmi (e le maschere)
|
||||
dei vari pacchetti
|
||||
In tal caso ridefinire il metodo virtual mask_name()
|
||||
- secondo il nuovo stile, gli handler vanno posti in maschere derivate
|
||||
dalla TMask (TMask_tabzucc, TMask_tabcau, ecc), pertanto occorre che
|
||||
la maschera aperta sia del tipo corretto
|
||||
per questo motivo la maschera viene creata dalla user_create()
|
||||
*/
|
||||
|
||||
bool ok = TTable_module_application::user_create();
|
||||
|
||||
if (ok)
|
||||
{
|
||||
//TMask& mask = *set_mask();
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
int tc2100(int argc, char **argv)
|
||||
{
|
||||
Tab_app_teamsystem a;
|
||||
a.run(argc, argv, TR("Tabella"));
|
||||
return 0;
|
||||
}
|
265
tc/tc2300.cpp
Executable file
265
tc/tc2300.cpp
Executable file
@ -0,0 +1,265 @@
|
||||
#include <confapp.h>
|
||||
#include <msksheet.h>
|
||||
#include <progind.h>
|
||||
#include <recset.h>
|
||||
#include <recarray.h>
|
||||
#include <relation.h>
|
||||
|
||||
#include "../include/attiv.h"
|
||||
#include "../include/mov.h"
|
||||
#include "../cg/cglib01.h"
|
||||
#include "tcconf.h"
|
||||
|
||||
class TTS_confditta : public TConfig_application
|
||||
{
|
||||
char _current;
|
||||
|
||||
static bool check_fields(TMask_field& f, KEY k);
|
||||
// @cmember:(INTERNAL) Salva i parametri dalla maschera
|
||||
virtual void save_mask(bool tosave);
|
||||
virtual void load_mask();
|
||||
public:
|
||||
// @cmember Disabilita la verifica del modulo in chiave
|
||||
virtual bool check_autorization() const { return FALSE; }
|
||||
|
||||
virtual bool preprocess_config (TMask& mask, TConfig& config);
|
||||
virtual bool postprocess_config (TMask& mask, TConfig& config);
|
||||
virtual bool user_create( );
|
||||
virtual bool user_destroy( );
|
||||
|
||||
TTS_confditta() : TConfig_application( CONFIG_DITTA ){ }
|
||||
virtual ~TTS_confditta( ){ }
|
||||
};
|
||||
|
||||
bool sh_notify(TSheet_field& s, int r, KEY k)
|
||||
{
|
||||
if (k == K_TAB)
|
||||
{
|
||||
TMask& m = s.mask();
|
||||
const bool use_pcn = m.get_bool(F_USECMPCN);
|
||||
const int r = s.selected();
|
||||
TMask & mr = s.sheet_mask();
|
||||
TToken_string & row = s.row(r);
|
||||
|
||||
row.add(use_pcn ? "X" : " ", 4);
|
||||
s.check_row(r);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TTS_confditta::check_fields(TMask_field& f, KEY k)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void TTS_confditta::load_mask()
|
||||
{
|
||||
TMask* mask = get_mask();
|
||||
|
||||
if (mask != NULL)
|
||||
{
|
||||
TConfig_application::load_mask();
|
||||
TConfig& config = *get_config();
|
||||
TSheet_field& sa = mask->sfield(F_SHEET_ATTIV);
|
||||
TAssoc_array ditte;
|
||||
const bool use_pcn = config.get_bool("TSUSECMPCN");
|
||||
int i = 0;
|
||||
|
||||
for (i = 0; config.exist("TSDATT", i); i++)
|
||||
{
|
||||
const TString8 att(config.get("TSDATT", NULL, i));
|
||||
const TString8 ditta(config.get("TSDDITTA", NULL, i));
|
||||
|
||||
if (att.full())
|
||||
ditte.add(att, ditta);
|
||||
TToken_string& row = sa.row(i);
|
||||
|
||||
row.add(att);
|
||||
|
||||
const TString & descr = cache().get("%AIS", att, "S0");
|
||||
|
||||
row.add(descr);
|
||||
row.add(ditta);
|
||||
sa.check_row(i);
|
||||
}
|
||||
|
||||
TString query;
|
||||
const long firm = mask->get_long(F_CODDITTA);
|
||||
|
||||
query.format("USE %d SELECT ATTPREV!=\"X\"\nFROM CODDITTA=%ld\nTO CODDITTA=%ld\n", LF_ATTIV, firm, firm);
|
||||
TISAM_recordset attrec(query);
|
||||
|
||||
for (bool ok = attrec.move_first(); ok; ok = attrec.move_next())
|
||||
|
||||
{
|
||||
const TString8 codatt = attrec.get(ATT_CODATT).as_string();
|
||||
if (ditte.objptr(codatt) == NULL)
|
||||
{
|
||||
TToken_string& row = sa.row(i);
|
||||
|
||||
row.add(codatt);
|
||||
|
||||
const TString & descr = cache().get("%AIS", codatt, "S0");
|
||||
|
||||
row.add(descr);
|
||||
row.add("");
|
||||
sa.check_row(i);
|
||||
}
|
||||
}
|
||||
|
||||
TSheet_field& si = mask->sfield(F_SHEET_IVA);
|
||||
|
||||
si.set_notify(sh_notify);
|
||||
|
||||
for (i = 0; config.exist("TSGIVA", i); i++)
|
||||
{
|
||||
TToken_string& row = si.row(i);
|
||||
row.add(config.get("TSGIVA", NULL, i));
|
||||
row.add(config.get("TSCIVA", NULL, i));
|
||||
row.add(config.get("TSSIVA", NULL, i));
|
||||
row.add(use_pcn ? "X" : " ", 4);
|
||||
si.check_row(i);
|
||||
}
|
||||
|
||||
TSheet_field& sr = mask->sfield(F_SHEET_RIT);
|
||||
|
||||
sr.set_notify(sh_notify);
|
||||
|
||||
for (i = 0; config.exist("TSGRIT", i); i++)
|
||||
{
|
||||
TToken_string& row = sr.row(i);
|
||||
row.add(config.get("TSGRIT", NULL, i));
|
||||
row.add(config.get("TSCRIT", NULL, i));
|
||||
row.add(config.get("TSSRIT", NULL, i));
|
||||
row.add(use_pcn ? "X" : " ", 4);
|
||||
sr.check_row(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTS_confditta::save_mask(bool tosave)
|
||||
{
|
||||
if (tosave)
|
||||
{
|
||||
const TMask & m = *get_mask();
|
||||
|
||||
if (m.get_bool(F_RIPRISTINO))
|
||||
{
|
||||
const TDate from(m.get(F_ULTINVIO));
|
||||
TEsercizi_contabili esc;
|
||||
const TEsercizio & e = esc.esercizio(esc.date2esc(from));
|
||||
const TDate to(e.fine());
|
||||
|
||||
TString query = "USE MOV KEY 2 SELECT INVIATO==\"X\"";
|
||||
|
||||
query << "\nFROM DATAREG=#DATA_DA";
|
||||
query << "\nTO DATAREG=#DATA_AL";
|
||||
|
||||
TISAM_recordset mov(query);
|
||||
|
||||
mov.set_var("#DATA_DA", TVariant(from));
|
||||
mov.set_var("#DATA_AL", TVariant(to));
|
||||
|
||||
if (mov.items() >0L)
|
||||
{
|
||||
TProgind pi(mov.items(), TR("Ripristino movimenti"), true, true);
|
||||
TLocalisamfile cgmov(LF_MOV);
|
||||
|
||||
for (bool ok = mov.move_first(); ok; ok = mov.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
const long numreg = mov.get(MOV_NUMREG).as_int();
|
||||
|
||||
cgmov.put(MOV_NUMREG, numreg);
|
||||
if (cgmov.read(_isequal, _lock) == NOERR)
|
||||
{
|
||||
cgmov.zero(MOV_INVIATO);
|
||||
cgmov.rewrite();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TConfig& config = *get_config();
|
||||
int i = 0;
|
||||
|
||||
for (i = 0; config.exist("TSGIVA", i); i++)
|
||||
{
|
||||
config.remove("TSDATT", i);
|
||||
config.remove("TSDITTA", i);
|
||||
}
|
||||
|
||||
TSheet_field& sa = m.sfield(F_SHEET_ATTIV);
|
||||
|
||||
FOR_EACH_SHEET_ROW(sa, jd, rowd)
|
||||
{
|
||||
config.set("TSDATT", rowd->get(0), NULL, true, jd);
|
||||
config.set("TSDDITTA", rowd->get(2), NULL, true, jd);
|
||||
}
|
||||
|
||||
for (i = 0; config.exist("TSGIVA", i); i++)
|
||||
{
|
||||
config.remove("TSGIVA", i);
|
||||
config.remove("TSCIVA", i);
|
||||
config.remove("TSSIVA", i);
|
||||
}
|
||||
|
||||
TSheet_field& si = m.sfield(F_SHEET_IVA);
|
||||
|
||||
FOR_EACH_SHEET_ROW(si, j, row)
|
||||
{
|
||||
config.set("TSGIVA", row->get(0), NULL, true, j);
|
||||
config.set("TSCIVA", row->get(1), NULL, true, j);
|
||||
config.set("TSSIVA", row->get(2), NULL, true, j);
|
||||
}
|
||||
|
||||
for (i = 0; config.exist("TSGRIT", i); i++)
|
||||
{
|
||||
config.remove("TSGRIT", i);
|
||||
config.remove("TSCRIT", i);
|
||||
config.remove("TSSRIT", i);
|
||||
}
|
||||
|
||||
TSheet_field& sr = m.sfield(F_SHEET_RIT);
|
||||
|
||||
FOR_EACH_SHEET_ROW(sr, jr, rowr)
|
||||
{
|
||||
config.set("TSGRIT", rowr->get(0), NULL, true, jr);
|
||||
config.set("TSCRIT", rowr->get(1), NULL, true, jr);
|
||||
config.set("TSSRIT", rowr->get(2), NULL, true, jr);
|
||||
}
|
||||
}
|
||||
TConfig_application::save_mask(tosave);
|
||||
}
|
||||
|
||||
bool TTS_confditta::preprocess_config (TMask& mask, TConfig& config)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TTS_confditta::postprocess_config (TMask& mask, TConfig& config)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool TTS_confditta::user_create( )
|
||||
{
|
||||
TConfig conf(CONFIG_DITTA);
|
||||
|
||||
conf.set( "EdMask", "tc2300a", "tc");
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TTS_confditta::user_destroy( )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
int tc2300(int argc, char* argv[])
|
||||
{
|
||||
TTS_confditta appc;
|
||||
appc.run(argc, argv, TR("Parametri ditta TeamSystem"));
|
||||
return 0;
|
||||
}
|
93
tc/tc2500.cpp
Executable file
93
tc/tc2500.cpp
Executable file
@ -0,0 +1,93 @@
|
||||
#include <tabapp.h>
|
||||
|
||||
#include "tc2.h"
|
||||
#include "tcts.h"
|
||||
|
||||
class TTeamSystem_multirel_app : public TMultirel_application
|
||||
{
|
||||
bool _use_tab;
|
||||
|
||||
protected:
|
||||
virtual void set_descr(TMask & m, const TString & desc);
|
||||
virtual void get_mask_name(TString& tabname) const;
|
||||
//magico metodo per impedire la navigazione su tabelle diverse da quella corrente del cursore
|
||||
virtual bool has_filtered_cursor() const { return true; }
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_query_insert_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m);
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
virtual bool user_create();
|
||||
|
||||
public:
|
||||
|
||||
TTeamSystem_multirel_app() : _use_tab(true) {}
|
||||
virtual ~TTeamSystem_multirel_app() {}
|
||||
};
|
||||
|
||||
void TTeamSystem_multirel_app::set_descr(TMask & m, const TString & desc)
|
||||
{
|
||||
m.set(F_DESC, desc);
|
||||
}
|
||||
|
||||
void TTeamSystem_multirel_app::get_mask_name(TString& tabname) const
|
||||
{
|
||||
TMultirel_application::get_mask_name(tabname);
|
||||
tabname.overwrite("ts", 2);
|
||||
}
|
||||
|
||||
void TTeamSystem_multirel_app::init_query_mode(TMask& m)
|
||||
{
|
||||
TMultirel_application::init_query_mode(m);
|
||||
m.show(-1);
|
||||
m.hide(-2);
|
||||
m.enable(-3, _use_tab);
|
||||
}
|
||||
|
||||
void TTeamSystem_multirel_app::init_query_insert_mode(TMask& m)
|
||||
{
|
||||
TMultirel_application::init_query_insert_mode(m);
|
||||
m.show(-1, !_use_tab);
|
||||
m.show(-2, _use_tab);
|
||||
m.enable(-3, _use_tab);
|
||||
}
|
||||
|
||||
void TTeamSystem_multirel_app::init_modify_mode(TMask& m)
|
||||
{
|
||||
TMultirel_application::init_modify_mode(m);
|
||||
m.show(-1);
|
||||
m.disable(-1);
|
||||
m.hide(-2);
|
||||
m.disable(-3);
|
||||
}
|
||||
|
||||
void TTeamSystem_multirel_app::init_insert_mode(TMask& m)
|
||||
{
|
||||
TMultirel_application::init_insert_mode(m);
|
||||
m.show(-1);
|
||||
m.disable(-1);
|
||||
m.hide(-2);
|
||||
m.disable(-3);
|
||||
}
|
||||
|
||||
bool TTeamSystem_multirel_app::user_create()
|
||||
{
|
||||
bool ok = TMultirel_application::user_create();
|
||||
|
||||
if (ok)
|
||||
{
|
||||
TConfig config(CONFIG_DITTA);
|
||||
_use_tab = config.get_bool("TSUSECMTAB");
|
||||
TMask & m = *get_mask();
|
||||
|
||||
m.show(-10, _use_tab);
|
||||
m.show(-20, !_use_tab);
|
||||
set_search_field(F_CODTAB);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
int tc2500(int argc, char* argv[])
|
||||
{
|
||||
TTeamSystem_multirel_app a;
|
||||
a.run(argc, argv, TR("Tabella"));
|
||||
return 0;
|
||||
}
|
375
tc/tc2600.cpp
Executable file
375
tc/tc2600.cpp
Executable file
@ -0,0 +1,375 @@
|
||||
#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;
|
||||
}
|
83
tc/tc2600a.uml
Executable file
83
tc/tc2600a.uml
Executable file
@ -0,0 +1,83 @@
|
||||
#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
|
393
tc/tc2700.cpp
Executable file
393
tc/tc2700.cpp
Executable file
@ -0,0 +1,393 @@
|
||||
#include "tc2.h"
|
||||
#include "tc2700.h"
|
||||
#include "tc2700a.h"
|
||||
|
||||
#include <progind.h>
|
||||
#include <reprint.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include <anagr.h>
|
||||
#include <anafis.h>
|
||||
#include <clifo.h>
|
||||
#include <comuni.h>
|
||||
#include <causali.h>
|
||||
#include <nditte.h>
|
||||
#include <attiv.h>
|
||||
#include <mov.h>
|
||||
#include <pconti.h>
|
||||
#include <rmov.h>
|
||||
#include <rmoviva.h>
|
||||
#include <multirel.h>
|
||||
|
||||
#include "../cg/cglib01.h"
|
||||
#include "../cg/cg2103.h"
|
||||
|
||||
bool TTS_mask::apply_filter(const TRecordset& righe) const
|
||||
{
|
||||
const TDate dal = get(F_DATA_DA);
|
||||
const TDate al = get(F_DATA_AL);
|
||||
if (dal.ok() || al.ok())
|
||||
{
|
||||
const TDate scad = righe.get("DATASCAD").as_date();
|
||||
if ((dal.ok() && scad < dal) || (al.ok() && scad > al))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TTS_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
bool ok = true;
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_DATA_DA:
|
||||
case F_DATA_AL:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TTS_mask::serialize(bool bSave)
|
||||
{
|
||||
const char* defpar = "tc";
|
||||
TConfig ini(CONFIG_DITTA, defpar);
|
||||
for (int i = fields()-1; i >= 0; i--)
|
||||
{
|
||||
TMask_field& f = fld(i);
|
||||
const TFieldref* fr = f.field();
|
||||
if (fr != NULL)
|
||||
{
|
||||
if (bSave)
|
||||
fr->write(ini, defpar, f.get());
|
||||
else
|
||||
f.set(fr->read(ini, defpar));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TTS_mask::TTS_mask(const char * maskname)
|
||||
: TAutomask(maskname), _updating(false), _next_update(0)
|
||||
{
|
||||
serialize(false);
|
||||
}
|
||||
|
||||
TTS_mask::~TTS_mask()
|
||||
{
|
||||
serialize(true);
|
||||
}
|
||||
|
||||
bool TTS_campo_sender::destroy()
|
||||
{
|
||||
delete _mask;
|
||||
return TTS_sender::destroy();
|
||||
}
|
||||
|
||||
TRecordset & TTS_campo_sender::movrecset()
|
||||
{
|
||||
const TMask & m = get_mask();
|
||||
const TDate from = m.get_date(F_DATA_DA);
|
||||
const TDate to = m.get_date(F_DATA_AL);
|
||||
TRecordset * mov = get_recset(LF_MOV);
|
||||
|
||||
if (mov == NULL)
|
||||
{
|
||||
TString query = "USE MOV KEY 2 SELECT INVIATO!=\"X\"";
|
||||
|
||||
query << "\nFROM DATAREG=#DATA_DA";
|
||||
query << "\nTO DATAREG=#DATA_AL";
|
||||
|
||||
mov = set_recset(LF_MOV, ::create_recordset(query));
|
||||
}
|
||||
mov->set_var("#DATA_DA", TVariant(from));
|
||||
mov->set_var("#DATA_AL", TVariant(to));
|
||||
return *mov;
|
||||
}
|
||||
|
||||
TRecordset & TTS_campo_sender::rmovrecset(const TRecordset & mov)
|
||||
{
|
||||
TRecordset * rmov = get_recset(LF_RMOV);
|
||||
|
||||
if (rmov == NULL)
|
||||
rmov = set_recset(LF_RMOV, ::create_recordset("USE RMOV\nFROM NUMREG=#NUMREG\nTO NUMREG=#NUMREG"));
|
||||
|
||||
const TVariant & numreg = mov.get(MOV_NUMREG);
|
||||
|
||||
if (numreg != rmov->get("#NUMREG"))
|
||||
rmov->set_var("#NUMREG", numreg);
|
||||
return *rmov;
|
||||
}
|
||||
|
||||
TRecordset & TTS_campo_sender::rivarecset(const TRecordset & mov)
|
||||
{
|
||||
TRecordset * rmoviva = get_recset(LF_RMOVIVA);
|
||||
|
||||
if (rmoviva == NULL)
|
||||
rmoviva = set_recset(LF_RMOVIVA, ::create_recordset("USE RMOVIVA\nFROM NUMREG=#NUMREG\nTO NUMREG=#NUMREG"));
|
||||
|
||||
const TVariant & numreg = mov.get(MOV_NUMREG);
|
||||
|
||||
if (numreg != rmoviva->get("#NUMREG"))
|
||||
rmoviva->set_var("#NUMREG", numreg);
|
||||
return *rmoviva;
|
||||
}
|
||||
|
||||
const TRecordset& TTS_campo_sender::clirecset(const char tipocf, const long codcf)
|
||||
{
|
||||
TRecordset * clifo = get_recset(LF_CLIFO);
|
||||
|
||||
if (clifo == NULL)
|
||||
clifo = set_recset(LF_CLIFO, ::create_recordset("USE CLIFO\nFROM TIPOCF=#TIPOCF CODCF=#CODCF\nTO TIPOCF=#TIPOCF CODCF=#CODCF"));
|
||||
TString4 w; w << tipocf;
|
||||
TVariant t(w);
|
||||
|
||||
clifo->set_var("#TIPOCF", t);
|
||||
clifo->set_var("#CODCF", codcf);
|
||||
clifo->move_first();
|
||||
return *clifo;
|
||||
}
|
||||
|
||||
bool TTS_campo_sender::test_swap(const TRecordset& mov)
|
||||
{
|
||||
TRecordset & rmov = rmovrecset(mov);
|
||||
const int anno = mov.get(MOV_ANNOIVA).as_int();
|
||||
TCausale caus(mov.get(MOV_CODCAUS).as_string(), anno);
|
||||
char sez = caus.sezione_clifo();
|
||||
const bool vendite = mov.get(MOV_TIPO).as_string()[0] != 'F';
|
||||
|
||||
const bool s = vendite ^ (sez == 'D');
|
||||
return s;
|
||||
}
|
||||
|
||||
bool TTS_campo_sender::swap_ritsoc(const TRecordset& mov)
|
||||
{
|
||||
TRecordset & rmov = rmovrecset(mov);
|
||||
bool ok = rmov.move_first();
|
||||
const char sez = rmov.get(RMV_SEZIONE).as_string()[0];
|
||||
char sezrit = sez;
|
||||
|
||||
for (; ok; ok = rmov.move_next())
|
||||
{
|
||||
const char tiporiga = rmov.get(RMV_ROWTYPE).as_string()[0];
|
||||
|
||||
if (tiporiga =='S')
|
||||
{
|
||||
sezrit = rmov.get(RMV_SEZIONE).as_string()[0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const bool s = sez != sezrit;
|
||||
return s;
|
||||
}
|
||||
|
||||
bool TTS_campo_sender::mov_regolarizzazione(const TRecordset& mov)
|
||||
{
|
||||
const TString& codcaus = mov.get(MOV_CODCAUS).as_string();
|
||||
|
||||
return _caus_regolarizzazione.objptr(codcaus) != NULL;
|
||||
}
|
||||
|
||||
bool TTS_campo_sender::mov_intra(const TRecordset& mov)
|
||||
{
|
||||
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
|
||||
|
||||
return caus.get_bool(CAU_INTRACOM);
|
||||
}
|
||||
|
||||
bool TTS_campo_sender::mov_reverse_charge(const TRecordset& mov)
|
||||
{
|
||||
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
|
||||
const int regsp = caus.get_int(CAU_REGSPIVA);
|
||||
|
||||
return regsp == 13 || regsp == 50 || regsp == 51;
|
||||
}
|
||||
|
||||
bool TTS_campo_sender::regime_agricolo(const TRecordset& mov) const
|
||||
{
|
||||
TToken_string key;
|
||||
|
||||
key.format("%04d%s", mov.get(MOV_ANNOIVA).as_int(), (const char *) mov.get(MOV_REG).as_string());
|
||||
|
||||
const TRectype& reg = cache().get("REG", key);
|
||||
|
||||
key.cut(0);
|
||||
key.add(prefix().get_codditta());
|
||||
key.add(reg.get("S8"));
|
||||
const TRectype& attiv = cache().get(LF_ATTIV, key);
|
||||
return attiv.get_bool(ATT_REGAGR);
|
||||
}
|
||||
|
||||
TMask & TTS_campo_sender::get_mask()
|
||||
{
|
||||
if (_mask == NULL)
|
||||
{
|
||||
_mask = new TTS_mask(mask_name());
|
||||
TDate to(TODAY);
|
||||
TConfig configtc(CONFIG_DITTA, "tc");
|
||||
const TDate from(configtc.get("TSULTINV"));
|
||||
|
||||
if (from.ok())
|
||||
to.addmonth(-1);
|
||||
to.set_end_month();
|
||||
if (to <= from)
|
||||
{
|
||||
to = from;
|
||||
to.addmonth(1);
|
||||
to.set_end_month();
|
||||
}
|
||||
_mask->set(F_DATA_DA, from);
|
||||
_mask->set(F_DATA_AL, to);
|
||||
}
|
||||
return * _mask;
|
||||
}
|
||||
|
||||
bool TTS_campo_sender::find_regolarizzazione(TRecordset& mov)
|
||||
{
|
||||
bool found = false;
|
||||
|
||||
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
|
||||
const TString4 causreg = caus.get(CAU_CODCAUREG);
|
||||
real totdoc = mov.get(MOV_TOTDOC).as_real();
|
||||
const real ritfis = mov.get(MOV_RITFIS).as_real();
|
||||
const real ritsoc = mov.get(MOV_RITSOC).as_real();
|
||||
|
||||
if (ritfis != ZERO)
|
||||
totdoc += ritfis;
|
||||
if (ritsoc != ZERO)
|
||||
{
|
||||
if (swap_ritsoc(mov)) // Somma ritenute sociali con segno
|
||||
totdoc -= ritsoc;
|
||||
else
|
||||
totdoc += ritsoc;
|
||||
}
|
||||
if (test_swap(mov))
|
||||
totdoc = -totdoc;
|
||||
|
||||
TToken_string key(mov.get(MOV_TIPO).as_string());
|
||||
key.add(mov.get(MOV_CODCF).as_int());
|
||||
const TRectype & cli = cache().get(LF_CLIFO, key);
|
||||
const TString16 paiv = cli.get(CLI_PAIV);
|
||||
const TString16 cf = cli.get(CLI_COFI);
|
||||
TEsercizi_contabili esc;
|
||||
const TEsercizio & e = esc.esercizio(esc.date2esc(mov.get(MOV_DATAREG).as_date()));
|
||||
const TDate to(e.fine());
|
||||
|
||||
for (bool ok = mov.move_next(); ok && ! found; ok = mov.move_next())
|
||||
{
|
||||
const TDate dreg = mov.get(MOV_DATAREG).as_date();
|
||||
if (dreg >to)
|
||||
break;
|
||||
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
|
||||
const TString4 cod = caus.get(CAU_CODCAUS);
|
||||
|
||||
found = (causreg.full() && cod == causreg) || (causreg.blank() && (_caus_regolarizzazione.objptr(cod) || caus.get_bool(CAU_SOLOIVA)));
|
||||
found &= (totdoc == mov.get(MOV_TOTDOC).as_real());
|
||||
|
||||
key = mov.get(MOV_TIPO).as_string();
|
||||
key.add(mov.get(MOV_CODCF).as_int());
|
||||
const TRectype & clireg = cache().get(LF_CLIFO, key);
|
||||
const TString16 paivreg = clireg.get(CLI_PAIV);
|
||||
const TString16 cfreg = clireg.get(CLI_COFI);
|
||||
|
||||
found &= ((paiv.full() && paiv == paivreg) || (paiv.blank() && cf == cfreg));
|
||||
if (found)
|
||||
break;
|
||||
}
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
long TTS_campo_sender::iva11_reverse(const TRecordset & mov)
|
||||
{
|
||||
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
|
||||
|
||||
return caus.get_int(CAU_REGSPIVA);
|
||||
}
|
||||
|
||||
const char * TTS_campo_sender::decode_causale(const TRecordset& mov)
|
||||
{
|
||||
const TRectype& caus = cache().get(LF_CAUSALI, mov.get(MOV_CODCAUS).as_string());
|
||||
|
||||
return caus.get(CAU_DESCR);
|
||||
}
|
||||
|
||||
void TTS_campo_sender::postprocess_movs(TRecordset & mov)
|
||||
{
|
||||
if (yesno_box(TR("Confermare il traferimento")))
|
||||
{
|
||||
TConfig configtc(CONFIG_DITTA);
|
||||
TMask & m = get_mask();
|
||||
|
||||
configtc.set("TSULTINV", m.get_date(F_DATA_AL));
|
||||
|
||||
if (mov.items() > 0L)
|
||||
{
|
||||
TProgind pi(mov.items(), TR("Conferma movimenti"), true, true);
|
||||
TLocalisamfile cgmov(LF_MOV);
|
||||
|
||||
for (bool ok = mov.move_first(); ok; ok = mov.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
const long numreg = mov.get(MOV_NUMREG).as_int();
|
||||
|
||||
cgmov.put(MOV_NUMREG, numreg);
|
||||
if (cgmov.read(_isequal, _lock) == NOERR)
|
||||
{
|
||||
cgmov.put(MOV_INVIATO, true);
|
||||
cgmov.rewrite();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool search_reg(const TRelation& rel, void* pJolly)
|
||||
{
|
||||
TAssoc_array * _caus_regolarizzazione = (TAssoc_array *) pJolly;
|
||||
const bool solaiva = rel.lfile().get_bool(CAU_SOLOIVA);
|
||||
const TString codcaus = rel.lfile().get(CAU_CODCAUREG);
|
||||
|
||||
if (codcaus.full())
|
||||
_caus_regolarizzazione->add(codcaus, codcaus);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool TTS_campo_sender::create()
|
||||
{
|
||||
TRelation rel(LF_CAUSALI);
|
||||
TCursor c(&rel);
|
||||
bool ok = c.scan(search_reg, &_caus_regolarizzazione, "Ricerca causali di regolarizzazione");
|
||||
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
bool big_cli_code = false;
|
||||
|
||||
clifo.put(CLI_TIPOCF, "C");
|
||||
clifo.put(CLI_CODCF, 100000L);
|
||||
if (!((clifo.read(_isgteq) == _iseof) || (clifo.get(CLI_TIPOCF) == "F")))
|
||||
big_cli_code = true;
|
||||
if (!big_cli_code)
|
||||
{
|
||||
clifo.put(CLI_TIPOCF, "F");
|
||||
clifo.put(CLI_CODCF, 100000L);;
|
||||
|
||||
if (clifo.read(_isgteq) != _iseof)
|
||||
big_cli_code = true;
|
||||
}
|
||||
if (big_cli_code)
|
||||
riclassifica().add("TSNOHCLI", EMPTY_STRING);
|
||||
|
||||
return ok && TTS_sender::create();
|
||||
}
|
||||
|
||||
int tc2700(int argc, char* argv[])
|
||||
{
|
||||
TTS_campo_sender app;
|
||||
app.run(argc, argv, TR("Invio a TeamSystem"));
|
||||
return 0;
|
||||
}
|
82
tc/tc2700a.uml
Executable file
82
tc/tc2700a.uml
Executable file
@ -0,0 +1,82 @@
|
||||
#include "tc2700a.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
|
||||
|
||||
PAGE "Esportazione movimenti contabilita'" 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 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "Dati da inviare"
|
||||
END
|
||||
|
||||
BOOLEAN F_MOVIMENTI
|
||||
BEGIN
|
||||
PROMPT 3 5 "Movimenti contabili"
|
||||
END
|
||||
|
||||
BOOLEAN F_INTRASTAT
|
||||
BEGIN
|
||||
PROMPT 3 6 "Intrastat"
|
||||
END
|
||||
|
||||
STRING F_PATH 256 39
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cartella "
|
||||
DSELECT
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD TSDestPath
|
||||
END
|
||||
|
||||
STRING F_FILE 18
|
||||
BEGIN
|
||||
PROMPT 54 8 "File "
|
||||
FIELD TSDestFile
|
||||
END
|
||||
|
||||
|
||||
DATE F_DATA_DA
|
||||
BEGIN
|
||||
PROMPT 2 10 "Data iniz. "
|
||||
END
|
||||
|
||||
DATE F_DATA_AL
|
||||
BEGIN
|
||||
PROMPT 30 10 "Data fin. "
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
1529
tc/tc2701.cpp
Executable file
1529
tc/tc2701.cpp
Executable file
File diff suppressed because it is too large
Load Diff
180
tc/tc2800.cpp
Executable file
180
tc/tc2800.cpp
Executable file
@ -0,0 +1,180 @@
|
||||
// gestione files Contabilita' Analitica: CENTRI DI COSTO
|
||||
#include <automask.h>
|
||||
#include <execp.h>
|
||||
#include <relapp.h>
|
||||
#include <pconti.h>
|
||||
#include <recarray.h>
|
||||
|
||||
#include "tc2800a.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
//MASCHERA
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
class TTS_ricl_msk : public TAutomask
|
||||
{
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TTS_ricl_msk() : TAutomask("tc2800a") {}
|
||||
};
|
||||
|
||||
bool TTS_ricl_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_CONTO:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
class TTSRiclass_application : public TRelation_application
|
||||
|
||||
// @author:(INTERNAL) Vari
|
||||
// @access:(INTERNAL) Private Member
|
||||
{
|
||||
// @cmember:(INTERNAL) Maschera corrente dell'applicazione
|
||||
TMask* _msk;
|
||||
// @cmember:(INTERNAL) Relazione corrente dell'applicazione
|
||||
TRelation* _rel;
|
||||
bool _use_pcn;
|
||||
|
||||
// @access Protected Member
|
||||
protected:
|
||||
virtual TMask* get_mask(int mode = MODE_QUERY) { CHECK(_msk, "Null mask"); return _msk; }
|
||||
// @cmember Indica se la futura <mf Tab_application::get_mask> ritornera' una maschera diversa
|
||||
// dalla corrente.
|
||||
virtual bool changing_mask(int mode) { return false; }
|
||||
// @cmember Ritorna la relazione da modificare
|
||||
virtual TRelation* get_relation() const { CHECK(_rel, "Null relation"); return _rel; }
|
||||
// @cmember Inizializza la maschera per il modo ricerca
|
||||
virtual void init_query_mode(TMask& m);
|
||||
// @cmember Inizializza la maschera per il modo ricerca ed inserimento (chiama <mf TRelation_application::init_query_mode>)
|
||||
virtual void init_query_insert_mode(TMask& m) ;
|
||||
// @cmember Inizializza la maschera per il modo inserimento
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
// @cmember Inizializza la maschera per il modo modifica
|
||||
virtual void init_modify_mode(TMask& m);
|
||||
// @cmember Inizializzazione dei dati dell'utente
|
||||
virtual bool user_create() ;
|
||||
// @cmember Distruzione dei dati dell'utente
|
||||
virtual bool user_destroy() ;
|
||||
// @cmember Chiama il programma di stampa
|
||||
virtual void print();
|
||||
|
||||
// @access Public Member
|
||||
public:
|
||||
// @cmember Costruttore
|
||||
TTSRiclass_application() : _msk(NULL), _rel(NULL) { }
|
||||
|
||||
|
||||
// @cmember Distruttore
|
||||
virtual ~TTSRiclass_application() {}
|
||||
};
|
||||
|
||||
|
||||
void TTSRiclass_application::print()
|
||||
{
|
||||
TFilename rep("tctsricl.rep");
|
||||
TString cmd;
|
||||
|
||||
rep.custom_path();
|
||||
cmd << "ba8 -4 "<< rep;
|
||||
TExternal_app stampa(cmd);
|
||||
stampa.run();
|
||||
}
|
||||
|
||||
void TTSRiclass_application::init_query_mode(TMask& m)
|
||||
{
|
||||
TRelation_application::init_query_mode(m);
|
||||
|
||||
m.show(-1, _use_pcn);
|
||||
m.enable(-1, _use_pcn);
|
||||
m.show(-20, !_use_pcn);
|
||||
m.hide(-2);
|
||||
m.disable(-2);
|
||||
m.disable(-10);
|
||||
}
|
||||
|
||||
void TTSRiclass_application::init_query_insert_mode(TMask& m)
|
||||
{
|
||||
TRelation_application::init_query_insert_mode(m);
|
||||
|
||||
m.hide(-1);
|
||||
m.disable(-1);
|
||||
m.show(-20, !_use_pcn);
|
||||
m.show(-2, _use_pcn);
|
||||
m.enable(-2, _use_pcn);
|
||||
m.enable(-10, _use_pcn);
|
||||
}
|
||||
|
||||
void TTSRiclass_application::init_modify_mode(TMask& m)
|
||||
{
|
||||
TRelation_application::init_modify_mode(m);
|
||||
|
||||
m.show(-1, _use_pcn);
|
||||
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.hide(-2);
|
||||
m.disable(-2);
|
||||
m.disable(-10);
|
||||
}
|
||||
|
||||
bool TTSRiclass_application::user_create()
|
||||
{
|
||||
_rel = new TRelation(LF_RICLPDC);
|
||||
_msk = new TTS_ricl_msk;
|
||||
|
||||
TConfig config(CONFIG_DITTA);
|
||||
_use_pcn = config.get_bool("TSUSECMPCN");
|
||||
|
||||
_msk->show(-10, _use_pcn);
|
||||
_msk->show(-20, !_use_pcn);
|
||||
set_search_field(_use_pcn ? F_SOTTOCONTO : F_SOTTOCONTO1);
|
||||
|
||||
|
||||
TFilename rep("tctsricl.rep");
|
||||
|
||||
if (rep.custom_path())
|
||||
enable_menu_item(M_FILE_PRINT);
|
||||
|
||||
TString title;
|
||||
_msk->get_caption(title);
|
||||
set_title(title);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TTSRiclass_application::user_destroy()
|
||||
{
|
||||
if (_msk)
|
||||
delete _msk;
|
||||
if (_rel)
|
||||
delete _rel;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int tc2800(int argc, char* argv[])
|
||||
{
|
||||
TTSRiclass_application a;
|
||||
|
||||
a.run(argc, argv, TR("Riclassificazione piano dei conti Team System"));
|
||||
return 0;
|
||||
}
|
||||
|
1357
tc/tc2900.cpp
Executable file
1357
tc/tc2900.cpp
Executable file
File diff suppressed because it is too large
Load Diff
77
tc/tc2900a.uml
Executable file
77
tc/tc2900a.uml
Executable file
@ -0,0 +1,77 @@
|
||||
#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
|
44
tc/tctbi11.uml
Executable file
44
tc/tctbi11.uml
Executable file
@ -0,0 +1,44 @@
|
||||
#include "tctbi11.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <relapbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "IVA 11" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice IVA 11 TeamSystem"
|
||||
END
|
||||
|
||||
NUMBER F_CODTAB 2
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice "
|
||||
USE &T11
|
||||
INPUT CODTAB F_CODTAB
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@60" S0
|
||||
OUTPUT F_CODTAB CODTAB
|
||||
OUTPUT F_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB
|
||||
FLAGS "Z"
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione "
|
||||
USE &T11 KEY 2
|
||||
INPUT S0 F_DESC
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODTAB
|
||||
FIELD S0
|
||||
KEY 2
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
45
tc/tctbica.uml
Executable file
45
tc/tctbica.uml
Executable file
@ -0,0 +1,45 @@
|
||||
#include "tctbica.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <relapbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Causali" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice Causale TeamSystem"
|
||||
END
|
||||
|
||||
NUMBER F_CODTAB 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice "
|
||||
USE &TCA
|
||||
INPUT CODTAB F_CODTAB
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@60" S0
|
||||
OUTPUT F_CODTAB CODTAB
|
||||
OUTPUT F_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB
|
||||
FLAGS "Z"
|
||||
VALIDATE FIXLEN_FUNC 3
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione "
|
||||
USE &TCA KEY 2
|
||||
INPUT S0 F_DESC
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODTAB
|
||||
FIELD S0
|
||||
KEY 2
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
5
tc/tctbico.h
Executable file
5
tc/tctbico.h
Executable file
@ -0,0 +1,5 @@
|
||||
#define F_CODTAB 102
|
||||
#define F_CODTAB1 103
|
||||
#define F_CODTAB2 104
|
||||
#define F_DESC 105
|
||||
#define F_INDBIL 106
|
82
tc/tctbico.uml
Executable file
82
tc/tctbico.uml
Executable file
@ -0,0 +1,82 @@
|
||||
#include "tctbico.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <relapbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Conti" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice Conto TeamSystem"
|
||||
END
|
||||
|
||||
STRING F_CODTAB 2
|
||||
BEGIN
|
||||
PROMPT 2 2 "Gruppo "
|
||||
USE &TCO
|
||||
INPUT CODTAB[1,2] F_CODTAB
|
||||
INPUT CODTAB[3,4] F_CODTAB1
|
||||
INPUT CODTAB[5,7] F_CODTAB2
|
||||
DISPLAY "Gruppo" CODTAB[1,2]
|
||||
DISPLAY "Conto" CODTAB[3,4]
|
||||
DISPLAY "Sottoconto" CODTAB[5,7]
|
||||
DISPLAY "Descrizione@60" S0
|
||||
OUTPUT F_CODTAB CODTAB[1,2]
|
||||
OUTPUT F_CODTAB1 CODTAB[3,4]
|
||||
OUTPUT F_CODTAB2 CODTAB[5,7]
|
||||
OUTPUT F_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB[1,2]
|
||||
VALIDATE FIXLEN_FUNC 2
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_CODTAB1 2
|
||||
BEGIN
|
||||
PROMPT 20 2 "Conto "
|
||||
COPY ALL F_CODTAB
|
||||
CHECKTYPE SEARCH
|
||||
FIELD CODTAB[3,4]
|
||||
VALIDATE FIXLEN_FUNC 2
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_CODTAB2 3
|
||||
BEGIN
|
||||
PROMPT 30 2 "Sottoconto "
|
||||
COPY ALL F_CODTAB
|
||||
CHECKTYPE SEARCH
|
||||
FIELD CODTAB[5,7]
|
||||
VALIDATE FIXLEN_FUNC 3
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione "
|
||||
USE &TCO KEY 2
|
||||
INPUT S0 F_DESC
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODTAB
|
||||
FIELD S0
|
||||
KEY 2
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
LIST F_INDBIL 15
|
||||
BEGIN
|
||||
PROMPT 2 7 "Indicatore di bilancio"
|
||||
FIELD I0
|
||||
ITEM "1|Attivita'"
|
||||
ITEM "2|Passivita'"
|
||||
ITEM "3|Costi"
|
||||
ITEM "4|Ricavi"
|
||||
ITEM "5|Conti d'ordine"
|
||||
ITEM "9|Varie"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
44
tc/tctbiiva.uml
Executable file
44
tc/tctbiiva.uml
Executable file
@ -0,0 +1,44 @@
|
||||
#include "tctbi11.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 TeamSystem"
|
||||
END
|
||||
|
||||
STRING F_CODTAB 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice "
|
||||
USE &TVA
|
||||
INPUT CODTAB F_CODTAB
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@60" S0
|
||||
OUTPUT F_CODTAB CODTAB
|
||||
OUTPUT F_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB
|
||||
VALIDATE FIXLEN_FUNC 3
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione "
|
||||
USE &TVA KEY 2
|
||||
INPUT S0 F_DESC
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODTAB
|
||||
FIELD S0
|
||||
KEY 2
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
44
tc/tctbina.uml
Executable file
44
tc/tctbina.uml
Executable file
@ -0,0 +1,44 @@
|
||||
#include "tctbipg.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <relapbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Nazioni" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice Nazione TeamSystem"
|
||||
END
|
||||
|
||||
NUMBER F_CODTAB 4
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice "
|
||||
USE &TNA
|
||||
INPUT CODTAB F_CODTAB
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@60" S0
|
||||
OUTPUT F_CODTAB CODTAB
|
||||
OUTPUT F_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB
|
||||
FLAGS "Z"
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione "
|
||||
USE &TNA KEY 2
|
||||
INPUT S0 F_DESC
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODTAB
|
||||
FIELD S0
|
||||
KEY 2
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
44
tc/tctbipg.uml
Executable file
44
tc/tctbipg.uml
Executable file
@ -0,0 +1,44 @@
|
||||
#include "tctbipg.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <relapbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Condizioni di pagamento" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice Pagamento TeamSystem"
|
||||
END
|
||||
|
||||
NUMBER F_CODTAB 4
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice "
|
||||
USE &TPG
|
||||
INPUT CODTAB F_CODTAB
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@60" S0
|
||||
OUTPUT F_CODTAB CODTAB
|
||||
OUTPUT F_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB
|
||||
FLAGS "Z"
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione "
|
||||
USE &TPG KEY 2
|
||||
INPUT S0 F_DESC
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODTAB
|
||||
FIELD S0
|
||||
KEY 2
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
56
tc/tctbire.uml
Executable file
56
tc/tctbire.uml
Executable file
@ -0,0 +1,56 @@
|
||||
#include "tctbire.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <relapbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Registri" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice Registro TeamSystem"
|
||||
END
|
||||
|
||||
LIST F_TIPO 1 13
|
||||
BEGIN
|
||||
PROMPT 2 2 "Tipo "
|
||||
ITEM "A|Acquisti"
|
||||
ITEM "C|Corrispettivi"
|
||||
ITEM "V|Vendite"
|
||||
FIELD CODTAB[1,1]
|
||||
END
|
||||
|
||||
STRING F_CODTAB 2
|
||||
BEGIN
|
||||
PROMPT 25 2 "Codice "
|
||||
USE &TRE
|
||||
INPUT CODTAB[1,1] F_TIPO
|
||||
INPUT CODTAB[2,3] F_CODTAB
|
||||
DISPLAY "Tipo" CODTAB[1,1]
|
||||
DISPLAY "Codice" CODTAB[2,3]
|
||||
DISPLAY "Descrizione@60" S0
|
||||
OUTPUT F_TIPO CODTAB[1,1]
|
||||
OUTPUT F_CODTAB CODTAB[2,3]
|
||||
OUTPUT F_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB[2,3]
|
||||
VALIDATE FIXLEN_FUNC 2
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione "
|
||||
USE &TRE KEY 2
|
||||
INPUT S0 F_DESC
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODTAB
|
||||
FIELD S0
|
||||
KEY 2
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user