Patch level :

Files correlati     : 2.2
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/trunk@12512 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2004-11-29 09:52:49 +00:00
parent cae10c1e45
commit b33993e97d
9 changed files with 336 additions and 9 deletions

View File

@ -9,7 +9,7 @@ int main(int argc, char** argv)
{
// case 1: ca0200(argc,argv); break; // stampa tabelle
case 2: ca0300(argc,argv); break; // parametri configurazione Contabilita' Analitica
// case 3: ca0400(argc,argv); break; //immissione dati nei files CDC,CMS,FSC
case 3: ca0400(argc,argv); break; //immissione piano dei conti
// case 5: ca0600(argc,argv); break; // ribaltamenti
default: ca0100(argc,argv); break; // gestione tabelle
}

View File

@ -4,7 +4,7 @@
int ca0100(int argc, char* argv[]);
//int ca0200(int argc, char* argv[]);
int ca0300(int argc, char* argv[]);
//int ca0400(int argc, char* argv[]);
int ca0400(int argc, char* argv[]);
//int ca0600(int argc, char* argv[]);
#endif // __CA0_H

View File

@ -2,7 +2,6 @@
#include <automask.h>
#include <modaut.h>
#include <tabapp.h>
#include <tabutil.h>
////////////////////////////////////////////////////////////////////////
//MASCHERA
@ -58,8 +57,8 @@ public:
virtual ~Tab_app_ca() {}
};
HIDDEN inline Tab_app_ca& app() { return (Tab_app_ca&)main_app(); }
// costruttore
Tab_app_ca::Tab_app_ca() {}
@ -98,7 +97,6 @@ int Tab_app_ca::rewrite(const TMask& m)
return Tab_application::rewrite(m);
}
int ca0100(int argc, char* argv[])
{
Tab_app_ca a;

View File

@ -1,15 +1,15 @@
#include "ca0300a.h"
TOOLBAR "" 0 20 0 2
TOOLBAR "" 0 -2 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
PROMPT -12 -11 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
PROMPT -22 -11 ""
END
ENDPAGE

48
ca/ca0400.cpp Executable file
View File

@ -0,0 +1,48 @@
// Gestione Contabilita' Analitica
#include <relapp.h>
#include "calib01.h"
#include "ca0400a.h"
class TPiano_conti_anal_msk : public TSimple_anal_msk
{
protected:
virtual int get_logicnum() const { return LF_PCONANA; }
virtual const char* get_key_var() const { return "Pdci"; }
virtual const char* get_des_var() const { return "PdciDes"; }
virtual short get_key_id(int n) const { return n >= 0 && n < 4 ? F_KEY_1+n : 0; }
virtual short get_des_id(int n) const { return n >= 0 && n < 4 ? F_DES_1+n : 0; }
public:
TPiano_conti_anal_msk();
virtual ~TPiano_conti_anal_msk();
};
TPiano_conti_anal_msk::TPiano_conti_anal_msk() : TSimple_anal_msk("ca0400a")
{
create_key_fields();
offset_fields();
}
TPiano_conti_anal_msk::~TPiano_conti_anal_msk()
{
}
///////////////////////////////////////////////////////////
// TAnalisi_app
///////////////////////////////////////////////////////////
class TAnalisi_app : public TAnal_app
{
protected:
virtual TAnal_msk* create_mask() const { return new TPiano_conti_anal_msk; }
virtual TConfig* create_config() const { return new TConfig(CONFIG_DITTA, "ca"); }
};
int ca0400(int argc, char* argv[])
{
TAnalisi_app app;
app.run(argc, argv, TR("Gestione Piano dei conti analitico"));
return 0;
}

10
ca/ca0400a.h Executable file
View File

@ -0,0 +1,10 @@
#define F_KEY_1 101
#define F_KEY_2 102
#define F_KEY_3 103
#define F_KEY_4 104
#define F_DES_1 111
#define F_DES_2 112
#define F_DES_3 113
#define F_DES_4 114

26
ca/ca0400a.uml Executable file
View File

@ -0,0 +1,26 @@
#include "ca0400a.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Piano dei conti" -1 -1 78 10
GROUPBOX DLG_NULL 78 6
BEGIN
PROMPT 1 0 ""
END
ENDPAGE
ENDMASK

174
ca/calib01.cpp Executable file
View File

@ -0,0 +1,174 @@
#include "calib01.h"
///////////////////////////////////////////////////////////
// TAnal_msk
///////////////////////////////////////////////////////////
bool TAnal_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
return true;
}
void TAnal_msk::offset_fields()
{
const WINDOW tw = toolwin();
RCT rct; xvt_vobj_get_client_rect(win(), &rct);
const int width = rct.right;
int rightmost = 0;
for (int i = fields()-1; i > 0; i--)
{
TMask_field& f = fld(i);
if (f.dlg() < 1000 && f.parent() != tw)
{
f.get_rect(rct);
if (rct.right > rightmost)
rightmost = rct.right;
}
}
const int delta = width - rightmost;
if (delta > 0)
{
for (int i = fields()-1; i >= 0; i--)
{
TMask_field& f = fld(i);
if (f.dlg() < 1000 && f.parent() != tw)
{
f.get_rect(rct);
xvt_rect_offset(&rct, delta, 0);
f.set_rect(rct);
}
}
}
}
TAnal_msk::TAnal_msk(const char* name)
{
read_mask(name, 0, 0);
}
///////////////////////////////////////////////////////////
// TSimple_anal_msk
///////////////////////////////////////////////////////////
void TSimple_anal_msk::get_key_fields(TString& key1, TString& key2) const
{
const RecDes& des = prefix().get_recdes(get_logicnum());
const KeyDes k1 = des.Ky[0];
key1 = des.Fd[k1.FieldSeq[0] % MaxFields].Name;
const KeyDes k2 = des.Ky[1];
key2 = des.Fd[k2.FieldSeq[0] % MaxFields].Name;
}
void TSimple_anal_msk::create_key_browse(TEdit_field& kfld, int level, TConfig& cfg)
{
TString16 key1, key2;
get_key_fields(key1, key2);
TFilename tmp; tmp.temp();
ofstream out(tmp);
out << "US " << get_logicnum() << endl;
out << "KE 1" << endl;
int from = 1, to = 1;
for (int i = 0; i < level; i++)
{
const TString& picture = cfg.get(get_key_var(), NULL, i);
const TString& prompt = cfg.get(get_des_var(), NULL, i);
to = from + picture.len()-1;
TString field; field.format("%s[%d,%d]", (const char*)key1, from, to);
out << "IN " << field << ' ' << get_key_id(i) << endl;
out << "DI \"" << prompt << '@' << (from-to+1) << "\" " << field << endl;
out << "OU " << get_key_id(i) << ' ' << field << endl;
from = to+1;
}
out << "DI \"Descrizione@50\" " << key2 << endl;
out << "OU " << get_des_id(level-1) << ' ' << key2 << endl;
out << "CH " << (level == 1 ? "RE" : "NO") << endl;
out << "EN" << endl;
out.close();
TScanner scan(tmp);
while (scan.pop() != "EN")
kfld.parse_item(scan);
xvt_fsys_removefile(tmp);
}
int TSimple_anal_msk::create_key_fields()
{
TConfig cfg(CONFIG_DITTA, "ca");
const char* keyvar = get_key_var();
const char* desvar = get_des_var();
int maxkeylen = 0, maxdeslen = 0;
int level;
for (level = 1; ; level++)
{
const TString& prompt = cfg.get(desvar, NULL, level);
if (prompt.blank())
break;
const TString& picture = cfg.get(keyvar, NULL, level);
const int keylen = picture.len();
const int deslen = prompt.len();
if (keylen > maxkeylen) maxkeylen = keylen;
if (deslen > maxdeslen) maxdeslen = deslen;
}
maxdeslen++;
const int tab0 = 2;
const int tab1 = tab0 + maxdeslen + maxkeylen + 3;
for (int i = 1; i < level; i++)
{
const short kid = get_key_id(i-1);
CHECKD(kid > 100, "Invalid field id:", kid);
const TString& picture = cfg.get(keyvar, NULL, i);
TString80 prompt = cfg.get(desvar, NULL, i);
prompt.left_just(maxdeslen);
TEdit_field& kfld = add_string(kid, 0, prompt, tab0, i, picture.len(), "B");
create_key_browse(kfld, i, cfg);
const short did = get_des_id(i-1);
if (did > kid)
{
add_string(did, 0, "", tab1, i, 50, "", 76-tab1);
}
}
return level;
}
TSimple_anal_msk::TSimple_anal_msk(const char* name) : TAnal_msk(name)
{
}
///////////////////////////////////////////////////////////
// TAnal_app
///////////////////////////////////////////////////////////
TRelation* TAnal_app::create_relation() const
{
return new TRelation(_msk->get_logicnum());
}
bool TAnal_app::user_create()
{
_msk = create_mask();
_rel = create_relation();
return true;
}
bool TAnal_app::user_destroy()
{
if (_msk != NULL)
delete _msk;
if (_rel != NULL)
delete _rel;
return true;
}

