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:
parent
cae10c1e45
commit
b33993e97d
@ -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
|
||||
}
|
||||
|
2
ca/ca0.h
2
ca/ca0.h
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
48
ca/ca0400.cpp
Executable 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
10
ca/ca0400a.h
Executable 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
26
ca/ca0400a.uml
Executable 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
174
ca/calib01.cpp
Executable 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
71
ca/calib01.h
Executable 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
|
Loading…
x
Reference in New Issue
Block a user