Patch level : xx.7.054
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la version 1.7 patch 054 aga sul main trunk git-svn-id: svn://10.65.10.50/trunk@9655 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5fca30b8ed
commit
8a05210c2d
132
ba/ba0.cpp
132
ba/ba0.cpp
@ -5,6 +5,7 @@
|
|||||||
#include <colors.h>
|
#include <colors.h>
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <controls.h>
|
#include <controls.h>
|
||||||
|
#include <currency.h>
|
||||||
#include <dongle.h>
|
#include <dongle.h>
|
||||||
#include <execp.h>
|
#include <execp.h>
|
||||||
#include <isam.h>
|
#include <isam.h>
|
||||||
@ -24,7 +25,7 @@
|
|||||||
#include "ba0400a.h"
|
#include "ba0400a.h"
|
||||||
|
|
||||||
#define OPTIONS_MENU M_FONT
|
#define OPTIONS_MENU M_FONT
|
||||||
#define PREFERRED_MENU M_HELP
|
#define PREFERRED_MENU M_STYLE
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TPriority_image
|
// TPriority_image
|
||||||
@ -49,32 +50,32 @@ public:
|
|||||||
class TPicture_mask : public TMask
|
class TPicture_mask : public TMask
|
||||||
{
|
{
|
||||||
TImage* _image;
|
TImage* _image;
|
||||||
|
TArray _euro;
|
||||||
|
|
||||||
|
int _euro_frame;
|
||||||
|
long _euro_timer;
|
||||||
|
|
||||||
static TString _last_string;
|
static TString _last_string;
|
||||||
|
|
||||||
protected: // TMask
|
protected: // TMask
|
||||||
virtual void update();
|
virtual void update();
|
||||||
|
virtual void handler(WINDOW win, EVENT * ep);
|
||||||
virtual bool on_key(KEY k);
|
virtual bool on_key(KEY k);
|
||||||
|
virtual void on_firm_change();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool stop_run(KEY key);
|
virtual bool stop_run(KEY key);
|
||||||
|
|
||||||
void set_last_search_string(const char* str) { _last_string = str; }
|
void set_last_search_string(const char* str) { _last_string = str; }
|
||||||
void set_image(TImage* image);
|
void set_image(TImage* image);
|
||||||
|
void reload_images();
|
||||||
|
|
||||||
TPicture_mask(const char* name, int dx, int dy, TImage* image, int x = -1, int y = -1);
|
TPicture_mask(const char* name, int dx, int dy, TImage* image, int x = -1, int y = -1);
|
||||||
virtual ~TPicture_mask() {}
|
virtual ~TPicture_mask();
|
||||||
};
|
};
|
||||||
|
|
||||||
TString TPicture_mask::_last_string;
|
TString TPicture_mask::_last_string;
|
||||||
|
|
||||||
TPicture_mask::TPicture_mask(const char* name, int dx, int dy,
|
|
||||||
TImage* image, int x, int y)
|
|
||||||
: TMask(name, 1, dx, dy, x, y)
|
|
||||||
{
|
|
||||||
set_image(image);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TPicture_mask::set_image(TImage* image)
|
void TPicture_mask::set_image(TImage* image)
|
||||||
{
|
{
|
||||||
if (image && image->ok())
|
if (image && image->ok())
|
||||||
@ -163,6 +164,84 @@ bool TPicture_mask::on_key(KEY k)
|
|||||||
return TMask::on_key(k);
|
return TMask::on_key(k);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TPicture_mask::handler(WINDOW win, EVENT* ep)
|
||||||
|
{
|
||||||
|
switch (ep->type)
|
||||||
|
{
|
||||||
|
case E_TIMER:
|
||||||
|
if (ep->v.timer.id == _euro_timer && _euro.items())
|
||||||
|
{
|
||||||
|
const TImage& euro = (TImage&)_euro[_euro_frame];
|
||||||
|
|
||||||
|
RCT rct; xvt_vobj_get_client_rect(win, &rct);
|
||||||
|
int x = rct.right - euro.width() -1;
|
||||||
|
int y = rct.bottom - euro.height() -1;
|
||||||
|
euro.draw(win, x, y);
|
||||||
|
|
||||||
|
_euro_frame++;
|
||||||
|
if (_euro_frame >= _euro.items())
|
||||||
|
_euro_frame = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
TMask::handler(win, ep);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TPicture_mask::reload_images()
|
||||||
|
{
|
||||||
|
_euro.destroy();
|
||||||
|
const TString& codval = prefix().firm().codice_valuta();
|
||||||
|
if (::is_euro_value(codval))
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 17; i++)
|
||||||
|
{
|
||||||
|
TImage* e = new TImage(30001+i);
|
||||||
|
e->convert_transparent_color(MASK_BACK_COLOR);
|
||||||
|
_euro.add(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TFilename n = codval;
|
||||||
|
n << "0??.bmp";
|
||||||
|
TString_array a;
|
||||||
|
const int frames = list_files(n, a);
|
||||||
|
if (frames > 0)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < frames; i++)
|
||||||
|
{
|
||||||
|
TImage* e = new TImage(a.row(i));
|
||||||
|
e->convert_transparent_color(MASK_BACK_COLOR);
|
||||||
|
_euro.add(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_euro_frame = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TPicture_mask::on_firm_change()
|
||||||
|
{
|
||||||
|
reload_images();
|
||||||
|
force_update();
|
||||||
|
}
|
||||||
|
|
||||||
|
TPicture_mask::TPicture_mask(const char* name, int dx, int dy,
|
||||||
|
TImage* image, int x, int y)
|
||||||
|
: TMask(name, 1, dx, dy, x, y)
|
||||||
|
{
|
||||||
|
set_image(image);
|
||||||
|
|
||||||
|
reload_images();
|
||||||
|
_euro_timer = xvt_timer_create(win(), 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
TPicture_mask::~TPicture_mask()
|
||||||
|
{
|
||||||
|
xvt_timer_destroy(_euro_timer);
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Color Mask
|
// Color Mask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -708,12 +787,13 @@ bool TMenuitem::perform_program() const
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
|
TCurrency::force_cache_update(); // Chiude cache valute
|
||||||
prefix().set(NULL); // Chiude prefix
|
prefix().set(NULL); // Chiude prefix
|
||||||
TExternal_app a(_action);
|
TExternal_app a(_action);
|
||||||
a.run(FALSE,3);
|
a.run(FALSE,3);
|
||||||
|
|
||||||
const bool maintenance_app = _action.compare("ba1", 3, TRUE) == 0;
|
const bool maintenance_app = _action.compare("ba1 -0", 6, TRUE) == 0;
|
||||||
if (maintenance_app)
|
if (maintenance_app)
|
||||||
{
|
{
|
||||||
char line1[16],line2[16];
|
char line1[16],line2[16];
|
||||||
@ -1124,7 +1204,7 @@ protected:
|
|||||||
bool test_network();
|
bool test_network();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void reload_images() { _menu.reload_images(); }
|
void reload_images();
|
||||||
|
|
||||||
TMenu_application(const char* name) : _name(name), _mask(NULL) { }
|
TMenu_application(const char* name) : _name(name), _mask(NULL) { }
|
||||||
virtual ~TMenu_application() { }
|
virtual ~TMenu_application() { }
|
||||||
@ -1277,7 +1357,12 @@ HIDDEN bool pwd_handler(TMask_field& fld, KEY key)
|
|||||||
{
|
{
|
||||||
TMask& m = fld.mask();
|
TMask& m = fld.mask();
|
||||||
TString16 pwd;
|
TString16 pwd;
|
||||||
m.set(F_USER, dongle().administrator(&pwd));
|
TString16 usr = dongle().administrator(&pwd);
|
||||||
|
TLocalisamfile users(LF_USER);
|
||||||
|
users.put("USERNAME", usr);
|
||||||
|
users.read();
|
||||||
|
pwd = decode(users.get("PASSWORD"));
|
||||||
|
m.set(F_USER, usr);
|
||||||
m.set(F_PASSWORD, pwd);
|
m.set(F_PASSWORD, pwd);
|
||||||
m.stop_run(K_ENTER);
|
m.stop_run(K_ENTER);
|
||||||
}
|
}
|
||||||
@ -1286,6 +1371,13 @@ HIDDEN bool pwd_handler(TMask_field& fld, KEY key)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void TMenu_application::reload_images()
|
||||||
|
{
|
||||||
|
_menu.reload_images();
|
||||||
|
if (_mask)
|
||||||
|
_mask->reload_images();
|
||||||
|
}
|
||||||
|
|
||||||
bool TMenu_application::check_user()
|
bool TMenu_application::check_user()
|
||||||
{
|
{
|
||||||
TString utente(user());
|
TString utente(user());
|
||||||
@ -1461,7 +1553,7 @@ static int get_module_version(TConfig& cfg, void* jolly)
|
|||||||
|
|
||||||
bool TMenu_application::test_network()
|
bool TMenu_application::test_network()
|
||||||
{
|
{
|
||||||
return os_test_network_version();
|
return ::os_test_network_version();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TMenu_application::test_programs()
|
bool TMenu_application::test_programs()
|
||||||
@ -1518,7 +1610,7 @@ bool TMenu_application::test_programs()
|
|||||||
if (more)
|
if (more)
|
||||||
break;
|
break;
|
||||||
if (dangerous.empty() ||
|
if (dangerous.empty() ||
|
||||||
(!more && !yesno_box("Vuoi aggiornare i moduli adesso?")))
|
(!more && !yesno_box("Si desidera aggiornare i moduli adesso?")))
|
||||||
break;
|
break;
|
||||||
app.run(FALSE, TRUE, TRUE, TRUE);
|
app.run(FALSE, TRUE, TRUE, TRUE);
|
||||||
more = TRUE; // ricontrolla
|
more = TRUE; // ricontrolla
|
||||||
@ -1759,7 +1851,10 @@ bool TMenu_application::choose_study()
|
|||||||
prefix().set_studio(m.get(DLG_USER));
|
prefix().set_studio(m.get(DLG_USER));
|
||||||
ok = create();
|
ok = create();
|
||||||
if (ok)
|
if (ok)
|
||||||
|
{
|
||||||
|
set_firm();
|
||||||
_mask->stop_run(K_F9); // Ricarica maschera
|
_mask->stop_run(K_F9); // Ricarica maschera
|
||||||
|
}
|
||||||
else
|
else
|
||||||
stop_run(); // Termina applicazione
|
stop_run(); // Termina applicazione
|
||||||
}
|
}
|
||||||
@ -2284,7 +2379,8 @@ void TMenu_application::load_preferences()
|
|||||||
break;
|
break;
|
||||||
_preferred.add(row);
|
_preferred.add(row);
|
||||||
}
|
}
|
||||||
update_preferred();
|
if (i > 0)
|
||||||
|
update_preferred();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TMenu_application::save_preferences()
|
void TMenu_application::save_preferences()
|
||||||
@ -2439,7 +2535,7 @@ int TMenu_application::do_tree()
|
|||||||
_mask = &mask;
|
_mask = &mask;
|
||||||
|
|
||||||
const int twidth = 54;
|
const int twidth = 54;
|
||||||
const int bwidth = mask.columns() - twidth - 8;
|
const int bwidth = (mask.columns() - twidth - 8);
|
||||||
|
|
||||||
TMenu_tree tree(_menu);
|
TMenu_tree tree(_menu);
|
||||||
TTree_field& tree_fld = mask.add_tree(101, 0, 0, 0, twidth, -1);
|
TTree_field& tree_fld = mask.add_tree(101, 0, 0, 0, twidth, -1);
|
||||||
@ -2455,7 +2551,7 @@ int TMenu_application::do_tree()
|
|||||||
TButton_field& mf = mask.add_button(102, 0, "Menu principale", -1, 2, bwidth, 2);
|
TButton_field& mf = mask.add_button(102, 0, "Menu principale", -1, 2, bwidth, 2);
|
||||||
mf.set_handler(tree_shrink_handler);
|
mf.set_handler(tree_shrink_handler);
|
||||||
|
|
||||||
TButton_field& bf = mask.add_button(DLG_QUIT, 0, "Fine", -1, -1, bwidth, 2);
|
TButton_field& bf = mask.add_button(DLG_QUIT, 0, "Fine", -56, -1, bwidth/2, 2);
|
||||||
|
|
||||||
mask.first_focus(101);
|
mask.first_focus(101);
|
||||||
KEY key = mask.run();
|
KEY key = mask.run();
|
||||||
|
|||||||
33
ba/ba0.url
33
ba/ba0.url
@ -4,22 +4,35 @@
|
|||||||
MENUBAR MENU_BAR(0)
|
MENUBAR MENU_BAR(0)
|
||||||
|
|
||||||
MENU MENU_BAR(0)
|
MENU MENU_BAR(0)
|
||||||
SUBMENU M_FILE "~File"
|
SUBMENU M_FILE "~File"
|
||||||
SUBMENU M_EDIT "~Modifica"
|
SUBMENU M_EDIT "~Modifica"
|
||||||
SUBMENU M_FONT "~Opzioni" DISABLED
|
SUBMENU M_FONT "~Opzioni" DISABLED
|
||||||
SUBMENU M_PREF "~Preferiti" DISABLED
|
SUBMENU M_STYLE "~Preferiti" DISABLED
|
||||||
SUBMENU M_HELP "~Help"
|
SUBMENU M_HELP "~Help"
|
||||||
|
|
||||||
MENU M_FONT
|
MENU M_FONT
|
||||||
/*
|
|
||||||
ITEM M_FONT_SELECT "~Font"
|
|
||||||
ITEM MENU_ITEM(2) "~Colori"
|
|
||||||
*/
|
|
||||||
ITEM MENU_ITEM(2) "~Font e Colori"
|
ITEM MENU_ITEM(2) "~Font e Colori"
|
||||||
ITEM MENU_ITEM(3) "~Editors"
|
ITEM MENU_ITEM(3) "~Editors"
|
||||||
ITEM MENU_ITEM(4) "~Studio"
|
ITEM MENU_ITEM(4) "~Studio"
|
||||||
|
|
||||||
MENU M_PREF
|
MENU M_STYLE
|
||||||
ITEM MENU_ITEM(5) "~Aggiungi"
|
ITEM MENU_ITEM(5) "~Aggiungi"
|
||||||
ITEM MENU_ITEM(6) "~Organizza"
|
ITEM MENU_ITEM(6) "~Organizza"
|
||||||
|
|
||||||
|
image 30001 QRESDIR"euro01.bmp"
|
||||||
|
image 30002 QRESDIR"euro02.bmp"
|
||||||
|
image 30003 QRESDIR"euro03.bmp"
|
||||||
|
image 30004 QRESDIR"euro04.bmp"
|
||||||
|
image 30005 QRESDIR"euro05.bmp"
|
||||||
|
image 30006 QRESDIR"euro06.bmp"
|
||||||
|
image 30007 QRESDIR"euro07.bmp"
|
||||||
|
image 30008 QRESDIR"euro08.bmp"
|
||||||
|
image 30009 QRESDIR"euro09.bmp"
|
||||||
|
image 30010 QRESDIR"euro10.bmp"
|
||||||
|
image 30011 QRESDIR"euro11.bmp"
|
||||||
|
image 30012 QRESDIR"euro12.bmp"
|
||||||
|
image 30013 QRESDIR"euro13.bmp"
|
||||||
|
image 30014 QRESDIR"euro14.bmp"
|
||||||
|
image 30015 QRESDIR"euro15.bmp"
|
||||||
|
image 30016 QRESDIR"euro16.bmp"
|
||||||
|
image 30017 QRESDIR"euro17.bmp"
|
||||||
|
|||||||
@ -97,7 +97,7 @@ END
|
|||||||
|
|
||||||
BUTTON 114 10 2
|
BUTTON 114 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMT 19 -1 "Font"
|
PROMPT 19 -1 "Font"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 14 8
|
GROUPBOX DLG_NULL 14 8
|
||||||
|
|||||||
@ -77,4 +77,5 @@ END
|
|||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
|
|||||||
12
ba/ba1.url
12
ba/ba1.url
@ -1,12 +1,2 @@
|
|||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
#include <mainmenu.url>
|
||||||
/* ba1 -1 */
|
|
||||||
MENUBAR MENU_BAR(1)
|
|
||||||
|
|
||||||
MENU MENU_BAR(1)
|
|
||||||
SUBMENU M_FILE "~File"
|
|
||||||
SUBMENU M_EDIT "~Modifica"
|
|
||||||
ITEM BAR_ITEM(1) "~Test"
|
|
||||||
SUBMENU M_HELP "~Help"
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
235
ba/ba1100.cpp
235
ba/ba1100.cpp
@ -633,122 +633,129 @@ void TManutenzione_app::edit_riga (long riga_sel, TToken_string& riga)
|
|||||||
|
|
||||||
switch (tasto)
|
switch (tasto)
|
||||||
{
|
{
|
||||||
case K_F4:
|
case K_F4:
|
||||||
if (logicnum > 1)
|
if (logicnum > 1)
|
||||||
{
|
{
|
||||||
const TFilename filename(_mask->get(FLD_NOME));
|
const TFilename filename(_mask->get(FLD_NOME));
|
||||||
const TString tabella(_mask->get(F_TAB));
|
const TString16 tabella(_mask->get(F_TAB));
|
||||||
TEdit_file ef;
|
TEdit_file ef;
|
||||||
ef.browse(logicnum, filename, tabella);
|
ef.browse(logicnum, filename, tabella);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case K_F5:
|
case K_F5:
|
||||||
case K_F6:
|
case K_F6:
|
||||||
case K_F8:
|
case K_F8:
|
||||||
if (!superprassi)
|
if (!superprassi)
|
||||||
{
|
{
|
||||||
error_box("Funzione non ammessa per l'utente %s", (const char*)user());
|
error_box("Funzione non ammessa per l'utente %s", (const char*)user());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case K_F7:
|
case K_F7:
|
||||||
case K_ENTER:
|
case K_ENTER:
|
||||||
{
|
{
|
||||||
strcpy (dep.SysName,_mask->get (FLD_NOME));
|
strcpy (dep.SysName,_mask->get (FLD_NOME));
|
||||||
dep.EOD = atol(_mask->get (FLD_EOD));
|
dep.EOD = atol(_mask->get (FLD_EOD));
|
||||||
dep.Flags = atol(_mask->get (FLD_FLAG));
|
dep.Flags = atol(_mask->get (FLD_FLAG));
|
||||||
strcpy (dep.Des,_mask->get (FLD_DESC));
|
strcpy (dep.Des,_mask->get (FLD_DESC));
|
||||||
strcpy (dep.FCalc,_mask->get (FLD_FORMULA));
|
strcpy (dep.FCalc,_mask->get (FLD_FORMULA));
|
||||||
const TRecnotype eox = _mask->get_bool(FLD_EXTEND) ? _mask->get_long(FLD_EOX) : oldeox;
|
const TRecnotype eox = _mask->get_bool(FLD_EXTEND) ? _mask->get_long(FLD_EOX) : oldeox;
|
||||||
|
|
||||||
_browse->dir()->get(logicnum, _lock, _nordir, _sysdirop);
|
_browse->dir()->get(logicnum, _lock, _nordir, _sysdirop);
|
||||||
_browse->dir()->set(dep.SysName, dep.EOD, dep.Flags,
|
_browse->dir()->set(dep.SysName, dep.EOD, dep.Flags,
|
||||||
dep.Des, dep.FCalc);
|
dep.Des, dep.FCalc);
|
||||||
_browse->dir()->put(logicnum, _nordir, _sysdirop);
|
_browse->dir()->put(logicnum, _nordir, _sysdirop);
|
||||||
if (eox != oldeox)
|
|
||||||
{
|
{
|
||||||
TSystemisamfile f(logicnum);
|
TSystemisamfile f(logicnum);
|
||||||
d.get(logicnum);
|
|
||||||
TFilename f_name(d.name());
|
if (eox != oldeox)
|
||||||
f_name.ext("dbf");
|
{
|
||||||
if (f_name.exist())
|
d.get(logicnum);
|
||||||
f.extend(eox);
|
TFilename f_name(d.name());
|
||||||
else
|
f_name.ext("dbf");
|
||||||
f.build(eox);
|
|
||||||
_browse->dir()->get(logicnum, _nolock, _nordir, _sysdirop);
|
if (!f_name.exist()) f.build(eox);
|
||||||
}
|
else f.extend(eox);
|
||||||
if (tasto == K_F5 && logicnum > 1)
|
_browse->dir()->get(logicnum, _nolock, _nordir, _sysdirop);
|
||||||
{
|
}
|
||||||
TSystemisamfile f(logicnum);
|
if (tasto == K_F5 && logicnum > 1)
|
||||||
f.pack();
|
{
|
||||||
//Pack supplementare tramite FOXPRO (da togliere con CodeBase 6)
|
f.packfile();
|
||||||
#if XVT_OS == XVT_OS_WIN || XVT_OS == XVT_OS_WIN32
|
f.packindex();
|
||||||
#if !defined(CB6)
|
//Pack supplementare tramite FOXPRO (da togliere con CodeBase 6)
|
||||||
if (logicnum > 2 && logicnum < 6 && f.status() == NOERR)
|
#if XVT_OS == XVT_OS_WIN
|
||||||
if (fexist("packaga.exe"))
|
if (logicnum > 2 && logicnum < 6 && f.status() == NOERR)
|
||||||
{
|
if (fexist("packaga.exe"))
|
||||||
d.get(logicnum);
|
{
|
||||||
TFilename f_name(d.name());
|
d.get(logicnum);
|
||||||
f_name.ext("dbf");
|
TFilename f_name(d.name());
|
||||||
f_name.replace('/','\\'); // A volte rimangono delle slash
|
f_name.ext("dbf");
|
||||||
TString cmd("packaga -t");
|
f_name.replace('/','\\'); // A volte rimangono delle slash
|
||||||
cmd << " " << f_name;
|
TString cmd("packaga -t");
|
||||||
TExternal_app packapp(cmd);
|
cmd << " " << f_name;
|
||||||
packapp.run(FALSE,FALSE);
|
TExternal_app packapp(cmd);
|
||||||
}
|
packapp.run(FALSE,FALSE);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
}
|
||||||
}
|
else
|
||||||
else
|
if (tasto == K_F6)
|
||||||
if (tasto == K_F6)
|
{
|
||||||
{
|
_rec = new TRec_sheet(logicnum, _mask->get(F_TAB));
|
||||||
_rec = new TRec_sheet(logicnum, _mask->get(F_TAB));
|
_rec->edit();
|
||||||
_rec->edit();
|
delete _rec;
|
||||||
delete _rec;
|
_rec = NULL;
|
||||||
_rec = NULL;
|
}
|
||||||
}
|
else
|
||||||
else
|
if (tasto == K_F7)
|
||||||
if(tasto == K_F7)
|
{
|
||||||
{
|
TMask m("ba1100b");
|
||||||
TMask m("ba1100b");
|
|
||||||
|
TFilename nout(dumpfilename(dep));
|
||||||
TFilename nout(dumpfilename(dep));
|
m.set(FLD_OUTFILE, nout);
|
||||||
m.set(FLD_OUTFILE, nout);
|
|
||||||
|
if (m.run() == K_ENTER)
|
||||||
if (m.run() == K_ENTER)
|
{
|
||||||
{
|
nout = m.get(FLD_OUTFILE);
|
||||||
nout = m.get(FLD_OUTFILE);
|
if (nout.not_empty())
|
||||||
if (nout.not_empty())
|
{
|
||||||
{
|
const char fs = *esc(m.get(FLD_FS));
|
||||||
TSystemisamfile f(logicnum);
|
const char fd = *esc(m.get(FLD_FD));
|
||||||
const char fs = *esc(m.get(FLD_FS));
|
const char rs = *esc(m.get(FLD_RS));
|
||||||
const char fd = *esc(m.get(FLD_FD));
|
const bool withdel = m.get_bool(FLD_WITHDEL);
|
||||||
const char rs = *esc(m.get(FLD_RS));
|
const int keyno = m.get_int(FLD_KEYNO);
|
||||||
const bool withdel = m.get_bool(FLD_WITHDEL);
|
const TString16 tabella(_mask->get(F_TAB));
|
||||||
const int keyno = m.get_int(FLD_KEYNO);
|
if (tabella.not_empty())
|
||||||
f.dump(nout, keyno, fs, fd, rs, withdel);
|
{
|
||||||
}
|
TToken_string filter;
|
||||||
}
|
filter.add("COD"); filter.add(tabella);
|
||||||
}
|
f.dump(nout, keyno, fs, fd, rs, TRUE, withdel, filter);
|
||||||
else
|
}
|
||||||
if (tasto == K_F8)
|
else
|
||||||
{
|
f.dump(nout, keyno, fs, fd, rs, TRUE, withdel);
|
||||||
TMask m("ba1100c");
|
}
|
||||||
TFilename ninp(dumpfilename(dep));
|
}
|
||||||
m.set(FLD_INFILE, ninp);
|
}
|
||||||
if (m.run() == K_ENTER)
|
else
|
||||||
{
|
if (tasto == K_F8)
|
||||||
TSystemisamfile f(logicnum);
|
{
|
||||||
char fs = *esc(m.get(FLD_FS));
|
TMask m("ba1100c");
|
||||||
char fd = *esc(m.get(FLD_FD));
|
TFilename ninp(dumpfilename(dep));
|
||||||
char rs = *esc(m.get(FLD_RS));
|
m.set(FLD_INFILE, ninp);
|
||||||
ninp = m.get(FLD_INFILE);
|
if (m.run() == K_ENTER)
|
||||||
f.load(ninp, fs, fd, rs);
|
{
|
||||||
}
|
char fs = *esc(m.get(FLD_FS));
|
||||||
}
|
char fd = *esc(m.get(FLD_FD));
|
||||||
}
|
char rs = *esc(m.get(FLD_RS));
|
||||||
break;
|
ninp = m.get(FLD_INFILE);
|
||||||
default:
|
f.load(ninp, fs, fd, rs);
|
||||||
break;
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -134,7 +134,7 @@ public:
|
|||||||
TString_array& properties(const char* cmd);
|
TString_array& properties(const char* cmd);
|
||||||
const TString_array* find_properties(const char* cmd) const;
|
const TString_array* find_properties(const char* cmd) const;
|
||||||
|
|
||||||
TMenu();
|
TMenu(const char* name);
|
||||||
virtual ~TMenu() { }
|
virtual ~TMenu() { }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -146,7 +146,6 @@ class TSet_user_passwd : public TRelation_application
|
|||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
TMask* _msk;
|
TMask* _msk;
|
||||||
// TMenu* _tree;
|
|
||||||
TRelation* _rel;
|
TRelation* _rel;
|
||||||
TInformazione_moduli* _im;
|
TInformazione_moduli* _im;
|
||||||
|
|
||||||
@ -374,10 +373,10 @@ TSubmenu& TMenu::add_submenu(const char* para, int parent_module)
|
|||||||
return sub;
|
return sub;
|
||||||
}
|
}
|
||||||
|
|
||||||
TMenu::TMenu()
|
TMenu::TMenu(const char* menuname)
|
||||||
{
|
{
|
||||||
TString root;
|
TString root;
|
||||||
import("baprassi.men", root);
|
import(menuname, root);
|
||||||
add_son(new TMenu_node("Menu Principale"));
|
add_son(new TMenu_node("Menu Principale"));
|
||||||
add_submenu(root, 0);
|
add_submenu(root, 0);
|
||||||
goto_root();
|
goto_root();
|
||||||
@ -631,9 +630,13 @@ bool TSet_users::user_create()
|
|||||||
_msk->set_handler(F_USER, user_handler);
|
_msk->set_handler(F_USER, user_handler);
|
||||||
_msk->set_handler(F_GROUPNAME, group_handler);
|
_msk->set_handler(F_GROUPNAME, group_handler);
|
||||||
TSheet_field& sf = sheet_field();
|
TSheet_field& sf = sheet_field();
|
||||||
sf.set_notify(k_notify);
|
sf.set_notify(k_notify);
|
||||||
|
|
||||||
|
const char* menuname = "baprassi.men";
|
||||||
|
if (argc() > 2)
|
||||||
|
menuname = argv(2);
|
||||||
|
|
||||||
_tree = new TMenu;
|
_tree = new TMenu(menuname);
|
||||||
_msk->set_handler(F_PERMESSI, tree_handler);
|
_msk->set_handler(F_PERMESSI, tree_handler);
|
||||||
_msk->tfield(F_PERMESSI).set_tree(_tree);
|
_msk->tfield(F_PERMESSI).set_tree(_tree);
|
||||||
_msk->sfield(F_PROPERTIES).set_notify(p_notify);
|
_msk->sfield(F_PROPERTIES).set_notify(p_notify);
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
#include <form.h>
|
#include <form.h>
|
||||||
#include <modaut.h>
|
#include <modaut.h>
|
||||||
#include <msksheet.h>
|
#include <msksheet.h>
|
||||||
|
#include <os_dep.h>
|
||||||
#include <prefix.h>
|
#include <prefix.h>
|
||||||
#include <printer.h>
|
#include <printer.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
@ -163,6 +164,7 @@ class TRequest_form : public TForm
|
|||||||
public:
|
public:
|
||||||
void update_serno(const TString& serno);
|
void update_serno(const TString& serno);
|
||||||
void update_dongle(const TDongle& dongle);
|
void update_dongle(const TDongle& dongle);
|
||||||
|
void update_os();
|
||||||
void print_footer();
|
void print_footer();
|
||||||
|
|
||||||
TRequest_form(const char* name);
|
TRequest_form(const char* name);
|
||||||
@ -201,9 +203,9 @@ void TRequest_form::update_serno(const TString& num)
|
|||||||
switch (::dongle().hardware() )
|
switch (::dongle().hardware() )
|
||||||
{
|
{
|
||||||
case _dongle_eutron:
|
case _dongle_eutron:
|
||||||
find_field('H',odd_page,FF_DONGLE_HD).set("EUTRON"); break;
|
find_field('H',odd_page,FF_DONGLE_HW).set("EUTRON"); break;
|
||||||
default:
|
default:
|
||||||
find_field('H',odd_page,FF_DONGLE_HD).set("HARDLOCK"); break;
|
find_field('H',odd_page,FF_DONGLE_HW).set("HARDLOCK"); break;
|
||||||
}
|
}
|
||||||
TForm_item& serno = find_field('H', odd_page, FF_DONGLE_SN);
|
TForm_item& serno = find_field('H', odd_page, FF_DONGLE_SN);
|
||||||
serno.set(num);
|
serno.set(num);
|
||||||
@ -222,6 +224,23 @@ void TRequest_form::update_dongle(const TDongle& dongle)
|
|||||||
user.set(str);
|
user.set(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TRequest_form::update_os()
|
||||||
|
{
|
||||||
|
TForm_item& os = find_field('H', odd_page, FF_OS);
|
||||||
|
TString stros = "Windows ";
|
||||||
|
|
||||||
|
switch (::os_get_type())
|
||||||
|
{
|
||||||
|
case os_Windows : stros << "3.1"; break;
|
||||||
|
case os_Windows95: stros << "95"; break;
|
||||||
|
case os_Windows98: stros << "98"; break;
|
||||||
|
case os_WindowsME: stros << "ME"; break;
|
||||||
|
case os_WindowsNT: stros << "NT/2000"; break;
|
||||||
|
default : break;
|
||||||
|
}
|
||||||
|
os.set(stros);
|
||||||
|
}
|
||||||
|
|
||||||
void TRequest_form::print_footer()
|
void TRequest_form::print_footer()
|
||||||
{
|
{
|
||||||
set_footer(odd_page, TRUE);
|
set_footer(odd_page, TRUE);
|
||||||
@ -287,8 +306,11 @@ protected:
|
|||||||
static bool sh_aggiornamento_handler(TMask_field& fld, KEY key);
|
static bool sh_aggiornamento_handler(TMask_field& fld, KEY key);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
bool new_module_requested();
|
||||||
|
|
||||||
void print_request();
|
void print_request();
|
||||||
void print_answer();
|
void print_answer();
|
||||||
|
void print_status();
|
||||||
void print_listino();
|
void print_listino();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -714,7 +736,7 @@ bool TAttivazione_moduli::change_assist_handler(TMask_field& fld, KEY key)
|
|||||||
const word year = m.get_int(101);
|
const word year = m.get_int(101);
|
||||||
if (dongle.type() == _user_dongle)
|
if (dongle.type() == _user_dongle)
|
||||||
{
|
{
|
||||||
if (year > dongle.year_assist() && year <= 2997)
|
if (year >= dongle.year_assist() && year <= 2997)
|
||||||
{
|
{
|
||||||
if (m.field(102).empty())
|
if (m.field(102).empty())
|
||||||
{
|
{
|
||||||
@ -1112,6 +1134,7 @@ void TAttivazione_moduli::print_request()
|
|||||||
}
|
}
|
||||||
form.update_serno(_msk->get(F_SN));
|
form.update_serno(_msk->get(F_SN));
|
||||||
form.update_dongle(::dongle());
|
form.update_dongle(::dongle());
|
||||||
|
form.update_os();
|
||||||
}
|
}
|
||||||
|
|
||||||
str.format("%3d", ++found);
|
str.format("%3d", ++found);
|
||||||
@ -1175,6 +1198,38 @@ void TAttivazione_moduli::print_request()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TAttivazione_moduli::print_status()
|
||||||
|
{
|
||||||
|
TRequest_form form("ba1500a");
|
||||||
|
TForm_item& descr = form.find_field('B', odd_page, 102);
|
||||||
|
TForm_item& codice = form.find_field('B', odd_page, 103);
|
||||||
|
|
||||||
|
form.find_field('H',odd_page,1).set("PR.A.S.S.I.");
|
||||||
|
form.update_serno(_msk->get(F_SN));
|
||||||
|
form.update_dongle(::dongle());
|
||||||
|
form.update_os();
|
||||||
|
|
||||||
|
TWait_cursor hourglass;
|
||||||
|
printer().open();
|
||||||
|
|
||||||
|
TSheet_field& sheet = _msk->sfield(F_MODULI);
|
||||||
|
FOR_EACH_SHEET_ROW(sheet, r, row)
|
||||||
|
{
|
||||||
|
//const int module = _im->get_module_by_order(r);
|
||||||
|
const int module = row->get_int(2) ;
|
||||||
|
const bool active = ::dongle().active(module);
|
||||||
|
|
||||||
|
if (!active)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
descr.set(row->get(0));
|
||||||
|
codice.set("*ATTIVO*");
|
||||||
|
form.print(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
printer().close();
|
||||||
|
}
|
||||||
|
|
||||||
void TAttivazione_moduli::print_answer()
|
void TAttivazione_moduli::print_answer()
|
||||||
{
|
{
|
||||||
TString str;
|
TString str;
|
||||||
@ -1316,12 +1371,34 @@ void TAttivazione_moduli::print_listino()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TAttivazione_moduli::new_module_requested()
|
||||||
|
{
|
||||||
|
TSheet_field& sheet = _msk->sfield(F_MODULI);
|
||||||
|
bool found = FALSE;
|
||||||
|
FOR_EACH_SHEET_ROW(sheet, r, row)
|
||||||
|
{
|
||||||
|
if (*row->get(1) > ' ') // Wanted!
|
||||||
|
{
|
||||||
|
const int module = row->get_int(2);
|
||||||
|
if (!::dongle().active(module)) // Not active yet?
|
||||||
|
{
|
||||||
|
found = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
|
||||||
void TAttivazione_moduli::print()
|
void TAttivazione_moduli::print()
|
||||||
{
|
{
|
||||||
if (::dongle().type() == _user_dongle)
|
if (::dongle().type() == _user_dongle)
|
||||||
print_request();
|
{
|
||||||
|
if (new_module_requested())
|
||||||
|
print_request();
|
||||||
|
else
|
||||||
|
print_status();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
print_answer();
|
print_answer();
|
||||||
}
|
}
|
||||||
|
|||||||
17
ba/ba1500a.h
17
ba/ba1500a.h
@ -17,9 +17,9 @@
|
|||||||
#define F_CHANGEASSIST 217
|
#define F_CHANGEASSIST 217
|
||||||
#define F_PRINT 218
|
#define F_PRINT 218
|
||||||
#define F_AGA 219
|
#define F_AGA 219
|
||||||
#define F_AGGLISTINO 220
|
#define F_AGGLISTINO 220
|
||||||
#define F_MODLISTINO 221
|
#define F_MODLISTINO 221
|
||||||
#define F_PRINTLIST 222
|
#define F_PRINTLIST 222
|
||||||
|
|
||||||
#define F_NOMEMOD 101
|
#define F_NOMEMOD 101
|
||||||
#define F_ENABLE 102
|
#define F_ENABLE 102
|
||||||
@ -27,8 +27,9 @@
|
|||||||
#define F_KEY 104
|
#define F_KEY 104
|
||||||
|
|
||||||
|
|
||||||
#define FF_DATARICH 101
|
#define FF_DATARICH 101
|
||||||
#define FF_DONGLE_HD 102
|
#define FF_DONGLE_HW 102
|
||||||
#define FF_DONGLE_SN 103
|
#define FF_DONGLE_SN 103
|
||||||
#define FF_YEAR 104
|
#define FF_YEAR 104
|
||||||
#define FF_NUTENTI 105
|
#define FF_NUTENTI 105
|
||||||
|
#define FF_OS 106
|
||||||
|
|||||||
@ -65,37 +65,32 @@ END
|
|||||||
STRING S_VERSION 8
|
STRING S_VERSION 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Versione "
|
PROMPT 1 2 "Versione "
|
||||||
// FLAGS "D"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_PATCHLEVEL 3
|
STRING S_PATCHLEVEL 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 20 2 "Patch "
|
PROMPT 20 2 "Patch "
|
||||||
// FLAGS "D"
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE S_DATE
|
DATE S_DATE
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 31 2 "Rilascio "
|
PROMPT 31 2 "Rilascio "
|
||||||
// FLAGS "D"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_EXTERN 50 40
|
STRING S_EXTERN 50 40
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 3 "Esterni "
|
PROMPT 1 3 "Esterni "
|
||||||
// FLAGS "D"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_PREPROCESS 50 33
|
STRING S_PREPROCESS 50 33
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Pre-processing "
|
PROMPT 1 4 "Pre-processing "
|
||||||
// FLAGS "D"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_POSTPROCESS 50 33
|
STRING S_POSTPROCESS 50 33
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 "Post-processing "
|
PROMPT 1 5 "Post-processing "
|
||||||
// FLAGS "D"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_OK 22 2
|
BUTTON DLG_OK 22 2
|
||||||
|
|||||||
@ -132,13 +132,18 @@ bool TInstaller_mask::add_module(TConfig& ini, const TString& module, bool patch
|
|||||||
ini.write_protect();
|
ini.write_protect();
|
||||||
bool ok = ini.set_paragraph(module);
|
bool ok = ini.set_paragraph(module);
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
|
const int numpatch = ini.get_int("Patch");
|
||||||
|
TString16 strpatch;
|
||||||
|
if (numpatch > 0)
|
||||||
|
strpatch.format("%03d", numpatch);
|
||||||
|
|
||||||
TToken_string row;
|
TToken_string row;
|
||||||
row = " "; // Not selected
|
row = " "; // Not selected
|
||||||
row.add(ini.get("Descrizione"));
|
row.add(ini.get("Descrizione"));
|
||||||
row.add(module);
|
row.add(module);
|
||||||
row.add(ini.get("Versione"));
|
row.add(ini.get("Versione"));
|
||||||
row.add(ini.get("Patch"));
|
row.add(strpatch);
|
||||||
row.add(ini.get("Data"));
|
row.add(ini.get("Data"));
|
||||||
row.add(patch ? "X" : " ", C_ISPATCH);
|
row.add(patch ? "X" : " ", C_ISPATCH);
|
||||||
if (pos==-1)
|
if (pos==-1)
|
||||||
@ -238,8 +243,11 @@ void TInstaller_mask::update_version()
|
|||||||
|
|
||||||
const TString16 newver = row->get(C_RELEASE);
|
const TString16 newver = row->get(C_RELEASE);
|
||||||
const TString16 oldver = ini.get("Versione");
|
const TString16 oldver = ini.get("Versione");
|
||||||
|
const int numpatch = ini.get_int("Patch");
|
||||||
|
TString16 strpatch;
|
||||||
|
if (numpatch > 0) strpatch.format("%03d", numpatch);
|
||||||
row->add(oldver, C_CURRRELEASE);
|
row->add(oldver, C_CURRRELEASE);
|
||||||
row->add(ini.get("Patch"), C_CURRPATCH);
|
row->add(strpatch, C_CURRPATCH);
|
||||||
row->add(ini.get("Data"), C_CURRDATAREL);
|
row->add(ini.get("Data"), C_CURRDATAREL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -423,8 +431,9 @@ bool TInstaller_mask::autoload()
|
|||||||
TString16 patchversion = ini.get("Versione");
|
TString16 patchversion = ini.get("Versione");
|
||||||
if (patchversion == mask_rows.row(r+1).get(C_RELEASE) // se le versioni corrispondono ...
|
if (patchversion == mask_rows.row(r+1).get(C_RELEASE) // se le versioni corrispondono ...
|
||||||
&& patchlevel > atoi(mask_rows.row(r+1).get(C_PATCH)) ) // ..e il patchlevel è superiore
|
&& patchlevel > atoi(mask_rows.row(r+1).get(C_PATCH)) ) // ..e il patchlevel è superiore
|
||||||
{
|
{
|
||||||
mask_rows.row(r+1).add(patchlevel, C_PATCH); // aggiorna il patchlevel mostrato per il modulo
|
TString16 patch; patch.format("%03d", patchlevel); //aggiunge zeri per avere 3 cifre sempre
|
||||||
|
mask_rows.row(r+1).add(patch, C_PATCH); // aggiorna il patchlevel mostrato per il modulo
|
||||||
if (*mask_rows.row(r+1).get(C_ISPATCH)==' ') // se era un modulo ...
|
if (*mask_rows.row(r+1).get(C_ISPATCH)==' ') // se era un modulo ...
|
||||||
mask_rows.row(r+1).add("+", C_ISPATCH); // .....setta la presenza di patches
|
mask_rows.row(r+1).add("+", C_ISPATCH); // .....setta la presenza di patches
|
||||||
force_update(r+1);
|
force_update(r+1);
|
||||||
@ -533,12 +542,11 @@ bool TInstaller_mask::can_install(const char* module, TInstall_ini& ini)
|
|||||||
// todir: direttorio destinazione (si assume che esista già)
|
// todir: direttorio destinazione (si assume che esista già)
|
||||||
bool TInstaller_mask::move_file(const TFilename& from, const TFilename& file, const char* todir) const
|
bool TInstaller_mask::move_file(const TFilename& from, const TFilename& file, const char* todir) const
|
||||||
{
|
{
|
||||||
|
|
||||||
TFilename dest(todir);
|
TFilename dest(todir);
|
||||||
const char *fname=file.mid(from.len()+1);
|
const char *fname=file.mid(from.len()+1);
|
||||||
if (strcmp(fname,"ba0.exe")==0)
|
if (stricmp(fname,"ba0.exe")==0)
|
||||||
dest.add("BA0.EX_");
|
dest.add("BA0.EX_");
|
||||||
else if (strcmp(fname,"ba1.exe")==0)
|
else if (stricmp(fname,"ba1.exe")==0)
|
||||||
dest.add("BA1.EX_");
|
dest.add("BA1.EX_");
|
||||||
else
|
else
|
||||||
dest.add(fname);
|
dest.add(fname);
|
||||||
@ -960,10 +968,10 @@ void TInstaller_mask::parse_internet_path(TString & http_server, TFilename &http
|
|||||||
const int slash = http_server.find('/');
|
const int slash = http_server.find('/');
|
||||||
if (slash > 0)
|
if (slash > 0)
|
||||||
{
|
{
|
||||||
http_path = http_server.mid(slash);
|
http_path = http_server.mid(slash);
|
||||||
if (http_path.right(1) != "/")
|
if (http_path.right(1) != "/")
|
||||||
http_path << '/';
|
http_path << '/';
|
||||||
http_server.cut(slash);
|
http_server.cut(slash);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
http_path = http_default_path;
|
http_path = http_default_path;
|
||||||
@ -1144,7 +1152,7 @@ bool TInstaller_mask::quit_handler(TMask_field& f, KEY k)
|
|||||||
const bool some = _curr_mask->one_checked();
|
const bool some = _curr_mask->one_checked();
|
||||||
_curr_mask->enable_check(check_on);
|
_curr_mask->enable_check(check_on);
|
||||||
if (some)
|
if (some)
|
||||||
return noyes_box("Alcuni moduli sono selezionati per l'installazione.\nConfermi l'uscita?");
|
return noyes_box("Alcuni moduli sono selezionati per l'installazione.\nConfermare l'uscita");
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -1310,6 +1318,8 @@ void TInstaller::main_loop()
|
|||||||
TExternal_app conversion("ba1 -0 -C");
|
TExternal_app conversion("ba1 -0 -C");
|
||||||
conversion.run();
|
conversion.run();
|
||||||
}
|
}
|
||||||
|
delete _m;
|
||||||
|
_m = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
class TExtendedInstaller : public TInstaller
|
class TExtendedInstaller : public TInstaller
|
||||||
@ -1327,14 +1337,15 @@ bool TExtendedInstaller::create()
|
|||||||
|
|
||||||
void TExtendedInstaller::main_loop()
|
void TExtendedInstaller::main_loop()
|
||||||
{
|
{
|
||||||
TInstaller_mask m;
|
_m->run();
|
||||||
m.run();
|
if (_m->installed() && testdatabase()) // Almeno 1 modulo installato ?
|
||||||
if (m.installed() && testdatabase()) // Almeno 1 modulo installato ?
|
|
||||||
{
|
{
|
||||||
// Lancia conversione: ba1 -0 -C -uPRASSI
|
// Lancia conversione: ba1 -0 -C -uPRASSI
|
||||||
TExternal_app conversion("ba1 -0 -C");
|
TExternal_app conversion("ba1 -0 -C");
|
||||||
conversion.run();
|
conversion.run();
|
||||||
}
|
}
|
||||||
|
delete _m;
|
||||||
|
_m = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PROGNAME "Installer"
|
#define PROGNAME "Installer"
|
||||||
|
|||||||
24
ba/ba2.url
24
ba/ba2.url
@ -1,6 +1,7 @@
|
|||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
|
||||||
/*
|
MENUBAR TASK_MENUBAR
|
||||||
|
|
||||||
#define MENU_FILE_ALT TASK_MENUBAR+4000
|
#define MENU_FILE_ALT TASK_MENUBAR+4000
|
||||||
|
|
||||||
#define M_FIL1_NEW MENU_FILE_ALT+101
|
#define M_FIL1_NEW MENU_FILE_ALT+101
|
||||||
@ -63,6 +64,27 @@ MENU BAR_ITEM(1)
|
|||||||
ITEM MENU_ITEM(53) "~Primo"
|
ITEM MENU_ITEM(53) "~Primo"
|
||||||
ITEM MENU_ITEM(54) "~Ultimo"
|
ITEM MENU_ITEM(54) "~Ultimo"
|
||||||
|
|
||||||
|
MENUBAR MENU_BAR(1)
|
||||||
|
|
||||||
|
MENU TASK_MENUBAR+1
|
||||||
|
SUBMENU M_FILE "~File"
|
||||||
|
|
||||||
|
|
||||||
|
MENUBAR MENU_BAR(2)
|
||||||
|
|
||||||
|
MENU MENU_BAR(2)
|
||||||
|
SUBMENU M_FILE "~File"
|
||||||
|
|
||||||
|
MENUBAR MENU_BAR(3)
|
||||||
|
|
||||||
|
MENU MENU_BAR(3)
|
||||||
|
SUBMENU M_FILE "~File"
|
||||||
|
|
||||||
|
MENUBAR MENU_BAR(4)
|
||||||
|
|
||||||
|
MENU MENU_BAR(4)
|
||||||
|
SUBMENU M_FILE "~File"
|
||||||
|
|
||||||
MENUBAR MENU_BAR(5)
|
MENUBAR MENU_BAR(5)
|
||||||
|
|
||||||
MENU MENU_BAR(5)
|
MENU MENU_BAR(5)
|
||||||
|
|||||||
@ -1,2 +1,3 @@
|
|||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
#include <mainmenu.url>
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,7 @@
|
|||||||
#define TAB_BANCHE "%BAN"
|
#define TAB_BANCHE "%BAN"
|
||||||
#define TAB_CAMBI "CAM"
|
#define TAB_CAMBI "CAM"
|
||||||
#define TAB_DELEGHE "%DEL"
|
#define TAB_DELEGHE "%DEL"
|
||||||
|
#define TAB_IVDIRETTIVA "%IVD"
|
||||||
#define TAB_REGISTRI "REG"
|
#define TAB_REGISTRI "REG"
|
||||||
#define TAB_VALUTE "%VAL"
|
#define TAB_VALUTE "%VAL"
|
||||||
#define TAB_VERSAMENTI "%VER"
|
#define TAB_VERSAMENTI "%VER"
|
||||||
@ -138,14 +139,17 @@ void TGeneric_table_app::init_insert_mode(TMask& m)
|
|||||||
for (reg.read(_isgteq); !_exist_journal && reg.good() && reg.curr() <= to; reg.next())
|
for (reg.read(_isgteq); !_exist_journal && reg.good() && reg.curr() <= to; reg.next())
|
||||||
_exist_journal = (reg.get_long("I0") == REG_JOURNAL);
|
_exist_journal = (reg.get_long("I0") == REG_JOURNAL);
|
||||||
}
|
}
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
if (n == TAB_VERSAMENTI)
|
if (n == TAB_VERSAMENTI)
|
||||||
{
|
{
|
||||||
// Se il record e' nuovo prima carica il record precedente
|
// Se il record e' nuovo prima carica il record precedente
|
||||||
load_rec_in_disabled_fields(m);
|
load_rec_in_disabled_fields(m);
|
||||||
// poi copia il contenuto nei campi di input, come valori predefiniti
|
// poi copia il contenuto nei campi di input, come valori predefiniti
|
||||||
copy_rec_in_insert_fields(m);
|
copy_rec_in_insert_fields(m);
|
||||||
|
} else
|
||||||
|
if (n == TAB_VALUTE)
|
||||||
|
{
|
||||||
|
m.enable(-3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,10 +166,13 @@ void TGeneric_table_app::init_modify_mode(TMask& m)
|
|||||||
const int what = ini.get_int("Type", NULL, -1, -1);
|
const int what = ini.get_int("Type", NULL, -1, -1);
|
||||||
m.set(F_CONFIG, what >= 0 ? "X" : "");
|
m.set(F_CONFIG, what >= 0 ? "X" : "");
|
||||||
m.enable(F_CONFIG, what >= 0);
|
m.enable(F_CONFIG, what >= 0);
|
||||||
}
|
} else
|
||||||
else
|
if (n == TAB_VALUTE)
|
||||||
if (n == TAB_VERSAMENTI)
|
{
|
||||||
load_rec_in_disabled_fields(m);
|
m.disable(-3); // Disabilita scelta decimali e contro-euro
|
||||||
|
} else
|
||||||
|
if (n == TAB_VERSAMENTI)
|
||||||
|
load_rec_in_disabled_fields(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TGeneric_table_app::init_query_mode(TMask& m)
|
void TGeneric_table_app::init_query_mode(TMask& m)
|
||||||
@ -184,7 +191,7 @@ bool TGeneric_table_app::protected_record(TRectype& rec)
|
|||||||
bool prot = rec.get_bool(FPC);
|
bool prot = rec.get_bool(FPC);
|
||||||
if (!prot)
|
if (!prot)
|
||||||
{
|
{
|
||||||
if (get_tabname() == "%IVD") // Impedisce la cancellazione di una classe se ha sottoclassi
|
if (get_tabname() == TAB_IVDIRETTIVA) // Impedisce la cancellazione di una classe se ha sottoclassi
|
||||||
{
|
{
|
||||||
TLocalisamfile& f = get_relation()->lfile();
|
TLocalisamfile& f = get_relation()->lfile();
|
||||||
const TRecnotype pos = f.recno();
|
const TRecnotype pos = f.recno();
|
||||||
@ -387,7 +394,7 @@ HIDDEN bool impdel_handler(TMask_field& f, KEY k)
|
|||||||
else lim = ver.get(I_ACCONTOIVA);
|
else lim = ver.get(I_ACCONTOIVA);
|
||||||
const real imp(m.get(F_IMPORTO));
|
const real imp(m.get(F_IMPORTO));
|
||||||
if (imp < lim)
|
if (imp < lim)
|
||||||
return f.yesno_box("Importo inferiore a Lit. %s. Registrare ugualmente?", lim.string("."));
|
return f.yesno_box("Importo inferiore a %s. Registrare ugualmente?", lim.string("."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -447,6 +454,17 @@ HIDDEN bool mese_handler(TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HIDDEN bool key_handler(TMask& m, KEY k)
|
||||||
|
{
|
||||||
|
// Per ora facciamo che il SHIFT+F12 attiva sempre il campo 3
|
||||||
|
if (m.edit_mode())
|
||||||
|
{
|
||||||
|
if (k == K_SHIFT+K_F12)
|
||||||
|
m.enable(-3);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
bool TGeneric_table_app::valute_decimals_handler(TMask_field& f, KEY k)
|
bool TGeneric_table_app::valute_decimals_handler(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
if (k == K_SPACE)
|
if (k == K_SPACE)
|
||||||
@ -548,11 +566,13 @@ bool TGeneric_table_app::user_create()
|
|||||||
if (name == TAB_VALUTE)
|
if (name == TAB_VALUTE)
|
||||||
{
|
{
|
||||||
mask.set_handler(VAL_DECIMALS_CHANGE, valute_decimals_handler);
|
mask.set_handler(VAL_DECIMALS_CHANGE, valute_decimals_handler);
|
||||||
|
mask.set_handler(key_handler); // Handler dello SHIFT-F12
|
||||||
}
|
}
|
||||||
if (name == TAB_CAMBI)
|
if (name == TAB_CAMBI)
|
||||||
{
|
{
|
||||||
mask.set_handler(FLD_TABCAM_S4, change_decimals_handler);
|
mask.set_handler(FLD_TABCAM_S4, change_decimals_handler);
|
||||||
}
|
}
|
||||||
|
/* OB600040
|
||||||
if (name == TAB_VERSAMENTI)
|
if (name == TAB_VERSAMENTI)
|
||||||
{
|
{
|
||||||
TLocalisamfile& ver = get_relation()->lfile();
|
TLocalisamfile& ver = get_relation()->lfile();
|
||||||
@ -568,6 +588,7 @@ bool TGeneric_table_app::user_create()
|
|||||||
error_box("Errore %d in scrittura sulla tabella versamenti",ver.status());
|
error_box("Errore %d in scrittura sulla tabella versamenti",ver.status());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if (name == TAB_CAMBI)
|
if (name == TAB_CAMBI)
|
||||||
set_search_field(FLD_TABCAM_D0);
|
set_search_field(FLD_TABCAM_D0);
|
||||||
|
|
||||||
|
|||||||
123
ba/ba3700.cpp
123
ba/ba3700.cpp
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
#define ALIAS 1
|
#define ALIAS 1
|
||||||
|
|
||||||
class BA3700_application : public TRelation_application
|
class TCond_pag_app : public TRelation_application
|
||||||
{
|
{
|
||||||
TRelation* _rel;
|
TRelation* _rel;
|
||||||
TMask* _msk;
|
TMask* _msk;
|
||||||
@ -31,12 +31,14 @@ protected:
|
|||||||
virtual bool changing_mask(int mode) { return FALSE; }
|
virtual bool changing_mask(int mode) { return FALSE; }
|
||||||
|
|
||||||
// file intertface
|
// file intertface
|
||||||
virtual bool remove();
|
virtual bool remove();
|
||||||
virtual void init_insert_mode(TMask&);
|
virtual void init_insert_mode(TMask&);
|
||||||
virtual void init_query_mode(TMask&);
|
virtual void init_query_mode(TMask&);
|
||||||
virtual int rewrite(const TMask& m);
|
virtual int rewrite(const TMask& m);
|
||||||
virtual int write(const TMask& m);
|
virtual int write(const TMask& m);
|
||||||
virtual int read(TMask& m);
|
virtual int read(TMask& m);
|
||||||
|
virtual void ini2sheet(TConfig& ini, TSheet_field &sheet);
|
||||||
|
virtual void sheet2ini(TSheet_field &sheet,TConfig& ini);
|
||||||
|
|
||||||
// notifier
|
// notifier
|
||||||
static bool sheet_action(TSheet_field&, int r, KEY k);
|
static bool sheet_action(TSheet_field&, int r, KEY k);
|
||||||
@ -56,10 +58,10 @@ protected:
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
void set_app_data(void* v) { _app_data = v; }
|
void set_app_data(void* v) { _app_data = v; }
|
||||||
static void* get_app_data() { return ((BA3700_application &)main_app())._app_data; }
|
static void* get_app_data() { return ((TCond_pag_app &)main_app())._app_data; }
|
||||||
|
|
||||||
BA3700_application() : TRelation_application() {}
|
TCond_pag_app() : TRelation_application() {}
|
||||||
virtual ~BA3700_application() {}
|
virtual ~TCond_pag_app() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// app-data per handlers
|
// app-data per handlers
|
||||||
@ -70,7 +72,7 @@ struct sht {
|
|||||||
TArray* _rws;
|
TArray* _rws;
|
||||||
} shuttle;
|
} shuttle;
|
||||||
|
|
||||||
bool BA3700_application::user_create()
|
bool TCond_pag_app::user_create()
|
||||||
{
|
{
|
||||||
_rel = new TRelation(TAB_CPG);
|
_rel = new TRelation(TAB_CPG);
|
||||||
_rel->add(TAB_RPG, "CODTAB[1,4]=CODTAB" ,1, 0, ALIAS);
|
_rel->add(TAB_RPG, "CODTAB[1,4]=CODTAB" ,1, 0, ALIAS);
|
||||||
@ -94,13 +96,14 @@ bool BA3700_application::user_create()
|
|||||||
|
|
||||||
shuttle._msk = _msk;
|
shuttle._msk = _msk;
|
||||||
shuttle._sht = _cs;
|
shuttle._sht = _cs;
|
||||||
|
shuttle._rws = new TArray;
|
||||||
|
|
||||||
set_app_data(&shuttle);
|
set_app_data(&shuttle);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BA3700_application::user_destroy()
|
bool TCond_pag_app::user_destroy()
|
||||||
{
|
{
|
||||||
delete _msk;
|
delete _msk;
|
||||||
delete _rel;
|
delete _rel;
|
||||||
@ -108,11 +111,11 @@ bool BA3700_application::user_destroy()
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int BA3700_application::read(TMask& m)
|
int TCond_pag_app::read(TMask& m)
|
||||||
{
|
{
|
||||||
m.autoload(*_rel);
|
m.autoload(*_rel);
|
||||||
|
|
||||||
TString code(m.get(F_CODICE));
|
const TString& code = m.get(F_CODICE);
|
||||||
int ir = m.get_int(F_INT_RATE); if (ir == 0) ir = -1;
|
int ir = m.get_int(F_INT_RATE); if (ir == 0) ir = -1;
|
||||||
if (_pag != NULL) delete _pag;
|
if (_pag != NULL) delete _pag;
|
||||||
shuttle._pag = _pag = new TPagamento(code);
|
shuttle._pag = _pag = new TPagamento(code);
|
||||||
@ -121,11 +124,7 @@ int BA3700_application::read(TMask& m)
|
|||||||
_interv_rate = _pag->scad_rata(_pag->n_rate() - 1);
|
_interv_rate = _pag->scad_rata(_pag->n_rate() - 1);
|
||||||
else _interv_rate = 30;
|
else _interv_rate = 30;
|
||||||
|
|
||||||
TArray* arr = new TArray;
|
*shuttle._rws = _cs->rows_array();
|
||||||
if (shuttle._rws != NULL) delete shuttle._rws;
|
|
||||||
(*arr) = _cs->rows_array();
|
|
||||||
shuttle._rws = arr;
|
|
||||||
|
|
||||||
shuttle._msk->set(F_INT_RATE,_interv_rate);
|
shuttle._msk->set(F_INT_RATE,_interv_rate);
|
||||||
shuttle._msk->set(F_NUM_RATE,_pag->n_rate());
|
shuttle._msk->set(F_NUM_RATE,_pag->n_rate());
|
||||||
shuttle._msk->set(F_RATE_DIFF, _pag->rate_differenziate() ? "1" : "2", TRUE);
|
shuttle._msk->set(F_RATE_DIFF, _pag->rate_differenziate() ? "1" : "2", TRUE);
|
||||||
@ -133,31 +132,29 @@ int BA3700_application::read(TMask& m)
|
|||||||
return NOERR;
|
return NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BA3700_application::init_insert_mode(TMask& m)
|
void TCond_pag_app::init_insert_mode(TMask& m)
|
||||||
{
|
{
|
||||||
TString code(m.get(F_CODICE));
|
const TString& code = m.get(F_CODICE);
|
||||||
|
if (_pag != NULL) delete _pag;
|
||||||
shuttle._pag = _pag = new TPagamento(code);
|
shuttle._pag = _pag = new TPagamento(code);
|
||||||
_pag->set_sheet(*_cs);
|
_pag->set_sheet(*_cs);
|
||||||
TArray* arr = new TArray;
|
|
||||||
if (shuttle._rws != NULL) delete shuttle._rws;
|
*shuttle._rws = _cs->rows_array();
|
||||||
(*arr) = _cs->rows_array();
|
|
||||||
shuttle._rws = arr;
|
|
||||||
shuttle._msk->field(F_INT_RATE).set("30");
|
shuttle._msk->field(F_INT_RATE).set("30");
|
||||||
shuttle._msk->field(F_INIZIOSCAD).set("F");
|
shuttle._msk->field(F_INIZIOSCAD).set("F");
|
||||||
shuttle._msk->field(F_NUM_RATE).set("1");
|
shuttle._msk->field(F_NUM_RATE).set("1");
|
||||||
shuttle._msk->set(F_RATE_DIFF, "2", TRUE);
|
shuttle._msk->set(F_RATE_DIFF, "2", TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BA3700_application::init_query_mode(TMask& m)
|
void TCond_pag_app::init_query_mode(TMask& m)
|
||||||
{
|
{
|
||||||
// _cs->reset(); _cs->force_update();
|
// _cs->reset(); _cs->force_update();
|
||||||
if (shuttle._rws != NULL) delete shuttle._rws;
|
shuttle._rws->destroy();
|
||||||
shuttle._rws = new TArray;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// handlers
|
// handlers
|
||||||
|
|
||||||
bool BA3700_application::intervallo_rate(TMask_field& f, KEY k)
|
bool TCond_pag_app::intervallo_rate(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
// ricalcola tutte le scadenze
|
// ricalcola tutte le scadenze
|
||||||
// occorre pag->set_intervallo_rate(intervallo)
|
// occorre pag->set_intervallo_rate(intervallo)
|
||||||
@ -189,7 +186,7 @@ bool BA3700_application::intervallo_rate(TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BA3700_application::rate_differenziate(TMask_field& f, KEY k)
|
bool TCond_pag_app::rate_differenziate(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
// se erano differenziate e non lo sono piu' occorre riaggiustare
|
// se erano differenziate e non lo sono piu' occorre riaggiustare
|
||||||
// il riaggiustabile; altrimenti si lascia cosi'
|
// il riaggiustabile; altrimenti si lascia cosi'
|
||||||
@ -213,7 +210,7 @@ bool BA3700_application::rate_differenziate(TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BA3700_application::tipo_prima_rata(TMask_field& f, KEY k)
|
bool TCond_pag_app::tipo_prima_rata(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
// aggiunge o toglie se necessario rata 0, lasciando
|
// aggiunge o toglie se necessario rata 0, lasciando
|
||||||
// le altre e shiftando le scadenze
|
// le altre e shiftando le scadenze
|
||||||
@ -241,7 +238,7 @@ bool BA3700_application::tipo_prima_rata(TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BA3700_application::numero_rate(TMask_field& f, KEY k)
|
bool TCond_pag_app::numero_rate(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
// azzera tutto e ricrea da capo mantenendo le scadenze che ci sono
|
// azzera tutto e ricrea da capo mantenendo le scadenze che ci sono
|
||||||
if (k != K_TAB || f.mask().query_mode()) return TRUE;
|
if (k != K_TAB || f.mask().query_mode()) return TRUE;
|
||||||
@ -269,7 +266,7 @@ bool BA3700_application::numero_rate(TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BA3700_application::mese_commerciale(TMask_field& f, KEY k)
|
bool TCond_pag_app::mese_commerciale(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
// setta mcomm e ricalcola le scadenze
|
// setta mcomm e ricalcola le scadenze
|
||||||
// pag->set_mese_commerciale()
|
// pag->set_mese_commerciale()
|
||||||
@ -298,7 +295,7 @@ bool BA3700_application::mese_commerciale(TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BA3700_application::fixed_scad(TMask_field& f, KEY k)
|
bool TCond_pag_app::fixed_scad(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
// setta mcomm e ricalcola le scadenze
|
// setta mcomm e ricalcola le scadenze
|
||||||
// pag->set_mese_commerciale()
|
// pag->set_mese_commerciale()
|
||||||
@ -340,7 +337,7 @@ bool BA3700_application::fixed_scad(TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BA3700_application::tipo_rata(TMask_field& f, KEY k)
|
bool TCond_pag_app::tipo_rata(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
if (f.mask().query_mode())
|
if (f.mask().query_mode())
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -359,7 +356,7 @@ bool BA3700_application::tipo_rata(TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BA3700_application::ult_class(TMask_field& f, KEY k)
|
bool TCond_pag_app::ult_class(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
if (f.mask().query_mode())
|
if (f.mask().query_mode())
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -378,7 +375,7 @@ bool BA3700_application::ult_class(TMask_field& f, KEY k)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// qui viene il belloccio
|
// qui viene il belloccio
|
||||||
bool BA3700_application::sheet_action(TSheet_field&, int r, KEY k)
|
bool TCond_pag_app::sheet_action(TSheet_field&, int r, KEY k)
|
||||||
{
|
{
|
||||||
bool doit = TRUE, m_perc = FALSE, m_pag = FALSE;
|
bool doit = TRUE, m_perc = FALSE, m_pag = FALSE;
|
||||||
bool m_scad = FALSE, m_tipo = FALSE, m_ulc = FALSE, mod = FALSE;
|
bool m_scad = FALSE, m_tipo = FALSE, m_ulc = FALSE, mod = FALSE;
|
||||||
@ -489,7 +486,7 @@ bool BA3700_application::sheet_action(TSheet_field&, int r, KEY k)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int BA3700_application::rewrite(const TMask& m)
|
int TCond_pag_app::rewrite(const TMask& m)
|
||||||
{
|
{
|
||||||
TTable& tab_cpg = (TTable&)_rel->lfile();
|
TTable& tab_cpg = (TTable&)_rel->lfile();
|
||||||
TTable& tab_rpg = (TTable&)_rel->lfile(-ALIAS);
|
TTable& tab_rpg = (TTable&)_rel->lfile(-ALIAS);
|
||||||
@ -500,7 +497,7 @@ int BA3700_application::rewrite(const TMask& m)
|
|||||||
return _rel->lfile().rewrite();
|
return _rel->lfile().rewrite();
|
||||||
}
|
}
|
||||||
|
|
||||||
int BA3700_application::write(const TMask& m)
|
int TCond_pag_app::write(const TMask& m)
|
||||||
{
|
{
|
||||||
TTable& tab_cpg = (TTable&)_rel->lfile();
|
TTable& tab_cpg = (TTable&)_rel->lfile();
|
||||||
TTable& tab_rpg = (TTable&)_rel->lfile(-ALIAS);
|
TTable& tab_rpg = (TTable&)_rel->lfile(-ALIAS);
|
||||||
@ -511,15 +508,59 @@ int BA3700_application::write(const TMask& m)
|
|||||||
return _rel->lfile().write();
|
return _rel->lfile().write();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BA3700_application::remove()
|
bool TCond_pag_app::remove()
|
||||||
{
|
{
|
||||||
TTable& tab_rpg = (TTable&)_rel->lfile(-ALIAS);
|
TTable& tab_rpg = (TTable&)_rel->lfile(-ALIAS);
|
||||||
return _pag->remove(tab_rpg) == NOERR && _rel->lfile().remove() == NOERR;
|
return _pag->remove(tab_rpg) == NOERR && _rel->lfile().remove() == NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TCond_pag_app::ini2sheet(TConfig& ini, TSheet_field &sheet)
|
||||||
|
{
|
||||||
|
const TMask& m = sheet.mask();
|
||||||
|
const int nrate = m.get_int(F_NUM_RATE);
|
||||||
|
TString16 par;
|
||||||
|
for (int r = 0; r < nrate; r++)
|
||||||
|
{
|
||||||
|
par.format("%d,%d", LF_TABCOM, r+1);
|
||||||
|
if (ini.set_paragraph(par))
|
||||||
|
{
|
||||||
|
TToken_string& row = sheet.row(r);
|
||||||
|
row = ini.get("I0");
|
||||||
|
row.add(ini.get("R0"));
|
||||||
|
row.add(ini.get("I1"));
|
||||||
|
row.add(ini.get("S1"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCond_pag_app::sheet2ini(TSheet_field &sheet,TConfig& ini)
|
||||||
|
{
|
||||||
|
const TMask& m = sheet.mask();
|
||||||
|
const int nrate = m.get_int(F_NUM_RATE);
|
||||||
|
TString16 par;
|
||||||
|
for (int r = 0; r < nrate; r++)
|
||||||
|
{
|
||||||
|
par.format("%d,%d", LF_TABCOM, r+1);
|
||||||
|
ini.set_paragraph(par);
|
||||||
|
TToken_string& row = sheet.row(r);
|
||||||
|
ini.set("I0", row.get(0));
|
||||||
|
ini.set("R0", row.get());
|
||||||
|
ini.set("I2", row.get());
|
||||||
|
ini.set("S1", row.get());
|
||||||
|
}
|
||||||
|
for ( ; ; r++)
|
||||||
|
{
|
||||||
|
par.format("%d,%d", LF_TABCOM, r+1);
|
||||||
|
if (ini.set_paragraph(par))
|
||||||
|
ini.remove_all();
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int ba3700(int argc, char* argv[])
|
int ba3700(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
BA3700_application a;
|
TCond_pag_app a;
|
||||||
a.run(argc, argv, "Condizioni di pagamento");
|
a.run(argc, argv, "Condizioni di pagamento");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,15 +15,15 @@ BEGIN
|
|||||||
FIELD B1
|
FIELD B1
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 71 4
|
GROUPBOX DLG_NULL 78 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 0 ""
|
PROMPT 1 0 ""
|
||||||
FLAGS "R"
|
FLAGS "R"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CODICE 4
|
STRING F_CODICE 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 6 1 "Codice "
|
PROMPT 2 1 "Codice "
|
||||||
HELP "Codice condizione di pagamento"
|
HELP "Codice condizione di pagamento"
|
||||||
FLAGS "U#"
|
FLAGS "U#"
|
||||||
FIELD CODTAB
|
FIELD CODTAB
|
||||||
@ -40,7 +40,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESC 50
|
STRING F_DESC 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 6 2 "Descrizione "
|
PROMPT 2 2 "Descrizione "
|
||||||
HELP "Descrizione condizione di pagamento"
|
HELP "Descrizione condizione di pagamento"
|
||||||
FIELD S0
|
FIELD S0
|
||||||
USE %CPG KEY 2
|
USE %CPG KEY 2
|
||||||
@ -53,34 +53,31 @@ BEGIN
|
|||||||
ADD NONE
|
ADD NONE
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 71 7
|
GROUPBOX DLG_NULL 78 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 4 ""
|
PROMPT 1 4 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_INIZIOSCAD 1
|
LIST F_INIZIOSCAD 1 12
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 5 5 "Inizio calcolo "
|
PROMPT 2 5 "Inizio calcolo "
|
||||||
HELP "Modalita' di inizio conteggio calcolo scadenza"
|
|
||||||
FIELD S1
|
FIELD S1
|
||||||
SHEET "Cod|Descrizione@30"
|
|
||||||
INPUT F_INIZIOSCAD
|
|
||||||
OUTPUT F_INIZIOSCAD
|
|
||||||
ITEM "F|Data fattura"
|
ITEM "F|Data fattura"
|
||||||
ITEM "M|Fine mese"
|
ITEM "M|Fine mese"
|
||||||
ITEM "I|Da impostare"
|
ITEM "I|Da impostare"
|
||||||
WARNING "La partenza del calcolo deve essere specificata"
|
|
||||||
FLAGS "U"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_TIPO_PRIMA_RATA 1
|
NUMBER F_INT_RATE 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 28 5 "Tipo prima rata "
|
PROMPT 58 5 "Intervallo rate "
|
||||||
HELP "Tipo di conteggio per la prima rata"
|
HELP "Giorni di intervallo tra una data e l'altra"
|
||||||
|
FIELD I3
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_TIPO_PRIMA_RATA 1 45
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Tipo prima rata "
|
||||||
FIELD S3
|
FIELD S3
|
||||||
SHEET "Cod|Descrizione@60"
|
|
||||||
INPUT F_TIPO_PRIMA_RATA
|
|
||||||
OUTPUT F_TIPO_PRIMA_RATA
|
|
||||||
ITEM " |Totale documento ripartito tra tutte le rate"
|
ITEM " |Totale documento ripartito tra tutte le rate"
|
||||||
ITEM "1|Tutte le imposte sulla prima rata"
|
ITEM "1|Tutte le imposte sulla prima rata"
|
||||||
ITEM "2|Tutte le spese sulla prima rata"
|
ITEM "2|Tutte le spese sulla prima rata"
|
||||||
@ -90,17 +87,9 @@ BEGIN
|
|||||||
ITEM "6|Imposte + spese"
|
ITEM "6|Imposte + spese"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_INT_RATE 3
|
|
||||||
BEGIN
|
|
||||||
PROMPT 53 5 "Intervallo rate "
|
|
||||||
HELP "Giorni di intervallo tra una data e l'altra"
|
|
||||||
FIELD I3
|
|
||||||
FLAGS "R"
|
|
||||||
END
|
|
||||||
|
|
||||||
LIST F_RATE_DIFF 1 30
|
LIST F_RATE_DIFF 1 30
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 5 6 "Rate "
|
PROMPT 2 7 "Rate "
|
||||||
ITEM "1|Differenziate" MESSAGE "X",909|DISABLE,F_NUM_RATE|CLEAR,F_ULT_CLASS
|
ITEM "1|Differenziate" MESSAGE "X",909|DISABLE,F_NUM_RATE|CLEAR,F_ULT_CLASS
|
||||||
ITEM "2|Uguali (obbligate dalla 2a)" MESSAGE "",909|ENABLE,F_NUM_RATE|ENABLE,F_ULT_CLASS
|
ITEM "2|Uguali (obbligate dalla 2a)" MESSAGE "",909|ENABLE,F_NUM_RATE|ENABLE,F_ULT_CLASS
|
||||||
ITEM "3|Uguali dalla prossima modif." MESSAGE "X",909|DISABLE,F_NUM_RATE|ENABLE,F_ULT_CLASS
|
ITEM "3|Uguali dalla prossima modif." MESSAGE "X",909|DISABLE,F_NUM_RATE|ENABLE,F_ULT_CLASS
|
||||||
@ -109,29 +98,28 @@ END
|
|||||||
|
|
||||||
NUMBER F_NUM_RATE 3
|
NUMBER F_NUM_RATE 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 57 6 "Numero rate "
|
PROMPT 62 7 "Numero rate "
|
||||||
HELP "Numero delle rate"
|
HELP "Numero delle rate"
|
||||||
FLAGS "R"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_TIPO_RATA 1 29
|
LIST F_TIPO_RATA 1 30
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 5 7 "Tipo rata "
|
PROMPT 2 8 "Tipo rata "
|
||||||
ITEM "1|Rimessa diretta o contanti"
|
ITEM "1|1-Rimessa diretta o contanti"
|
||||||
ITEM "2|Tratta"
|
ITEM "2|2-Tratta"
|
||||||
ITEM "3|Ricevuta bancaria"
|
ITEM "3|3-Ricevuta bancaria"
|
||||||
ITEM "4|Cessione"
|
ITEM "4|4-Cessione"
|
||||||
ITEM "5|Paghero'"
|
ITEM "5|5-Paghero'"
|
||||||
ITEM "6|Lettera di credito"
|
ITEM "6|6-Lettera di credito"
|
||||||
ITEM "7|Tratta accettata"
|
ITEM "7|7-Tratta accettata"
|
||||||
ITEM "8|Rapporti interban. diretti"
|
ITEM "8|8-Rapporti interban. diretti"
|
||||||
ITEM "9|Bonifici"
|
ITEM "9|9-Bonifici"
|
||||||
FIELD S4
|
FIELD S4
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_ULT_CLASS 1
|
STRING F_ULT_CLASS 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 57 7 "Ult. class. "
|
PROMPT 53 8 "Ulteriore classific. "
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
USE %CLR
|
USE %CLR
|
||||||
INPUT CODTAB[1,1] F_TIPO_RATA SELECT
|
INPUT CODTAB[1,1] F_TIPO_RATA SELECT
|
||||||
@ -146,28 +134,28 @@ END
|
|||||||
|
|
||||||
NUMBER F_FIXSCAD_1 2
|
NUMBER F_FIXSCAD_1 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 5 9 "Giorni scadenza fissi (1) "
|
PROMPT 2 9 "Giorni scadenza fissi (1) "
|
||||||
FIELD I0
|
FIELD I0
|
||||||
HELP "Giorno scadenza obbligato: prima alternativa"
|
HELP "Giorno scadenza obbligato: prima alternativa"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_FIXSCAD_2 2
|
NUMBER F_FIXSCAD_2 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 36 9 "(2) "
|
PROMPT 32 9 "(2) "
|
||||||
FIELD I1
|
FIELD I1
|
||||||
HELP "Giorno scadenza obbligato: seconda alternativa"
|
HELP "Giorno scadenza obbligato: seconda alternativa"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_FIXSCAD_3 2
|
NUMBER F_FIXSCAD_3 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 44 9 "(3) "
|
PROMPT 40 9 "(3) "
|
||||||
FIELD I2
|
FIELD I2
|
||||||
HELP "Giorno scadenza obbligato: terza alternativa"
|
HELP "Giorno scadenza obbligato: terza alternativa"
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_MESECOMM
|
BOOLEAN F_MESECOMM
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 54 9 "Mese commerciale"
|
PROMPT 53 9 "Mese commerciale"
|
||||||
HELP "Indicare se si utilizza il mese commerciale (30 gg)"
|
HELP "Indicare se si utilizza il mese commerciale (30 gg)"
|
||||||
FIELD B0
|
FIELD B0
|
||||||
END
|
END
|
||||||
@ -240,12 +228,12 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_OK 9 2
|
BUTTON DLG_OK 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -12 -1 ""
|
PROMPT -12 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 9 2
|
BUTTON DLG_CANCEL 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -22 -1 ""
|
PROMPT -22 -1 ""
|
||||||
END
|
END
|
||||||
|
|||||||
@ -14,8 +14,6 @@
|
|||||||
#include "ba3.h"
|
#include "ba3.h"
|
||||||
#include "ba3800.h"
|
#include "ba3800.h"
|
||||||
|
|
||||||
TString256 tmp;
|
|
||||||
|
|
||||||
class BA3800_application : public TPrintapp
|
class BA3800_application : public TPrintapp
|
||||||
{
|
{
|
||||||
struct bil_ivd
|
struct bil_ivd
|
||||||
@ -51,7 +49,8 @@ class BA3800_application : public TPrintapp
|
|||||||
bool _sbilancio_patr_gia_stampato,_attivo_o_passivo;
|
bool _sbilancio_patr_gia_stampato,_attivo_o_passivo;
|
||||||
TString _causale_ap, _causale_chi, _totale;
|
TString _causale_ap, _causale_chi, _totale;
|
||||||
char _liv;
|
char _liv;
|
||||||
|
TString tmp;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
bool menu (MENU_TAG m) { return TPrintapp::menu(m) ; }
|
bool menu (MENU_TAG m) { return TPrintapp::menu(m) ; }
|
||||||
|
|||||||
@ -92,8 +92,8 @@ void Stampa_condizioni_pagamento_application::print_header()
|
|||||||
set_header (soh++, "");
|
set_header (soh++, "");
|
||||||
set_header (soh++, "@bCONDIZIONI DI PAGAMENTO @r@107gData @> Pag. @#");
|
set_header (soh++, "@bCONDIZIONI DI PAGAMENTO @r@107gData @> Pag. @#");
|
||||||
set_header (soh++, "");
|
set_header (soh++, "");
|
||||||
set_header (soh++, "@47gTp @53gInizio @66gMese @73gGiorni@89gIntervallo@108gScadenze");
|
set_header (soh++, "@47gTipo@53gInizio@66gMese@73gGiorni@89gIntervallo@108gScadenze@118gTipo@123gUlter.");
|
||||||
set_header (soh++, "Cod. @12gDescrizione @47gdoc.@53gcalcolo@66gcomm. @73gsc. fissa@92grate@103gNr. gg. %% Td. ult. cl.");
|
set_header (soh++, "Cod.@12gDescrizione@47gdoc.@53gcalcolo@66gcomm.@73gsc. fissa@92grate@103gNr. gg. %% @118grata@123gclass.");
|
||||||
set_header(soh,"");
|
set_header(soh,"");
|
||||||
set_background(format("W2l{1,3,132,3}l{1,%d,132,%d}", soh, soh));
|
set_background(format("W2l{1,3,132,3}l{1,%d,132,%d}", soh, soh));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
#include <mainmenu.url>
|
||||||
|
|||||||
@ -207,16 +207,16 @@ HIDDEN bool stato_hnd(TMask_field& f, KEY key)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
HIDDEN bool corr_hnd(TMask_field& f, bool giuridica)
|
HIDDEN bool corr_hnd(TMask_field& f)
|
||||||
{
|
{
|
||||||
TMask & m = f.mask();
|
if (f.empty())
|
||||||
|
|
||||||
if (f.get().empty())
|
|
||||||
{
|
{
|
||||||
|
TMask & m = f.mask();
|
||||||
|
const bool giuridica = ((TPersone_app&)main_app()).ana_giu();
|
||||||
|
|
||||||
m.set(giuridica ? FLD_AG2_CIVCORR : FLD_AF2_CIVCORR,
|
m.set(giuridica ? FLD_AG2_CIVCORR : FLD_AF2_CIVCORR,
|
||||||
m.get(giuridica ? FLD_AG2_CIVRES : FLD_AF1_CIVRES));
|
m.get(giuridica ? FLD_AG2_CIVRES : FLD_AF1_CIVRES));
|
||||||
const TString80 s(m.get(giuridica ? FLD_AG2_COMRES : FLD_AF1_COMRES));
|
const TString80 s(m.get(giuridica ? FLD_AG2_COMRES : FLD_AF1_COMRES));
|
||||||
|
|
||||||
if (s.not_empty())
|
if (s.not_empty())
|
||||||
{
|
{
|
||||||
m.set(giuridica ? FLD_AG2_STATOCORR : FLD_AF2_STATOCORR, m.get(F_STATORES));
|
m.set(giuridica ? FLD_AG2_STATOCORR : FLD_AF2_STATOCORR, m.get(F_STATORES));
|
||||||
@ -240,11 +240,11 @@ HIDDEN bool clear_cap(TMask_field& f, KEY key)
|
|||||||
if (dlg != FLD_AG2_COMRES && dlg != FLD_AF1_COMRES && !f.to_check(key, TRUE))
|
if (dlg != FLD_AG2_COMRES && dlg != FLD_AF1_COMRES && !f.to_check(key, TRUE))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
const bool giuridica = ((TPersone_app&)main_app()).ana_giu();
|
|
||||||
if (dlg == FLD_AG2_COMCORR || dlg == FLD_AF2_COMCORR)
|
if (dlg == FLD_AG2_COMCORR || dlg == FLD_AF2_COMCORR)
|
||||||
corr_hnd(f, giuridica);
|
corr_hnd(f);
|
||||||
|
|
||||||
const TString16 val(f.get());
|
const TString16 val(f.get());
|
||||||
|
const bool giuridica = ((TPersone_app&)main_app()).ana_giu();
|
||||||
|
|
||||||
if ( giuridica )
|
if ( giuridica )
|
||||||
{
|
{
|
||||||
|
|||||||
@ -355,7 +355,6 @@ void TDitte_application::init_query_mode(TMask& m)
|
|||||||
m.hide(FLD_GD1_RAGSOCH);
|
m.hide(FLD_GD1_RAGSOCH);
|
||||||
}
|
}
|
||||||
init_insert_mode(m);
|
init_insert_mode(m);
|
||||||
m.disable(FLD_GD1_VALUTA); // La valuta si decide solo in creazione
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDitte_application::init_insert_mode(TMask& m)
|
void TDitte_application::init_insert_mode(TMask& m)
|
||||||
@ -383,15 +382,22 @@ void TDitte_application::init_insert_mode(TMask& m)
|
|||||||
m.disable(DLG_REG);
|
m.disable(DLG_REG);
|
||||||
m.disable(DLG_REG1);
|
m.disable(DLG_REG1);
|
||||||
_oldattprev = "";
|
_oldattprev = "";
|
||||||
|
|
||||||
m.enable(FLD_GD1_VALUTA); // La valuta si decide solo in creazione
|
// La valuta si decide già in creazione: la valuta della prima ditta memorizzata
|
||||||
|
TEdit_field& val = m.efield(FLD_GD1_VALUTA);
|
||||||
|
TLocalisamfile& ditte = get_relation()->lfile();
|
||||||
|
if (ditte.first() == NOERR)
|
||||||
|
{
|
||||||
|
val.set(ditte.get("VALUTA"));
|
||||||
|
val.disable();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
val.enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDitte_application::enable_reg(TMask& m)
|
void TDitte_application::enable_reg(TMask& m)
|
||||||
|
|
||||||
{
|
{
|
||||||
const long codditta = m.get_long(FLD_GD1_CODDITTA);
|
const long codditta = m.get_long(FLD_GD1_CODDITTA);
|
||||||
|
|
||||||
m.enable(DLG_REG, codditta > 0 && prefix().exist(codditta));
|
m.enable(DLG_REG, codditta > 0 && prefix().exist(codditta));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -244,7 +244,7 @@ BEGIN
|
|||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT FLD_GD1_VALUTA CODTAB
|
OUTPUT FLD_GD1_VALUTA CODTAB
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE REQUIRED
|
||||||
FLAGS "DU"
|
FLAGS "DU"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|||||||
@ -1,2 +1,3 @@
|
|||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
#include <mainmenu.url>
|
||||||
|
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
#include <mainmenu.url>
|
||||||
|
|||||||
359
ba/ba7100.cpp
359
ba/ba7100.cpp
@ -13,6 +13,7 @@
|
|||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include <os_dep.h>
|
#include <os_dep.h>
|
||||||
#include <viswin.h>
|
#include <viswin.h>
|
||||||
|
#include <browfile.h>
|
||||||
|
|
||||||
#define NO_MFC
|
#define NO_MFC
|
||||||
#include <netsock.h>
|
#include <netsock.h>
|
||||||
@ -40,7 +41,6 @@ TString& set_ini_var(int cfg, const char* para,
|
|||||||
inline TString& get_ini_var(int cfg, const char* para, const char* var)
|
inline TString& get_ini_var(int cfg, const char* para, const char* var)
|
||||||
{ return set_ini_var(cfg, para, var, NULL); }
|
{ return set_ini_var(cfg, para, var, NULL); }
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TMail_box
|
// TMail_box
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -196,7 +196,9 @@ int TMail_box::get(TMail_messages& m)
|
|||||||
TString_array a;
|
TString_array a;
|
||||||
list(a);
|
list(a);
|
||||||
|
|
||||||
TString buf, boundary;
|
TString buf, boundary, msg_line;
|
||||||
|
|
||||||
|
m.destroy();
|
||||||
FOR_EACH_ARRAY_ROW(a, r, row)
|
FOR_EACH_ARRAY_ROW(a, r, row)
|
||||||
{
|
{
|
||||||
TMail_message* msgptr = new TMail_message(user());
|
TMail_message* msgptr = new TMail_message(user());
|
||||||
@ -241,7 +243,8 @@ int TMail_box::get(TMail_messages& m)
|
|||||||
case enc_base64:
|
case enc_base64:
|
||||||
{
|
{
|
||||||
unsigned val = 0;
|
unsigned val = 0;
|
||||||
int bits = 0;
|
int bits = 0;
|
||||||
|
msg_line.cut(0);
|
||||||
for (const char* s = buf; *s && *s != '='; s++)
|
for (const char* s = buf; *s && *s != '='; s++)
|
||||||
{
|
{
|
||||||
if (*s==0x0A || *s==0x0D || *s==0x20 || *s==0x09)
|
if (*s==0x0A || *s==0x0D || *s==0x20 || *s==0x09)
|
||||||
@ -252,14 +255,16 @@ int TMail_box::get(TMail_messages& m)
|
|||||||
if (bits >= 8)
|
if (bits >= 8)
|
||||||
{
|
{
|
||||||
const char c = char((val >> (bits - 8)) & 0xFF);
|
const char c = char((val >> (bits - 8)) & 0xFF);
|
||||||
msg << c;
|
msg_line << c;
|
||||||
bits -= 8;
|
bits -= 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
msg.add_line(msg_line);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case enc_quoted_printable:
|
case enc_quoted_printable:
|
||||||
{
|
{
|
||||||
|
msg_line.cut(0);
|
||||||
for (const char* s = buf; *s; s++)
|
for (const char* s = buf; *s; s++)
|
||||||
{
|
{
|
||||||
if (*s == '=')
|
if (*s == '=')
|
||||||
@ -268,18 +273,19 @@ int TMail_box::get(TMail_messages& m)
|
|||||||
if (*s >= ' ')
|
if (*s >= ' ')
|
||||||
{
|
{
|
||||||
int c; sscanf(s, "%2X", &c);
|
int c; sscanf(s, "%2X", &c);
|
||||||
msg << char(c);
|
msg_line << char(c);
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
msg << *s;
|
msg_line << *s;
|
||||||
}
|
}
|
||||||
|
msg.add_line(msg_line);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
buf.rtrim();
|
buf.rtrim();
|
||||||
msg << buf << '\n';
|
msg.add_line(buf);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -405,7 +411,7 @@ TMail_box::~TMail_box()
|
|||||||
|
|
||||||
class TFilter_expr : public TExpression
|
class TFilter_expr : public TExpression
|
||||||
{
|
{
|
||||||
TAutomask& _mask;
|
TAutomask& _mask;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool print_error(const char* msg) const;
|
virtual bool print_error(const char* msg) const;
|
||||||
@ -453,7 +459,9 @@ class TMailer_mask : public TAutomask
|
|||||||
long _timer_id;
|
long _timer_id;
|
||||||
long _secs;
|
long _secs;
|
||||||
int _mail_semaphore;
|
int _mail_semaphore;
|
||||||
TViswin * _vv;
|
TMail_messages _box;
|
||||||
|
|
||||||
|
TString _last_file, _last_app; // Used by file2app
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
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);
|
||||||
@ -461,7 +469,7 @@ protected:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool file2app(const TString& file, TString& app) const;
|
bool file2app(const TString& file, TString& app) const;
|
||||||
void expand_tabs(TString& str, const int tab = 8) const;
|
void expand_tabs(TMail_message& str, const int tab = 8) const;
|
||||||
|
|
||||||
void save_sheet(TConfig& ini, short dlg, const char* var) const;
|
void save_sheet(TConfig& ini, short dlg, const char* var) const;
|
||||||
void load_sheet(TConfig& ini, short dlg, const char* var);
|
void load_sheet(TConfig& ini, short dlg, const char* var);
|
||||||
@ -469,35 +477,20 @@ protected:
|
|||||||
public:
|
public:
|
||||||
void test_delete();
|
void test_delete();
|
||||||
int fill_messages();
|
int fill_messages();
|
||||||
bool exec_app(int & err, const char * appname, const char * msg);
|
bool exec_app(int & err, const char * appname, TMail_message & msg);
|
||||||
bool save_curr_line(int & err);
|
bool save_sheet_line(int& err, int line = -1);
|
||||||
void save_all_lines();
|
void save_all_lines();
|
||||||
void auto_save_all();
|
void auto_save_all();
|
||||||
|
|
||||||
void save() const;
|
void save() const;
|
||||||
void load();
|
void load();
|
||||||
|
|
||||||
void mail_lock()
|
|
||||||
{ _mail_semaphore++; }
|
|
||||||
|
|
||||||
void mail_unlock()
|
|
||||||
{ CHECK(_mail_semaphore > 0, "Bad timer unlock"); _mail_semaphore--; }
|
|
||||||
|
|
||||||
TMailer_mask();
|
TMailer_mask();
|
||||||
virtual ~TMailer_mask();
|
virtual ~TMailer_mask();
|
||||||
};
|
};
|
||||||
|
|
||||||
class TMail_lock
|
|
||||||
{
|
|
||||||
TMailer_mask* _mm;
|
|
||||||
public:
|
|
||||||
TMail_lock(TMailer_mask* mm) : _mm(mm) { _mm->mail_lock(); }
|
|
||||||
~TMail_lock() { _mm->mail_unlock(); }
|
|
||||||
};
|
|
||||||
|
|
||||||
void TMailer_mask::test_delete()
|
void TMailer_mask::test_delete()
|
||||||
{
|
{
|
||||||
TMail_lock ml(this);
|
|
||||||
TWait_cursor hourglass;
|
TWait_cursor hourglass;
|
||||||
|
|
||||||
xvt_statbar_set("Eliminazione messaggi POP3...");
|
xvt_statbar_set("Eliminazione messaggi POP3...");
|
||||||
@ -544,42 +537,45 @@ void TMailer_mask::test_delete()
|
|||||||
do_events();
|
do_events();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TMailer_mask::expand_tabs(TString& str, const int tab) const
|
void TMailer_mask::expand_tabs(TMail_message& msg, const int tab) const
|
||||||
{
|
{
|
||||||
int start = 0;
|
const int items = msg.items();
|
||||||
for (int i = 0; str[i]; i++)
|
for (int n = 0; n < items; n++)
|
||||||
{
|
{
|
||||||
switch(str[i])
|
TString & str = msg.row(n);
|
||||||
|
int start = 0;
|
||||||
|
|
||||||
|
for (int i = 0; str[i]; i++)
|
||||||
{
|
{
|
||||||
case '\n':
|
switch(str[i])
|
||||||
case '\r':
|
|
||||||
start = i+1;
|
|
||||||
break;
|
|
||||||
case '\t':
|
|
||||||
{
|
{
|
||||||
const int t = tab - ((i-start) % tab) - 1;
|
case '\n':
|
||||||
str[i] = ' ';
|
case '\r':
|
||||||
if (t > 0)
|
start = i+1;
|
||||||
|
break;
|
||||||
|
case '\t':
|
||||||
{
|
{
|
||||||
TString80 spac; spac.spaces(t);
|
const int t = tab - ((i-start) % tab) - 1;
|
||||||
str.insert(spac, i+1);
|
str[i] = ' ';
|
||||||
i += t;
|
if (t > 0)
|
||||||
|
{
|
||||||
|
TString80 spac; spac.spaces(t);
|
||||||
|
str.insert(spac, i+1);
|
||||||
|
i += t;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int TMailer_mask::fill_messages()
|
int TMailer_mask::fill_messages()
|
||||||
{
|
{
|
||||||
TMail_lock ml(this);
|
|
||||||
TWait_cursor hourglass;
|
TWait_cursor hourglass;
|
||||||
|
|
||||||
TMail_messages box;
|
|
||||||
|
|
||||||
TString server(get(F_SERVER));
|
TString server(get(F_SERVER));
|
||||||
TString user(get(F_USER));
|
TString user(get(F_USER));
|
||||||
TString password(get(F_PASSWORD));
|
TString password(get(F_PASSWORD));
|
||||||
@ -597,21 +593,21 @@ int TMailer_mask::fill_messages()
|
|||||||
{
|
{
|
||||||
xvt_statbar_set("Ricezione messaggi MAPI...");
|
xvt_statbar_set("Ricezione messaggi MAPI...");
|
||||||
do_events();
|
do_events();
|
||||||
totmapi = box.get();
|
totmapi = _box.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
xvt_statbar_set("Ricezione messaggi POP3...");
|
xvt_statbar_set("Ricezione messaggi POP3...");
|
||||||
do_events();
|
do_events();
|
||||||
mailbox.logon(server, user, password);
|
mailbox.logon(server, user, password);
|
||||||
mailbox.get(box);
|
mailbox.get(_box);
|
||||||
mailbox.logoff();
|
mailbox.logoff();
|
||||||
|
|
||||||
TSheet_field& sf = sfield(F_MESSAGES);
|
TSheet_field& sf = sfield(F_MESSAGES);
|
||||||
sf.destroy();
|
sf.destroy();
|
||||||
|
TString mess;
|
||||||
for (int m = 0; m < box.items(); m++)
|
for (int m = 0; m < _box.items(); m++)
|
||||||
{
|
{
|
||||||
TMail_message& msg = box.msg(m);
|
TMail_message& msg = _box.msg(m);
|
||||||
TToken_string& row = sf.row(m);
|
TToken_string& row = sf.row(m);
|
||||||
row.add(msg.sender(), sf.cid2index(F_SENDER));
|
row.add(msg.sender(), sf.cid2index(F_SENDER));
|
||||||
row.add(msg.date(), sf.cid2index(F_DATE));
|
row.add(msg.date(), sf.cid2index(F_DATE));
|
||||||
@ -619,7 +615,15 @@ int TMailer_mask::fill_messages()
|
|||||||
row.add(t.string("@@:@@:@@"), sf.cid2index(F_TIME));
|
row.add(t.string("@@:@@:@@"), sf.cid2index(F_TIME));
|
||||||
row.add(msg.subject(), sf.cid2index(F_SUBJECT));
|
row.add(msg.subject(), sf.cid2index(F_SUBJECT));
|
||||||
expand_tabs(msg);
|
expand_tabs(msg);
|
||||||
row.add(msg, sf.cid2index(F_BODY));
|
|
||||||
|
mess.cut(0);
|
||||||
|
FOR_EACH_ARRAY_ROW(msg, i, msgrow)
|
||||||
|
{
|
||||||
|
mess << *msgrow;
|
||||||
|
if (mess.len() >= 1024)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
row.add(mess, sf.cid2index(F_BODY));
|
||||||
row.add(m<totmapi?"MAPI":"POP3", sf.cid2index(F_MAILER));
|
row.add(m<totmapi?"MAPI":"POP3", sf.cid2index(F_MAILER));
|
||||||
if (m < totmapi)
|
if (m < totmapi)
|
||||||
{
|
{
|
||||||
@ -640,46 +644,117 @@ int TMailer_mask::fill_messages()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool TMailer_mask::file2app(const TString& file, TString& app) const
|
bool TMailer_mask::file2app(const TString& file, TString& app) const
|
||||||
{
|
{
|
||||||
bool ok = FALSE;
|
bool ok = FALSE;
|
||||||
if (isdigit(file[0]))
|
if (file != _last_file)
|
||||||
{
|
{
|
||||||
const int filenum = atoi(file);
|
if (isdigit(file[0]))
|
||||||
if (filenum >= LF_USER && filenum < prefix().items())
|
|
||||||
{
|
{
|
||||||
TLocalisamfile isf(filenum);
|
const int filenum = atoi(file);
|
||||||
ok = isf.get_relapp(app);
|
if (filenum >= LF_USER && filenum < prefix().items())
|
||||||
|
{
|
||||||
|
TLocalisamfile isf(filenum);
|
||||||
|
ok = isf.get_relapp(app);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const int len = file.len();
|
||||||
|
if (len == 3 || (len == 4 && file[0] == '%'))
|
||||||
|
{
|
||||||
|
TTable table(file);
|
||||||
|
ok = table.get_relapp(app);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Fool const directive
|
||||||
|
(TString&)_last_file = file;
|
||||||
|
(TString&)_last_app = app;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const int len = file.len();
|
app = _last_app;
|
||||||
if (len == 3 || (len == 4 && file[0] == '%'))
|
ok = TRUE;
|
||||||
{
|
|
||||||
TTable table(file);
|
|
||||||
ok = table.get_relapp(app);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TMailer_mask::exec_app(int & err, const char * appname, const char * msg)
|
bool is_incomplete(const TString& l)
|
||||||
|
{
|
||||||
|
if (l[0] == '[')
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
const char a = l.right(1)[0];
|
||||||
|
if (a == '=')
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
const int eq = l.find("= '");
|
||||||
|
if (eq > 0 && eq < 20)
|
||||||
|
return a != '\'';
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void adjust_long_lines(const TFilename& tmp)
|
||||||
|
{
|
||||||
|
TFilename dst_name; dst_name.temp();
|
||||||
|
ofstream dst(dst_name);
|
||||||
|
|
||||||
|
bool adjusted = FALSE;
|
||||||
|
|
||||||
|
TScanner org(tmp);
|
||||||
|
while (TRUE)
|
||||||
|
{
|
||||||
|
const TString& l = org.line();
|
||||||
|
if (l.empty())
|
||||||
|
break;
|
||||||
|
if (is_incomplete(l))
|
||||||
|
{
|
||||||
|
adjusted = TRUE;
|
||||||
|
dst << l;
|
||||||
|
org.line();
|
||||||
|
while (l.right(1)[0] != '\'')
|
||||||
|
{
|
||||||
|
dst << l;
|
||||||
|
org.line();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dst << l << '\n';
|
||||||
|
}
|
||||||
|
org.close();
|
||||||
|
dst.close();
|
||||||
|
if (adjusted)
|
||||||
|
fcopy(dst_name, tmp);
|
||||||
|
remove(dst_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TMailer_mask::exec_app(int & err, const char * appname, TMail_message & msg)
|
||||||
{
|
{
|
||||||
TFilename tmp; tmp.temp();
|
TFilename tmp; tmp.temp();
|
||||||
{
|
{
|
||||||
ofstream outf(tmp);
|
ofstream outf(tmp);
|
||||||
TString message(msg);
|
const int items = msg.items();
|
||||||
message.replace('\r', '\n');
|
bool long_lines = FALSE;
|
||||||
outf << message;
|
TString message;
|
||||||
|
for (int i = 0; i < items; i++)
|
||||||
|
{
|
||||||
|
message = msg.row(i);
|
||||||
|
message.replace('\r', '\n');
|
||||||
|
outf << message;
|
||||||
|
}
|
||||||
outf.close();
|
outf.close();
|
||||||
}
|
adjust_long_lines(tmp);
|
||||||
|
|
||||||
|
TConfig ini(tmp, "Transaction");
|
||||||
|
ini.set("From", msg.sender());
|
||||||
|
}
|
||||||
|
|
||||||
TString command_line(appname);
|
TString command_line(appname);
|
||||||
command_line << " /i" << tmp << " -u" << ::dongle().administrator();
|
command_line << " /i" << tmp;
|
||||||
TExternal_app app(command_line);
|
TExternal_app app(command_line);
|
||||||
err = app.run();
|
err = app.run();
|
||||||
os_sleep(1000);
|
os_sleep(1000);
|
||||||
bool ok = err == NOERR;
|
bool ok = err == NOERR;
|
||||||
|
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
TConfig ini(tmp, "Transaction");
|
TConfig ini(tmp, "Transaction");
|
||||||
@ -689,18 +764,21 @@ bool TMailer_mask::exec_app(int & err, const char * appname, const char * msg)
|
|||||||
else
|
else
|
||||||
err = ini.get_int("Error");
|
err = ini.get_int("Error");
|
||||||
}
|
}
|
||||||
|
|
||||||
::remove(tmp);
|
::remove(tmp);
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TMailer_mask::save_curr_line(int & err)
|
bool TMailer_mask::save_sheet_line(int& err, int nrow)
|
||||||
{
|
{
|
||||||
TMail_lock ml(this);
|
|
||||||
|
|
||||||
TSheet_field& sf = sfield(F_MESSAGES);
|
TSheet_field& sf = sfield(F_MESSAGES);
|
||||||
TMask& m = sf.sheet_mask();
|
TMask& m = sf.sheet_mask();
|
||||||
const int nrow = sf.selected();
|
|
||||||
|
if (nrow < 0)
|
||||||
|
nrow = sf.selected();
|
||||||
|
else
|
||||||
|
sf.update_mask(nrow);
|
||||||
|
|
||||||
TToken_string& row = sf.row(nrow);
|
TToken_string& row = sf.row(nrow);
|
||||||
|
|
||||||
const TString& msg = m.get(F_BODY);
|
const TString& msg = m.get(F_BODY);
|
||||||
@ -709,27 +787,33 @@ bool TMailer_mask::save_curr_line(int & err)
|
|||||||
err = NOT_TRANS;
|
err = NOT_TRANS;
|
||||||
return FALSE; // It's not a transaction
|
return FALSE; // It's not a transaction
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TString subj = m.get(F_SUBJECT);
|
||||||
|
if (isalpha(subj[0])) // Controlla se la tabella in realtà è comune ed aggiunge il simbolino %
|
||||||
|
{
|
||||||
|
TString8 para; para << '[' << LF_TABCOM << ']';
|
||||||
|
if (msg.find(para) > 0)
|
||||||
|
subj.insert("%");
|
||||||
|
}
|
||||||
TFilename appname;
|
TFilename appname;
|
||||||
const TString& subj = m.get(F_SUBJECT);
|
|
||||||
if (!file2app(subj, appname)) // It hasn't a valid application
|
if (!file2app(subj, appname)) // It hasn't a valid application
|
||||||
{
|
{
|
||||||
err = NOT_GEST;
|
err = NOT_GEST;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TString old_mailto = set_ini_var(CONFIG_INSTALL, "Main", "MailTo", "");
|
// const TString old_mailto = set_ini_var(CONFIG_INSTALL, "Main", "MailTo", "");
|
||||||
|
TMail_message& full_msg = _box.msg(nrow);
|
||||||
bool ok = exec_app(err, appname, msg);
|
|
||||||
if (!ok && err == 204)
|
bool ok = exec_app(err, appname, full_msg);
|
||||||
|
if (!ok && err == _iskeynotfound)
|
||||||
{
|
{
|
||||||
TString insmsg(msg);
|
TString & first_row = full_msg.row(0);
|
||||||
int pos = insmsg.find("MODIFY");
|
int pos = first_row.find("MODIFY");
|
||||||
if (pos > 0)
|
if (pos > 0)
|
||||||
{
|
{
|
||||||
insmsg.overwrite("INSERT", pos);
|
first_row.overwrite("INSERT", pos);
|
||||||
ok = exec_app(err, appname, insmsg);
|
ok = exec_app(err, appname, full_msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -748,20 +832,16 @@ bool TMailer_mask::save_curr_line(int & err)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Restore mail recipient
|
// Restore mail recipient
|
||||||
if (old_mailto.not_empty())
|
// if (old_mailto.not_empty())
|
||||||
set_ini_var(CONFIG_INSTALL, "Main", "MailTo", old_mailto);
|
// set_ini_var(CONFIG_INSTALL, "Main", "MailTo", old_mailto);
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TMailer_mask::save_all_lines()
|
void TMailer_mask::save_all_lines()
|
||||||
{
|
{
|
||||||
CHECK(_vv == NULL,"Viswin already open ?");
|
TBrowsefile_field& bf = (TBrowsefile_field&)field(F_LOG);
|
||||||
mail_lock();
|
TViswin& vv = bf.vis_win();
|
||||||
|
|
||||||
TViswin viswin(NULL, "Registrazione documenti", FALSE, TRUE, TRUE);
|
|
||||||
viswin.open_modal();
|
|
||||||
_vv = &viswin;
|
|
||||||
|
|
||||||
TSheet_field& sf = sfield(F_MESSAGES);
|
TSheet_field& sf = sfield(F_MESSAGES);
|
||||||
TString body, msg;
|
TString body, msg;
|
||||||
@ -769,11 +849,10 @@ void TMailer_mask::save_all_lines()
|
|||||||
time_t tempo;
|
time_t tempo;
|
||||||
time(&tempo);
|
time(&tempo);
|
||||||
const struct tm* d = localtime(&tempo);
|
const struct tm* d = localtime(&tempo);
|
||||||
msg.format("Inizio elaborazione: %02d-%02d-%04d %02d:%02d:%02d",
|
msg.format("- Inizio elaborazione: %02d-%02d-%04d %02d:%02d:%02d",
|
||||||
d->tm_mday, d->tm_mon+1, 1900+d->tm_year,
|
d->tm_mday, d->tm_mon+1, 1900+d->tm_year,
|
||||||
d->tm_hour, d->tm_min, d->tm_sec);
|
d->tm_hour, d->tm_min, d->tm_sec);
|
||||||
viswin.add_line(msg);
|
vv.add_line(msg);
|
||||||
viswin.add_line("");
|
|
||||||
|
|
||||||
bool one_saved = FALSE;
|
bool one_saved = FALSE;
|
||||||
FOR_EACH_SHEET_ROW(sf, nrow, row)
|
FOR_EACH_SHEET_ROW(sf, nrow, row)
|
||||||
@ -784,9 +863,8 @@ void TMailer_mask::save_all_lines()
|
|||||||
row->get(sf.cid2index(F_BODY), body);
|
row->get(sf.cid2index(F_BODY), body);
|
||||||
if (body.find("[Transaction]") >= 0)
|
if (body.find("[Transaction]") >= 0)
|
||||||
{
|
{
|
||||||
sf.select(nrow);
|
|
||||||
int err = 0;
|
int err = 0;
|
||||||
const bool yes = save_curr_line(err);
|
const bool yes = save_sheet_line(err, nrow);
|
||||||
if (yes)
|
if (yes)
|
||||||
{
|
{
|
||||||
msg << "elaborato con successo";
|
msg << "elaborato con successo";
|
||||||
@ -800,23 +878,24 @@ void TMailer_mask::save_all_lines()
|
|||||||
msg << " definire il programma gestore del file " << m.get(F_SUBJECT);
|
msg << " definire il programma gestore del file " << m.get(F_SUBJECT);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
msg << "non elaborato a causa di un errore (n.ro " << err << ")";
|
msg << "non elaborato a causa di un errore (n.ro " << err << ')';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
msg << "ignorato in quanto transazione non riconosciuta";
|
msg << "ignorato in quanto transazione non riconosciuta";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
msg << "ignorato in quanto già elaborato";
|
msg << "ignorato in quanto già elaborato";
|
||||||
viswin.add_line(msg);
|
vv.add_line(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
viswin.add_line("");
|
time(&tempo);
|
||||||
viswin.add_line("Fine elaborazione");
|
d = localtime(&tempo);
|
||||||
|
msg.format("- Fine elaborazione: %02d-%02d-%04d %02d:%02d:%02d",
|
||||||
viswin.close_print();
|
d->tm_mday, d->tm_mon+1, 1900+d->tm_year,
|
||||||
viswin.close_modal();
|
d->tm_hour, d->tm_min, d->tm_sec);
|
||||||
mail_unlock();
|
vv.add_line(msg);
|
||||||
viswin.run();
|
vv.add_line("");
|
||||||
|
vv.goto_end();
|
||||||
|
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
if (one_saved && yesno_box("Si desidera eliminare i messaggi processati?"))
|
if (one_saved && yesno_box("Si desidera eliminare i messaggi processati?"))
|
||||||
@ -834,7 +913,7 @@ bool TMailer_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
|
|||||||
{
|
{
|
||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
case F_TIMER:
|
case F_TIMER:
|
||||||
if (e == fe_init || e == fe_modify)
|
if (e == fe_init || e == fe_modify)
|
||||||
{
|
{
|
||||||
if (_timer_id != XVT_TIMER_ERROR)
|
if (_timer_id != XVT_TIMER_ERROR)
|
||||||
@ -859,7 +938,8 @@ bool TMailer_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
|
|||||||
!field(F_USER).empty() &&
|
!field(F_USER).empty() &&
|
||||||
!field(F_PASSWORD).empty())
|
!field(F_PASSWORD).empty())
|
||||||
{
|
{
|
||||||
auto_save_all();
|
// auto_save_all(); // Un po' troppo precipitoso: non permette di intervenire all'accensione
|
||||||
|
fill_messages();
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
if (e == se_query_add)
|
if (e == se_query_add)
|
||||||
@ -872,7 +952,7 @@ bool TMailer_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
|
|||||||
if (e == fe_button)
|
if (e == fe_button)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
if (!save_curr_line(err))
|
if (!save_sheet_line(err))
|
||||||
{
|
{
|
||||||
if (err == NOT_TRANS)
|
if (err == NOT_TRANS)
|
||||||
message_box("Messaggio ignorato in quanto transazione non riconosciuta");
|
message_box("Messaggio ignorato in quanto transazione non riconosciuta");
|
||||||
@ -890,11 +970,13 @@ bool TMailer_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DLG_SAVEREC:
|
case DLG_SAVEREC:
|
||||||
if (e == fe_button)
|
if (e == fe_button && jolly == 0)
|
||||||
if (jolly == 0)
|
{
|
||||||
{
|
if (curr_page() == 0)
|
||||||
save_all_lines();
|
save_all_lines();
|
||||||
}
|
else
|
||||||
|
save();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case DLG_DELREC:
|
case DLG_DELREC:
|
||||||
if (e == fe_button)
|
if (e == fe_button)
|
||||||
@ -945,6 +1027,23 @@ bool TMailer_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case DLG_DELLOG:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
TBrowsefile_field& bf = (TBrowsefile_field&)field(F_LOG);
|
||||||
|
TViswin& vv = bf.vis_win();
|
||||||
|
vv.destroy_lines();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DLG_PRINT:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
TBrowsefile_field& bf = (TBrowsefile_field&)field(F_LOG);
|
||||||
|
TViswin& vv = bf.vis_win();
|
||||||
|
vv.text().print();
|
||||||
|
return FALSE; // Don't close
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -969,13 +1068,19 @@ void TMailer_mask::load_sheet(TConfig& ini, short dlg, const char* var)
|
|||||||
void TMailer_mask::auto_save_all()
|
void TMailer_mask::auto_save_all()
|
||||||
{
|
{
|
||||||
if (_mail_semaphore == 0)
|
if (_mail_semaphore == 0)
|
||||||
{
|
{
|
||||||
mail_lock();
|
#ifdef DBG
|
||||||
|
if (yesno_box("Si desidera eliminare i messaggi processati?"))
|
||||||
|
#endif
|
||||||
test_delete();
|
test_delete();
|
||||||
fill_messages();
|
fill_messages();
|
||||||
mail_unlock();
|
mail_unlock();
|
||||||
if (!field(F_TIMER).empty())
|
if (!field(F_TIMER).empty())
|
||||||
save_all_lines();
|
{
|
||||||
|
TSheet_field& sf = sfield(F_MESSAGES);
|
||||||
|
if (sf.items() > 0)
|
||||||
|
save_all_lines();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
NFCHECK("Can't save locked mail");
|
NFCHECK("Can't save locked mail");
|
||||||
@ -985,18 +1090,14 @@ void TMailer_mask::handler(WINDOW win, EVENT* ep)
|
|||||||
{
|
{
|
||||||
if (ep->type == E_TIMER)
|
if (ep->type == E_TIMER)
|
||||||
{
|
{
|
||||||
if (ep->v.timer.id == _timer_id && _mail_semaphore == 0)
|
if (ep->v.timer.id == _timer_id)
|
||||||
{
|
{
|
||||||
_secs++;
|
_secs++;
|
||||||
if (_secs >= get_long(F_TIMER) * 60)
|
if (_secs >= get_long(F_TIMER) * 60)
|
||||||
{
|
{
|
||||||
if (_vv)
|
_secs = 0L;
|
||||||
_vv->stop_run(K_ESC);
|
if (_mail_semaphore == 0)
|
||||||
else
|
|
||||||
{
|
|
||||||
_secs = 0L;
|
|
||||||
auto_save_all();
|
auto_save_all();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,9 @@
|
|||||||
#define F_ADDRESSES 211
|
#define F_ADDRESSES 211
|
||||||
#define F_PARAMS 212
|
#define F_PARAMS 212
|
||||||
|
|
||||||
|
#define F_LOG 213
|
||||||
|
#define DLG_DELLOG 214
|
||||||
|
|
||||||
#define F_CHECKED 101
|
#define F_CHECKED 101
|
||||||
#define F_SENDER 102
|
#define F_SENDER 102
|
||||||
#define F_DATE 103
|
#define F_DATE 103
|
||||||
|
|||||||
@ -4,21 +4,14 @@ TOOLBAR "Toolbar" 0 -3 0 3
|
|||||||
|
|
||||||
BUTTON DLG_SAVEREC 10 2
|
BUTTON DLG_SAVEREC 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -13 -11 ""
|
PROMPT -12 -11 ""
|
||||||
PICTURE BMP_SAVEREC
|
PICTURE BMP_SAVEREC
|
||||||
PICTURE BMP_SAVERECDN
|
PICTURE BMP_SAVERECDN
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_DELREC 10 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT -23 -11 ""
|
|
||||||
PICTURE BMP_DELREC
|
|
||||||
PICTURE BMP_DELRECDN
|
|
||||||
END
|
|
||||||
|
|
||||||
BUTTON DLG_QUIT 10 2
|
BUTTON DLG_QUIT 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -33 -11 ""
|
PROMPT -22 -11 ""
|
||||||
PICTURE BMP_QUIT
|
PICTURE BMP_QUIT
|
||||||
PICTURE BMP_QUITDN
|
PICTURE BMP_QUITDN
|
||||||
END
|
END
|
||||||
@ -64,7 +57,7 @@ BEGIN
|
|||||||
GROUP G_SUPERUSER
|
GROUP G_SUPERUSER
|
||||||
END
|
END
|
||||||
|
|
||||||
SPREADSHEET F_MESSAGES
|
SPREADSHEET F_MESSAGES 0 -2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 2 ""
|
PROMPT 0 2 ""
|
||||||
ITEM "@1"
|
ITEM "@1"
|
||||||
@ -76,8 +69,16 @@ BEGIN
|
|||||||
ITEM "Mailer@4"
|
ITEM "Mailer@4"
|
||||||
ITEM "Id@64"
|
ITEM "Id@64"
|
||||||
GROUP G_SUPERUSER
|
GROUP G_SUPERUSER
|
||||||
|
FLAGS "|"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_DELREC 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -11 -1 ""
|
||||||
|
PICTURE BMP_DELREC
|
||||||
|
PICTURE BMP_DELRECDN
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Spedizione" -1 -1 78 20
|
PAGE "Spedizione" -1 -1 78 20
|
||||||
@ -108,20 +109,44 @@ BEGIN
|
|||||||
ITEM "OP@2"
|
ITEM "OP@2"
|
||||||
ITEM "Filtro@64"
|
ITEM "Filtro@64"
|
||||||
GROUP G_SUPERUSER
|
GROUP G_SUPERUSER
|
||||||
|
FLAGS "|"
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Log" -1 -1 78 20
|
||||||
|
|
||||||
|
BROWSEFILE F_LOG 0 -3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 0 1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_DELLOG 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -1 ""
|
||||||
|
PICTURE BMP_DELREC
|
||||||
|
PICTURE BMP_DELRECDN
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_PRINT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -1 ""
|
||||||
|
PICTURE BMP_PRINT
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
PAGE "Message" -1 -1 62 19
|
PAGE "Message" -1 -1 78 19
|
||||||
|
|
||||||
BOOLEAN F_CHECKED
|
BOOLEAN F_CHECKED
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 48 0 "Trasferito"
|
PROMPT 48 0 "Trasferito"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_SENDER 80 50
|
STRING F_SENDER 80 66
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Da "
|
PROMPT 1 2 "Da "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
@ -139,12 +164,12 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_SUBJECT 256 50
|
STRING F_SUBJECT 256 66
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Soggetto "
|
PROMPT 1 4 "Soggetto "
|
||||||
END
|
END
|
||||||
|
|
||||||
MEMO F_BODY 60 12
|
MEMO F_BODY 76 12
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 "Messaggio"
|
PROMPT 1 5 "Messaggio"
|
||||||
END
|
END
|
||||||
@ -155,7 +180,7 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_ID 512 50
|
STRING F_ID 512 66
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Numero "
|
PROMPT 1 1 "Numero "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
|
|||||||
@ -1080,6 +1080,7 @@ void TConversione_archivi::convert_lia_pim() const
|
|||||||
void TConversione_archivi::build_ver_table() const
|
void TConversione_archivi::build_ver_table() const
|
||||||
// Costruisce la tabella %VER con i valori in vigore da Gennaio 1993
|
// Costruisce la tabella %VER con i valori in vigore da Gennaio 1993
|
||||||
{
|
{
|
||||||
|
/* OB600039
|
||||||
TProgind p(10, "Creazione tabella VER", FALSE, FALSE, 10);
|
TProgind p(10, "Creazione tabella VER", FALSE, FALSE, 10);
|
||||||
TTable ver("%VER");
|
TTable ver("%VER");
|
||||||
|
|
||||||
@ -1097,6 +1098,7 @@ void TConversione_archivi::build_ver_table() const
|
|||||||
ver.put("R11","88");ver.put("R12","88");
|
ver.put("R11","88");ver.put("R12","88");
|
||||||
|
|
||||||
if (ver.write() != NOERR) ver.rewrite();
|
if (ver.write() != NOERR) ver.rewrite();
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void TConversione_archivi::convert_ca7_ql() const
|
void TConversione_archivi::convert_ca7_ql() const
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
#include <mainmenu.url>
|
||||||
MENU TASK_MENUBAR
|
|
||||||
SUBMENU MENU_FILE "~File"
|
|
||||||
|
|
||||||
|
|||||||
373
ba/baeur.cpp
Executable file
373
ba/baeur.cpp
Executable file
@ -0,0 +1,373 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <config.h>
|
||||||
|
#include <currency.h>
|
||||||
|
#include <prefix.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <relation.h>
|
||||||
|
#include <utility.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
|
||||||
|
#include "../cg/cglib01.h"
|
||||||
|
|
||||||
|
#include "baeur.h"
|
||||||
|
|
||||||
|
inline TEuro_app& app() { return (TEuro_app&)main_app(); }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Utilities
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Confronta due nomi di directory
|
||||||
|
bool dir_equal(const char* dir1, const char* dir2)
|
||||||
|
{
|
||||||
|
TFilename d1 = dir1; d1.strip("\\/");
|
||||||
|
TFilename d2 = dir2; d2.strip("\\/");
|
||||||
|
return d1 == d2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void convert_import(TRectype& rec, const char* str)
|
||||||
|
{
|
||||||
|
if (str && *str)
|
||||||
|
{
|
||||||
|
TToken_string list = str;
|
||||||
|
FOR_EACH_TOKEN(list, tok)
|
||||||
|
{
|
||||||
|
real r = rec.get(tok);
|
||||||
|
if (r != ZERO)
|
||||||
|
{
|
||||||
|
r /= EURO;
|
||||||
|
r.round(2);
|
||||||
|
rec.put(tok, r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void zero_import(TRectype& rec, const char* str)
|
||||||
|
{
|
||||||
|
if (str && *str)
|
||||||
|
{
|
||||||
|
TToken_string list = str;
|
||||||
|
FOR_EACH_TOKEN(list, tok)
|
||||||
|
rec.zero(tok);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HIDDEN const TString& build_name(int logicnum, bool euro, long firm)
|
||||||
|
{
|
||||||
|
TFilename dati, datie;
|
||||||
|
app().get_aree_dati(dati, datie);
|
||||||
|
|
||||||
|
TDir d; d.get(logicnum, _nolock, _nordir, _sysdirop);
|
||||||
|
|
||||||
|
TString8 ditta = "com";
|
||||||
|
if (!d.is_com())
|
||||||
|
{
|
||||||
|
if (firm < 0)
|
||||||
|
firm = app().get_firm();
|
||||||
|
if (firm > 0)
|
||||||
|
ditta.format("%05ldA", firm);
|
||||||
|
}
|
||||||
|
|
||||||
|
TFilename name = d.filename();
|
||||||
|
|
||||||
|
static TFilename _filename;
|
||||||
|
_filename = euro ? datie : dati;
|
||||||
|
_filename.add(ditta);
|
||||||
|
_filename.add(name.name());
|
||||||
|
_filename.insert("%", 0);
|
||||||
|
|
||||||
|
return _filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Base app
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool TEuro_app::get_aree_dati(TFilename& lit, TFilename& eur) const
|
||||||
|
{
|
||||||
|
TConfig prassis(CONFIG_STUDIO, "Euro");
|
||||||
|
lit = prassis.get("DatiLire");
|
||||||
|
eur = prassis.get("DatiEuro");
|
||||||
|
if (lit.blank())
|
||||||
|
{
|
||||||
|
lit = prefix().get_studio();
|
||||||
|
lit.rtrim(1);
|
||||||
|
}
|
||||||
|
bool ok = eur.exist();
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TEuro_app::goto_euro(long ditta)
|
||||||
|
{
|
||||||
|
TFilename lit, eur;
|
||||||
|
bool ok = get_aree_dati(lit, eur);
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
TFilename cur = prefix().get_studio(); cur.rtrim(1);
|
||||||
|
if (ditta < 0)
|
||||||
|
ditta = get_firm();
|
||||||
|
if (!dir_equal(cur, eur))
|
||||||
|
ok = prefix().set_studio(eur, ditta);
|
||||||
|
else
|
||||||
|
prefix().set_codditta(ditta);
|
||||||
|
}
|
||||||
|
if (!ok)
|
||||||
|
error_box("Impossibile utilizzare lo studio in euro '%s'", (const char*)eur);
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TEuro_app::goto_lire(long ditta)
|
||||||
|
{
|
||||||
|
TFilename lit, eur;
|
||||||
|
get_aree_dati(lit, eur);
|
||||||
|
|
||||||
|
bool ok = !lit.blank() && fexist(lit);
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
TFilename cur = prefix().get_studio(); cur.rtrim(1);
|
||||||
|
if (ditta < 0)
|
||||||
|
ditta = get_firm();
|
||||||
|
if (!dir_equal(cur, lit))
|
||||||
|
ok = prefix().set_studio(lit, ditta);
|
||||||
|
else
|
||||||
|
prefix().set_codditta(ditta);
|
||||||
|
}
|
||||||
|
if (!ok)
|
||||||
|
error_box("Impossibile utilizzare lo studio in lire '%s'", (const char*)lit);
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TEuro_app::save_round_bill(const TBill& b) const
|
||||||
|
{
|
||||||
|
TFilename lit, eur;
|
||||||
|
bool ok = get_aree_dati(lit, eur);
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
eur.add("config/prassis.ini");
|
||||||
|
TConfig prassis(eur, "Euro");
|
||||||
|
|
||||||
|
TString16 str;
|
||||||
|
str.format("%d,%d,%ld", b.gruppo(), b.conto(), b.sottoconto());
|
||||||
|
prassis.set("RoundBill", str);
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TEuro_app::load_round_bill(TBill& b) const
|
||||||
|
{
|
||||||
|
TFilename lit, eur;
|
||||||
|
bool ok = get_aree_dati(lit, eur);
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
eur.add("config/prassis.ini");
|
||||||
|
TConfig prassis(eur, "Euro");
|
||||||
|
TToken_string str(prassis.get("RoundBill"), ',');
|
||||||
|
const int g = str.get_int();
|
||||||
|
const int c = str.get_int();
|
||||||
|
const long s = str.get_long();
|
||||||
|
b.set(g, c, s);
|
||||||
|
ok = b.find();
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TEuro_app::copy_dir(const char* src, const char* dst) const
|
||||||
|
{
|
||||||
|
bool ok = TRUE;
|
||||||
|
if (!fexist(dst))
|
||||||
|
make_dir(dst);
|
||||||
|
|
||||||
|
TString_array files;
|
||||||
|
TFilename file1, file2;
|
||||||
|
file1 = src; file1.add("*.*");
|
||||||
|
list_files(file1, files);
|
||||||
|
|
||||||
|
TString str;
|
||||||
|
str << "Copia da " << src << " a " << dst << "...";
|
||||||
|
TProgind pi(files.items(), str, FALSE, TRUE);
|
||||||
|
FOR_EACH_ARRAY_ROW(files, i, file)
|
||||||
|
{
|
||||||
|
pi.addstatus(1);
|
||||||
|
file1 = *file;
|
||||||
|
file2 = dst; file2.add(file1.name());
|
||||||
|
ok &= fcopy(file1, file2);
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TEuro_app::is_com_file(int lf) const
|
||||||
|
{
|
||||||
|
TDir d;
|
||||||
|
d.get(lf, _nolock, _nordir, _sysdirop);
|
||||||
|
return d.is_com();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro_app::zap_file(int lf, bool euro) const
|
||||||
|
{
|
||||||
|
TFilename name = build_name(lf, euro, -1);
|
||||||
|
if (name[0] == '%') name.ltrim(1);
|
||||||
|
TExternisamfile f(name);
|
||||||
|
f.zap();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
void TEuro_app::zap_table(const char * tab, bool euro)
|
||||||
|
{
|
||||||
|
const int lf = tab && *tab == '%' ? LF_TABCOM : LF_TAB;
|
||||||
|
TFilename name = build_name(lf, euro, -1);
|
||||||
|
|
||||||
|
if (name[0] == '%') name.ltrim(1);
|
||||||
|
TExternisamfile f(name);
|
||||||
|
if (!f.empty())
|
||||||
|
{
|
||||||
|
TString16 tabname(lf == LF_TAB ? tab : tab + 1);
|
||||||
|
|
||||||
|
f.put("COD", tabname);
|
||||||
|
for (f.read(_isgteq); f.good() && tabname == f.get("COD"); f.next())
|
||||||
|
f.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
void TEuro_app::convert_file(int lf, const char* cnv, const char* res, record_handler rh, void* jolly)
|
||||||
|
{
|
||||||
|
// Cursore su file in lire
|
||||||
|
TRelation rel(lf);
|
||||||
|
TCursor cur(&rel);
|
||||||
|
TRectype& curr = rel.curr();
|
||||||
|
|
||||||
|
zap_file(lf, TRUE); // Azzera file in euro
|
||||||
|
|
||||||
|
// File destinazione in euro
|
||||||
|
TEuroisamfile fileur(lf, TRUE);
|
||||||
|
TRectype& receur = fileur.curr();
|
||||||
|
|
||||||
|
TString str;
|
||||||
|
str << "Conversione " << rel.lfile().description() << " ...";
|
||||||
|
|
||||||
|
TToken_string conv(cnv);
|
||||||
|
TToken_string azze(res);
|
||||||
|
|
||||||
|
const long items = cur.items();
|
||||||
|
cur.freeze();
|
||||||
|
TProgind pi(items, str, FALSE, TRUE);
|
||||||
|
for (cur = 0L; cur.pos() < items; ++cur)
|
||||||
|
{
|
||||||
|
pi.addstatus(1);
|
||||||
|
receur = curr;
|
||||||
|
convert_import(receur, conv);
|
||||||
|
zero_import(receur, azze);
|
||||||
|
|
||||||
|
bool do_write = TRUE;
|
||||||
|
if (rh != NULL)
|
||||||
|
do_write = rh(receur, jolly);
|
||||||
|
if (do_write)
|
||||||
|
fileur.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
void TEuro_app::convert_table(const char *tab, const char* cnv, const char* res, record_handler rh, void* jolly)
|
||||||
|
{
|
||||||
|
// Cursore su file in lire
|
||||||
|
TRelation rel(tab);
|
||||||
|
TCursor cur(&rel);
|
||||||
|
TRectype& curr = rel.curr();
|
||||||
|
|
||||||
|
zap_table(tab, TRUE);
|
||||||
|
|
||||||
|
// File destinazione in euro
|
||||||
|
TEuroisamfile tabeur(tab && *tab == '%' ? LF_TABCOM : LF_TAB, TRUE);
|
||||||
|
TRectype& receur = tabeur.curr();
|
||||||
|
|
||||||
|
TString str;
|
||||||
|
str << "Conversione " << rel.lfile().description() << " ...";
|
||||||
|
|
||||||
|
TToken_string conv(cnv);
|
||||||
|
TToken_string azze(res);
|
||||||
|
|
||||||
|
const long items = cur.items();
|
||||||
|
cur.freeze();
|
||||||
|
TProgind pi(items, str, FALSE, TRUE);
|
||||||
|
for (cur = 0L; cur.pos() < items; ++cur)
|
||||||
|
{
|
||||||
|
pi.addstatus(1);
|
||||||
|
receur = curr;
|
||||||
|
convert_import(receur, conv);
|
||||||
|
zero_import(receur, azze);
|
||||||
|
|
||||||
|
bool do_write = TRUE;
|
||||||
|
if (rh != NULL)
|
||||||
|
do_write = rh(receur, jolly);
|
||||||
|
if (do_write)
|
||||||
|
tabeur.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool TEuro_app::data_adozione_euro(long firm, TDate& adozione, bool& inizio) const
|
||||||
|
{
|
||||||
|
TFilename dati, datie;
|
||||||
|
get_aree_dati(dati, datie);
|
||||||
|
|
||||||
|
TString8 ditta;
|
||||||
|
ditta.format("%05ldA", firm <= 0 ? get_firm() : firm);
|
||||||
|
|
||||||
|
TFilename inie = datie;
|
||||||
|
inie.add(ditta);
|
||||||
|
inie.add("prassid.ini");
|
||||||
|
|
||||||
|
inizio = TRUE; // Supponiamo che adotti l'euro ad inizio esercizio
|
||||||
|
|
||||||
|
bool adotta = inie.exist();
|
||||||
|
if (adotta)
|
||||||
|
{
|
||||||
|
TConfig prassid(inie, "Euro");
|
||||||
|
adozione = prassid.get("DataAdozione");
|
||||||
|
adotta = adozione.ok();
|
||||||
|
if (adotta)
|
||||||
|
{
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
const int anno = esc.date2esc(adozione);
|
||||||
|
if (anno > 0)
|
||||||
|
inizio = adozione == esc[anno].inizio();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return adotta;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TEuroisamfile
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
TEuroisamfile::TEuroisamfile(int logicnum, bool euro, long firm)
|
||||||
|
: TIsamtempfile(logicnum, build_name(logicnum, euro, firm), FALSE, FALSE)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// main
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
TApplication::check_parameters(argc, argv);
|
||||||
|
|
||||||
|
int a = argc > 1 ? argv[1][1]-'0' : 0;
|
||||||
|
switch (a)
|
||||||
|
{
|
||||||
|
case 1: baeur01(argc, argv); break;
|
||||||
|
case 2: baeur02(argc, argv); break;
|
||||||
|
case 3: baeur03(argc, argv); break;
|
||||||
|
case 4: baeur04(argc, argv); break;
|
||||||
|
case 5: baeur05(argc, argv); break;
|
||||||
|
case 6: baeur06(argc, argv); break;
|
||||||
|
case 7: baeur07(argc, argv); break;
|
||||||
|
case 8: baeur08(argc, argv); break;
|
||||||
|
case 9: baeur09(argc, argv); break;
|
||||||
|
default: baeur00(argc, argv); break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
101
ba/baeur.h
Executable file
101
ba/baeur.h
Executable file
@ -0,0 +1,101 @@
|
|||||||
|
#ifndef __BAEUR_H
|
||||||
|
#define __BAEUR_H
|
||||||
|
|
||||||
|
#ifndef __APPLICAT_H
|
||||||
|
#include <applicat.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __ISAM_H
|
||||||
|
#include <isam.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __CGLIB01_H
|
||||||
|
class TBill;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// Handler personalizzato. Se ritorna true rewrite, altrimenti remove
|
||||||
|
typedef bool (*record_handler)(TRectype& rec, void* jolly);
|
||||||
|
|
||||||
|
class TEuro_app : public TSkeleton_application
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
bool goto_lire(long ditta = -1);
|
||||||
|
bool goto_euro(long ditta = -1);
|
||||||
|
bool copy_dir(const char* src, const char* dst) const;
|
||||||
|
|
||||||
|
void convert_file(int lf, const char* cnv, const char* res,
|
||||||
|
record_handler rh = NULL, void* jolly = NULL);
|
||||||
|
void zap_file(int lf, bool euro) const;
|
||||||
|
void zap_table(const char * tab, bool euro);
|
||||||
|
bool is_com_file(int lf) const;
|
||||||
|
bool is_firm_file(int lf) const { return !is_com_file(lf); }
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool get_aree_dati(TFilename& lit, TFilename& eur) const;
|
||||||
|
bool data_adozione_euro(long firm, TDate& adozione, bool& inizio) const;
|
||||||
|
|
||||||
|
bool save_round_bill(const TBill& b) const;
|
||||||
|
bool load_round_bill(TBill& b) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class TEuroisamfile : public TIsamtempfile
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TEuroisamfile(int logicnum, bool euro = FALSE, long firm = -1);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TCG_rmov : public TObject
|
||||||
|
{
|
||||||
|
int _gruppo, _conto;
|
||||||
|
long _sottoconto;
|
||||||
|
TImporto _importo;
|
||||||
|
};
|
||||||
|
|
||||||
|
class TCG_mov : public TArray
|
||||||
|
{
|
||||||
|
enum { MAX_CG_ROWS = 98};
|
||||||
|
|
||||||
|
protected:
|
||||||
|
const TCG_rmov& row(int i) const { return (const TCG_rmov&)*objptr(i); }
|
||||||
|
|
||||||
|
void crea_testata(TLocalisamfile& mov, const TString& caus,
|
||||||
|
const TDate& datareg, const TString& desc) const;
|
||||||
|
void crea_riga(const TRectype& mov, TRectype& rmov, int r) const;
|
||||||
|
void update_saldo(const TRectype& mov, const TRectype& rmov, TLocalisamfile& saldi);
|
||||||
|
|
||||||
|
public:
|
||||||
|
void add(int g, int c, long s, char sez, const real& imp);
|
||||||
|
void add(const TBill& bill, const TImporto& imp);
|
||||||
|
TImporto save(const TDate& datareg, const TString& caus, const TString& desc,
|
||||||
|
const TBill& contro, bool adeuro, bool convert, bool invert);
|
||||||
|
};
|
||||||
|
|
||||||
|
class TCG_movs : public TArray
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int indbil(int g, int c) const;
|
||||||
|
TCG_mov& mov(int ib);
|
||||||
|
int add(int g, int c, long s, char sez, const real& imp);
|
||||||
|
TImporto save(const TDate& datareg, const TString& caus, const TString& desc, const TBill& contro,
|
||||||
|
bool adeuro, bool convert, bool invert);
|
||||||
|
};
|
||||||
|
|
||||||
|
bool dir_equal(const char* dir1, const char* dir2);
|
||||||
|
void convert_import(TRectype& rec, const char* str);
|
||||||
|
void zero_import(TRectype& rec, const char* str);
|
||||||
|
|
||||||
|
const real EURO(1936.27);
|
||||||
|
|
||||||
|
int baeur00(int argc, char* argv[]);
|
||||||
|
int baeur01(int argc, char* argv[]);
|
||||||
|
int baeur02(int argc, char* argv[]);
|
||||||
|
int baeur03(int argc, char* argv[]);
|
||||||
|
int baeur04(int argc, char* argv[]);
|
||||||
|
int baeur05(int argc, char* argv[]);
|
||||||
|
int baeur06(int argc, char* argv[]);
|
||||||
|
int baeur07(int argc, char* argv[]);
|
||||||
|
int baeur08(int argc, char* argv[]);
|
||||||
|
int baeur09(int argc, char* argv[]);
|
||||||
|
|
||||||
|
#endif
|
||||||
3
ba/baeur.url
Executable file
3
ba/baeur.url
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#include <default.url>
|
||||||
|
#include <mainmenu.url>
|
||||||
|
|
||||||
401
ba/baeur00.cpp
Executable file
401
ba/baeur00.cpp
Executable file
@ -0,0 +1,401 @@
|
|||||||
|
#include <automask.h>
|
||||||
|
#include <defmask.h>
|
||||||
|
#include <prefix.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <relation.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include <nditte.h>
|
||||||
|
#include <partite.h>
|
||||||
|
#include <scadenze.h>
|
||||||
|
#include <pagsca.h>
|
||||||
|
#include <saldi.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
|
||||||
|
#include "baeur.h"
|
||||||
|
#include "../cg/cglib01.h"
|
||||||
|
|
||||||
|
#include "baeur01.h"
|
||||||
|
#include "baeur02.h"
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro00_app : public TEuro_app
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
void set_prassis(const TString& dir, const TMask& m) const;
|
||||||
|
void reset_770(const TString& dst) const;
|
||||||
|
|
||||||
|
void convert_tabcom(const TString& lit, const TString& eur);
|
||||||
|
void convert_ini();
|
||||||
|
void convert_ditte(const TString& eur);
|
||||||
|
void convert_anag();
|
||||||
|
|
||||||
|
public:
|
||||||
|
KEY step1();
|
||||||
|
KEY step2();
|
||||||
|
virtual void main_loop();
|
||||||
|
};
|
||||||
|
|
||||||
|
inline TEuro00_app& app() { return (TEuro00_app&)main_app(); }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Step 1
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro01_mask : public TAutomask
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
TEuro01_mask() : TAutomask("baeur01") { }
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TEuro01_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F01_DATIE:
|
||||||
|
if (e == fe_close || e == fe_modify)
|
||||||
|
{
|
||||||
|
const TFilename n = o.get();
|
||||||
|
const bool esiste = n.exist();
|
||||||
|
enable(DLG_QUIT, esiste);
|
||||||
|
if (strlen(n.name()) > 8)
|
||||||
|
return error_box("L'area dati in Euro ha un nome troppo lungo: %s", (const char*)n.name());
|
||||||
|
if (esiste)
|
||||||
|
return error_box("L'area dati in Euro esiste già");
|
||||||
|
} else
|
||||||
|
if (e == fe_init)
|
||||||
|
{
|
||||||
|
TFilename lit, eur;
|
||||||
|
app().get_aree_dati(lit, eur);
|
||||||
|
set(F01_DATI, lit);
|
||||||
|
if (eur.empty())
|
||||||
|
eur << lit << "e";
|
||||||
|
set(F01_DATIE, eur);
|
||||||
|
enable(DLG_QUIT, eur.exist());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro00_app::set_prassis(const TString& dir, const TMask& m) const
|
||||||
|
{
|
||||||
|
TFilename str = dir;
|
||||||
|
str.add("config/prassis.ini");
|
||||||
|
TConfig prassis(str, "Euro");
|
||||||
|
prassis.set("DatiLire", m.get(F01_DATI));
|
||||||
|
prassis.set("DatiEuro", m.get(F01_DATIE));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro00_app::reset_770(const TString& dst) const
|
||||||
|
{
|
||||||
|
TFilename filemask = dst; filemask.add("*.dbf");
|
||||||
|
TString_array files;
|
||||||
|
list_files(filemask, files);
|
||||||
|
FOR_EACH_ARRAY_ROW(files, i, name)
|
||||||
|
{
|
||||||
|
TExternisamfile eif(*name);
|
||||||
|
eif.zap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
KEY TEuro00_app::step1()
|
||||||
|
{
|
||||||
|
goto_lire();
|
||||||
|
|
||||||
|
TEuro01_mask* m = new TEuro01_mask;
|
||||||
|
KEY k = m->run();
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
|
const TFilename dir1 = m->get(F01_DATI);
|
||||||
|
const TFilename dir2 = m->get(F01_DATIE);
|
||||||
|
|
||||||
|
if (!fexist(dir2))
|
||||||
|
make_dir(dir2);
|
||||||
|
|
||||||
|
TFilename src = dir1; src.add("config");
|
||||||
|
TFilename dst = dir2; dst.add("config");
|
||||||
|
copy_dir(src, dst);
|
||||||
|
|
||||||
|
set_prassis(dir1, *m);
|
||||||
|
set_prassis(dir2, *m);
|
||||||
|
|
||||||
|
delete m; m = NULL;
|
||||||
|
TCurrency::force_cache_update(); // Chiude cache valute
|
||||||
|
prefix().set(NULL); // Chiude tutti i files
|
||||||
|
|
||||||
|
src = dir1; src.add("com"); // Copia dati comuni
|
||||||
|
dst = dir2; dst.add("com");
|
||||||
|
copy_dir(src, dst);
|
||||||
|
|
||||||
|
src = dir1; src.add("std"); // Copia dati standard
|
||||||
|
dst = dir2; dst.add("std");
|
||||||
|
copy_dir(src, dst);
|
||||||
|
|
||||||
|
src = dir1; src.add("m770"); // Copia dati 770
|
||||||
|
dst = dir2; dst.add("m770");
|
||||||
|
copy_dir(src, dst);
|
||||||
|
goto_lire(); // Necessario per riaccedere ai tracciati
|
||||||
|
reset_770(dst);
|
||||||
|
}
|
||||||
|
if (m) delete m;
|
||||||
|
return k;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Step 2
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro02_mask : public TAutomask
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
public:
|
||||||
|
TEuro02_mask() : TAutomask("baeur02") { }
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TEuro02_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F02_LIT:
|
||||||
|
case F02_EUR:
|
||||||
|
if (e == fe_init)
|
||||||
|
{
|
||||||
|
TEdit_field& ef = (TEdit_field&)o;
|
||||||
|
TCursor* cur = ef.browse()->cursor();
|
||||||
|
if (cur != NULL && cur->items() > 0)
|
||||||
|
{
|
||||||
|
*cur = 0;
|
||||||
|
ef.set(cur->curr().get("CODTAB"));
|
||||||
|
ef.check(STARTING_CHECK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct TTabcom_data
|
||||||
|
{
|
||||||
|
TString4 _lit, _eur;
|
||||||
|
int _last_stato;
|
||||||
|
};
|
||||||
|
|
||||||
|
HIDDEN bool tabcom_handler(TRectype& curr, void* jolly)
|
||||||
|
{
|
||||||
|
bool update = TRUE;
|
||||||
|
const TString4 cod = curr.get("COD");
|
||||||
|
if (cod == "CLM")
|
||||||
|
{
|
||||||
|
convert_import(curr, "R0|R1|R2|R3");
|
||||||
|
}
|
||||||
|
if (cod == "DEL")
|
||||||
|
{
|
||||||
|
update = FALSE;
|
||||||
|
}
|
||||||
|
if (cod == "LIA")
|
||||||
|
{
|
||||||
|
const int anno = atoi(curr.get("CODTAB").mid(5, 4));
|
||||||
|
if (anno >= 2001)
|
||||||
|
zero_import(curr, "R0|R1|R2|R3|R5|R15"); // Azzera crediti residui vari
|
||||||
|
else
|
||||||
|
update = FALSE;
|
||||||
|
}
|
||||||
|
if (cod == "PLA")
|
||||||
|
{
|
||||||
|
const int anno = atoi(curr.get("CODTAB").mid(5, 4));
|
||||||
|
if (anno >= 2001)
|
||||||
|
zero_import(curr, "R5|R6|R7|R8"); // Azzera prorata
|
||||||
|
else
|
||||||
|
update = FALSE;
|
||||||
|
}
|
||||||
|
if (cod == "VAL")
|
||||||
|
{
|
||||||
|
TTabcom_data* data = (TTabcom_data*)jolly;
|
||||||
|
const TString& lit = data->_lit;
|
||||||
|
const TString& eur = data->_eur;
|
||||||
|
|
||||||
|
const TString& val = curr.get("CODTAB");
|
||||||
|
if (val == lit)
|
||||||
|
{
|
||||||
|
const real r = 1.0 / EURO;
|
||||||
|
curr.put("B0", ""); curr.put("B1", "X");
|
||||||
|
curr.put("S4", EURO); curr.put("R10", r);
|
||||||
|
} else
|
||||||
|
if (val == eur)
|
||||||
|
{
|
||||||
|
curr.put("B0", "X"); curr.put("B1", "");
|
||||||
|
curr.put("S4", "1"); curr.put("R10", "1");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
curr.put("B0", "");
|
||||||
|
if (!curr.get_bool("B1"))
|
||||||
|
{
|
||||||
|
real c = curr.get("S4");
|
||||||
|
if (c != ZERO)
|
||||||
|
{
|
||||||
|
c = EURO / c;
|
||||||
|
curr.put("S4", c.string(0,6));
|
||||||
|
curr.put("B1", "X");
|
||||||
|
}
|
||||||
|
curr.zero("R10");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (cod == "VER")
|
||||||
|
{
|
||||||
|
zero_import(curr, "R5|R6|R7|R8|R9|R10");
|
||||||
|
}
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro00_app::convert_tabcom(const TString& lit, const TString& eur)
|
||||||
|
{
|
||||||
|
TTabcom_data data;
|
||||||
|
|
||||||
|
data._lit = lit;
|
||||||
|
data._eur = eur;
|
||||||
|
|
||||||
|
TTable stati("%STD");
|
||||||
|
TTable tipi("%TIP");
|
||||||
|
stati.last();
|
||||||
|
const int last_stato = stati.get_int("CODTAB");
|
||||||
|
|
||||||
|
for (tipi.first(); tipi.good(); tipi.next())
|
||||||
|
{
|
||||||
|
TString80 s2;
|
||||||
|
|
||||||
|
s2 = tipi.get("S2");
|
||||||
|
if (s2.len() < 3 || s2[2] == ' ')
|
||||||
|
{
|
||||||
|
const char s[2] = { last_stato + '0', '\0'};
|
||||||
|
|
||||||
|
s2.overwrite(s, 2, 1);
|
||||||
|
tipi.put("S2", s2);
|
||||||
|
tipi.rewrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
convert_file(LF_TABCOM, NULL, NULL, tabcom_handler, &data);
|
||||||
|
}
|
||||||
|
|
||||||
|
HIDDEN void convert_ini_val(TConfig& inilit, TConfig& inieur, const char* name, int index)
|
||||||
|
{
|
||||||
|
real val = inilit.get(name, NULL, index);
|
||||||
|
if (!val.is_zero())
|
||||||
|
{
|
||||||
|
val /= EURO;
|
||||||
|
val.round(2);
|
||||||
|
inieur.set(name, val.string(0, 2), NULL, TRUE, index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro00_app::convert_ini()
|
||||||
|
{
|
||||||
|
TFilename lit, eur;
|
||||||
|
app().get_aree_dati(lit, eur);
|
||||||
|
|
||||||
|
lit.add("config\\prassis.ini");
|
||||||
|
TConfig inilit(lit, "ve");
|
||||||
|
|
||||||
|
eur.add("config\\prassis.ini");
|
||||||
|
TConfig inieur(eur, "ve");
|
||||||
|
|
||||||
|
for (int i = 1; i <= 7; i++)
|
||||||
|
{
|
||||||
|
convert_ini_val(inilit, inieur, "SPBOSCA", i);
|
||||||
|
convert_ini_val(inilit, inieur, "SPBOIMP", i);
|
||||||
|
}
|
||||||
|
convert_ini_val(inilit, inieur, "BOLLIES", -1);
|
||||||
|
convert_ini_val(inilit, inieur, "IMPMINBOLLI", -1);
|
||||||
|
for (i = 1; i <= 9; i++)
|
||||||
|
convert_ini_val(inilit, inieur, "IMPSPINC", i);
|
||||||
|
}
|
||||||
|
|
||||||
|
HIDDEN bool ditte_handler(TRectype& curr, void* jolly)
|
||||||
|
{
|
||||||
|
TTabcom_data* data = (TTabcom_data*)jolly;
|
||||||
|
curr.put(NDT_VALUTA, data->_eur);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro00_app::convert_ditte(const TString& eur)
|
||||||
|
{
|
||||||
|
TTabcom_data data;
|
||||||
|
data._eur = eur;
|
||||||
|
convert_file(LF_NDITTE, NULL, NULL, ditte_handler, &data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro00_app::convert_anag()
|
||||||
|
{
|
||||||
|
convert_file(LF_ANAGGIU, NULL, "VALNOM|CAPSOC|CAPVER|FATT", NULL, NULL);
|
||||||
|
convert_file(LF_SOCI, NULL, "EMOLUMENTO", NULL, NULL);
|
||||||
|
if (is_com_file(LF_CLIFO))
|
||||||
|
{
|
||||||
|
convert_file(LF_CLIFO, NULL, "FIDO", NULL, NULL);
|
||||||
|
convert_file(LF_CFVEN, "IMPMINEFF", "", NULL, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
KEY TEuro00_app::step2()
|
||||||
|
{
|
||||||
|
goto_lire();
|
||||||
|
|
||||||
|
TString16 eur, lit;
|
||||||
|
KEY k = K_QUIT;
|
||||||
|
{
|
||||||
|
TEuro02_mask m;
|
||||||
|
k = m.run();
|
||||||
|
lit = m.get(F02_LIT);
|
||||||
|
eur = m.get(F02_EUR);
|
||||||
|
}
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
|
convert_tabcom(lit, eur);
|
||||||
|
convert_ini();
|
||||||
|
convert_ditte(eur);
|
||||||
|
convert_anag();
|
||||||
|
}
|
||||||
|
return k;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void TEuro00_app::main_loop()
|
||||||
|
{
|
||||||
|
int step = 1;
|
||||||
|
while (step >= 1 && step <= 2)
|
||||||
|
{
|
||||||
|
KEY k = K_ENTER;
|
||||||
|
switch (step)
|
||||||
|
{
|
||||||
|
case 1: k = step1(); break;
|
||||||
|
case 2: k = step2(); break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
if (k == K_ENTER || k == K_QUIT)
|
||||||
|
step++;
|
||||||
|
if (k == K_ESC)
|
||||||
|
step--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int baeur00(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TEuro00_app ma;
|
||||||
|
ma.run(argc, argv, "Creazione Studio Euro");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
736
ba/baeur01.cpp
Executable file
736
ba/baeur01.cpp
Executable file
@ -0,0 +1,736 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <dongle.h>
|
||||||
|
#include <execp.h>
|
||||||
|
#include <modaut.h>
|
||||||
|
#include <prefix.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <relation.h>
|
||||||
|
|
||||||
|
#include <nditte.h>
|
||||||
|
#include <partite.h>
|
||||||
|
#include <scadenze.h>
|
||||||
|
#include <pagsca.h>
|
||||||
|
#include <saldi.h>
|
||||||
|
|
||||||
|
#include "baeur.h"
|
||||||
|
#include "baeur10.h"
|
||||||
|
#include "baeur11.h"
|
||||||
|
|
||||||
|
#include "../cg/cglib01.h"
|
||||||
|
#include "../mg/mag.h"
|
||||||
|
#include "../mg/movmag.h"
|
||||||
|
#include "../mg/rmovmag.h"
|
||||||
|
#include "../mg/mglib.h"
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro01_app : public TEuro_app
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
void convert_saldi(const TDate& adozione, const TBill& arrotino);
|
||||||
|
void convert_partite();
|
||||||
|
|
||||||
|
virtual bool create();
|
||||||
|
|
||||||
|
public:
|
||||||
|
KEY convert_firm(long ditta);
|
||||||
|
|
||||||
|
virtual void main_loop();
|
||||||
|
};
|
||||||
|
|
||||||
|
inline TEuro01_app& app() { return (TEuro01_app&)main_app(); }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Step 3
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro03_mask : public TAutomask
|
||||||
|
{
|
||||||
|
void fill_ditte();
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
TEuro03_mask() : TAutomask("baeur10") { }
|
||||||
|
};
|
||||||
|
|
||||||
|
void TEuro03_mask::fill_ditte()
|
||||||
|
{
|
||||||
|
TFilename lit, eur;
|
||||||
|
app().get_aree_dati(lit, eur);
|
||||||
|
|
||||||
|
TRelation rel(LF_NDITTE);
|
||||||
|
TCursor cur(&rel);
|
||||||
|
const TRectype& curr = rel.curr();
|
||||||
|
const long items = cur.items();
|
||||||
|
cur.freeze();
|
||||||
|
|
||||||
|
TSheet_field& ditte = sfield(F03_DITTE);
|
||||||
|
ditte.destroy();
|
||||||
|
|
||||||
|
for (cur = 0L; cur.pos() < items; ++cur)
|
||||||
|
{
|
||||||
|
const long ditta = curr.get_long(NDT_CODDITTA);
|
||||||
|
if (prefix().exist(ditta))
|
||||||
|
{
|
||||||
|
TToken_string& row = ditte.row(-1);
|
||||||
|
row.add(" ");
|
||||||
|
row.add(ditta);
|
||||||
|
row.add(curr.get(NDT_RAGSOC));
|
||||||
|
|
||||||
|
TFilename firm;
|
||||||
|
firm.format("%s/%05ldA", (const char*)eur, ditta);
|
||||||
|
|
||||||
|
COLOR col = COLOR_BLACK;
|
||||||
|
if (firm.exist())
|
||||||
|
{
|
||||||
|
firm.add("prassid.ini");
|
||||||
|
TConfig ini(firm, "Euro");
|
||||||
|
TString16 dde = ini.get("DataAdozione");
|
||||||
|
if (dde.empty())
|
||||||
|
{
|
||||||
|
row.add("Creata direttamente in Euro");
|
||||||
|
col = COLOR_RED;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString str; str << "Adotta l'Euro dal " << dde;
|
||||||
|
row.add(str);
|
||||||
|
col = COLOR_GREEN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
row.add("X", 0);
|
||||||
|
row.add("Non presente in Euro");
|
||||||
|
}
|
||||||
|
if (col != COLOR_BLACK)
|
||||||
|
{
|
||||||
|
int i = ditte.items()-1;
|
||||||
|
ditte.set_back_and_fore_color(col, -1, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ditte.force_update();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TEuro03_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F03_DITTE:
|
||||||
|
if (e == fe_init)
|
||||||
|
fill_ditte();
|
||||||
|
if (e == se_query_add || e == se_query_del)
|
||||||
|
return FALSE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Step 4 - Conversione ditta
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro11_mask : public TAutomask
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
TEuro11_mask() : TAutomask("baeur11") { }
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TEuro11_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F11_ADOZIONE:
|
||||||
|
if (e == fe_modify || e == fe_close)
|
||||||
|
{
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
TDate d = o.get();
|
||||||
|
if (!d.ok())
|
||||||
|
return error_box("E' necessario specificare la data di adozione dell'Euro");
|
||||||
|
const int codesc = esc.date2esc(d);
|
||||||
|
if (codesc <= 0)
|
||||||
|
return error_box("E' necessario aprire l'esercizio per l'anno %d", d.year());
|
||||||
|
/* TLocalisamfile sch(LF_SCHPERC);
|
||||||
|
|
||||||
|
if (sch.items() > 0L)
|
||||||
|
{
|
||||||
|
bool inizio;
|
||||||
|
|
||||||
|
data_adozione_euro(-1L, d, inizio);
|
||||||
|
if (!inizio)
|
||||||
|
return error_box("La conversione dei percipienti puó essere effettuata solo a inizio esercizio");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (d.day() != 1)
|
||||||
|
warning_box("Si consiglia di specificare una data di inizio mese/trimestre");
|
||||||
|
if (dongle().active(MGAUT))
|
||||||
|
{
|
||||||
|
TConfig c(CONFIG_DITTA, "mg");
|
||||||
|
if (c.get_bool("GESMAG") && d != esc[codesc].inizio())
|
||||||
|
{
|
||||||
|
const int prevesc = esc.date2prevesc(d);
|
||||||
|
if (prevesc > 0)
|
||||||
|
{
|
||||||
|
const TDate& cm = esc[prevesc].chiusura_mag();
|
||||||
|
if (!cm.ok())
|
||||||
|
return error_box("E' necessario chiudere il magazzino nel %d", prevesc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Conversione ditta
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
struct TMag_data
|
||||||
|
{
|
||||||
|
int _annoesrif;
|
||||||
|
TString _fields;
|
||||||
|
TString _zero_fields;
|
||||||
|
};
|
||||||
|
|
||||||
|
static bool mag_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TMag_data& mag = *(TMag_data*)jolly;
|
||||||
|
const int annoesrif = *((int *) jolly);
|
||||||
|
const int annoes = rec.get_int(MAG_ANNOES);
|
||||||
|
if (annoes >= mag._annoesrif)
|
||||||
|
zero_import(rec, mag._zero_fields);
|
||||||
|
else
|
||||||
|
convert_import(rec, mag._fields);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool movmag_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TMag_data& mag = *(TMag_data*)jolly;
|
||||||
|
const int annoesrif = *((int *) jolly);
|
||||||
|
const int annoes = rec.get_int(MOVMAG_ANNOES);
|
||||||
|
return annoes >= annoesrif;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool righemovmag_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TMag_data& mag = *(TMag_data*)jolly;
|
||||||
|
const int annoesrif = *((int *) jolly);
|
||||||
|
TString16 key; key << rec.get_long(RMOVMAG_NUMREG);
|
||||||
|
const int annoes = atoi(cache().get(LF_MOVMAG, key, MOVMAG_ANNOES));
|
||||||
|
return annoes >= annoesrif;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct TTab_data
|
||||||
|
{
|
||||||
|
int _codes_rif, _annoes_rif;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* static bool perc_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
return app().get_firm() == rec.get_long("CODDITTA");
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool sch_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
bool ok = perc_handler(rec, jolly);
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
} */
|
||||||
|
|
||||||
|
static bool tab_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
const TString& cod = rec.get("COD");
|
||||||
|
|
||||||
|
if (cod == "CAM")
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (cod == "ESC")
|
||||||
|
{
|
||||||
|
TTab_data* data = (TTab_data*)jolly;
|
||||||
|
const int ese = rec.get_int("CODTAB");
|
||||||
|
return ese >= data->_codes_rif;
|
||||||
|
}
|
||||||
|
if (cod == "REG")
|
||||||
|
{
|
||||||
|
TTab_data* data = (TTab_data*)jolly;
|
||||||
|
const int annoes = atoi(rec.get("CODTAB").left(4));
|
||||||
|
zero_import(rec, "R0|R1|R2");
|
||||||
|
return annoes >= data->_annoes_rif;
|
||||||
|
}
|
||||||
|
if (cod == "SPP" || cod == "PRS")
|
||||||
|
{
|
||||||
|
const TString16 val = rec.get("S4");
|
||||||
|
if (is_firm_value(val))
|
||||||
|
{
|
||||||
|
rec.zero("S4");
|
||||||
|
convert_import(rec, "R0");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (is_euro_value(val))
|
||||||
|
rec.zero("S4");
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
if (cod == "RFA")
|
||||||
|
{
|
||||||
|
zero_import(rec, "R1|R2");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
if (cod == "LAM" || cod == "LIM" || cod == "PIM" || cod == "PUM" || cod == "PAM" ||
|
||||||
|
cod == "POM" || cod == "PLM" || cod == "PPA" || cod == "PRM")
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool conv_condv(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
const TString16 val = rec.get("CODVAL");
|
||||||
|
|
||||||
|
if (is_firm_value(val) || is_euro_value(val))
|
||||||
|
{
|
||||||
|
rec.zero("CODVAL");
|
||||||
|
rec.zero("CAMBIO");
|
||||||
|
rec.zero("CONTROEURO");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (!rec.get_bool("CONTROEURO"))
|
||||||
|
{
|
||||||
|
real contro_change = EURO / rec.get_real("CAMBIO");
|
||||||
|
|
||||||
|
rec.put("CAMBIO", contro_change);
|
||||||
|
rec.put("CONTROEURO", "X");
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool conv_rcondv(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TString80 key;
|
||||||
|
|
||||||
|
key << rec.get("TIPO");
|
||||||
|
key << "|" << rec.get("CATVEN");
|
||||||
|
key << "|" << rec.get("TIPOCF");
|
||||||
|
key << "|" << rec.get("CODCF");
|
||||||
|
key << "|" << rec.get("COD");
|
||||||
|
|
||||||
|
const TString16 val = cache().get(LF_CONDV, key, "CODVAL");
|
||||||
|
|
||||||
|
if (is_firm_value(val))
|
||||||
|
convert_import(rec, "PREZZO");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
KEY TEuro01_app::convert_firm(long ditta)
|
||||||
|
{
|
||||||
|
TFilename lit, eur;
|
||||||
|
get_aree_dati(lit, eur);
|
||||||
|
prefix().set_studio(lit, ditta);
|
||||||
|
|
||||||
|
TString16 firm; firm.format("%05ldA", ditta);
|
||||||
|
TFilename litf = lit; litf.add(firm);
|
||||||
|
TFilename eurf = eur; eurf.add(firm);
|
||||||
|
|
||||||
|
const bool already_present = eurf.exist();
|
||||||
|
bool do_copy = !already_present;
|
||||||
|
bool do_saldi = !already_present;
|
||||||
|
bool do_partite = !already_present;
|
||||||
|
bool do_vendite = !already_present;
|
||||||
|
bool do_magazzino = !already_present;
|
||||||
|
|
||||||
|
TDate adozione;
|
||||||
|
TBill arrotino;
|
||||||
|
|
||||||
|
KEY k = K_ENTER;
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
|
TEuro11_mask m;
|
||||||
|
m.set(F11_DITTA, ditta, TRUE);
|
||||||
|
m.set(F11_DATI, lit);
|
||||||
|
m.set(F11_DATIE, eur);
|
||||||
|
m.set(F11_COPY, do_copy ? "X" : "");
|
||||||
|
m.set(F11_SALDI, do_saldi ? "X" : "");
|
||||||
|
m.set(F11_PARTITE, do_partite ? "X" : "");
|
||||||
|
m.set(F11_VENDITE, do_vendite ? "X" : "");
|
||||||
|
m.set(F11_MAGAZZINO, do_magazzino ? "X" : "");
|
||||||
|
|
||||||
|
if (already_present)
|
||||||
|
{
|
||||||
|
TFilename ini = eurf; ini.add("prassid.ini");
|
||||||
|
TConfig prassid(ini, "Euro");
|
||||||
|
adozione = prassid.get("DataAdozione");
|
||||||
|
m.set(F11_ADOZIONE, adozione);
|
||||||
|
}
|
||||||
|
m.enable(-1, already_present); // Abilita i vari checkbox
|
||||||
|
|
||||||
|
if (load_round_bill(arrotino))
|
||||||
|
{
|
||||||
|
arrotino.set(m, F11_DIFF_G, F11_DIFF_C, F11_DIFF_S);
|
||||||
|
m.field(F11_DIFF_S).check(STARTING_CHECK);
|
||||||
|
}
|
||||||
|
|
||||||
|
k = m.run();
|
||||||
|
adozione = m.get(F11_ADOZIONE);
|
||||||
|
arrotino.get(m, F11_DIFF_G, F11_DIFF_C, F11_DIFF_S);
|
||||||
|
do_copy = m.get_bool(F11_COPY);
|
||||||
|
do_saldi = m.get_bool(F11_SALDI);
|
||||||
|
do_partite = m.get_bool(F11_PARTITE);
|
||||||
|
do_vendite = m.get_bool(F11_VENDITE);
|
||||||
|
do_magazzino = m.get_bool(F11_MAGAZZINO);
|
||||||
|
}
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
|
if (do_copy && already_present)
|
||||||
|
do_copy = yesno_box("Si conferma la sovrascrittura della ditta %ld in Euro?", ditta);
|
||||||
|
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
const int codes_rif = esc.date2prevesc(adozione);
|
||||||
|
const int annoes_rif = adozione.year()-1;
|
||||||
|
|
||||||
|
if (do_copy)
|
||||||
|
{
|
||||||
|
TCurrency::force_cache_update(); // Chiude cache valute
|
||||||
|
prefix().set(NULL); // Chiude files ditta
|
||||||
|
copy_dir(litf, eurf);
|
||||||
|
|
||||||
|
if (adozione.ok()) // Dummy test
|
||||||
|
{
|
||||||
|
TFilename ini = eurf; ini.add("prassid.ini");
|
||||||
|
TConfig prassid(ini, "Euro");
|
||||||
|
prassid.set("DataAdozione", adozione.string());
|
||||||
|
}
|
||||||
|
|
||||||
|
save_round_bill(arrotino);
|
||||||
|
|
||||||
|
prefix().set("."); // Riapre files ditta
|
||||||
|
set_firm(ditta);
|
||||||
|
|
||||||
|
TTab_data data;
|
||||||
|
data._codes_rif = codes_rif;
|
||||||
|
data._annoes_rif = annoes_rif;
|
||||||
|
convert_file(LF_TAB, NULL, NULL, tab_handler, (void*)&data);
|
||||||
|
|
||||||
|
if (is_firm_file(LF_CLIFO))
|
||||||
|
{
|
||||||
|
convert_file(LF_CLIFO, NULL, "FIDO", NULL, NULL);
|
||||||
|
convert_file(LF_CFVEN, "IMPMINEFF", "MINORD|MAXORD", NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
zap_file(LF_MOV, TRUE); // Cancella movimenti di prima nota dell'area euro
|
||||||
|
zap_file(LF_RMOV, TRUE); // Cancella righe di prima nota dell'area euro
|
||||||
|
zap_file(LF_RMOVIVA, TRUE); // Cancella righe iva dell'area euro
|
||||||
|
|
||||||
|
zap_file(LF_REFFETTI, TRUE);
|
||||||
|
zap_file(LF_EFFETTI, TRUE);
|
||||||
|
zap_file(LF_CESS, TRUE);
|
||||||
|
|
||||||
|
zap_file(LF_INTRA, TRUE);
|
||||||
|
zap_file(LF_RINTRA, TRUE);
|
||||||
|
zap_file(LF_RIEPRETT, TRUE);
|
||||||
|
|
||||||
|
/* convert_file(LF_PERC, NULL, NULL, perc_handler, (void*)&data);
|
||||||
|
convert_file(LF_SCHPERC, NULL, NULL, sch_handler, (void*)&data);
|
||||||
|
convert_file(LF_RVER, NULL, NULL, sch_handler, (void*)&data);
|
||||||
|
convert_file(LF_RPAG, NULL, NULL, sch_handler, (void*)&data); */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (do_saldi)
|
||||||
|
convert_saldi(adozione, arrotino); // Converti saldi
|
||||||
|
|
||||||
|
if (do_partite)
|
||||||
|
convert_partite(); // Converti partite
|
||||||
|
|
||||||
|
if (do_vendite)
|
||||||
|
{
|
||||||
|
zap_file(LF_DOC, TRUE);
|
||||||
|
zap_file(LF_RIGHEDOC, TRUE);
|
||||||
|
|
||||||
|
convert_file(LF_ANAMAG, "COSTSTD|ULTCOS1|ULTCOS2|VALSTATUN", "");
|
||||||
|
convert_file(LF_UMART, "PREZZO", "");
|
||||||
|
|
||||||
|
// cvrt condv codval cambio
|
||||||
|
// cvrt rcondv prezzo
|
||||||
|
convert_file(LF_RCONDV, "", "", conv_rcondv);
|
||||||
|
convert_file(LF_CONDV, "", "", conv_condv);
|
||||||
|
convert_file(LF_SVRIEP, "VALORE", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (do_magazzino)
|
||||||
|
{
|
||||||
|
TMag_data mag;
|
||||||
|
mag._annoesrif = esc.date2esc(adozione);
|
||||||
|
mag._zero_fields << "RIM|VALRIM|ACQ|VALACQ|ENT|VALENT|VEN|VALVEN|USC|VALUSC|GIAC|ORDF|VALORDF|";
|
||||||
|
mag._zero_fields << "ORDC|VALORDC|INCL|ACL|PRODCOMP|PRODFIN|NLABEL|NDIST|SCARTI|VALSCARTI|";
|
||||||
|
mag._zero_fields << "USER1|USERVAL1|USER2|USERVAL2|USER3|USERVAL3|";
|
||||||
|
mag._zero_fields << "USER4|USERVAL4|USER5|USERVAL5|USER6|USERVAL6";
|
||||||
|
|
||||||
|
mag._fields << "VALRIM|VALACQ|VALENT|VALVEN|VALUSC|VALORDF|VALORDC|VALSCARTI|";
|
||||||
|
mag._fields << "USERVAL1|USERVAL2|USERVAL3|USERVAL4|USERVAL5|USERVAL6";
|
||||||
|
|
||||||
|
convert_file(LF_MAG, "", "", mag_handler, (void*)&mag);
|
||||||
|
convert_file(LF_MOVMAG, "", "", movmag_handler, (void*)&mag);
|
||||||
|
convert_file(LF_RMOVMAG, "PREZZO", "", righemovmag_handler, (void*)&mag);
|
||||||
|
|
||||||
|
convert_file(LF_STOMAG, "VALORE|ULTCOS1|COSTSTD|COSTOMEDIO|PRZLIST", "");
|
||||||
|
convert_file(LF_DIST, "PREZZO", "");
|
||||||
|
|
||||||
|
TExternal_app app("baeur -6 S");
|
||||||
|
app.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return k;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Conversione saldi
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
struct TSaldi_data
|
||||||
|
{
|
||||||
|
int _annoes;
|
||||||
|
TBill _arrot;
|
||||||
|
TImporto _sld;
|
||||||
|
};
|
||||||
|
|
||||||
|
static bool saldi_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TSaldi_data& sld = *(TSaldi_data*)jolly;
|
||||||
|
const int annoes = rec.get_int(SLD_ANNOES);
|
||||||
|
if (annoes == sld._annoes)
|
||||||
|
{
|
||||||
|
const TImporto iniz(rec.get_char(SLD_FLAGSALINI), rec.get_real(SLD_SALDO));
|
||||||
|
const TImporto pdare('D', rec.get_real(SLD_PDARE));
|
||||||
|
const TImporto pavere('A', rec.get_real(SLD_PAVERE));
|
||||||
|
TImporto saldo = iniz; saldo += pdare; saldo += pavere;
|
||||||
|
if (!saldo.is_zero())
|
||||||
|
{
|
||||||
|
saldo.normalize();
|
||||||
|
rec.put(SLD_FLAGSALINI, saldo.sezione());
|
||||||
|
rec.put(SLD_SALDO, saldo.valore());
|
||||||
|
convert_import(rec, "SALDO|FLAGSALFIN|SALDOFIN");
|
||||||
|
zero_import(rec, "PDARE|PAVERE|PDAREPRO|PAVEREPRO");
|
||||||
|
sld._sld += TImporto(saldo.sezione(), rec.get_real(SLD_SALDO)); // Somma saldo in euro
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro01_app::convert_saldi(const TDate& adozione, const TBill& arrotino)
|
||||||
|
{
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
|
||||||
|
TSaldi_data sld;
|
||||||
|
sld._annoes = esc.date2prevesc(adozione);
|
||||||
|
sld._arrot = arrotino;
|
||||||
|
convert_file(LF_SALDI, NULL, NULL, saldi_handler, &sld);
|
||||||
|
|
||||||
|
TImporto& saldo = sld._sld;
|
||||||
|
saldo.valore().round(-2);
|
||||||
|
if (!saldo.is_zero())
|
||||||
|
{
|
||||||
|
TLocalisamfile saldi_lire(LF_SALDI); // Open trc
|
||||||
|
TEuroisamfile saldi(LF_SALDI, TRUE);
|
||||||
|
|
||||||
|
TRectype& curr = saldi.curr();
|
||||||
|
curr.zero();
|
||||||
|
curr.put(SLD_ANNOES, sld._annoes);
|
||||||
|
curr.put(SLD_GRUPPO, arrotino.gruppo());
|
||||||
|
curr.put(SLD_CONTO, arrotino.conto());
|
||||||
|
curr.put(SLD_SOTTOCONTO, arrotino.sottoconto());
|
||||||
|
|
||||||
|
saldo.normalize();
|
||||||
|
saldo.swap_section();
|
||||||
|
curr.put(SLD_FLAGSALINI, saldo.sezione());
|
||||||
|
curr.put(SLD_SALDO, saldo.valore());
|
||||||
|
saldi.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Conversione partite
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
struct TSaldac_data
|
||||||
|
{
|
||||||
|
real _totrate;
|
||||||
|
};
|
||||||
|
|
||||||
|
bool partite_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
if (rec.get_bool(PART_CHIUSA) || rec.get_int(PART_NRIGA) == 9999)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
TSaldac_data* data = (TSaldac_data*)jolly;
|
||||||
|
|
||||||
|
const TString16 codval = rec.get(PART_CODVAL);
|
||||||
|
if (::is_firm_value(codval))
|
||||||
|
{
|
||||||
|
convert_import(rec, PART_ABBUONI);
|
||||||
|
zero_import(rec, "CODVAL|IMPORTOVAL|DIFFCAM");
|
||||||
|
} else
|
||||||
|
if (::is_euro_value(codval))
|
||||||
|
{
|
||||||
|
zero_import(rec, "CODVAL|IMPORTOVAL|DIFFCAM");
|
||||||
|
} else
|
||||||
|
if (::is_true_value(codval))
|
||||||
|
{
|
||||||
|
const real impval = rec.get(PART_IMPORTOVAL);
|
||||||
|
if (impval != ZERO)
|
||||||
|
{
|
||||||
|
const real impeur = rec.get(PART_IMPORTO);
|
||||||
|
const real cambio = impeur / impval;
|
||||||
|
rec.put(PART_CAMBIO, cambio);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool scadenze_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TSaldac_data* sd = (TSaldac_data*)jolly;
|
||||||
|
|
||||||
|
TEuroisamfile part(LF_PARTITE, TRUE);
|
||||||
|
TRectype& curr = part.curr();
|
||||||
|
curr.zero();
|
||||||
|
curr.put(PART_TIPOCF, rec.get(SCAD_TIPOCF));
|
||||||
|
curr.put(PART_GRUPPO, rec.get(SCAD_GRUPPO));
|
||||||
|
curr.put(PART_CONTO, rec.get(SCAD_CONTO));
|
||||||
|
curr.put(PART_SOTTOCONTO, rec.get(SCAD_SOTTOCONTO));
|
||||||
|
curr.put(PART_ANNO, rec.get(SCAD_ANNO));
|
||||||
|
curr.put(PART_NUMPART, rec.get(SCAD_NUMPART));
|
||||||
|
curr.put(PART_NRIGA, rec.get(SCAD_NRIGA));
|
||||||
|
if (part.read() != NOERR)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
const int nrata = rec.get_int(SCAD_NRATA);
|
||||||
|
if (nrata == 1)
|
||||||
|
sd->_totrate = ZERO;
|
||||||
|
sd->_totrate += rec.get_real(SCAD_IMPORTO);
|
||||||
|
|
||||||
|
// I problemi di arrotondamento dovrei averli solo con tante rate
|
||||||
|
if (nrata > 1)
|
||||||
|
{
|
||||||
|
TLocalisamfile scad(LF_SCADENZE, FALSE);
|
||||||
|
scad.curr() = rec;
|
||||||
|
scad.curr().put(SCAD_NRATA, nrata+1);
|
||||||
|
if (scad.read() != NOERR) // Sono l'ultima rata
|
||||||
|
{
|
||||||
|
real toteur = part.get(PART_IMPTOTDOC);
|
||||||
|
toteur /= EURO;
|
||||||
|
toteur.round(2);
|
||||||
|
const real diff = toteur - sd->_totrate;
|
||||||
|
if (diff != ZERO)
|
||||||
|
{
|
||||||
|
real rata = rec.get(SCAD_IMPORTO);
|
||||||
|
rata += diff;
|
||||||
|
rec.put(SCAD_IMPORTO, rata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pagamenti_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TSaldac_data* sd = (TSaldac_data*)jolly;
|
||||||
|
|
||||||
|
TEuroisamfile part(LF_PARTITE, TRUE);
|
||||||
|
TRectype& curr = part.curr();
|
||||||
|
curr.zero();
|
||||||
|
curr.put(PART_TIPOCF, rec.get(PAGSCA_TIPOC));
|
||||||
|
curr.put(PART_GRUPPO, rec.get(PAGSCA_GRUPPO));
|
||||||
|
curr.put(PART_CONTO, rec.get(PAGSCA_CONTO));
|
||||||
|
curr.put(PART_SOTTOCONTO, rec.get(PAGSCA_SOTTOCONTO));
|
||||||
|
curr.put(PART_ANNO, rec.get(PAGSCA_ANNO));
|
||||||
|
curr.put(PART_NUMPART, rec.get(PAGSCA_NUMPART));
|
||||||
|
curr.put(PART_NRIGA, rec.get(PAGSCA_NRIGA));
|
||||||
|
if (part.read() != NOERR)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
// Ero in lire (ora sono in euro) devo convertire gli abbuoni
|
||||||
|
if (curr.get_real(PART_IMPORTOVAL) == ZERO)
|
||||||
|
convert_import(rec, PAGSCA_ABBUONI);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro01_app::convert_partite()
|
||||||
|
{
|
||||||
|
TSaldac_data data;
|
||||||
|
convert_file(LF_PARTITE, "IMPORTO|IMPOSTA|SPESE|RITENUTE", PART_NREG, partite_handler, &data);
|
||||||
|
|
||||||
|
TLocalisamfile part(LF_PARTITE); // Serve ad avere disponibile il tracciato record
|
||||||
|
convert_file(LF_SCADENZE, "IMPORTO", NULL, scadenze_handler, &data);
|
||||||
|
convert_file(LF_PAGSCA, "IMPORTO|RITENUTE", NULL, pagamenti_handler, &data);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool TEuro01_app::create()
|
||||||
|
{
|
||||||
|
TFilename lit, eur;
|
||||||
|
if (!app().get_aree_dati(lit, eur))
|
||||||
|
return error_box("Non esiste lo studio in Euro di destinazione");
|
||||||
|
return TEuro_app::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro01_app::main_loop()
|
||||||
|
{
|
||||||
|
KEY k = K_ENTER;
|
||||||
|
while (k == K_ENTER)
|
||||||
|
{
|
||||||
|
TString_array lista;
|
||||||
|
if (goto_lire())
|
||||||
|
{
|
||||||
|
TEuro03_mask m;
|
||||||
|
k = m.run();
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
|
TSheet_field& ditte = m.sfield(F03_DITTE);
|
||||||
|
lista = ditte.rows_array();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lista.items() > 0)
|
||||||
|
{
|
||||||
|
FOR_EACH_ARRAY_ROW(lista, r, row) if (*row->get(0) > ' ')
|
||||||
|
{
|
||||||
|
const long ditta = row->get_long(1);
|
||||||
|
KEY t = convert_firm(ditta);
|
||||||
|
if (t == K_ESC)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int baeur01(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TEuro01_app ma;
|
||||||
|
ma.run(argc, argv, "Conversione Ditte Euro");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
4
ba/baeur01.h
Executable file
4
ba/baeur01.h
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#define F01_DATI 101
|
||||||
|
#define F01_DATIE 102
|
||||||
|
|
||||||
|
|
||||||
46
ba/baeur01.uml
Executable file
46
ba/baeur01.uml
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#include "baeur01.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -3 0 3
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -13 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -23 -11 "&Salta"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -33 -11 ""
|
||||||
|
PICTURE BMP_QUIT
|
||||||
|
PICTURE BMP_QUITDN
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Creazione area dati in Euro" 0 0 80 018
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 80 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 0 "@bAree dati"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F01_DATI 80 59
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "Area dati in Lire "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F01_DATIE 80 59
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Area dati in Euro "
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "E' necessario specificare l'area dati in Euro"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
418
ba/baeur02.cpp
Executable file
418
ba/baeur02.cpp
Executable file
@ -0,0 +1,418 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <recarray.h>
|
||||||
|
|
||||||
|
#include "baeur.h"
|
||||||
|
#include "baeur20.h"
|
||||||
|
#include "../cg/cglib01.h"
|
||||||
|
|
||||||
|
#include <mov.h>
|
||||||
|
#include <pconti.h>
|
||||||
|
#include <rmov.h>
|
||||||
|
#include <saldi.h>
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro02_app : public TEuro_app
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool create();
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual void main_loop();
|
||||||
|
};
|
||||||
|
|
||||||
|
inline TEuro02_app& app() { return (TEuro02_app&)main_app(); }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Gestione movimenti di apertura e chiusura
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void TCG_mov::add(int g, int c, long s, char sez, const real& imp)
|
||||||
|
{
|
||||||
|
TCG_rmov* rmov = new TCG_rmov;
|
||||||
|
rmov->_gruppo = g;
|
||||||
|
rmov->_conto = c;
|
||||||
|
rmov->_sottoconto = s;
|
||||||
|
rmov->_importo.set(sez, imp);
|
||||||
|
TArray::add(rmov);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCG_mov::add(const TBill& bill, const TImporto& imp)
|
||||||
|
{
|
||||||
|
int g = bill.gruppo();
|
||||||
|
int c = bill.conto();
|
||||||
|
long s = bill.sottoconto();
|
||||||
|
char sez = imp.sezione();
|
||||||
|
real val = imp.valore();
|
||||||
|
add(g, c, s, sez, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCG_mov::crea_testata(TLocalisamfile& mov, const TString& caus,
|
||||||
|
const TDate& datareg, const TString& desc) const
|
||||||
|
{
|
||||||
|
long numreg = 1;
|
||||||
|
if (mov.last() == NOERR)
|
||||||
|
numreg = mov.get_long(MOV_NUMREG)+1;
|
||||||
|
mov.zero();
|
||||||
|
|
||||||
|
mov.put(MOV_NUMREG, numreg);
|
||||||
|
mov.put(MOV_CODCAUS, caus);
|
||||||
|
mov.put(MOV_DATAREG, datareg);
|
||||||
|
mov.put(MOV_DATACOMP, datareg);
|
||||||
|
mov.put(MOV_DESCR, desc);
|
||||||
|
mov.put(MOV_ANNOIVA, datareg.year());
|
||||||
|
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
const int annoes = esc.date2esc(datareg);
|
||||||
|
mov.put(MOV_ANNOES, annoes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCG_mov::crea_riga(const TRectype& mov, TRectype& rmov, int r) const
|
||||||
|
{
|
||||||
|
rmov.zero();
|
||||||
|
rmov.put(RMV_NUMREG, mov.get(MOV_NUMREG));
|
||||||
|
rmov.put(RMV_NUMRIG, r);
|
||||||
|
rmov.put(RMV_DATAREG, mov.get(MOV_DATAREG));
|
||||||
|
rmov.put(RMV_ANNOES, mov.get(MOV_ANNOES));
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCG_mov::update_saldo(const TRectype& mov, const TRectype& rmov, TLocalisamfile& saldi)
|
||||||
|
{
|
||||||
|
TBill zio; zio.get(rmov);
|
||||||
|
TRectype& curr = saldi.curr();
|
||||||
|
curr.zero();
|
||||||
|
curr.put(SLD_ANNOES, mov.get(MOV_ANNOES));
|
||||||
|
curr.put(SLD_GRUPPO, zio.gruppo());
|
||||||
|
curr.put(SLD_CONTO, zio.conto());
|
||||||
|
curr.put(SLD_SOTTOCONTO, zio.sottoconto());
|
||||||
|
const bool found = saldi.read() == NOERR;
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
curr.zero();
|
||||||
|
curr.put(SLD_ANNOES, mov.get(MOV_ANNOES));
|
||||||
|
curr.put(SLD_GRUPPO, zio.gruppo());
|
||||||
|
curr.put(SLD_CONTO, zio.conto());
|
||||||
|
curr.put(SLD_SOTTOCONTO, zio.sottoconto());
|
||||||
|
}
|
||||||
|
curr.put(SLD_NUMULTMOV, mov.get(MOV_NUMREG));
|
||||||
|
curr.put(SLD_DATAULMOV, mov.get(MOV_DATAREG));
|
||||||
|
|
||||||
|
const char* field = rmov.get_char(RMV_SEZIONE) == 'D' ? "PDARE" : "PAVERE";
|
||||||
|
const real importo = rmov.get_real(RMV_IMPORTO);
|
||||||
|
real saldo = curr.get(field);
|
||||||
|
saldo += importo;
|
||||||
|
curr.put(field, saldo);
|
||||||
|
if (found)
|
||||||
|
saldi.rewrite();
|
||||||
|
else
|
||||||
|
saldi.write();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Salva un movimento di primanota, eventualmente spezzandolo su piu' records se necessario
|
||||||
|
TImporto TCG_mov::save(const TDate& datareg, const TString& caus, const TString& desc,
|
||||||
|
const TBill& contro, bool adeuro, bool convert, bool invert)
|
||||||
|
{
|
||||||
|
// Apro comunque i file in lire per avere i tracciati
|
||||||
|
TLocalisamfile lmov(LF_MOV, adeuro);
|
||||||
|
TLocalisamfile lrmov(LF_RMOV, adeuro);
|
||||||
|
TLocalisamfile lsaldi(LF_SALDI, adeuro);
|
||||||
|
TLocalisamfile *pmov, *prmov, *psaldi;
|
||||||
|
|
||||||
|
// Apro quelli in euro se necessario
|
||||||
|
if (adeuro)
|
||||||
|
{
|
||||||
|
pmov = new TEuroisamfile(LF_MOV, adeuro);
|
||||||
|
prmov = new TEuroisamfile(LF_RMOV, adeuro);
|
||||||
|
psaldi = new TEuroisamfile(LF_SALDI, adeuro);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pmov = &lmov;
|
||||||
|
prmov = &lrmov;
|
||||||
|
psaldi = &lsaldi;
|
||||||
|
}
|
||||||
|
TLocalisamfile& mov = *pmov;
|
||||||
|
TLocalisamfile& rmov = *prmov;
|
||||||
|
TLocalisamfile& saldi = *psaldi;
|
||||||
|
|
||||||
|
TImporto bilancio;
|
||||||
|
|
||||||
|
for (int i = 0; i < items(); i += MAX_CG_ROWS)
|
||||||
|
{
|
||||||
|
const int first_row = i;
|
||||||
|
int last_row = i + MAX_CG_ROWS;
|
||||||
|
if (last_row > items())
|
||||||
|
last_row = items();
|
||||||
|
|
||||||
|
crea_testata(mov, caus, datareg, desc);
|
||||||
|
TImporto totale;
|
||||||
|
int written = 0;
|
||||||
|
for (int r = 0; r < last_row; r++)
|
||||||
|
{
|
||||||
|
const TCG_rmov& riga = row(r);
|
||||||
|
TImporto imp = riga._importo;
|
||||||
|
if (convert)
|
||||||
|
{
|
||||||
|
real euro = imp.valore() / EURO;
|
||||||
|
euro.round(2);
|
||||||
|
imp.set(imp.sezione(), euro);
|
||||||
|
}
|
||||||
|
if (imp.is_zero())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (invert)
|
||||||
|
imp.swap_section();
|
||||||
|
imp.normalize();
|
||||||
|
totale += imp;
|
||||||
|
|
||||||
|
crea_riga(mov.curr(), rmov.curr(), ++written);
|
||||||
|
rmov.put(RMV_SEZIONE, imp.sezione());
|
||||||
|
rmov.put(RMV_IMPORTO, imp.valore());
|
||||||
|
|
||||||
|
TBill conto(riga._gruppo, riga._conto, riga._sottoconto);
|
||||||
|
if (!conto.find())
|
||||||
|
error_box("Nella riga %d movimento %ld sarebbe utile anche il conto %d %d %ld",
|
||||||
|
written, mov.get_long(MOV_NUMREG), riga._gruppo, riga._conto, riga._sottoconto);
|
||||||
|
conto.put(rmov.curr(), FALSE);
|
||||||
|
contro.put(rmov.curr(), TRUE);
|
||||||
|
if (rmov.write() == NOERR)
|
||||||
|
update_saldo(mov.curr(), rmov.curr(), saldi);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scrittura ultima riga di contropartita
|
||||||
|
if (written > 0)
|
||||||
|
{
|
||||||
|
crea_riga(mov.curr(), rmov.curr(), ++written);
|
||||||
|
rmov.put(RMV_SEZIONE, totale.sezione() == 'D' ? 'A' : 'D');
|
||||||
|
rmov.put(RMV_IMPORTO, totale.valore());
|
||||||
|
contro.put(rmov.curr(), FALSE);
|
||||||
|
|
||||||
|
const TCG_rmov& riga = row(0);
|
||||||
|
const TBill conto(riga._gruppo, riga._conto, riga._sottoconto);
|
||||||
|
conto.put(rmov.curr(), TRUE);
|
||||||
|
|
||||||
|
if (rmov.write() == NOERR)
|
||||||
|
update_saldo(mov.curr(), rmov.curr(), saldi);
|
||||||
|
|
||||||
|
// Scrittura testata
|
||||||
|
totale.normalize();
|
||||||
|
mov.put(MOV_TOTDOC, totale.valore());
|
||||||
|
mov.write();
|
||||||
|
}
|
||||||
|
|
||||||
|
bilancio += totale;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (adeuro)
|
||||||
|
{
|
||||||
|
delete pmov;
|
||||||
|
delete prmov;
|
||||||
|
delete psaldi;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bilancio;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TCG_movs::indbil(int g, int c) const
|
||||||
|
{
|
||||||
|
TString16 key;
|
||||||
|
key.format("%d|%d", g, c);
|
||||||
|
const TRectype& rec = cache().get(LF_PCON, key);
|
||||||
|
int ib = rec.get_int(PCN_INDBIL);
|
||||||
|
if (ib <= 0)
|
||||||
|
{
|
||||||
|
error_box("Manca l'indicatore di bilancio per il conto %d %d", g, c);
|
||||||
|
ib = 1;
|
||||||
|
}
|
||||||
|
return ib;
|
||||||
|
}
|
||||||
|
|
||||||
|
TCG_mov& TCG_movs::mov(int ib)
|
||||||
|
{
|
||||||
|
TCG_mov* m = (TCG_mov*)objptr(ib);
|
||||||
|
if (m == NULL)
|
||||||
|
{
|
||||||
|
m = new TCG_mov;
|
||||||
|
TArray::add(m, ib);
|
||||||
|
}
|
||||||
|
return *m;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TCG_movs::add(int g, int c, long s, char sez, const real& imp)
|
||||||
|
{
|
||||||
|
const int ib = indbil(g, c); // Determina l'inidicatore di bilancio
|
||||||
|
mov(ib).add(g, c, s, sez, imp); // Somma il saldo al movimento opportuno
|
||||||
|
return ib;
|
||||||
|
}
|
||||||
|
|
||||||
|
TImporto TCG_movs::save(const TDate& datareg, const TString& caus, const TString& desc,
|
||||||
|
const TBill& contro, bool adeuro, bool convert, bool invert)
|
||||||
|
{
|
||||||
|
TImporto bilancio;
|
||||||
|
const int lib = last();
|
||||||
|
for (int ib = 1; ib <= lib; ib++) if (objptr(ib))
|
||||||
|
bilancio += mov(ib).save(datareg, caus, desc, contro, adeuro, convert, invert);
|
||||||
|
return bilancio;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main mask
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro20_mask : public TAutomask
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
virtual void on_firm_change();
|
||||||
|
|
||||||
|
TEuro20_mask() : TAutomask("baeur20") { }
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TEuro20_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro20_mask::on_firm_change()
|
||||||
|
{
|
||||||
|
const long firm = app().get_firm();
|
||||||
|
TDate adozione(1,1,2002);
|
||||||
|
|
||||||
|
TFilename dati, datie;
|
||||||
|
app().get_aree_dati(dati, datie);
|
||||||
|
|
||||||
|
TString8 ditta;
|
||||||
|
ditta.format("%05ldA", firm);
|
||||||
|
|
||||||
|
TFilename inie = datie;
|
||||||
|
inie.add(ditta);
|
||||||
|
inie.add("prassid.ini");
|
||||||
|
|
||||||
|
bool adotta = FALSE, inizio = FALSE;
|
||||||
|
if (inie.exist())
|
||||||
|
{
|
||||||
|
set(F20_DATI, dati);
|
||||||
|
set(F20_DATIE, datie);
|
||||||
|
|
||||||
|
adotta = app().data_adozione_euro(firm, adozione, inizio);
|
||||||
|
set(F20_ADOZIONE, adozione);
|
||||||
|
|
||||||
|
if (!adotta || inizio)
|
||||||
|
{
|
||||||
|
disable(DLG_OK);
|
||||||
|
error_box("Non è possibile utilizzare questa procedura:\n"
|
||||||
|
"la ditta %ld adotta l'Euro da inizio esercizio.", firm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
enable(DLG_OK);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
disable(DLG_OK);
|
||||||
|
error_box("Non è possibile utilizzare questa procedura:\n"
|
||||||
|
"la ditta %ld non esiste nello studio in Euro.", firm);
|
||||||
|
}
|
||||||
|
|
||||||
|
TFilename ini = dati;
|
||||||
|
ini.add(ditta);
|
||||||
|
ini.add("prassid.ini");
|
||||||
|
if (ini.exist())
|
||||||
|
{
|
||||||
|
TConfig prassid(ini, "cg");
|
||||||
|
set(F20_CAUS_C, prassid.get("CoCaCh"), TRUE);
|
||||||
|
set(F20_CAUS_A, prassid.get("CoCaAp"), TRUE);
|
||||||
|
|
||||||
|
set(F20_CONTROG_C, prassid.get("CsBiChG"));
|
||||||
|
set(F20_CONTROC_C, prassid.get("CsBiChC"));
|
||||||
|
set(F20_CONTROS_C, prassid.get("CsBiChS"), TRUE);
|
||||||
|
|
||||||
|
set(F20_CONTROG_A, prassid.get("CsBiApG"));
|
||||||
|
set(F20_CONTROC_A, prassid.get("CsBiApC"));
|
||||||
|
set(F20_CONTROS_A, prassid.get("CsBiApS"), TRUE);
|
||||||
|
}
|
||||||
|
set(F20_DESC_C, "Chiusura conti");
|
||||||
|
set(F20_DESC_A, "Apertura conti");
|
||||||
|
|
||||||
|
TBill arrotino;
|
||||||
|
if (app().load_round_bill(arrotino))
|
||||||
|
{
|
||||||
|
arrotino.set(*this, F20_DIFF_G, F20_DIFF_C, F20_DIFF_S);
|
||||||
|
field(F20_DIFF_S).check(STARTING_CHECK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool TEuro02_app::create()
|
||||||
|
{
|
||||||
|
set_firm();
|
||||||
|
bool ok = goto_lire(get_firm());
|
||||||
|
if (ok)
|
||||||
|
ok = TSkeleton_application::create();
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool saldi_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TCG_movs* movs = (TCG_movs*)jolly;
|
||||||
|
const int gruppo = rec.get_int(SLD_GRUPPO);
|
||||||
|
const int conto = rec.get_int(SLD_CONTO);
|
||||||
|
const long sottoconto = rec.get_long(SLD_SOTTOCONTO);
|
||||||
|
TImporto saldo, pdare, pavere;
|
||||||
|
saldo.set(rec.get_char(SLD_FLAGSALINI), rec.get_real(SLD_SALDO));
|
||||||
|
pdare.set('D', rec.get_real(SLD_PDARE));
|
||||||
|
pavere.set('A', rec.get_real(SLD_PAVERE));
|
||||||
|
saldo += pdare;
|
||||||
|
saldo += pavere;
|
||||||
|
saldo.normalize();
|
||||||
|
if (saldo.is_zero())
|
||||||
|
return FALSE;
|
||||||
|
if (gruppo <= 0 || conto <= 0 || sottoconto <= 0)
|
||||||
|
return error_box("Il file dei saldi contiene il conto errato %d %d %ld", gruppo, conto, sottoconto);
|
||||||
|
movs->add(gruppo, conto, sottoconto, saldo.sezione(), saldo.valore());
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro02_app::main_loop()
|
||||||
|
{
|
||||||
|
TEuro20_mask msk;
|
||||||
|
msk.on_firm_change(); // Preimposta data adozione euro ed altro
|
||||||
|
|
||||||
|
if (msk.run() == K_ENTER)
|
||||||
|
{
|
||||||
|
TCG_movs movs;
|
||||||
|
convert_file(LF_SALDI, "", "", saldi_handler, &movs);
|
||||||
|
|
||||||
|
const TDate adozione = msk.get(F20_ADOZIONE);
|
||||||
|
TBill contro;
|
||||||
|
contro.get(msk, F20_CONTROG_C, F20_CONTROC_C, F20_CONTROS_C);
|
||||||
|
movs.save(adozione, msk.get(F20_CAUS_C), msk.get(F20_DESC_C), contro, FALSE, FALSE, TRUE);
|
||||||
|
|
||||||
|
contro.get(msk, F20_CONTROG_A, F20_CONTROC_A, F20_CONTROS_A);
|
||||||
|
TImporto bil_eur = movs.save(adozione, msk.get(F20_CAUS_A), msk.get(F20_DESC_A), contro, TRUE, TRUE, FALSE);
|
||||||
|
|
||||||
|
TBill arrotino;
|
||||||
|
arrotino.get(msk, F20_DIFF_G, F20_DIFF_C, F20_DIFF_S);
|
||||||
|
save_round_bill(arrotino);
|
||||||
|
|
||||||
|
if (!bil_eur.is_zero())
|
||||||
|
{
|
||||||
|
TCG_mov mov;
|
||||||
|
mov.add(arrotino, bil_eur);
|
||||||
|
mov.save(adozione, msk.get(F20_CAUS_A), msk.get(F20_DESC_A), contro, TRUE, FALSE, FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int baeur02(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TEuro02_app ma;
|
||||||
|
ma.run(argc, argv, "Conversione saldi infrannuale");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
7
ba/baeur02.h
Executable file
7
ba/baeur02.h
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#define F02_LIT 101
|
||||||
|
#define F02_LIT_DESC 102
|
||||||
|
#define F02_EUR 103
|
||||||
|
#define F02_EUR_DESC 104
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
69
ba/baeur02.uml
Executable file
69
ba/baeur02.uml
Executable file
@ -0,0 +1,69 @@
|
|||||||
|
#include "baeur02.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -3 0 3
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -13 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -23 -11 "&Indietro"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -33 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Conversione dati comuni" 0 0 80 18
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 80 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "@bCodici valuta di riferimento"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F02_LIT 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Codice valuta Lire "
|
||||||
|
USE %VAL SELECT (B0!="X")&&STR(R10==1)
|
||||||
|
INPUT CODTAB F02_LIT
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F02_LIT CODTAB
|
||||||
|
OUTPUT F02_LIT_DESC S0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Codice LIRE obbligatorio"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F02_LIT_DESC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 29 2 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F02_EUR 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Codice valuta Euro "
|
||||||
|
USE %VAL SELECT B0="X"
|
||||||
|
INPUT CODTAB F02_EUR
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F02_EUR CODTAB
|
||||||
|
OUTPUT F02_EUR_DESC S0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Codice EURO obbligatorio"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F02_EUR_DESC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 29 3 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
399
ba/baeur03.cpp
Executable file
399
ba/baeur03.cpp
Executable file
@ -0,0 +1,399 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <relation.h>
|
||||||
|
|
||||||
|
#include "baeur.h"
|
||||||
|
#include "baeur30.h"
|
||||||
|
#include "../cg/cglib01.h"
|
||||||
|
#include "../cg/cglib02.h"
|
||||||
|
|
||||||
|
#include <mov.h>
|
||||||
|
#include <pconti.h>
|
||||||
|
#include <rmov.h>
|
||||||
|
#include <saldi.h>
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
struct TChiusura_data
|
||||||
|
{
|
||||||
|
TDate _data_c, _data_a;
|
||||||
|
int _anno_c, _anno_a;
|
||||||
|
TString4 _caus_c, _caus_a;
|
||||||
|
TCG_movs _movs;
|
||||||
|
real _totale_saldo;
|
||||||
|
TBill _proper, _bilchi, _bilape, _pereco, _utieco, _perpat, _utipat, _difarr;
|
||||||
|
};
|
||||||
|
|
||||||
|
class TEuro03_app : public TEuro_app
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool create();
|
||||||
|
virtual void main_loop();
|
||||||
|
|
||||||
|
public:
|
||||||
|
void scan_saldi(int indbil, record_handler rh, void* jolly);
|
||||||
|
void salva_movimento_lit(const real& imp, const TBill& c1, const TBill& c2, TChiusura_data& data);
|
||||||
|
void salva_movimento_eur(const real& imp, const TBill& c1, const TBill& c2,
|
||||||
|
TChiusura_data& data, const TString& desc);
|
||||||
|
|
||||||
|
void chiusura_costi(TChiusura_data& data);
|
||||||
|
void chiusura_ricavi(TChiusura_data& data);
|
||||||
|
void chiusura_conto_economico(TChiusura_data& data);
|
||||||
|
|
||||||
|
void chiusura_attivita(TChiusura_data& data);
|
||||||
|
void chiusura_passivita(TChiusura_data& data);
|
||||||
|
void chiusura_conti_ordine(TChiusura_data& data);
|
||||||
|
void chiusura_conto_patrimoniale(TChiusura_data& data);
|
||||||
|
|
||||||
|
TImporto apertura_attivita(TChiusura_data& data);
|
||||||
|
TImporto apertura_passivita(TChiusura_data& data);
|
||||||
|
void apertura_conti_ordine(TChiusura_data& data);
|
||||||
|
};
|
||||||
|
|
||||||
|
inline TEuro03_app& app() { return (TEuro03_app&)main_app(); }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main mask
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro30_mask : public TAutomask
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
virtual void on_firm_change();
|
||||||
|
TEuro30_mask() : TAutomask("baeur30") { }
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TEuro30_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro30_mask::on_firm_change()
|
||||||
|
{
|
||||||
|
TDate apertura(1,1,2002);
|
||||||
|
TDate chiusura(31,12,2001);
|
||||||
|
|
||||||
|
const long firm = app().get_firm();
|
||||||
|
TFilename dati, datie;
|
||||||
|
app().get_aree_dati(dati, datie);
|
||||||
|
|
||||||
|
TString8 ditta;
|
||||||
|
ditta.format("%05ldA", firm);
|
||||||
|
|
||||||
|
TFilename inie = datie;
|
||||||
|
inie.add(ditta);
|
||||||
|
inie.add("prassid.ini");
|
||||||
|
|
||||||
|
bool adotta = FALSE, inizio = FALSE;
|
||||||
|
if (inie.exist())
|
||||||
|
{
|
||||||
|
adotta = app().data_adozione_euro(firm, apertura, inizio);
|
||||||
|
|
||||||
|
set(F30_DATI, dati);
|
||||||
|
set(F30_DATIE, datie);
|
||||||
|
|
||||||
|
set(F30_DATA_A, apertura);
|
||||||
|
set(F30_ANNO_A, apertura.year());
|
||||||
|
|
||||||
|
chiusura = apertura; --chiusura;
|
||||||
|
set(F30_DATA_C, chiusura);
|
||||||
|
set(F30_ANNO_C, chiusura.year());
|
||||||
|
if (!adotta || !inizio)
|
||||||
|
{
|
||||||
|
disable(DLG_OK);
|
||||||
|
error_box("Non è possibile utilizzare questa procedura:\n"
|
||||||
|
"la ditta %ld non adotta l'Euro da inizio esercizio", firm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
enable(DLG_OK);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
disable(DLG_OK);
|
||||||
|
error_box("Non è possibile utilizzare questa procedura:\n"
|
||||||
|
"la ditta %ld non esiste nello studio in Euro.", firm);
|
||||||
|
}
|
||||||
|
|
||||||
|
TBill arrotino;
|
||||||
|
if (app().load_round_bill(arrotino))
|
||||||
|
arrotino.set(*this, F30_DIFARR_G, F30_DIFARR_C, F30_DIFARR_S);
|
||||||
|
|
||||||
|
TFilename ini = dati;
|
||||||
|
ini.add(ditta);
|
||||||
|
ini.add("prassid.ini");
|
||||||
|
if (ini.exist())
|
||||||
|
{
|
||||||
|
TConfig prassid(ini, "cg");
|
||||||
|
set(F30_CAUS_C, prassid.get("CoCaCh"), TRUE);
|
||||||
|
set(F30_CAUS_A, prassid.get("CoCaAp"), TRUE);
|
||||||
|
|
||||||
|
set(F30_BILCHI_G, prassid.get("CsBiChG"));
|
||||||
|
set(F30_BILCHI_C, prassid.get("CsBiChC"));
|
||||||
|
set(F30_BILCHI_S, prassid.get("CsBiChS"), TRUE);
|
||||||
|
set(F30_PROPER_G, prassid.get("CsPrPeG"));
|
||||||
|
set(F30_PROPER_C, prassid.get("CsPrPeC"));
|
||||||
|
set(F30_PROPER_S, prassid.get("CsPrPeS"), TRUE);
|
||||||
|
set(F30_BILAPE_G, prassid.get("CsBiApG"));
|
||||||
|
set(F30_BILAPE_C, prassid.get("CsBiApC"));
|
||||||
|
set(F30_BILAPE_S, prassid.get("CsBiApS"), TRUE);
|
||||||
|
set(F30_UTIPAT_G, prassid.get("CsUeCpG"));
|
||||||
|
set(F30_UTIPAT_C, prassid.get("CsUeCpC"));
|
||||||
|
set(F30_UTIPAT_S, prassid.get("CsUeCpS"), TRUE);
|
||||||
|
set(F30_PERPAT_G, prassid.get("CsPeCpG"));
|
||||||
|
set(F30_PERPAT_C, prassid.get("CsPeCpC"));
|
||||||
|
set(F30_PERPAT_S, prassid.get("CsPeCpS"), TRUE);
|
||||||
|
set(F30_UTIECO_G, prassid.get("CsUeCeG"));
|
||||||
|
set(F30_UTIECO_C, prassid.get("CsUeCeC"));
|
||||||
|
set(F30_UTIECO_S, prassid.get("CsUeCeS"), TRUE);
|
||||||
|
set(F30_PERECO_G, prassid.get("CsPeCeG"));
|
||||||
|
set(F30_PERECO_C, prassid.get("CsPeCeC"));
|
||||||
|
set(F30_PERECO_S, prassid.get("CsPeCeS"), TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool TEuro03_app::create()
|
||||||
|
{
|
||||||
|
set_firm();
|
||||||
|
bool ok = goto_lire(get_firm());
|
||||||
|
if (ok)
|
||||||
|
ok = TSkeleton_application::create();
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro03_app::scan_saldi(int indbil, record_handler rh, void* jolly)
|
||||||
|
{
|
||||||
|
const TChiusura_data& data = *(TChiusura_data*)jolly;
|
||||||
|
|
||||||
|
TRelation rel(LF_SALDI);
|
||||||
|
TRectype& rec = rel.curr();
|
||||||
|
rec.put(SLD_ANNOES, data._anno_c);
|
||||||
|
TCursor cur(&rel, "", 1, &rec, &rec);
|
||||||
|
|
||||||
|
const long items = cur.items();
|
||||||
|
cur.freeze();
|
||||||
|
|
||||||
|
TString caption;
|
||||||
|
caption << "Scansione saldi dell'anno " << data._anno_c
|
||||||
|
<< " con indicatore di bilancio " << indbil;
|
||||||
|
TProgind pi(items, caption, FALSE, TRUE);
|
||||||
|
for (cur = 0L; cur.pos() < items; ++cur)
|
||||||
|
{
|
||||||
|
pi.addstatus(1);
|
||||||
|
const int g = rec.get_int(SLD_GRUPPO);
|
||||||
|
const int c = rec.get_int(SLD_CONTO);
|
||||||
|
if (g > 0 && c > 0) // Should be pleonastic, but it's not!
|
||||||
|
{
|
||||||
|
if (indbil > 0)
|
||||||
|
{
|
||||||
|
const int i = data._movs.indbil(g, c);
|
||||||
|
if (indbil != i)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
rh(rec, jolly);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Ricavi
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
HIDDEN bool saldi_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TChiusura_data& data = *(TChiusura_data*)jolly;
|
||||||
|
|
||||||
|
const int g = rec.get_int(SLD_GRUPPO);
|
||||||
|
const int c = rec.get_int(SLD_CONTO);
|
||||||
|
const long s = rec.get_long(SLD_SOTTOCONTO);
|
||||||
|
const int indbil = data._movs.indbil(g, c);
|
||||||
|
|
||||||
|
TSaldo sld;
|
||||||
|
sld.ultima_immissione_bilancio(data._anno_c, g, c, s, indbil, 1);
|
||||||
|
real saldo = sld.saldo();
|
||||||
|
|
||||||
|
if (saldo != ZERO)
|
||||||
|
{
|
||||||
|
if (indbil != 5) // La somma dei conti d'ordine è sempre ZERO
|
||||||
|
data._totale_saldo += saldo;
|
||||||
|
|
||||||
|
char sez = 'A';
|
||||||
|
if (saldo < ZERO)
|
||||||
|
{
|
||||||
|
sez = 'D';
|
||||||
|
saldo = -saldo;
|
||||||
|
}
|
||||||
|
data._movs.mov(indbil).add(g, c, s, sez, saldo);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro03_app::chiusura_costi(TChiusura_data& data)
|
||||||
|
{
|
||||||
|
scan_saldi(3, saldi_handler, &data);
|
||||||
|
data._movs.mov(3).save(data._data_c, data._caus_c, EMPTY_STRING,
|
||||||
|
data._proper, FALSE, FALSE, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro03_app::chiusura_ricavi(TChiusura_data& data)
|
||||||
|
{
|
||||||
|
scan_saldi(4, saldi_handler, &data);
|
||||||
|
data._movs.mov(4).save(data._data_c, data._caus_c, EMPTY_STRING,
|
||||||
|
data._proper, FALSE, FALSE, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro03_app::salva_movimento_lit(const real& imp, const TBill& c1, const TBill& c2, TChiusura_data& data)
|
||||||
|
{
|
||||||
|
TImporto i1('D', imp); i1.normalize();
|
||||||
|
TCG_mov mov;
|
||||||
|
mov.add(c1, i1);
|
||||||
|
mov.save(data._data_c, data._caus_c, EMPTY_STRING, c2, FALSE, FALSE, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro03_app::chiusura_conto_economico(TChiusura_data& data)
|
||||||
|
{
|
||||||
|
if (data._totale_saldo > 0)
|
||||||
|
{
|
||||||
|
salva_movimento_lit(data._totale_saldo, data._pereco, data._proper, data);
|
||||||
|
salva_movimento_lit(data._totale_saldo, data._perpat, data._pereco, data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
salva_movimento_lit(data._totale_saldo, data._utieco, data._proper, data);
|
||||||
|
salva_movimento_lit(data._totale_saldo, data._utipat, data._utieco, data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro03_app::chiusura_attivita(TChiusura_data& data)
|
||||||
|
{
|
||||||
|
scan_saldi(1, saldi_handler, &data);
|
||||||
|
const TString desc = "Chiusura attività";
|
||||||
|
data._movs.mov(1).save(data._data_c, data._caus_c, desc,
|
||||||
|
data._bilchi, FALSE, FALSE, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro03_app::chiusura_passivita(TChiusura_data& data)
|
||||||
|
{
|
||||||
|
scan_saldi(2, saldi_handler, &data);
|
||||||
|
const TString desc = "Chiusura passività";
|
||||||
|
data._movs.mov(2).save(data._data_c, data._caus_c, desc,
|
||||||
|
data._bilchi, FALSE, FALSE, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro03_app::chiusura_conti_ordine(TChiusura_data& data)
|
||||||
|
{
|
||||||
|
scan_saldi(5, saldi_handler, &data);
|
||||||
|
data._movs.mov(5).save(data._data_c, data._caus_c, EMPTY_STRING,
|
||||||
|
data._bilchi, FALSE, FALSE, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro03_app::chiusura_conto_patrimoniale(TChiusura_data& data)
|
||||||
|
{
|
||||||
|
if (data._totale_saldo > 0)
|
||||||
|
{
|
||||||
|
salva_movimento_lit(data._totale_saldo, data._utipat, data._bilchi, data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
salva_movimento_lit(data._totale_saldo, data._perpat, data._bilchi, data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro03_app::salva_movimento_eur(const real& imp, const TBill& c1, const TBill& c2,
|
||||||
|
TChiusura_data& data, const TString& desc)
|
||||||
|
{
|
||||||
|
TImporto i1('D', imp); i1.normalize();
|
||||||
|
TCG_mov mov;
|
||||||
|
mov.add(c1, i1);
|
||||||
|
mov.save(data._data_a, data._caus_a, desc, c2, TRUE, FALSE, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
TImporto TEuro03_app::apertura_attivita(TChiusura_data& data)
|
||||||
|
{
|
||||||
|
const TString desc = "Apertura attività";
|
||||||
|
return data._movs.mov(1).save(data._data_a, data._caus_a, desc,
|
||||||
|
data._bilape, TRUE, TRUE, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
TImporto TEuro03_app::apertura_passivita(TChiusura_data& data)
|
||||||
|
{
|
||||||
|
const TString desc = "Apertura passività";
|
||||||
|
return data._movs.mov(2).save(data._data_a, data._caus_a, desc,
|
||||||
|
data._bilape, TRUE, TRUE, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro03_app::apertura_conti_ordine(TChiusura_data& data)
|
||||||
|
{
|
||||||
|
const TString desc = "Apertura conti d'ordine";
|
||||||
|
data._movs.mov(5).save(data._data_a, data._caus_a, desc,
|
||||||
|
data._difarr, TRUE, TRUE, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void TEuro03_app::main_loop()
|
||||||
|
{
|
||||||
|
TEuro30_mask msk;
|
||||||
|
msk.on_firm_change();
|
||||||
|
if (msk.run() == K_ENTER)
|
||||||
|
{
|
||||||
|
TChiusura_data data;
|
||||||
|
|
||||||
|
data._caus_c = msk.get(F30_CAUS_C);
|
||||||
|
data._data_c = msk.get(F30_DATA_C);
|
||||||
|
data._anno_c = msk.get_int(F30_ANNO_C);
|
||||||
|
|
||||||
|
data._caus_a = msk.get(F30_CAUS_A);
|
||||||
|
data._data_a = msk.get(F30_DATA_A);
|
||||||
|
data._anno_a = msk.get_int(F30_ANNO_A);
|
||||||
|
|
||||||
|
data._bilchi.get(msk, F30_BILCHI_G, F30_BILCHI_C, F30_BILCHI_S);
|
||||||
|
data._proper.get(msk, F30_PROPER_G, F30_PROPER_C, F30_PROPER_S);
|
||||||
|
data._bilape.get(msk, F30_BILAPE_G, F30_BILAPE_C, F30_BILAPE_S);
|
||||||
|
data._utipat.get(msk, F30_UTIPAT_G, F30_UTIPAT_C, F30_UTIPAT_S);
|
||||||
|
data._utieco.get(msk, F30_UTIECO_G, F30_UTIECO_C, F30_UTIECO_S);
|
||||||
|
data._pereco.get(msk, F30_PERECO_G, F30_PERECO_C, F30_PERECO_S);
|
||||||
|
data._difarr.get(msk, F30_DIFARR_G, F30_DIFARR_C, F30_DIFARR_S);
|
||||||
|
save_round_bill(data._difarr);
|
||||||
|
|
||||||
|
data._totale_saldo = ZERO;
|
||||||
|
chiusura_costi(data);
|
||||||
|
chiusura_ricavi(data);
|
||||||
|
chiusura_conto_economico(data);
|
||||||
|
|
||||||
|
data._totale_saldo = ZERO;
|
||||||
|
chiusura_attivita(data);
|
||||||
|
chiusura_passivita(data);
|
||||||
|
chiusura_conti_ordine(data);
|
||||||
|
|
||||||
|
TImporto bilancio;
|
||||||
|
bilancio += apertura_attivita(data);
|
||||||
|
bilancio += apertura_passivita(data);
|
||||||
|
apertura_conti_ordine(data); // La cui somma DEVE essere a ZERO (Per non devo sommarla)
|
||||||
|
|
||||||
|
// Apertura capitale netto
|
||||||
|
if (!bilancio.is_zero())
|
||||||
|
{
|
||||||
|
const TString desc = "Apertura capitale netto";
|
||||||
|
bilancio.normalize('D');
|
||||||
|
salva_movimento_eur(bilancio.valore(), data._bilape, data._difarr, data, desc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int baeur03(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TEuro03_app ma;
|
||||||
|
ma.run(argc, argv, "Chiusura/Apertura conti in Euro");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
309
ba/baeur04.cpp
Executable file
309
ba/baeur04.cpp
Executable file
@ -0,0 +1,309 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <execp.h>
|
||||||
|
#include <relation.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
|
||||||
|
#include "baeur.h"
|
||||||
|
#include "baeur40.h"
|
||||||
|
#include "../ve/velib.h"
|
||||||
|
|
||||||
|
#include <doc.h>
|
||||||
|
#include <rdoc.h>
|
||||||
|
|
||||||
|
class TEuro40_mask;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro04_app : public TEuro_app
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool create();
|
||||||
|
virtual void main_loop();
|
||||||
|
void copy_docs(TEuro40_mask & mask);
|
||||||
|
|
||||||
|
public:
|
||||||
|
};
|
||||||
|
|
||||||
|
inline TEuro04_app& app() { return (TEuro04_app&)main_app(); }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main mask
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro40_mask : public TAutomask
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
TEuro40_mask() : TAutomask("baeur40") { }
|
||||||
|
void load_mask();
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TEuro40_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro40_mask::load_mask()
|
||||||
|
{
|
||||||
|
TTable num("%NUM");
|
||||||
|
TSheet_field & s = (TSheet_field &) field(F40_DOCSHEET);
|
||||||
|
|
||||||
|
for (num.first(); num.good(); num.next())
|
||||||
|
{
|
||||||
|
TToken_string & row = s.row(-1);
|
||||||
|
row.add("");
|
||||||
|
row.add("");
|
||||||
|
row.add(num.get("CODTAB"));
|
||||||
|
row.add("");
|
||||||
|
row.add("");
|
||||||
|
row.add("");
|
||||||
|
row.add(num.get("S0"));
|
||||||
|
s.check_row(s.items() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
TSheet_field & t = (TSheet_field &) field(F40_TIPISHEET);
|
||||||
|
TTable tip("%TRI");
|
||||||
|
|
||||||
|
for (tip.first(); tip.good(); tip.next())
|
||||||
|
{
|
||||||
|
const TString16 tipo(tip.get("CODTAB"));
|
||||||
|
if (*tipo >= 'A')
|
||||||
|
{
|
||||||
|
TToken_string & row = t.row(-1);
|
||||||
|
|
||||||
|
row.add("");
|
||||||
|
row.add(tipo);
|
||||||
|
row.add(tip.get("S0"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TNum_data : public TObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int _anno;
|
||||||
|
int _da_stato;
|
||||||
|
int _a_stato;
|
||||||
|
bool _repeat;
|
||||||
|
TAssoc_array _extra_tipi_riga;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
bool TEuro04_app::create()
|
||||||
|
{
|
||||||
|
bool ok = goto_lire(get_firm());
|
||||||
|
open_files(LF_DOC, LF_RIGHEDOC, LF_CONDV, LF_RCONDV, LF_ANAMAG, LF_SCONTI, LF_UMART,
|
||||||
|
LF_TAB, LF_TABCOM, LF_CLIFO, LF_CFVEN, LF_INDSP, LF_OCCAS, LF_PCON,
|
||||||
|
LF_MOVMAG, LF_RMOVMAG, LF_MAG, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, 0);
|
||||||
|
if (ok)
|
||||||
|
ok = TSkeleton_application::create();
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool doc_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TAssoc_array * num = (TAssoc_array *) jolly;
|
||||||
|
TNum_data * data = (TNum_data *) num->objptr(rec.get(DOC_CODNUM));
|
||||||
|
|
||||||
|
if (data != NULL)
|
||||||
|
{
|
||||||
|
if (data->_anno <= rec.get_int(DOC_ANNO))
|
||||||
|
{
|
||||||
|
const int stato = rec.get_int(DOC_STATO);
|
||||||
|
if (data->_da_stato <= stato && (data->_a_stato == 0 || stato <= data->_a_stato))
|
||||||
|
{
|
||||||
|
const TString tipodoc(rec.get(DOC_TIPODOC));
|
||||||
|
TTipo_documento t(cache().get("%TIP", tipodoc));
|
||||||
|
|
||||||
|
if ((!t.is_ordine() || riporta_ordinato()) && !data->_repeat)
|
||||||
|
rec.put(DOC_STATO, (char) t.stato_bloccato());
|
||||||
|
|
||||||
|
const TString16 val = rec.get("CODVAL");
|
||||||
|
|
||||||
|
if (is_firm_value(val))
|
||||||
|
{
|
||||||
|
rec.zero(DOC_CODVAL);
|
||||||
|
rec.zero(DOC_CAMBIO);
|
||||||
|
rec.put(DOC_CONTROEURO, "X");
|
||||||
|
real imp = rec.get_real(DOC_IMPPAGATO) / EURO;
|
||||||
|
|
||||||
|
imp.round(2);
|
||||||
|
rec.put(DOC_IMPPAGATO, imp);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (is_euro_value(val))
|
||||||
|
{
|
||||||
|
rec.zero(DOC_CODVAL);
|
||||||
|
rec.zero(DOC_CAMBIO);
|
||||||
|
rec.zero(DOC_CONTROEURO);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (!rec.get_bool(DOC_CONTROEURO))
|
||||||
|
{
|
||||||
|
real contro_change = EURO / rec.get_real(DOC_CAMBIO);
|
||||||
|
|
||||||
|
contro_change.round(6);
|
||||||
|
rec.put(DOC_CAMBIO, contro_change);
|
||||||
|
rec.put(DOC_CONTROEURO, "X");
|
||||||
|
}
|
||||||
|
|
||||||
|
const TString16 key(rec.get(DOC_MOVMAG));
|
||||||
|
if (key.not_empty())
|
||||||
|
{
|
||||||
|
const TRectype & mov = cache().get(LF_MOVMAG, key);
|
||||||
|
if (mov.empty())
|
||||||
|
rec.zero(DOC_MOVMAG);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool rdoc_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TString key;
|
||||||
|
key << rec.get(RDOC_PROVV);
|
||||||
|
key << "|" << rec.get(RDOC_ANNO);
|
||||||
|
key << "|" << rec.get(RDOC_CODNUM);
|
||||||
|
key << "|" << rec.get(RDOC_NDOC);
|
||||||
|
TRectype & doc = (TRectype &) cache().get(LF_DOC, key);
|
||||||
|
bool ok = doc_handler(doc, jolly);
|
||||||
|
|
||||||
|
if (doc.get(DOC_MOVMAG).empty())
|
||||||
|
rec.zero(RDOC_MOVMAG);
|
||||||
|
if (doc.get(DOC_CODVAL).empty() && doc.get_bool(DOC_CONTROEURO))
|
||||||
|
{
|
||||||
|
const TString16 tipo(rec.get(RDOC_TIPORIGA));
|
||||||
|
|
||||||
|
|
||||||
|
if (tipo != "04" && tipo != "05" && tipo != "08")
|
||||||
|
{
|
||||||
|
real prezzo = rec.get_real(RDOC_PREZZO) / EURO;
|
||||||
|
bool is_prezzo = tipo != "07";
|
||||||
|
bool convert = TRUE;
|
||||||
|
const int tipoint = atoi(tipo);
|
||||||
|
if (*tipo >= 'A')
|
||||||
|
{
|
||||||
|
TAssoc_array * num = (TAssoc_array *) jolly;
|
||||||
|
TNum_data * data = (TNum_data *) num->objptr(rec.get(RDOC_CODNUM));
|
||||||
|
TString * tpc = (TString *)data->_extra_tipi_riga.objptr(tipo);
|
||||||
|
if (tpc != NULL)
|
||||||
|
{
|
||||||
|
if (*tpc == "N")
|
||||||
|
convert = FALSE;
|
||||||
|
else
|
||||||
|
is_prezzo = *tpc == " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (tipo == "02" || tipo == "03" || tipo == "06")
|
||||||
|
{
|
||||||
|
TString cod(rec.get(RDOC_CODART));
|
||||||
|
TSpesa_prest s(cod, tipo == "06" ? 'P' : 'S');
|
||||||
|
is_prezzo = s.tipo() == 'Q';
|
||||||
|
convert = s.tipo() != 'P';
|
||||||
|
}
|
||||||
|
if (convert)
|
||||||
|
{
|
||||||
|
prezzo.round(TCurrency::get_euro_dec(is_prezzo));
|
||||||
|
rec.put(RDOC_PREZZO, prezzo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
real impfisso = rec.get_real(RDOC_IMPFISSO) / EURO;
|
||||||
|
|
||||||
|
impfisso.round(TCurrency::get_euro_dec());
|
||||||
|
rec.put(RDOC_IMPFISSO, impfisso);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro04_app::copy_docs(TEuro40_mask & mask)
|
||||||
|
{
|
||||||
|
TSheet_field & t = (TSheet_field &) mask.field(F40_TIPISHEET);
|
||||||
|
int items = t.items();
|
||||||
|
TAssoc_array extra_tipi;
|
||||||
|
|
||||||
|
for (int i = 0; i < items; i++)
|
||||||
|
{
|
||||||
|
TToken_string & row = t.row(i);
|
||||||
|
TString val(row.get(0));
|
||||||
|
extra_tipi.add(row.get(), val);
|
||||||
|
}
|
||||||
|
|
||||||
|
TSheet_field & s = (TSheet_field &) mask.field(F40_DOCSHEET);
|
||||||
|
items = s.items();
|
||||||
|
TAssoc_array docs2convert;
|
||||||
|
|
||||||
|
for (i = 0; i < items; i++)
|
||||||
|
{
|
||||||
|
TToken_string & row = s.row(i);
|
||||||
|
TString selected(row.get(0));
|
||||||
|
|
||||||
|
if (selected == "X")
|
||||||
|
{
|
||||||
|
TNum_data * d = new TNum_data;
|
||||||
|
|
||||||
|
d->_anno = row.get_int();
|
||||||
|
TString16 codnum(row.get());
|
||||||
|
d->_da_stato = row.get_int();
|
||||||
|
d->_a_stato = row.get_int();
|
||||||
|
d->_repeat = *row.get() == 'X';
|
||||||
|
d->_extra_tipi_riga = extra_tipi;
|
||||||
|
docs2convert.add(codnum, d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
convert_file(LF_DOC, "", "", doc_handler, &docs2convert);
|
||||||
|
convert_file(LF_RIGHEDOC, "", "", rdoc_handler, &docs2convert);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro04_app::main_loop()
|
||||||
|
{
|
||||||
|
TEuro40_mask msk;
|
||||||
|
TDate apertura(1,1,2002);
|
||||||
|
TDate chiusura(31,12,2001);
|
||||||
|
const long firm = get_firm();
|
||||||
|
TFilename dati, datie;
|
||||||
|
get_aree_dati(dati, datie);
|
||||||
|
msk.set(F40_DATI, dati);
|
||||||
|
msk.set(F40_DATIE, datie);
|
||||||
|
|
||||||
|
TString8 ditta;
|
||||||
|
ditta.format("%05ldA", firm);
|
||||||
|
|
||||||
|
TFilename inie = datie;
|
||||||
|
inie.add(ditta);
|
||||||
|
inie.add("prassid.ini");
|
||||||
|
|
||||||
|
bool adotta = FALSE, inizio = FALSE;
|
||||||
|
if (inie.exist())
|
||||||
|
adotta = data_adozione_euro(firm, apertura, inizio);
|
||||||
|
|
||||||
|
msk.load_mask();
|
||||||
|
if (msk.run() == K_ENTER)
|
||||||
|
{
|
||||||
|
copy_docs(msk);
|
||||||
|
TExternal_app app("baeur -6 D");
|
||||||
|
|
||||||
|
app.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int baeur04(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TEuro04_app ma;
|
||||||
|
ma.run(argc, argv, "Conversione documenti");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
163
ba/baeur05.cpp
Executable file
163
ba/baeur05.cpp
Executable file
@ -0,0 +1,163 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <execp.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <relation.h>
|
||||||
|
|
||||||
|
#include "baeur.h"
|
||||||
|
#include "../mg/mglib.h"
|
||||||
|
#include "../cg/cglib01.h"
|
||||||
|
|
||||||
|
#include <doc.h>
|
||||||
|
#include <rdoc.h>
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro05_app : public TEuro_app
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool create();
|
||||||
|
virtual void main_loop();
|
||||||
|
void convert_last_mag_eser(int eser);
|
||||||
|
void convert_last_sto_eser(int eser);
|
||||||
|
|
||||||
|
public:
|
||||||
|
};
|
||||||
|
|
||||||
|
inline TEuro05_app& app() { return (TEuro05_app&)main_app(); }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool TEuro05_app::create()
|
||||||
|
{
|
||||||
|
bool ok = goto_lire(get_firm());
|
||||||
|
if (ok)
|
||||||
|
ok = TSkeleton_application::create();
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro05_app::convert_last_mag_eser(int eser)
|
||||||
|
{
|
||||||
|
// Cursore su file in lire
|
||||||
|
TRelation rel(LF_MAG);
|
||||||
|
TCursor cur(&rel);
|
||||||
|
TRectype& curr = rel.curr();
|
||||||
|
|
||||||
|
curr.put("ANNOES", eser);
|
||||||
|
|
||||||
|
cur.setregion(curr, curr);
|
||||||
|
|
||||||
|
// zap_file(lf, TRUE); // Azzera file in euro
|
||||||
|
|
||||||
|
// File destinazione in euro
|
||||||
|
TEuroisamfile fileur(LF_MAG, TRUE);
|
||||||
|
TRectype& receur = fileur.curr();
|
||||||
|
|
||||||
|
receur.put("ANNOES", eser);
|
||||||
|
|
||||||
|
for (fileur.read(_isgteq); fileur.good() && eser == fileur.get_int("ANNOES"); fileur.next())
|
||||||
|
fileur.remove();
|
||||||
|
|
||||||
|
TString str;
|
||||||
|
str << "Conversione " << rel.lfile().description() << " anno " << eser << " ... ";
|
||||||
|
|
||||||
|
|
||||||
|
const long items = cur.items();
|
||||||
|
cur.freeze();
|
||||||
|
TProgind pi(items, str, FALSE, TRUE);
|
||||||
|
TString fields;
|
||||||
|
|
||||||
|
fields << "VALRIM|VALACQ|VALENT|VALVEN|VALUSC|VALORDF|VALORDF|SCARTI|VALSCARTI|";
|
||||||
|
fields << "USERVAL1|USERVAL2|USERVAL3|USERVAL4|USERVAL5|USERVAL6";
|
||||||
|
|
||||||
|
for (cur = 0L; cur.pos() < items; ++cur)
|
||||||
|
{
|
||||||
|
pi.addstatus(1);
|
||||||
|
receur = curr;
|
||||||
|
convert_import(receur, fields);
|
||||||
|
fileur.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro05_app::convert_last_sto_eser(int eser)
|
||||||
|
{
|
||||||
|
// Cursore su file in lire
|
||||||
|
TRelation rel(LF_STOMAG);
|
||||||
|
TCursor cur(&rel);
|
||||||
|
TRectype& curr = rel.curr();
|
||||||
|
|
||||||
|
curr.put("ANNOESRIF", eser);
|
||||||
|
|
||||||
|
cur.setregion(curr, curr);
|
||||||
|
|
||||||
|
// zap_file(lf, TRUE); // Azzera file in euro
|
||||||
|
|
||||||
|
// File destinazione in euro
|
||||||
|
TEuroisamfile fileur(LF_STOMAG, TRUE);
|
||||||
|
TRectype& receur = fileur.curr();
|
||||||
|
|
||||||
|
receur.put("ANNOESRIF", eser);
|
||||||
|
|
||||||
|
for (fileur.read(_isgteq); fileur.good() && eser == fileur.get_int("ANNOESRIF"); fileur.next())
|
||||||
|
fileur.remove();
|
||||||
|
|
||||||
|
TString str;
|
||||||
|
str << "Conversione " << rel.lfile().description() << " anno " << eser << " ... ";
|
||||||
|
|
||||||
|
|
||||||
|
const long items = cur.items();
|
||||||
|
cur.freeze();
|
||||||
|
TProgind pi(items, str, FALSE, TRUE);
|
||||||
|
const TString fields("VALORE|ULTCOS1|COSTSTD|COSTOMEDIO|PRZLIST");
|
||||||
|
|
||||||
|
for (cur = 0L; cur.pos() < items; ++cur)
|
||||||
|
{
|
||||||
|
pi.addstatus(1);
|
||||||
|
receur = curr;
|
||||||
|
convert_import(receur, fields);
|
||||||
|
fileur.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro05_app::main_loop()
|
||||||
|
{
|
||||||
|
TDate apertura(1,1,2002);
|
||||||
|
const long firm = get_firm();
|
||||||
|
TFilename dati, datie;
|
||||||
|
get_aree_dati(dati, datie);
|
||||||
|
|
||||||
|
TString8 ditta;
|
||||||
|
ditta.format("%05ldA", firm);
|
||||||
|
|
||||||
|
TFilename inie = datie;
|
||||||
|
inie.add(ditta);
|
||||||
|
inie.add("prassid.ini");
|
||||||
|
|
||||||
|
bool adotta = FALSE, inizio = FALSE;
|
||||||
|
if (inie.exist())
|
||||||
|
adotta = data_adozione_euro(firm, apertura, inizio);
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
|
||||||
|
const int annoes = esc.date2prevesc(apertura);
|
||||||
|
|
||||||
|
convert_last_mag_eser(annoes);
|
||||||
|
convert_last_sto_eser(annoes);
|
||||||
|
|
||||||
|
{
|
||||||
|
TExternal_app app("baeur -6 A");
|
||||||
|
|
||||||
|
app.run(FALSE, 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int baeur05(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TEuro05_app ma;
|
||||||
|
ma.run(argc, argv, "Apertura magazzino");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
245
ba/baeur06.cpp
Executable file
245
ba/baeur06.cpp
Executable file
@ -0,0 +1,245 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <execp.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <relation.h>
|
||||||
|
|
||||||
|
#include "baeur.h"
|
||||||
|
#include "../mg/mglib.h"
|
||||||
|
#include "../cg/cglib01.h"
|
||||||
|
#include "../ve/velib.h"
|
||||||
|
|
||||||
|
#include <doc.h>
|
||||||
|
#include <rdoc.h>
|
||||||
|
|
||||||
|
class TArticolo_euro : public TArticolo_giacenza
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool adjust_storico(const int anno);
|
||||||
|
|
||||||
|
TArticolo_euro(const char* codice = NULL) : TArticolo_giacenza(codice) {}
|
||||||
|
TArticolo_euro(const TRectype& rec) : TArticolo_giacenza(rec) {}
|
||||||
|
virtual ~TArticolo_euro() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TArticolo_euro::adjust_storico(const int anno)
|
||||||
|
|
||||||
|
{
|
||||||
|
bool updated = FALSE;
|
||||||
|
TAssoc_array values;
|
||||||
|
TString16 annoes; annoes << anno;
|
||||||
|
TRecord_array & s = storico(annoes);
|
||||||
|
const int sto_items = s.rows();
|
||||||
|
|
||||||
|
for (int i = 1; i <= sto_items; i++)
|
||||||
|
{
|
||||||
|
TRectype & rec = s[i];
|
||||||
|
TString16 codmag(rec.get(STOMAG_CODMAG));
|
||||||
|
real val = rec.get_real(STOMAG_VALORE);
|
||||||
|
val *= rec.get_real(STOMAG_QUANT);
|
||||||
|
real * tot = (real *)values.objptr(codmag);
|
||||||
|
|
||||||
|
if (tot == NULL)
|
||||||
|
{
|
||||||
|
tot = new real;
|
||||||
|
values.add(codmag, tot);
|
||||||
|
}
|
||||||
|
*tot += val;
|
||||||
|
}
|
||||||
|
|
||||||
|
TRecord_array & m = mag(annoes);
|
||||||
|
const int mag_items = m.rows();
|
||||||
|
|
||||||
|
for (i = 1; i <= mag_items; i++)
|
||||||
|
{
|
||||||
|
TRectype & rec = m[i];
|
||||||
|
TString16 codmag(rec.get(MAG_CODMAG));
|
||||||
|
const real val = rec.get_real(MAG_VALRIM);
|
||||||
|
real * tot = (real *)values.objptr(codmag);
|
||||||
|
|
||||||
|
if (tot == NULL)
|
||||||
|
{
|
||||||
|
tot = new real;
|
||||||
|
values.add(codmag, tot);
|
||||||
|
}
|
||||||
|
*tot -= val;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 1; i <= sto_items; i++)
|
||||||
|
{
|
||||||
|
TRectype & rec = s[i];
|
||||||
|
TString16 codmag(rec.get(STOMAG_CODMAG));
|
||||||
|
real val = rec.get_real(STOMAG_VALORE);
|
||||||
|
real qta = rec.get_real(STOMAG_QUANT);
|
||||||
|
val *= qta;
|
||||||
|
real * corr = (real *)values.objptr(codmag);
|
||||||
|
|
||||||
|
if (corr != NULL & *corr != ZERO)
|
||||||
|
{
|
||||||
|
corr->round(TCurrency::get_firm_dec(FALSE));
|
||||||
|
val -= *corr;
|
||||||
|
val /= qta;
|
||||||
|
val.round(TCurrency::get_firm_dec(TRUE));
|
||||||
|
rec.put(STOMAG_VALORE, val);
|
||||||
|
updated = TRUE;
|
||||||
|
*corr = ZERO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return updated;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro06_app : public TEuro_app
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool create();
|
||||||
|
virtual bool destroy();
|
||||||
|
virtual void main_loop();
|
||||||
|
void update_stomag();
|
||||||
|
|
||||||
|
public:
|
||||||
|
};
|
||||||
|
|
||||||
|
inline TEuro06_app& app() { return (TEuro06_app&)main_app(); }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool TEuro06_app::create()
|
||||||
|
{
|
||||||
|
bool ok = goto_euro(get_firm());
|
||||||
|
open_files(LF_STOMAG, LF_DOC, LF_RIGHEDOC, LF_CONDV, LF_RCONDV, LF_ANAMAG, LF_SCONTI, LF_UMART,
|
||||||
|
LF_TAB, LF_TABCOM, LF_CLIFO, LF_CFVEN, LF_INDSP, LF_OCCAS, LF_PCON,
|
||||||
|
LF_MOVMAG, LF_RMOVMAG, LF_MAG, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_ATTIV, LF_CAUSALI, 0);
|
||||||
|
if (ok)
|
||||||
|
ok = TSkeleton_application::create();
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TEuro06_app::destroy()
|
||||||
|
{
|
||||||
|
goto_lire(get_firm());
|
||||||
|
return TSkeleton_application::destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro06_app::update_stomag()
|
||||||
|
{
|
||||||
|
TEsercizi_contabili e;
|
||||||
|
|
||||||
|
TRelation amag(LF_ANAMAG);
|
||||||
|
TCursor c(&amag);
|
||||||
|
TArticolo_euro * a = new TArticolo_euro();
|
||||||
|
TString str;
|
||||||
|
str << "Aggiornamento storico di magazzino ...";
|
||||||
|
|
||||||
|
amag.lfile().set_curr(a);
|
||||||
|
const long items = c.items();
|
||||||
|
TProgind pi(items, str, FALSE, TRUE);
|
||||||
|
|
||||||
|
for (c = 0L; c.pos() < items; ++c)
|
||||||
|
{
|
||||||
|
pi.addstatus(1);
|
||||||
|
TArticolo_euro & curr_art = (TArticolo_euro &) c.curr();
|
||||||
|
|
||||||
|
for (int codes = e.first(); codes > 0; codes = e.next(codes))
|
||||||
|
{
|
||||||
|
if (curr_art.adjust_storico(codes))
|
||||||
|
curr_art.rewrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro06_app::main_loop()
|
||||||
|
{
|
||||||
|
TDate apertura(1,1,2002);
|
||||||
|
const long firm = get_firm();
|
||||||
|
TFilename dati, datie;
|
||||||
|
get_aree_dati(dati, datie);
|
||||||
|
|
||||||
|
TString8 ditta;
|
||||||
|
ditta.format("%05ldA", firm);
|
||||||
|
|
||||||
|
TFilename inie = datie;
|
||||||
|
inie.add(ditta);
|
||||||
|
inie.add("prassid.ini");
|
||||||
|
|
||||||
|
bool adotta = FALSE, inizio = FALSE;
|
||||||
|
if (inie.exist())
|
||||||
|
adotta = data_adozione_euro(firm, apertura, inizio);
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
TString16 command(argv(2));
|
||||||
|
|
||||||
|
if (command == "A")
|
||||||
|
{
|
||||||
|
update_stomag();
|
||||||
|
TExternal_app app("mg1 -3");
|
||||||
|
|
||||||
|
app.run();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (command == "S")
|
||||||
|
{
|
||||||
|
const int annoes = esc.date2esc(apertura);
|
||||||
|
TString16 codes; codes << annoes;
|
||||||
|
|
||||||
|
rebuild_balances(codes);
|
||||||
|
update_stomag();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (command == "D")
|
||||||
|
{
|
||||||
|
TRelation doc(LF_DOC);
|
||||||
|
TCursor c(&doc);
|
||||||
|
TDocumento * d = new TDocumento();
|
||||||
|
|
||||||
|
TString str;
|
||||||
|
str << "Riesamina " << doc.lfile().description() << " ...";
|
||||||
|
|
||||||
|
doc.lfile().set_curr(d);
|
||||||
|
const long items = c.items();
|
||||||
|
TProgind pi(items, str, FALSE, TRUE);
|
||||||
|
|
||||||
|
for (c = 0L; c.pos() < items; ++c)
|
||||||
|
{
|
||||||
|
pi.addstatus(1);
|
||||||
|
TDocumento & curr_doc = (TDocumento &) c.curr();
|
||||||
|
|
||||||
|
if (curr_doc.in_valuta())
|
||||||
|
{
|
||||||
|
TString16 val(curr_doc.get("CODVAL"));
|
||||||
|
const int dec = atoi(cache().get("%VAL", val, "I2"));
|
||||||
|
|
||||||
|
if (dec < 6)
|
||||||
|
{
|
||||||
|
real change = curr_doc.get_real(DOC_CAMBIO);
|
||||||
|
change.round(dec);
|
||||||
|
curr_doc.put(DOC_CAMBIO, change);
|
||||||
|
|
||||||
|
const int err = curr_doc.rewrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (curr_doc.get_bool(DOC_CONTROEURO))
|
||||||
|
{
|
||||||
|
curr_doc.dirty_fields();
|
||||||
|
curr_doc.put(DOC_CONTROEURO, "");
|
||||||
|
|
||||||
|
const int err = curr_doc.rewrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int baeur06(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TEuro06_app ma;
|
||||||
|
ma.run(argc, argv, "");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
76
ba/baeur07.cpp
Executable file
76
ba/baeur07.cpp
Executable file
@ -0,0 +1,76 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <prefix.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include "baeur.h"
|
||||||
|
#include "../mg/mglib.h"
|
||||||
|
#include "../mg/mg4200a.h"
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TInventario_euro : public TStampa_inventario
|
||||||
|
{
|
||||||
|
bool get_aree_dati(TFilename& lit, TFilename& eur) const;
|
||||||
|
bool goto_lire(long ditta = -1);
|
||||||
|
virtual bool create();
|
||||||
|
virtual void set_def_valuta(TForm_inventario & f);
|
||||||
|
public:
|
||||||
|
TInventario_euro() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TInventario_euro::get_aree_dati(TFilename& lit, TFilename& eur) const
|
||||||
|
{
|
||||||
|
TConfig prassis(CONFIG_STUDIO, "Euro");
|
||||||
|
lit = prassis.get("DatiLire");
|
||||||
|
eur = prassis.get("DatiEuro");
|
||||||
|
if (lit.blank())
|
||||||
|
{
|
||||||
|
lit = prefix().get_studio();
|
||||||
|
lit.rtrim(1);
|
||||||
|
}
|
||||||
|
bool ok = eur.exist();
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TInventario_euro::goto_lire(long ditta)
|
||||||
|
{
|
||||||
|
TFilename lit, eur;
|
||||||
|
get_aree_dati(lit, eur);
|
||||||
|
|
||||||
|
bool ok = !lit.blank() && fexist(lit);
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
TFilename cur = prefix().get_studio(); cur.rtrim(1);
|
||||||
|
if (ditta < 0)
|
||||||
|
ditta = get_firm();
|
||||||
|
if (!dir_equal(cur, lit))
|
||||||
|
ok = prefix().set_studio(lit, ditta);
|
||||||
|
else
|
||||||
|
prefix().set_codditta(ditta);
|
||||||
|
}
|
||||||
|
if (!ok)
|
||||||
|
error_box("Impossibile utilizzare lo studio in lire '%s'", (const char*)lit);
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TInventario_euro::create()
|
||||||
|
{
|
||||||
|
goto_lire();
|
||||||
|
return TStampa_inventario:: create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TInventario_euro::set_def_valuta(TForm_inventario & f)
|
||||||
|
{
|
||||||
|
f.set_output_exchange("EUR", EURO, _exchange_base);
|
||||||
|
}
|
||||||
|
|
||||||
|
int baeur07(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TInventario_euro ma;
|
||||||
|
ma.run(argc, argv, "Stampa inventario in Euro");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
76
ba/baeur08.cpp
Executable file
76
ba/baeur08.cpp
Executable file
@ -0,0 +1,76 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <prefix.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include "baeur.h"
|
||||||
|
#include "../mg/mglib.h"
|
||||||
|
#include "../mg/mg3500a.h"
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TStampa_storico_euro : public TStampa_storgiac
|
||||||
|
{
|
||||||
|
bool get_aree_dati(TFilename& lit, TFilename& eur) const;
|
||||||
|
bool goto_lire(long ditta = -1);
|
||||||
|
virtual bool create();
|
||||||
|
virtual void set_def_valuta(TForm_storgiac & f);
|
||||||
|
public:
|
||||||
|
TStampa_storico_euro() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TStampa_storico_euro::get_aree_dati(TFilename& lit, TFilename& eur) const
|
||||||
|
{
|
||||||
|
TConfig prassis(CONFIG_STUDIO, "Euro");
|
||||||
|
lit = prassis.get("DatiLire");
|
||||||
|
eur = prassis.get("DatiEuro");
|
||||||
|
if (lit.blank())
|
||||||
|
{
|
||||||
|
lit = prefix().get_studio();
|
||||||
|
lit.rtrim(1);
|
||||||
|
}
|
||||||
|
bool ok = eur.exist();
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TStampa_storico_euro::goto_lire(long ditta)
|
||||||
|
{
|
||||||
|
TFilename lit, eur;
|
||||||
|
get_aree_dati(lit, eur);
|
||||||
|
|
||||||
|
bool ok = !lit.blank() && fexist(lit);
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
TFilename cur = prefix().get_studio(); cur.rtrim(1);
|
||||||
|
if (ditta < 0)
|
||||||
|
ditta = get_firm();
|
||||||
|
if (!dir_equal(cur, lit))
|
||||||
|
ok = prefix().set_studio(lit, ditta);
|
||||||
|
else
|
||||||
|
prefix().set_codditta(ditta);
|
||||||
|
}
|
||||||
|
if (!ok)
|
||||||
|
error_box("Impossibile utilizzare lo studio in lire '%s'", (const char*)lit);
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TStampa_storico_euro::create()
|
||||||
|
{
|
||||||
|
goto_lire();
|
||||||
|
return TStampa_storgiac:: create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TStampa_storico_euro::set_def_valuta(TForm_storgiac & f)
|
||||||
|
{
|
||||||
|
f.set_output_exchange("EUR", EURO, _exchange_base);
|
||||||
|
}
|
||||||
|
|
||||||
|
int baeur08(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TStampa_storico_euro ma;
|
||||||
|
ma.run(argc, argv, "Stampa storico in Euro");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
195
ba/baeur09.cpp
Executable file
195
ba/baeur09.cpp
Executable file
@ -0,0 +1,195 @@
|
|||||||
|
#include <automask.h>
|
||||||
|
|
||||||
|
#include <saldi.h>
|
||||||
|
|
||||||
|
#include "baeur.h"
|
||||||
|
#include "baeur11.h"
|
||||||
|
|
||||||
|
#include "../cg/cglib01.h"
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app declaration
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TApertura_saldi_euro : public TEuro_app
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
void convert_saldi(const TDate& adozione, const TBill& arrotino);
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual void main_loop();
|
||||||
|
};
|
||||||
|
|
||||||
|
TApertura_saldi_euro& app() { return (TApertura_saldi_euro&)main_app(); }
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main mask
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TEuro90_mask : public TAutomask
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
virtual void on_firm_change();
|
||||||
|
TEuro90_mask();
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TEuro90_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F11_ADOZIONE:
|
||||||
|
if (e == fe_modify || e == fe_close)
|
||||||
|
{
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
TDate d = o.get();
|
||||||
|
if (!d.ok())
|
||||||
|
return error_box("E' necessario specificare la data di adozione dell'Euro");
|
||||||
|
const int codesc = esc.date2esc(d);
|
||||||
|
if (codesc <= 0)
|
||||||
|
return error_box("E' necessario aprire l'esercizio per l'anno %d", d.year());
|
||||||
|
if (d.day() != 1)
|
||||||
|
warning_box("Si consiglia di specificare una data di inizio mese/trimestre");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEuro90_mask::on_firm_change()
|
||||||
|
{
|
||||||
|
TAutomask::on_firm_change();
|
||||||
|
|
||||||
|
TDate adozione;
|
||||||
|
bool inizio;
|
||||||
|
app().data_adozione_euro(0, adozione, inizio);
|
||||||
|
set(F11_ADOZIONE, adozione);
|
||||||
|
|
||||||
|
TBill arrotino;
|
||||||
|
if (app().load_round_bill(arrotino))
|
||||||
|
{
|
||||||
|
arrotino.set(*this, F11_DIFF_G, F11_DIFF_C, F11_DIFF_S);
|
||||||
|
field(F11_DIFF_S).check(STARTING_CHECK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEuro90_mask::TEuro90_mask() : TAutomask("baeur11")
|
||||||
|
{
|
||||||
|
for (int i = fields()-1; i > 0; i--)
|
||||||
|
{
|
||||||
|
TMask_field& f = fld(i);
|
||||||
|
if (f.in_group(1))
|
||||||
|
{
|
||||||
|
if (f.dlg() == F11_SALDI)
|
||||||
|
{
|
||||||
|
f.set("X");
|
||||||
|
f.disable();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
f.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Main app implementation
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Conversione saldi copiata pari pari da baeur01
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
struct TSaldi_data
|
||||||
|
{
|
||||||
|
int _annoes;
|
||||||
|
TBill _arrot;
|
||||||
|
TImporto _sld;
|
||||||
|
};
|
||||||
|
|
||||||
|
static bool saldi_handler(TRectype& rec, void* jolly)
|
||||||
|
{
|
||||||
|
TSaldi_data& sld = *(TSaldi_data*)jolly;
|
||||||
|
const int annoes = rec.get_int(SLD_ANNOES);
|
||||||
|
if (annoes == sld._annoes)
|
||||||
|
{
|
||||||
|
const TImporto iniz(rec.get_char(SLD_FLAGSALINI), rec.get_real(SLD_SALDO));
|
||||||
|
const TImporto pdare('D', rec.get_real(SLD_PDARE));
|
||||||
|
const TImporto pavere('A', rec.get_real(SLD_PAVERE));
|
||||||
|
TImporto saldo = iniz; saldo += pdare; saldo += pavere;
|
||||||
|
if (!saldo.is_zero())
|
||||||
|
{
|
||||||
|
saldo.normalize();
|
||||||
|
rec.put(SLD_FLAGSALINI, saldo.sezione());
|
||||||
|
rec.put(SLD_SALDO, saldo.valore());
|
||||||
|
convert_import(rec, "SALDO|FLAGSALFIN|SALDOFIN");
|
||||||
|
zero_import(rec, "PDARE|PAVERE|PDAREPRO|PAVEREPRO");
|
||||||
|
sld._sld += TImporto(saldo.sezione(), rec.get_real(SLD_SALDO)); // Somma saldo in euro
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TApertura_saldi_euro::convert_saldi(const TDate& adozione, const TBill& arrotino)
|
||||||
|
{
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
|
||||||
|
TSaldi_data sld;
|
||||||
|
sld._annoes = esc.date2prevesc(adozione);
|
||||||
|
sld._arrot = arrotino;
|
||||||
|
convert_file(LF_SALDI, NULL, NULL, saldi_handler, &sld);
|
||||||
|
|
||||||
|
TImporto& saldo = sld._sld;
|
||||||
|
saldo.valore().round(-2);
|
||||||
|
if (!saldo.is_zero())
|
||||||
|
{
|
||||||
|
TLocalisamfile saldi_lire(LF_SALDI); // Open trc
|
||||||
|
TEuroisamfile saldi(LF_SALDI, TRUE);
|
||||||
|
|
||||||
|
TRectype& curr = saldi.curr();
|
||||||
|
curr.zero();
|
||||||
|
curr.put(SLD_ANNOES, sld._annoes);
|
||||||
|
curr.put(SLD_GRUPPO, arrotino.gruppo());
|
||||||
|
curr.put(SLD_CONTO, arrotino.conto());
|
||||||
|
curr.put(SLD_SOTTOCONTO, arrotino.sottoconto());
|
||||||
|
|
||||||
|
saldo.normalize();
|
||||||
|
saldo.swap_section();
|
||||||
|
curr.put(SLD_FLAGSALINI, saldo.sezione());
|
||||||
|
curr.put(SLD_SALDO, saldo.valore());
|
||||||
|
saldi.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TApertura_saldi_euro::main_loop()
|
||||||
|
{
|
||||||
|
if (set_firm())
|
||||||
|
{
|
||||||
|
TEuro90_mask m;
|
||||||
|
|
||||||
|
TFilename lit, eur;
|
||||||
|
get_aree_dati(lit, eur);
|
||||||
|
m.set(F11_DATI, lit);
|
||||||
|
m.set(F11_DATIE, eur);
|
||||||
|
m.on_firm_change();
|
||||||
|
while (m.run() == K_ENTER)
|
||||||
|
{
|
||||||
|
TDate adozione = m.get(F11_ADOZIONE);
|
||||||
|
TBill arrotino;
|
||||||
|
arrotino.get(m, F11_DIFF_G, F11_DIFF_C, F11_DIFF_S);
|
||||||
|
convert_saldi(adozione, arrotino);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int baeur09(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TApertura_saldi_euro ase;
|
||||||
|
ase.run(argc, argv, "Ricalcolo saldi Lire/Euro");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
9
ba/baeur10.h
Executable file
9
ba/baeur10.h
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#define F03_DITTE 201
|
||||||
|
|
||||||
|
#define S03_SEL 101
|
||||||
|
#define S03_DITTA 102
|
||||||
|
#define S03_RAGSOC 103
|
||||||
|
#define S03_NOTE 104
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
68
ba/baeur10.uml
Executable file
68
ba/baeur10.uml
Executable file
@ -0,0 +1,68 @@
|
|||||||
|
#include "baeur10.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -3 0 3
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Selezione Ditte" 0 0 80 018
|
||||||
|
|
||||||
|
SPREADSHEET F03_DITTE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 0 1 ""
|
||||||
|
ITEM "@1"
|
||||||
|
ITEM "Ditta"
|
||||||
|
ITEM "Ragione Sociale@50"
|
||||||
|
ITEM "Note@30"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
PAGE "Ditta" -1 -1 64 6
|
||||||
|
|
||||||
|
BOOLEAN S03_SEL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Richiesta conversione"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER S03_DITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Ditta "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA S03_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "Rag. Soc. "
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING S03_NOTE 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 4 "Note "
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
18
ba/baeur11.h
Executable file
18
ba/baeur11.h
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#define F11_DITTA 101
|
||||||
|
#define F11_RAGSOC 102
|
||||||
|
#define F11_DATI 103
|
||||||
|
#define F11_DATIE 104
|
||||||
|
#define F11_ADOZIONE 105
|
||||||
|
|
||||||
|
#define F11_DIFF_G 201
|
||||||
|
#define F11_DIFF_C 202
|
||||||
|
#define F11_DIFF_S 203
|
||||||
|
#define F11_DIFF_D 204
|
||||||
|
|
||||||
|
#define F11_COPY 301
|
||||||
|
#define F11_SALDI 302
|
||||||
|
#define F11_PARTITE 303
|
||||||
|
#define F11_VENDITE 304
|
||||||
|
#define F11_MAGAZZINO 305
|
||||||
|
|
||||||
|
|
||||||
149
ba/baeur11.uml
Executable file
149
ba/baeur11.uml
Executable file
@ -0,0 +1,149 @@
|
|||||||
|
#include "baeur11.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -3 0 3
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Conversione ditta" 0 0 80 18
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "@bDitta da convertire"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F11_DITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Ditta "
|
||||||
|
USE LF_NDITTE
|
||||||
|
INPUT CODDITTA F11_DITTA
|
||||||
|
OUTPUT F11_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAGS "DF"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F11_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 21 2 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F11_DATI 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Area dati in Lire "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F11_DATIE 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Area dati in Euro "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F11_ADOZIONE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Data adozione Euro "
|
||||||
|
USE ESC
|
||||||
|
INPUT D0 F11_ADOZIONE
|
||||||
|
DISPLAY "Codice Esercizio" CODTAB
|
||||||
|
DISPLAY "Inizio Esercizio" D0
|
||||||
|
DISPLAY "Fine Esercizio" D1
|
||||||
|
OUTPUT F11_ADOZIONE D0
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 7 "@bConto Differenza Arrotondamenti"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F11_DIFF_G 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F11_DIFF_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 7 8 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F11_DIFF_S 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 12 8 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F11_DIFF_G
|
||||||
|
INPUT CONTO F11_DIFF_C
|
||||||
|
INPUT SOTTOCONTO F11_DIFF_S
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F11_DIFF_G GRUPPO
|
||||||
|
OUTPUT F11_DIFF_C CONTO
|
||||||
|
OUTPUT F11_DIFF_S SOTTOCONTO
|
||||||
|
OUTPUT F11_DIFF_D DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "E' necessario specificare il conto per gli arrotondamenti"
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F11_DIFF_D 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 8 ""
|
||||||
|
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F11_DIFF_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F11_DIFF_S
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "E' necessario specificare il conto per gli arrotondamenti"
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 10 "@bOperazioni"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F11_COPY
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 11 "Copia e conversione ditta da lire ad euro"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F11_SALDI
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 12 "Apertura saldi esercizio precedente in euro"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F11_PARTITE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 13 "Copia e conversione partite aperte"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F11_VENDITE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Conversione documenti di vendita"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F11_MAGAZZINO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 "Conversione Magazzino"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
28
ba/baeur20.h
Executable file
28
ba/baeur20.h
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
#define F20_DITTA 101
|
||||||
|
#define F20_RAGSOC 102
|
||||||
|
#define F20_DATI 103
|
||||||
|
#define F20_DATIE 104
|
||||||
|
#define F20_ADOZIONE 105
|
||||||
|
|
||||||
|
#define F20_CAUS_C 201
|
||||||
|
#define F20_DESCAUS_C 202
|
||||||
|
#define F20_DESC_C 203
|
||||||
|
#define F20_CONTROG_C 204
|
||||||
|
#define F20_CONTROC_C 205
|
||||||
|
#define F20_CONTROS_C 206
|
||||||
|
#define F20_CONTROD_C 207
|
||||||
|
|
||||||
|
#define F20_CAUS_A 301
|
||||||
|
#define F20_DESCAUS_A 302
|
||||||
|
#define F20_DESC_A 303
|
||||||
|
#define F20_CONTROG_A 304
|
||||||
|
#define F20_CONTROC_A 305
|
||||||
|
#define F20_CONTROS_A 306
|
||||||
|
#define F20_CONTROD_A 307
|
||||||
|
|
||||||
|
#define F20_DIFF_G 401
|
||||||
|
#define F20_DIFF_C 402
|
||||||
|
#define F20_DIFF_S 403
|
||||||
|
#define F20_DIFF_D 404
|
||||||
|
|
||||||
|
|
||||||
266
ba/baeur20.uml
Executable file
266
ba/baeur20.uml
Executable file
@ -0,0 +1,266 @@
|
|||||||
|
#include "baeur20.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -3 0 3
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Conversione saldi" 0 0 80 18
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "@bDitta da convertire"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F20_DITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Ditta "
|
||||||
|
USE LF_NDITTE
|
||||||
|
INPUT CODDITTA F20_DITTA
|
||||||
|
OUTPUT F20_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FLAGS "DF"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 21 2 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_DATI 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Area dati in Lire "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_DATIE 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Area dati in Euro "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F20_ADOZIONE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Data adozione Euro "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 7 "@bChiusura"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_CAUS_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Causale chiusura "
|
||||||
|
FLAGS "U"
|
||||||
|
USE LF_CAUSALI SELECT MOVAP="C"
|
||||||
|
INPUT CODCAUS F20_CAUS_C
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F20_CAUS_C CODCAUS
|
||||||
|
OUTPUT F20_DESCAUS_C DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_DESCAUS_C 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 8 ""
|
||||||
|
USE LF_CAUSALI KEY 2 SELECT MOVAP="C"
|
||||||
|
INPUT DESCR F20_DESCAUS_C
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
COPY OUTPUT F20_CAUS_C
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_DESC_C 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 9 "Descrizione aggiuntiva "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F20_CONTROG_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "Contropartita "
|
||||||
|
FLAGS "U"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F20_CONTROC_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 10 ""
|
||||||
|
FLAGS "U"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F20_CONTROS_C 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 36 10 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F20_CONTROG_C
|
||||||
|
INPUT CONTO F20_CONTROC_C
|
||||||
|
INPUT SOTTOCONTO F20_CONTROS_C
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" GRUPPO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F20_CONTROG_C GRUPPO
|
||||||
|
OUTPUT F20_CONTROC_C CONTO
|
||||||
|
OUTPUT F20_CONTROS_C SOTTOCONTO
|
||||||
|
OUTPUT F20_CONTROD_C DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_CONTROD_C 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 11 ""
|
||||||
|
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F20_CONTROD_C
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" GRUPPO
|
||||||
|
COPY OUTPUT F20_CONTROS_C
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 13 "@bApertura"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_CAUS_A 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Causale apertura "
|
||||||
|
FLAGS "U"
|
||||||
|
USE LF_CAUSALI SELECT MOVAP="A"
|
||||||
|
INPUT CODCAUS F20_CAUS_A
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F20_CAUS_A CODCAUS
|
||||||
|
OUTPUT F20_DESCAUS_A DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_DESCAUS_A 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 14 ""
|
||||||
|
USE LF_CAUSALI KEY 2 SELECT MOVAP="A"
|
||||||
|
INPUT DESCR F20_DESCAUS_A
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
COPY OUTPUT F20_CAUS_A
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_DESC_A 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 "Descrizione aggiuntiva "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F20_CONTROG_A 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 16 "Contropartita "
|
||||||
|
FLAGS "U"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F20_CONTROC_A 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 16 ""
|
||||||
|
FLAGS "U"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F20_CONTROS_A 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 36 16 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F20_CONTROG_A
|
||||||
|
INPUT CONTO F20_CONTROC_A
|
||||||
|
INPUT SOTTOCONTO F20_CONTROS_A
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F20_CONTROG_A GRUPPO
|
||||||
|
OUTPUT F20_CONTROC_A CONTO
|
||||||
|
OUTPUT F20_CONTROS_A SOTTOCONTO
|
||||||
|
OUTPUT F20_CONTROD_A DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_CONTROD_A 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 17 ""
|
||||||
|
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F20_CONTROD_A
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F20_CONTROS_A
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 19 "@bConto Differenza Arrotondamenti"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F20_DIFF_G 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 20 ""
|
||||||
|
FLAGS "U"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F20_DIFF_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 7 20 ""
|
||||||
|
FLAGS "U"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F20_DIFF_S 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 12 20 ""
|
||||||
|
FLAGS "U"
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F20_DIFF_G
|
||||||
|
INPUT CONTO F20_DIFF_C
|
||||||
|
INPUT SOTTOCONTO F20_DIFF_S
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" GRUPPO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F20_DIFF_G GRUPPO
|
||||||
|
OUTPUT F20_DIFF_C CONTO
|
||||||
|
OUTPUT F20_DIFF_S SOTTOCONTO
|
||||||
|
OUTPUT F20_DIFF_D DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "E' necessario specificare il conto per gli arrotondamenti"
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F20_DIFF_D 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 20 ""
|
||||||
|
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F20_DIFF_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" GRUPPO
|
||||||
|
COPY OUTPUT F20_DIFF_S
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
50
ba/baeur30.h
Executable file
50
ba/baeur30.h
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#define F30_DITTA 101
|
||||||
|
#define F30_RAGSOC 102
|
||||||
|
#define F30_DATI 103
|
||||||
|
#define F30_DATIE 104
|
||||||
|
#define F30_CAUS_C 105
|
||||||
|
#define F30_DATA_C 106
|
||||||
|
#define F30_ANNO_C 107
|
||||||
|
#define F30_CAUS_A 108
|
||||||
|
#define F30_DATA_A 109
|
||||||
|
#define F30_ANNO_A 110
|
||||||
|
|
||||||
|
#define F30_BILCHI_G 201
|
||||||
|
#define F30_BILCHI_C 202
|
||||||
|
#define F30_BILCHI_S 203
|
||||||
|
#define F30_BILCHI_D 204
|
||||||
|
|
||||||
|
#define F30_PROPER_G 206
|
||||||
|
#define F30_PROPER_C 207
|
||||||
|
#define F30_PROPER_S 208
|
||||||
|
#define F30_PROPER_D 209
|
||||||
|
|
||||||
|
#define F30_BILAPE_G 211
|
||||||
|
#define F30_BILAPE_C 212
|
||||||
|
#define F30_BILAPE_S 213
|
||||||
|
#define F30_BILAPE_D 214
|
||||||
|
|
||||||
|
#define F30_UTIPAT_G 216
|
||||||
|
#define F30_UTIPAT_C 217
|
||||||
|
#define F30_UTIPAT_S 218
|
||||||
|
#define F30_UTIPAT_D 219
|
||||||
|
|
||||||
|
#define F30_PERPAT_G 221
|
||||||
|
#define F30_PERPAT_C 222
|
||||||
|
#define F30_PERPAT_S 223
|
||||||
|
#define F30_PERPAT_D 224
|
||||||
|
|
||||||
|
#define F30_UTIECO_G 226
|
||||||
|
#define F30_UTIECO_C 227
|
||||||
|
#define F30_UTIECO_S 228
|
||||||
|
#define F30_UTIECO_D 229
|
||||||
|
|
||||||
|
#define F30_PERECO_G 231
|
||||||
|
#define F30_PERECO_C 232
|
||||||
|
#define F30_PERECO_S 233
|
||||||
|
#define F30_PERECO_D 234
|
||||||
|
|
||||||
|
#define F30_DIFARR_G 236
|
||||||
|
#define F30_DIFARR_C 237
|
||||||
|
#define F30_DIFARR_S 238
|
||||||
|
#define F30_DIFARR_D 239
|
||||||
455
ba/baeur30.uml
Executable file
455
ba/baeur30.uml
Executable file
@ -0,0 +1,455 @@
|
|||||||
|
#include "baeur30.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -3 0 3
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Chiusura/Apertura Euro" 0 0 0 -3
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "@bDitta corrente"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_DITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Ditta "
|
||||||
|
USE LF_NDITTE
|
||||||
|
INPUT CODDITTA F30_DITTA
|
||||||
|
OUTPUT F30_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FLAGS "DF"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 21 2 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_DATI 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Area dati in Lire "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_DATIE 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Area dati in Euro "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 6 "@bChiusura e apertura"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_CAUS_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Causale chiusura "
|
||||||
|
FLAGS "U"
|
||||||
|
USE LF_CAUSALI SELECT MOVAP="C"
|
||||||
|
INPUT CODCAUS F30_CAUS_C
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F30_CAUS_C CODCAUS
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F30_DATA_C
|
||||||
|
BEGIN
|
||||||
|
PROMPT 32 7 "Data chiusura "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_ANNO_C 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 62 7 "Esercizio "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_CAUS_A 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Causale aperura "
|
||||||
|
FLAGS "U"
|
||||||
|
USE LF_CAUSALI SELECT MOVAP="A"
|
||||||
|
INPUT CODCAUS F30_CAUS_A
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F30_CAUS_A CODCAUS
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F30_DATA_A
|
||||||
|
BEGIN
|
||||||
|
PROMPT 32 8 "Data apertura "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_ANNO_A 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 62 8 "Esercizio "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 10 "@bConti"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_BILCHI_G 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 11 "Bilancio di chiusura "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_BILCHI_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_BILCHI_S 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 11 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F30_BILCHI_G
|
||||||
|
INPUT CONTO F30_BILCHI_C
|
||||||
|
INPUT SOTTOCONTO F30_BILCHI_S
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F30_BILCHI_G GRUPPO
|
||||||
|
OUTPUT F30_BILCHI_C CONTO
|
||||||
|
OUTPUT F30_BILCHI_S SOTTOCONTO
|
||||||
|
OUTPUT F30_BILCHI_D DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_BILCHI_D 50 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 11 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F30_BILCHI_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F30_BILCHI_S
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_PROPER_G 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 12 "Profitti e perdite "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_PROPER_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 12 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_PROPER_S 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 12 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F30_PROPER_G
|
||||||
|
INPUT CONTO F30_PROPER_C
|
||||||
|
INPUT SOTTOCONTO F30_PROPER_S
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F30_PROPER_G GRUPPO
|
||||||
|
OUTPUT F30_PROPER_C CONTO
|
||||||
|
OUTPUT F30_PROPER_S SOTTOCONTO
|
||||||
|
OUTPUT F30_PROPER_D DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_PROPER_D 50 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 12 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F30_PROPER_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F30_PROPER_S
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_BILAPE_G 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 13 "Bilancio di chiusura "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_BILAPE_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 13 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_BILAPE_S 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 13 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F30_BILAPE_G
|
||||||
|
INPUT CONTO F30_BILAPE_C
|
||||||
|
INPUT SOTTOCONTO F30_BILAPE_S
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F30_BILAPE_G GRUPPO
|
||||||
|
OUTPUT F30_BILAPE_C CONTO
|
||||||
|
OUTPUT F30_BILAPE_S SOTTOCONTO
|
||||||
|
OUTPUT F30_BILAPE_D DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_BILAPE_D 50 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 13 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F30_BILAPE_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F30_BILAPE_S
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_UTIPAT_G 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Utile esercizio patr. "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_UTIPAT_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 14 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_UTIPAT_S 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 14 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F30_UTIPAT_G
|
||||||
|
INPUT CONTO F30_UTIPAT_C
|
||||||
|
INPUT SOTTOCONTO F30_UTIPAT_S
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F30_UTIPAT_G GRUPPO
|
||||||
|
OUTPUT F30_UTIPAT_C CONTO
|
||||||
|
OUTPUT F30_UTIPAT_S SOTTOCONTO
|
||||||
|
OUTPUT F30_UTIPAT_D DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_UTIPAT_D 50 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 14 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F30_UTIPAT_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F30_UTIPAT_S
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_PERPAT_G 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 "Perdita esercizio patr."
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_PERPAT_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 15 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_PERPAT_S 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 15 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F30_PERPAT_G
|
||||||
|
INPUT CONTO F30_PERPAT_C
|
||||||
|
INPUT SOTTOCONTO F30_PERPAT_S
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F30_PERPAT_G GRUPPO
|
||||||
|
OUTPUT F30_PERPAT_C CONTO
|
||||||
|
OUTPUT F30_PERPAT_S SOTTOCONTO
|
||||||
|
OUTPUT F30_PERPAT_D DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_PERPAT_D 50 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 15 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F30_PERPAT_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F30_PERPAT_S
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_UTIECO_G 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 16 "Utile esercizio econ. "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_UTIECO_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 16 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_UTIECO_S 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 16 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F30_UTIECO_G
|
||||||
|
INPUT CONTO F30_UTIECO_C
|
||||||
|
INPUT SOTTOCONTO F30_UTIECO_S
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F30_UTIECO_G GRUPPO
|
||||||
|
OUTPUT F30_UTIECO_C CONTO
|
||||||
|
OUTPUT F30_UTIECO_S SOTTOCONTO
|
||||||
|
OUTPUT F30_UTIECO_D DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_UTIECO_D 50 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 16 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F30_UTIECO_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F30_UTIECO_S
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_PERECO_G 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 17 "Perdita esercizio econ."
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_PERECO_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 17 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_PERECO_S 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 17 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F30_PERECO_G
|
||||||
|
INPUT CONTO F30_PERECO_C
|
||||||
|
INPUT SOTTOCONTO F30_PERECO_S
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F30_PERECO_G GRUPPO
|
||||||
|
OUTPUT F30_PERECO_C CONTO
|
||||||
|
OUTPUT F30_PERECO_S SOTTOCONTO
|
||||||
|
OUTPUT F30_PERECO_D DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_PERECO_D 50 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 17 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F30_PERECO_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F30_PERECO_S
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_DIFARR_G 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 18 "Differenza arrotondam. "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_DIFARR_C 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 18 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F30_DIFARR_S 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 18 ""
|
||||||
|
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F30_DIFARR_G
|
||||||
|
INPUT CONTO F30_DIFARR_C
|
||||||
|
INPUT SOTTOCONTO F30_DIFARR_S
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" GRUPPO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F30_DIFARR_G GRUPPO
|
||||||
|
OUTPUT F30_DIFARR_C CONTO
|
||||||
|
OUTPUT F30_DIFARR_S SOTTOCONTO
|
||||||
|
OUTPUT F30_DIFARR_D DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "E' necessario specificare il conto per gli arrotondamenti"
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F30_DIFARR_D 50 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 18 ""
|
||||||
|
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
|
||||||
|
INPUT DESCR F30_DIFARR_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" GRUPPO
|
||||||
|
COPY OUTPUT F30_DIFARR_S
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -0
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
18
ba/baeur40.h
Executable file
18
ba/baeur40.h
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#define F40_DITTA 101
|
||||||
|
#define F40_RAGSOC 102
|
||||||
|
#define F40_DATI 103
|
||||||
|
#define F40_DATIE 104
|
||||||
|
#define F40_DOCSHEET 105
|
||||||
|
#define F40_TIPISHEET 106
|
||||||
|
|
||||||
|
#define F40_CHECK 101
|
||||||
|
#define F40_ANNO 102
|
||||||
|
#define F40_CODNUM 103
|
||||||
|
#define F40_DASTATO 104
|
||||||
|
#define F40_ASTATO 105
|
||||||
|
#define F40_REPEAT 106
|
||||||
|
#define F40_DESCR 107
|
||||||
|
|
||||||
|
#define F40_CONV 101
|
||||||
|
#define F40_TIPO 102
|
||||||
|
#define F40_DESCRT 103
|
||||||
185
ba/baeur40.uml
Executable file
185
ba/baeur40.uml
Executable file
@ -0,0 +1,185 @@
|
|||||||
|
#include "baeur40.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -3 0 3
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Conversione documenti" 0 0 0 -3
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "@bDitta corrente"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F40_DITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Ditta "
|
||||||
|
USE LF_NDITTE
|
||||||
|
INPUT CODDITTA F40_DITTA
|
||||||
|
OUTPUT F40_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FLAGS "DF"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F40_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 21 2 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F40_DATI 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Area dati in Lire "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F40_DATIE 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Area dati in Euro "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
SPREADSHEET F40_DOCSHEET 78
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 6 ""
|
||||||
|
ITEM "Sel."
|
||||||
|
ITEM "Anno"
|
||||||
|
ITEM "Cod."
|
||||||
|
ITEM "Da stato"
|
||||||
|
ITEM "A stato"
|
||||||
|
ITEM "Ripetibile"
|
||||||
|
ITEM "Numerazione@50"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Tipi riga non standard" 0 0 0 -3
|
||||||
|
|
||||||
|
SPREADSHEET F40_TIPISHEET 78
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 4 ""
|
||||||
|
ITEM "Tipo conversione"
|
||||||
|
ITEM "Tipo riga"
|
||||||
|
ITEM "Descrizione@50"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
PAGE "" -1 -1 73 16
|
||||||
|
|
||||||
|
BOOLEAN F40_CHECK
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "Selezionato "
|
||||||
|
MESSAGE FALSE CLEAR,1@
|
||||||
|
MESSAGE TRUE ENABLE,1@
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F40_ANNO 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Da anno "
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F40_CODNUM 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Codice numerazione "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F40_DESCR 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Descrizione "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F40_DASTATO 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 9 "Da stato "
|
||||||
|
USE %STD
|
||||||
|
INPUT CODTAB F40_DASTATO
|
||||||
|
DISPLAY "Stato documento" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F40_DASTATO CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F40_ASTATO 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 11 "A stato "
|
||||||
|
USE %STD
|
||||||
|
INPUT CODTAB F40_ASTATO
|
||||||
|
DISPLAY "Stato documento" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F40_ASTATO CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F40_REPEAT
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 13 "Ripetibile"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_OK 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -13 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -23 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
PAGE "" -1 -1 73 8
|
||||||
|
|
||||||
|
LIST F40_CONV 1 14
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "Tipo conversione "
|
||||||
|
ITEM " |Prezzo"
|
||||||
|
ITEM "V|Valore"
|
||||||
|
ITEM "N|Non convertire"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F40_TIPO 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Tipo riga "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F40_DESCRT 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Descrizione "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_OK 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -13 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -23 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
@ -2,6 +2,7 @@
|
|||||||
#define QAPPNAME "EASYFAX"
|
#define QAPPNAME "EASYFAX"
|
||||||
|
|
||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
//#include <mainmenu.url>
|
||||||
|
|
||||||
MENUBAR MENU_BAR(0)
|
MENUBAR MENU_BAR(0)
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,4 @@
|
|||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
#include <mainmenu.url>
|
||||||
/* bainst BA */
|
|
||||||
MENU TASK_MENUBAR
|
|
||||||
SUBMENU MENU_FILE "~File"
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,7 @@ END
|
|||||||
BOOL F_USAMENUAVIS
|
BOOL F_USAMENUAVIS
|
||||||
BEGIN
|
BEGIN
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
PROMPT 2 2 "Usa menu' AVIS"
|
PROMPT 2 3 "Usa menu' AVIS"
|
||||||
END
|
END
|
||||||
|
|
||||||
/*GROUPBOX DLG_NULL 60 4
|
/*GROUPBOX DLG_NULL 60 4
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include <prefix.h>
|
#include <prefix.h>
|
||||||
#include <isam.h>
|
#include <isam.h>
|
||||||
|
#include <tabutil.h>
|
||||||
#include "bainst.h"
|
#include "bainst.h"
|
||||||
#include "bainst38.h"
|
#include "bainst38.h"
|
||||||
|
|
||||||
@ -10,12 +11,53 @@ class TInstall_SV : public TInstallmodule_app
|
|||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
virtual int module_number() const {return 38;}
|
virtual int module_number() const {return 38;}
|
||||||
virtual bool install_com() {return TRUE;} // no com installation
|
virtual bool install_firm() {return TRUE;}
|
||||||
|
virtual bool install_com();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ~TInstall_SV () {}
|
virtual ~TInstall_SV () {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool TInstall_SV ::install_com()
|
||||||
|
{
|
||||||
|
// ciclo su ogni ditta
|
||||||
|
TStd_filename txtfile(module_code());
|
||||||
|
txtfile << "tab.txt";
|
||||||
|
if (txtfile.check(TRUE))
|
||||||
|
{
|
||||||
|
// carica le tabelle nei file di default
|
||||||
|
TLocalisamfile tampone(LF_TABCOM);
|
||||||
|
TSystemtempfile tabstd(LF_TABCOM);
|
||||||
|
TFilename stdtabname(prefix().get_studio());
|
||||||
|
stdtabname << "STD\\lf0005.txt";
|
||||||
|
tabstd.load(txtfile);
|
||||||
|
tabstd.load(stdtabname);
|
||||||
|
tabstd.set_autodel();
|
||||||
|
TFilename tempfile;
|
||||||
|
tempfile.temp();
|
||||||
|
|
||||||
|
// riconverte le macro delle date
|
||||||
|
tabstd.dump(tempfile);
|
||||||
|
TScanner scan(tempfile);
|
||||||
|
FILE *dest=fopen((const char *)stdtabname,"w");
|
||||||
|
while (TRUE) {
|
||||||
|
TString &line=scan.line();
|
||||||
|
if (line.empty()) break;
|
||||||
|
|
||||||
|
int pos=(line.find("-0000"));
|
||||||
|
while (pos >= 0 )
|
||||||
|
{
|
||||||
|
line.overwrite("%yr%",pos+1);
|
||||||
|
pos=(line.find("-0000"));
|
||||||
|
}
|
||||||
|
line << '\n' ;
|
||||||
|
fputs((const char * )line,dest);
|
||||||
|
}
|
||||||
|
fclose(dest);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
int bainst38(int argc, char** argv)
|
int bainst38(int argc, char** argv)
|
||||||
{
|
{
|
||||||
TInstall_SV app;
|
TInstall_SV app;
|
||||||
|
|||||||
@ -96,6 +96,7 @@ Item_04 = "Attivazione moduli", "ba1 -4", ""
|
|||||||
Item_05 = "Installazione moduli", "ba1 -6", ""
|
Item_05 = "Installazione moduli", "ba1 -6", ""
|
||||||
Item_06 = "Creazione dischi di installazione", "ba1 -5", ""
|
Item_06 = "Creazione dischi di installazione", "ba1 -5", ""
|
||||||
Item_07 = "Backup", "ba2 -1", ""
|
Item_07 = "Backup", "ba2 -1", ""
|
||||||
|
Item_08 = "Conversione all'Euro", [PRASSI_883]
|
||||||
|
|
||||||
[PRASSI_019]
|
[PRASSI_019]
|
||||||
Caption = "Comunicazione"
|
Caption = "Comunicazione"
|
||||||
@ -106,6 +107,28 @@ Item_02 = "Gestione Fax", "bafax -s", ""
|
|||||||
Item_03 = "Archivio fax spediti e ricevuti", disabled
|
Item_03 = "Archivio fax spediti e ricevuti", disabled
|
||||||
Item_04 = "Archivio contatti telefonici", disabled
|
Item_04 = "Archivio contatti telefonici", disabled
|
||||||
|
|
||||||
|
[PRASSI_883]
|
||||||
|
Caption = "Conversione all'Euro"
|
||||||
|
Picture = <ba00.bmp>
|
||||||
|
Module = 0
|
||||||
|
Item_01 = "Creazione nuova area dati in Euro", "baeur -0"
|
||||||
|
Item_02 = "Conversione ditte in Euro", "baeur -1"
|
||||||
|
Item_03 = "Ricalcolo saldi Lire/Euro", "baeur -9", "F"
|
||||||
|
Item_04 = "Conversione saldi infrannuale", "baeur -2", "F"
|
||||||
|
Item_05 = "Chiusura/Apertura in Euro", "baeur -3", "F"
|
||||||
|
Item_06 = "Conversione documenti", "baeur -4", "F"
|
||||||
|
Item_07 = "Apertura magazzino", "baeur -5", "F"
|
||||||
|
Item_08 = "Stampe magazzino",[PRASSI_884], ""
|
||||||
|
|
||||||
|
[PRASSI_884]
|
||||||
|
Caption = "Stampe magazzino in Euro"
|
||||||
|
Picture = <mg00.bmp>
|
||||||
|
Module = 32
|
||||||
|
Item_01 = "Stampa inventario", "baeur -7"
|
||||||
|
Item_02 = "Stampa storico", "baeur -8"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -13,4 +13,4 @@ Tabella Cambi Giornalieri
|
|||||||
1|CODTAB[1,3]|@2g@3s
|
1|CODTAB[1,3]|@2g@3s
|
||||||
1|D0|@15g@ld
|
1|D0|@15g@ld
|
||||||
1|-200->S0|@30g@50,ls
|
1|-200->S0|@30g@50,ls
|
||||||
1|R10|@82g@15,rpn|##########,@@@@@
|
1|R10|@82g@15,rpn|##########,@@@@@@
|
||||||
|
|||||||
@ -9,6 +9,6 @@ Tabella valute
|
|||||||
[Rows]
|
[Rows]
|
||||||
1|CODTAB|@2g@13,ls
|
1|CODTAB|@2g@13,ls
|
||||||
1|S0|@17g@25,ls
|
1|S0|@17g@25,ls
|
||||||
1|R10|@44g@pn|###.###.###,@@@@@
|
1|S4|@44g@pn|###.###.##@,@@@@@
|
||||||
1|D0|@65g@d
|
1|D0|@65g@d
|
||||||
|
|
||||||
|
|||||||
@ -34,8 +34,7 @@ BOOLEAN VAL_EURO
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 2 "Codice valuta dell'EURO"
|
PROMPT 40 2 "Codice valuta dell'EURO"
|
||||||
FIELD B0
|
FIELD B0
|
||||||
MESSAGE FALSE ENABLE,VAL_INEURO|ENABLE,VAL_DECIMALS
|
GROUP 3
|
||||||
MESSAGE TRUE CLEAR,VAL_INEURO|CLEAR,VAL_DECIMALS|"2",VAL_DECIMALS
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING VAL_DESC 50
|
STRING VAL_DESC 50
|
||||||
@ -67,6 +66,7 @@ BEGIN
|
|||||||
ITEM "2|2 decimali"
|
ITEM "2|2 decimali"
|
||||||
ITEM "3|3 decimali"
|
ITEM "3|3 decimali"
|
||||||
FIELD I0
|
FIELD I0
|
||||||
|
GROUP 3
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST VAL_DECIMALS_PRICES 1 10
|
LIST VAL_DECIMALS_PRICES 1 10
|
||||||
@ -79,6 +79,7 @@ BEGIN
|
|||||||
FIELD I1
|
FIELD I1
|
||||||
NUM_EXPR #THIS_FIELD>=#VAL_DECIMALS
|
NUM_EXPR #THIS_FIELD>=#VAL_DECIMALS
|
||||||
WARNING "Si devono specificare almeno tanti decimali quanti quelli degli importi"
|
WARNING "Si devono specificare almeno tanti decimali quanti quelli degli importi"
|
||||||
|
GROUP 3
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 4
|
GROUPBOX DLG_NULL 78 4
|
||||||
@ -102,6 +103,7 @@ BOOLEAN VAL_INEURO
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 11 "Espresso Contro EURO"
|
PROMPT 40 11 "Espresso Contro EURO"
|
||||||
FIELD B1
|
FIELD B1
|
||||||
|
GROUP 3
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER VAL_CHANGE 15 5
|
NUMBER VAL_CHANGE 15 5
|
||||||
|
|||||||
13
ba/cgdll.url
13
ba/cgdll.url
@ -1,13 +1,2 @@
|
|||||||
#include <default.url>
|
#include <default.url>
|
||||||
|
#include <mainmenu.url>
|
||||||
/* ba1 -0 */
|
|
||||||
MENU TASK_MENUBAR
|
|
||||||
SUBMENU MENU_FILE "~File"
|
|
||||||
|
|
||||||
|
|
||||||
/* ba1 -1 */
|
|
||||||
MENUBAR MENU_BAR(1)
|
|
||||||
|
|
||||||
MENU MENU_BAR(1)
|
|
||||||
SUBMENU MENU_FILE "~File"
|
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
106
|
106
|
||||||
1
|
1
|
||||||
cesp/ditcb|0|0|92|10011|Tabella ditte per cespiti|||
|
cesp/ditcb|0|0|93|10000|Tabella ditte per cespiti|||
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
106
|
106
|
||||||
14
|
15
|
||||||
CBCDD|3|5|0|
|
CBCDD|3|5|0|
|
||||||
CBDTI|5|8|0|
|
CBDTI|5|8|0|
|
||||||
CBDTF|5|8|0|
|
CBDTF|5|8|0|
|
||||||
@ -14,5 +14,6 @@ SPMAN25S|4|13|0|
|
|||||||
SPMAN5E|4|13|0|
|
SPMAN5E|4|13|0|
|
||||||
SPMAN25E|4|13|0|
|
SPMAN25E|4|13|0|
|
||||||
DTCALSP|5|8|0|
|
DTCALSP|5|8|0|
|
||||||
|
ESART14|2|1|0|
|
||||||
1
|
1
|
||||||
CBCDD+CBDTI+CBDTF+CBCGR+CBCSP|
|
CBCDD+CBDTI+CBDTF+CBCGR+CBCSP|
|
||||||
|
|||||||
31
ce/ammce.h
Executable file
31
ce/ammce.h
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#define AMMCE_IDCESPITE "IDCESPITE"
|
||||||
|
#define AMMCE_CODES "CODES"
|
||||||
|
#define AMMCE_TPSALDO "TPSALDO"
|
||||||
|
#define AMMCE_TPAMM "TPAMM"
|
||||||
|
#define AMMCE_SCELTE "SCELTE"
|
||||||
|
#define AMMCE_AMMRIT "AMMRIT"
|
||||||
|
#define AMMCE_CSCEN "CSCEN"
|
||||||
|
#define AMMCE_FZPER "FZPER"
|
||||||
|
#define AMMCE_PNOR "PNOR"
|
||||||
|
#define AMMCE_PACC "PACC"
|
||||||
|
#define AMMCE_PANT "PANT"
|
||||||
|
#define AMMCE_FZQUO "FZQUO"
|
||||||
|
#define AMMCE_QNOR "QNOR"
|
||||||
|
#define AMMCE_QACC "QACC"
|
||||||
|
#define AMMCE_QANT "QANT"
|
||||||
|
#define AMMCE_QPERSE "QPERSE"
|
||||||
|
#define AMMCE_FPRIVATO "FPRIVATO"
|
||||||
|
#define AMMCE_QPPRIVATE "QPPRIVATE"
|
||||||
|
#define AMMCE_QNORP "QNORP"
|
||||||
|
#define AMMCE_QACCP "QACCP"
|
||||||
|
#define AMMCE_QANTP "QANTP"
|
||||||
|
#define AMMCE_QPERSEP "QPERSEP"
|
||||||
|
#define AMMCE_FPRIVATOP "FPRIVATOP"
|
||||||
|
#define AMMCE_QPPRIVATEP "QPPRIVATEP"
|
||||||
|
#define AMMCE_MSG01 "MSG01"
|
||||||
|
#define AMMCE_MSG02 "MSG02"
|
||||||
|
#define AMMCE_MSG03 "MSG03"
|
||||||
|
#define AMMCE_MSG04 "MSG04"
|
||||||
|
#define AMMCE_MSG05 "MSG05"
|
||||||
|
#define AMMCE_MSGD05 "MSGD05"
|
||||||
|
#define AMMCE_MSG06 "MSG06"
|
||||||
20
ce/ammmv.h
Executable file
20
ce/ammmv.h
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#define AMMMV_IDCESPITE "IDCESPITE"
|
||||||
|
#define AMMMV_IDMOV "IDMOV"
|
||||||
|
#define AMMMV_TPAMM "TPAMM"
|
||||||
|
#define AMMMV_FZPER "FZPER"
|
||||||
|
#define AMMMV_PNOR "PNOR"
|
||||||
|
#define AMMMV_PACC "PACC"
|
||||||
|
#define AMMMV_PANT "PANT"
|
||||||
|
#define AMMMV_PENOR "PENOR"
|
||||||
|
#define AMMMV_PEACC "PEACC"
|
||||||
|
#define AMMMV_PEANT "PEANT"
|
||||||
|
#define AMMMV_FZQUO "FZQUO"
|
||||||
|
#define AMMMV_QNOR "QNOR"
|
||||||
|
#define AMMMV_QACC "QACC"
|
||||||
|
#define AMMMV_QANT "QANT"
|
||||||
|
#define AMMMV_QPERSE "QPERSE"
|
||||||
|
#define AMMMV_MINUS "MINUS"
|
||||||
|
#define AMMMV_PLUS "PLUS"
|
||||||
|
#define AMMMV_QPPRIVATE "QPPRIVATE"
|
||||||
|
#define AMMMV_FPRIVATO "FPRIVATO"
|
||||||
|
#define AMMMV_NOTE "NOTE"
|
||||||
24
ce/catdi.h
Executable file
24
ce/catdi.h
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#define CATDI_CODES "CODES"
|
||||||
|
#define CATDI_CODCGRA "CODCGRA"
|
||||||
|
#define CATDI_CODSPA "CODSPA"
|
||||||
|
#define CATDI_CODCGR "CODCGR"
|
||||||
|
#define CATDI_CODSP "CODSP"
|
||||||
|
#define CATDI_CODCAT "CODCAT"
|
||||||
|
#define CATDI_PFNORVN "PFNORVN"
|
||||||
|
#define CATDI_PFANTVN "PFANTVN"
|
||||||
|
#define CATDI_PCNORVN "PCNORVN"
|
||||||
|
#define CATDI_PCANTVN "PCANTVN"
|
||||||
|
#define CATDI_PFNORVT "PFNORVT"
|
||||||
|
#define CATDI_PFANTVT "PFANTVT"
|
||||||
|
#define CATDI_PCNORVT "PCNORVT"
|
||||||
|
#define CATDI_PCANTVT "PCANTVT"
|
||||||
|
#define CATDI_PFNORNT "PFNORNT"
|
||||||
|
#define CATDI_PFANTNT "PFANTNT"
|
||||||
|
#define CATDI_PCNORNT "PCNORNT"
|
||||||
|
#define CATDI_PCANTNT "PCANTNT"
|
||||||
|
#define CATDI_PFACC "PFACC"
|
||||||
|
#define CATDI_PCACC "PCACC"
|
||||||
|
#define CATDI_AMMRIT "AMMRIT"
|
||||||
|
#define CATDI_CSCEN "CSCEN"
|
||||||
|
#define CATDI_DATE "DATE"
|
||||||
|
#define CATDI_TPOP "TPOP"
|
||||||
10
ce/ce0.h
Executable file
10
ce/ce0.h
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#ifndef __CE0_H
|
||||||
|
#define __CE0_H
|
||||||
|
|
||||||
|
int ce0100(int argc, char* argv[]);
|
||||||
|
int ce0400(int argc, char* argv[]);
|
||||||
|
int ce0500(int argc, char* argv[]);
|
||||||
|
int ce0900(int argc, char* argv[]);
|
||||||
|
|
||||||
|
#endif // __CE0_H
|
||||||
|
|
||||||
291
ce/ce0100.cpp
Executable file
291
ce/ce0100.cpp
Executable file
@ -0,0 +1,291 @@
|
|||||||
|
#include <automask.h>
|
||||||
|
#include <execp.h>
|
||||||
|
#include <mailbox.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
#include <tabapp.h>
|
||||||
|
|
||||||
|
#include "ce0.h"
|
||||||
|
|
||||||
|
#include "cetbtmc.h"
|
||||||
|
#include "cetbcac.h"
|
||||||
|
#include "cetbcce.h"
|
||||||
|
#include "cetbccb.h"
|
||||||
|
#define MIN_CAT_COM 40
|
||||||
|
|
||||||
|
#ifndef TTable_application
|
||||||
|
#define TTable_application Tab_application
|
||||||
|
#endif
|
||||||
|
|
||||||
|
TTable_application& app() { return (TTable_application&)main_app(); }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TTMC_mask
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
class TTMC_mask : public TAutomask
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
TTMC_mask() : TAutomask("cetbtmc") { }
|
||||||
|
virtual ~TTMC_mask() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bool TTMC_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F_APPLICABLE1:
|
||||||
|
if (e == fe_close && !query_mode())
|
||||||
|
{
|
||||||
|
if ((!get_bool(F_APPLICABLE1)) && (!get_bool(F_APPLICABLE2)) && (!get_bool(F_APPLICABLE3)))
|
||||||
|
return error_box("E' necessario specificare almeno un'applicabilita'");
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TCAC_mask
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
class TCAC_mask : public TAutomask
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
TCAC_mask() : TAutomask("cetbcac") { }
|
||||||
|
virtual ~TCAC_mask() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bool TCAC_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F_TIPOCE:
|
||||||
|
if (e == fe_modify)
|
||||||
|
{
|
||||||
|
const int tipo_cesp = get_int(F_TIPOCE);
|
||||||
|
if (tipo_cesp == 1)
|
||||||
|
field(F_TIPOAMMO).on_hit();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case F_NUMANNI:
|
||||||
|
if ((e == fe_close && !query_mode()))
|
||||||
|
{
|
||||||
|
if (get(F_NUMANNI).empty())
|
||||||
|
{
|
||||||
|
const int tipo_cesp = get_int(F_TIPOCE);
|
||||||
|
const int tipo_vinc = get_int(F_TIPOVINC);
|
||||||
|
const real pmin = get_real(F_PERC_MINAMF2);
|
||||||
|
const real pmax = get_real(F_PERC_MAXAMF2);
|
||||||
|
|
||||||
|
if (tipo_cesp == 1 || (tipo_cesp == 2 && tipo_vinc != 3 && pmin == ZERO &&
|
||||||
|
pmax == ZERO))
|
||||||
|
return error_box("Numero di anni per ammortamento costi obbligatori");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case F_CODCAT:
|
||||||
|
if (e == fe_close && query_mode())
|
||||||
|
{
|
||||||
|
const int codgr = get_int(F_CODGR);
|
||||||
|
const int codsp = get_int(F_CODSP);
|
||||||
|
const int codcat = get_int(F_CODCAT);
|
||||||
|
|
||||||
|
if (codgr == 0 && codsp == 0)
|
||||||
|
{
|
||||||
|
// categorie comuni
|
||||||
|
if (codcat < MIN_CAT_COM)
|
||||||
|
return error_box("Le categorie comuni non possono avere\n un codice inferiore a %d", MIN_CAT_COM);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// categorie noncomuni
|
||||||
|
if (codcat >= MIN_CAT_COM)
|
||||||
|
return error_box("I codici categoria superiori o uguali\n a %d sono riservati alle Categorie Comuni",MIN_CAT_COM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TCCE_mask
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
class TCCE_mask : public TAutomask
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
TCCE_mask() : TAutomask("cetbcce") { }
|
||||||
|
virtual ~TCCE_mask() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bool TCCE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case DLG_ATTIV:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
TString app("ce0 -0 CCB");
|
||||||
|
TMailbox mail;
|
||||||
|
TString body; body.format("%d|%d=%s|%d=%s|%d=%s", F_CODSP_CCB, F_CODESER_CCB, (const char *)get(F_CODESER),
|
||||||
|
F_DATAINI_CCB, (const char *)get(F_DATAINI),
|
||||||
|
F_DATAFINE_CCB, (const char *)get(F_DATAFINE));
|
||||||
|
|
||||||
|
TMessage msg(app, MSG_FS, body);
|
||||||
|
mail.send(msg);
|
||||||
|
TExternal_app a(app);
|
||||||
|
a.run();
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TCEtables
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TCEtables : public TTable_application
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual TString& get_mask_name(TString& name) const;
|
||||||
|
virtual TMask* set_mask(TMask* m);
|
||||||
|
|
||||||
|
virtual int read(TMask& m);
|
||||||
|
virtual int write(const TMask& m);
|
||||||
|
virtual int rewrite(const TMask& m);
|
||||||
|
virtual bool remove();
|
||||||
|
virtual bool protected_record(TRectype& rec);
|
||||||
|
virtual void init_query_mode(TMask& m);
|
||||||
|
virtual void init_query_insert_mode(TMask& m);
|
||||||
|
};
|
||||||
|
|
||||||
|
TString& TCEtables::get_mask_name(TString& name) const
|
||||||
|
{
|
||||||
|
name = get_tabname();
|
||||||
|
if (name[0] == '%')
|
||||||
|
name = name.mid(1);
|
||||||
|
name.insert("cetb", 0);
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
TMask* TCEtables::set_mask(TMask* m)
|
||||||
|
{
|
||||||
|
if (m == NULL)
|
||||||
|
{
|
||||||
|
if (get_tabname() == "%TMC")
|
||||||
|
m = new TTMC_mask();
|
||||||
|
else
|
||||||
|
if (get_tabname() == "%CAC")
|
||||||
|
m = new TCAC_mask();
|
||||||
|
else
|
||||||
|
if (get_tabname() == "CCE")
|
||||||
|
m = new TCCE_mask();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString name; get_mask_name(name);
|
||||||
|
m = new TMask(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TTable_application::set_mask(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TCEtables::read(TMask& m)
|
||||||
|
{
|
||||||
|
const int err = TTable_application::read(m);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TCEtables::write(const TMask& m)
|
||||||
|
{
|
||||||
|
const int err = TTable_application::write(m);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TCEtables::rewrite(const TMask& m)
|
||||||
|
{
|
||||||
|
const int err = TTable_application::rewrite(m);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TCEtables::remove()
|
||||||
|
{
|
||||||
|
const bool ok = TTable_application::remove();
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TCEtables::protected_record(TRectype& rec)
|
||||||
|
{
|
||||||
|
if (get_tabname() == "%CGR")
|
||||||
|
{
|
||||||
|
TTable cat("%CAT");
|
||||||
|
const bool prot = FALSE;
|
||||||
|
|
||||||
|
const TString16 key(rec.get("CODTAB"));
|
||||||
|
cat.put("CODTAB", key);
|
||||||
|
if (cat.read(_isgteq) == NOERR)
|
||||||
|
return key == cat.get("CODTAB").left(2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (get_tabname() == "%CAT")
|
||||||
|
{
|
||||||
|
TTable cac("%CAC");
|
||||||
|
const bool prot = FALSE;
|
||||||
|
|
||||||
|
const TString16 key(rec.get("CODTAB"));
|
||||||
|
cac.put("CODTAB", key);
|
||||||
|
if (cac.read(_isgteq) == NOERR)
|
||||||
|
{
|
||||||
|
TString16 keyfound = cac.get("CODTAB").left(6); keyfound.trim();
|
||||||
|
return key == keyfound;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TTable_application::protected_record(rec);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCEtables::init_query_mode(TMask& m)
|
||||||
|
{
|
||||||
|
if (get_tabname() == "CCE")
|
||||||
|
{
|
||||||
|
m.show(F_CODESER,TRUE);
|
||||||
|
m.show(F_CODESERCONT,FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCEtables::init_query_insert_mode(TMask& m)
|
||||||
|
{
|
||||||
|
if (get_tabname() == "CCE")
|
||||||
|
{
|
||||||
|
m.show(F_CODESER,FALSE);
|
||||||
|
m.show(F_CODESERCONT,TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int ce0100(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
if (argc > 2)
|
||||||
|
{
|
||||||
|
TString name;
|
||||||
|
name << "Tabella " << argv[2];
|
||||||
|
TCEtables a;
|
||||||
|
a.run(argc, argv, name);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
57
ce/ce0400.cpp
Executable file
57
ce/ce0400.cpp
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
#include <confapp.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
#include "ce0400a.h"
|
||||||
|
|
||||||
|
class CE0_App : public TConfig_application
|
||||||
|
{
|
||||||
|
char _current;
|
||||||
|
protected:
|
||||||
|
virtual bool user_create();
|
||||||
|
//virtual bool preprocess_config (TMask& mask, TConfig& config);
|
||||||
|
public:
|
||||||
|
CE0_App() : TConfig_application(CONFIG_DITTA) {}
|
||||||
|
virtual ~CE0_App() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool CE0_App::user_create( )
|
||||||
|
{
|
||||||
|
const char* param = argv(2);
|
||||||
|
_current = param ? toupper(*param) : 'P'; //prendi terzo argomento, primo carattere, fallo maiuscolo; (se vuoto mettilo = P)
|
||||||
|
TConfig conf(CONFIG_DITTA, "ce"); // si posiziona sul paragrafo "ce" dei parametri ditta
|
||||||
|
switch( _current )
|
||||||
|
{
|
||||||
|
case 'C':
|
||||||
|
conf.set( "EdMask", "ce0400b");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
conf.set( "EdMask", "ce0400a");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
bool CE0_App::preprocess_config (TMask& mask, TConfig& config)
|
||||||
|
{
|
||||||
|
if (_current == 'P')
|
||||||
|
{
|
||||||
|
TTable tab("CCE");
|
||||||
|
for (int err = tab.first() ; err == NOERR; err = tab.next())
|
||||||
|
{
|
||||||
|
if (tab.get_bool("B6"))
|
||||||
|
{
|
||||||
|
mask.set(F_ESERCORR,tab.get("CODTAB"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
int ce0400 (int argc, char* argv[])
|
||||||
|
{
|
||||||
|
CE0_App appc;
|
||||||
|
appc.run(argc, argv, "Parametri Ditta");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
11
ce/ce0400a.h
Executable file
11
ce/ce0400a.h
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
// campi maschera ce0400a.msk
|
||||||
|
|
||||||
|
#define F_DATACONS 101
|
||||||
|
#define F_ANNOTUIR 102
|
||||||
|
#define F_ESERCORR 103
|
||||||
|
#define F_DATAINIZIO 104
|
||||||
|
#define F_DATAFINE 105
|
||||||
|
#define F_GRUPPOCORR 106
|
||||||
|
#define F_SPECIECORR 107
|
||||||
|
#define F_D_GRUPPOCORR 108
|
||||||
|
#define F_D_SPECIECORR 109
|
||||||
111
ce/ce0400a.uml
Executable file
111
ce/ce0400a.uml
Executable file
@ -0,0 +1,111 @@
|
|||||||
|
#include "ce0400a.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -2 0 2
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Parametri Ditta" -1 -1 78 10
|
||||||
|
|
||||||
|
DATE F_DATACONS
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Data conseguimento primi ricavi "
|
||||||
|
FIELD CADTR
|
||||||
|
END
|
||||||
|
|
||||||
|
RADIOBUTTON F_ANNOTUIR 30
|
||||||
|
BEGIN
|
||||||
|
FLAGS "Z"
|
||||||
|
PROMPT 1 3 "Anno inizio applicazione TUIR"
|
||||||
|
ITEM "0|1988"
|
||||||
|
ITEM "1|1989"
|
||||||
|
FIELD CATSU
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 76 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 6 "Esercizio/Attivita' corrente"
|
||||||
|
FLAGS "R"
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
NUMBER F_ESERCORR 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Esercizio "
|
||||||
|
FIELD CODESCORR
|
||||||
|
FLAGS "Z"
|
||||||
|
USE CCE
|
||||||
|
JOIN ESC ALIAS 105 INTO CODTAB==CODTAB
|
||||||
|
INPUT CODTAB F_ESERCORR
|
||||||
|
DISPLAY "Codice esercizio" CODTAB
|
||||||
|
DISPLAY "Data inizio" 105@->D0
|
||||||
|
DISPLAY "Data fine@10" 105@->D1
|
||||||
|
OUTPUT F_ESERCORR CODTAB
|
||||||
|
OUTPUT F_DATAINIZIO 105@->D0
|
||||||
|
OUTPUT F_DATAFINE 105@->D1
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATAINIZIO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 20 7 "Data inizio "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATAFINE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 7 "Data fine "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_GRUPPOCORR 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Gruppo "
|
||||||
|
FIELD GRUPPOCORR
|
||||||
|
FLAGS "Z"
|
||||||
|
USE CCB KEY 1
|
||||||
|
JOIN %CGR ALIAS 106 INTO CODTAB==CODTAB[5,6]
|
||||||
|
JOIN %CAT ALIAS 107 INTO CODTAB==CODTAB[5,10]
|
||||||
|
INPUT CODTAB[1,4] F_ESERCORR SELECT
|
||||||
|
INPUT CODTAB[5,6] F_GRUPPOCORR
|
||||||
|
INPUT CODTAB[7,10] F_SPECIECORR
|
||||||
|
DISPLAY "Gruppo" CODTAB[5,6]
|
||||||
|
DISPLAY "Specie" CODTAB[7,10]
|
||||||
|
DISPLAY "Descrizione@60" 107@->S0
|
||||||
|
OUTPUT F_GRUPPOCORR CODTAB[5,6]
|
||||||
|
OUTPUT F_D_GRUPPOCORR 106@->S0
|
||||||
|
OUTPUT F_SPECIECORR CODTAB[7,10]
|
||||||
|
OUTPUT F_D_SPECIECORR 107@->S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_GRUPPOCORR 60 58
|
||||||
|
BEGIN
|
||||||
|
PROMPT 17 8 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_SPECIECORR 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 9 "Specie "
|
||||||
|
FIELD SPECIECORR
|
||||||
|
FLAGS "_"
|
||||||
|
COPY ALL F_GRUPPOCORR
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_SPECIECORR 60 58
|
||||||
|
BEGIN
|
||||||
|
PROMPT 17 9 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
41
ce/ce0400b.h
Executable file
41
ce/ce0400b.h
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
// campi maschera ce0400b.msk
|
||||||
|
|
||||||
|
#define F_PLUSMINUS 101
|
||||||
|
#define F_TIPOSCRIT 102
|
||||||
|
|
||||||
|
#define F_ELIMCESP 104
|
||||||
|
#define F_D_ELIMCESP 105
|
||||||
|
#define F_RIL_DIFF 106
|
||||||
|
#define F_D_RIL_DIFF 107
|
||||||
|
#define F_RIL_QUOT 108
|
||||||
|
#define F_D_RIL_QUOT 109
|
||||||
|
#define F_RIL_PLUS 110
|
||||||
|
#define F_D_RIL_PLUS 111
|
||||||
|
#define F_RIL_MIN 112
|
||||||
|
#define F_D_RIL_MIN 113
|
||||||
|
|
||||||
|
#define F_SOPR_PAS_GR 120
|
||||||
|
#define F_SOPR_PAS_CO 121
|
||||||
|
#define F_SOPR_PAS_SO 122
|
||||||
|
#define F_SOPR_PAS_D 123
|
||||||
|
#define F_DIFF_QUO_GR 124
|
||||||
|
#define F_DIFF_QUO_CO 125
|
||||||
|
#define F_DIFF_QUO_SO 126
|
||||||
|
#define F_DIFF_QUO_D 127
|
||||||
|
#define F_DIFF_FON_GR 128
|
||||||
|
#define F_DIFF_FON_CO 129
|
||||||
|
#define F_DIFF_FON_SO 130
|
||||||
|
#define F_DIFF_FON_D 131
|
||||||
|
#define F_PLUSVAL_GR 132
|
||||||
|
#define F_PLUSVAL_CO 133
|
||||||
|
#define F_PLUSVAL_SO 134
|
||||||
|
#define F_PLUSVAL_D 135
|
||||||
|
#define F_MINUSVAL_GR 136
|
||||||
|
#define F_MINUSVAL_CO 137
|
||||||
|
#define F_MINUSVAL_SO 138
|
||||||
|
#define F_MINUSVAL_D 139
|
||||||
|
#define F_VEND_CESP_GR 140
|
||||||
|
#define F_VEND_CESP_CO 141
|
||||||
|
#define F_VEND_CESP_SO 142
|
||||||
|
#define F_VEND_CESP_D 143
|
||||||
|
|
||||||
606
ce/ce0400b.uml
Executable file
606
ce/ce0400b.uml
Executable file
@ -0,0 +1,606 @@
|
|||||||
|
#include "ce0400b.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -2 0 2
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -11 ""
|
||||||
|
PICTURE BMP_SAVEREC
|
||||||
|
PICTURE BMP_SAVERECDN
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE " Collegamenti contabili parametri per ditta " -1 -1 60 6
|
||||||
|
|
||||||
|
RADIOBUTTON F_PLUSMINUS 40
|
||||||
|
BEGIN
|
||||||
|
FLAGS "Z"
|
||||||
|
PROMPT 2 1 "Genera anche movimenti plus/minusvalenza"
|
||||||
|
ITEM "0|SI"
|
||||||
|
MESSAGE ENABLE,F_RIL_PLUS|ENABLE,F_D_RIL_PLUS|ENABLE,F_RIL_MIN|ENABLE,F_D_RIL_MIN|ENABLE,F_TIPOSCRIT
|
||||||
|
MESSAGE REQUIRED,F_PLUSVAL_SO|REQUIRED,F_MINUSVAL_SO
|
||||||
|
ITEM "1|NO"
|
||||||
|
MESSAGE CLEAR,F_RIL_PLUS|CLEAR,F_D_RIL_PLUS|CLEAR,F_RIL_MIN|CLEAR,F_D_RIL_MIN|CLEAR,F_TIPOSCRIT
|
||||||
|
MESSAGE NORMAL,F_PLUSVAL_SO|NORMAL,F_MINUSVAL_SO
|
||||||
|
FIELD COPLMN
|
||||||
|
END
|
||||||
|
|
||||||
|
LISTBOX F_TIPOSCRIT 1 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Tipo scrittura per vendita cespite "
|
||||||
|
ITEM "0|Su Conto Vendite"
|
||||||
|
MESSAGE ENABLE,F_VEND_CESP_GR|ENABLE,F_VEND_CESP_CO|ENABLE,F_VEND_CESP_SO|ENABLE,F_VEND_CESP_D
|
||||||
|
ITEM "1|Su Conto Cespite"
|
||||||
|
MESSAGE CLEAR,F_VEND_CESP_GR|CLEAR,F_VEND_CESP_CO|CLEAR,F_VEND_CESP_SO|CLEAR,F_VEND_CESP_D
|
||||||
|
FIELD COR5PM
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 6 "@B Cod. Causali"
|
||||||
|
FLAGS "R"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_ELIMCESP 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Eliminazione cespite "
|
||||||
|
FIELD COAUEL
|
||||||
|
USE LF_CAUSALI SELECT ((SOSPESO=="")&&(TIPODOC=="")&&(COLLCESP==""))
|
||||||
|
INPUT CODCAUS F_ELIMCESP
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_ELIMCESP CODCAUS
|
||||||
|
OUTPUT F_D_ELIMCESP DESCR
|
||||||
|
ADD RUN CG0 -4
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_ELIMCESP 50 35
|
||||||
|
BEGIN
|
||||||
|
PROMPT 40 7 ""
|
||||||
|
USE LF_CAUSALI KEY 2
|
||||||
|
INPUT DESCR F_D_ELIMCESP
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
COPY OUTPUT F_ELIMCESP
|
||||||
|
ADD RUN CG0 -4
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RIL_DIFF 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Rilevazione differenze "
|
||||||
|
FIELD COAUDI
|
||||||
|
USE LF_CAUSALI SELECT ((SOSPESO=="")&&(TIPODOC=="")&&(COLLCESP==""))
|
||||||
|
INPUT CODCAUS F_RIL_DIFF
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_RIL_DIFF CODCAUS
|
||||||
|
OUTPUT F_D_RIL_DIFF DESCR
|
||||||
|
ADD RUN CG0 -4
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_RIL_DIFF 50 35
|
||||||
|
BEGIN
|
||||||
|
PROMPT 40 8 ""
|
||||||
|
USE LF_CAUSALI KEY 2
|
||||||
|
INPUT DESCR F_D_RIL_DIFF
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
COPY OUTPUT F_RIL_DIFF
|
||||||
|
ADD RUN CG0 -4
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RIL_QUOT 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 9 "Rilevazione quote ammortamento "
|
||||||
|
FIELD COAUQU
|
||||||
|
USE LF_CAUSALI SELECT ((SOSPESO=="")&&(TIPODOC=="")&&(COLLCESP==""))
|
||||||
|
INPUT CODCAUS F_RIL_QUOT
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_RIL_QUOT CODCAUS
|
||||||
|
OUTPUT F_D_RIL_QUOT DESCR
|
||||||
|
ADD RUN CG0 -4
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_RIL_QUOT 50 35
|
||||||
|
BEGIN
|
||||||
|
PROMPT 40 9 ""
|
||||||
|
USE LF_CAUSALI KEY 2
|
||||||
|
INPUT DESCR F_D_RIL_QUOT
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
COPY OUTPUT F_RIL_QUOT
|
||||||
|
ADD RUN CG0 -4
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RIL_PLUS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "Rilevazione plusvalenze "
|
||||||
|
FIELD COAUPL
|
||||||
|
USE LF_CAUSALI SELECT ((SOSPESO=="")&&(TIPODOC=="")&&(COLLCESP==""))
|
||||||
|
INPUT CODCAUS F_RIL_PLUS
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_RIL_PLUS CODCAUS
|
||||||
|
OUTPUT F_D_RIL_PLUS DESCR
|
||||||
|
ADD RUN CG0 -4
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_RIL_PLUS 50 35
|
||||||
|
BEGIN
|
||||||
|
PROMPT 40 10 ""
|
||||||
|
USE LF_CAUSALI KEY 2
|
||||||
|
INPUT DESCR F_D_RIL_PLUS
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
COPY OUTPUT F_RIL_PLUS
|
||||||
|
ADD RUN CG0 -4
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RIL_MIN 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 11 "Rilevazione minusvalenze "
|
||||||
|
FIELD COAUM
|
||||||
|
USE LF_CAUSALI SELECT ((SOSPESO=="")&&(TIPODOC=="")&&(COLLCESP==""))
|
||||||
|
INPUT CODCAUS F_RIL_MIN
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_RIL_MIN CODCAUS
|
||||||
|
OUTPUT F_D_RIL_MIN DESCR
|
||||||
|
ADD RUN CG0 -4
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_RIL_MIN 50 35
|
||||||
|
BEGIN
|
||||||
|
PROMPT 40 11 ""
|
||||||
|
USE LF_CAUSALI KEY 2
|
||||||
|
INPUT DESCR F_D_RIL_MIN
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Codice" CODCAUS
|
||||||
|
COPY OUTPUT F_RIL_MIN
|
||||||
|
ADD RUN CG0 -4
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 8
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 14 "@B Gr. Co. S.co. Descrizione"
|
||||||
|
FLAGS "R"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_SOPR_PAS_GR 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 "Sopravvenienze passive "
|
||||||
|
FIELD GRCOTELI
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT CONTO=""
|
||||||
|
INPUT GRUPPO F_SOPR_PAS_GR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_SOPR_PAS_GR GRUPPO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_SOPR_PAS_CO 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 31 15 ""
|
||||||
|
FIELD COCOTELI
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO=""))
|
||||||
|
COPY INPUT F_SOPR_PAS_GR
|
||||||
|
INPUT CONTO F_SOPR_PAS_CO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_SOPR_PAS_GR GRUPPO
|
||||||
|
OUTPUT F_SOPR_PAS_CO CONTO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
VALIDATE REQIF_FUNC 1 F_SOPR_PAS_SO
|
||||||
|
WARNING "Manca il conto"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_SOPR_PAS_SO 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 37 15 ""
|
||||||
|
FIELD SOCOTELI
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||||
|
COPY INPUT F_SOPR_PAS_CO
|
||||||
|
INPUT SOTTOCONTO F_SOPR_PAS_SO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_SOPR_PAS_SO SOTTOCONTO
|
||||||
|
OUTPUT F_SOPR_PAS_GR GRUPPO
|
||||||
|
OUTPUT F_SOPR_PAS_CO CONTO
|
||||||
|
OUTPUT F_SOPR_PAS_D DESCR
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_SOPR_PAS_D 50 29
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 15 ""
|
||||||
|
USE LF_PCON KEY 2
|
||||||
|
INPUT DESCR F_SOPR_PAS_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F_SOPR_PAS_SO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Manca la descrizione"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_DIFF_QUO_GR 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 16 "Differenze su quote "
|
||||||
|
FIELD GRCOTDIQ
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT CONTO=""
|
||||||
|
INPUT GRUPPO F_DIFF_QUO_GR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_DIFF_QUO_GR GRUPPO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_DIFF_QUO_CO 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 31 16 ""
|
||||||
|
FIELD COCOTDIQ
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO=""))
|
||||||
|
COPY INPUT F_DIFF_QUO_GR
|
||||||
|
INPUT CONTO F_DIFF_QUO_CO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_DIFF_QUO_GR GRUPPO
|
||||||
|
OUTPUT F_DIFF_QUO_CO CONTO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
VALIDATE REQIF_FUNC 1 F_DIFF_QUO_SO
|
||||||
|
WARNING "Manca il conto"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_DIFF_QUO_SO 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 37 16 ""
|
||||||
|
FIELD SOCOTDIQ
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||||
|
COPY INPUT F_DIFF_QUO_CO
|
||||||
|
INPUT SOTTOCONTO F_DIFF_QUO_SO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_DIFF_QUO_SO SOTTOCONTO
|
||||||
|
OUTPUT F_DIFF_QUO_GR GRUPPO
|
||||||
|
OUTPUT F_DIFF_QUO_CO CONTO
|
||||||
|
OUTPUT F_DIFF_QUO_D DESCR
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DIFF_QUO_D 50 29
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 16 ""
|
||||||
|
USE LF_PCON KEY 2
|
||||||
|
INPUT DESCR F_DIFF_QUO_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F_DIFF_QUO_SO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Manca la descrizione"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_DIFF_FON_GR 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 17 "Differenze su fondi "
|
||||||
|
FIELD GRCOTDIF
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT CONTO=""
|
||||||
|
INPUT GRUPPO F_DIFF_FON_GR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_DIFF_FON_GR GRUPPO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_DIFF_FON_CO 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 31 17 ""
|
||||||
|
FIELD COCOTDIF
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO=""))
|
||||||
|
COPY INPUT F_DIFF_FON_GR
|
||||||
|
INPUT CONTO F_DIFF_FON_CO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_DIFF_FON_GR GRUPPO
|
||||||
|
OUTPUT F_DIFF_FON_CO CONTO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
VALIDATE REQIF_FUNC 1 F_DIFF_FON_SO
|
||||||
|
WARNING "Manca il conto"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_DIFF_FON_SO 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 37 17 ""
|
||||||
|
FIELD SOCOTDIF
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||||
|
COPY INPUT F_DIFF_FON_CO
|
||||||
|
INPUT SOTTOCONTO F_DIFF_FON_SO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_DIFF_FON_SO SOTTOCONTO
|
||||||
|
OUTPUT F_DIFF_FON_GR GRUPPO
|
||||||
|
OUTPUT F_DIFF_FON_CO CONTO
|
||||||
|
OUTPUT F_DIFF_FON_D DESCR
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DIFF_FON_D 50 29
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 17 ""
|
||||||
|
USE LF_PCON KEY 2
|
||||||
|
INPUT DESCR F_DIFF_FON_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F_DIFF_FON_SO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Manca la descrizione"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_PLUSVAL_GR 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 18 "Plusvalenze "
|
||||||
|
FIELD GRCOTPLU
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT CONTO=""
|
||||||
|
INPUT GRUPPO F_PLUSVAL_GR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_PLUSVAL_GR GRUPPO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_PLUSVAL_CO 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 31 18 ""
|
||||||
|
FIELD COCOTPLU
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO="")&&(INDBIL==4))
|
||||||
|
COPY INPUT F_PLUSVAL_GR
|
||||||
|
INPUT CONTO F_PLUSVAL_CO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_PLUSVAL_GR GRUPPO
|
||||||
|
OUTPUT F_PLUSVAL_CO CONTO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
VALIDATE REQIF_FUNC 1 F_PLUSVAL_SO
|
||||||
|
WARNING "Manca il conto"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_PLUSVAL_SO 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 37 18 ""
|
||||||
|
FIELD SOCOTPLU
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F_PLUSVAL_GR SELECT
|
||||||
|
INPUT CONTO F_PLUSVAL_CO SELECT
|
||||||
|
INPUT SOTTOCONTO F_PLUSVAL_SO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_PLUSVAL_SO SOTTOCONTO
|
||||||
|
OUTPUT F_PLUSVAL_GR GRUPPO
|
||||||
|
OUTPUT F_PLUSVAL_CO CONTO
|
||||||
|
OUTPUT F_PLUSVAL_D DESCR
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_PLUSVAL_D 50 29
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 18 ""
|
||||||
|
USE LF_PCON KEY 2
|
||||||
|
INPUT DESCR F_PLUSVAL_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F_PLUSVAL_SO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Manca la descrizione"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_MINUSVAL_GR 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 19 "Minusvalenze "
|
||||||
|
FIELD GRCOTMIN
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT CONTO=""
|
||||||
|
INPUT GRUPPO F_MINUSVAL_GR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_MINUSVAL_GR GRUPPO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_MINUSVAL_CO 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 31 19 ""
|
||||||
|
FIELD COCOTMIN
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO="")&&(INDBIL==3))
|
||||||
|
COPY INPUT F_MINUSVAL_GR
|
||||||
|
INPUT CONTO F_MINUSVAL_CO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_MINUSVAL_GR GRUPPO
|
||||||
|
OUTPUT F_MINUSVAL_CO CONTO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
VALIDATE REQIF_FUNC 1 F_MINUSVAL_SO
|
||||||
|
WARNING "Manca il conto"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_MINUSVAL_SO 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 37 19 ""
|
||||||
|
FIELD SOCOTMIN
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F_MINUSVAL_GR SELECT
|
||||||
|
INPUT CONTO F_MINUSVAL_CO SELECT
|
||||||
|
INPUT SOTTOCONTO F_MINUSVAL_SO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_MINUSVAL_SO SOTTOCONTO
|
||||||
|
OUTPUT F_MINUSVAL_GR GRUPPO
|
||||||
|
OUTPUT F_MINUSVAL_CO CONTO
|
||||||
|
OUTPUT F_MINUSVAL_D DESCR
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_MINUSVAL_D 50 29
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 19 ""
|
||||||
|
USE LF_PCON KEY 2
|
||||||
|
INPUT DESCR F_MINUSVAL_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F_MINUSVAL_SO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Manca la descrizione"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_VEND_CESP_GR 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 20 "Vendite cespiti "
|
||||||
|
FIELD GRCOTVEN
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT CONTO=""
|
||||||
|
INPUT GRUPPO F_VEND_CESP_GR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_VEND_CESP_GR GRUPPO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_VEND_CESP_CO 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 31 20 ""
|
||||||
|
FIELD COCOTVEN
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO=""))
|
||||||
|
COPY INPUT F_VEND_CESP_GR
|
||||||
|
INPUT CONTO F_VEND_CESP_CO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_VEND_CESP_GR GRUPPO
|
||||||
|
OUTPUT F_VEND_CESP_CO CONTO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
VALIDATE REQIF_FUNC 1 F_VEND_CESP_SO
|
||||||
|
WARNING "Manca il conto"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_VEND_CESP_SO 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 37 20 ""
|
||||||
|
FIELD SOCOTVEN
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||||
|
COPY INPUT F_VEND_CESP_CO
|
||||||
|
INPUT SOTTOCONTO F_VEND_CESP_SO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_VEND_CESP_SO SOTTOCONTO
|
||||||
|
OUTPUT F_VEND_CESP_GR GRUPPO
|
||||||
|
OUTPUT F_VEND_CESP_CO CONTO
|
||||||
|
OUTPUT F_VEND_CESP_D DESCR
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_VEND_CESP_D 50 29
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 20 ""
|
||||||
|
USE LF_PCON KEY 2
|
||||||
|
INPUT DESCR F_VEND_CESP_D
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Sosp." SOSPESO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F_VEND_CESP_SO
|
||||||
|
ADD RUN CG0 -0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Manca la descrizione"
|
||||||
|
END
|
||||||
90
ce/ce0500.cpp
Executable file
90
ce/ce0500.cpp
Executable file
@ -0,0 +1,90 @@
|
|||||||
|
#include <automask.h>
|
||||||
|
#include <relapp.h>
|
||||||
|
|
||||||
|
#include "ce0.h"
|
||||||
|
|
||||||
|
class TQuery_mask : public TAutomask
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
public:
|
||||||
|
TQuery_mask() : TAutomask("ce0500a") { }
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TQuery_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TEdit_mask : public TAutomask
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
public:
|
||||||
|
TEdit_mask() : TAutomask("ce0500b") { }
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TEdit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TAnacespi : public TRelation_application
|
||||||
|
{
|
||||||
|
TRelation* _cespiti;
|
||||||
|
TQuery_mask* _qmask;
|
||||||
|
TEdit_mask* _emask;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// @cmember Inizializzazione dei dati dell'utente
|
||||||
|
virtual bool user_create();
|
||||||
|
// @cmember Distruzione dei dati dell'utente
|
||||||
|
virtual bool user_destroy();
|
||||||
|
virtual bool changing_mask(int mode);
|
||||||
|
// @cmember Richiede la maschera da usare
|
||||||
|
virtual TMask* get_mask(int mode);
|
||||||
|
// @cmember Ritorna la relazione da modificare
|
||||||
|
virtual TRelation* get_relation() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TAnacespi::changing_mask(int)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
TMask* TAnacespi::get_mask(int mode)
|
||||||
|
{
|
||||||
|
return mode == MODE_QUERY ? (TMask*)_qmask : (TMask*)_emask;
|
||||||
|
}
|
||||||
|
|
||||||
|
TRelation* TAnacespi::get_relation() const
|
||||||
|
{
|
||||||
|
return _cespiti;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TAnacespi::user_create()
|
||||||
|
{
|
||||||
|
open_files(LF_TABCOM, LF_TAB, LF_CESPI, LF_SALCE, 0);
|
||||||
|
_cespiti = new TRelation(LF_CESPI);
|
||||||
|
_qmask = new TQuery_mask;
|
||||||
|
_emask = new TEdit_mask;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TAnacespi::user_destroy()
|
||||||
|
{
|
||||||
|
delete _emask;
|
||||||
|
delete _qmask;
|
||||||
|
delete _cespiti;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ce0500(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TAnacespi a;
|
||||||
|
a.run(argc, argv, "Anagrafica cespiti");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
836
ce/ce0900.cpp
Executable file
836
ce/ce0900.cpp
Executable file
@ -0,0 +1,836 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <isam.h>
|
||||||
|
#include <mask.h>
|
||||||
|
#include <prefix.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <relation.h>
|
||||||
|
#include <sheet.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
|
||||||
|
#include <nditte.h>
|
||||||
|
|
||||||
|
#include "ce0.h"
|
||||||
|
#include "ce0900a.h"
|
||||||
|
#include "../cg/cglib01.h"
|
||||||
|
|
||||||
|
#define CAMPODITTA "CAMPODITTA"
|
||||||
|
|
||||||
|
class TConversione_ce_mask : public TAutomask
|
||||||
|
{
|
||||||
|
TRelation* _rel;
|
||||||
|
TCursor* _cur;
|
||||||
|
TCursor_sheet* _sheet;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
public:
|
||||||
|
TCursor_sheet& sheet() {return *_sheet;}
|
||||||
|
void lista_ditte(TAssoc_array& ditte);
|
||||||
|
TConversione_ce_mask();
|
||||||
|
~TConversione_ce_mask();
|
||||||
|
};
|
||||||
|
|
||||||
|
static bool esiste_ditta(const TRelation* rel)
|
||||||
|
{
|
||||||
|
const long ditta = rel->curr().get_long(NDT_CODDITTA);
|
||||||
|
return prefix().exist(ditta);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TConversione_ce_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F_SCELTADITTE:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
sheet().run();
|
||||||
|
set(F_DITTESELEZ, sheet().checked());
|
||||||
|
}
|
||||||
|
if (e == fe_close)
|
||||||
|
if (sheet().checked() == 0)
|
||||||
|
return error_box("Non sono state selezionate ditte da convertire");
|
||||||
|
break;
|
||||||
|
case F_DITTESELEZ:
|
||||||
|
if (e == fe_init)
|
||||||
|
o.set(sheet().checked());
|
||||||
|
break;
|
||||||
|
case F_MINISTERIALI:
|
||||||
|
if (e == fe_init)
|
||||||
|
{
|
||||||
|
TTable cgr("%CGR");
|
||||||
|
const bool empty = cgr.first() != NOERR;
|
||||||
|
o.set(empty ? "X": " ");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TConversione_ce_mask::lista_ditte(TAssoc_array& ditte)
|
||||||
|
{
|
||||||
|
ditte.destroy();
|
||||||
|
for (long i = sheet().items()-1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if (sheet().checked(i))
|
||||||
|
{
|
||||||
|
const char* codditta = sheet().row(i).get(1);
|
||||||
|
ditte.add(codditta);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TConversione_ce_mask::TConversione_ce_mask()
|
||||||
|
: TAutomask("ce0900a")
|
||||||
|
{
|
||||||
|
_rel = new TRelation(LF_NDITTE);
|
||||||
|
_cur = new TCursor(_rel);
|
||||||
|
_cur->set_filterfunction(esiste_ditta);
|
||||||
|
_sheet = new TCursor_sheet(_cur, " |CODDITTA|RAGSOC", "Selezione ditte", "@1|Codice|Ragione sociale@50", 0, 1);
|
||||||
|
_sheet->check(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
TConversione_ce_mask::~TConversione_ce_mask()
|
||||||
|
{
|
||||||
|
delete _sheet;
|
||||||
|
delete _cur;
|
||||||
|
delete _rel;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TConversione_cespiti: public TSkeleton_application
|
||||||
|
{
|
||||||
|
FILE * _log;
|
||||||
|
TAssoc_array _ditte;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool create(void);
|
||||||
|
virtual void main_loop();
|
||||||
|
virtual bool destroy(void) ;
|
||||||
|
void open_log();
|
||||||
|
void write_log(const char * line);
|
||||||
|
void close_log();
|
||||||
|
int zap_file(int lf) const;
|
||||||
|
public:
|
||||||
|
bool daconvertire(const long ditta);
|
||||||
|
int conv_file(const TFilename& ofname, int nflogicnum);
|
||||||
|
int conv_inifile(const TFilename& ofname, const char* ofpar, int nflogicnum);
|
||||||
|
int conv_tab(const TFilename& ofname, const char* cod);
|
||||||
|
int conv_par(const TFilename& ofname, const char* ofpar, int which_config);
|
||||||
|
int get_codesc(const TDate& date, const bool fatal = TRUE);
|
||||||
|
const char conv_imptmc(int cod);
|
||||||
|
TConversione_cespiti() {}
|
||||||
|
virtual ~TConversione_cespiti() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TConversione_cespiti::create()
|
||||||
|
{
|
||||||
|
return TSkeleton_application::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TConversione_cespiti::destroy()
|
||||||
|
{
|
||||||
|
return TSkeleton_application::destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TConversione_cespiti::daconvertire(const long ditta)
|
||||||
|
{
|
||||||
|
TString16 strditta;
|
||||||
|
strditta.format("%ld", ditta);
|
||||||
|
return _ditte.is_key(strditta);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TConversione_cespiti::main_loop()
|
||||||
|
{
|
||||||
|
TConversione_ce_mask msk;
|
||||||
|
if (msk.run() == K_ENTER)
|
||||||
|
{
|
||||||
|
if (yesno_box("Confermare la conversione dei cespiti?"))
|
||||||
|
{
|
||||||
|
msk.lista_ditte(_ditte);
|
||||||
|
open_log();
|
||||||
|
TString80 s;
|
||||||
|
write_log("");
|
||||||
|
write_log("**********************************");
|
||||||
|
s.format("Conversione cespiti del %s", (const char *) TDate(TODAY).string());
|
||||||
|
write_log(s);
|
||||||
|
write_log("**********************************");
|
||||||
|
write_log("");
|
||||||
|
|
||||||
|
const char* studio = prefix().get_studio();
|
||||||
|
const bool converti_ministeriali = msk.get_bool(F_MINISTERIALI);
|
||||||
|
// conversione archivi
|
||||||
|
TFilename file = studio;
|
||||||
|
file << "cesp/ammce";
|
||||||
|
conv_file(file, 136);
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/ammmv";
|
||||||
|
conv_file(file, 137);
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/catdi";
|
||||||
|
conv_file(file, 138);
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/cespi";
|
||||||
|
conv_file(file, 139);
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/movam";
|
||||||
|
conv_file(file, 141);
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/movce";
|
||||||
|
conv_file(file, 142);
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/salce";
|
||||||
|
conv_file(file, 143);
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/coll01";
|
||||||
|
conv_inifile(file, "COLL01", 140);
|
||||||
|
// conversione tabelle
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/ditcb";
|
||||||
|
conv_tab(file, "CCB");
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/ditce";
|
||||||
|
conv_tab(file, "CCE");
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/tabimp";
|
||||||
|
conv_tab(file, "CIM");
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/tabloc";
|
||||||
|
conv_tab(file, "LOC");
|
||||||
|
if (converti_ministeriali)
|
||||||
|
{
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/tabat";
|
||||||
|
conv_tab(file, "%CAT");
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/tabca";
|
||||||
|
conv_tab(file, "%CAC");
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/tabgr";
|
||||||
|
conv_tab(file, "%CGR");
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/limit";
|
||||||
|
conv_tab(file, "%CLM");
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/tmvce";
|
||||||
|
conv_tab(file, "%TMC");
|
||||||
|
}
|
||||||
|
// conversione parametri
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/ditc01";
|
||||||
|
conv_par(file, "DITC01", CONFIG_DITTA);
|
||||||
|
file = studio;
|
||||||
|
file << "cesp/ditca";
|
||||||
|
conv_par(file, "DITCA", CONFIG_DITTA);
|
||||||
|
message_box("Conversione completata");
|
||||||
|
close_log();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TConversione_cespiti::open_log()
|
||||||
|
{
|
||||||
|
TFilename log;
|
||||||
|
|
||||||
|
log << "ceconv.log";
|
||||||
|
_log = fopen(log,"a");
|
||||||
|
if (_log == NULL)
|
||||||
|
fatal_box("Non posso aprire il file di log della conversione(%s)", (const char *) log);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TConversione_cespiti::write_log(const char * line)
|
||||||
|
{
|
||||||
|
fprintf(_log,"%s\n", line);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TConversione_cespiti::close_log()
|
||||||
|
{
|
||||||
|
fclose(_log);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TConversione_cespiti::conv_file(const TFilename& ofname, int nflogicnum)
|
||||||
|
{
|
||||||
|
long oldditta = -1;
|
||||||
|
long ditta;
|
||||||
|
TDir d;
|
||||||
|
d.get(nflogicnum);
|
||||||
|
d.eod() = 0L;
|
||||||
|
d.put(nflogicnum);
|
||||||
|
//resetta i files di destinazione prima di scriverci sopra
|
||||||
|
int err = zap_file(nflogicnum);
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
TExternisamfile* oldfile = new TExternisamfile(ofname, FALSE, FALSE);
|
||||||
|
TLocalisamfile* newfile = new TLocalisamfile(nflogicnum);
|
||||||
|
TRectype oldrec = oldfile->curr();
|
||||||
|
TRectype newrec = newfile->curr();
|
||||||
|
TProgind *pi;
|
||||||
|
TString80 message;
|
||||||
|
message.format("Conversione tabella %s", (const char*) ofname);
|
||||||
|
pi = new TProgind(oldfile->eod(),message, FALSE, TRUE, 10);
|
||||||
|
pi->setstatus(1);
|
||||||
|
|
||||||
|
bool to_convert = FALSE;
|
||||||
|
for (int err = oldfile->first(); err == NOERR; err = oldfile->next())
|
||||||
|
{
|
||||||
|
pi->addstatus(1);
|
||||||
|
// mi posiziono sulla ditta indicata
|
||||||
|
ditta = oldfile->get_long("CODDITTA");
|
||||||
|
// i record sono ordinati per ditta!
|
||||||
|
if (oldditta != ditta)
|
||||||
|
{
|
||||||
|
oldditta = ditta;
|
||||||
|
to_convert = daconvertire(ditta);
|
||||||
|
if (to_convert)
|
||||||
|
set_firm(ditta);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString s;
|
||||||
|
s.format("La ditta %ld indicata nel file %s non é stata selezionata per la conversione", ditta, (const char*) ofname);
|
||||||
|
write_log(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!to_convert)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// creo nuovo record
|
||||||
|
newrec.zero();
|
||||||
|
// setto i campi con lo stesso nome
|
||||||
|
for (int i = 0; i < oldrec.items(); i++)
|
||||||
|
{
|
||||||
|
const char* fieldname = oldrec.fieldname(i);
|
||||||
|
if (newrec.exist(fieldname))
|
||||||
|
{
|
||||||
|
newrec.put(fieldname, oldfile->get(fieldname));
|
||||||
|
if ((newrec.type(fieldname) != oldrec.type(fieldname)) && (newrec.type(fieldname)==_alfafld))
|
||||||
|
{
|
||||||
|
TString stringa = newrec.get(fieldname);
|
||||||
|
stringa.right_just(newrec.length(fieldname),'0');
|
||||||
|
newrec.put(fieldname, stringa);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// setto i campi che vanno elaborati pirsunalmente di pirsuna (nomi diversi)
|
||||||
|
switch (nflogicnum)
|
||||||
|
{
|
||||||
|
case 136:
|
||||||
|
{
|
||||||
|
TString80 codes;
|
||||||
|
codes.format("%04d",get_codesc(oldfile->get_date("DTINES")));
|
||||||
|
newrec.put("CODES", codes);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 138:
|
||||||
|
{
|
||||||
|
TString80 codes;
|
||||||
|
codes.format("%04d",get_codesc(oldfile->get_date("DTINES")));
|
||||||
|
newrec.put("CODES", codes);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 139:
|
||||||
|
{
|
||||||
|
newrec.put("CODCGRA", oldfile->get("AG0CGR"));
|
||||||
|
newrec.put("CODSPA", oldfile->get("ATACSP"));
|
||||||
|
newrec.put("CODCGR", oldfile->get("G0CGR"));
|
||||||
|
newrec.put("CODSP", oldfile->get("TACSP"));
|
||||||
|
newrec.put("CODCAT", oldfile->get("G0CCT"));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 142:
|
||||||
|
{
|
||||||
|
newrec.put("CODMOV", oldfile->get("TPMOV"));
|
||||||
|
newrec.put("STAMPATO", oldfile->get("STBOLLATO"));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 143:
|
||||||
|
{
|
||||||
|
TString8 codes;
|
||||||
|
codes.format("%04d",get_codesc(oldfile->get_date("DTINES")));
|
||||||
|
newrec.put("CODES", codes);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// scrivo il record sul nuovo file
|
||||||
|
int errore = newrec.write(*newfile);
|
||||||
|
}
|
||||||
|
delete pi;
|
||||||
|
delete newfile;
|
||||||
|
delete oldfile;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
error_box("Errore in compattamento dati.\nFile %d : %d", nflogicnum,err);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TConversione_cespiti::conv_tab(const TFilename& ofname, const char* tab)
|
||||||
|
{
|
||||||
|
long oldditta = -1;
|
||||||
|
long ditta;
|
||||||
|
TExternisamfile* oldfile = new TExternisamfile(ofname, FALSE, FALSE);
|
||||||
|
const bool tabella_comune = (tab[0] == '%');
|
||||||
|
TTable* newtab = new TTable(tab);
|
||||||
|
for (newtab->first(); !newtab->eof(); newtab->next())
|
||||||
|
newtab->remove();
|
||||||
|
delete newtab;
|
||||||
|
int err;
|
||||||
|
if (tabella_comune)
|
||||||
|
{
|
||||||
|
TSystemisamfile f(LF_TABCOM);
|
||||||
|
err = f.pack();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TSystemisamfile f(LF_TAB);
|
||||||
|
err = f.pack();
|
||||||
|
}
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
TTable* newfile = new TTable(tab);
|
||||||
|
TConfig config("ce0900.ini", tab);
|
||||||
|
TAssoc_array& fieldlist = config.list_variables();
|
||||||
|
TString16 campoditta = (TString&) config.get(CAMPODITTA);
|
||||||
|
TString fieldname, fieldvalue;
|
||||||
|
TRectype oldrec = oldfile->curr();
|
||||||
|
TRectype newrec = newfile->curr();
|
||||||
|
TProgind *pi;
|
||||||
|
TString80 message;
|
||||||
|
message.format("Conversione tabella %s", (const char*) ofname);
|
||||||
|
pi = new TProgind(oldfile->eod(),message, FALSE, TRUE, 10);
|
||||||
|
pi->setstatus(1);
|
||||||
|
for (int err = oldfile->first(); err == NOERR; err = oldfile->next())
|
||||||
|
{
|
||||||
|
pi->addstatus(1);
|
||||||
|
if (tabella_comune)
|
||||||
|
ditta = -1;
|
||||||
|
else
|
||||||
|
ditta = oldfile->get_long(campoditta);
|
||||||
|
// mi posiziono sulla ditta indicata
|
||||||
|
// i record sono ordinati per ditta!
|
||||||
|
if (oldditta != ditta)
|
||||||
|
{
|
||||||
|
oldditta = ditta;
|
||||||
|
if (daconvertire(ditta))
|
||||||
|
set_firm(ditta);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString256 s;
|
||||||
|
s.format("La ditta %ld indicata nel file %s non é stata selezionata per la conversione", ditta, (const char*) ofname);
|
||||||
|
write_log(s);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// creo nuovo record
|
||||||
|
newrec.zero();
|
||||||
|
// setto i campi indicati
|
||||||
|
FOR_EACH_ASSOC_STRING(fieldlist, obj, key, str)
|
||||||
|
{
|
||||||
|
fieldname = key;
|
||||||
|
fieldvalue = str;
|
||||||
|
if ((fieldname != CAMPODITTA) && (fieldvalue[0]!='!') && (fieldvalue[0]!='?'))
|
||||||
|
newrec.put(key, oldfile->get(str));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (fieldvalue[0] == '?')
|
||||||
|
newrec.put(key,fieldvalue.sub(1));
|
||||||
|
else if (fieldvalue == "!_ESERCIZIO2")
|
||||||
|
{
|
||||||
|
TString80 codtab, tmp;
|
||||||
|
codtab.format("%04d",get_codesc(oldfile->get_date("CBDTI")));
|
||||||
|
tmp = oldfile->get("CBCGR");
|
||||||
|
tmp.right_just(2,'0');
|
||||||
|
codtab << tmp;
|
||||||
|
tmp = oldfile->get("CBCSP");
|
||||||
|
codtab << tmp;
|
||||||
|
newrec.put(key, codtab);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_ESERCIZIO")
|
||||||
|
{
|
||||||
|
TString80 codtab;
|
||||||
|
codtab.format("%04d",get_codesc(oldfile->get_date("CADTI")));
|
||||||
|
newrec.put(key, codtab);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_CODIMP")
|
||||||
|
{
|
||||||
|
TString80 codtab;
|
||||||
|
codtab.format("%10d",oldfile->get_long("CODIMP"));
|
||||||
|
codtab.right_just(10,'0');
|
||||||
|
newrec.put(key, codtab);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_CODLOC")
|
||||||
|
{
|
||||||
|
TString80 codtab;
|
||||||
|
codtab.format("%10d",oldfile->get_long("CODLOC"));
|
||||||
|
codtab.right_just(10,'0');
|
||||||
|
newrec.put(key, codtab);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_CAT1")
|
||||||
|
{
|
||||||
|
TString16 codtab;
|
||||||
|
const int gruppo = oldfile->get_int("TACGR");
|
||||||
|
const TString16 specie(oldfile->get("TACSP"));
|
||||||
|
codtab.format("%02d%s", gruppo,(const char*) specie);
|
||||||
|
newrec.put(key, codtab);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_CAC1")
|
||||||
|
{
|
||||||
|
TString16 codtab;
|
||||||
|
const int gruppo = oldfile->get_int("G0CGR");
|
||||||
|
const TString16 specie(oldfile->get("TACSP"));
|
||||||
|
const int categoria(oldfile->get_int("G0CCT"));
|
||||||
|
if (gruppo == 0)
|
||||||
|
codtab.format(" %02d",categoria);
|
||||||
|
else
|
||||||
|
codtab.format("%02d%-4s%02d", gruppo,(const char*) specie, categoria);
|
||||||
|
newrec.put(key, codtab);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_CAC2")
|
||||||
|
{
|
||||||
|
TString80 codtab;
|
||||||
|
int cod = oldfile->get_int("G0TCS");
|
||||||
|
newrec.put(key, cod - 1);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_CLM1")
|
||||||
|
{
|
||||||
|
TString80 codtab;
|
||||||
|
TDate data = oldfile->get_date("DTVALIM");
|
||||||
|
codtab.format("%04d%2d%02d",data.year(),data.month(),data.day());
|
||||||
|
newrec.put(key, codtab);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_CGR1")
|
||||||
|
{
|
||||||
|
TString80 codtab;
|
||||||
|
codtab.format("%02d",oldfile->get_int("G0CGR"));
|
||||||
|
newrec.put(key, codtab);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_TMC1")
|
||||||
|
{
|
||||||
|
TString80 cod = "";
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP01"));
|
||||||
|
cod << " ";
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP03"));
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP04"));
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP05"));
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP06"));
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP07"));
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP08"));
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP09"));
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP10"));
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP11"));
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP12"));
|
||||||
|
cod << conv_imptmc(oldfile->get_int("IMP13"));
|
||||||
|
newrec.put(key, cod);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_TMC2")
|
||||||
|
{
|
||||||
|
int num = oldfile->get_int("M0TTBL");
|
||||||
|
TString16 cod;
|
||||||
|
switch (num)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
cod = "I";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
cod = "E";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
cod = "P";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
cod = "R";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
cod = " ";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cod = " ";
|
||||||
|
}
|
||||||
|
newrec.put(key, cod);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_TMC3")
|
||||||
|
{
|
||||||
|
TString16 cod;
|
||||||
|
int num = oldfile->get_int("M0SEGN");
|
||||||
|
switch (num)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
cod = "=";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
cod = "+";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
cod = "-";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cod = " ";
|
||||||
|
}
|
||||||
|
newrec.put(key, cod);
|
||||||
|
}
|
||||||
|
else if (fieldvalue == "!_CCE1")
|
||||||
|
{
|
||||||
|
TString16 cod;
|
||||||
|
int num = oldfile->get_int("CATAR");
|
||||||
|
switch (num)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
cod = "+";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
cod = "-";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
cod = "/";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cod = " ";
|
||||||
|
}
|
||||||
|
newrec.put(key, cod);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// scrivo il record sul nuovo file
|
||||||
|
int errore = newrec.write(*newfile);
|
||||||
|
}
|
||||||
|
delete pi;
|
||||||
|
delete newfile;
|
||||||
|
}
|
||||||
|
delete oldfile;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TConversione_cespiti::conv_inifile(const TFilename& ofname, const char* ofpar, int nflogicnum)
|
||||||
|
{
|
||||||
|
long oldditta = -1;
|
||||||
|
long ditta;
|
||||||
|
TDir d;
|
||||||
|
d.get(nflogicnum);
|
||||||
|
d.eod() = 0L;
|
||||||
|
d.put(nflogicnum);
|
||||||
|
TSystemisamfile f(nflogicnum);
|
||||||
|
int err = f.pack();
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
TExternisamfile* oldfile = new TExternisamfile(ofname, FALSE, FALSE);
|
||||||
|
TLocalisamfile* newfile = new TLocalisamfile(nflogicnum);
|
||||||
|
TConfig config("ce0900.ini", (const char*) ofpar);
|
||||||
|
TAssoc_array& fieldlist = config.list_variables();
|
||||||
|
TString& campoditta = (TString&) config.get(CAMPODITTA);
|
||||||
|
TString fieldname, fieldvalue;
|
||||||
|
TRectype oldrec = oldfile->curr();
|
||||||
|
TRectype newrec = newfile->curr();
|
||||||
|
TProgind *pi;
|
||||||
|
TString80 message;
|
||||||
|
message.format("Conversione tabella %s", (const char*) ofname);
|
||||||
|
pi = new TProgind(oldfile->eod(),message, FALSE, TRUE, 10);
|
||||||
|
pi->setstatus(1);
|
||||||
|
for (int err = oldfile->first(); err == NOERR; err = oldfile->next())
|
||||||
|
{
|
||||||
|
pi->addstatus(1);
|
||||||
|
// mi posiziono sulla ditta indicata
|
||||||
|
ditta = oldfile->get_long(campoditta);
|
||||||
|
// i record sono ordinati per ditta!
|
||||||
|
if (oldditta != ditta)
|
||||||
|
{
|
||||||
|
oldditta = ditta;
|
||||||
|
if (daconvertire(ditta))
|
||||||
|
set_firm(ditta);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString256 s;
|
||||||
|
s.format("La ditta %ld indicata nel file %s non é stata selezionata per la conversione", ditta, (const char*) ofname);
|
||||||
|
write_log(s);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// creo nuovo record
|
||||||
|
newrec.zero();
|
||||||
|
// setto i campi indicati
|
||||||
|
FOR_EACH_ASSOC_STRING(fieldlist, obj, key, str)
|
||||||
|
{
|
||||||
|
fieldname = key;
|
||||||
|
fieldvalue = str;
|
||||||
|
if ((fieldname != CAMPODITTA) && (fieldvalue[0]!='!'))
|
||||||
|
newrec.put(key, oldfile->get(str));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (fieldvalue.mid(0,4) == "!_GR")
|
||||||
|
{
|
||||||
|
TString80 tmp;
|
||||||
|
tmp = oldfile->get(fieldvalue.mid(5));
|
||||||
|
newrec.put(key,atoi(tmp.mid(0,3)));
|
||||||
|
}
|
||||||
|
else if (fieldvalue.mid(0,4) == "!_CO")
|
||||||
|
{
|
||||||
|
TString80 tmp;
|
||||||
|
tmp = oldfile->get(fieldvalue.mid(5));
|
||||||
|
newrec.put(key,atoi(tmp.mid(3,3)));
|
||||||
|
}
|
||||||
|
else if (fieldvalue.sub(0,4) == "!_SO")
|
||||||
|
{
|
||||||
|
TString80 tmp;
|
||||||
|
tmp = oldfile->get(fieldvalue.mid(5));
|
||||||
|
newrec.put(key,atol(tmp.mid(6,6)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// scrivo il record sul nuovo file
|
||||||
|
int errore = newrec.write(*newfile);
|
||||||
|
}
|
||||||
|
delete pi;
|
||||||
|
delete newfile;
|
||||||
|
delete oldfile;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
error_box("Errore in compattamento dati.\nFile %d : %d", nflogicnum,err);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TConversione_cespiti::conv_par(const TFilename& ofname, const char* ofpar, int which_config)
|
||||||
|
{
|
||||||
|
long oldditta = -1;
|
||||||
|
long ditta;
|
||||||
|
TExternisamfile* oldfile = new TExternisamfile(ofname, FALSE, FALSE);
|
||||||
|
TConfig newconfig(which_config, "ce");
|
||||||
|
TConfig config("ce0900.ini", (const char*) ofpar);
|
||||||
|
TAssoc_array& fieldlist = config.list_variables();
|
||||||
|
TString& campoditta = (TString&) config.get(CAMPODITTA);
|
||||||
|
TString fieldname, fieldvalue;
|
||||||
|
TRectype oldrec = oldfile->curr();
|
||||||
|
TProgind *pi;
|
||||||
|
TString80 message;
|
||||||
|
message.format("Conversione tabella %s", (const char*) ofname);
|
||||||
|
pi = new TProgind(oldfile->eod(),message, FALSE, TRUE, 10);
|
||||||
|
pi->setstatus(1);
|
||||||
|
for (int err = oldfile->first(); err == NOERR; err = oldfile->next())
|
||||||
|
{
|
||||||
|
pi->addstatus(1);
|
||||||
|
if (campoditta.not_empty())
|
||||||
|
{
|
||||||
|
// mi posiziono sulla ditta indicata
|
||||||
|
ditta = oldfile->get_long(campoditta);
|
||||||
|
// i record sono ordinati per ditta!
|
||||||
|
if (oldditta != ditta)
|
||||||
|
{
|
||||||
|
oldditta = ditta;
|
||||||
|
if (daconvertire(ditta))
|
||||||
|
{
|
||||||
|
set_firm(ditta);
|
||||||
|
newconfig.set_paragraph("cg");
|
||||||
|
newconfig = TConfig(which_config, "ce");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString256 s;
|
||||||
|
s.format("La ditta %ld indicata nel file %s non é stata selezionata per la conversione", ditta, (const char*) ofname);
|
||||||
|
write_log(s);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// setto i campi indicati
|
||||||
|
FOR_EACH_ASSOC_STRING(fieldlist, obj, key, str)
|
||||||
|
{
|
||||||
|
fieldname = key;
|
||||||
|
fieldvalue = str;
|
||||||
|
if ((fieldname != CAMPODITTA) && (fieldvalue[0]!='!'))
|
||||||
|
newconfig.set(key, oldfile->get(str));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (fieldvalue.mid(0,4) == "!_GR")
|
||||||
|
{
|
||||||
|
TString80 tmp;
|
||||||
|
tmp = oldfile->get(fieldvalue.mid(5));
|
||||||
|
newconfig.set(key,atoi(tmp.mid(0,3)));
|
||||||
|
}
|
||||||
|
else if (fieldvalue.mid(0,4) == "!_CO")
|
||||||
|
{
|
||||||
|
TString80 tmp;
|
||||||
|
tmp = oldfile->get(fieldvalue.mid(5));
|
||||||
|
newconfig.set(key,atoi(tmp.mid(3,3)));
|
||||||
|
}
|
||||||
|
else if (fieldvalue.sub(0,4) == "!_SO")
|
||||||
|
{
|
||||||
|
TString80 tmp;
|
||||||
|
tmp = oldfile->get(fieldvalue.mid(5));
|
||||||
|
newconfig.set(key,atol(tmp.mid(6,6)));
|
||||||
|
}
|
||||||
|
else if (fieldvalue.sub(0,4) == "!_ES")
|
||||||
|
newconfig.set(key,get_codesc(oldfile->get_date(fieldvalue.mid(5)),FALSE));
|
||||||
|
else if (fieldvalue.sub(0,4) == "!_AN")
|
||||||
|
{
|
||||||
|
TString80 tmp;
|
||||||
|
tmp = oldfile->get(fieldvalue.mid(5));
|
||||||
|
newconfig.set(key,tmp.mid(6));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// verificare se occorre registrare (di solito si cambia paragrafo)
|
||||||
|
}
|
||||||
|
delete pi;
|
||||||
|
delete oldfile;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TConversione_cespiti::get_codesc(const TDate& date, const bool fatal)
|
||||||
|
{
|
||||||
|
TEsercizi_contabili esercizi;
|
||||||
|
int esc = esercizi.date2esc(date);
|
||||||
|
if (esc == 0)
|
||||||
|
{
|
||||||
|
TString80 s;
|
||||||
|
s.format("Non esiste il codice esercizio con data iniziale %s", (const char*) date.string());
|
||||||
|
write_log(s);
|
||||||
|
if (fatal)
|
||||||
|
fatal_box(s);
|
||||||
|
}
|
||||||
|
return esc;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char TConversione_cespiti::conv_imptmc(int cod)
|
||||||
|
{
|
||||||
|
switch (cod)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
return 'S';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
return 'N';
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
return 'O';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return ' ';
|
||||||
|
}
|
||||||
|
return ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
//funzione che ritorna il nome del file dei dati da resettare con la zap_file
|
||||||
|
HIDDEN const TString& build_name(int logicnum)
|
||||||
|
{
|
||||||
|
|
||||||
|
TDir d; d.get(logicnum, _nolock, _nordir, _sysdirop);
|
||||||
|
|
||||||
|
static TFilename _filename;
|
||||||
|
_filename = d.filename();
|
||||||
|
return _filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
//funzione per resettare i files e gli indici
|
||||||
|
int TConversione_cespiti::zap_file(int lf) const
|
||||||
|
{
|
||||||
|
TFilename name = build_name(lf);
|
||||||
|
if (name[0] == '%') name.ltrim(1);
|
||||||
|
TExternisamfile f(name);
|
||||||
|
return f.zap();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int ce0900(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TConversione_cespiti a ;
|
||||||
|
a.run(argc, argv, "Conversione cespiti");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
189
ce/ce0900.ini
Executable file
189
ce/ce0900.ini
Executable file
@ -0,0 +1,189 @@
|
|||||||
|
[CCB]
|
||||||
|
B0 = CBLEA
|
||||||
|
B1 = CBBOL
|
||||||
|
B2 = CACHE
|
||||||
|
B3 = CBMOV
|
||||||
|
D0 = DTCALSP
|
||||||
|
I0 = ESART14
|
||||||
|
R0 = SPMAN5S
|
||||||
|
R1 = SPMAN25S
|
||||||
|
R2 = SPMAN5E
|
||||||
|
R3 = SPMAN25E
|
||||||
|
CAMPODITTA = CBCDD
|
||||||
|
CODTAB = !_ESERCIZIO2
|
||||||
|
COD = ?CCB
|
||||||
|
|
||||||
|
[CCE]
|
||||||
|
B0 = CAPRO
|
||||||
|
B1 = CAESC
|
||||||
|
B2 = CAPRR
|
||||||
|
B3 = CAAMV
|
||||||
|
B4 = CARMP
|
||||||
|
B5 = CASAI
|
||||||
|
COD = ?CCE
|
||||||
|
CODTAB = !_ESERCIZIO
|
||||||
|
CAMPODITTA = CACDD
|
||||||
|
D0 = CEDTTR
|
||||||
|
I0 = CATPA
|
||||||
|
I1 = CATPR
|
||||||
|
B6 = ESART14
|
||||||
|
I3 = DURES
|
||||||
|
I4 = DURANNO
|
||||||
|
R0 = CEA01
|
||||||
|
R1 = CEA02
|
||||||
|
R2 = CEA03
|
||||||
|
R3 = CEA04
|
||||||
|
R4 = CEA05
|
||||||
|
R5 = CEA06
|
||||||
|
R6 = CEA07
|
||||||
|
R7 = CEA08
|
||||||
|
S5 = COEFFES
|
||||||
|
S6 = !_CCE1
|
||||||
|
S7 = CETPTR
|
||||||
|
|
||||||
|
[CIM]
|
||||||
|
COD = ?CIM
|
||||||
|
CAMPODITTA = CODDITTA
|
||||||
|
CODTAB = !_CODIMP
|
||||||
|
S0 = DESCIMP
|
||||||
|
S1 = !_CODLOC
|
||||||
|
|
||||||
|
[LOC]
|
||||||
|
COD = ?LOC
|
||||||
|
CAMPODITTA = CODDITTA
|
||||||
|
CODTAB = !_CODLOC
|
||||||
|
I0 = CODULC
|
||||||
|
S0 = STABILIM
|
||||||
|
S1 = REPARTO
|
||||||
|
S2 = UFFICIO
|
||||||
|
S3 = PERRIF
|
||||||
|
|
||||||
|
[COLL01]
|
||||||
|
CAMPODITTA= CGCDIT
|
||||||
|
CODGRUPPO = CGCDGR
|
||||||
|
CODSPECIE = CGCDSP
|
||||||
|
TIPO = CGTIPO
|
||||||
|
IDCESPITE = CGCESP
|
||||||
|
CODCAT = CGCDCT
|
||||||
|
COMPL = CGCOMP
|
||||||
|
TIPOTRAS = CGTRAS
|
||||||
|
CODCC = CGCCCE
|
||||||
|
GRUPPO = !_GR,CGRCES
|
||||||
|
CONTO = !_CO,CGRCES
|
||||||
|
SOTTOC = !_SO,CGRCES
|
||||||
|
GRUPPOQNO = !_GR,CGQNOR
|
||||||
|
CONTOQNO = !_CO,CGQNOR
|
||||||
|
SOTTOCQNO = !_SO,CGQNOR
|
||||||
|
GRUPPOQAN = !_GR,CGQANT
|
||||||
|
CONTOQAN = !_CO,CGQANT
|
||||||
|
SOTTOCQAN = !_SO,CGQANT
|
||||||
|
GRUPPOQAC = !_GR,CGQACC
|
||||||
|
CONTOQAC = !_CO,CGQACC
|
||||||
|
SOTTOCQAC = !_SO,CGQACC
|
||||||
|
GRUPPOFN = !_GR,CGFNOR
|
||||||
|
CONTOFN = !_CO,CGFNOR
|
||||||
|
SOTTOCFN = !_SO,CGFNOR
|
||||||
|
GRUPPOFA = !_GR,CGFANT
|
||||||
|
CONTOFA = !_CO,CGFANT
|
||||||
|
SOTTOCFA = !_SO,CGFANT
|
||||||
|
GRUPPOACC = !_GR,CGFACC
|
||||||
|
CONTOACC = !_CO,CGFACC
|
||||||
|
SOTTOCACC = !_SO,CGFACC
|
||||||
|
TRASF = CGMOVI
|
||||||
|
|
||||||
|
[%CAT]
|
||||||
|
B0 = TAANN
|
||||||
|
COD = ?CAT
|
||||||
|
CODTAB = !_CAT1
|
||||||
|
FPC = TAPRO
|
||||||
|
S0 = TADCT
|
||||||
|
|
||||||
|
[%CAC]
|
||||||
|
B0 = G0NAM
|
||||||
|
B1 = G0DEA
|
||||||
|
B2 = G0FLE
|
||||||
|
B3 = G0FLN
|
||||||
|
COD = ?CAC
|
||||||
|
CODTAB = !_CAC1
|
||||||
|
D0 = G0DAL
|
||||||
|
D1 = G0SCA
|
||||||
|
FPC = G0PRO
|
||||||
|
I0 = !_CAC2
|
||||||
|
I1 = G0ANI
|
||||||
|
I2 = G0VNP
|
||||||
|
I3 = G0ANP
|
||||||
|
R10 = G0PIN
|
||||||
|
R11 = G0PFS
|
||||||
|
R12 = G0PFI
|
||||||
|
R13 = G0PIM
|
||||||
|
R14 = G0MPP
|
||||||
|
R15 = G0XPP
|
||||||
|
S0 = G0DCT
|
||||||
|
|
||||||
|
[%CGR]
|
||||||
|
B0 = G0ANN
|
||||||
|
COD = ?CGR
|
||||||
|
CODTAB = !_CGR1
|
||||||
|
FPC = G0PRO
|
||||||
|
S0 = G0DCT
|
||||||
|
|
||||||
|
[%TMC]
|
||||||
|
B0 = CLS01
|
||||||
|
B1 = CLS02
|
||||||
|
B2 = CLS03
|
||||||
|
B3 = M0NWCS
|
||||||
|
B4 = M0AMMO
|
||||||
|
B5 = M0PLMN
|
||||||
|
COD = ?TMC
|
||||||
|
CODTAB = M0CDMV
|
||||||
|
I0 = P0TPM
|
||||||
|
S0 = M0DESC
|
||||||
|
S5 = !_TMC1
|
||||||
|
S6 = !_TMC2
|
||||||
|
S7 = !_TMC3
|
||||||
|
S8 = M0RETT
|
||||||
|
|
||||||
|
[%CLM]
|
||||||
|
COD = ?CLM
|
||||||
|
CODTAB = !_CLM1
|
||||||
|
R0 = LIMAUT1
|
||||||
|
R1 = LIMAUT2
|
||||||
|
R2 = LIMMOTO
|
||||||
|
R3 = LIMCICL
|
||||||
|
|
||||||
|
[DITC01]
|
||||||
|
CAMPODITTA=COCDDT
|
||||||
|
COMVCO=COMVCO
|
||||||
|
COPLMN=COPLMN
|
||||||
|
GRCOTELI=!_GR,COTELI
|
||||||
|
COCOTELI=!_CO,COTELI
|
||||||
|
SOCOTELI=!_SO,COTELI
|
||||||
|
GRCOTDIQ=!_GR,COTDIQ
|
||||||
|
COCOTDIQ=!_CO,COTDIQ
|
||||||
|
SOCOTDIQ=!_SO,COTDIQ
|
||||||
|
GRCOTDIF=!_GR,COTDIF
|
||||||
|
COCOTDIF=!_CO,COTDIF
|
||||||
|
SOCOTDIF=!_SO,COTDIF
|
||||||
|
GRCOTPLU=!_GR,COTPLU
|
||||||
|
COCOTPLU=!_CO,COTPLU
|
||||||
|
SOCOTPLU=!_SO,COTPLU
|
||||||
|
GRCOTMIN=!_GR,COTMIN
|
||||||
|
COCOTMIN=!_CO,COTMIN
|
||||||
|
SOCOTMIN=!_SO,COTMIN
|
||||||
|
GRCOTVEN=!_GR,COTVEN
|
||||||
|
COCOTVEN=!_CO,COTVEN
|
||||||
|
SOCOTVEN=!_SO,COTVEN
|
||||||
|
COAUEL=COAUEL
|
||||||
|
COAUDI=COAUDI
|
||||||
|
COAUQU=COAUQU
|
||||||
|
COAUPL=COAUPL
|
||||||
|
COAUMI=COAUMI
|
||||||
|
COR5PM=COR5PM
|
||||||
|
|
||||||
|
[DITCA]
|
||||||
|
CAMPODITTA=CACDD
|
||||||
|
CADTR=CADTR
|
||||||
|
CATSU=!_AN,CATSU
|
||||||
|
CODESCORR=!_ES,CADTI
|
||||||
|
CACSP=CACSP
|
||||||
|
CAULP=CAULP
|
||||||
3
ce/ce0900a.h
Executable file
3
ce/ce0900a.h
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#define F_SCELTADITTE 101
|
||||||
|
#define F_DITTESELEZ 102
|
||||||
|
#define F_MINISTERIALI 103
|
||||||
52
ce/ce0900a.uml
Executable file
52
ce/ce0900a.uml
Executable file
@ -0,0 +1,52 @@
|
|||||||
|
#include "ce0900a.h"
|
||||||
|
|
||||||
|
PAGE "Conversione cespiti" -1 -1 78 14
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 76 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 0 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 31 1 "@bATTENZIONE"
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 6 3 "@bLa conversione sovrascrivera' tutti gli archivi dei cespiti."
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 18 4 "@bSiate certi di voler proseguire."
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON F_SCELTADITTE 30 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 6 7 "Scelta ditte da convertire"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_DITTESELEZ 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 8 "Ditte selezionate "
|
||||||
|
FLAG "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_MINISTERIALI
|
||||||
|
BEGIN
|
||||||
|
PROMPT 6 10 "Carica le tabelle ministeriali"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
ENDMASK
|
||||||
18
ce/ce2.cpp
Executable file
18
ce/ce2.cpp
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#include <xvt.h>
|
||||||
|
|
||||||
|
#include "ce2.h"
|
||||||
|
|
||||||
|
int main(int argc,char** argv)
|
||||||
|
{
|
||||||
|
const int n = (argc > 1) ? (argv[1][1]-'0') : 0;
|
||||||
|
|
||||||
|
switch(n)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ce2100(argc, argv); break;
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
2
ce/ce2.url
Executable file
2
ce/ce2.url
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#include <default.url>
|
||||||
|
#include <mainmenu.url>
|
||||||
156
ce/ce2100.cpp
Executable file
156
ce/ce2100.cpp
Executable file
@ -0,0 +1,156 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <config.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <relation.h>
|
||||||
|
|
||||||
|
#include "ce2100a.h"
|
||||||
|
#include "ce2101.h"
|
||||||
|
#include "celib.h"
|
||||||
|
|
||||||
|
#include "cespi.h"
|
||||||
|
|
||||||
|
class TCalcamm_mask : public TAutomask
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
public:
|
||||||
|
void recalc_spese();
|
||||||
|
TCalcamm_mask() : TAutomask("ce2100a") { }
|
||||||
|
};
|
||||||
|
|
||||||
|
void TCalcamm_mask::recalc_spese()
|
||||||
|
{
|
||||||
|
TCurrency r0; get_currency(F_SPMS_MATGEN, r0);
|
||||||
|
TCurrency r1; get_currency(F_SPMS_AUTOTRAS, r1);
|
||||||
|
TCurrency r2; get_currency(F_MSPD_MATGEN, r2);
|
||||||
|
TCurrency r3; get_currency(F_MSPD_AUTOTRAS, r3);
|
||||||
|
TCurrency r4 = r0 > r2 ? r0-r2 : ZERO;
|
||||||
|
TCurrency r5 = r1 > r3 ? r1-r3 : ZERO;
|
||||||
|
set(F_SPME_MATGEN, r4);
|
||||||
|
set(F_SPME_AUTOTRAS, r5);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TCalcamm_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F_ESERCIZIO:
|
||||||
|
case F_SPMS_MATGEN:
|
||||||
|
case F_SPMS_AUTOTRAS:
|
||||||
|
if (e == fe_modify)
|
||||||
|
recalc_spese();
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TCalcamm : public TSkeleton_application
|
||||||
|
{
|
||||||
|
TCalcamm_mask* _mask;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void main_loop();
|
||||||
|
virtual bool create();
|
||||||
|
virtual bool destroy();
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool calcola_ammortamenti();
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TCalcamm::calcola_ammortamenti()
|
||||||
|
{
|
||||||
|
const TString& esercizio = _mask->get(F_ESERCIZIO);
|
||||||
|
const TString& gruppo = _mask->get(F_GRUPPO);
|
||||||
|
const TString& specie = _mask->get(F_SPECIE);
|
||||||
|
const TDate data_limite = _mask->get(F_FINE_ES);
|
||||||
|
|
||||||
|
TRectype filter(LF_CESPI);
|
||||||
|
filter.put(CESPI_CODCGRA, gruppo);
|
||||||
|
if (!specie.blank())
|
||||||
|
filter.put(CESPI_CODSPA, specie);
|
||||||
|
|
||||||
|
TRelation ccb("CCB");
|
||||||
|
TRectype& ccq = ccb.curr();
|
||||||
|
TString16 key;
|
||||||
|
key << esercizio << gruppo << specie;
|
||||||
|
ccq.put("CODTAB", key);
|
||||||
|
if (ccb.read() == NOERR)
|
||||||
|
{
|
||||||
|
// Azzera monte spese di manutenzione
|
||||||
|
ccq.zero("R2");
|
||||||
|
ccq.zero("R3");
|
||||||
|
ccq.put("D0", TDate(TODAY));
|
||||||
|
ccb.rewrite();
|
||||||
|
}
|
||||||
|
|
||||||
|
TRelation cespiti(LF_CESPI);
|
||||||
|
TCursor cur(&cespiti, "", 2, &filter, &filter);
|
||||||
|
|
||||||
|
const long items = cur.items();
|
||||||
|
cur.freeze();
|
||||||
|
|
||||||
|
TProgind pi(items, "Calcolo ammortamenti...", TRUE, TRUE);
|
||||||
|
|
||||||
|
for (cur = 0L; cur.pos() < items; ++cur)
|
||||||
|
{
|
||||||
|
pi.addstatus(1);
|
||||||
|
if (pi.iscancelled())
|
||||||
|
break;
|
||||||
|
|
||||||
|
TCespite cespite(cur.curr());
|
||||||
|
for (int tipo_sit = 1; tipo_sit <= 3; tipo_sit++)
|
||||||
|
cespite.calc_amm(tipo_sit, TRUE, data_limite);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aggiorna maschera
|
||||||
|
ccq.put("CODTAB", key);
|
||||||
|
if (ccb.read() == NOERR)
|
||||||
|
_mask->autoload(ccb);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TCalcamm::create()
|
||||||
|
{
|
||||||
|
open_files(LF_TABCOM, LF_TAB, LF_CESPI, LF_AMMCE, LF_AMMMV, LF_SALCE, LF_MOVCE, 0);
|
||||||
|
_mask = new TCalcamm_mask;
|
||||||
|
return TSkeleton_application::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TCalcamm::destroy()
|
||||||
|
{
|
||||||
|
delete _mask;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCalcamm::main_loop()
|
||||||
|
{
|
||||||
|
KEY k = K_ENTER;
|
||||||
|
while (k == K_ENTER)
|
||||||
|
{
|
||||||
|
TDitta_cespiti& dc = ditta_cespiti();
|
||||||
|
dc.init_mask(*_mask);
|
||||||
|
_mask->field(F_SPECIE).check(RUNNING_CHECK);
|
||||||
|
_mask->recalc_spese();
|
||||||
|
k = _mask->run();
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
|
const int ese = _mask->get_int(F_ESERCIZIO);
|
||||||
|
const TString& gru = _mask->get(F_GRUPPO);
|
||||||
|
const TString& spe = _mask->get(F_SPECIE);
|
||||||
|
dc.set_attivita(ese, gru, spe);
|
||||||
|
|
||||||
|
calcola_ammortamenti();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int ce2100(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TCalcamm a;
|
||||||
|
a.run(argc, argv, "Calcolo ammortamenti");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
15
ce/ce2100a.h
Executable file
15
ce/ce2100a.h
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
#define F_DITTA 101
|
||||||
|
#define F_RAGSOC 102
|
||||||
|
#define F_ESERCIZIO 103
|
||||||
|
#define F_INIZIO_ES 104
|
||||||
|
#define F_FINE_ES 105
|
||||||
|
#define F_GRUPPO 106
|
||||||
|
#define F_SPECIE 107
|
||||||
|
#define F_DESC_GRSP 108
|
||||||
|
#define F_DATA_CALC 109
|
||||||
|
#define F_SPMS_MATGEN 110
|
||||||
|
#define F_SPMS_AUTOTRAS 111
|
||||||
|
#define F_MSPD_MATGEN 112
|
||||||
|
#define F_MSPD_AUTOTRAS 113
|
||||||
|
#define F_SPME_MATGEN 114
|
||||||
|
#define F_SPME_AUTOTRAS 115
|
||||||
169
ce/ce2100a.uml
Executable file
169
ce/ce2100a.uml
Executable file
@ -0,0 +1,169 @@
|
|||||||
|
#include "ce2100a.h"
|
||||||
|
|
||||||
|
TOOLBAR "Toolbar" 0 -3 0 3
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -11 ""
|
||||||
|
PICTURE BMP_ELABORA
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Calcolo ammortamenti" -1 -1 78 18
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 0 1 "@bParametri ditta"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_DITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Ditta "
|
||||||
|
FLAGS "DF"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 26 2 ""
|
||||||
|
USE LF_NDITTE
|
||||||
|
INPUT CODDITTA F_DITTA
|
||||||
|
OUTPUT F_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_ESERCIZIO 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "Esercizio "
|
||||||
|
FLAGS "AZ"
|
||||||
|
USE ESC
|
||||||
|
INPUT CODTAB F_ESERCIZIO
|
||||||
|
DISPLAY "Codice esercizio" CODTAB
|
||||||
|
DISPLAY "Inizio esercizio" D0
|
||||||
|
DISPLAY "Fine esercizio" D1
|
||||||
|
OUTPUT F_ESERCIZIO CODTAB
|
||||||
|
OUTPUT F_INIZIO_ES D0
|
||||||
|
OUTPUT F_FINE_ES D1
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FIELD CODTAB[1,4]
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_INIZIO_ES
|
||||||
|
BEGIN
|
||||||
|
PROMPT 26 3 "Inizio "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_FINE_ES
|
||||||
|
BEGIN
|
||||||
|
PROMPT 50 3 "Fine "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_GRUPPO 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 4 "Gruppo "
|
||||||
|
FLAGS "Z"
|
||||||
|
FIELD CODTAB[5,6]
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_SPECIE 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 16 4 "Specie "
|
||||||
|
FLAGS "_"
|
||||||
|
USE CCB
|
||||||
|
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||||
|
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||||
|
INPUT CODTAB[5,6] F_GRUPPO
|
||||||
|
INPUT CODTAB[7,10] F_SPECIE
|
||||||
|
DISPLAY "Gruppo" CODTAB[5,6]
|
||||||
|
DISPLAY "Specie" CODTAB[7,10]
|
||||||
|
DISPLAY "Descrizione@50" 400@->S0
|
||||||
|
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||||
|
OUTPUT F_SPECIE CODTAB[7,10]
|
||||||
|
OUTPUT F_DESC_GRSP 400@->S0
|
||||||
|
OUTPUT F_DATA_CALC D0
|
||||||
|
OUTPUT F_SPMS_MATGEN R0
|
||||||
|
OUTPUT F_SPMS_AUTOTRAS R1
|
||||||
|
OUTPUT F_MSPD_MATGEN R2
|
||||||
|
OUTPUT F_MSPD_AUTOTRAS R3
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FIELD CODTAB[7,10]
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESC_GRSP 60 45
|
||||||
|
BEGIN
|
||||||
|
PROMPT 31 4 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA F_DATA_CALC
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 5 "Data ultimo calcolo ammortamento "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD D0
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 0 7 "@bSpese di manutenzione sostenute"
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY F_SPMS_MATGEN 18
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 8 "Per beni materiali generici (deduz. al 5%) "
|
||||||
|
FIELD R0
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY F_SPMS_AUTOTRAS 18
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 9 "Per autotrasporti c/terzi (deduz. al 25%) "
|
||||||
|
FIELD R1
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 0 11 "@bMonte spese deducibili"
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY F_MSPD_MATGEN 18
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 12 "Per beni materiali generici (deduz. al 5%) "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD R2
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY F_MSPD_AUTOTRAS 18
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 13 "Per autotrasporti c/terzi (deduz. al 25%) "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD R3
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 0 15 "@bSpese di manutenzione eccedenti"
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY F_SPME_MATGEN 18
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 16 "Per beni materiali generici (deduz. al 5%) "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY F_SPME_AUTOTRAS 18
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 17 "Per autotrasporti c/terzi (deduz. al 25%) "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
1521
ce/ce2101.cpp
Executable file
1521
ce/ce2101.cpp
Executable file
File diff suppressed because it is too large
Load Diff
71
ce/ce2101.h
Executable file
71
ce/ce2101.h
Executable file
@ -0,0 +1,71 @@
|
|||||||
|
#ifndef __CE2101_H
|
||||||
|
#define __CE2101_H
|
||||||
|
|
||||||
|
#ifndef __RELATION_H
|
||||||
|
#include <relation.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum TTipo_cespite { tc_materiale, tc_immateriale, tc_pluriennale };
|
||||||
|
|
||||||
|
class TCespite : public TRectype
|
||||||
|
{
|
||||||
|
TRectype _salini, _salpro;
|
||||||
|
TRectype _ammini, _ammpro;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
real un_milione() const;
|
||||||
|
|
||||||
|
void fill_sal_key(TRectype& ammce, int esercizio, int tpsal) const;
|
||||||
|
void read_sal(int esercizio);
|
||||||
|
void save_sal() const;
|
||||||
|
|
||||||
|
void fill_amm_key(TRectype& ammce, int esercizio, int tpsal, int tpamm) const;
|
||||||
|
void read_amm(int esercizio, int tipo);
|
||||||
|
void save_amm() const;
|
||||||
|
|
||||||
|
const TRectype& categoria() const;
|
||||||
|
void set_msg05(const char* msg);
|
||||||
|
|
||||||
|
bool valido(int tipo_sit);
|
||||||
|
real get_limit() const;
|
||||||
|
void prepara_saldi(int tipo_sit, bool is_valid);
|
||||||
|
|
||||||
|
real val_amm(int tiposit) const;
|
||||||
|
real res_amm(int tiposit) const;
|
||||||
|
real mov_val_amm(const TRectype& tmv) const;
|
||||||
|
real mov_res_amm(const TRectype& tmv, const TRectype& tmvam) const;
|
||||||
|
real calcola_spese_manutenzione(const real& valamm);
|
||||||
|
|
||||||
|
void rip_jolly(TRelation& rel, TRectype& tmv, TRectype& tmvam, const real& num, const real& den);
|
||||||
|
void rip_elem(TRelation& rel, TRectype& tmv, TRectype& tmvam);
|
||||||
|
void rip_costo(TRelation& rel, TRectype& tmv, TRectype& tmvam);
|
||||||
|
|
||||||
|
void calc_perc(TRelation& rel, const TRectype& tmv, const TRectype& tmvam, int tipo_sit);
|
||||||
|
void calc_anni(TRectype& ammmv, const TRectype& tmv, const TRectype& tmvam);
|
||||||
|
void amm_mov_ven(TRelation& rel, const TRectype& tmv, const TRectype& tmvam, int tipo_sit);
|
||||||
|
void elabora_mov_neg(TRelation& rel, TRectype& tmv, TRectype& tmvam, int tipo_sit, bool is_valid);
|
||||||
|
real calc_quota(const real& valamm, const real& perric, const real& residuo,
|
||||||
|
real& pereff, TRelation* mov = NULL);
|
||||||
|
real calc_quote_perse(const real& valamm, const real& peric, const real& residuo,
|
||||||
|
const real& quotamm, bool amm_rit, bool mov_vend, const TDate& dtmov);
|
||||||
|
void agg_quota(int tipo_sit, const real& valamm, TRectype& rec, const char* field, bool calcq);
|
||||||
|
|
||||||
|
void incr_field(TRectype& dst, const char* fdst, const TRectype& src, const char* fsrc, char segno) const;
|
||||||
|
void applica_rettifiche(TRectype& tmv, TRectype& tmvam, int tipo_sit);
|
||||||
|
void aggiorna_salpro(const TRectype& tmv, const TRectype& tmvam, char segno);
|
||||||
|
void scansione_movimenti(int tipo_sit, const TDate& data_limite, bool is_valid);
|
||||||
|
void calc_amm_residui(int tipo_sit, bool is_valid);
|
||||||
|
void agg_spe_man(int tipo_sit, bool is_valid);
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool calc_amm(int tipo_sit, bool calc_spe_man, const TDate& data_limite);
|
||||||
|
TTipo_cespite tipo() const; // 1 = Materiale, 2 = Immateriale, 3 = Pluriennale
|
||||||
|
|
||||||
|
int read(const char* id);
|
||||||
|
TCespite();
|
||||||
|
TCespite(const char* id);
|
||||||
|
TCespite(const TRectype& rec);
|
||||||
|
virtual ~TCespite() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
18
ce/ce3.cpp
Executable file
18
ce/ce3.cpp
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#include <xvt.h>
|
||||||
|
|
||||||
|
#include "ce3.h"
|
||||||
|
|
||||||
|
int main(int argc,char** argv)
|
||||||
|
{
|
||||||
|
const int r = (argc > 1) ? (argv[1][1]-'0') : 0;
|
||||||
|
switch (r)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
ce3200(argc,argv) ; break;
|
||||||
|
case 2:
|
||||||
|
ce3300(argc,argv) ; break;
|
||||||
|
default:
|
||||||
|
ce3100(argc,argv) ; break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
9
ce/ce3.h
Executable file
9
ce/ce3.h
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#ifndef __CE3_H
|
||||||
|
#define __CE3_H
|
||||||
|
|
||||||
|
int ce3100(int argc, char* argv[]);
|
||||||
|
int ce3200(int argc, char* argv[]);
|
||||||
|
int ce3300(int argc, char* argv[]);
|
||||||
|
|
||||||
|
#endif // __CE3_H
|
||||||
|
|
||||||
3
ce/ce3.url
Executable file
3
ce/ce3.url
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#include <default.url>
|
||||||
|
#include <mainmenu.url>
|
||||||
|
|
||||||
542
ce/ce3100.cpp
Executable file
542
ce/ce3100.cpp
Executable file
@ -0,0 +1,542 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <form.h>
|
||||||
|
#include <printer.h>
|
||||||
|
#include <recarray.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include "ce3.h"
|
||||||
|
#include "ammce.h"
|
||||||
|
#include "ammmv.h"
|
||||||
|
#include "cespi.h"
|
||||||
|
#include "movam.h"
|
||||||
|
#include "movce.h"
|
||||||
|
#include "salce.h"
|
||||||
|
#include "ce3100a.h"
|
||||||
|
#include "ce3100.h"
|
||||||
|
|
||||||
|
#include "celib.h"
|
||||||
|
#include "..\cg\cglib01.h"
|
||||||
|
|
||||||
|
class TForm_registroce : public TForm_cespiti
|
||||||
|
{
|
||||||
|
TRelation* _newrelation;
|
||||||
|
TCursor* _newcursor;
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual bool validate(TForm_item& fld, TToken_string& val);
|
||||||
|
TForm_registroce(const char *name);
|
||||||
|
virtual ~TForm_registroce();
|
||||||
|
void set_testata() { set_header(1, TRUE); };
|
||||||
|
void set_piede() { set_footer(0,FALSE); set_footer(0, TRUE);};
|
||||||
|
void set_pagina() { set_footer(0, TRUE);};
|
||||||
|
TPrint_section& get_testata_cespite() { return section('H', odd_page); };
|
||||||
|
TPrint_section& get_testata_categoria() { return section('H', even_page); };
|
||||||
|
TPrint_section& get_piede_categoria() { return section('F', even_page); };
|
||||||
|
TPrint_section& get_piede_registro() { return section('F', odd_page); };
|
||||||
|
TPrint_section& get_saldiiniziali() { return section('H', last_page); };
|
||||||
|
TPrint_section& get_movimenti() { return section('B', first_page); };
|
||||||
|
TPrint_section& get_valorifinali() { return section('B', even_page); };
|
||||||
|
TPrint_section& get_totali() { return section('B', odd_page); };
|
||||||
|
virtual TCursor* cursor() const {return _newcursor; };
|
||||||
|
virtual TRelation* relation() const {return _newrelation; };
|
||||||
|
};
|
||||||
|
|
||||||
|
TForm_registroce::TForm_registroce(const char *name):
|
||||||
|
TForm_cespiti(name)
|
||||||
|
{
|
||||||
|
_newrelation = new TRelation(LF_CESPI);
|
||||||
|
_newrelation->add("%CAC","CODTAB[1,2]==CODCGRA|CODTAB[3,6]==CODSPA|CODTAB[7,8]==CODCAT",1,0,101);
|
||||||
|
_newrelation->add(LF_SALCE,"IDCESPITE==IDCESPITE",1,0,102);
|
||||||
|
_newrelation->add("ESC","CODTAB==CODES",1,LF_SALCE,103);
|
||||||
|
_newrelation->add(LF_AMMCE,"IDCESPITE==IDCESPITE|CODES==CODES|TPSALDO==TPSALDO",1,LF_SALCE,104);
|
||||||
|
_newrelation->add(LF_MOVCE,"IDCESPITE==IDCESPITE",2,0,105);
|
||||||
|
_newrelation->add(LF_MOVAM,"IDCESPITE==IDCESPITE|IDMOV==IDMOV",1,LF_MOVCE,106);
|
||||||
|
_newrelation->add(LF_AMMMV,"IDCESPITE==IDCESPITE|IDMOV==IDMOV",1,LF_MOVCE,107);
|
||||||
|
_newrelation->add("%TMC","CODTAB==CODMOV",1,LF_MOVCE,108);
|
||||||
|
_newcursor = new TCursor(_newrelation,"",2);
|
||||||
|
}
|
||||||
|
|
||||||
|
TForm_registroce::~TForm_registroce()
|
||||||
|
{
|
||||||
|
delete _newrelation;
|
||||||
|
delete _newcursor;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TForm_registroce::validate(TForm_item& fld, TToken_string& val)
|
||||||
|
{
|
||||||
|
return TForm_cespiti::validate(fld, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
// Applicazione
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TRegistro_cespiti : public TSkeleton_application
|
||||||
|
{
|
||||||
|
TMask* _mask;
|
||||||
|
TForm_registroce* _form;
|
||||||
|
TDitta_cespiti* _dittace;
|
||||||
|
int _tipoamm;
|
||||||
|
bool _bollato;
|
||||||
|
TEsercizi_contabili _esc;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool create();
|
||||||
|
virtual bool destroy();
|
||||||
|
virtual void main_loop();
|
||||||
|
static bool attivita_handler(TMask_field& f, KEY k);
|
||||||
|
|
||||||
|
public:
|
||||||
|
void header_registro();
|
||||||
|
void footer_registro();
|
||||||
|
void footer_categoria();
|
||||||
|
void header_categoria(const int categoria);
|
||||||
|
void print_cespite();
|
||||||
|
void header_cespite();
|
||||||
|
void print_saldiiniziali();
|
||||||
|
void print_movimenti();
|
||||||
|
void print_valorifinali();
|
||||||
|
void aggiorna_bollato();
|
||||||
|
void stampa_movimento(TRectype& removce, TRectype& removam, TRectype& recammmv);
|
||||||
|
void stampa_sezione(TPrint_section& section);
|
||||||
|
TRegistro_cespiti() {}
|
||||||
|
virtual ~TRegistro_cespiti() {};
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TRegistro_cespiti::create()
|
||||||
|
{
|
||||||
|
open_files(LF_CESPI,0);
|
||||||
|
_mask = new TMask("ce3100a");
|
||||||
|
_mask->set_handler(F_SPECIE,attivita_handler);
|
||||||
|
_dittace = new TDitta_cespiti();
|
||||||
|
_dittace->init_mask(*_mask);
|
||||||
|
_form = new TForm_registroce("ce3100a");
|
||||||
|
return TSkeleton_application::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TRegistro_cespiti::destroy()
|
||||||
|
{
|
||||||
|
delete _form;
|
||||||
|
delete _dittace;
|
||||||
|
delete _mask;
|
||||||
|
return TSkeleton_application::destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TRegistro_cespiti::attivita_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
TMask& m = f.mask();
|
||||||
|
if (f.to_check(k) || (k == K_TAB && !m.is_running()))
|
||||||
|
{
|
||||||
|
const int esercizio = m.get_int(F_ESERCIZIO);
|
||||||
|
const TString16 gruppo = m.get(F_GRUPPO);
|
||||||
|
const TString16 specie = m.get(F_SPECIE);
|
||||||
|
TString80 key; key.format("%4d%s%s",esercizio, (const char*) gruppo, (const char*) specie);
|
||||||
|
const TRectype& ccb = cache().get("CCB", key);
|
||||||
|
TDate dataultcalc = ccb.get_date("D0");
|
||||||
|
m.set(F_DATAULTCALC, dataultcalc);
|
||||||
|
if (ccb.get_bool("B2"))
|
||||||
|
{
|
||||||
|
if (m.is_running())
|
||||||
|
return f.error_box("Attenzione! Esercizio chiuso. \nNon é possibile stampare il registro.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (dataultcalc.empty())
|
||||||
|
{
|
||||||
|
m.set(F_CALCOLO, "X");
|
||||||
|
m.disable(F_CALCOLO);
|
||||||
|
m.set(F_TIPOREGISTRO,"B");
|
||||||
|
m.disable(F_TIPOREGISTRO);
|
||||||
|
}
|
||||||
|
if (ccb.get_bool("B1"))
|
||||||
|
{
|
||||||
|
m.set(F_TIPOREGISTRO,"B");
|
||||||
|
m.disable(F_TIPOREGISTRO);
|
||||||
|
m.disable(F_CALCOLO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRegistro_cespiti::main_loop()
|
||||||
|
{
|
||||||
|
while (_mask->run() == K_ENTER)
|
||||||
|
{
|
||||||
|
TRectype darec(LF_CESPI),arec(LF_CESPI);
|
||||||
|
TString filtro;
|
||||||
|
// filtro sulla attivitá e categorie
|
||||||
|
const int esercizio = _mask->get_int(F_ESERCIZIO);
|
||||||
|
const int catini = _mask->get_int(F_CATINI);
|
||||||
|
const int catfin = _mask->get_int(F_CATFIN);
|
||||||
|
darec.put(CESPI_CODCGRA, _mask->get_int(F_GRUPPO));
|
||||||
|
darec.put(CESPI_CODSPA, _mask->get(F_SPECIE));
|
||||||
|
darec.put(CESPI_CODCAT, _mask->get_int(F_CATINI));
|
||||||
|
arec.put(CESPI_CODCGRA, _mask->get_int(F_GRUPPO));
|
||||||
|
arec.put(CESPI_CODSPA, _mask->get(F_SPECIE));
|
||||||
|
arec.put(CESPI_CODCAT, _mask->get_int(F_CATFIN));
|
||||||
|
// filtro sulle date di acquisizione e alienazione
|
||||||
|
const TDate datainizio = _mask->get_date(F_DATAINIZIO);
|
||||||
|
const TDate datafine = _mask->get_date(F_DATAFINE);
|
||||||
|
filtro.format("(ANSI(%d->DTCOMP)<=\"",LF_CESPI) << datafine.string(ANSI) << "\")";
|
||||||
|
filtro << format(" && ((ANSI(%d->DTALIEN)>=\"",LF_CESPI) << datainizio.string(ANSI);
|
||||||
|
filtro << format("\") || (%d->DTALIEN==\"\"))",LF_CESPI);
|
||||||
|
|
||||||
|
// filtro su ammortamenti fiscali o civilistici
|
||||||
|
_tipoamm = _mask->get_int(F_AMMORTAMENTI);
|
||||||
|
_form->find_field('H', last_page, FR_SI_RIVGF).enable(_tipoamm==1);
|
||||||
|
_form->find_field('H', last_page, FR_SI_RIVGC).enable(_tipoamm==2);
|
||||||
|
_form->find_field('B', first_page, FR_MV_RIVGF).enable(_tipoamm==1);
|
||||||
|
_form->find_field('B', first_page, FR_MV_RIVGC).enable(_tipoamm==2);
|
||||||
|
_form->find_field('B', even_page, FR_FE_RIVGF).enable(_tipoamm==1);
|
||||||
|
_form->find_field('B', even_page, FR_FE_RIVGC).enable(_tipoamm==2);
|
||||||
|
_form->find_field('H', last_page, FR_SI_RIVGF).hide();
|
||||||
|
_form->find_field('H', last_page, FR_SI_RIVGC).hide();
|
||||||
|
_form->find_field('B', first_page, FR_MV_RIVGF).hide();
|
||||||
|
_form->find_field('B', first_page, FR_MV_RIVGC).hide();
|
||||||
|
_form->find_field('B', even_page, FR_FE_RIVGF).hide();
|
||||||
|
_form->find_field('B', even_page, FR_FE_RIVGC).hide();
|
||||||
|
// flag bollato per aggiornamenti
|
||||||
|
_bollato = (_mask->get_int(F_TIPOREGISTRO)==1);
|
||||||
|
_form->cursor()->setregion(darec,arec);
|
||||||
|
_form->cursor()->setfilter(filtro,TRUE);
|
||||||
|
long num = _form->cursor()->items();
|
||||||
|
_form->cursor()->freeze();
|
||||||
|
printer().open();
|
||||||
|
header_registro();
|
||||||
|
TRectype& reccesp = _form->cursor()->curr();
|
||||||
|
int catatt = -1;
|
||||||
|
for (*_form->cursor()=0; _form->cursor()->pos()<num; ++(*_form->cursor()))
|
||||||
|
{
|
||||||
|
if (catatt != reccesp.get_int(CESPI_CODCAT))
|
||||||
|
{
|
||||||
|
if (catatt != -1)
|
||||||
|
footer_categoria();
|
||||||
|
catatt = reccesp.get_int(CESPI_CODCAT);
|
||||||
|
header_categoria(catatt);
|
||||||
|
}
|
||||||
|
print_cespite();
|
||||||
|
}
|
||||||
|
if (catatt != -1)
|
||||||
|
{
|
||||||
|
footer_categoria();
|
||||||
|
footer_registro();
|
||||||
|
}
|
||||||
|
_form->cursor()->freeze(FALSE);
|
||||||
|
printer().close();
|
||||||
|
if (_bollato)
|
||||||
|
aggiorna_bollato();
|
||||||
|
}
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRegistro_cespiti::aggiorna_bollato()
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRegistro_cespiti::header_registro()
|
||||||
|
{
|
||||||
|
_form->find_field('H', first_page, FR_CODDITTA).set(_mask->get(F_CODDITTA));
|
||||||
|
_form->find_field('H', first_page, FR_RAGSOC).set(_mask->get(F_RAGSOC));
|
||||||
|
_form->find_field('H', first_page, FR_GRUPPO).set(_mask->get(F_GRUPPO));
|
||||||
|
_form->find_field('H', first_page, FR_D_GRUPPO).set(_mask->get(F_D_GRUPPO));
|
||||||
|
_form->find_field('H', first_page, FR_SPECIE).set(_mask->get(F_SPECIE));
|
||||||
|
_form->find_field('H', first_page, FR_D_SPECIE).set(_mask->get(F_D_SPECIE));
|
||||||
|
_form->find_field('H', first_page, FR_DATAINIZIO).set(_mask->get(F_DATAINIZIO));
|
||||||
|
_form->find_field('H', first_page, FR_DATAFINE).set(_mask->get(F_DATAFINE));
|
||||||
|
TString80 key; key.format("%04d",_mask->get_int(F_ESERCIZIO));
|
||||||
|
const TRectype& cce = cache().get("CCE", key);
|
||||||
|
_form->find_field('H', first_page, FR_NUMGIORNI).set(cce.get("I3"));
|
||||||
|
long giorni = (_mask->get_date(F_DATAFINE) - _mask->get_date(F_DATAINIZIO) + 1);
|
||||||
|
key.format("%3d",giorni);
|
||||||
|
_form->find_field('H', first_page, FR_NUMGIOSOL).set(key);
|
||||||
|
_form->find_field('H', first_page, FR_LIBROCESPITI).enable(_bollato);
|
||||||
|
_form->set_testata();
|
||||||
|
_form->set_piede();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TRegistro_cespiti::print_cespite()
|
||||||
|
{
|
||||||
|
// stampa i dati del cespite
|
||||||
|
const long pos = _form->cursor()->pos(); //memorizza posizione cursore
|
||||||
|
|
||||||
|
header_cespite();
|
||||||
|
print_saldiiniziali();
|
||||||
|
print_movimenti();
|
||||||
|
print_valorifinali();
|
||||||
|
|
||||||
|
*_form->cursor() = pos; //riposiziona il cursore
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRegistro_cespiti::header_cespite()
|
||||||
|
{
|
||||||
|
// intestazione cespite
|
||||||
|
TPrint_section& section = _form->get_testata_cespite();
|
||||||
|
section.update();
|
||||||
|
_form->set_pagina();
|
||||||
|
for (word i = 0; i < section.height(); i++)
|
||||||
|
printer().print(section.row(i));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRegistro_cespiti::print_saldiiniziali()
|
||||||
|
{
|
||||||
|
// saldi iniziali cespite (da salce e ammce con tpsaldo=1(saldo iniziale) ed esercizio = esercizio selezionato)
|
||||||
|
const int esercizio = _mask->get_int(F_ESERCIZIO);
|
||||||
|
TRectype& recsalce = _form->cursor()->curr(LF_SALCE);
|
||||||
|
bool continua = _form->cursor()->is_first_match(LF_SALCE);
|
||||||
|
while (continua && (recsalce.get_int(SALCE_TPSALDO) != 1 || recsalce.get_int(SALCE_CODES) != esercizio))
|
||||||
|
continua = _form->cursor()->next_match(LF_SALCE);
|
||||||
|
if (!continua)
|
||||||
|
recsalce.zero();
|
||||||
|
|
||||||
|
TRectype& recammce = _form->cursor()->curr(LF_AMMCE);
|
||||||
|
continua = _form->cursor()->is_first_match(LF_AMMCE);
|
||||||
|
while (continua && recammce.get_int(AMMCE_TPAMM)!= _tipoamm) //l'esercizio é quello selezionato poiché é nella chiave
|
||||||
|
continua = _form->cursor()->next_match(LF_AMMCE);
|
||||||
|
if (!continua)
|
||||||
|
_form->cursor()->curr(LF_AMMCE).zero();
|
||||||
|
|
||||||
|
TPrint_section& section = _form->get_saldiiniziali();
|
||||||
|
section.update();
|
||||||
|
_form->set_pagina();
|
||||||
|
for (word i = 0; i < section.height(); i++)
|
||||||
|
printer().print(section.row(i));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TRegistro_cespiti::stampa_sezione(TPrint_section& section)
|
||||||
|
{
|
||||||
|
section.update();
|
||||||
|
_form->set_pagina();
|
||||||
|
word y1 = section.find_field(FR_MV_QNOR).y();
|
||||||
|
word y2 = section.find_field(FR_MV_QANT).y();
|
||||||
|
for (word i = 0; i < section.height(); i++)
|
||||||
|
{
|
||||||
|
if (i+1>=y1 && i+1<= y2)
|
||||||
|
{
|
||||||
|
TPrintrow& row = section.row(i);
|
||||||
|
TString rowstr = row.row();
|
||||||
|
if (!rowstr.blank())
|
||||||
|
printer().print(section.row(i));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printer().print(section.row(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TRegistro_cespiti::stampa_movimento(TRectype& recmovce, TRectype& recmovam, TRectype& recammmv)
|
||||||
|
{
|
||||||
|
TPrint_section& section = _form->get_movimenti();
|
||||||
|
_form->cursor()->curr(LF_MOVCE) = recmovce; //
|
||||||
|
_form->cursor()->curr(LF_MOVAM) = recmovam; //copia il record del cursore che scannerizza movimenti e rettifiche nel
|
||||||
|
_form->cursor()->curr(LF_AMMMV) = recammmv; //cursore principale del form
|
||||||
|
|
||||||
|
|
||||||
|
if (recmovce.get_char(MOVCE_SEGNO)=='-')
|
||||||
|
{
|
||||||
|
section.find_field(FR_MV_SEGNO).set("-1");
|
||||||
|
// section.find_field(FR_MV_QNORMENO).enable();
|
||||||
|
// section.find_field(FR_MV_QACCMENO).enable();
|
||||||
|
// section.find_field(FR_MV_QANTMENO).enable();
|
||||||
|
// section.find_field(FR_MV_MINUSVALENZA).enable();
|
||||||
|
// section.find_field(FR_MV_PLUSVALENZA).enable();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section.find_field(FR_MV_SEGNO).set("1");
|
||||||
|
// section.find_field(FR_MV_QNORMENO).disable();
|
||||||
|
// section.find_field(FR_MV_QACCMENO).disable();
|
||||||
|
// section.find_field(FR_MV_QANTMENO).disable();
|
||||||
|
// section.find_field(FR_MV_MINUSVALENZA).disable();
|
||||||
|
// section.find_field(FR_MV_PLUSVALENZA).disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
section.update();
|
||||||
|
_form->set_pagina();
|
||||||
|
|
||||||
|
for (word i = 0; i < section.height(); i++)
|
||||||
|
{
|
||||||
|
TPrintrow& row = section.row(i);
|
||||||
|
TString rowstr = row.row();
|
||||||
|
if (!rowstr.blank())
|
||||||
|
printer().print(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRegistro_cespiti::print_movimenti()
|
||||||
|
{
|
||||||
|
TPrint_section& totali = _form->get_totali();
|
||||||
|
// movimenti
|
||||||
|
for (bool ok=_form->cursor()->is_first_match(LF_MOVCE); ok; ok=_form->cursor()->next_match(LF_MOVCE))
|
||||||
|
{
|
||||||
|
TRectype& recmovce = _form->cursor()->curr(LF_MOVCE);
|
||||||
|
const TString16 idret = recmovce.get(MOVCE_IDRET);
|
||||||
|
if (idret.not_empty())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const TDate dtmov = recmovce.get(MOVCE_DTMOV);
|
||||||
|
const int esmov = _esc.date2esc(dtmov);
|
||||||
|
if (_mask->get_int(F_ESERCIZIO) != esmov)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for(word t = 0; t < totali.fields(); t++) //azzera i campi dei totali
|
||||||
|
totali.field(t).set("");
|
||||||
|
|
||||||
|
TRectype& recmovam = _form->cursor()->curr(LF_MOVAM);
|
||||||
|
bool continua = _form->cursor()->is_first_match(LF_MOVAM);
|
||||||
|
while (recmovam.get_int(MOVAM_TPAMM) != _tipoamm && continua)
|
||||||
|
continua = _form->cursor()->next_match(LF_MOVAM);
|
||||||
|
if (!continua) recmovam.zero();
|
||||||
|
TRectype& recammmv = _form->cursor()->curr(LF_AMMMV);
|
||||||
|
continua = _form->cursor()->is_first_match(LF_AMMMV);
|
||||||
|
while (recammmv.get_int(AMMMV_TPAMM) != _tipoamm && continua)
|
||||||
|
continua = _form->cursor()->next_match(LF_AMMMV);
|
||||||
|
if (!continua) recammmv.zero();
|
||||||
|
|
||||||
|
stampa_movimento(recmovce,recmovam,recammmv); //stampa i movimenti SENZA rettifiche
|
||||||
|
|
||||||
|
// rettifiche (é necessario utilizzare un nuovo cursore, quindi si comincia con la relazione...)
|
||||||
|
TRelation rel_rettif(LF_MOVCE);
|
||||||
|
TString expr; expr << "IDCESPITE==IDCESPITE|IDMOV==IDMOV|TPAMM==\"" << _tipoamm << '"';
|
||||||
|
rel_rettif.add(LF_MOVAM, expr);
|
||||||
|
rel_rettif.add(LF_AMMMV, expr);
|
||||||
|
const TString16 id = recmovce.get(MOVCE_IDCESPITE);
|
||||||
|
|
||||||
|
// e quindi si passa al cursore...; notare che il cursore delle rettifiche usa la chiave 2: IDCESPITE+IDMOV;
|
||||||
|
// per cui parte per selezionare le possibili rettifiche del movimento da rettificare da lui...
|
||||||
|
TRectype fromret(LF_MOVCE);
|
||||||
|
fromret.put(MOVCE_IDCESPITE, id); //IDCESPITE della chiave 2
|
||||||
|
fromret.put(MOVCE_IDMOV, recmovce.get(MOVCE_IDMOV)); //IDMOV della chiave 2
|
||||||
|
//...in poi
|
||||||
|
TRectype toret(LF_MOVCE);
|
||||||
|
toret.put(MOVCE_IDCESPITE, id);
|
||||||
|
|
||||||
|
TString filtro;
|
||||||
|
filtro << MOVCE_IDRET << "==" << recmovce.get(MOVCE_IDMOV); //confronta numericamente IDRET e IDMOV
|
||||||
|
//ed ecco il cursore!
|
||||||
|
TCursor rettcur(&rel_rettif, filtro, 2, &fromret, &toret);
|
||||||
|
const long items = rettcur.items();
|
||||||
|
if (items > 0)
|
||||||
|
{
|
||||||
|
rettcur.freeze();
|
||||||
|
for (rettcur = 0l ; rettcur.pos()<items; ++rettcur)
|
||||||
|
stampa_movimento(rettcur.curr(LF_MOVCE), rettcur.curr(LF_MOVAM), rettcur.curr(LF_AMMMV));
|
||||||
|
}
|
||||||
|
|
||||||
|
stampa_sezione(totali);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRegistro_cespiti::print_valorifinali()
|
||||||
|
{
|
||||||
|
// valori a fine esercizio cespite (da salce e ammce con tpsaldo=2)
|
||||||
|
const int esercizio = _mask->get_int(F_ESERCIZIO);
|
||||||
|
|
||||||
|
TRectype& recsalce = _form->cursor()->curr(LF_SALCE);
|
||||||
|
const TString16 idcespite = _form->cursor()->curr().get(CESPI_IDCESPITE);
|
||||||
|
bool continua = recsalce.get(SALCE_IDCESPITE) == idcespite;
|
||||||
|
while (continua && (recsalce.get_int(SALCE_TPSALDO) !=2 || recsalce.get_int(SALCE_CODES) != esercizio))
|
||||||
|
continua = _form->cursor()->next_match(LF_SALCE);
|
||||||
|
if (!continua)
|
||||||
|
recsalce.zero();
|
||||||
|
|
||||||
|
TRectype& recammce = _form->cursor()->curr(LF_AMMCE);
|
||||||
|
continua = recammce.get(AMMCE_IDCESPITE) == idcespite;
|
||||||
|
while (recammce.get_int(AMMCE_TPAMM) != _tipoamm && continua)
|
||||||
|
continua = _form->cursor()->next_match(LF_AMMCE);
|
||||||
|
if (!continua)
|
||||||
|
recammce.zero();
|
||||||
|
|
||||||
|
TPrint_section& section = _form->get_valorifinali();
|
||||||
|
|
||||||
|
bool msg = _form->cursor()->curr(LF_AMMCE).get_bool(AMMCE_MSG01);
|
||||||
|
section.find_field(FR_FE_MSG1).enable(msg);
|
||||||
|
msg = _form->cursor()->curr(LF_AMMCE).get_bool(AMMCE_MSG02);
|
||||||
|
TString80 key; key.format("%04d",_mask->get_int(F_ESERCIZIO));
|
||||||
|
const TRectype& cce = cache().get("CCE", key);
|
||||||
|
long giorni = (_mask->get_date(F_DATAFINE) - _mask->get_date(F_DATAINIZIO) + 1);
|
||||||
|
key.format("Amm.to ragguagliato all'esercizio di %3d giorni su %3d",giorni, cce.get("I3"));
|
||||||
|
section.find_field(FR_FE_MSG2).set(key);
|
||||||
|
section.find_field(FR_FE_MSG2).enable(msg);
|
||||||
|
msg = _form->cursor()->curr(LF_AMMCE).get_bool(AMMCE_MSG03);
|
||||||
|
const int usoprom = _form->cursor()->curr().get_int(CESPI_USOPROM);
|
||||||
|
if (usoprom==2 || usoprom==4)
|
||||||
|
key="Ammortamento ridotto al 50% per bene in uso promiscuo";
|
||||||
|
else if (usoprom==3 || usoprom==5)
|
||||||
|
key="Ammortamento ridotto all'80% per bene in uso promiscuo";
|
||||||
|
section.find_field(FR_FE_MSG3).set(key);
|
||||||
|
section.find_field(FR_FE_MSG3).enable(msg);
|
||||||
|
msg = _form->cursor()->curr(LF_AMMCE).get_bool(AMMCE_MSG04);
|
||||||
|
section.find_field(FR_FE_MSG4).enable(msg);
|
||||||
|
msg = _form->cursor()->curr(LF_AMMCE).get_bool(AMMCE_MSG05);
|
||||||
|
section.find_field(FR_FE_MSG5).enable(msg);
|
||||||
|
msg = _form->cursor()->curr(LF_AMMCE).get_bool(AMMCE_MSG06);
|
||||||
|
section.find_field(FR_FE_MSG6).enable(msg);
|
||||||
|
section.update();
|
||||||
|
_form->set_pagina();
|
||||||
|
word y1 = section.find_field(FR_FE_QNOR).y();
|
||||||
|
word y2 = section.find_field(FR_FE_MSG6).y();
|
||||||
|
for (word i = 0; i < section.height(); i++)
|
||||||
|
{
|
||||||
|
if (i+1>=y1 && i+1<= y2)
|
||||||
|
{
|
||||||
|
TPrintrow& row = section.row(i);
|
||||||
|
TString256 rowstr = row.row();
|
||||||
|
if (!rowstr.blank())
|
||||||
|
printer().print(section.row(i));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printer().print(section.row(i));
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRegistro_cespiti::header_categoria(const int categoria)
|
||||||
|
{
|
||||||
|
// intestazione della categoria
|
||||||
|
TPrint_section& section = _form->get_testata_categoria();
|
||||||
|
section.update();
|
||||||
|
_form->set_pagina();
|
||||||
|
for (word i = 0; i < section.height(); i++)
|
||||||
|
printer().print(section.row(i));
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRegistro_cespiti::footer_categoria()
|
||||||
|
{
|
||||||
|
// stampa il footer della categoria
|
||||||
|
TPrint_section& section = _form->get_piede_categoria();
|
||||||
|
section.update();
|
||||||
|
_form->set_pagina();
|
||||||
|
for (word i = 0; i < section.height(); i++)
|
||||||
|
printer().print(section.row(i));
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRegistro_cespiti::footer_registro()
|
||||||
|
{
|
||||||
|
// stampa il footer del registro (totali generali)
|
||||||
|
TPrint_section& section = _form->get_piede_registro();
|
||||||
|
section.update();
|
||||||
|
_form->set_pagina();
|
||||||
|
for (word i = 0; i < section.height(); i++)
|
||||||
|
printer().print(section.row(i));
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ce3100(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TRegistro_cespiti a;
|
||||||
|
a.run(argc,argv,"Stampa registro cespiti");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
119
ce/ce3100.h
Executable file
119
ce/ce3100.h
Executable file
@ -0,0 +1,119 @@
|
|||||||
|
//-------------------------------------
|
||||||
|
// campi form registro cespiti (ce3100)
|
||||||
|
//-------------------------------------
|
||||||
|
|
||||||
|
#define FR_CODDITTA 1
|
||||||
|
#define FR_RAGSOC 2
|
||||||
|
#define FR_GRUPPO 3
|
||||||
|
#define FR_D_GRUPPO 4
|
||||||
|
#define FR_SPECIE 5
|
||||||
|
#define FR_D_SPECIE 6
|
||||||
|
#define FR_DATAINIZIO 7
|
||||||
|
#define FR_DATAFINE 8
|
||||||
|
#define FR_NUMGIORNI 9
|
||||||
|
#define FR_NUMGIOSOL 10
|
||||||
|
#define FR_LIBROCESPITI 11
|
||||||
|
|
||||||
|
#define FR_CAT 21
|
||||||
|
#define FR_D_CAT 22
|
||||||
|
|
||||||
|
#define FR_SI_CSTO 31
|
||||||
|
#define FR_SI_VNONAMM 32
|
||||||
|
#define FR_SI_TOTRIV 33
|
||||||
|
#define FR_SI_VALAMM 34
|
||||||
|
#define FR_SI_RIVGF 35
|
||||||
|
#define FR_SI_RIVGC 36
|
||||||
|
|
||||||
|
#define FR_MV_SEGNO 41
|
||||||
|
#define FR_MV_NUMELE 42
|
||||||
|
#define FR_MV_CSTO 43
|
||||||
|
#define FR_MV_VNONAMM 44
|
||||||
|
#define FR_MV_IMPVEN 45
|
||||||
|
#define FR_MV_RIVGF 46
|
||||||
|
#define FR_MV_RIVGC 47
|
||||||
|
#define FR_MV_TOTRIV 48
|
||||||
|
#define FR_MV_VALAMM 49
|
||||||
|
#define FR_MV_RESAMM 50
|
||||||
|
#define FR_MV_PLUSREIN 51
|
||||||
|
#define FR_MV_FONDOAMM 52
|
||||||
|
#define FR_MV_QNONAMM 53
|
||||||
|
#define FR_MV_QNOR 54
|
||||||
|
#define FR_MV_QACC 55
|
||||||
|
#define FR_MV_QANT 56
|
||||||
|
#define FR_MV_TOTFONDOAMM 57
|
||||||
|
#define FR_MV_QNOR_SEGNO 58
|
||||||
|
#define FR_MV_QACC_SEGNO 59
|
||||||
|
#define FR_MV_QANT_SEGNO 60
|
||||||
|
#define FR_MV_MINUSVALENZA 61
|
||||||
|
#define FR_MV_PLUSVALENZA 62
|
||||||
|
#define FR_MV_VALAMM_SEGNO 63
|
||||||
|
|
||||||
|
#define FR_FE_NUMELE 71
|
||||||
|
#define FR_FE_CSTO 72
|
||||||
|
#define FR_FE_VNONAMM 73
|
||||||
|
#define FR_FE_RIVGF 74
|
||||||
|
#define FR_FE_RIVGC 75
|
||||||
|
#define FR_FE_TOTRIV 76
|
||||||
|
#define FR_FE_VALAMM 77
|
||||||
|
#define FR_FE_RESAMM 78
|
||||||
|
#define FR_FE_PLUSREIN 79
|
||||||
|
#define FR_FE_FONDOAMM 80
|
||||||
|
#define FR_FE_QNONAMM 81
|
||||||
|
#define FR_FE_VSPMANU 82
|
||||||
|
#define FR_FE_PNOR 83
|
||||||
|
#define FR_FE_PACC 84
|
||||||
|
#define FR_FE_PANT 85
|
||||||
|
#define FR_FE_QNOR 86
|
||||||
|
#define FR_FE_FPRIVATO1 87
|
||||||
|
#define FR_FE_QACC 88
|
||||||
|
#define FR_FE_FPRIVATO2 89
|
||||||
|
#define FR_FE_QANT 90
|
||||||
|
#define FR_FE_FPRIVATO3 91
|
||||||
|
#define FR_FE_MSG1 92
|
||||||
|
#define FR_FE_MSG2 93
|
||||||
|
#define FR_FE_MSG3 94
|
||||||
|
#define FR_FE_MSG4 95
|
||||||
|
#define FR_FE_MSG5 96
|
||||||
|
#define FR_FE_MSG6 97
|
||||||
|
#define FR_VB_FONDOAMM 98
|
||||||
|
#define FR_VB_QNONAMM 99
|
||||||
|
#define FR_AE_NORMALE 100
|
||||||
|
#define FR_AE_ACCELERATO 101
|
||||||
|
#define FR_AE_ANTICIPATO 102
|
||||||
|
#define FR_AR_NORMALE 103
|
||||||
|
#define FR_AR_ACCELERATO 104
|
||||||
|
#define FR_AR_ANTICIPATO 105
|
||||||
|
|
||||||
|
#define FR_TC_ELEM 111
|
||||||
|
#define FR_TC_CSTO 112
|
||||||
|
#define FR_TC_VNONAMM 113
|
||||||
|
#define FR_TC_TOTRIV 114
|
||||||
|
#define FR_TC_VALAMM 115
|
||||||
|
#define FR_TC_RESAMM 116
|
||||||
|
#define FR_TC_PLUSREIN 117
|
||||||
|
#define FR_TC_FONDOAMM 118
|
||||||
|
#define FR_TC_QNONAMM 119
|
||||||
|
#define FR_TC_VSPMANU 120
|
||||||
|
#define FR_TC_AE_NORMALE 121
|
||||||
|
#define FR_TC_AE_ACCELERATO 122
|
||||||
|
#define FR_TC_AE_ANTICIPATO 123
|
||||||
|
#define FR_TC_AR_NORMALE 124
|
||||||
|
#define FR_TC_AR_ACCELERATO 125
|
||||||
|
#define FR_TC_AR_ANTICIPATO 126
|
||||||
|
|
||||||
|
#define FR_TG_ELEM 151
|
||||||
|
#define FR_TG_CSTO 152
|
||||||
|
#define FR_TG_VNONAMM 153
|
||||||
|
#define FR_TG_TOTRIV 154
|
||||||
|
#define FR_TG_VALAMM 155
|
||||||
|
#define FR_TG_RESAMM 156
|
||||||
|
#define FR_TG_PLUSREIN 157
|
||||||
|
#define FR_TG_FONDOAMM 158
|
||||||
|
#define FR_TG_QNONAMM 159
|
||||||
|
#define FR_TG_VSPMANU 160
|
||||||
|
#define FR_TG_AE_NORMALE 161
|
||||||
|
#define FR_TG_AE_ACCELERATO 162
|
||||||
|
#define FR_TG_AE_ANTICIPATO 163
|
||||||
|
#define FR_TG_AR_NORMALE 164
|
||||||
|
#define FR_TG_AR_ACCELERATO 165
|
||||||
|
#define FR_TG_AR_ANTICIPATO 166
|
||||||
1747
ce/ce3100a.frm
Executable file
1747
ce/ce3100a.frm
Executable file
File diff suppressed because it is too large
Load Diff
22
ce/ce3100a.h
Executable file
22
ce/ce3100a.h
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
// campi maschera ce3100a
|
||||||
|
|
||||||
|
#define F_CODDITTA 101
|
||||||
|
#define F_RAGSOC 102
|
||||||
|
#define F_ESERCIZIO 103
|
||||||
|
#define F_DATAINIZIO 104
|
||||||
|
#define F_DATAFINE 105
|
||||||
|
#define F_GRUPPO 106
|
||||||
|
#define F_SPECIE 107
|
||||||
|
#define F_D_GRUPPO 108
|
||||||
|
#define F_D_SPECIE 109
|
||||||
|
#define F_DATAULTCALC 110
|
||||||
|
#define F_CATINI 111
|
||||||
|
#define F_D_CATINI 112
|
||||||
|
#define F_CATFIN 113
|
||||||
|
#define F_D_CATFIN 114
|
||||||
|
#define F_TIPOREGISTRO 115
|
||||||
|
#define F_CODREG 116
|
||||||
|
#define F_CALCOLO 117
|
||||||
|
#define F_AMMORTAMENTI 118
|
||||||
|
#define F_TIPOSTAMPA 119
|
||||||
|
|
||||||
208
ce/ce3100a.uml
Executable file
208
ce/ce3100a.uml
Executable file
@ -0,0 +1,208 @@
|
|||||||
|
#include "ce3100a.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -2 0 2
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Stampa Registro cespiti" -1 -1 78 6
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 77 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 0 ""
|
||||||
|
FLAGS "R"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODDITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "Ditta "
|
||||||
|
FLAGS "DF"
|
||||||
|
USE LF_NDITTE
|
||||||
|
INPUT CODDITTA F_CODDITTA
|
||||||
|
OUTPUT F_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 15 1 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_ESERCIZIO 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Esercizio "
|
||||||
|
FLAGS "Z"
|
||||||
|
USE CCE
|
||||||
|
JOIN ESC ALIAS 105 INTO CODTAB==CODTAB
|
||||||
|
INPUT CODTAB F_ESERCIZIO
|
||||||
|
DISPLAY "Codice esercizio" CODTAB
|
||||||
|
DISPLAY "Data inizio" 105@->D0
|
||||||
|
DISPLAY "Data fine@10" 105@->D1
|
||||||
|
OUTPUT F_ESERCIZIO CODTAB
|
||||||
|
OUTPUT F_DATAINIZIO 105@->D0
|
||||||
|
OUTPUT F_DATAFINE 105@->D1
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATAINIZIO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 20 2 "Data inizio "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATAFINE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 2 "Data fine "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_GRUPPO 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Gruppo "
|
||||||
|
FLAGS "Z"
|
||||||
|
USE CCB KEY 1
|
||||||
|
JOIN %CGR ALIAS 106 INTO CODTAB==CODTAB[5,6]
|
||||||
|
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||||
|
INPUT CODTAB[5,6] F_GRUPPO
|
||||||
|
INPUT CODTAB[7,10] F_SPECIE
|
||||||
|
DISPLAY "Codice" CODTAB[5,6]
|
||||||
|
DISPLAY "Descrizione@60" 106@->S0
|
||||||
|
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||||
|
OUTPUT F_D_GRUPPO 106@->S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_SPECIE 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Specie "
|
||||||
|
FLAGS "_"
|
||||||
|
USE CCB KEY 1
|
||||||
|
JOIN %CAT ALIAS 107 INTO CODTAB[1,2]==CODTAB[5,6] CODTAB[3,6]==CODTAB[7,10]
|
||||||
|
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||||
|
INPUT CODTAB[5,6] F_GRUPPO SELECT
|
||||||
|
INPUT CODTAB[7,10] F_SPECIE
|
||||||
|
DISPLAY "Gruppo" CODTAB[5,6]
|
||||||
|
DISPLAY "Specie" CODTAB[7,10]
|
||||||
|
DISPLAY "Descrizione@60" 107@->S0
|
||||||
|
OUTPUT F_SPECIE CODTAB[7,10]
|
||||||
|
OUTPUT F_D_SPECIE 107@->S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_GRUPPO 60 55
|
||||||
|
BEGIN
|
||||||
|
PROMPT 20 3 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_SPECIE 60 55
|
||||||
|
BEGIN
|
||||||
|
PROMPT 20 4 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATAULTCALC
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Data ultimo calcolo ammortamenti "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CATINI 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Da categoria "
|
||||||
|
USE %CAC SELECT ((CODTAB[1,2]==#F_GRUPPO) && (CODTAB[3,6]==#F_SPECIE)) || (CODTAB[1,6]==" ")
|
||||||
|
INPUT CODTAB[1,2] F_GRUPPO
|
||||||
|
INPUT CODTAB[3,6] F_SPECIE
|
||||||
|
INPUT CODTAB[7,8] F_CATINI
|
||||||
|
DISPLAY "Gruppo" CODTAB[1,2]
|
||||||
|
DISPLAY "Specie" CODTAB[3,6]
|
||||||
|
DISPLAY "Cat." CODTAB[7,8]
|
||||||
|
DISPLAY "Descrizione@60" S0
|
||||||
|
OUTPUT F_CATINI CODTAB[7,8]
|
||||||
|
OUTPUT F_D_CATINI S0
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_CATINI 60 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 22 7 ""
|
||||||
|
USE %CAC SELECT ((CODTAB[1,2]==#F_GRUPPO) && (CODTAB[3,6]==#F_SPECIE)) || (CODTAB[1,6]==" ")
|
||||||
|
INPUT S0 F_D_CATINI
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Categoria" CODTAB[7,8]
|
||||||
|
DISPLAY "Gruppo" CODTAB[1,2]
|
||||||
|
DISPLAY "Specie" CODTAB[3,6]
|
||||||
|
COPY OUTPUT F_CATINI
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CATFIN 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "A categoria "
|
||||||
|
USE %CAC SELECT ((CODTAB[1,2]==#F_GRUPPO) && (CODTAB[3,6]==#F_SPECIE)) || (CODTAB[1,6]==" ")
|
||||||
|
INPUT CODTAB[1,2] F_GRUPPO
|
||||||
|
INPUT CODTAB[3,6] F_SPECIE
|
||||||
|
INPUT CODTAB[7,8] F_CATFIN
|
||||||
|
DISPLAY "Gruppo" CODTAB[1,2]
|
||||||
|
DISPLAY "Specie" CODTAB[3,6]
|
||||||
|
DISPLAY "Cat." CODTAB[7,8]
|
||||||
|
DISPLAY "Descrizione@60" S0
|
||||||
|
OUTPUT F_CATFIN CODTAB[7,8]
|
||||||
|
OUTPUT F_D_CATFIN S0
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_D_CATFIN 60 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 22 8 ""
|
||||||
|
USE %CAC SELECT ((CODTAB[1,2]==#F_GRUPPO) && (CODTAB[3,6]==#F_SPECIE)) || (CODTAB[1,6]==" ")
|
||||||
|
INPUT S0 F_D_CATFIN
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Categoria" CODTAB[7,8]
|
||||||
|
DISPLAY "Gruppo" CODTAB[1,2]
|
||||||
|
DISPLAY "Specie" CODTAB[3,6]
|
||||||
|
COPY OUTPUT F_CATFIN
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
RADIOBUTTON F_TIPOREGISTRO 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 9 "Stampa registro"
|
||||||
|
ITEM "1|di Prova"
|
||||||
|
MESSAGE CLEAR,F_CODREG|DISABLE,F_CODREG
|
||||||
|
MESSAGE ENABLE, F_AMMORTAMENTI
|
||||||
|
ITEM "2|Bollato"
|
||||||
|
MESSAGE ENABLE,F_CODREG
|
||||||
|
MESSAGE "1",F_AMMORTAMENTI|DISABLE,F_AMMORTAMENTI
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODREG 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 10 "Cod.registro "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_CALCOLO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 12 "Esegui calcolo ammortamenti prima di stampare"
|
||||||
|
END
|
||||||
|
|
||||||
|
RADIOBUTTON F_AMMORTAMENTI 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 13 "Ammortamenti"
|
||||||
|
ITEM "1|Fiscali"
|
||||||
|
ITEM "2|Civilistici"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
594
ce/ce3200.cpp
Executable file
594
ce/ce3200.cpp
Executable file
@ -0,0 +1,594 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <form.h>
|
||||||
|
#include <printer.h>
|
||||||
|
#include <recarray.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include "..\cg\cglib01.h"
|
||||||
|
#include "ce3.h"
|
||||||
|
#include "ce3200a.h"
|
||||||
|
#include "ce3200.h"
|
||||||
|
#include "celib.h"
|
||||||
|
#include "cespi.h"
|
||||||
|
#include "movce.h"
|
||||||
|
|
||||||
|
//-----FORM--------------------------------------------------------------------------------------//
|
||||||
|
|
||||||
|
class TForm_schedacesp : public TForm_cespiti
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual bool validate(TForm_item &cf, TToken_string &s);
|
||||||
|
void set_testata() {set_header(1,TRUE);}
|
||||||
|
void set_pedata() {set_footer(1,FALSE); set_footer(1,TRUE);}
|
||||||
|
TForm_schedacesp();
|
||||||
|
TPrint_section& get_rigauno() {return section('B', first_page);}
|
||||||
|
TPrint_section& get_rigadue() {return section('B', odd_page);}
|
||||||
|
TPrint_section& get_rigadueven() {return section('B', even_page);}
|
||||||
|
TPrint_section& get_rigatre() {return section('B', last_page);}
|
||||||
|
TPrint_section& get_rigatot() {return section('F', odd_page);}
|
||||||
|
TPrint_section& get_footer() {return section('F', first_page);}
|
||||||
|
virtual ~TForm_schedacesp();
|
||||||
|
};
|
||||||
|
|
||||||
|
TForm_schedacesp::TForm_schedacesp() :TForm_cespiti ("ce3200a") //costruttore con relazione..
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
TForm_schedacesp::~TForm_schedacesp()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TForm_schedacesp::validate(TForm_item &cf, TToken_string &s)
|
||||||
|
{
|
||||||
|
return TForm_cespiti::validate(cf,s); //richiama la validate standard della classe genitore (TForm_cespiti)
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----AUTOMASK---------------------------------------------------------------------------------//
|
||||||
|
|
||||||
|
class TStampastorico_mask : public TAutomask
|
||||||
|
{
|
||||||
|
TRelation * _rel;
|
||||||
|
TCursor * _cur;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
public:
|
||||||
|
|
||||||
|
TStampastorico_mask();
|
||||||
|
|
||||||
|
virtual ~TStampastorico_mask(){};
|
||||||
|
};
|
||||||
|
|
||||||
|
TStampastorico_mask::TStampastorico_mask() :TAutomask ("ce3200a")
|
||||||
|
{
|
||||||
|
ditta_cespiti().init_mask(* this);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TStampastorico_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F_SITFISC :
|
||||||
|
if (e == fe_close)
|
||||||
|
{
|
||||||
|
if (!get_bool(F_SITFISC) && !get_bool(F_SITCIV) && !get_bool(F_SITGEST))
|
||||||
|
return error_box("Selezionare almeno una delle Situazioni da stampare");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----SKELETON APPLICATION------------------------------------------------------------------------------------------//
|
||||||
|
|
||||||
|
class TStampa_storico : public TSkeleton_application
|
||||||
|
{
|
||||||
|
TStampastorico_mask * _mask;
|
||||||
|
TForm_schedacesp * _form;
|
||||||
|
bool _ammvenduti;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool create();
|
||||||
|
virtual bool destroy();
|
||||||
|
virtual void main_loop();
|
||||||
|
|
||||||
|
void print_header( const int tipo );
|
||||||
|
void print_footer();
|
||||||
|
void print_percespite( const int tipo );
|
||||||
|
void stampa_rigauno( bool errore );
|
||||||
|
|
||||||
|
public:
|
||||||
|
TStampa_storico() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bool TStampa_storico::create()
|
||||||
|
{
|
||||||
|
open_files(LF_CESPI, LF_SALCE, LF_AMMCE, LF_MOVCE, LF_AMMMV, 0);
|
||||||
|
_mask = new TStampastorico_mask;
|
||||||
|
_form = new TForm_schedacesp();
|
||||||
|
|
||||||
|
return TSkeleton_application::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TStampa_storico::destroy()
|
||||||
|
{
|
||||||
|
delete _mask;
|
||||||
|
delete _form;
|
||||||
|
return TSkeleton_application::destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TStampa_storico::print_header( const int tipo )
|
||||||
|
{
|
||||||
|
_form->find_field('H', odd_page, FF_CODDITTA).set(_mask->get(F_CODDITTA));
|
||||||
|
_form->find_field('H', odd_page, FF_DESCRDITTA).set(_mask->get(F_DESCRDITTA));
|
||||||
|
_form->find_field('H', odd_page, FF_GRUPPO).set(_mask->get(F_GRUPPO));
|
||||||
|
_form->find_field('H', odd_page, FF_D_GRUPPO).set(_mask->get(F_D_GRUPPO));
|
||||||
|
_form->find_field('H', odd_page, FF_SPECIE).set(_mask->get(F_SPECIE));
|
||||||
|
_form->find_field('H', odd_page, FF_D_SPECIE).set(_mask->get(F_D_SPECIE));
|
||||||
|
TDate inies = _mask->get(F_INIZIO_ES);
|
||||||
|
--inies;
|
||||||
|
_form->find_field('H', odd_page, FF_DATASIT).set(inies.string());
|
||||||
|
|
||||||
|
switch(tipo) //in base al(ai) tipo(i) di situazione cambia una riga dell'header
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
_form->find_field('H', odd_page, FF_SITUAZIONE).set("fiscale");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
_form->find_field('H', odd_page, FF_SITUAZIONE).set("civilistica");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
_form->find_field('H', odd_page, FF_SITUAZIONE).set("gestionale");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_form->set_testata();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TStampa_storico::print_footer()
|
||||||
|
{
|
||||||
|
_form->set_pedata();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TStampa_storico::stampa_rigauno( bool errore)
|
||||||
|
{
|
||||||
|
TRectype& recsalce = _form->cursor()->curr(LF_SALCE);
|
||||||
|
TDate datasaldo = _form->cursor()->curr(-102).get_date("D0");
|
||||||
|
real numele = recsalce.get_real("NUMELE");
|
||||||
|
|
||||||
|
TPrint_section& section1 = _form->get_rigauno(); //preparazione stampa riga dettaglio 1
|
||||||
|
TDate dtcomp = _form->cursor()->curr(LF_CESPI).get_date("DTCOMP");
|
||||||
|
section1.reset();
|
||||||
|
|
||||||
|
if ((datasaldo >= dtcomp && numele > 0) || (datasaldo == dtcomp && numele == 0)) //datasaldo >= data acquisto
|
||||||
|
{
|
||||||
|
section1.find_field(FF_DATAUNO).set(datasaldo);
|
||||||
|
section1.find_field(FF_DESCRUNO).set("Ripresa saldi");
|
||||||
|
section1.find_field(FF_NUMELEUNO).set(_form->cursor()->curr(LF_SALCE).get("NUMELE"));
|
||||||
|
real sum = recsalce.get_real("CSTO");
|
||||||
|
sum -= recsalce.get_real("VNONAMM");
|
||||||
|
sum += recsalce.get_real("RIV75");
|
||||||
|
sum += recsalce.get_real("RIV83");
|
||||||
|
sum += recsalce.get_real("RIV90");
|
||||||
|
sum += recsalce.get_real("RIV91");
|
||||||
|
sum += recsalce.get_real("RIVGF");
|
||||||
|
section1.find_field(FF_VALOREUNO).set(sum.string());
|
||||||
|
sum = 0;
|
||||||
|
TRectype& recammce = _form->cursor()->curr(LF_AMMCE);
|
||||||
|
sum = recammce.get_real("QNOR");
|
||||||
|
sum += recammce.get_real("QANT");
|
||||||
|
sum += recammce.get_real("QACC");
|
||||||
|
section1.find_field(FF_FONDIUNO).set(sum.string());
|
||||||
|
}
|
||||||
|
else // se datasaldo < data acquisto sono sbagliate le date
|
||||||
|
{
|
||||||
|
section1.find_field(FF_DESCRUNO).set("Date non congruenti sui saldi iniziali");
|
||||||
|
errore = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
section1.update();
|
||||||
|
for (word i = 0; i < section1.height(); i++) // stampa le righe tipo 1 (solo nel caso che dtmov != dtcomp)
|
||||||
|
printer().print(section1.row(i)); // in caso contrario passa semplicemente alle righe tipo 2
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TStampa_storico::print_percespite( const int tipo)
|
||||||
|
{
|
||||||
|
bool ho_stampato_qualcosa = FALSE;
|
||||||
|
print_header(tipo); // stampa l'intestazione;tipo si riferisce al tipo di situazione da stampare
|
||||||
|
print_footer(); //stampa data e pagenumber
|
||||||
|
|
||||||
|
const int esercizio = _mask->get_int(F_ESERCIZIO);
|
||||||
|
|
||||||
|
const long pos = _form->cursor()->pos(); //memorizza posizione cursore
|
||||||
|
|
||||||
|
TRectype& recammce = _form->cursor()->curr(LF_AMMCE); //scelta dei tipi ammort. su AMMCE
|
||||||
|
bool continua = _form->cursor()->is_first_match(LF_AMMCE);
|
||||||
|
while (recammce.get_int("TPAMM") != tipo && continua)
|
||||||
|
continua = _form->cursor()->next_match(LF_AMMCE);
|
||||||
|
|
||||||
|
TRectype& recammmv = _form->cursor()->curr(LF_AMMMV); //scelta dei tipi ammort. su AMMMV
|
||||||
|
continua = _form->cursor()->is_first_match(LF_AMMMV);
|
||||||
|
while (recammmv.get_int("TPAMM") != tipo && continua)
|
||||||
|
continua = _form->cursor()->next_match(LF_AMMMV);
|
||||||
|
|
||||||
|
|
||||||
|
TPrint_section& sectot = _form->get_rigatot(); //resetta il totale elementi,valore,fondo amm.
|
||||||
|
sectot.find_field(FF_TOTELEM).set("");
|
||||||
|
sectot.find_field(FF_TOTVALORE).set("");
|
||||||
|
sectot.find_field(FF_TOTAMMO).set("");
|
||||||
|
|
||||||
|
TRectype& recmovce = _form->cursor()->curr(LF_MOVCE); // riga dettaglio 2
|
||||||
|
TRelation& rel = *_form->relation();
|
||||||
|
|
||||||
|
|
||||||
|
if (rel.is_first_match(LF_MOVCE))
|
||||||
|
{
|
||||||
|
bool errore = FALSE; //variabile che indica se le date del cespite sono congruenti per essere stampate
|
||||||
|
|
||||||
|
TDate dtmov = _form->cursor()->curr(-105).get_date("DTMOV");
|
||||||
|
TDate dtcomp = _form->cursor()->curr(LF_CESPI).get_date("DTCOMP");
|
||||||
|
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
const TDate& inies = esc[esercizio].inizio();
|
||||||
|
|
||||||
|
if (dtmov < inies)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (dtmov != dtcomp) //la riga tipo 1 va scritta solo se dtmov != dtcomp (in caso contrario é una tipo 2)
|
||||||
|
{
|
||||||
|
stampa_rigauno( errore );
|
||||||
|
ho_stampato_qualcosa = TRUE;
|
||||||
|
errore = !rel.next_match(LF_MOVCE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!errore) do //se non c'é incongruenza di date procede alla stampa righe 2
|
||||||
|
{
|
||||||
|
|
||||||
|
TDate datamov = rel.curr(LF_MOVCE).get("DTMOV");
|
||||||
|
if (datamov >= inies) break;
|
||||||
|
|
||||||
|
bool ammven = FALSE;
|
||||||
|
if (_ammvenduti) // caso in cui la ditta ha "ammort. su venduti" = SI
|
||||||
|
{ // controlla su %tmc se il movimento é una vendita
|
||||||
|
TString16 tipomov = recmovce.get("CODMOV");
|
||||||
|
const TRectype& tmc = cache().get("%TMC" , tipomov);
|
||||||
|
ammven = tmc.get_bool("B4");
|
||||||
|
}
|
||||||
|
|
||||||
|
real aliqnor = recammmv.get_real("PENOR");
|
||||||
|
real aliqant = recammmv.get_real("PEANT");
|
||||||
|
real aliqacc = recammmv.get_real("PEACC");
|
||||||
|
|
||||||
|
if (ammven) // se é un movimento di vendita...
|
||||||
|
{
|
||||||
|
TPrint_section& section2ven = _form->get_rigadueven();
|
||||||
|
|
||||||
|
if (_form->cursor()->curr(LF_MOVCE).get_char("SEGNO")=='-') //controlla se c'é il - in movce
|
||||||
|
{
|
||||||
|
section2ven.find_field(FF_SEGNO).set("-1");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section2ven.find_field(FF_SEGNO).set("1");
|
||||||
|
}
|
||||||
|
|
||||||
|
int r = 1;
|
||||||
|
if (aliqnor != ZERO)
|
||||||
|
{
|
||||||
|
section2ven.find_field(FF_VPENOR).show();
|
||||||
|
section2ven.find_field(FF_VPENOR).y() = r+1;
|
||||||
|
section2ven.find_field(FF_VALINOR).show();
|
||||||
|
section2ven.find_field(FF_VALINOR).y() = r+1;
|
||||||
|
section2ven.find_field(FF_VQNOR).show();
|
||||||
|
section2ven.find_field(FF_VQNOR).y() = r+1;
|
||||||
|
r++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section2ven.find_field(FF_VPENOR).hide();
|
||||||
|
section2ven.find_field(FF_VALINOR).hide();
|
||||||
|
section2ven.find_field(FF_VQNOR).hide();
|
||||||
|
}
|
||||||
|
if (aliqant != ZERO)
|
||||||
|
{
|
||||||
|
section2ven.find_field(FF_VPEANT).show();
|
||||||
|
section2ven.find_field(FF_VPEANT).y() = r+1;
|
||||||
|
section2ven.find_field(FF_VALIANT).show();
|
||||||
|
section2ven.find_field(FF_VALIANT).y() = r+1;
|
||||||
|
section2ven.find_field(FF_VQANT).show();
|
||||||
|
section2ven.find_field(FF_VQANT).y() = r+1;
|
||||||
|
r++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section2ven.find_field(FF_VPEANT).hide();
|
||||||
|
section2ven.find_field(FF_VALIANT).hide();
|
||||||
|
section2ven.find_field(FF_VQANT).hide();
|
||||||
|
}
|
||||||
|
if (aliqacc != ZERO)
|
||||||
|
{
|
||||||
|
section2ven.find_field(FF_VPEACC).show();
|
||||||
|
section2ven.find_field(FF_VPEACC).y() = r+1;
|
||||||
|
section2ven.find_field(FF_VALIACC).show();
|
||||||
|
section2ven.find_field(FF_VALIACC).y() = r+1;
|
||||||
|
section2ven.find_field(FF_VQACC).show();
|
||||||
|
section2ven.find_field(FF_VQACC).y() = r+1;
|
||||||
|
r++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section2ven.find_field(FF_VPEACC).hide();
|
||||||
|
section2ven.find_field(FF_VALIACC).hide();
|
||||||
|
section2ven.find_field(FF_VQACC).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
section2ven.update();
|
||||||
|
for (int i = 0; i < r; i++) // stampa le righe 2 con i movimenti vendita
|
||||||
|
printer().print(section2ven.row(i));
|
||||||
|
ho_stampato_qualcosa = TRUE;
|
||||||
|
}
|
||||||
|
else // se é un movimento NON di vendita...
|
||||||
|
{
|
||||||
|
TPrint_section& section2 = _form->get_rigadue();
|
||||||
|
|
||||||
|
if (_form->cursor()->curr(LF_MOVCE).get_char("SEGNO")=='-') //controlla se c'é il - in movce (es. sono le rettifiche su acquisti)
|
||||||
|
{
|
||||||
|
section2.find_field(FF_SEGNO).set("-1");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section2.find_field(FF_SEGNO).set("1");
|
||||||
|
}
|
||||||
|
//decide quante righe stampare in base al numero di aliquote presenti
|
||||||
|
int r = 1;
|
||||||
|
if (aliqnor != ZERO)
|
||||||
|
{
|
||||||
|
section2.find_field(FF_PENOR).show();
|
||||||
|
section2.find_field(FF_PENOR).y() = r;
|
||||||
|
section2.find_field(FF_ALINOR).show();
|
||||||
|
section2.find_field(FF_ALINOR).y() = r;
|
||||||
|
section2.find_field(FF_QNOR).show();
|
||||||
|
section2.find_field(FF_QNOR).y() = r;
|
||||||
|
r++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section2.find_field(FF_PENOR).hide();
|
||||||
|
section2.find_field(FF_ALINOR).hide();
|
||||||
|
section2.find_field(FF_QNOR).hide();
|
||||||
|
}
|
||||||
|
if (aliqant != ZERO)
|
||||||
|
{
|
||||||
|
section2.find_field(FF_PEANT).show();
|
||||||
|
section2.find_field(FF_PEANT).y() = r;
|
||||||
|
section2.find_field(FF_ALIANT).show();
|
||||||
|
section2.find_field(FF_ALIANT).y() = r;
|
||||||
|
section2.find_field(FF_QANT).show();
|
||||||
|
section2.find_field(FF_QANT).y() = r;
|
||||||
|
r++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section2.find_field(FF_PEANT).hide();
|
||||||
|
section2.find_field(FF_ALIANT).hide();
|
||||||
|
section2.find_field(FF_QANT).hide();
|
||||||
|
}
|
||||||
|
if (aliqacc != ZERO)
|
||||||
|
{
|
||||||
|
section2.find_field(FF_PEACC).show();
|
||||||
|
section2.find_field(FF_PEACC).y() = r;
|
||||||
|
section2.find_field(FF_ALIACC).show();
|
||||||
|
section2.find_field(FF_ALIACC).y() = r;
|
||||||
|
section2.find_field(FF_QACC).show();
|
||||||
|
section2.find_field(FF_QACC).y() = r;
|
||||||
|
r++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section2.find_field(FF_PEACC).hide();
|
||||||
|
section2.find_field(FF_ALIACC).hide();
|
||||||
|
section2.find_field(FF_QACC).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
section2.update();
|
||||||
|
for (int i = 0; i < r; i++) // stampa le righe con tutti i movimenti (righe tipo 2)
|
||||||
|
printer().print(section2.row(i));
|
||||||
|
ho_stampato_qualcosa = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} while (rel.next_match(LF_MOVCE));
|
||||||
|
|
||||||
|
|
||||||
|
if (!errore)
|
||||||
|
{
|
||||||
|
TDate dataelim = _form->cursor()->curr(LF_CESPI).get_date("DTALIEN");
|
||||||
|
TDate datafinees = _form->cursor()->curr(-102).get_date("D1");
|
||||||
|
if (dataelim.empty() || dataelim > datafinees) // qui ci va l'if con la condizione di scrittura riga3
|
||||||
|
{
|
||||||
|
TRectype& recsalce = _form->cursor()->curr(LF_SALCE);
|
||||||
|
bool continua = _form->cursor()->is_first_match(LF_SALCE);;
|
||||||
|
while (recsalce.get_int("TPSALDO") != 2 && continua)
|
||||||
|
continua = _form->cursor()->next_match(LF_SALCE);
|
||||||
|
|
||||||
|
real aliqnort = recammce.get_real("PNOR");
|
||||||
|
real aliqantt = recammce.get_real("PANT");
|
||||||
|
real aliqacct = recammce.get_real("PACC");
|
||||||
|
|
||||||
|
real qnort = recammce.get_real("QNOR");
|
||||||
|
real qantt = recammce.get_real("QANT");
|
||||||
|
real qacct = recammce.get_real("QACC");
|
||||||
|
|
||||||
|
bool scrivo_unarigatre = FALSE;
|
||||||
|
|
||||||
|
TPrint_section& section3 = _form->get_rigatre();
|
||||||
|
//controllo sulla scrittura di piú righe causa diverse aliquote
|
||||||
|
int r = 1;
|
||||||
|
if (aliqnort != ZERO || qnort != ZERO)
|
||||||
|
{
|
||||||
|
section3.find_field(FF_TPNOR).show();
|
||||||
|
section3.find_field(FF_TPNOR).y() = r;
|
||||||
|
section3.find_field(FF_TALINOR).show();
|
||||||
|
section3.find_field(FF_TALINOR).y() = r;
|
||||||
|
section3.find_field(FF_TQNOR).show();
|
||||||
|
section3.find_field(FF_TQNOR).y() = r;
|
||||||
|
r++;
|
||||||
|
scrivo_unarigatre = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section3.find_field(FF_TPNOR).hide();
|
||||||
|
section3.find_field(FF_TALINOR).hide();
|
||||||
|
section3.find_field(FF_TQNOR).hide();
|
||||||
|
}
|
||||||
|
if (aliqantt != ZERO || qantt != ZERO)
|
||||||
|
{
|
||||||
|
section3.find_field(FF_TPANT).show();
|
||||||
|
section3.find_field(FF_TPANT).y() = r;
|
||||||
|
section3.find_field(FF_TALIANT).show();
|
||||||
|
section3.find_field(FF_TALIANT).y() = r;
|
||||||
|
section3.find_field(FF_TQANT).show();
|
||||||
|
section3.find_field(FF_TQANT).y() = r;
|
||||||
|
r++;
|
||||||
|
scrivo_unarigatre = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section3.find_field(FF_TPANT).hide();
|
||||||
|
section3.find_field(FF_TALIANT).hide();
|
||||||
|
section3.find_field(FF_TQANT).hide();
|
||||||
|
}
|
||||||
|
if (aliqacct != ZERO || qacct != ZERO)
|
||||||
|
{
|
||||||
|
section3.find_field(FF_TPACC).show();
|
||||||
|
section3.find_field(FF_TPACC).y() = r;
|
||||||
|
section3.find_field(FF_TALIACC).show();
|
||||||
|
section3.find_field(FF_TALIACC).y() = r;
|
||||||
|
section3.find_field(FF_TQACC).show();
|
||||||
|
section3.find_field(FF_TQACC).y() = r;
|
||||||
|
r++;
|
||||||
|
scrivo_unarigatre = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
section3.find_field(FF_TPACC).hide();
|
||||||
|
section3.find_field(FF_TALIACC).hide();
|
||||||
|
section3.find_field(FF_TQACC).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (scrivo_unarigatre) //stampa la riga3 solo se ha trovato almeno una cosa da stampare
|
||||||
|
{
|
||||||
|
TDate inies = _mask->get(F_INIZIO_ES);
|
||||||
|
--inies;
|
||||||
|
_form->find_field('B', last_page, FF_DATASIT).set(inies.string());
|
||||||
|
|
||||||
|
section3.update();
|
||||||
|
for (int i = 0; i < r ; i++) // stampa riga tipo 3
|
||||||
|
printer().print(section3.row(i));
|
||||||
|
ho_stampato_qualcosa = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ho_stampato_qualcosa) //controlla se ha stampato qualcosa (riga1, righe2, riga3)..
|
||||||
|
{
|
||||||
|
sectot.update();
|
||||||
|
for (word i = 0; i < sectot.height(); i++) //..e in caso affermativo stampa riga totale
|
||||||
|
printer().print(sectot.row(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else //é l'else di if(rel.is_first_match(LF_MOVCE)):
|
||||||
|
{ //serve nel caso il cespite non abbia movimenti ma solo saldi
|
||||||
|
bool errore = FALSE;
|
||||||
|
stampa_rigauno( errore );
|
||||||
|
ho_stampato_qualcosa = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ho_stampato_qualcosa)
|
||||||
|
printer().formfeed(); //salta una pagina alla fine della scheda
|
||||||
|
*_form->cursor() = pos; //riposiziona il cursore
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TStampa_storico::main_loop()
|
||||||
|
{
|
||||||
|
_mask->set(F_SITFISC,"X");
|
||||||
|
while (_mask->run() == K_ENTER)
|
||||||
|
{
|
||||||
|
TRectype rec(LF_CESPI);
|
||||||
|
TString filtro;
|
||||||
|
TCursor& cursore = *_form->cursor();
|
||||||
|
const int esercizio = _mask->get_int(F_ESERCIZIO); //controlla il booleano _ammvenduti nell'esercizio corrente
|
||||||
|
TString80 key; key.format("%04d",esercizio);
|
||||||
|
const TRectype& cce = cache().get("CCE", key);
|
||||||
|
_ammvenduti = cce.get_bool("B3");
|
||||||
|
|
||||||
|
const int r = _mask->get_int(F_TIPOSTAMPA); //in base al tipo di stampa selezionato setta il cursore
|
||||||
|
switch (r)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
cursore.setkey(1); // setta la chiave (nel caso si fosse scelta in precedenza la 2)
|
||||||
|
if (!_mask->field(F_CODCESP).empty())
|
||||||
|
rec.put("IDCESPITE", _mask->get(F_CODCESP));
|
||||||
|
filtro.format("(CODCGRA==%d)&&(CODSPA==\"%s\")", _mask->get_int(F_GRUPPO), (const char *) _mask->get(F_SPECIE));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
cursore.setkey(2); // setta la chiave 2
|
||||||
|
rec.put("CODCGRA", _mask->get_int(F_GRUPPO));
|
||||||
|
rec.put("CODSPA", _mask->get(F_SPECIE));
|
||||||
|
if (!_mask->field(F_CATCESP).empty())
|
||||||
|
rec.put("CODCAT", _mask->get_int(F_CATCESP));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
cursore.setkey(1);
|
||||||
|
filtro.format("(CODCGRA==%d)&&(CODSPA==\"%s\")", _mask->get_int(F_GRUPPO), (const char *) _mask->get(F_SPECIE));
|
||||||
|
if (!_mask->field(F_IMPCESP).empty())
|
||||||
|
filtro << format("&&(CODIMP==\"%s\")", (const char *) _mask->get(F_IMPCESP)); //estende il filtro con il campo CODIMP
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cursore.setregion(rec,rec,0x2);
|
||||||
|
cursore.setfilter(filtro,TRUE);
|
||||||
|
|
||||||
|
long num = cursore.items();
|
||||||
|
cursore.freeze();
|
||||||
|
printer().open();
|
||||||
|
|
||||||
|
for (cursore=0; cursore.pos()<num; ++cursore)
|
||||||
|
{
|
||||||
|
if (_mask->get_bool(F_SITFISC))
|
||||||
|
print_percespite(1);
|
||||||
|
if (_mask->get_bool(F_SITCIV))
|
||||||
|
print_percespite(2);
|
||||||
|
if (_mask->get_bool(F_SITGEST))
|
||||||
|
print_percespite(3);
|
||||||
|
}
|
||||||
|
printer().close();
|
||||||
|
cursore.freeze(FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int ce3200(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TStampa_storico a;
|
||||||
|
a.run(argc,argv,"Stampa schede cespiti");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
64
ce/ce3200.h
Executable file
64
ce/ce3200.h
Executable file
@ -0,0 +1,64 @@
|
|||||||
|
// campi form schede cespiti
|
||||||
|
#define FF_CODDITTA 1
|
||||||
|
#define FF_DESCRDITTA 2
|
||||||
|
#define FF_GRUPPO 3
|
||||||
|
#define FF_D_GRUPPO 4
|
||||||
|
#define FF_SPECIE 5
|
||||||
|
#define FF_D_SPECIE 6
|
||||||
|
#define FF_CODCAT 7
|
||||||
|
#define FF_DESCRCAT 8
|
||||||
|
#define FF_CODCESP 9
|
||||||
|
#define FF_DESCRCESP 10
|
||||||
|
#define FF_ACQ 11
|
||||||
|
#define FF_ENTFUNZ 12
|
||||||
|
#define FF_SITUAZIONE 13
|
||||||
|
#define FF_DATASIT 14
|
||||||
|
#define FF_DESCRGR 15
|
||||||
|
#define FF_SEGNO 16
|
||||||
|
|
||||||
|
#define FF_DATAUNO 20
|
||||||
|
#define FF_DESCRUNO 21
|
||||||
|
#define FF_TIPODOCUNO 22
|
||||||
|
#define FF_NUMDOCUNO 23
|
||||||
|
#define FF_NUMELEUNO 25
|
||||||
|
#define FF_VALOREUNO 26
|
||||||
|
#define FF_FONDIUNO 27
|
||||||
|
|
||||||
|
#define FF_TOTELEM 31
|
||||||
|
#define FF_TOTVALORE 32
|
||||||
|
#define FF_TOTAMMO 33
|
||||||
|
#define FF_MINUS 35
|
||||||
|
#define FF_MINUSVEN 36
|
||||||
|
|
||||||
|
#define FF_DATE 40
|
||||||
|
#define FF_PAGE 41
|
||||||
|
|
||||||
|
#define FF_PENOR 50
|
||||||
|
#define FF_PEANT 51
|
||||||
|
#define FF_PEACC 52
|
||||||
|
#define FF_ALINOR 53
|
||||||
|
#define FF_ALIANT 54
|
||||||
|
#define FF_ALIACC 55
|
||||||
|
#define FF_QNOR 56
|
||||||
|
#define FF_QANT 57
|
||||||
|
#define FF_QACC 58
|
||||||
|
|
||||||
|
#define FF_VPENOR 60
|
||||||
|
#define FF_VPEANT 61
|
||||||
|
#define FF_VPEACC 62
|
||||||
|
#define FF_VALINOR 63
|
||||||
|
#define FF_VALIANT 64
|
||||||
|
#define FF_VALIACC 65
|
||||||
|
#define FF_VQNOR 66
|
||||||
|
#define FF_VQANT 67
|
||||||
|
#define FF_VQACC 68
|
||||||
|
|
||||||
|
#define FF_TPNOR 70
|
||||||
|
#define FF_TPANT 71
|
||||||
|
#define FF_TPACC 72
|
||||||
|
#define FF_TALINOR 73
|
||||||
|
#define FF_TALIANT 74
|
||||||
|
#define FF_TALIACC 75
|
||||||
|
#define FF_TQNOR 76
|
||||||
|
#define FF_TQANT 77
|
||||||
|
#define FF_TQACC 78
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user