71
ca/calib01.h Executable file
View File

@ -0,0 +1,71 @@
#ifndef __CALIB01_H
#define __CALIB01_H
#ifndef __AUTOMASK_H
#include <automask.h>
#endif
#ifndef __RELAPP_H
#include <relapp.h>
#endif
///////////////////////////////////////////////////////////
// TAnal_msk
///////////////////////////////////////////////////////////
class TAnal_msk : public TAutomask
{
protected:
virtual int create_key_fields() pure;
void offset_fields();
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
TAnal_msk(const char* name);
public:
virtual int get_logicnum() const pure;
};
///////////////////////////////////////////////////////////
// TSimple_anal_msk
///////////////////////////////////////////////////////////
class TSimple_anal_msk : public TAnal_msk
{
protected:
virtual const char* get_key_var() const pure;
virtual const char* get_des_var() const pure;
virtual short get_key_id(int n) const pure;
virtual short get_des_id(int n) const pure;
void get_key_fields(TString& key1, TString& key2) const;
void create_key_browse(TEdit_field& kfld, int level, TConfig& cfg);
virtual int create_key_fields();
protected:
TSimple_anal_msk(const char* name);
};
///////////////////////////////////////////////////////////
// TAnal_app
///////////////////////////////////////////////////////////
class TAnal_app : public TRelation_application
{
TRelation* _rel;
TAnal_msk* _msk;
protected:
virtual bool changing_mask(int) { return false; }
virtual TMask* get_mask(int) { return _msk; }
virtual TRelation* get_relation() const { return _rel; }
virtual bool user_create();
virtual bool user_destroy();
protected:
virtual TAnal_msk* create_mask() const pure;
virtual TRelation* create_relation() const;
};
#endif