Correzione maschere
git-svn-id: svn://10.65.10.50/trunk@797 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
744cbac27b
commit
29d720bce7
16
ba/ba2.h
16
ba/ba2.h
@ -1,8 +1,8 @@
|
||||
#ifndef __BA2_H
|
||||
#define __BA2_H
|
||||
|
||||
int ba2100(int argc, char* argv[]);
|
||||
int ba2300(int argc, char* argv[]);
|
||||
|
||||
#endif // __BA2_H
|
||||
|
||||
#ifndef __BA2_H
|
||||
#define __BA2_H
|
||||
|
||||
int ba2100(int argc, char* argv[]);
|
||||
int ba2300(int argc, char* argv[]);
|
||||
|
||||
#endif // __BA2_H
|
||||
|
||||
|
152
ba/ba2.url
152
ba/ba2.url
@ -1,76 +1,76 @@
|
||||
#include <default.url>
|
||||
|
||||
#define MENU_FILE_ALT TASK_MENUBAR+4000
|
||||
|
||||
#define M_FIL1_NEW MENU_FILE_ALT+101
|
||||
#define M_FIL1_OPEN MENU_FILE_ALT+102
|
||||
#define M_FIL1_SAVE MENU_FILE_ALT+103
|
||||
#define M_FIL1_SAVEAS MENU_FILE_ALT+104
|
||||
#define M_FIL1_QUIT MENU_FILE_ALT+105
|
||||
|
||||
MENU MENU_FILE_ALT
|
||||
ITEM M_FIL1_NEW "~Nuovo"
|
||||
ITEM M_FIL1_OPEN "~Apri"
|
||||
ITEM M_FIL1_SAVE "~Salva"
|
||||
ITEM M_FIL1_SAVEAS "Salva ~con Nome"
|
||||
ITEM M_FIL1_QUIT "~Esci"
|
||||
SEPARATOR
|
||||
ITEM M_FILE_ABOUT "~Informazioni"
|
||||
|
||||
MENU TASK_MENUBAR
|
||||
SUBMENU MENU_FILE "~File"
|
||||
ITEM MENU_ITEM(11) "~Relazione"
|
||||
SUBMENU BAR_ITEM(2) "~Intestazione"
|
||||
SUBMENU BAR_ITEM(3) "~Corpo"
|
||||
SUBMENU BAR_ITEM(4) "~Pie' di pagina"
|
||||
|
||||
MENU BAR_ITEM(2)
|
||||
ITEM MENU_ITEM(21) "~Normale"
|
||||
ITEM MENU_ITEM(22) "~Pari"
|
||||
ITEM MENU_ITEM(23) "~Prima"
|
||||
ITEM MENU_ITEM(24) "~Ultima"
|
||||
|
||||
MENU BAR_ITEM(3)
|
||||
ITEM MENU_ITEM(31) "~Normale"
|
||||
ITEM MENU_ITEM(32) "~Pari"
|
||||
ITEM MENU_ITEM(33) "~Primo"
|
||||
ITEM MENU_ITEM(34) "~Ultimo"
|
||||
|
||||
MENU BAR_ITEM(4)
|
||||
ITEM MENU_ITEM(41) "~Normale"
|
||||
ITEM MENU_ITEM(42) "~Pari"
|
||||
ITEM MENU_ITEM(43) "~Primo"
|
||||
ITEM MENU_ITEM(44) "~Ultimo"
|
||||
|
||||
|
||||
MENUBAR TASK_MENUBAR + 1
|
||||
|
||||
MENU TASK_MENUBAR + 1
|
||||
SUBMENU MENU_FILE_ALT "~File"
|
||||
SUBMENU MENU_EDIT "~Stampanti"
|
||||
|
||||
MENUBAR TASK_MENUBAR + 2
|
||||
|
||||
MENU TASK_MENUBAR + 2
|
||||
SUBMENU MENU_FILE_ALT "~File"
|
||||
SUBMENU MENU_EDIT "~Stampanti"
|
||||
|
||||
MENUBAR TASK_MENUBAR + 3
|
||||
|
||||
MENU TASK_MENUBAR + 3
|
||||
SUBMENU MENU_FILE_ALT "~File"
|
||||
SUBMENU MENU_EDIT "~Stampanti"
|
||||
|
||||
MENUBAR TASK_MENUBAR + 4
|
||||
|
||||
MENU TASK_MENUBAR + 4
|
||||
SUBMENU MENU_FILE_ALT "~File"
|
||||
SUBMENU MENU_EDIT "~Stampanti"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include <default.url>
|
||||
|
||||
#define MENU_FILE_ALT TASK_MENUBAR+4000
|
||||
|
||||
#define M_FIL1_NEW MENU_FILE_ALT+101
|
||||
#define M_FIL1_OPEN MENU_FILE_ALT+102
|
||||
#define M_FIL1_SAVE MENU_FILE_ALT+103
|
||||
#define M_FIL1_SAVEAS MENU_FILE_ALT+104
|
||||
#define M_FIL1_QUIT MENU_FILE_ALT+105
|
||||
|
||||
MENU MENU_FILE_ALT
|
||||
ITEM M_FIL1_NEW "~Nuovo"
|
||||
ITEM M_FIL1_OPEN "~Apri"
|
||||
ITEM M_FIL1_SAVE "~Salva"
|
||||
ITEM M_FIL1_SAVEAS "Salva ~con Nome"
|
||||
ITEM M_FIL1_QUIT "~Esci"
|
||||
SEPARATOR
|
||||
ITEM M_FILE_ABOUT "~Informazioni"
|
||||
|
||||
MENU TASK_MENUBAR
|
||||
SUBMENU MENU_FILE "~File"
|
||||
ITEM MENU_ITEM(11) "~Relazione"
|
||||
SUBMENU BAR_ITEM(2) "~Intestazione"
|
||||
SUBMENU BAR_ITEM(3) "~Corpo"
|
||||
SUBMENU BAR_ITEM(4) "~Pie' di pagina"
|
||||
|
||||
MENU BAR_ITEM(2)
|
||||
ITEM MENU_ITEM(21) "~Normale"
|
||||
ITEM MENU_ITEM(22) "~Pari"
|
||||
ITEM MENU_ITEM(23) "~Prima"
|
||||
ITEM MENU_ITEM(24) "~Ultima"
|
||||
|
||||
MENU BAR_ITEM(3)
|
||||
ITEM MENU_ITEM(31) "~Normale"
|
||||
ITEM MENU_ITEM(32) "~Pari"
|
||||
ITEM MENU_ITEM(33) "~Primo"
|
||||
ITEM MENU_ITEM(34) "~Ultimo"
|
||||
|
||||
MENU BAR_ITEM(4)
|
||||
ITEM MENU_ITEM(41) "~Normale"
|
||||
ITEM MENU_ITEM(42) "~Pari"
|
||||
ITEM MENU_ITEM(43) "~Primo"
|
||||
ITEM MENU_ITEM(44) "~Ultimo"
|
||||
|
||||
|
||||
MENUBAR TASK_MENUBAR + 1
|
||||
|
||||
MENU TASK_MENUBAR + 1
|
||||
SUBMENU MENU_FILE_ALT "~File"
|
||||
SUBMENU MENU_EDIT "~Stampanti"
|
||||
|
||||
MENUBAR TASK_MENUBAR + 2
|
||||
|
||||
MENU TASK_MENUBAR + 2
|
||||
SUBMENU MENU_FILE_ALT "~File"
|
||||
SUBMENU MENU_EDIT "~Stampanti"
|
||||
|
||||
MENUBAR TASK_MENUBAR + 3
|
||||
|
||||
MENU TASK_MENUBAR + 3
|
||||
SUBMENU MENU_FILE_ALT "~File"
|
||||
SUBMENU MENU_EDIT "~Stampanti"
|
||||
|
||||
MENUBAR TASK_MENUBAR + 4
|
||||
|
||||
MENU TASK_MENUBAR + 4
|
||||
SUBMENU MENU_FILE_ALT "~File"
|
||||
SUBMENU MENU_EDIT "~Stampanti"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
554
ba/ba2100.cpp
554
ba/ba2100.cpp
@ -1,277 +1,277 @@
|
||||
#include <applicat.h>
|
||||
#include <form.h>
|
||||
#include <msksheet.h>
|
||||
#include <prefix.h>
|
||||
#include <relation.h>
|
||||
#include <utility.h>
|
||||
#include <urldefid.h>
|
||||
|
||||
#include "ba2100.h"
|
||||
|
||||
class TForm_editor : public TApplication
|
||||
{
|
||||
TForm* _form;
|
||||
|
||||
protected:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual bool menu(MENU_TAG);
|
||||
virtual void print();
|
||||
|
||||
static bool file_handler(TMask_field& f, KEY k);
|
||||
|
||||
bool edit_relation();
|
||||
bool edit(char s, pagetype p);
|
||||
|
||||
public:
|
||||
TForm_editor();
|
||||
virtual ~TForm_editor();
|
||||
};
|
||||
|
||||
|
||||
TForm_editor::TForm_editor() : _form(NULL)
|
||||
{}
|
||||
|
||||
TForm_editor::~TForm_editor()
|
||||
{}
|
||||
|
||||
bool TForm_editor::create()
|
||||
{
|
||||
TApplication::create();
|
||||
|
||||
if (argc() < 3)
|
||||
return error_box("Specificare il nome del profilo di stampa");
|
||||
|
||||
TFilename form(argv(2)); form.ext("frm");
|
||||
|
||||
const char mode = argc() > 3 ? toupper(argv(3)[1]) : 'M';
|
||||
const bool crea = (mode == 'C') || !fexist(form);
|
||||
|
||||
if (crea)
|
||||
{
|
||||
TFilename base(form.left(3)); base.ext("frm");
|
||||
if (!fexist(base))
|
||||
return error_box("Non esiste il file %s", (const char*)base);
|
||||
if (!fcopy(base, form))
|
||||
return error_box("Impossibile copiare %s in %s", (const char*)base, (const char*)form);
|
||||
}
|
||||
|
||||
if (!fexist(form))
|
||||
return error_box("Non esiste il file %s", (const char*)form);
|
||||
|
||||
_form = new TForm(form);
|
||||
|
||||
enable_menu_item(M_FILE_PRINT);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TForm_editor::destroy()
|
||||
{
|
||||
delete _form;
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
|
||||
bool TForm_editor::menu(MENU_TAG tag)
|
||||
{
|
||||
char sec = 'B';
|
||||
pagetype pt = odd_page;
|
||||
|
||||
switch(tag)
|
||||
{
|
||||
case MENU_ITEM(11):
|
||||
sec = 'R'; pt = odd_page; break;
|
||||
case MENU_ITEM(21):
|
||||
sec = 'H'; pt = odd_page; break;
|
||||
case MENU_ITEM(22):
|
||||
sec = 'H'; pt = even_page; break;
|
||||
case MENU_ITEM(23):
|
||||
sec = 'H'; pt = first_page; break;
|
||||
case MENU_ITEM(24):
|
||||
sec = 'H'; pt = last_page; break;
|
||||
case MENU_ITEM(31):
|
||||
sec = 'B'; pt = odd_page; break;
|
||||
case MENU_ITEM(32):
|
||||
sec = 'B'; pt = even_page; break;
|
||||
case MENU_ITEM(33):
|
||||
sec = 'B'; pt = first_page; break;
|
||||
case MENU_ITEM(34):
|
||||
sec = 'B'; pt = last_page; break;
|
||||
case MENU_ITEM(41):
|
||||
sec = 'F'; pt = odd_page; break;
|
||||
case MENU_ITEM(42):
|
||||
sec = 'F'; pt = even_page; break;
|
||||
case MENU_ITEM(43):
|
||||
sec = 'F'; pt = first_page; break;
|
||||
case MENU_ITEM(44):
|
||||
sec = 'F'; pt = last_page; break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
edit(sec, pt);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TForm_editor::print()
|
||||
{
|
||||
_form->print();
|
||||
}
|
||||
|
||||
|
||||
bool TForm_editor::file_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
bool ok = TRUE;
|
||||
|
||||
if (k == K_TAB && f.dirty())
|
||||
{
|
||||
const char* d = prefhndl->description(f.get());
|
||||
if (*d == '\0') ok = error_box("Nome di file o tabella errato");
|
||||
f.mask().set(f.dlg()+1, d);
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
bool TForm_editor::edit_relation()
|
||||
{
|
||||
TMask m("ba2100r");
|
||||
TSheet_field& s = (TSheet_field&)m.field(F_ITEMS);
|
||||
s.sheet_mask().set_handler(101, file_handler);
|
||||
|
||||
TRelation* & rel = _form->_relation;
|
||||
TCursor* & cur = _form->_cursor;
|
||||
|
||||
if (rel)
|
||||
{
|
||||
rel->print_on(s.rows_array());
|
||||
s.force_update();
|
||||
s.disable_cell(0, 2); s.disable_cell(0, 4);
|
||||
}
|
||||
|
||||
if (m.run() != K_ENTER || !m.dirty())
|
||||
return FALSE;
|
||||
|
||||
if (rel)
|
||||
{
|
||||
delete cur; cur = NULL;
|
||||
delete rel; rel = NULL;
|
||||
}
|
||||
|
||||
TToken_string& r = s.row(0);
|
||||
TString16 name = r.get(0);
|
||||
|
||||
if (name.not_empty())
|
||||
{
|
||||
int logicnum = atoi(name);
|
||||
r.get(); // Skip description
|
||||
|
||||
int alias = 0, to = 0, key = r.get_int(2);
|
||||
TString80 exp = r.get(4);
|
||||
|
||||
rel = (logicnum > 0) ? new TRelation(logicnum) : new TRelation(name);
|
||||
cur = new TCursor(rel, exp, key);
|
||||
|
||||
for (int i = 1; i < s.items(); i++)
|
||||
{
|
||||
TToken_string& r = s.row(i);
|
||||
name = r.get(0); logicnum = atoi(name);
|
||||
to = name2log(r.get());
|
||||
key = r.get_int();
|
||||
alias = r.get_int();
|
||||
exp = r.get();
|
||||
|
||||
const int l = exp.len();
|
||||
for (int j = 0; j < l; j++)
|
||||
if (exp[j] == ' ') exp[j] = '|';
|
||||
|
||||
if (logicnum > 0)
|
||||
rel->add(logicnum, exp, key, to, alias); // join file
|
||||
else
|
||||
rel->add(name, exp, key, to, alias); // join table
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
bool TForm_editor::edit(char s, pagetype t)
|
||||
{
|
||||
bool dirty = FALSE;
|
||||
|
||||
if (s == 'R')
|
||||
dirty = edit_relation();
|
||||
else
|
||||
{
|
||||
TString80 caption;
|
||||
switch(s)
|
||||
{
|
||||
case 'F':
|
||||
caption << "Pie' di pagina"; break;
|
||||
case 'H':
|
||||
caption << "Intestazione"; break;
|
||||
default:
|
||||
caption << "Corpo"; break;
|
||||
}
|
||||
|
||||
switch(t)
|
||||
{
|
||||
case first_page:
|
||||
caption << " della prima pagina"; break;
|
||||
case even_page:
|
||||
caption << " delle pagine pari"; break;
|
||||
case last_page:
|
||||
caption << " dell'ultima pagina"; break;
|
||||
default:
|
||||
caption << " standard"; break;
|
||||
}
|
||||
|
||||
dirty = TRUE;
|
||||
if (!_form->exist(s, t))
|
||||
{
|
||||
const KEY k = yesnocancel_box("La sezione %s non esiste: "
|
||||
"si desidera ricopiare quella standard",
|
||||
(const char*)caption);
|
||||
if (k == K_ESC)
|
||||
dirty = FALSE;
|
||||
else
|
||||
{
|
||||
TPrint_section* sec = _form->exist(s, t, TRUE);
|
||||
if (k == K_YES)
|
||||
{
|
||||
const TPrint_section* def = _form->exist(s, odd_page);
|
||||
if (def) *sec = *def;
|
||||
else dirty = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (dirty)
|
||||
dirty = _form->section(s, t).edit(caption);
|
||||
}
|
||||
|
||||
if (dirty && yesno_box("Salvare le modifiche?"))
|
||||
{
|
||||
CURSOR old = get_cursor(TASK_WIN);
|
||||
set_cursor(TASK_WIN, CURSOR_WAIT);
|
||||
|
||||
const TFilename& n = _form->name();
|
||||
TFilename bak(n); bak.ext("bak");
|
||||
rename(n, bak);
|
||||
ofstream out(n);
|
||||
_form->print_on(out);
|
||||
|
||||
set_cursor(TASK_WIN, old);
|
||||
}
|
||||
|
||||
return dirty;
|
||||
}
|
||||
|
||||
int ba2100(int argc, char* argv[])
|
||||
{
|
||||
TForm_editor a;
|
||||
a.run(argc, argv, "Parametrizzazione stampa");
|
||||
return 0;
|
||||
}
|
||||
#include <applicat.h>
|
||||
#include <form.h>
|
||||
#include <msksheet.h>
|
||||
#include <prefix.h>
|
||||
#include <relation.h>
|
||||
#include <utility.h>
|
||||
#include <urldefid.h>
|
||||
|
||||
#include "ba2100.h"
|
||||
|
||||
class TForm_editor : public TApplication
|
||||
{
|
||||
TForm* _form;
|
||||
|
||||
protected:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual bool menu(MENU_TAG);
|
||||
virtual void print();
|
||||
|
||||
static bool file_handler(TMask_field& f, KEY k);
|
||||
|
||||
bool edit_relation();
|
||||
bool edit(char s, pagetype p);
|
||||
|
||||
public:
|
||||
TForm_editor();
|
||||
virtual ~TForm_editor();
|
||||
};
|
||||
|
||||
|
||||
TForm_editor::TForm_editor() : _form(NULL)
|
||||
{}
|
||||
|
||||
TForm_editor::~TForm_editor()
|
||||
{}
|
||||
|
||||
bool TForm_editor::create()
|
||||
{
|
||||
TApplication::create();
|
||||
|
||||
if (argc() < 3)
|
||||
return error_box("Specificare il nome del profilo di stampa");
|
||||
|
||||
TFilename form(argv(2)); form.ext("frm");
|
||||
|
||||
const char mode = argc() > 3 ? toupper(argv(3)[1]) : 'M';
|
||||
const bool crea = (mode == 'C') || !fexist(form);
|
||||
|
||||
if (crea)
|
||||
{
|
||||
TFilename base(form.left(3)); base.ext("frm");
|
||||
if (!fexist(base))
|
||||
return error_box("Non esiste il file %s", (const char*)base);
|
||||
if (!fcopy(base, form))
|
||||
return error_box("Impossibile copiare %s in %s", (const char*)base, (const char*)form);
|
||||
}
|
||||
|
||||
if (!fexist(form))
|
||||
return error_box("Non esiste il file %s", (const char*)form);
|
||||
|
||||
_form = new TForm(form);
|
||||
|
||||
enable_menu_item(M_FILE_PRINT);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TForm_editor::destroy()
|
||||
{
|
||||
delete _form;
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
|
||||
bool TForm_editor::menu(MENU_TAG tag)
|
||||
{
|
||||
char sec = 'B';
|
||||
pagetype pt = odd_page;
|
||||
|
||||
switch(tag)
|
||||
{
|
||||
case MENU_ITEM(11):
|
||||
sec = 'R'; pt = odd_page; break;
|
||||
case MENU_ITEM(21):
|
||||
sec = 'H'; pt = odd_page; break;
|
||||
case MENU_ITEM(22):
|
||||
sec = 'H'; pt = even_page; break;
|
||||
case MENU_ITEM(23):
|
||||
sec = 'H'; pt = first_page; break;
|
||||
case MENU_ITEM(24):
|
||||
sec = 'H'; pt = last_page; break;
|
||||
case MENU_ITEM(31):
|
||||
sec = 'B'; pt = odd_page; break;
|
||||
case MENU_ITEM(32):
|
||||
sec = 'B'; pt = even_page; break;
|
||||
case MENU_ITEM(33):
|
||||
sec = 'B'; pt = first_page; break;
|
||||
case MENU_ITEM(34):
|
||||
sec = 'B'; pt = last_page; break;
|
||||
case MENU_ITEM(41):
|
||||
sec = 'F'; pt = odd_page; break;
|
||||
case MENU_ITEM(42):
|
||||
sec = 'F'; pt = even_page; break;
|
||||
case MENU_ITEM(43):
|
||||
sec = 'F'; pt = first_page; break;
|
||||
case MENU_ITEM(44):
|
||||
sec = 'F'; pt = last_page; break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
edit(sec, pt);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TForm_editor::print()
|
||||
{
|
||||
_form->print();
|
||||
}
|
||||
|
||||
|
||||
bool TForm_editor::file_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
bool ok = TRUE;
|
||||
|
||||
if (k == K_TAB && f.dirty())
|
||||
{
|
||||
const char* d = prefhndl->description(f.get());
|
||||
if (*d == '\0') ok = error_box("Nome di file o tabella errato");
|
||||
f.mask().set(f.dlg()+1, d);
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
bool TForm_editor::edit_relation()
|
||||
{
|
||||
TMask m("ba2100r");
|
||||
TSheet_field& s = (TSheet_field&)m.field(F_ITEMS);
|
||||
s.sheet_mask().set_handler(101, file_handler);
|
||||
|
||||
TRelation* & rel = _form->_relation;
|
||||
TCursor* & cur = _form->_cursor;
|
||||
|
||||
if (rel)
|
||||
{
|
||||
rel->print_on(s.rows_array());
|
||||
s.force_update();
|
||||
s.disable_cell(0, 2); s.disable_cell(0, 5);
|
||||
}
|
||||
|
||||
if (m.run() != K_ENTER || !m.dirty())
|
||||
return FALSE;
|
||||
|
||||
if (rel)
|
||||
{
|
||||
delete cur; cur = NULL;
|
||||
delete rel; rel = NULL;
|
||||
}
|
||||
|
||||
TToken_string& r = s.row(0);
|
||||
TString16 name = r.get(0);
|
||||
|
||||
if (name.not_empty())
|
||||
{
|
||||
int logicnum = atoi(name);
|
||||
r.get(); // Skip description
|
||||
|
||||
int alias = 0, to = 0, key = r.get_int(2);
|
||||
TString80 exp = r.get(4);
|
||||
|
||||
rel = (logicnum > 0) ? new TRelation(logicnum) : new TRelation(name);
|
||||
cur = new TCursor(rel, exp, key);
|
||||
|
||||
for (int i = 1; i < s.items(); i++)
|
||||
{
|
||||
TToken_string& r = s.row(i);
|
||||
name = r.get(0); logicnum = atoi(name);
|
||||
to = name2log(r.get());
|
||||
key = r.get_int();
|
||||
alias = r.get_int();
|
||||
exp = r.get();
|
||||
|
||||
const int l = exp.len();
|
||||
for (int j = 0; j < l; j++)
|
||||
if (exp[j] == ' ') exp[j] = '|';
|
||||
|
||||
if (logicnum > 0)
|
||||
rel->add(logicnum, exp, key, to, alias); // join file
|
||||
else
|
||||
rel->add(name, exp, key, to, alias); // join table
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
bool TForm_editor::edit(char s, pagetype t)
|
||||
{
|
||||
bool dirty = FALSE;
|
||||
|
||||
if (s == 'R')
|
||||
dirty = edit_relation();
|
||||
else
|
||||
{
|
||||
TString80 caption;
|
||||
switch(s)
|
||||
{
|
||||
case 'F':
|
||||
caption << "Pie' di pagina"; break;
|
||||
case 'H':
|
||||
caption << "Intestazione"; break;
|
||||
default:
|
||||
caption << "Corpo"; break;
|
||||
}
|
||||
|
||||
switch(t)
|
||||
{
|
||||
case first_page:
|
||||
caption << " della prima pagina"; break;
|
||||
case even_page:
|
||||
caption << " delle pagine pari"; break;
|
||||
case last_page:
|
||||
caption << " dell'ultima pagina"; break;
|
||||
default:
|
||||
caption << " standard"; break;
|
||||
}
|
||||
|
||||
dirty = TRUE;
|
||||
if (!_form->exist(s, t))
|
||||
{
|
||||
const KEY k = yesnocancel_box("La sezione %s non esiste: "
|
||||
"si desidera ricopiare quella standard",
|
||||
(const char*)caption);
|
||||
if (k == K_ESC)
|
||||
dirty = FALSE;
|
||||
else
|
||||
{
|
||||
TPrint_section* sec = _form->exist(s, t, TRUE);
|
||||
if (k == K_YES)
|
||||
{
|
||||
const TPrint_section* def = _form->exist(s, odd_page);
|
||||
if (def) *sec = *def;
|
||||
else dirty = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (dirty)
|
||||
dirty = _form->section(s, t).edit(caption);
|
||||
}
|
||||
|
||||
if (dirty && yesno_box("Salvare le modifiche?"))
|
||||
{
|
||||
CURSOR old = get_cursor(TASK_WIN);
|
||||
set_cursor(TASK_WIN, CURSOR_WAIT);
|
||||
|
||||
const TFilename& n = _form->name();
|
||||
TFilename bak(n); bak.ext("bak");
|
||||
rename(n, bak);
|
||||
ofstream out(n);
|
||||
_form->print_on(out);
|
||||
|
||||
set_cursor(TASK_WIN, old);
|
||||
}
|
||||
|
||||
return dirty;
|
||||
}
|
||||
|
||||
int ba2100(int argc, char* argv[])
|
||||
{
|
||||
TForm_editor a;
|
||||
a.run(argc, argv, "Parametrizzazione stampa");
|
||||
return 0;
|
||||
}
|
||||
|
62
ba/ba2100.h
62
ba/ba2100.h
@ -1,31 +1,31 @@
|
||||
#define F_CLASS 101
|
||||
#define F_KEY 102
|
||||
#define F_Y 103
|
||||
#define F_X 104
|
||||
#define F_WIDTH 105
|
||||
#define F_HEIGHT 106
|
||||
#define F_PROMPT 107
|
||||
#define F_HIDDEN 108
|
||||
#define F_DISABLED 109
|
||||
#define F_AUTOMAGIC 110
|
||||
#define F_PICTURE 111
|
||||
#define F_FIELD 113
|
||||
#define F_FIELD2 114
|
||||
#define F_GROUP 130
|
||||
#define F_GROUP1 131
|
||||
#define F_GROUP2 132
|
||||
#define F_GROUP3 133
|
||||
#define F_GROUP4 134
|
||||
#define F_GROUP5 135
|
||||
#define F_GROUP6 136
|
||||
#define F_GROUP7 137
|
||||
#define F_GROUP8 138
|
||||
#define F_GROUP9 139
|
||||
#define F_GROUP10 140
|
||||
#define F_GROUP11 141
|
||||
#define F_GROUP12 142
|
||||
|
||||
#define F_ITEMS 200
|
||||
#define F_DECIMALS 206
|
||||
|
||||
|
||||
#define F_CLASS 101
|
||||
#define F_KEY 102
|
||||
#define F_Y 103
|
||||
#define F_X 104
|
||||
#define F_WIDTH 105
|
||||
#define F_HEIGHT 106
|
||||
#define F_PROMPT 107
|
||||
#define F_HIDDEN 108
|
||||
#define F_DISABLED 109
|
||||
#define F_AUTOMAGIC 110
|
||||
#define F_PICTURE 111
|
||||
#define F_FIELD 113
|
||||
#define F_FIELD2 114
|
||||
#define F_GROUP 130
|
||||
#define F_GROUP1 131
|
||||
#define F_GROUP2 132
|
||||
#define F_GROUP3 133
|
||||
#define F_GROUP4 134
|
||||
#define F_GROUP5 135
|
||||
#define F_GROUP6 136
|
||||
#define F_GROUP7 137
|
||||
#define F_GROUP8 138
|
||||
#define F_GROUP9 139
|
||||
#define F_GROUP10 140
|
||||
#define F_GROUP11 141
|
||||
#define F_GROUP12 142
|
||||
|
||||
#define F_ITEMS 200
|
||||
#define F_DECIMALS 206
|
||||
|
||||
|
||||
|
428
ba/ba2100f.uml
428
ba/ba2100f.uml
@ -1,214 +1,214 @@
|
||||
#include "ba2100.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "CAMPO DI STAMPA" -1 -1 60 14
|
||||
|
||||
LIST F_CLASS 10
|
||||
BEGIN
|
||||
PROMPT 1 1 "Tipo "
|
||||
FLAGS "DG"
|
||||
ITEM "STRINGA|Testo" MESSAGE HIDE,2@|SHOW,F_HEIGHT|HIDE,F_ITEMS
|
||||
ITEM "NUMERO|Numero" MESSAGE SHOW,2@|HIDE,F_HEIGHT|HIDE,F_ITEMS
|
||||
ITEM "DATA|Data" MESSAGE HIDE,2@|HIDE,F_HEIGHT|HIDE,F_ITEMS
|
||||
ITEM "LISTA|Lista" MESSAGE HIDE,2@|HIDE,F_HEIGHT|SHOW,F_ITEMS
|
||||
END
|
||||
|
||||
STRING F_KEY 80 60
|
||||
BEGIN
|
||||
PROMPT 1 2 "Descrizione "
|
||||
HELP "Descrizione del campo da configurare"
|
||||
END
|
||||
|
||||
NUMBER F_Y 3
|
||||
BEGIN
|
||||
PROMPT 1 3 "Riga "
|
||||
HELP "Riga in cui stampare"
|
||||
END
|
||||
|
||||
NUMBER F_X 3
|
||||
BEGIN
|
||||
PROMPT 24 3 "Colonna "
|
||||
HELP "Colonna in cui stampare"
|
||||
END
|
||||
|
||||
NUMBER F_WIDTH 3
|
||||
BEGIN
|
||||
PROMPT 1 4 "Larghezza "
|
||||
HELP "Lunghezza massima da stampare"
|
||||
END
|
||||
|
||||
NUMBER F_HEIGHT 2
|
||||
BEGIN
|
||||
PROMPT 24 4 "Altezza "
|
||||
HELP "Righe massime su cui stampare"
|
||||
END
|
||||
|
||||
NUMBER F_DECIMALS 2
|
||||
BEGIN
|
||||
PROMPT 24 4 "Decimali "
|
||||
HELP "Numero di decimali"
|
||||
MESSAGE COPY,F_HEIGHT
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_PROMPT 80 60
|
||||
BEGIN
|
||||
PROMPT 1 5 "Testo "
|
||||
HELP "Eventuale testo fisso da stampare"
|
||||
END
|
||||
|
||||
STRING F_PICTURE 80 40
|
||||
BEGIN
|
||||
PROMPT 1 6 "Formato "
|
||||
HELP "Formato di stampa (vedere codici sul manuale)"
|
||||
END
|
||||
|
||||
STRING F_FIELD 40
|
||||
BEGIN
|
||||
PROMPT 1 7 "Campo su file "
|
||||
HELP "Nome del campo su file"
|
||||
END
|
||||
|
||||
STRING F_FIELD2 40
|
||||
BEGIN
|
||||
PROMPT 1 8 "II campo "
|
||||
HELP "Nome del campo su file da utilizzare se il primo e' vuoto"
|
||||
END
|
||||
|
||||
BOOLEAN F_HIDDEN
|
||||
BEGIN
|
||||
PROMPT 60 6 "Nascosto"
|
||||
HELP "Il campo va elaborato ma non stampato"
|
||||
END
|
||||
|
||||
BOOLEAN F_DISABLED
|
||||
BEGIN
|
||||
PROMPT 60 7 "Disabilitato"
|
||||
HELP "Il campo viene completamente ignorato e quindi nemmeno stampato"
|
||||
END
|
||||
|
||||
BOOLEAN F_AUTOMAGIC
|
||||
BEGIN
|
||||
PROMPT 60 8 "Automatico"
|
||||
HELP "Il campo viene calcolato automaticamente"
|
||||
END
|
||||
|
||||
GROUPBOX F_GROUP 78 3
|
||||
BEGIN
|
||||
PROMPT 1 9 "Gruppi di stampa"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP1
|
||||
BEGIN
|
||||
PROMPT 4 10 "1"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP2
|
||||
BEGIN
|
||||
PROMPT 10 10 "2"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP3
|
||||
BEGIN
|
||||
PROMPT 16 10 "3"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP4
|
||||
BEGIN
|
||||
PROMPT 22 10 "4"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP5
|
||||
BEGIN
|
||||
PROMPT 28 10 "5"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP6
|
||||
BEGIN
|
||||
PROMPT 34 10 "6"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP7
|
||||
BEGIN
|
||||
PROMPT 40 10 "7"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP8
|
||||
BEGIN
|
||||
PROMPT 46 10 "8"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP9
|
||||
BEGIN
|
||||
PROMPT 52 10 "9"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP10
|
||||
BEGIN
|
||||
PROMPT 58 10 "10"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP11
|
||||
BEGIN
|
||||
PROMPT 64 10 "11"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP12
|
||||
BEGIN
|
||||
PROMPT 70 10 "12"
|
||||
END
|
||||
|
||||
SPREADSHEET F_ITEMS
|
||||
BEGIN
|
||||
PROMPT 0 12 "Spreadsheet"
|
||||
ITEM "Codice@8"
|
||||
ITEM "Testo@32"
|
||||
ITEM "Messaggio@80"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Spreadsheet" -1 -1 46 6
|
||||
|
||||
STRING 101 8
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice "
|
||||
END
|
||||
|
||||
STRING 102 32
|
||||
BEGIN
|
||||
PROMPT 1 2 "Testo "
|
||||
FLAGS "_"
|
||||
END
|
||||
|
||||
STRING 103 80 32
|
||||
BEGIN
|
||||
PROMPT 1 3 "Messaggio "
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
#include "ba2100.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "CAMPO DI STAMPA" -1 -1 60 14
|
||||
|
||||
LIST F_CLASS 10
|
||||
BEGIN
|
||||
PROMPT 1 1 "Tipo "
|
||||
FLAGS "DG"
|
||||
ITEM "STRINGA|Testo" MESSAGE HIDE,2@|SHOW,F_HEIGHT|HIDE,F_ITEMS
|
||||
ITEM "NUMERO|Numero" MESSAGE SHOW,2@|HIDE,F_HEIGHT|HIDE,F_ITEMS
|
||||
ITEM "DATA|Data" MESSAGE HIDE,2@|HIDE,F_HEIGHT|HIDE,F_ITEMS
|
||||
ITEM "LISTA|Lista" MESSAGE HIDE,2@|HIDE,F_HEIGHT|SHOW,F_ITEMS
|
||||
END
|
||||
|
||||
STRING F_KEY 80 60
|
||||
BEGIN
|
||||
PROMPT 1 2 "Descrizione "
|
||||
HELP "Descrizione del campo da configurare"
|
||||
END
|
||||
|
||||
NUMBER F_Y 3
|
||||
BEGIN
|
||||
PROMPT 1 3 "Riga "
|
||||
HELP "Riga in cui stampare"
|
||||
END
|
||||
|
||||
NUMBER F_X 3
|
||||
BEGIN
|
||||
PROMPT 24 3 "Colonna "
|
||||
HELP "Colonna in cui stampare"
|
||||
END
|
||||
|
||||
NUMBER F_WIDTH 3
|
||||
BEGIN
|
||||
PROMPT 1 4 "Larghezza "
|
||||
HELP "Lunghezza massima da stampare"
|
||||
END
|
||||
|
||||
NUMBER F_HEIGHT 2
|
||||
BEGIN
|
||||
PROMPT 24 4 "Altezza "
|
||||
HELP "Righe massime su cui stampare"
|
||||
END
|
||||
|
||||
NUMBER F_DECIMALS 2
|
||||
BEGIN
|
||||
PROMPT 24 4 "Decimali "
|
||||
HELP "Numero di decimali"
|
||||
MESSAGE COPY,F_HEIGHT
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_PROMPT 80 60
|
||||
BEGIN
|
||||
PROMPT 1 5 "Testo "
|
||||
HELP "Eventuale testo fisso da stampare"
|
||||
END
|
||||
|
||||
STRING F_PICTURE 80 40
|
||||
BEGIN
|
||||
PROMPT 1 6 "Formato "
|
||||
HELP "Formato di stampa (vedere codici sul manuale)"
|
||||
END
|
||||
|
||||
STRING F_FIELD 40
|
||||
BEGIN
|
||||
PROMPT 1 7 "Campo su file "
|
||||
HELP "Nome del campo su file"
|
||||
END
|
||||
|
||||
STRING F_FIELD2 40
|
||||
BEGIN
|
||||
PROMPT 1 8 "II campo "
|
||||
HELP "Nome del campo su file da utilizzare se il primo e' vuoto"
|
||||
END
|
||||
|
||||
BOOLEAN F_HIDDEN
|
||||
BEGIN
|
||||
PROMPT 60 6 "Nascosto"
|
||||
HELP "Il campo va elaborato ma non stampato"
|
||||
END
|
||||
|
||||
BOOLEAN F_DISABLED
|
||||
BEGIN
|
||||
PROMPT 60 7 "Disabilitato"
|
||||
HELP "Il campo viene completamente ignorato e quindi nemmeno stampato"
|
||||
END
|
||||
|
||||
BOOLEAN F_AUTOMAGIC
|
||||
BEGIN
|
||||
PROMPT 60 8 "Automatico"
|
||||
HELP "Il campo viene calcolato automaticamente"
|
||||
END
|
||||
|
||||
GROUPBOX F_GROUP 78 3
|
||||
BEGIN
|
||||
PROMPT 1 9 "Gruppi di stampa"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP1
|
||||
BEGIN
|
||||
PROMPT 4 10 "1"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP2
|
||||
BEGIN
|
||||
PROMPT 10 10 "2"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP3
|
||||
BEGIN
|
||||
PROMPT 16 10 "3"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP4
|
||||
BEGIN
|
||||
PROMPT 22 10 "4"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP5
|
||||
BEGIN
|
||||
PROMPT 28 10 "5"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP6
|
||||
BEGIN
|
||||
PROMPT 34 10 "6"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP7
|
||||
BEGIN
|
||||
PROMPT 40 10 "7"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP8
|
||||
BEGIN
|
||||
PROMPT 46 10 "8"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP9
|
||||
BEGIN
|
||||
PROMPT 52 10 "9"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP10
|
||||
BEGIN
|
||||
PROMPT 58 10 "10"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP11
|
||||
BEGIN
|
||||
PROMPT 64 10 "11"
|
||||
END
|
||||
|
||||
BOOLEAN F_GROUP12
|
||||
BEGIN
|
||||
PROMPT 70 10 "12"
|
||||
END
|
||||
|
||||
SPREADSHEET F_ITEMS
|
||||
BEGIN
|
||||
PROMPT 0 12 "Spreadsheet"
|
||||
ITEM "Codice@8"
|
||||
ITEM "Testo@32"
|
||||
ITEM "Messaggio@80"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Spreadsheet" -1 -1 46 6
|
||||
|
||||
STRING 101 8
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice "
|
||||
END
|
||||
|
||||
STRING 102 32
|
||||
BEGIN
|
||||
PROMPT 1 2 "Testo "
|
||||
FLAGS "_"
|
||||
END
|
||||
|
||||
STRING 103 80 32
|
||||
BEGIN
|
||||
PROMPT 1 3 "Messaggio "
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
160
ba/ba2100r.uml
160
ba/ba2100r.uml
@ -1,80 +1,80 @@
|
||||
#include "ba2100.h"
|
||||
|
||||
PAGE "RELAZIONE" -1 -1 78 12
|
||||
|
||||
SPREADSHEET F_ITEMS 0 9
|
||||
BEGIN
|
||||
PROMPT 0 1 "Spreadsheet"
|
||||
ITEM "File@4"
|
||||
ITEM "Descrizione@40"
|
||||
ITEM "Join@4"
|
||||
ITEM "Chiave@2"
|
||||
ITEM "Alias@3"
|
||||
ITEM "Espressione@40"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Spreadsheet" -1 -1 60 8
|
||||
|
||||
STRING 101 4
|
||||
BEGIN
|
||||
PROMPT 1 1 "File "
|
||||
FLAGS "U"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING 102 40
|
||||
BEGIN
|
||||
PROMPT 16 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING 103 4
|
||||
BEGIN
|
||||
PROMPT 1 2 "Join "
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
NUMBER 104 3
|
||||
BEGIN
|
||||
PROMPT 1 3 "Chiave "
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
NUMBER 105 3
|
||||
BEGIN
|
||||
PROMPT 1 4 "Alias "
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
STRING 106 40
|
||||
BEGIN
|
||||
PROMPT 1 5 "Espr. "
|
||||
FLAGS "U"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
#include "ba2100.h"
|
||||
|
||||
PAGE "RELAZIONE" -1 -1 78 12
|
||||
|
||||
SPREADSHEET F_ITEMS 0 9
|
||||
BEGIN
|
||||
PROMPT 0 1 "Spreadsheet"
|
||||
ITEM "File@4"
|
||||
ITEM "Descrizione@40"
|
||||
ITEM "Join@4"
|
||||
ITEM "Chiave@2"
|
||||
ITEM "Alias@3"
|
||||
ITEM "Espressione@40"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Spreadsheet" -1 -1 60 8
|
||||
|
||||
STRING 101 4
|
||||
BEGIN
|
||||
PROMPT 1 1 "File "
|
||||
FLAGS "U"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING 102 40
|
||||
BEGIN
|
||||
PROMPT 16 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING 103 4
|
||||
BEGIN
|
||||
PROMPT 1 2 "Join "
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
NUMBER 104 3
|
||||
BEGIN
|
||||
PROMPT 1 3 "Chiave "
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
NUMBER 105 3
|
||||
BEGIN
|
||||
PROMPT 1 4 "Alias "
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
STRING 106 40
|
||||
BEGIN
|
||||
PROMPT 1 5 "Espr. "
|
||||
FLAGS "U"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
@ -1,23 +1,23 @@
|
||||
#include "ba2100.h"
|
||||
|
||||
PAGE "SEZIONE DI STAMPA" -1 -1 30 5
|
||||
|
||||
NUMBER F_HEIGHT 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Altezza "
|
||||
END
|
||||
|
||||
BUTTON DLG_EDIT 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
#include "ba2100.h"
|
||||
|
||||
PAGE "SEZIONE DI STAMPA" -1 -1 30 5
|
||||
|
||||
NUMBER F_HEIGHT 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Altezza "
|
||||
END
|
||||
|
||||
BUTTON DLG_EDIT 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
MESSAGE EXIT,K_ENTER
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
2232
ba/ba4200b.uml
2232
ba/ba4200b.uml
File diff suppressed because it is too large
Load Diff
2480
ba/ba4200c.uml
2480
ba/ba4200c.uml
File diff suppressed because it is too large
Load Diff
@ -13,7 +13,7 @@ BEGIN
|
||||
PROMPT 4 1 "Ditta "
|
||||
HELP "Codice ditta a cui si riferisce la delega"
|
||||
FIELD CODTAB[1,5]
|
||||
FLAGS "FR"
|
||||
FLAGS "FRZ"
|
||||
KEY 1
|
||||
USE LF_NDITTE KEY 1
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
@ -138,6 +138,7 @@ BEGIN
|
||||
PROMPT 4 10 "Importo "
|
||||
FIELD R0
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
HELP "Importo versato"
|
||||
END
|
||||
|
||||
|
636
ba/batbiva.uml
636
ba/batbiva.uml
@ -1,318 +1,318 @@
|
||||
#include "batbiva.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Codici IVA" -1 -1 78 19
|
||||
|
||||
STRING FLD_TABIVA_CODTAB 4
|
||||
BEGIN
|
||||
PROMPT 3 1 "Codice "
|
||||
FIELD CODTAB
|
||||
KEY 1
|
||||
USE %IVA
|
||||
FLAGS "U"
|
||||
INPUT CODTAB FLD_TABIVA_CODTAB
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Tipo" S1
|
||||
DISPLAY "%@5" R0
|
||||
DISPLAY "Vent." S6
|
||||
DISPLAY "Sospeso" B2
|
||||
OUTPUT FLD_TABIVA_CODTAB CODTAB
|
||||
OUTPUT FLD_TABIVA_S0 S0
|
||||
HELP "Inserire il codice IVA"
|
||||
CHECKTYPE REQUIRED
|
||||
VALIDATE ZEROFILL_FUNC 2
|
||||
END
|
||||
|
||||
STRING FLD_TABIVA_S0 50
|
||||
BEGIN
|
||||
PROMPT 3 2 "Descrizione "
|
||||
FIELD S0
|
||||
KEY 2
|
||||
USE %IVA KEY 2
|
||||
INPUT S0 FLD_TABIVA_S0
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Tipo" S1
|
||||
DISPLAY "%@5" R0
|
||||
DISPLAY "Vent." S6
|
||||
DISPLAY "Sospeso" B2
|
||||
COPY OUTPUT FLD_TABIVA_CODTAB
|
||||
HELP "Inserire la descrizione del codice IVA"
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Manca la descrizione"
|
||||
END
|
||||
|
||||
LIST LST_TABIVA_S1 2 22
|
||||
BEGIN
|
||||
PROMPT 3 3 "Tipo codice "
|
||||
FIELD S1
|
||||
HELP "Indicare il tipo di codice IVA"
|
||||
ITEM " |Regime IVA normale"
|
||||
MESSAGE ENABLE,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0
|
||||
MESSAGE CLEAR,FLD_TABIVA_I3|CLEAR,FLD_TABIVA_I4
|
||||
MESSAGE ENABLE,FLD_TABIVA_S6
|
||||
ITEM "VE|Ricavi da ventilare"
|
||||
MESSAGE CLEAR,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0|CLEAR,FLD_TABIVA_I3
|
||||
MESSAGE CLEAR,FLD_TABIVA_I4|CLEAR,FLD_TABIVA_S6
|
||||
ITEM "ES|Operazioni esenti"
|
||||
MESSAGE CLEAR,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0
|
||||
MESSAGE ENABLE,FLD_TABIVA_I3|ENABLE,FLD_TABIVA_I4
|
||||
MESSAGE ENABLE,FLD_TABIVA_S6
|
||||
ITEM "NI|Non imponibili"
|
||||
MESSAGE CLEAR,FLD_TABIVA_R0|ENABLE,FLD_TABIVA_I0
|
||||
MESSAGE ENABLE,FLD_TABIVA_I3|ENABLE,FLD_TABIVA_I4
|
||||
MESSAGE ENABLE,FLD_TABIVA_S6
|
||||
ITEM "NS|Non soggetti"
|
||||
MESSAGE CLEAR,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0
|
||||
MESSAGE ENABLE,FLD_TABIVA_I3|ENABLE,FLD_TABIVA_I4
|
||||
MESSAGE ENABLE,FLD_TABIVA_S6
|
||||
END
|
||||
|
||||
STRING FLD_TABIVA_S6 4
|
||||
BEGIN
|
||||
PROMPT 39 3 "C.IVA a cui ventilare "
|
||||
FLAGS "U"
|
||||
FIELD S6
|
||||
COPY USE FLD_TABIVA_CODTAB
|
||||
INPUT CODTAB FLD_TABIVA_S6
|
||||
COPY DISPLAY FLD_TABIVA_CODTAB
|
||||
OUTPUT FLD_TABIVA_S6 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE ZEROFILL_FUNC 2
|
||||
HELP "Inserire il codice iva a cui ventilare l'imposta"
|
||||
END
|
||||
|
||||
NUMBER FLD_TABIVA_R0 6 2
|
||||
BEGIN
|
||||
PROMPT 3 4 "Aliquota "
|
||||
FIELD R0
|
||||
FLAGS "R"
|
||||
HELP "Inserire la percentuale di imposta"
|
||||
WARNING "Almeno uno dei campi tra aliquota tipo e codice a cui ventilare deve essere specificato"
|
||||
VALIDATE ONEREQ_FUNC 3 FLD_TABIVA_R0 FLD_TABIVA_S6 LST_TABIVA_S1
|
||||
END
|
||||
|
||||
NUMBER FLD_TABIVA_I0 2
|
||||
BEGIN
|
||||
PROMPT 39 4 "Perc.IVA teorica "
|
||||
FIELD I0
|
||||
HELP "Inserire la percentuale teorica dell'imposta"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 40 4
|
||||
BEGIN
|
||||
PROMPT 3 5 "Colonne per allegati imponibili"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 25 4
|
||||
BEGIN
|
||||
PROMPT 44 5 "Indicatori mod. 101/102"
|
||||
END
|
||||
|
||||
LIST FLD_TABIVA_S7 1 26
|
||||
BEGIN
|
||||
PROMPT 4 6 "Clienti "
|
||||
FIELD S7
|
||||
HELP "Inserire il numero della colonna degli allegati clienti relativa all'imposta"
|
||||
ITEM " |Non in allegato"
|
||||
ITEM "1|Imponibili"
|
||||
ITEM "3|Non imponibili"
|
||||
END
|
||||
|
||||
LIST FLD_TABIVA_S8 1 26
|
||||
BEGIN
|
||||
PROMPT 4 7 "Fornitori "
|
||||
FIELD S8
|
||||
HELP "Inserire il numero della colonna degli allegati fornitori relativa all'imposta"
|
||||
ITEM " |Non in allegato"
|
||||
ITEM "1|Imponibili"
|
||||
ITEM "3|Senza applicaz.imposta"
|
||||
ITEM "4|Non imponibili"
|
||||
END
|
||||
|
||||
BOOLEAN CHK_TABIVA_B0
|
||||
BEGIN
|
||||
PROMPT 50 6 "Clienti"
|
||||
FIELD B0
|
||||
HELP "Indicare se il codice deve comparire nel modello 101"
|
||||
END
|
||||
|
||||
BOOLEAN FLD_TABIVA_B1
|
||||
BEGIN
|
||||
PROMPT 50 7 "Fornitori"
|
||||
FIELD B1
|
||||
HELP "Indicare se il codice deve comparire nel modello 102"
|
||||
END
|
||||
|
||||
LIST FLD_TABIVA_I3 3 6
|
||||
BEGIN
|
||||
PROMPT 3 10 "Riga vendite IVA11 per op.esenti e non imp. "
|
||||
FIELD I3
|
||||
HELP "Indicare il codice riga per operazioni di vendita es. e non imp. del mod.101"
|
||||
ITEM " |No"
|
||||
ITEM "1|B1"
|
||||
ITEM "2|B2"
|
||||
ITEM "3|B3"
|
||||
END
|
||||
|
||||
LIST FLD_TABIVA_I4 3 6
|
||||
BEGIN
|
||||
PROMPT 3 11 "Riga acquisti IVA11 per op.esenti e non imp. "
|
||||
FIELD I4
|
||||
HELP "Indicare il n. di riga per operazioni di acquisto es. e non imp. del mod.101"
|
||||
ITEM " |No"
|
||||
ITEM "14|B14"
|
||||
END
|
||||
|
||||
LIST LST_TABIVA_S3 1 33
|
||||
BEGIN
|
||||
PROMPT 3 12 "Gestione plafond "
|
||||
FIELD S3
|
||||
HELP "Indicare il tipo di gestione di plafond"
|
||||
ITEM " |Regime normale"
|
||||
ITEM "1|Oper. relative art.8"
|
||||
ITEM "2|Oper. relative art.8bis"
|
||||
ITEM "3|Oper. relative art.9"
|
||||
END
|
||||
|
||||
LIST LST_TABIVA_S4 1 45
|
||||
BEGIN
|
||||
PROMPT 3 13 "Regime agricolo "
|
||||
FIELD S4
|
||||
HELP "Indicare il tipo di gestione per regime agricolo"
|
||||
ITEM " |Regime normale"
|
||||
ITEM "1|Vendite regime agricolo"
|
||||
ITEM "2|Vendite accessorie/Acquisti non agricoli"
|
||||
ITEM "3|Vendite per conferimenti"
|
||||
END
|
||||
|
||||
LIST LST_TABIVA_S5 1 33
|
||||
BEGIN
|
||||
PROMPT 3 14 "Ag. viaggio/turismo "
|
||||
FIELD S5
|
||||
HELP "Indicare il tipo di gestione per agenzie viaggio/turismo"
|
||||
ITEM " |Regime normale"
|
||||
ITEM "1|Operazioni interno CEE"
|
||||
ITEM "2|Operazioni fuori CEE"
|
||||
ITEM "3|Vendite miste CEE"
|
||||
ITEM "4|Acquisti misti parte CEE"
|
||||
ITEM "5|Acquisti misti parte fuori CEE"
|
||||
END
|
||||
|
||||
BOOLEAN CHK_TABIVA_S9
|
||||
BEGIN
|
||||
PROMPT 3 16 "Codice per calcolo rimborso infrannuale"
|
||||
FIELD B3
|
||||
HELP "Indicare se il codice vale per il calcolo del rimborso infrannuale"
|
||||
END
|
||||
|
||||
BOOLEAN FLD_SOSPESO_B2
|
||||
BEGIN
|
||||
PROMPT 3 17 "Codice IVA sospeso"
|
||||
FIELD B2
|
||||
HELP "Indicare se il codice iva e' sospeso"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "batbiva.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Codici IVA" -1 -1 78 19
|
||||
|
||||
STRING FLD_TABIVA_CODTAB 4
|
||||
BEGIN
|
||||
PROMPT 3 1 "Codice "
|
||||
FIELD CODTAB
|
||||
KEY 1
|
||||
USE %IVA
|
||||
FLAGS "U"
|
||||
INPUT CODTAB FLD_TABIVA_CODTAB
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Tipo" S1
|
||||
DISPLAY "%@5" R0
|
||||
DISPLAY "Vent." S6
|
||||
DISPLAY "Sospeso" B2
|
||||
OUTPUT FLD_TABIVA_CODTAB CODTAB
|
||||
OUTPUT FLD_TABIVA_S0 S0
|
||||
HELP "Inserire il codice IVA"
|
||||
CHECKTYPE REQUIRED
|
||||
VALIDATE ZEROFILL_FUNC 2
|
||||
END
|
||||
|
||||
STRING FLD_TABIVA_S0 50
|
||||
BEGIN
|
||||
PROMPT 3 2 "Descrizione "
|
||||
FIELD S0
|
||||
KEY 2
|
||||
USE %IVA KEY 2
|
||||
INPUT S0 FLD_TABIVA_S0
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Tipo" S1
|
||||
DISPLAY "%@5" R0
|
||||
DISPLAY "Vent." S6
|
||||
DISPLAY "Sospeso" B2
|
||||
COPY OUTPUT FLD_TABIVA_CODTAB
|
||||
HELP "Inserire la descrizione del codice IVA"
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Manca la descrizione"
|
||||
END
|
||||
|
||||
LIST LST_TABIVA_S1 2 22
|
||||
BEGIN
|
||||
PROMPT 3 3 "Tipo codice "
|
||||
FIELD S1
|
||||
HELP "Indicare il tipo di codice IVA"
|
||||
ITEM " |Regime IVA normale"
|
||||
MESSAGE ENABLE,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0
|
||||
MESSAGE CLEAR,FLD_TABIVA_I3|CLEAR,FLD_TABIVA_I4
|
||||
MESSAGE ENABLE,FLD_TABIVA_S6
|
||||
ITEM "VE|Ricavi da ventilare"
|
||||
MESSAGE CLEAR,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0|CLEAR,FLD_TABIVA_I3
|
||||
MESSAGE CLEAR,FLD_TABIVA_I4|CLEAR,FLD_TABIVA_S6
|
||||
ITEM "ES|Operazioni esenti"
|
||||
MESSAGE CLEAR,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0
|
||||
MESSAGE ENABLE,FLD_TABIVA_I3|ENABLE,FLD_TABIVA_I4
|
||||
MESSAGE ENABLE,FLD_TABIVA_S6
|
||||
ITEM "NI|Non imponibili"
|
||||
MESSAGE CLEAR,FLD_TABIVA_R0|ENABLE,FLD_TABIVA_I0
|
||||
MESSAGE ENABLE,FLD_TABIVA_I3|ENABLE,FLD_TABIVA_I4
|
||||
MESSAGE ENABLE,FLD_TABIVA_S6
|
||||
ITEM "NS|Non soggetti"
|
||||
MESSAGE CLEAR,FLD_TABIVA_R0|CLEAR,FLD_TABIVA_I0
|
||||
MESSAGE ENABLE,FLD_TABIVA_I3|ENABLE,FLD_TABIVA_I4
|
||||
MESSAGE ENABLE,FLD_TABIVA_S6
|
||||
END
|
||||
|
||||
STRING FLD_TABIVA_S6 4
|
||||
BEGIN
|
||||
PROMPT 39 3 "C.IVA a cui ventilare "
|
||||
FLAGS "U"
|
||||
FIELD S6
|
||||
COPY USE FLD_TABIVA_CODTAB
|
||||
INPUT CODTAB FLD_TABIVA_S6
|
||||
COPY DISPLAY FLD_TABIVA_CODTAB
|
||||
OUTPUT FLD_TABIVA_S6 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE ZEROFILL_FUNC 2
|
||||
HELP "Inserire il codice iva a cui ventilare l'imposta"
|
||||
END
|
||||
|
||||
NUMBER FLD_TABIVA_R0 6 2
|
||||
BEGIN
|
||||
PROMPT 3 4 "Aliquota "
|
||||
FIELD R0
|
||||
FLAGS "R"
|
||||
HELP "Inserire la percentuale di imposta"
|
||||
WARNING "Deve essere specificato almeno uno dei campi seguenti: aliquota, tipo, codice a cui ventilare"
|
||||
VALIDATE ONEREQ_FUNC 3 FLD_TABIVA_R0 FLD_TABIVA_S6 LST_TABIVA_S1
|
||||
END
|
||||
|
||||
NUMBER FLD_TABIVA_I0 2
|
||||
BEGIN
|
||||
PROMPT 39 4 "Perc.IVA teorica "
|
||||
FIELD I0
|
||||
HELP "Inserire la percentuale teorica dell'imposta"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 40 4
|
||||
BEGIN
|
||||
PROMPT 3 5 "Colonne per allegati imponibili"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 25 4
|
||||
BEGIN
|
||||
PROMPT 44 5 "Indicatori mod. 101/102"
|
||||
END
|
||||
|
||||
LIST FLD_TABIVA_S7 1 26
|
||||
BEGIN
|
||||
PROMPT 4 6 "Clienti "
|
||||
FIELD S7
|
||||
HELP "Inserire il numero della colonna degli allegati clienti relativa all'imposta"
|
||||
ITEM " |Non in allegato"
|
||||
ITEM "1|Imponibili"
|
||||
ITEM "3|Non imponibili"
|
||||
END
|
||||
|
||||
LIST FLD_TABIVA_S8 1 26
|
||||
BEGIN
|
||||
PROMPT 4 7 "Fornitori "
|
||||
FIELD S8
|
||||
HELP "Inserire il numero della colonna degli allegati fornitori relativa all'imposta"
|
||||
ITEM " |Non in allegato"
|
||||
ITEM "1|Imponibili"
|
||||
ITEM "3|Senza applicaz.imposta"
|
||||
ITEM "4|Non imponibili"
|
||||
END
|
||||
|
||||
BOOLEAN CHK_TABIVA_B0
|
||||
BEGIN
|
||||
PROMPT 50 6 "Clienti"
|
||||
FIELD B0
|
||||
HELP "Indicare se il codice deve comparire nel modello 101"
|
||||
END
|
||||
|
||||
BOOLEAN FLD_TABIVA_B1
|
||||
BEGIN
|
||||
PROMPT 50 7 "Fornitori"
|
||||
FIELD B1
|
||||
HELP "Indicare se il codice deve comparire nel modello 102"
|
||||
END
|
||||
|
||||
LIST FLD_TABIVA_I3 3 6
|
||||
BEGIN
|
||||
PROMPT 3 10 "Riga vendite IVA11 per op.esenti e non imp. "
|
||||
FIELD I3
|
||||
HELP "Indicare il codice riga per operazioni di vendita es. e non imp. del mod.101"
|
||||
ITEM " |No"
|
||||
ITEM "1|B1"
|
||||
ITEM "2|B2"
|
||||
ITEM "3|B3"
|
||||
END
|
||||
|
||||
LIST FLD_TABIVA_I4 3 6
|
||||
BEGIN
|
||||
PROMPT 3 11 "Riga acquisti IVA11 per op.esenti e non imp. "
|
||||
FIELD I4
|
||||
HELP "Indicare il n. di riga per operazioni di acquisto es. e non imp. del mod.101"
|
||||
ITEM " |No"
|
||||
ITEM "14|B14"
|
||||
END
|
||||
|
||||
LIST LST_TABIVA_S3 1 33
|
||||
BEGIN
|
||||
PROMPT 3 12 "Gestione plafond "
|
||||
FIELD S3
|
||||
HELP "Indicare il tipo di gestione di plafond"
|
||||
ITEM " |Regime normale"
|
||||
ITEM "1|Oper. relative art.8"
|
||||
ITEM "2|Oper. relative art.8bis"
|
||||
ITEM "3|Oper. relative art.9"
|
||||
END
|
||||
|
||||
LIST LST_TABIVA_S4 1 45
|
||||
BEGIN
|
||||
PROMPT 3 13 "Regime agricolo "
|
||||
FIELD S4
|
||||
HELP "Indicare il tipo di gestione per regime agricolo"
|
||||
ITEM " |Regime normale"
|
||||
ITEM "1|Vendite regime agricolo"
|
||||
ITEM "2|Vendite accessorie/Acquisti non agricoli"
|
||||
ITEM "3|Vendite per conferimenti"
|
||||
END
|
||||
|
||||
LIST LST_TABIVA_S5 1 33
|
||||
BEGIN
|
||||
PROMPT 3 14 "Ag. viaggio/turismo "
|
||||
FIELD S5
|
||||
HELP "Indicare il tipo di gestione per agenzie viaggio/turismo"
|
||||
ITEM " |Regime normale"
|
||||
ITEM "1|Operazioni interno CEE"
|
||||
ITEM "2|Operazioni fuori CEE"
|
||||
ITEM "3|Vendite miste CEE"
|
||||
ITEM "4|Acquisti misti parte CEE"
|
||||
ITEM "5|Acquisti misti parte fuori CEE"
|
||||
END
|
||||
|
||||
BOOLEAN CHK_TABIVA_S9
|
||||
BEGIN
|
||||
PROMPT 3 16 "Codice per calcolo rimborso infrannuale"
|
||||
FIELD B3
|
||||
HELP "Indicare se il codice vale per il calcolo del rimborso infrannuale"
|
||||
END
|
||||
|
||||
BOOLEAN FLD_SOSPESO_B2
|
||||
BEGIN
|
||||
PROMPT 3 17 "Codice IVA sospeso"
|
||||
FIELD B2
|
||||
HELP "Indicare se il codice iva e' sospeso"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
106
ba/batblng.uml
106
ba/batblng.uml
@ -1,53 +1,53 @@
|
||||
#include "batblng.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella lingue" -1 -1 78 8
|
||||
|
||||
STRING F_CODICE 1
|
||||
BEGIN
|
||||
PROMPT 4 2 "Codice "
|
||||
FIELD CODTAB
|
||||
FLAGS "U"
|
||||
KEY 1
|
||||
USE %LNG
|
||||
INPUT CODTAB F_CODICE
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione @50" S0
|
||||
OUTPUT F_CODICE CODTAB
|
||||
OUTPUT F_DESCR S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_DESCR 50
|
||||
BEGIN
|
||||
PROMPT 4 4 "Descrizione "
|
||||
FIELD LF_TABCOM->S0
|
||||
KEY 2
|
||||
USE %LNG KEY 2
|
||||
INPUT S0 F_DESCR
|
||||
DISPLAY "Descrizione @50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
OUTPUT F_CODICE CODTAB
|
||||
OUTPUT F_DESCR S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include "batblng.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella lingue" -1 -1 78 8
|
||||
|
||||
STRING F_CODICE 1
|
||||
BEGIN
|
||||
PROMPT 4 2 "Codice "
|
||||
FIELD CODTAB
|
||||
FLAGS "U"
|
||||
KEY 1
|
||||
USE %LNG
|
||||
INPUT CODTAB F_CODICE
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione @50" S0
|
||||
OUTPUT F_CODICE CODTAB
|
||||
OUTPUT F_DESCR S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_DESCR 50
|
||||
BEGIN
|
||||
PROMPT 4 4 "Descrizione "
|
||||
FIELD LF_TABCOM->S0
|
||||
KEY 2
|
||||
USE %LNG KEY 2
|
||||
INPUT S0 F_DESCR
|
||||
DISPLAY "Descrizione @50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
OUTPUT F_CODICE CODTAB
|
||||
OUTPUT F_DESCR S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
686
cg/cg0100.cpp
686
cg/cg0100.cpp
@ -1,343 +1,343 @@
|
||||
#include <relapp.h>
|
||||
#include <pconti.h>
|
||||
|
||||
#include "cg0.h"
|
||||
#include "cg0100.h"
|
||||
|
||||
#define ATTIVITA 1
|
||||
#define PASSIVITA 2
|
||||
#define COSTI 3
|
||||
#define RICAVI 4
|
||||
#define ORDINE 5
|
||||
|
||||
class CG0100_application : public TRelation_application
|
||||
{
|
||||
TMask* _msk;
|
||||
TRelation *_rel;
|
||||
TLocalisamfile* _saldi;
|
||||
TLocalisamfile* _tabcom;
|
||||
|
||||
bool user_create();
|
||||
bool user_destroy();
|
||||
virtual TMask* get_mask(int mode) {return _msk;}
|
||||
virtual bool changing_mask(int mode) {return FALSE;}
|
||||
virtual bool protected_record(TRectype &rec);
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m) {init_insert_mode(m);}
|
||||
virtual int write(const TMask& m);
|
||||
virtual int rewrite(const TMask & m);
|
||||
virtual int read(TMask& m);
|
||||
|
||||
public:
|
||||
virtual TRelation* get_relation() const {return _rel;}
|
||||
CG0100_application() {}
|
||||
};
|
||||
HIDDEN inline CG0100_application & app() { return (CG0100_application &) main_app();}
|
||||
|
||||
|
||||
int CG0100_application::read(TMask& m)
|
||||
|
||||
{
|
||||
const TRelation *r = get_relation();
|
||||
m.autoload(r);
|
||||
if (m.get(FLD_CM1_LETTIVD).empty())
|
||||
{
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVD);
|
||||
if (sezivd == 1 || sezivd == 2)
|
||||
m.set(FLD_CM1_SEZIVD, sezivd + 5);
|
||||
}
|
||||
if (m.get(FLD_CM1_LETTIVDOPP).empty())
|
||||
{
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVDOPP);
|
||||
if (sezivd == 1 || sezivd == 2)
|
||||
m.set(FLD_CM1_SEZIVDOPP, sezivd + 5);
|
||||
}
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
int CG0100_application::rewrite(const TMask& m)
|
||||
|
||||
{
|
||||
TRelation *r = get_relation();
|
||||
|
||||
m.autosave(r);
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVD);
|
||||
TString16 sez;
|
||||
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVD, sez);
|
||||
}
|
||||
sezivd = m.get_int(FLD_CM1_SEZIVDOPP);
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVDOPP, sez);
|
||||
}
|
||||
return r->rewrite();
|
||||
}
|
||||
|
||||
int CG0100_application::write(const TMask& m)
|
||||
|
||||
{
|
||||
TRelation *r = get_relation();
|
||||
TString16 sez;
|
||||
|
||||
m.autosave(r);
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVD);
|
||||
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVD, sez);
|
||||
}
|
||||
sezivd = m.get_int(FLD_CM1_SEZIVDOPP);
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVDOPP, sez);
|
||||
}
|
||||
return r->write();
|
||||
}
|
||||
|
||||
// Controlla se puo' essere effettuata la cancellazione di un conto
|
||||
|
||||
bool CG0100_application::protected_record(TRectype &rec)
|
||||
{
|
||||
TMask* m = get_mask(MODE_MOD);
|
||||
TLocalisamfile& pconti = _rel->lfile();
|
||||
const int gruppo = atoi(m->get(FLD_CM1_GRUPPO));
|
||||
const int conto = atoi(m->get(FLD_CM1_CONTO));
|
||||
const long sottoc = atol(m->get(FLD_CM1_SOTTOCONTO));
|
||||
|
||||
// Se e' un sottoconto posso cancellarlo se non esistono saldi
|
||||
if ((gruppo != 0) && (conto != 0) && (sottoc != 0))
|
||||
{
|
||||
_saldi->zero();
|
||||
_saldi->put(PCN_GRUPPO, gruppo);
|
||||
_saldi->put(PCN_CONTO, conto);
|
||||
_saldi->put(PCN_SOTTOCONTO, sottoc);
|
||||
_saldi->read(_isgteq);
|
||||
|
||||
return _saldi->good() && gruppo ==_saldi->get_int(PCN_GRUPPO) &&
|
||||
conto ==_saldi->get_int(PCN_CONTO) &&
|
||||
sottoc ==_saldi->get_long(PCN_SOTTOCONTO);
|
||||
}
|
||||
get_relation()->save_status();
|
||||
pconti.zero() ;
|
||||
pconti.put(PCN_GRUPPO, gruppo);
|
||||
// Se e' un conto controllo se ha dei sottoconti
|
||||
if (conto != 0)
|
||||
pconti.put(PCN_CONTO, conto);
|
||||
TRectype rec1(pconti.curr());
|
||||
|
||||
pconti.setkey(1) ;
|
||||
pconti.read();
|
||||
pconti.next();
|
||||
const bool prot = (pconti.good() && (pconti.curr() == rec1));
|
||||
get_relation()->restore_status();
|
||||
return prot;
|
||||
}
|
||||
|
||||
void CG0100_application::init_query_mode(TMask& m)
|
||||
|
||||
{
|
||||
m.show(-1); //m.send_key(K_SHIFT + K_CTRL + 's', -1);
|
||||
m.show(-2); //m.send_key(K_SHIFT + K_CTRL + 's', -2);
|
||||
m.show(-3); //m.send_key(K_SHIFT + K_CTRL + 's', -3);
|
||||
}
|
||||
|
||||
HIDDEN bool tmcf_handler(TMask_field& f, KEY key)
|
||||
|
||||
{
|
||||
if (f.active() && key == K_SPACE)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
const int conto = atoi(m.get(FLD_CM1_CONTO));
|
||||
const long sottoc = atol(m.get(FLD_CM1_SOTTOCONTO));
|
||||
const bool enable_sezsaldi = (sottoc != 0) || (sottoc == 0 && conto != 0 && m.get(FLD_CM1_TMCF).not_empty());
|
||||
|
||||
m.show(FLD_CM2_SEZSALDI, enable_sezsaldi);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
void CG0100_application::init_insert_mode(TMask& m)
|
||||
|
||||
{
|
||||
const int gruppo = atoi(m.get(FLD_CM1_GRUPPO));
|
||||
const int conto = atoi(m.get(FLD_CM1_CONTO));
|
||||
const long sottoc = atol(m.get(FLD_CM1_SOTTOCONTO));
|
||||
bool ivd_enable = TRUE;
|
||||
|
||||
if (conto == 0 && sottoc == 0)
|
||||
m.show(-1, FALSE); // send_key(K_SHIFT + K_CTRL + 'h', -1);
|
||||
else
|
||||
if (sottoc == 0)
|
||||
m.show(-2, FALSE); //m.send_key(K_SHIFT + K_CTRL + 'h', -2);
|
||||
else
|
||||
m.show(-3, FALSE); //m.send_key(K_SHIFT + K_CTRL + 'h', -3);
|
||||
|
||||
TLocalisamfile& pconti = _rel->lfile();
|
||||
TString s(15), s2(1), s3(8), s4(2);
|
||||
int s1 = 0;
|
||||
|
||||
pconti.setkey(1) ;
|
||||
|
||||
int indbil = 0;
|
||||
|
||||
if (sottoc != 0)
|
||||
{
|
||||
pconti.zero();
|
||||
pconti.put(PCN_GRUPPO, gruppo);
|
||||
pconti.put(PCN_CONTO, conto);
|
||||
pconti.read();
|
||||
if (pconti.good())
|
||||
{
|
||||
s = pconti.get(PCN_CODCBL);
|
||||
s1 = atoi(pconti.get(PCN_SEZIVD));
|
||||
s2 = pconti.get(PCN_LETTIVD);
|
||||
s3 = pconti.get(PCN_NUMRIVD);
|
||||
s4 = pconti.get(PCN_NUMIVD);
|
||||
indbil = pconti.get_int(PCN_INDBIL);
|
||||
}
|
||||
ivd_enable = (s1 == 0) && s2.empty() && s3.empty() && s4.empty();
|
||||
}
|
||||
m.show(FLD_CM1_RICSER, indbil == PASSIVITA || indbil == RICAVI);
|
||||
if (conto != 0)
|
||||
{
|
||||
m.enable(FLD_CM1_SEZIVD, ivd_enable);
|
||||
m.show(FLD_CM1_LETTIVD, ivd_enable);
|
||||
m.show(FLD_CM1_NUMRIVD, ivd_enable);
|
||||
m.show(FLD_CM1_NUMIVD, ivd_enable);
|
||||
m.show(FLD_CM1_LETTIVDH, !ivd_enable);
|
||||
m.show(FLD_CM1_NUMRIVDH, !ivd_enable);
|
||||
m.show(FLD_CM1_NUMIVDH, !ivd_enable);
|
||||
if (!ivd_enable)
|
||||
{
|
||||
m.set(FLD_CM1_SEZIVD, s1);
|
||||
m.set(FLD_CM1_LETTIVDH, s2);
|
||||
m.set(FLD_CM1_NUMRIVDH, s3);
|
||||
m.set(FLD_CM1_NUMIVDH, s4);
|
||||
m.enable(FLD_CM1_SEZIVDOPP);
|
||||
}
|
||||
pconti.zero();
|
||||
pconti.put(PCN_GRUPPO, gruppo);
|
||||
pconti.read();
|
||||
if (pconti.good())
|
||||
if (s.empty()) s = pconti.get(PCN_CODCBL);
|
||||
}
|
||||
if (s.not_empty())
|
||||
{
|
||||
m.set(FLD_CM1_CODANALISIH, s);
|
||||
m.show(FLD_CM1_CODANALISIH);
|
||||
m.hide(FLD_CM1_CODTABANALISI);
|
||||
}
|
||||
else
|
||||
{
|
||||
m.show(FLD_CM1_CODTABANALISI);
|
||||
m.hide(FLD_CM1_CODANALISIH);
|
||||
}
|
||||
const bool enable_sezsaldi = (sottoc != 0) || (sottoc == 0 && conto != 0 && m.get(FLD_CM1_TMCF).not_empty());
|
||||
m.show(FLD_CM2_SEZSALDI, enable_sezsaldi);
|
||||
}
|
||||
|
||||
|
||||
HIDDEN bool gruppo_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_ENTER)
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const int gruppo = atoi(m.get(FLD_CM1_GRUPPO));
|
||||
const int conto = atoi(m.get(FLD_CM1_CONTO));
|
||||
TLocalisamfile& pconti = app().get_relation()->lfile();
|
||||
if (gruppo != 0 && conto != 0)
|
||||
{
|
||||
pconti.zero() ;
|
||||
pconti.put(PCN_GRUPPO, gruppo) ;
|
||||
pconti.setkey(1) ;
|
||||
pconti.read();
|
||||
if (pconti.bad())
|
||||
return f.warning_box ("Il gruppo non esiste");
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
HIDDEN bool conto_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_ENTER)
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const int gruppo = atoi(m.get(FLD_CM1_GRUPPO));
|
||||
const int conto = atoi(m.get(FLD_CM1_CONTO));
|
||||
const long sottoc = atol(m.get(FLD_CM1_SOTTOCONTO));
|
||||
TLocalisamfile& pconti = app().get_relation()->lfile();
|
||||
|
||||
if (gruppo != 0 && conto != 0 && sottoc != 0)
|
||||
{
|
||||
pconti.zero() ;
|
||||
pconti.put(PCN_GRUPPO, gruppo) ;
|
||||
pconti.put(PCN_CONTO, conto) ;
|
||||
pconti.setkey(1) ;
|
||||
pconti.read();
|
||||
if (pconti.bad())
|
||||
return m.field(FLD_CM1_CONTO).warning_box ("Il conto non esiste");
|
||||
else
|
||||
{
|
||||
if (pconti.get(PCN_TMCF).not_empty())
|
||||
return m.field(FLD_CM1_SOTTOCONTO).warning_box ("Non e' possibile inserire un sottoconto di un conto relativo ad un cliente/fornitore");
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
HIDDEN bool sottoc_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB)
|
||||
{
|
||||
const int gruppo = f.mask().get_int(FLD_CM1_GRUPPO);
|
||||
if (gruppo == 0) return TRUE;
|
||||
const int conto = f.mask().get_int(FLD_CM1_CONTO);
|
||||
const long sottoconto = f.mask().get_long(FLD_CM1_SOTTOCONTO);
|
||||
if (sottoconto != 0 && conto == 0)
|
||||
return f.mask().field(FLD_CM1_CONTO).error_box("Manca il conto");
|
||||
return f.mask().stop_run(K_AUTO_ENTER);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool CG0100_application::user_create()
|
||||
{
|
||||
_msk = new TMask("cg0100a") ;
|
||||
_msk->set_handler(FLD_CM1_GRUPPO, gruppo_handler);
|
||||
_msk->set_handler(FLD_CM1_CONTO, conto_handler);
|
||||
_msk->set_handler(FLD_CM1_SOTTOCONTO, sottoc_handler);
|
||||
_msk->set_handler(FLD_CM1_TMCF, tmcf_handler);
|
||||
|
||||
_rel = new TRelation(LF_PCON);
|
||||
_saldi = new TLocalisamfile(LF_SALDI);
|
||||
_saldi->setkey(2);
|
||||
set_search_field(FLD_CM1_GRUPPO);
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
bool CG0100_application::user_destroy()
|
||||
{
|
||||
delete _msk;
|
||||
delete _rel;
|
||||
delete _saldi;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int cg0100(int argc, char* argv[])
|
||||
{
|
||||
CG0100_application a ;
|
||||
a.run(argc, argv, "Piano dei conti");
|
||||
return 0;
|
||||
}
|
||||
#include <relapp.h>
|
||||
#include <pconti.h>
|
||||
|
||||
#include "cg0.h"
|
||||
#include "cg0100.h"
|
||||
|
||||
#define ATTIVITA 1
|
||||
#define PASSIVITA 2
|
||||
#define COSTI 3
|
||||
#define RICAVI 4
|
||||
#define ORDINE 5
|
||||
|
||||
class CG0100_application : public TRelation_application
|
||||
{
|
||||
TMask* _msk;
|
||||
TRelation *_rel;
|
||||
TLocalisamfile* _saldi;
|
||||
TLocalisamfile* _tabcom;
|
||||
|
||||
bool user_create();
|
||||
bool user_destroy();
|
||||
virtual TMask* get_mask(int mode) {return _msk;}
|
||||
virtual bool changing_mask(int mode) {return FALSE;}
|
||||
virtual bool protected_record(TRectype &rec);
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m) {init_insert_mode(m);}
|
||||
virtual int write(const TMask& m);
|
||||
virtual int rewrite(const TMask & m);
|
||||
virtual int read(TMask& m);
|
||||
|
||||
public:
|
||||
virtual TRelation* get_relation() const {return _rel;}
|
||||
CG0100_application() {}
|
||||
};
|
||||
HIDDEN inline CG0100_application & app() { return (CG0100_application &) main_app();}
|
||||
|
||||
|
||||
int CG0100_application::read(TMask& m)
|
||||
|
||||
{
|
||||
const TRelation *r = get_relation();
|
||||
m.autoload(r);
|
||||
if (m.get(FLD_CM1_LETTIVD).empty())
|
||||
{
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVD);
|
||||
if (sezivd == 1 || sezivd == 2)
|
||||
m.set(FLD_CM1_SEZIVD, sezivd + 5);
|
||||
}
|
||||
if (m.get(FLD_CM1_LETTIVDOPP).empty())
|
||||
{
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVDOPP);
|
||||
if (sezivd == 1 || sezivd == 2)
|
||||
m.set(FLD_CM1_SEZIVDOPP, sezivd + 5);
|
||||
}
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
int CG0100_application::rewrite(const TMask& m)
|
||||
|
||||
{
|
||||
TRelation *r = get_relation();
|
||||
|
||||
m.autosave(r);
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVD);
|
||||
TString16 sez;
|
||||
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVD, sez);
|
||||
}
|
||||
sezivd = m.get_int(FLD_CM1_SEZIVDOPP);
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVDOPP, sez);
|
||||
}
|
||||
return r->rewrite();
|
||||
}
|
||||
|
||||
int CG0100_application::write(const TMask& m)
|
||||
|
||||
{
|
||||
TRelation *r = get_relation();
|
||||
TString16 sez;
|
||||
|
||||
m.autosave(r);
|
||||
int sezivd = m.get_int(FLD_CM1_SEZIVD);
|
||||
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVD, sez);
|
||||
}
|
||||
sezivd = m.get_int(FLD_CM1_SEZIVDOPP);
|
||||
if (sezivd == 6 || sezivd == 7)
|
||||
{
|
||||
sez.format("%d", sezivd - 5);
|
||||
r->lfile().put(PCN_SEZIVDOPP, sez);
|
||||
}
|
||||
return r->write();
|
||||
}
|
||||
|
||||
// Controlla se puo' essere effettuata la cancellazione di un conto
|
||||
|
||||
bool CG0100_application::protected_record(TRectype &rec)
|
||||
{
|
||||
TMask* m = get_mask(MODE_MOD);
|
||||
TLocalisamfile& pconti = _rel->lfile();
|
||||
const int gruppo = atoi(m->get(FLD_CM1_GRUPPO));
|
||||
const int conto = atoi(m->get(FLD_CM1_CONTO));
|
||||
const long sottoc = atol(m->get(FLD_CM1_SOTTOCONTO));
|
||||
|
||||
// Se e' un sottoconto posso cancellarlo se non esistono saldi
|
||||
if ((gruppo != 0) && (conto != 0) && (sottoc != 0))
|
||||
{
|
||||
_saldi->zero();
|
||||
_saldi->put(PCN_GRUPPO, gruppo);
|
||||
_saldi->put(PCN_CONTO, conto);
|
||||
_saldi->put(PCN_SOTTOCONTO, sottoc);
|
||||
_saldi->read(_isgteq);
|
||||
|
||||
return _saldi->good() && gruppo ==_saldi->get_int(PCN_GRUPPO) &&
|
||||
conto ==_saldi->get_int(PCN_CONTO) &&
|
||||
sottoc ==_saldi->get_long(PCN_SOTTOCONTO);
|
||||
}
|
||||
get_relation()->save_status();
|
||||
pconti.zero() ;
|
||||
pconti.put(PCN_GRUPPO, gruppo);
|
||||
// Se e' un conto controllo se ha dei sottoconti
|
||||
if (conto != 0)
|
||||
pconti.put(PCN_CONTO, conto);
|
||||
TRectype rec1(pconti.curr());
|
||||
|
||||
pconti.setkey(1) ;
|
||||
pconti.read();
|
||||
pconti.next();
|
||||
const bool prot = (pconti.good() && (pconti.curr() == rec1));
|
||||
get_relation()->restore_status();
|
||||
return prot;
|
||||
}
|
||||
|
||||
void CG0100_application::init_query_mode(TMask& m)
|
||||
|
||||
{
|
||||
m.show(-1); //m.send_key(K_SHIFT + K_CTRL + 's', -1);
|
||||
m.show(-2); //m.send_key(K_SHIFT + K_CTRL + 's', -2);
|
||||
m.show(-3); //m.send_key(K_SHIFT + K_CTRL + 's', -3);
|
||||
}
|
||||
|
||||
HIDDEN bool tmcf_handler(TMask_field& f, KEY key)
|
||||
|
||||
{
|
||||
if (f.active() && key == K_SPACE)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
const int conto = atoi(m.get(FLD_CM1_CONTO));
|
||||
const long sottoc = atol(m.get(FLD_CM1_SOTTOCONTO));
|
||||
const bool enable_sezsaldi = (sottoc != 0) || (sottoc == 0 && conto != 0 && m.get(FLD_CM1_TMCF).not_empty());
|
||||
|
||||
m.show(FLD_CM2_SEZSALDI, enable_sezsaldi);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
void CG0100_application::init_insert_mode(TMask& m)
|
||||
|
||||
{
|
||||
const int gruppo = atoi(m.get(FLD_CM1_GRUPPO));
|
||||
const int conto = atoi(m.get(FLD_CM1_CONTO));
|
||||
const long sottoc = atol(m.get(FLD_CM1_SOTTOCONTO));
|
||||
bool ivd_enable = TRUE;
|
||||
|
||||
if (conto == 0 && sottoc == 0)
|
||||
m.show(-1, FALSE); // send_key(K_SHIFT + K_CTRL + 'h', -1);
|
||||
else
|
||||
if (sottoc == 0)
|
||||
m.show(-2, FALSE); //m.send_key(K_SHIFT + K_CTRL + 'h', -2);
|
||||
else
|
||||
m.show(-3, FALSE); //m.send_key(K_SHIFT + K_CTRL + 'h', -3);
|
||||
|
||||
TLocalisamfile& pconti = _rel->lfile();
|
||||
TString s(15), s2(1), s3(8), s4(2);
|
||||
int s1 = 0;
|
||||
|
||||
pconti.setkey(1) ;
|
||||
|
||||
int indbil = 0;
|
||||
|
||||
if (sottoc != 0)
|
||||
{
|
||||
pconti.zero();
|
||||
pconti.put(PCN_GRUPPO, gruppo);
|
||||
pconti.put(PCN_CONTO, conto);
|
||||
pconti.read();
|
||||
if (pconti.good())
|
||||
{
|
||||
s = pconti.get(PCN_CODCBL);
|
||||
s1 = atoi(pconti.get(PCN_SEZIVD));
|
||||
s2 = pconti.get(PCN_LETTIVD);
|
||||
s3 = pconti.get(PCN_NUMRIVD);
|
||||
s4 = pconti.get(PCN_NUMIVD);
|
||||
indbil = pconti.get_int(PCN_INDBIL);
|
||||
}
|
||||
ivd_enable = (s1 == 0) && s2.empty() && s3.empty() && s4.empty();
|
||||
}
|
||||
m.show(FLD_CM1_RICSER, indbil == PASSIVITA || indbil == RICAVI);
|
||||
if (conto != 0)
|
||||
{
|
||||
m.enable(FLD_CM1_SEZIVD, ivd_enable);
|
||||
m.show(FLD_CM1_LETTIVD, ivd_enable);
|
||||
m.show(FLD_CM1_NUMRIVD, ivd_enable);
|
||||
m.show(FLD_CM1_NUMIVD, ivd_enable);
|
||||
m.show(FLD_CM1_LETTIVDH, !ivd_enable);
|
||||
m.show(FLD_CM1_NUMRIVDH, !ivd_enable);
|
||||
m.show(FLD_CM1_NUMIVDH, !ivd_enable);
|
||||
if (!ivd_enable)
|
||||
{
|
||||
m.set(FLD_CM1_SEZIVD, s1);
|
||||
m.set(FLD_CM1_LETTIVDH, s2);
|
||||
m.set(FLD_CM1_NUMRIVDH, s3);
|
||||
m.set(FLD_CM1_NUMIVDH, s4);
|
||||
m.enable(FLD_CM1_SEZIVDOPP);
|
||||
}
|
||||
pconti.zero();
|
||||
pconti.put(PCN_GRUPPO, gruppo);
|
||||
pconti.read();
|
||||
if (pconti.good())
|
||||
if (s.empty()) s = pconti.get(PCN_CODCBL);
|
||||
}
|
||||
if (s.not_empty())
|
||||
{
|
||||
m.set(FLD_CM1_CODANALISIH, s);
|
||||
m.show(FLD_CM1_CODANALISIH);
|
||||
m.hide(FLD_CM1_CODTABANALISI);
|
||||
}
|
||||
else
|
||||
{
|
||||
m.show(FLD_CM1_CODTABANALISI);
|
||||
m.hide(FLD_CM1_CODANALISIH);
|
||||
}
|
||||
const bool enable_sezsaldi = (sottoc != 0) || (sottoc == 0 && conto != 0 && m.get(FLD_CM1_TMCF).not_empty());
|
||||
m.show(FLD_CM2_SEZSALDI, enable_sezsaldi);
|
||||
}
|
||||
|
||||
|
||||
HIDDEN bool gruppo_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_ENTER)
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const int gruppo = atoi(m.get(FLD_CM1_GRUPPO));
|
||||
const int conto = atoi(m.get(FLD_CM1_CONTO));
|
||||
TLocalisamfile& pconti = app().get_relation()->lfile();
|
||||
if (gruppo != 0 && conto != 0)
|
||||
{
|
||||
pconti.zero() ;
|
||||
pconti.put(PCN_GRUPPO, gruppo) ;
|
||||
pconti.setkey(1) ;
|
||||
pconti.read();
|
||||
if (pconti.bad())
|
||||
return f.warning_box ("Il gruppo non esiste");
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
HIDDEN bool conto_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_ENTER)
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const int gruppo = atoi(m.get(FLD_CM1_GRUPPO));
|
||||
const int conto = atoi(m.get(FLD_CM1_CONTO));
|
||||
const long sottoc = atol(m.get(FLD_CM1_SOTTOCONTO));
|
||||
TLocalisamfile& pconti = app().get_relation()->lfile();
|
||||
|
||||
if (gruppo != 0 && conto != 0 && sottoc != 0)
|
||||
{
|
||||
pconti.zero() ;
|
||||
pconti.put(PCN_GRUPPO, gruppo) ;
|
||||
pconti.put(PCN_CONTO, conto) ;
|
||||
pconti.setkey(1) ;
|
||||
pconti.read();
|
||||
if (pconti.bad())
|
||||
return m.field(FLD_CM1_CONTO).warning_box ("Il conto non esiste");
|
||||
else
|
||||
{
|
||||
if (pconti.get(PCN_TMCF).not_empty())
|
||||
return m.field(FLD_CM1_SOTTOCONTO).warning_box ("Non e' possibile inserire un sottoconto di un conto relativo ad un cliente/fornitore");
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
HIDDEN bool sottoc_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB)
|
||||
{
|
||||
const int gruppo = f.mask().get_int(FLD_CM1_GRUPPO);
|
||||
if (gruppo == 0) return TRUE;
|
||||
const int conto = f.mask().get_int(FLD_CM1_CONTO);
|
||||
const long sottoconto = f.mask().get_long(FLD_CM1_SOTTOCONTO);
|
||||
if (sottoconto != 0 && conto == 0)
|
||||
return f.mask().field(FLD_CM1_CONTO).error_box("Manca il conto");
|
||||
return f.mask().stop_run(K_AUTO_ENTER);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool CG0100_application::user_create()
|
||||
{
|
||||
_msk = new TMask("cg0100a") ;
|
||||
_msk->set_handler(FLD_CM1_GRUPPO, gruppo_handler);
|
||||
_msk->set_handler(FLD_CM1_CONTO, conto_handler);
|
||||
_msk->set_handler(FLD_CM1_SOTTOCONTO, sottoc_handler);
|
||||
_msk->set_handler(FLD_CM1_TMCF, tmcf_handler);
|
||||
|
||||
_rel = new TRelation(LF_PCON);
|
||||
_saldi = new TLocalisamfile(LF_SALDI);
|
||||
_saldi->setkey(2);
|
||||
set_search_field(FLD_CM1_GRUPPO);
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
bool CG0100_application::user_destroy()
|
||||
{
|
||||
delete _msk;
|
||||
delete _rel;
|
||||
delete _saldi;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int cg0100(int argc, char* argv[])
|
||||
{
|
||||
CG0100_application a ;
|
||||
a.run(argc, argv, "Piano dei conti");
|
||||
return 0;
|
||||
}
|
||||
|
708
cg/cg0100a.uml
708
cg/cg0100a.uml
@ -1,354 +1,354 @@
|
||||
#include "cg0100.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Piano dei conti " 0 -1 0 19
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_GRUPPO 3
|
||||
BEGIN
|
||||
PROMPT 2 1 "Gruppo "
|
||||
HELP "Codice del gruppo"
|
||||
FIELD LF_PCON->GRUPPO
|
||||
FLAGS "R"
|
||||
KEY 1
|
||||
USE LF_PCON KEY 1 SELECT CONTO=""
|
||||
INPUT GRUPPO FLD_CM1_GRUPPO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
OUTPUT FLD_CM1_DESCG DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCG 50
|
||||
BEGIN
|
||||
PROMPT 23 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_CONTO 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Conto "
|
||||
HELP "Codice dell'eventuale conto"
|
||||
FIELD LF_PCON->CONTO
|
||||
FLAGS "R"
|
||||
KEY 1
|
||||
USE LF_PCON KEY 1 SELECT ((CONTO!="") && (SOTTOCONTO=""))
|
||||
COPY INPUT FLD_CM1_GRUPPO
|
||||
INPUT CONTO FLD_CM1_CONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
OUTPUT FLD_CM1_CONTO CONTO
|
||||
OUTPUT FLD_CM1_DESCC DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCC 50
|
||||
BEGIN
|
||||
PROMPT 23 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_SOTTOCONTO 6
|
||||
BEGIN
|
||||
PROMPT 2 3 "Sottoconto "
|
||||
HELP "Codice dell'eventuale sottoconto"
|
||||
FIELD LF_PCON->SOTTOCONTO
|
||||
FLAGS "R"
|
||||
KEY 1
|
||||
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||
COPY INPUT FLD_CM1_CONTO
|
||||
INPUT SOTTOCONTO FLD_CM1_SOTTOCONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Sospeso" SOSPESO
|
||||
DISPLAY "Descrizione@70" DESCR
|
||||
OUTPUT FLD_CM1_SOTTOCONTO SOTTOCONTO
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
OUTPUT FLD_CM1_CONTO CONTO
|
||||
OUTPUT FLD_CM1_DESC DESCR
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESC 50
|
||||
BEGIN
|
||||
PROMPT 23 3 ""
|
||||
FIELD LF_PCON->DESCR
|
||||
KEY 2
|
||||
USE LF_PCON KEY 2
|
||||
INPUT DESCR FLD_CM1_DESC
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Sospeso" SOSPESO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto " SOTTOCONTO
|
||||
COPY OUTPUT FLD_CM1_SOTTOCONTO
|
||||
CHECKTYPE REQUIRED
|
||||
HELP "Descrizione del gruppo o del conto o del sottoconto"
|
||||
WARNING "Manca la descrizione"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_CODTABANALISI 10
|
||||
BEGIN
|
||||
PROMPT 1 5 "Codice Tabella Analisi "
|
||||
HELP "Codice di raggruppamento per l'analisi di bilancio"
|
||||
FIELD LF_PCON->CODCBL
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_CODANALISIH 10
|
||||
BEGIN
|
||||
PROMPT 1 5 "Codice Tabella Analisi "
|
||||
FLAGS "RHD"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_INDBIL 1 22
|
||||
BEGIN
|
||||
PROMPT 1 6 "Sezione di bilancio "
|
||||
FIELD LF_PCON->INDBIL
|
||||
GROUP 1 3
|
||||
HELP "Sezione di appartenenza del conto"
|
||||
ITEM "1|1. Attivita'"
|
||||
ITEM "2|2. Passivita'"
|
||||
ITEM "3|3. Costi"
|
||||
ITEM "4|4. Ricavi"
|
||||
ITEM "5|5. Conti d'ordine"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_SEZIVD 1 22
|
||||
BEGIN
|
||||
PROMPT 1 7 "Sez. e classe IV dir. "
|
||||
FIELD LF_PCON->SEZIVD
|
||||
ITEM "0|0. Nessuna" MESSAGE CLEAR,5@|CLEAR,6@
|
||||
ITEM "1|1. Attivita'" MESSAGE ENABLE,5@|ENABLE,6@
|
||||
ITEM "2|2. Passivita'" MESSAGE ENABLE,5@|ENABLE,6@
|
||||
ITEM "5|5. Conto d'ordine" MESSAGE CLEAR,5@|ENABLE,6@
|
||||
ITEM "6|6. C.ordine attivo" MESSAGE CLEAR,5@|ENABLE,6@
|
||||
ITEM "7|7. C.ordine passivo" MESSAGE CLEAR,5@|ENABLE,6@
|
||||
ITEM "9|9. Conto economico" MESSAGE ENABLE,5@|ENABLE,6@
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
GROUP 1 4
|
||||
END
|
||||
|
||||
STRING FLD_CM1_LETTIVD 1 1
|
||||
BEGIN
|
||||
PROMPT 56 7 ""
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->LETTIVD
|
||||
GROUP 1 5
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_LETTIVDH 1
|
||||
BEGIN
|
||||
PROMPT 56 7 ""
|
||||
FLAGS "HDU"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVD 8 4
|
||||
BEGIN
|
||||
PROMPT 60 7 ""
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->NUMRIVD
|
||||
GROUP 1 5
|
||||
FLAGS "MZ"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVDH 8 4
|
||||
BEGIN
|
||||
PROMPT 60 7 ""
|
||||
FLAGS "HDMZ"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMIVD 2
|
||||
BEGIN
|
||||
PROMPT 71 7 ""
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->NUMIVD
|
||||
FLAGS "RZ"
|
||||
GROUP 1 5
|
||||
USE %IVD
|
||||
INPUT CODTAB[1,1] FLD_CM1_SEZIVD
|
||||
INPUT CODTAB[2,2] FLD_CM1_LETTIVD
|
||||
INPUT CODTAB[3,6] FLD_CM1_NUMRIVD
|
||||
INPUT CODTAB[7,8] FLD_CM1_NUMIVD
|
||||
DISPLAY "Sezione" CODTAB[1,1]
|
||||
DISPLAY "Lettera" CODTAB[2,2]
|
||||
DISPLAY "Classe @M" CODTAB[3,6]
|
||||
DISPLAY "Numero" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@70" S0
|
||||
OUTPUT FLD_CM1_SEZIVD CODTAB[1,1]
|
||||
OUTPUT FLD_CM1_LETTIVD CODTAB[2,2]
|
||||
OUTPUT FLD_CM1_NUMRIVD CODTAB[3,6]
|
||||
OUTPUT FLD_CM1_NUMIVD CODTAB[7,8]
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice non presente"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMIVDH 2
|
||||
BEGIN
|
||||
PROMPT 71 7 ""
|
||||
FLAGS "HDRZ"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
LIST FLD_CM1_SEZIVDOPP 1 22
|
||||
BEGIN
|
||||
PROMPT 1 8 "Classe segno opposto "
|
||||
FIELD LF_PCON->SEZIVDOPP
|
||||
GROUP 1 2 4 6
|
||||
ITEM "0|0. Nessuna" MESSAGE CLEAR,7@
|
||||
ITEM "1|1. Attivita'" MESSAGE ENABLE,7@
|
||||
ITEM "2|2. Passivita'" MESSAGE ENABLE,7@
|
||||
ITEM "5|5. Conto d'ordine" MESSAGE CLEAR,7@
|
||||
ITEM "6|6. C.ordine attivo" MESSAGE CLEAR,7@
|
||||
ITEM "7|7. C.ordine passivo" MESSAGE CLEAR,7@
|
||||
ITEM "9|9. Conto economico" MESSAGE ENABLE,7@
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_LETTIVDOPP 1
|
||||
BEGIN
|
||||
PROMPT 56 8 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->LETTIVDOPP
|
||||
FLAGS "U"
|
||||
GROUP 1 2 4 7
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVDOPP 8 4
|
||||
BEGIN
|
||||
PROMPT 60 8 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->NUMRIVDOPP
|
||||
FLAGS "MZ"
|
||||
GROUP 1 2 4 7
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMIVDOPP 2
|
||||
BEGIN
|
||||
PROMPT 71 8 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->NUMIVDOPP
|
||||
FLAGS "RZ"
|
||||
GROUP 1 2 4 7
|
||||
COPY USE FLD_CM1_NUMIVD
|
||||
INPUT CODTAB[1,1] FLD_CM1_SEZIVDOPP
|
||||
INPUT CODTAB[2,2] FLD_CM1_LETTIVDOPP
|
||||
INPUT CODTAB[3,6] FLD_CM1_NUMRIVDOPP
|
||||
INPUT CODTAB[7,8] FLD_CM1_NUMIVDOPP
|
||||
COPY DISPLAY FLD_CM1_NUMIVD
|
||||
OUTPUT FLD_CM1_SEZIVDOPP CODTAB[1,1]
|
||||
OUTPUT FLD_CM1_LETTIVDOPP CODTAB[2,2]
|
||||
OUTPUT FLD_CM1_NUMRIVDOPP CODTAB[3,6]
|
||||
OUTPUT FLD_CM1_NUMIVDOPP CODTAB[7,8]
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice non presente"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_TIPOSPRIC 1 50
|
||||
BEGIN
|
||||
PROMPT 1 9 "Tipo Spesa/Ricavo "
|
||||
FIELD LF_PCON->TIPOSPRIC
|
||||
GROUP 1 2
|
||||
HELP "Specificare il tipo do conto"
|
||||
ITEM "0|0. Acquisti o vendite in genere"
|
||||
ITEM "1|1. Acquisti beni per rivendita"
|
||||
ITEM "2|2. Acquisti beni ammortizzabili"
|
||||
ITEM "3|3. Acquisti beni ammortizzabili con detr. 6%"
|
||||
ITEM "4|4. Vendita beni strumentali art. 17"
|
||||
ITEM "5|5. Beni per rivendita da non ventilare"
|
||||
ITEM "8|8. Altri beni strumentali acquistati in leasing"
|
||||
ITEM "9|9. Spese Generali"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_RICSER 1 18
|
||||
BEGIN
|
||||
PROMPT 1 10 "Ricavi per servizi "
|
||||
FIELD RICSER
|
||||
FLAGS "H"
|
||||
ITEM "0|Altre attivita'"
|
||||
ITEM "1|Servizi"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_TMCF 1 13
|
||||
BEGIN
|
||||
PROMPT 1 11 "Tipo sottoconti "
|
||||
FIELD LF_PCON->TMCF
|
||||
GROUP 1 3
|
||||
HELP "Tipo dei sottoconti (Normale o clienti/fornitori)"
|
||||
ITEM " |Normali"
|
||||
ITEM "C|Clienti"
|
||||
ITEM "F|Fornitori"
|
||||
END
|
||||
|
||||
LIST FLD_CM2_SEZSALDI 1 10
|
||||
BEGIN
|
||||
PROMPT 1 12 "Controllo saldo primanota "
|
||||
HELP "Tipo di controllo del saldo in prima nota"
|
||||
FIELD LF_PCON->SEZSALDI
|
||||
GROUP 1
|
||||
ITEM " |Nessuno"
|
||||
ITEM "A|Avere"
|
||||
ITEM "D|Dare"
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_STSOTTBIL
|
||||
BEGIN
|
||||
PROMPT 1 14 "Stampa dettaglio sottoconti su bilanci "
|
||||
HELP "Indicare se stampare il dettaglio dei sottoconti nei bilanci di verifica"
|
||||
FIELD LF_PCON->STSOTTBIL
|
||||
GROUP 1 3
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_COMPENS
|
||||
BEGIN
|
||||
PROMPT 50 14 "Compensazione saldi "
|
||||
HELP "Indicare se e' ammessa la compensazione dei saldi"
|
||||
FIELD LF_PCON->COMPENS
|
||||
GROUP 1 3
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_STSOTTAB
|
||||
BEGIN
|
||||
PROMPT 1 15 "Stampa dettaglio sottoconti su analisi "
|
||||
HELP "Indicare se stampare il dettaglio dei sottoconti nell'analisi di bilancio"
|
||||
FIELD LF_PCON->STSOTTAB
|
||||
GROUP 1 3
|
||||
MESSAGE COPY,FLD_CM2_STSOTTABS
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_STSOTTABS
|
||||
BEGIN
|
||||
PROMPT 1 15 "Stampa dettaglio movimenti su analisi "
|
||||
FIELD LF_PCON->STSOTTAB
|
||||
FLAGS "H"
|
||||
GROUP 1 2
|
||||
MESSAGE COPY,FLD_CM2_STSOTTAB
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_SOSPESO
|
||||
BEGIN
|
||||
PROMPT 50 15 "Conto sospeso"
|
||||
HELP "Indicare se sospendere il conto in prima nota"
|
||||
FIELD LF_PCON->SOSPESO
|
||||
GROUP 1 2
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
#include "cg0100.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Piano dei conti " 0 -1 0 19
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_GRUPPO 3
|
||||
BEGIN
|
||||
PROMPT 2 1 "Gruppo "
|
||||
HELP "Codice del gruppo"
|
||||
FIELD LF_PCON->GRUPPO
|
||||
FLAGS "R"
|
||||
KEY 1
|
||||
USE LF_PCON KEY 1 SELECT CONTO=""
|
||||
INPUT GRUPPO FLD_CM1_GRUPPO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
OUTPUT FLD_CM1_DESCG DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCG 50
|
||||
BEGIN
|
||||
PROMPT 23 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_CONTO 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Conto "
|
||||
HELP "Codice dell'eventuale conto"
|
||||
FIELD LF_PCON->CONTO
|
||||
FLAGS "R"
|
||||
KEY 1
|
||||
USE LF_PCON KEY 1 SELECT ((CONTO!="") && (SOTTOCONTO=""))
|
||||
COPY INPUT FLD_CM1_GRUPPO
|
||||
INPUT CONTO FLD_CM1_CONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
OUTPUT FLD_CM1_CONTO CONTO
|
||||
OUTPUT FLD_CM1_DESCC DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCC 50
|
||||
BEGIN
|
||||
PROMPT 23 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_SOTTOCONTO 6
|
||||
BEGIN
|
||||
PROMPT 2 3 "Sottoconto "
|
||||
HELP "Codice dell'eventuale sottoconto"
|
||||
FIELD LF_PCON->SOTTOCONTO
|
||||
FLAGS "R"
|
||||
KEY 1
|
||||
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||
COPY INPUT FLD_CM1_CONTO
|
||||
INPUT SOTTOCONTO FLD_CM1_SOTTOCONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Sospeso" SOSPESO
|
||||
DISPLAY "Descrizione@70" DESCR
|
||||
OUTPUT FLD_CM1_SOTTOCONTO SOTTOCONTO
|
||||
OUTPUT FLD_CM1_GRUPPO GRUPPO
|
||||
OUTPUT FLD_CM1_CONTO CONTO
|
||||
OUTPUT FLD_CM1_DESC DESCR
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESC 50
|
||||
BEGIN
|
||||
PROMPT 23 3 ""
|
||||
FIELD LF_PCON->DESCR
|
||||
KEY 2
|
||||
USE LF_PCON KEY 2
|
||||
INPUT DESCR FLD_CM1_DESC
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Sospeso" SOSPESO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto " SOTTOCONTO
|
||||
COPY OUTPUT FLD_CM1_SOTTOCONTO
|
||||
CHECKTYPE REQUIRED
|
||||
HELP "Descrizione del gruppo o del conto o del sottoconto"
|
||||
WARNING "Manca la descrizione"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_CODTABANALISI 10
|
||||
BEGIN
|
||||
PROMPT 1 5 "Codice Tabella Analisi "
|
||||
HELP "Codice di raggruppamento per l'analisi di bilancio"
|
||||
FIELD LF_PCON->CODCBL
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_CODANALISIH 10
|
||||
BEGIN
|
||||
PROMPT 1 5 "Codice Tabella Analisi "
|
||||
FLAGS "RHD"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_INDBIL 1 22
|
||||
BEGIN
|
||||
PROMPT 1 6 "Sezione di bilancio "
|
||||
FIELD LF_PCON->INDBIL
|
||||
GROUP 1 3
|
||||
HELP "Sezione di appartenenza del conto"
|
||||
ITEM "1|1. Attivita'"
|
||||
ITEM "2|2. Passivita'"
|
||||
ITEM "3|3. Costi"
|
||||
ITEM "4|4. Ricavi"
|
||||
ITEM "5|5. Conti d'ordine"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_SEZIVD 1 22
|
||||
BEGIN
|
||||
PROMPT 1 7 "Sez. e classe IV dir. "
|
||||
FIELD LF_PCON->SEZIVD
|
||||
ITEM "0|0. Nessuna" MESSAGE CLEAR,5@|CLEAR,6@
|
||||
ITEM "1|1. Attivita'" MESSAGE ENABLE,5@|ENABLE,6@
|
||||
ITEM "2|2. Passivita'" MESSAGE ENABLE,5@|ENABLE,6@
|
||||
ITEM "5|5. Conto d'ordine" MESSAGE CLEAR,5@|ENABLE,6@
|
||||
ITEM "6|6. C.ordine attivo" MESSAGE CLEAR,5@|ENABLE,6@
|
||||
ITEM "7|7. C.ordine passivo" MESSAGE CLEAR,5@|ENABLE,6@
|
||||
ITEM "9|9. Conto economico" MESSAGE ENABLE,5@|ENABLE,6@
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
GROUP 1 4
|
||||
END
|
||||
|
||||
STRING FLD_CM1_LETTIVD 1 1
|
||||
BEGIN
|
||||
PROMPT 56 7 ""
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->LETTIVD
|
||||
GROUP 1 5
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_LETTIVDH 1
|
||||
BEGIN
|
||||
PROMPT 56 7 ""
|
||||
FLAGS "HDU"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVD 8 4
|
||||
BEGIN
|
||||
PROMPT 60 7 ""
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->NUMRIVD
|
||||
GROUP 1 5
|
||||
FLAGS "MZ"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVDH 8 4
|
||||
BEGIN
|
||||
PROMPT 60 7 ""
|
||||
FLAGS "HDMZ"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMIVD 2
|
||||
BEGIN
|
||||
PROMPT 71 7 ""
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->NUMIVD
|
||||
FLAGS "RZ"
|
||||
GROUP 1 5
|
||||
USE %IVD
|
||||
INPUT CODTAB[1,1] FLD_CM1_SEZIVD
|
||||
INPUT CODTAB[2,2] FLD_CM1_LETTIVD
|
||||
INPUT CODTAB[3,6] FLD_CM1_NUMRIVD
|
||||
INPUT CODTAB[7,8] FLD_CM1_NUMIVD
|
||||
DISPLAY "Sezione" CODTAB[1,1]
|
||||
DISPLAY "Lettera" CODTAB[2,2]
|
||||
DISPLAY "Classe @M" CODTAB[3,6]
|
||||
DISPLAY "Numero" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@70" S0
|
||||
OUTPUT FLD_CM1_SEZIVD CODTAB[1,1]
|
||||
OUTPUT FLD_CM1_LETTIVD CODTAB[2,2]
|
||||
OUTPUT FLD_CM1_NUMRIVD CODTAB[3,6]
|
||||
OUTPUT FLD_CM1_NUMIVD CODTAB[7,8]
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice non presente"
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMIVDH 2
|
||||
BEGIN
|
||||
PROMPT 71 7 ""
|
||||
FLAGS "HDRZ"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
LIST FLD_CM1_SEZIVDOPP 1 22
|
||||
BEGIN
|
||||
PROMPT 1 8 "Classe segno opposto "
|
||||
FIELD LF_PCON->SEZIVDOPP
|
||||
GROUP 1 2 4 6
|
||||
ITEM "0|0. Nessuna" MESSAGE CLEAR,7@
|
||||
ITEM "1|1. Attivita'" MESSAGE ENABLE,7@
|
||||
ITEM "2|2. Passivita'" MESSAGE ENABLE,7@
|
||||
ITEM "5|5. Conto d'ordine" MESSAGE CLEAR,7@
|
||||
ITEM "6|6. C.ordine attivo" MESSAGE CLEAR,7@
|
||||
ITEM "7|7. C.ordine passivo" MESSAGE CLEAR,7@
|
||||
ITEM "9|9. Conto economico" MESSAGE ENABLE,7@
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_LETTIVDOPP 1
|
||||
BEGIN
|
||||
PROMPT 56 8 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->LETTIVDOPP
|
||||
FLAGS "U"
|
||||
GROUP 1 2 4 7
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVDOPP 8 4
|
||||
BEGIN
|
||||
PROMPT 60 8 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->NUMRIVDOPP
|
||||
FLAGS "MZ"
|
||||
GROUP 1 2 4 7
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMIVDOPP 2
|
||||
BEGIN
|
||||
PROMPT 71 8 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD LF_PCON->NUMIVDOPP
|
||||
FLAGS "RZ"
|
||||
GROUP 1 2 4 7
|
||||
COPY USE FLD_CM1_NUMIVD
|
||||
INPUT CODTAB[1,1] FLD_CM1_SEZIVDOPP
|
||||
INPUT CODTAB[2,2] FLD_CM1_LETTIVDOPP
|
||||
INPUT CODTAB[3,6] FLD_CM1_NUMRIVDOPP
|
||||
INPUT CODTAB[7,8] FLD_CM1_NUMIVDOPP
|
||||
COPY DISPLAY FLD_CM1_NUMIVD
|
||||
OUTPUT FLD_CM1_SEZIVDOPP CODTAB[1,1]
|
||||
OUTPUT FLD_CM1_LETTIVDOPP CODTAB[2,2]
|
||||
OUTPUT FLD_CM1_NUMRIVDOPP CODTAB[3,6]
|
||||
OUTPUT FLD_CM1_NUMIVDOPP CODTAB[7,8]
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice non presente"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_TIPOSPRIC 1 50
|
||||
BEGIN
|
||||
PROMPT 1 9 "Tipo Spesa/Ricavo "
|
||||
FIELD LF_PCON->TIPOSPRIC
|
||||
GROUP 1 2
|
||||
HELP "Specificare il tipo do conto"
|
||||
ITEM "0|0. Acquisti o vendite in genere"
|
||||
ITEM "1|1. Acquisti beni per rivendita"
|
||||
ITEM "2|2. Acquisti beni ammortizzabili"
|
||||
ITEM "3|3. Acquisti beni ammortizzabili con detr. 6%"
|
||||
ITEM "4|4. Vendita beni strumentali art. 17"
|
||||
ITEM "5|5. Beni per rivendita da non ventilare"
|
||||
ITEM "8|8. Altri beni strumentali acquistati in leasing"
|
||||
ITEM "9|9. Spese Generali"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_RICSER 1 18
|
||||
BEGIN
|
||||
PROMPT 1 10 "Ricavi per servizi "
|
||||
FIELD RICSER
|
||||
FLAGS "H"
|
||||
ITEM "0|Altre attivita'"
|
||||
ITEM "1|Servizi"
|
||||
END
|
||||
|
||||
LIST FLD_CM1_TMCF 1 13
|
||||
BEGIN
|
||||
PROMPT 1 11 "Tipo sottoconti "
|
||||
FIELD LF_PCON->TMCF
|
||||
GROUP 1 3
|
||||
HELP "Tipo dei sottoconti (Normale o clienti/fornitori)"
|
||||
ITEM " |Normali"
|
||||
ITEM "C|Clienti"
|
||||
ITEM "F|Fornitori"
|
||||
END
|
||||
|
||||
LIST FLD_CM2_SEZSALDI 1 10
|
||||
BEGIN
|
||||
PROMPT 1 12 "Controllo saldo primanota "
|
||||
HELP "Tipo di controllo del saldo in prima nota"
|
||||
FIELD LF_PCON->SEZSALDI
|
||||
GROUP 1
|
||||
ITEM " |Nessuno"
|
||||
ITEM "A|Avere"
|
||||
ITEM "D|Dare"
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_STSOTTBIL
|
||||
BEGIN
|
||||
PROMPT 1 14 "Stampa dettaglio sottoconti su bilanci "
|
||||
HELP "Indicare se stampare il dettaglio dei sottoconti nei bilanci di verifica"
|
||||
FIELD LF_PCON->STSOTTBIL
|
||||
GROUP 1 3
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_COMPENS
|
||||
BEGIN
|
||||
PROMPT 50 14 "Compensazione saldi "
|
||||
HELP "Indicare se e' ammessa la compensazione dei saldi"
|
||||
FIELD LF_PCON->COMPENS
|
||||
GROUP 1 3
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_STSOTTAB
|
||||
BEGIN
|
||||
PROMPT 1 15 "Stampa dettaglio sottoconti su analisi "
|
||||
HELP "Indicare se stampare il dettaglio dei sottoconti nell'analisi di bilancio"
|
||||
FIELD LF_PCON->STSOTTAB
|
||||
GROUP 1 3
|
||||
MESSAGE COPY,FLD_CM2_STSOTTABS
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_STSOTTABS
|
||||
BEGIN
|
||||
PROMPT 1 15 "Stampa dettaglio movimenti su analisi "
|
||||
FIELD LF_PCON->STSOTTAB
|
||||
FLAGS "H"
|
||||
GROUP 1 2
|
||||
MESSAGE COPY,FLD_CM2_STSOTTAB
|
||||
END
|
||||
|
||||
BOOLEAN FLD_CM2_SOSPESO
|
||||
BEGIN
|
||||
PROMPT 50 15 "Conto sospeso"
|
||||
HELP "Indicare se sospendere il conto in prima nota"
|
||||
FIELD LF_PCON->SOSPESO
|
||||
GROUP 1 2
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
311
cg/cg0200.h
311
cg/cg0200.h
@ -1,157 +1,154 @@
|
||||
#ifndef __CG0200_H
|
||||
#define __CG0200_H
|
||||
|
||||
//#define PZ_COMUNI 0
|
||||
|
||||
// posizione file comuni in _arrfiles
|
||||
#define TCLI "C"
|
||||
#define TFOR "F"
|
||||
|
||||
|
||||
|
||||
#define F_TIPOCF 101
|
||||
#define F_CODCF 102
|
||||
#define F_RAGSOC 103
|
||||
#define F_INDCF 104
|
||||
#define F_CIVCF 105
|
||||
#define F_STATOCF 106
|
||||
#define F_COMCF 107
|
||||
#define F_CAPCF 108
|
||||
#define F_COFI 109
|
||||
#define F_STATOPAIV 110
|
||||
#define F_PAIV 111
|
||||
#define F_TIPOPERS 112
|
||||
#define F_ALLEG 113
|
||||
#define F_GRUPPO 114
|
||||
#define F_CONTO 115
|
||||
#define F_DESCONTO 137
|
||||
#define F_GRUPPORIC 116
|
||||
#define F_CONTORIC 117
|
||||
#define F_SOTTOCRIC 118
|
||||
#define F_DESCRIC 138
|
||||
|
||||
#define F_TIPOAPER 119
|
||||
#define F_CODANAGPER 120
|
||||
#define F_PTEL 121
|
||||
#define F_TEL 122
|
||||
#define F_PFAX 123
|
||||
#define F_FAX 124
|
||||
#define F_PTELEX 125
|
||||
#define F_TELEX 126
|
||||
#define F_DATANASC 127
|
||||
#define F_STATONASC 128
|
||||
#define F_COMNASC 129
|
||||
#define F_DENCOMNASC 135
|
||||
#define F_CODSTAT 130
|
||||
#define F_CODPAG 131
|
||||
#define F_RAGSOC1 132
|
||||
#define F_CODABI 133
|
||||
#define F_CODBAN 134
|
||||
#define F_CODVAL 136
|
||||
#define F_FIDO 139
|
||||
#define F_LOCALITACF 144
|
||||
#define F_CODAG 145
|
||||
#define F_SOSPESO 146
|
||||
#define F_CODALLEG 148
|
||||
#define F_OCCASIONALE 149
|
||||
#define F_DENCOMCF 150
|
||||
#define F_PROVCF 152
|
||||
|
||||
#define F_RICALT 151
|
||||
#define F_PTEL2 153
|
||||
#define F_TEL2 154
|
||||
#define F_PTEL3 155
|
||||
#define F_TEL3 156
|
||||
#define F_CODLIN 157
|
||||
|
||||
#define F_TIPOCFVEN 158
|
||||
#define F_CODCFVEN 159
|
||||
#define F_CODINDDOC 160
|
||||
#define F_CODNOTE 161
|
||||
#define F_CODLEG 162
|
||||
#define F_CODCATC 163
|
||||
#define F_CODZONA 164
|
||||
#define F_PROVV 165
|
||||
#define F_LIQPAG 166
|
||||
#define F_CODPRCF 167
|
||||
#define F_CODINDSP 168
|
||||
#define F_CODPORTO 169
|
||||
#define F_RAGGDOC 170
|
||||
#define F_NCOPIE 171
|
||||
#define F_CODCFASS 172
|
||||
#define F_ASSFIS 173
|
||||
#define F_FATTSOSP 174
|
||||
#define F_VSNRPROT 175
|
||||
#define F_VSDATAREG 176
|
||||
#define F_NSNRPROT 177
|
||||
#define F_NSDATAREG 178
|
||||
#define F_ADDBNS1500 179
|
||||
#define F_CATFIN 180
|
||||
#define F_CODABIPR 181
|
||||
#define F_CODBANPR 182
|
||||
#define F_CODINDEFF 183
|
||||
#define F_EMEFFRICH 184
|
||||
#define F_CODNOTESP1 185
|
||||
#define F_CODNOTESP2 186
|
||||
#define F_CODSPMEZZO 187
|
||||
#define F_IMPMINEFF 188
|
||||
#define F_NONACCEFF 189
|
||||
#define F_NONSCADEFF 190
|
||||
#define F_ADDBOLLIRB 191
|
||||
#define F_ADDBOLLITR 192
|
||||
#define F_ADDSPINC 193
|
||||
#define F_IVARID 194
|
||||
#define F_GESTCONTR 195
|
||||
#define F_CATVEN 196
|
||||
#define F_CODLIST 197
|
||||
#define F_CODSCINC 198
|
||||
#define F_SCONTOCL 199
|
||||
#define F_CODMAG 200
|
||||
#define F_CODSP1 201
|
||||
#define F_CODSP2 202
|
||||
#define F_CODSP3 203
|
||||
#define F_CODSP4 204
|
||||
#define F_PROFSOLL 205
|
||||
#define F_MAXSOLL 206
|
||||
#define F_DATAESC 207
|
||||
#define F_DATASOLL 208
|
||||
#define F_SCONTOR 209
|
||||
#define F_TITOLO 210
|
||||
#define F_RAGGOR 211
|
||||
#define F_MINORD 212
|
||||
#define F_MAXORD 213
|
||||
#define F_PREVORD 214
|
||||
#define F_TIPOEVORD 215
|
||||
#define F_SHEET_G_VEN 216
|
||||
#define F_CODVETT1 217
|
||||
#define F_CODVETT2 218
|
||||
#define F_CODVETT3 219
|
||||
#define F_RAGSOCALLEG 220
|
||||
#define F_CODCASS 221
|
||||
#define F_CODFASS 222
|
||||
#define F_TEMP 223
|
||||
|
||||
#define DLG_RIC 300
|
||||
#define DLG_CST 301
|
||||
#define F_RAGSOCA 302
|
||||
|
||||
|
||||
//////////////////////////////////////
|
||||
// Identificatori per cg0200b.uml //
|
||||
//////////////////////////////////////
|
||||
#define F_RAGSOCI 101
|
||||
#define F_INDIRI 102
|
||||
#define F_CIVI 103
|
||||
#define F_LOCALI 104
|
||||
#define F_CAPI 105
|
||||
#define F_STATOI 106
|
||||
#define F_COMI 107
|
||||
#define F_PTELI 108
|
||||
#define F_TELI 109
|
||||
#define F_PFAXI 110
|
||||
#define F_FAXI 111
|
||||
#define F_IVARIDI 112
|
||||
#define F_CODINDI 113
|
||||
#define F_DENCOMI 114
|
||||
|
||||
#endif // __CG0200_H
|
||||
#ifndef __CG0200_H
|
||||
#define __CG0200_H
|
||||
|
||||
#define TCLI "C"
|
||||
#define TFOR "F"
|
||||
|
||||
#define F_TIPOCF 101
|
||||
#define F_CODCF 102
|
||||
#define F_RAGSOC 103
|
||||
#define F_INDCF 104
|
||||
#define F_CIVCF 105
|
||||
#define F_STATOCF 106
|
||||
#define F_COMCF 107
|
||||
#define F_CAPCF 108
|
||||
#define F_COFI 109
|
||||
#define F_STATOPAIV 110
|
||||
#define F_PAIV 111
|
||||
#define F_TIPOPERS 112
|
||||
#define F_ALLEG 113
|
||||
#define F_GRUPPO 114
|
||||
#define F_CONTO 115
|
||||
#define F_DESCONTO 137
|
||||
#define F_GRUPPORIC 116
|
||||
#define F_CONTORIC 117
|
||||
#define F_SOTTOCRIC 118
|
||||
#define F_DESCRIC 138
|
||||
|
||||
#define F_TIPOAPER 119
|
||||
#define F_CODANAGPER 120
|
||||
#define F_PTEL 121
|
||||
#define F_TEL 122
|
||||
#define F_PFAX 123
|
||||
#define F_FAX 124
|
||||
#define F_PTELEX 125
|
||||
#define F_TELEX 126
|
||||
#define F_DATANASC 127
|
||||
#define F_STATONASC 128
|
||||
#define F_COMNASC 129
|
||||
#define F_DENCOMNASC 135
|
||||
#define F_CODSTAT 130
|
||||
#define F_CODPAG 131
|
||||
#define F_RAGSOC1 132
|
||||
#define F_CODABI 133
|
||||
#define F_CODBAN 134
|
||||
#define F_DESBAN 140
|
||||
#define F_CODVAL 136
|
||||
#define F_FIDO 139
|
||||
#define F_LOCALITACF 144
|
||||
#define F_CODAG 145
|
||||
#define F_SOSPESO 146
|
||||
#define F_CODALLEG 148
|
||||
#define F_OCCASIONALE 149
|
||||
#define F_DENCOMCF 150
|
||||
#define F_PROVCF 152
|
||||
|
||||
#define F_RICALT 151
|
||||
#define F_PTEL2 153
|
||||
#define F_TEL2 154
|
||||
#define F_PTEL3 155
|
||||
#define F_TEL3 156
|
||||
#define F_CODLIN 157
|
||||
|
||||
#define F_TIPOCFVEN 158
|
||||
#define F_CODCFVEN 159
|
||||
#define F_CODINDDOC 160
|
||||
#define F_CODNOTE 161
|
||||
#define F_CODLEG 162
|
||||
#define F_CODCATC 163
|
||||
#define F_CODZONA 164
|
||||
#define F_PROVV 165
|
||||
#define F_LIQPAG 166
|
||||
#define F_CODPRCF 167
|
||||
#define F_CODINDSP 168
|
||||
#define F_CODPORTO 169
|
||||
#define F_RAGGDOC 170
|
||||
#define F_NCOPIE 171
|
||||
#define F_CODCFASS 172
|
||||
#define F_ASSFIS 173
|
||||
#define F_FATTSOSP 174
|
||||
#define F_VSNRPROT 175
|
||||
#define F_VSDATAREG 176
|
||||
#define F_NSNRPROT 177
|
||||
#define F_NSDATAREG 178
|
||||
#define F_ADDBNS1500 179
|
||||
#define F_CATFIN 180
|
||||
#define F_CODABIPR 181
|
||||
#define F_CODBANPR 182
|
||||
#define F_CODINDEFF 183
|
||||
#define F_EMEFFRICH 184
|
||||
#define F_CODNOTESP1 185
|
||||
#define F_CODNOTESP2 186
|
||||
#define F_CODSPMEZZO 187
|
||||
#define F_IMPMINEFF 188
|
||||
#define F_NONACCEFF 189
|
||||
#define F_NONSCADEFF 190
|
||||
#define F_ADDBOLLIRB 191
|
||||
#define F_ADDBOLLITR 192
|
||||
#define F_ADDSPINC 193
|
||||
#define F_IVARID 194
|
||||
#define F_GESTCONTR 195
|
||||
#define F_CATVEN 196
|
||||
#define F_CODLIST 197
|
||||
#define F_CODSCINC 198
|
||||
#define F_SCONTOCL 199
|
||||
#define F_CODMAG 200
|
||||
#define F_CODSP1 201
|
||||
#define F_CODSP2 202
|
||||
#define F_CODSP3 203
|
||||
#define F_CODSP4 204
|
||||
#define F_PROFSOLL 205
|
||||
#define F_MAXSOLL 206
|
||||
#define F_DATAESC 207
|
||||
#define F_DATASOLL 208
|
||||
#define F_SCONTOR 209
|
||||
#define F_TITOLO 210
|
||||
#define F_RAGGOR 211
|
||||
#define F_MINORD 212
|
||||
#define F_MAXORD 213
|
||||
#define F_PREVORD 214
|
||||
#define F_TIPOEVORD 215
|
||||
#define F_SHEET_G_VEN 216
|
||||
#define F_CODVETT1 217
|
||||
#define F_CODVETT2 218
|
||||
#define F_CODVETT3 219
|
||||
#define F_RAGSOCALLEG 220
|
||||
#define F_CODCASS 221
|
||||
#define F_CODFASS 222
|
||||
#define F_TEMP 223
|
||||
#define F_DESTACF 224
|
||||
|
||||
#define DLG_RIC 300
|
||||
#define DLG_CST 301
|
||||
#define F_RAGSOCA 302
|
||||
|
||||
|
||||
//////////////////////////////////////
|
||||
// Identificatori per cg0200b.uml //
|
||||
//////////////////////////////////////
|
||||
#define F_RAGSOCI 101
|
||||
#define F_INDIRI 102
|
||||
#define F_CIVI 103
|
||||
#define F_LOCALI 104
|
||||
#define F_CAPI 105
|
||||
#define F_STATOI 106
|
||||
#define F_COMI 107
|
||||
#define F_PTELI 108
|
||||
#define F_TELI 109
|
||||
#define F_PFAXI 110
|
||||
#define F_FAXI 111
|
||||
#define F_IVARIDI 112
|
||||
#define F_CODINDI 113
|
||||
#define F_DENCOMI 114
|
||||
|
||||
#endif // __CG0200_H
|
||||
|
66
cg/cg1.url
66
cg/cg1.url
@ -1,33 +1,33 @@
|
||||
#include <default.url>
|
||||
|
||||
|
||||
MENU TASK_MENUBAR
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
|
||||
MENUBAR MENU_BAR(1)
|
||||
|
||||
MENU MENU_BAR(1)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
|
||||
MENUBAR MENU_BAR(3)
|
||||
|
||||
MENU MENU_BAR(3)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
MENUBAR MENU_BAR(4)
|
||||
|
||||
MENU MENU_BAR(4)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
MENUBAR MENU_BAR(5)
|
||||
|
||||
MENU MENU_BAR(5)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
MENUBAR MENU_BAR(6)
|
||||
|
||||
MENU MENU_BAR(6)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
#include <default.url>
|
||||
|
||||
|
||||
MENU TASK_MENUBAR
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
|
||||
MENUBAR MENU_BAR(1)
|
||||
|
||||
MENU MENU_BAR(1)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
|
||||
MENUBAR MENU_BAR(3)
|
||||
|
||||
MENU MENU_BAR(3)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
MENUBAR MENU_BAR(4)
|
||||
|
||||
MENU MENU_BAR(4)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
MENUBAR MENU_BAR(5)
|
||||
|
||||
MENU MENU_BAR(5)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
MENUBAR MENU_BAR(6)
|
||||
|
||||
MENU MENU_BAR(6)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include <checks.h>
|
||||
|
||||
int cg1300(int argc, char* argv[])
|
||||
{
|
||||
error_box("Applicazione ancora da sviluppare");
|
||||
return 1;
|
||||
}
|
||||
#include <checks.h>
|
||||
|
||||
int cg1300(int argc, char* argv[])
|
||||
{
|
||||
error_box("Applicazione ancora da sviluppare");
|
||||
return 1;
|
||||
}
|
||||
|
1902
cg/cg2100.cpp
1902
cg/cg2100.cpp
File diff suppressed because it is too large
Load Diff
660
cg/cg2101.cpp
660
cg/cg2101.cpp
@ -1,330 +1,330 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <xvtmacro.h>
|
||||
#include <applicat.h>
|
||||
#include <tabutil.h>
|
||||
|
||||
#include "cg2101.h"
|
||||
#include "cg2103.h"
|
||||
|
||||
#include <mov.h>
|
||||
#include <rmov.h>
|
||||
#include <rmoviva.h>
|
||||
|
||||
|
||||
// Calcola l'anno di esercizio di una data
|
||||
// Certified 99%
|
||||
int date2esc(const TDate& d, int* prevesc)
|
||||
{
|
||||
if (prevesc) *prevesc = 0;
|
||||
TTable esc("ESC");
|
||||
for (int err = esc.first(); err == NOERR; err = esc.next())
|
||||
{
|
||||
const TDate ia(esc.get("D0")); // Data inizio esercizio
|
||||
const TDate fa(esc.get("D1")); // Data fine esercizio
|
||||
TString16 sanno(esc.get("CODTAB")); sanno.cut(4);
|
||||
const int anno = atoi(sanno);
|
||||
if (d >= ia && d <= fa)
|
||||
return anno;
|
||||
if (prevesc) *prevesc = anno;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Movimento di prima nota
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TMovimentoPN::TMovimentoPN()
|
||||
: TRelation(LF_MOV), _oldcg(0), _oldiva(0)
|
||||
{
|
||||
add(LF_RMOV, "NUMREG=NUMREG");
|
||||
add(LF_RMOVIVA, "NUMREG=NUMREG");
|
||||
}
|
||||
|
||||
void TMovimentoPN::destroy_rows()
|
||||
{
|
||||
_cg.destroy();
|
||||
_iva.destroy();
|
||||
}
|
||||
|
||||
|
||||
TRectype& TMovimentoPN::cg(int i)
|
||||
{
|
||||
TRectype* r = (TRectype*)_cg.objptr(i);
|
||||
if (r == NULL)
|
||||
{
|
||||
r = new TRectype(LF_RMOV);
|
||||
_cg.add(r, i);
|
||||
}
|
||||
return *r;
|
||||
}
|
||||
|
||||
TRectype& TMovimentoPN::iva(int i)
|
||||
{
|
||||
TRectype* r = (TRectype*)_iva.objptr(i);
|
||||
if (r == NULL)
|
||||
{
|
||||
r = new TRectype(LF_RMOVIVA);
|
||||
_iva.add(r, i);
|
||||
}
|
||||
return *r;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::read_mov_rows()
|
||||
{
|
||||
const TLocalisamfile& rm = lfile(LF_RMOV);
|
||||
const TLocalisamfile& ri = lfile(LF_RMOVIVA);
|
||||
position_rels();
|
||||
|
||||
destroy_rows();
|
||||
for(bool ok = is_first_match(LF_RMOV); ok; ok = next_match(LF_RMOV))
|
||||
{
|
||||
const int row = rm.get_int(RMV_NUMRIG) - 1;
|
||||
cg(row) = rm.curr();
|
||||
}
|
||||
_oldcg = cg_items();
|
||||
|
||||
for(ok = is_first_match(LF_RMOVIVA); ok; ok = next_match(LF_RMOVIVA))
|
||||
{
|
||||
const int row = ri.get_int(RMI_NUMRIG) - 1;
|
||||
iva(row) = ri.curr();
|
||||
}
|
||||
_oldiva = iva_items();
|
||||
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::read(TIsamop op, TReclock lockop, TDate& atdate)
|
||||
{
|
||||
int err = file().read(op, lockop, atdate);
|
||||
if (err == NOERR)
|
||||
{
|
||||
_olddate = file().get("DATAREG");
|
||||
err = read_mov_rows();
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::write_rec(bool re, const TRectype& rec, TLocalisamfile& f)
|
||||
{
|
||||
const bool scrivi = re ? (f.rewrite(rec) != NOERR) : TRUE;
|
||||
if (scrivi)
|
||||
f.write(rec);
|
||||
|
||||
#ifdef TRC
|
||||
const long numreg = rec.get_long("NUMREG");
|
||||
const int numrig = f.num() == LF_MOV ? 0 : rec.get_int("NUMRIG");
|
||||
TRACE("write file=%d record=%ld nummov=%ld numrig=%d status=%d",
|
||||
f.num(), f.recno(), numreg, numrig, f.status());
|
||||
#endif
|
||||
|
||||
return f.status();
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::cancella(TLocalisamfile& f, int da, int a)
|
||||
{
|
||||
const long numreg = lfile().get_long(MOV_NUMREG);
|
||||
for (int i = da; i <= a; i++)
|
||||
{
|
||||
f.put(MOV_NUMREG, numreg);
|
||||
f.put(RMV_NUMRIG, i);
|
||||
if (f.read(_isequal, _lock) == NOERR)
|
||||
f.remove();
|
||||
}
|
||||
return f.status();
|
||||
}
|
||||
|
||||
char TMovimentoPN::frequenza_versamenti(int year) const
|
||||
{
|
||||
static int last_year = 0;
|
||||
static char last_freq = ' ';
|
||||
|
||||
if (year != last_year)
|
||||
{
|
||||
TString16 key;
|
||||
key << year;
|
||||
TTable lia("LIA");
|
||||
lia.setkey(1);
|
||||
lia.put("CODTAB", key);
|
||||
if (lia.read() != NOERR)
|
||||
{
|
||||
TLocalisamfile nditte(LF_NDITTE);
|
||||
nditte.setkey(1);
|
||||
nditte.put("CODDITTA", main_app().get_firm());
|
||||
nditte.read();
|
||||
last_freq = nditte.get_char("FREQVIVA");
|
||||
}
|
||||
else
|
||||
last_freq = lia.get_char("S7");
|
||||
CHECK(last_freq == 'M' || last_freq == 'T', "Frequenza versamenti IVA assurda");
|
||||
}
|
||||
|
||||
return last_freq;
|
||||
}
|
||||
|
||||
int TMovimentoPN::date2liq(const TDate& data) const
|
||||
{
|
||||
const int anno = data.year();
|
||||
int mese = data.month();
|
||||
if (frequenza_versamenti(anno) == 'T')
|
||||
mese += 2 - ((mese-1) % 3);
|
||||
return mese;
|
||||
}
|
||||
|
||||
|
||||
bool TMovimentoPN::controlla_liquidazione(const TDate& data, bool reset) const
|
||||
{
|
||||
bool calcolata = FALSE;
|
||||
|
||||
const int anno = data.year();
|
||||
const int mese = date2liq(data);
|
||||
|
||||
// Chiave di LIM: Anno (1-4), Mese (5-6)
|
||||
TString16 key;
|
||||
key << anno << mese;
|
||||
TTable lim("LIM");
|
||||
lim.setkey(1);
|
||||
lim.put("CODTAB", key);
|
||||
if (lim.read() == NOERR)
|
||||
calcolata = lim.get_bool("B1"); // Controlla se calcolata in definitivo
|
||||
|
||||
if (reset && lim.get_bool("B0"))
|
||||
{
|
||||
// Resetta i flag di calcolato sulla liquidazione IVA del mese di registrazione
|
||||
lim.put("B0", FALSE); // calcolato
|
||||
lim.put("B1", FALSE); // definitivo
|
||||
lim.rewrite();
|
||||
}
|
||||
|
||||
return calcolata;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::registra(bool re, bool force)
|
||||
{
|
||||
TLocalisamfile& m = lfile();
|
||||
|
||||
const int err = write_rec(re, m.curr(), m);
|
||||
if (err != NOERR) return err;
|
||||
|
||||
TLocalisamfile& rm = lfile(LF_RMOV);
|
||||
TLocalisamfile& ri = lfile(LF_RMOVIVA);
|
||||
|
||||
const long numreg = m.get_long("NUMREG");
|
||||
|
||||
for (int i = 0 ; i < cg_items(); i++)
|
||||
{
|
||||
if (!re) cg(i).put("NUMREG", numreg);
|
||||
const int err = write_rec(re, cg(i), rm);
|
||||
if (!force && err != NOERR) return err;
|
||||
}
|
||||
if (i < _oldcg)
|
||||
cancella(rm, i+1, _oldcg);
|
||||
_oldcg = cg_items();
|
||||
|
||||
|
||||
const int annoiva = m.get_int("ANNOIVA");
|
||||
const TString16 reg(m.get("REG"));
|
||||
TRegistro registro(reg, annoiva);
|
||||
const bool att_mista = reg.empty() ? FALSE : registro.attivita_mista();
|
||||
|
||||
for (i = 0 ; i < iva_items(); i++)
|
||||
{
|
||||
TRectype& r = iva(i);
|
||||
|
||||
if (!re) r.put("NUMREG", numreg); // Force correct number
|
||||
|
||||
int tipoatt = 1;
|
||||
if (att_mista)
|
||||
{
|
||||
const char tipo = r.get_char("TIPOC");
|
||||
if (tipo <= ' ')
|
||||
{
|
||||
TBill c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO"));
|
||||
tipoatt = c.tipo_att();
|
||||
}
|
||||
}
|
||||
r.put("TIPOATT", tipoatt);
|
||||
|
||||
const int err = write_rec(re, r, ri);
|
||||
if (!force && err != NOERR) return err;
|
||||
}
|
||||
|
||||
if (i < _oldiva)
|
||||
cancella(ri, i+1, _oldiva);
|
||||
_oldiva = iva_items();
|
||||
|
||||
// Aggiorna data registrazione e protocollo IVA sul registro
|
||||
const TDate datareg(m.get("DATAREG"));
|
||||
if (reg.not_empty())
|
||||
{
|
||||
const long protiva = m.get_long("PROTIVA");
|
||||
const long uprotiva = m.get_long("UPROTIVA");
|
||||
registro.update(max(protiva, uprotiva), datareg);
|
||||
}
|
||||
|
||||
// Aggiorna flags di ricalcolo liquidazione
|
||||
|
||||
controlla_liquidazione(datareg, TRUE);
|
||||
if (re && datareg != _olddate)
|
||||
controlla_liquidazione(_olddate, TRUE);
|
||||
|
||||
const int att = att_mista ? 2 : 1;
|
||||
// Chiave di PLM: Anno (1-4), Cod. Att. (5-9), Tipo att. (10-10), Mese (11-12)
|
||||
TTable plm("PLM");
|
||||
plm.setkey(1);
|
||||
for (int a = 1; a <= att; a++)
|
||||
{
|
||||
TString16 chiave;
|
||||
chiave << annoiva << registro.attivita() << a << date2liq(datareg);
|
||||
plm.put("CODTAB", chiave);
|
||||
if (plm.read() == NOERR)
|
||||
{
|
||||
const bool calcolato = plm.get_bool("B0");
|
||||
if (calcolato)
|
||||
{
|
||||
plm.put("B0", FALSE);
|
||||
plm.rewrite();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::write(bool force, TDate&)
|
||||
{
|
||||
const TRectype& r = lfile().curr();
|
||||
|
||||
_oldcg = _oldiva = 0;
|
||||
int err = registra(FALSE, force);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::rewrite(bool force, TDate&)
|
||||
{
|
||||
return registra(TRUE, force);
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::remove(TDate&)
|
||||
{
|
||||
TLocalisamfile& m = lfile();
|
||||
TLocalisamfile& rm = lfile(LF_RMOV);
|
||||
TLocalisamfile& ri = lfile(LF_RMOVIVA);
|
||||
|
||||
cancella(rm, 1, _oldcg);
|
||||
cancella(ri, 1, _oldiva);
|
||||
m.remove();
|
||||
_oldcg = _oldiva = 0;
|
||||
return m.status();
|
||||
}
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <xvtmacro.h>
|
||||
#include <applicat.h>
|
||||
#include <tabutil.h>
|
||||
|
||||
#include "cg2101.h"
|
||||
#include "cg2103.h"
|
||||
|
||||
#include <mov.h>
|
||||
#include <rmov.h>
|
||||
#include <rmoviva.h>
|
||||
|
||||
|
||||
// Calcola l'anno di esercizio di una data
|
||||
// Certified 99%
|
||||
int date2esc(const TDate& d, int* prevesc)
|
||||
{
|
||||
if (prevesc) *prevesc = 0;
|
||||
TTable esc("ESC");
|
||||
for (int err = esc.first(); err == NOERR; err = esc.next())
|
||||
{
|
||||
const TDate ia(esc.get("D0")); // Data inizio esercizio
|
||||
const TDate fa(esc.get("D1")); // Data fine esercizio
|
||||
TString16 sanno(esc.get("CODTAB")); sanno.cut(4);
|
||||
const int anno = atoi(sanno);
|
||||
if (d >= ia && d <= fa)
|
||||
return anno;
|
||||
if (prevesc) *prevesc = anno;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Movimento di prima nota
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TMovimentoPN::TMovimentoPN()
|
||||
: TRelation(LF_MOV), _oldcg(0), _oldiva(0)
|
||||
{
|
||||
add(LF_RMOV, "NUMREG=NUMREG");
|
||||
add(LF_RMOVIVA, "NUMREG=NUMREG");
|
||||
}
|
||||
|
||||
void TMovimentoPN::destroy_rows()
|
||||
{
|
||||
_cg.destroy();
|
||||
_iva.destroy();
|
||||
}
|
||||
|
||||
|
||||
TRectype& TMovimentoPN::cg(int i)
|
||||
{
|
||||
TRectype* r = (TRectype*)_cg.objptr(i);
|
||||
if (r == NULL)
|
||||
{
|
||||
r = new TRectype(LF_RMOV);
|
||||
_cg.add(r, i);
|
||||
}
|
||||
return *r;
|
||||
}
|
||||
|
||||
TRectype& TMovimentoPN::iva(int i)
|
||||
{
|
||||
TRectype* r = (TRectype*)_iva.objptr(i);
|
||||
if (r == NULL)
|
||||
{
|
||||
r = new TRectype(LF_RMOVIVA);
|
||||
_iva.add(r, i);
|
||||
}
|
||||
return *r;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::read_mov_rows()
|
||||
{
|
||||
const TLocalisamfile& rm = lfile(LF_RMOV);
|
||||
const TLocalisamfile& ri = lfile(LF_RMOVIVA);
|
||||
position_rels();
|
||||
|
||||
destroy_rows();
|
||||
for(bool ok = is_first_match(LF_RMOV); ok; ok = next_match(LF_RMOV))
|
||||
{
|
||||
const int row = rm.get_int(RMV_NUMRIG) - 1;
|
||||
cg(row) = rm.curr();
|
||||
}
|
||||
_oldcg = cg_items();
|
||||
|
||||
for(ok = is_first_match(LF_RMOVIVA); ok; ok = next_match(LF_RMOVIVA))
|
||||
{
|
||||
const int row = ri.get_int(RMI_NUMRIG) - 1;
|
||||
iva(row) = ri.curr();
|
||||
}
|
||||
_oldiva = iva_items();
|
||||
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::read(TIsamop op, TReclock lockop, TDate& atdate)
|
||||
{
|
||||
int err = file().read(op, lockop, atdate);
|
||||
if (err == NOERR)
|
||||
{
|
||||
_olddate = file().get("DATAREG");
|
||||
err = read_mov_rows();
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::write_rec(bool re, const TRectype& rec, TLocalisamfile& f)
|
||||
{
|
||||
const bool scrivi = re ? (f.rewrite(rec) != NOERR) : TRUE;
|
||||
if (scrivi)
|
||||
f.write(rec);
|
||||
|
||||
#ifdef TRC
|
||||
const long numreg = rec.get_long("NUMREG");
|
||||
const int numrig = f.num() == LF_MOV ? 0 : rec.get_int("NUMRIG");
|
||||
TRACE("write file=%d record=%ld nummov=%ld numrig=%d status=%d",
|
||||
f.num(), f.recno(), numreg, numrig, f.status());
|
||||
#endif
|
||||
|
||||
return f.status();
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::cancella(TLocalisamfile& f, int da, int a)
|
||||
{
|
||||
const long numreg = lfile().get_long(MOV_NUMREG);
|
||||
for (int i = da; i <= a; i++)
|
||||
{
|
||||
f.put(MOV_NUMREG, numreg);
|
||||
f.put(RMV_NUMRIG, i);
|
||||
if (f.read(_isequal, _lock) == NOERR)
|
||||
f.remove();
|
||||
}
|
||||
return f.status();
|
||||
}
|
||||
|
||||
char TMovimentoPN::frequenza_versamenti(int year) const
|
||||
{
|
||||
static int last_year = 0;
|
||||
static char last_freq = ' ';
|
||||
|
||||
if (year != last_year)
|
||||
{
|
||||
TString16 key;
|
||||
key << year;
|
||||
TTable lia("LIA");
|
||||
lia.setkey(1);
|
||||
lia.put("CODTAB", key);
|
||||
if (lia.read() != NOERR)
|
||||
{
|
||||
TLocalisamfile nditte(LF_NDITTE);
|
||||
nditte.setkey(1);
|
||||
nditte.put("CODDITTA", main_app().get_firm());
|
||||
nditte.read();
|
||||
last_freq = nditte.get_char("FREQVIVA");
|
||||
}
|
||||
else
|
||||
last_freq = lia.get_char("S7");
|
||||
CHECK(last_freq == 'M' || last_freq == 'T', "Frequenza versamenti IVA assurda");
|
||||
}
|
||||
|
||||
return last_freq;
|
||||
}
|
||||
|
||||
int TMovimentoPN::date2liq(const TDate& data) const
|
||||
{
|
||||
const int anno = data.year();
|
||||
int mese = data.month();
|
||||
if (frequenza_versamenti(anno) == 'T')
|
||||
mese += 2 - ((mese-1) % 3);
|
||||
return mese;
|
||||
}
|
||||
|
||||
|
||||
bool TMovimentoPN::controlla_liquidazione(const TDate& data, bool reset) const
|
||||
{
|
||||
bool calcolata = FALSE;
|
||||
|
||||
const int anno = data.year();
|
||||
const int mese = date2liq(data);
|
||||
|
||||
// Chiave di LIM: Anno (1-4), Mese (5-6)
|
||||
TString16 key;
|
||||
key << anno << mese;
|
||||
TTable lim("LIM");
|
||||
lim.setkey(1);
|
||||
lim.put("CODTAB", key);
|
||||
if (lim.read() == NOERR)
|
||||
calcolata = lim.get_bool("B1"); // Controlla se calcolata in definitivo
|
||||
|
||||
if (reset && lim.get_bool("B0"))
|
||||
{
|
||||
// Resetta i flag di calcolato sulla liquidazione IVA del mese di registrazione
|
||||
lim.put("B0", FALSE); // calcolato
|
||||
lim.put("B1", FALSE); // definitivo
|
||||
lim.rewrite();
|
||||
}
|
||||
|
||||
return calcolata;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::registra(bool re, bool force)
|
||||
{
|
||||
TLocalisamfile& m = lfile();
|
||||
|
||||
const int err = write_rec(re, m.curr(), m);
|
||||
if (err != NOERR) return err;
|
||||
|
||||
TLocalisamfile& rm = lfile(LF_RMOV);
|
||||
TLocalisamfile& ri = lfile(LF_RMOVIVA);
|
||||
|
||||
const long numreg = m.get_long("NUMREG");
|
||||
|
||||
for (int i = 0 ; i < cg_items(); i++)
|
||||
{
|
||||
if (!re) cg(i).put("NUMREG", numreg);
|
||||
const int err = write_rec(re, cg(i), rm);
|
||||
if (!force && err != NOERR) return err;
|
||||
}
|
||||
if (i < _oldcg)
|
||||
cancella(rm, i+1, _oldcg);
|
||||
_oldcg = cg_items();
|
||||
|
||||
|
||||
const int annoiva = m.get_int("ANNOIVA");
|
||||
const TString16 reg(m.get("REG"));
|
||||
TRegistro registro(reg, annoiva);
|
||||
const bool att_mista = reg.empty() ? FALSE : registro.attivita_mista();
|
||||
|
||||
for (i = 0 ; i < iva_items(); i++)
|
||||
{
|
||||
TRectype& r = iva(i);
|
||||
|
||||
if (!re) r.put("NUMREG", numreg); // Force correct number
|
||||
|
||||
int tipoatt = 1;
|
||||
if (att_mista)
|
||||
{
|
||||
const char tipo = r.get_char("TIPOC");
|
||||
if (tipo <= ' ')
|
||||
{
|
||||
TBill c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO"));
|
||||
tipoatt = c.tipo_att();
|
||||
}
|
||||
}
|
||||
r.put("TIPOATT", tipoatt);
|
||||
|
||||
const int err = write_rec(re, r, ri);
|
||||
if (!force && err != NOERR) return err;
|
||||
}
|
||||
|
||||
if (i < _oldiva)
|
||||
cancella(ri, i+1, _oldiva);
|
||||
_oldiva = iva_items();
|
||||
|
||||
// Aggiorna data registrazione e protocollo IVA sul registro
|
||||
const TDate datareg(m.get("DATAREG"));
|
||||
if (reg.not_empty())
|
||||
{
|
||||
const long protiva = m.get_long("PROTIVA");
|
||||
const long uprotiva = m.get_long("UPROTIVA");
|
||||
registro.update(max(protiva, uprotiva), datareg);
|
||||
}
|
||||
|
||||
// Aggiorna flags di ricalcolo liquidazione
|
||||
|
||||
controlla_liquidazione(datareg, TRUE);
|
||||
if (re && datareg != _olddate)
|
||||
controlla_liquidazione(_olddate, TRUE);
|
||||
|
||||
const int att = att_mista ? 2 : 1;
|
||||
// Chiave di PLM: Anno (1-4), Cod. Att. (5-9), Tipo att. (10-10), Mese (11-12)
|
||||
TTable plm("PLM");
|
||||
plm.setkey(1);
|
||||
for (int a = 1; a <= att; a++)
|
||||
{
|
||||
TString16 chiave;
|
||||
chiave << annoiva << registro.attivita() << a << date2liq(datareg);
|
||||
plm.put("CODTAB", chiave);
|
||||
if (plm.read() == NOERR)
|
||||
{
|
||||
const bool calcolato = plm.get_bool("B0");
|
||||
if (calcolato)
|
||||
{
|
||||
plm.put("B0", FALSE);
|
||||
plm.rewrite();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::write(bool force, TDate&)
|
||||
{
|
||||
const TRectype& r = lfile().curr();
|
||||
|
||||
_oldcg = _oldiva = 0;
|
||||
int err = registra(FALSE, force);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::rewrite(bool force, TDate&)
|
||||
{
|
||||
return registra(TRUE, force);
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::remove(TDate&)
|
||||
{
|
||||
TLocalisamfile& m = lfile();
|
||||
TLocalisamfile& rm = lfile(LF_RMOV);
|
||||
TLocalisamfile& ri = lfile(LF_RMOVIVA);
|
||||
|
||||
cancella(rm, 1, _oldcg);
|
||||
cancella(ri, 1, _oldiva);
|
||||
m.remove();
|
||||
_oldcg = _oldiva = 0;
|
||||
return m.status();
|
||||
}
|
||||
|
||||
|
534
cg/cg21iva.uml
534
cg/cg21iva.uml
@ -1,267 +1,267 @@
|
||||
PAGE "RIGA IVA" -1 -1 78 13
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "@BImposta"
|
||||
END
|
||||
|
||||
STRING 102 4
|
||||
BEGIN
|
||||
PROMPT 2 2 "IVA "
|
||||
HELP "Codice IVA della riga"
|
||||
FLAGS "U"
|
||||
USE %IVA
|
||||
INPUT CODTAB 102
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "%@6" R0
|
||||
DISPLAY "Tipo" S1
|
||||
OUTPUT 102 CODTAB
|
||||
OUTPUT 211 S0
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice IVA assente"
|
||||
VALIDATE ZEROFILL_FUNC 2
|
||||
END
|
||||
|
||||
STRING 211 58
|
||||
BEGIN
|
||||
PROMPT 16 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER 103 1
|
||||
BEGIN
|
||||
PROMPT 2 3 "Detraibilita' "
|
||||
HELP "Indicare il tipo di detraibilita' della riga"
|
||||
SHEET "Codice|Tipo detraibilita'@75"
|
||||
INPUT 103
|
||||
ITEM " |Regime normale"
|
||||
ITEM "1|IVA indetraibile su acquisti riferiti a ricavi esenti"
|
||||
ITEM "3|IVA indicata per passaggi interni al solo fine del calcolo di ventilazione"
|
||||
ITEM "9|IVA non detraibile per l'articolo 19"
|
||||
OUTPUT 103
|
||||
OUTPUT 130
|
||||
END
|
||||
|
||||
STRING 130 75 52
|
||||
BEGIN
|
||||
PROMPT 22 3 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER 101 15
|
||||
BEGIN
|
||||
PROMPT 2 4 "Imponibile "
|
||||
HELP "Importo imponibile"
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
NUMBER 104 15
|
||||
BEGIN
|
||||
PROMPT 48 4 "Imposta "
|
||||
HELP "Importo dell'IVA. Se e' nullo, col tasto F8 si puo' effettuare lo scorporo"
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 6 "@BConto"
|
||||
END
|
||||
|
||||
LIST 106 1 12
|
||||
BEGIN
|
||||
PROMPT 2 7 "Tipo "
|
||||
HELP "Tipo del conto"
|
||||
FIELD TMCF
|
||||
ITEM " |Conto"
|
||||
MESSAGE SHOW,109|HIDE,209|HIDE,309|SHOW,110|HIDE,210|HIDE,310
|
||||
ITEM "C|Cliente"
|
||||
MESSAGE SHOW,209|HIDE,109|HIDE,309|SHOW,210|HIDE,110|HIDE,310
|
||||
ITEM "F|Fornitore"
|
||||
MESSAGE SHOW,309|HIDE,109|HIDE,209|SHOW,310|HIDE,110|HIDE,210
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
NUMBER 107 3
|
||||
BEGIN
|
||||
PROMPT 22 7 "Gruppo "
|
||||
HELP "Codice del gruppo"
|
||||
FIELD GRUPPO
|
||||
END
|
||||
|
||||
NUMBER 108 3
|
||||
BEGIN
|
||||
PROMPT 38 7 "Conto "
|
||||
HELP "Codice del conto"
|
||||
FIELD CONTO
|
||||
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="")
|
||||
INPUT GRUPPO 107
|
||||
INPUT CONTO 108
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Tipo" TMCF
|
||||
OUTPUT 106 TMCF
|
||||
OUTPUT 107 GRUPPO
|
||||
OUTPUT 108 CONTO
|
||||
OUTPUT 110 DESCR
|
||||
ADD RUN cg0 -0
|
||||
MESSAGE DIRTY,109|DIRTY,209|DIRTY,309
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Conto assente"
|
||||
END
|
||||
|
||||
|
||||
NUMBER 109 6
|
||||
BEGIN
|
||||
PROMPT 55 7 "Sottoconto "
|
||||
HELP "Codice del sottoconto"
|
||||
FIELD SOTTOCONTO
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
INPUT GRUPPO 107
|
||||
INPUT CONTO 108
|
||||
INPUT SOTTOCONTO 109
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "C/R" TIPOSPRIC
|
||||
OUTPUT 109 SOTTOCONTO
|
||||
OUTPUT 107 GRUPPO
|
||||
OUTPUT 108 CONTO
|
||||
OUTPUT 110 DESCR
|
||||
ADD RUN cg0 -0
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE REQIF_FUNC 1 101
|
||||
WARNING "Sottoconto assente"
|
||||
END
|
||||
|
||||
|
||||
NUMBER 209 6
|
||||
BEGIN
|
||||
PROMPT 55 7 "Cliente "
|
||||
HELP "Codice del cliente"
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "C"
|
||||
INPUT CODCF 209
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
OUTPUT 209 CODCF
|
||||
OUTPUT 210 RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -1
|
||||
MESSAGE COPY,109
|
||||
VALIDATE REQIF_FUNC 1 101
|
||||
WARNING "Cliente assente"
|
||||
END
|
||||
|
||||
NUMBER 309 6
|
||||
BEGIN
|
||||
PROMPT 55 7 "Fornitore "
|
||||
HELP "Codice del fornitore"
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF 309
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
|
||||
OUTPUT 107 GRUPPO
|
||||
OUTPUT 108 CONTO
|
||||
OUTPUT 309 CODCF
|
||||
OUTPUT 310 RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -1
|
||||
MESSAGE COPY,109
|
||||
VALIDATE REQIF_FUNC 1 101
|
||||
WARNING "Fornitore assente"
|
||||
END
|
||||
|
||||
STRING 110 50
|
||||
BEGIN
|
||||
PROMPT 2 8 "Descrizione "
|
||||
HELP "Descrizione del conto"
|
||||
FIELD LF_PCON->DESCR
|
||||
USE LF_PCON KEY 2
|
||||
INPUT DESCR 110
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT 109
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -0
|
||||
END
|
||||
|
||||
STRING 210 50
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cliente "
|
||||
HELP "Ragione sociale del cliente"
|
||||
FIELD LF_CLIFO->RAGSOC
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC 210
|
||||
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT 209
|
||||
MESSAGE COPY,110
|
||||
ADD RUN cg0 -1
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING 310 50
|
||||
BEGIN
|
||||
PROMPT 2 8 "Fornitore "
|
||||
HELP "Ragione sociale del forntore"
|
||||
FIELD LF_PCON->SOTTOCONTO
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC 310
|
||||
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT 309
|
||||
MESSAGE COPY,110
|
||||
ADD RUN cg0 -1
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
LIST 105 1 53
|
||||
BEGIN
|
||||
PROMPT 2 9 "Tipo Costo/Ricavo "
|
||||
ITEM " |0. Acquisti o vendite in genere"
|
||||
ITEM "1|1. Acquisti beni per rivendita"
|
||||
ITEM "2|2. Acquisti beni ammortizzabili"
|
||||
ITEM "3|3. Acquisti beni ammortizzabili con detr. 6%"
|
||||
ITEM "4|4. Vendita beni strumentali art. 17"
|
||||
ITEM "5|5. Beni per rivendita da non ventilare"
|
||||
ITEM "8|8. Altri beni strumentali acquistati in leasing"
|
||||
ITEM "9|9. Spese generali"
|
||||
FLAGS "D"
|
||||
HELP "Tipo Costo/Ricavo del conto"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 9 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 9 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 "Elimina"
|
||||
MESSAGE EXIT,K_DEL
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
PAGE "RIGA IVA" -1 -1 78 13
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "@BImposta"
|
||||
END
|
||||
|
||||
STRING 102 4
|
||||
BEGIN
|
||||
PROMPT 2 2 "IVA "
|
||||
HELP "Codice IVA della riga"
|
||||
FLAGS "U"
|
||||
USE %IVA
|
||||
INPUT CODTAB 102
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "%@6" R0
|
||||
DISPLAY "Tipo" S1
|
||||
OUTPUT 102 CODTAB
|
||||
OUTPUT 211 S0
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice IVA assente"
|
||||
VALIDATE ZEROFILL_FUNC 2
|
||||
END
|
||||
|
||||
STRING 211 58
|
||||
BEGIN
|
||||
PROMPT 16 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER 103 1
|
||||
BEGIN
|
||||
PROMPT 2 3 "Detraibilita' "
|
||||
HELP "Indicare il tipo di detraibilita' della riga"
|
||||
SHEET "Codice|Tipo detraibilita'@75"
|
||||
INPUT 103
|
||||
ITEM " |Regime normale"
|
||||
ITEM "1|IVA indetraibile su acquisti riferiti a ricavi esenti"
|
||||
ITEM "3|IVA indicata per passaggi interni al solo fine del calcolo di ventilazione"
|
||||
ITEM "9|IVA non detraibile per l'articolo 19"
|
||||
OUTPUT 103
|
||||
OUTPUT 130
|
||||
END
|
||||
|
||||
STRING 130 75 52
|
||||
BEGIN
|
||||
PROMPT 22 3 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER 101 15
|
||||
BEGIN
|
||||
PROMPT 2 4 "Imponibile "
|
||||
HELP "Importo imponibile"
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
NUMBER 104 15
|
||||
BEGIN
|
||||
PROMPT 48 4 "Imposta "
|
||||
HELP "Importo dell'IVA. Se e' nullo, col tasto F8 si puo' effettuare lo scorporo"
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 6 "@BConto"
|
||||
END
|
||||
|
||||
LIST 106 1 12
|
||||
BEGIN
|
||||
PROMPT 2 7 "Tipo "
|
||||
HELP "Tipo del conto"
|
||||
FIELD TMCF
|
||||
ITEM " |Conto"
|
||||
MESSAGE SHOW,109|HIDE,209|HIDE,309|SHOW,110|HIDE,210|HIDE,310
|
||||
ITEM "C|Cliente"
|
||||
MESSAGE SHOW,209|HIDE,109|HIDE,309|SHOW,210|HIDE,110|HIDE,310
|
||||
ITEM "F|Fornitore"
|
||||
MESSAGE SHOW,309|HIDE,109|HIDE,209|SHOW,310|HIDE,110|HIDE,210
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
NUMBER 107 3
|
||||
BEGIN
|
||||
PROMPT 22 7 "Gruppo "
|
||||
HELP "Codice del gruppo"
|
||||
FIELD GRUPPO
|
||||
END
|
||||
|
||||
NUMBER 108 3
|
||||
BEGIN
|
||||
PROMPT 38 7 "Conto "
|
||||
HELP "Codice del conto"
|
||||
FIELD CONTO
|
||||
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="")
|
||||
INPUT GRUPPO 107
|
||||
INPUT CONTO 108
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Tipo" TMCF
|
||||
OUTPUT 106 TMCF
|
||||
OUTPUT 107 GRUPPO
|
||||
OUTPUT 108 CONTO
|
||||
OUTPUT 110 DESCR
|
||||
ADD RUN cg0 -0
|
||||
MESSAGE DIRTY,109|DIRTY,209|DIRTY,309
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Conto assente"
|
||||
END
|
||||
|
||||
|
||||
NUMBER 109 6
|
||||
BEGIN
|
||||
PROMPT 55 7 "Sottoconto "
|
||||
HELP "Codice del sottoconto"
|
||||
FIELD SOTTOCONTO
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
INPUT GRUPPO 107
|
||||
INPUT CONTO 108
|
||||
INPUT SOTTOCONTO 109
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "C/R" TIPOSPRIC
|
||||
OUTPUT 109 SOTTOCONTO
|
||||
OUTPUT 107 GRUPPO
|
||||
OUTPUT 108 CONTO
|
||||
OUTPUT 110 DESCR
|
||||
ADD RUN cg0 -0
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE REQIF_FUNC 1 101
|
||||
WARNING "Sottoconto assente"
|
||||
END
|
||||
|
||||
|
||||
NUMBER 209 6
|
||||
BEGIN
|
||||
PROMPT 55 7 "Cliente "
|
||||
HELP "Codice del cliente"
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "C"
|
||||
INPUT CODCF 209
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
OUTPUT 209 CODCF
|
||||
OUTPUT 210 RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -1
|
||||
MESSAGE COPY,109
|
||||
VALIDATE REQIF_FUNC 1 101
|
||||
WARNING "Cliente assente"
|
||||
END
|
||||
|
||||
NUMBER 309 6
|
||||
BEGIN
|
||||
PROMPT 55 7 "Fornitore "
|
||||
HELP "Codice del fornitore"
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF 309
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
|
||||
OUTPUT 107 GRUPPO
|
||||
OUTPUT 108 CONTO
|
||||
OUTPUT 309 CODCF
|
||||
OUTPUT 310 RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -1
|
||||
MESSAGE COPY,109
|
||||
VALIDATE REQIF_FUNC 1 101
|
||||
WARNING "Fornitore assente"
|
||||
END
|
||||
|
||||
STRING 110 50
|
||||
BEGIN
|
||||
PROMPT 2 8 "Descrizione "
|
||||
HELP "Descrizione del conto"
|
||||
FIELD LF_PCON->DESCR
|
||||
USE LF_PCON KEY 2
|
||||
INPUT DESCR 110
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT 109
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -0
|
||||
END
|
||||
|
||||
STRING 210 50
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cliente "
|
||||
HELP "Ragione sociale del cliente"
|
||||
FIELD LF_CLIFO->RAGSOC
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC 210
|
||||
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT 209
|
||||
MESSAGE COPY,110
|
||||
ADD RUN cg0 -1
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING 310 50
|
||||
BEGIN
|
||||
PROMPT 2 8 "Fornitore "
|
||||
HELP "Ragione sociale del forntore"
|
||||
FIELD LF_PCON->SOTTOCONTO
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC 310
|
||||
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT 309
|
||||
MESSAGE COPY,110
|
||||
ADD RUN cg0 -1
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
LIST 105 1 53
|
||||
BEGIN
|
||||
PROMPT 2 9 "Tipo Costo/Ricavo "
|
||||
ITEM " |0. Acquisti o vendite in genere"
|
||||
ITEM "1|1. Acquisti beni per rivendita"
|
||||
ITEM "2|2. Acquisti beni ammortizzabili"
|
||||
ITEM "3|3. Acquisti beni ammortizzabili con detr. 6%"
|
||||
ITEM "4|4. Vendita beni strumentali art. 17"
|
||||
ITEM "5|5. Beni per rivendita da non ventilare"
|
||||
ITEM "8|8. Altri beni strumentali acquistati in leasing"
|
||||
ITEM "9|9. Spese generali"
|
||||
FLAGS "D"
|
||||
HELP "Tipo Costo/Ricavo del conto"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 9 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 9 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 "Elimina"
|
||||
MESSAGE EXIT,K_DEL
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
846
cg/cg4100.cpp
846
cg/cg4100.cpp
@ -1,423 +1,423 @@
|
||||
// Rinumerazione movimenti e saldi
|
||||
// fv 12/12/93
|
||||
// -------------------------------------------------------------------------
|
||||
// *TBI* Partenza dall'ultimo movimento stampato
|
||||
// *TBI* Aggiornamento scadenziario
|
||||
// *TBI* Aggiornamento cespiti
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <applicat.h>
|
||||
#include <isam.h>
|
||||
#include <mask.h>
|
||||
#include <progind.h>
|
||||
#include <sort.h>
|
||||
#include <urldefid.h>
|
||||
#include <utility.h>
|
||||
|
||||
#define FLD_CG41_YEAR 100
|
||||
#define MAX_CNT 300
|
||||
|
||||
#include <mov.h>
|
||||
#include <rmov.h>
|
||||
#include <rmoviva.h>
|
||||
#include <saldi.h>
|
||||
#include <causali.h>
|
||||
|
||||
#include "cglib.h"
|
||||
|
||||
struct therec {
|
||||
char DATAREG[9];
|
||||
char REG[4];
|
||||
char DATADOC[9];
|
||||
char NUMPROT[9];
|
||||
char ANNOES[5];
|
||||
char NUMREG[8];
|
||||
};
|
||||
|
||||
class CG4100_App : public TApplication
|
||||
{
|
||||
TString _year;
|
||||
char _optype;
|
||||
TMask* _msk;
|
||||
|
||||
public:
|
||||
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
|
||||
bool set_parms();
|
||||
virtual bool menu(MENU_TAG m);
|
||||
|
||||
void restore_mov(TSystemisamfile& a, TSystemisamfile& b, TSystemisamfile& c);
|
||||
void sort_all();
|
||||
bool sort_mov();
|
||||
bool sort_sal();
|
||||
|
||||
CG4100_App() : TApplication(), _year(4), _optype('S') {}
|
||||
virtual ~CG4100_App() {}
|
||||
};
|
||||
|
||||
|
||||
bool CG4100_App::create()
|
||||
{
|
||||
TApplication::create();
|
||||
|
||||
// UNIX: signal() per intercettare errori
|
||||
#if XVT_OS == XVT_OS_SCOUNIX
|
||||
signal(SIGINT,SIG_IGN);
|
||||
#endif
|
||||
|
||||
if (fexist("__sal__.sav"))
|
||||
warning_box("Un'operazione di riordino saldi si e' conclusa"
|
||||
" impropriamente. Si raccomanda di rieseguirla");
|
||||
|
||||
if (fexist("__mov__.sav"))
|
||||
warning_box("Un'operazione di riordino movimenti si e' conclusa"
|
||||
" impropriamente. Si raccomanda di rieseguirla");
|
||||
|
||||
if (argc() > 2)
|
||||
_optype = toupper(argv(2)[0]);
|
||||
|
||||
_msk = new TMask(_optype == 'S' ? "cg4100b" : "cg4100a");
|
||||
|
||||
dispatch_e_menu(MENU_ITEM(1));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool CG4100_App::destroy()
|
||||
{
|
||||
// UNIX: resettare i segnali
|
||||
#if XVT_OS == XVT_OS_SCOUNIX
|
||||
signal(SIGINT,SIG_DFL);
|
||||
#endif
|
||||
delete _msk;
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
bool CG4100_App::set_parms()
|
||||
{
|
||||
_msk->run();
|
||||
|
||||
if (_optype == 'S')
|
||||
_year = _msk->get(FLD_CG41_YEAR);
|
||||
else
|
||||
_year = 0;
|
||||
|
||||
return _msk->last_key() == K_ENTER;
|
||||
}
|
||||
|
||||
|
||||
bool CG4100_App::menu(MENU_TAG)
|
||||
{
|
||||
if (_optype == 'S')
|
||||
sort_sal();
|
||||
else
|
||||
sort_mov();
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
void CG4100_App::restore_mov(TSystemisamfile& mov, TSystemisamfile& rmov,
|
||||
TSystemisamfile& rmoviva)
|
||||
{
|
||||
long rn, rec;
|
||||
if (fexist("__mov__.ind"))
|
||||
{
|
||||
// rebuild all indexes
|
||||
mov.close(); rmov.close(); rmoviva.close();
|
||||
mov.packfile(); rmov.packfile(); rmoviva.packfile();
|
||||
mov.packindex(); rmov.packindex(); rmoviva.packindex();
|
||||
remove("__mov__.ind");
|
||||
return;
|
||||
}
|
||||
|
||||
FILE* fp = fopen("__mov__.sav","r");
|
||||
if (feof(fp))
|
||||
{
|
||||
warning_box("File di ripristino vuoto; il ripristino non e' necessario");
|
||||
remove("__mov__.sav");
|
||||
return;
|
||||
};
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (feof(fp)) break;
|
||||
fscanf(fp,"%ld %ld", &rn, &rec);
|
||||
|
||||
mov.readat(rec);
|
||||
mov.put(MOV_NUMREG,rn);
|
||||
mov.rewrite();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (feof(fp)) break;
|
||||
fscanf(fp,"%ld",&rec);
|
||||
if (rec == -1l) break;
|
||||
rmov.readat(rec);
|
||||
rmov.put(RMV_NUMREG,rn);
|
||||
rmov.rewrite();
|
||||
}
|
||||
for (;;)
|
||||
{
|
||||
if (feof(fp)) break;
|
||||
fscanf(fp,"%ld",&rec);
|
||||
if (rec == -1l) break;
|
||||
rmoviva.readat(rec);
|
||||
rmoviva.put(RMI_NUMREG,rn);
|
||||
rmoviva.rewrite();
|
||||
}
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
remove("__mov__.sav");
|
||||
}
|
||||
|
||||
|
||||
bool CG4100_App::sort_mov()
|
||||
{
|
||||
if (!set_parms())
|
||||
return FALSE;
|
||||
|
||||
TSystemisamfile mov(LF_MOV);
|
||||
TSystemisamfile rmov(LF_RMOV);
|
||||
TSystemisamfile rmoviva(LF_RMOVIVA);
|
||||
|
||||
if (mov.open(_excllock) || rmov.open(_excllock) ||
|
||||
rmoviva.open(_excllock))
|
||||
{
|
||||
warning_box("Gli archivi sono in uso. Operazione interrotta");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
mov.indexoff(); rmov.indexoff(); rmoviva.indexoff();
|
||||
mov.first();
|
||||
|
||||
TSort sort(sizeof(struct therec));
|
||||
|
||||
if (fexist("__mov__.sav") || fexist("__mov__.ind"))
|
||||
{
|
||||
// previous operation failed
|
||||
if (yesno_box("Un riordinamento precedente e' fallito.\n"
|
||||
" Ripristino la situazione iniziale ora?" ))
|
||||
restore_mov(mov, rmov, rmoviva);
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
therec rbuf;
|
||||
|
||||
sort.addsortkey(rbuf.DATAREG - (char*)&rbuf, 8);
|
||||
sort.addsortkey(rbuf.REG - (char*)&rbuf, 3);
|
||||
sort.addsortkey(rbuf.NUMPROT - (char*)&rbuf, 8);
|
||||
sort.addsortkey(rbuf.DATADOC - (char*)&rbuf, 8);
|
||||
sort.addsortkey(rbuf.NUMREG - (char*)&rbuf, 7);
|
||||
|
||||
sort.init();
|
||||
|
||||
TProgind prnd(mov.items(),
|
||||
"Riordino archivio movimenti in corso\nOrdinamento file movimenti...",
|
||||
FALSE,TRUE,30);
|
||||
TString16 s;
|
||||
|
||||
while (!mov.eof())
|
||||
{
|
||||
do_events();
|
||||
TDate d(mov.get(MOV_DATAREG));
|
||||
strcpy(rbuf.DATAREG, d.string(ANSI));
|
||||
strcpy(rbuf.REG, mov.get(MOV_REG));
|
||||
d = mov.get(MOV_DATADOC);
|
||||
s = mov.get(MOV_PROTIVA);
|
||||
if (s.len() > 0 && isdigit(s[s.len() - 1])) s << " ";
|
||||
s.right_just(8);
|
||||
strcpy(rbuf.NUMPROT, (const char *) s);
|
||||
strcpy(rbuf.DATADOC, d.string(ANSI));
|
||||
strcpy(rbuf.ANNOES, mov.get(MOV_ANNOES));
|
||||
strcpy(rbuf.NUMREG, mov.get(MOV_NUMREG));
|
||||
|
||||
sort.sort((char*)&rbuf);
|
||||
mov.next();
|
||||
prnd.addstatus(1);
|
||||
}
|
||||
sort.endsort();
|
||||
|
||||
prnd.setstatus(0);
|
||||
prnd.set_text("Riordino archivio movimenti in corso\nRiscrittura file movimenti...");
|
||||
|
||||
therec* rr;
|
||||
long num = 1;
|
||||
TRecnotype recno;
|
||||
|
||||
while ((rr = (therec*)sort.retrieve()) != NULL)
|
||||
{
|
||||
do_events();
|
||||
if (atol(rr->NUMREG) != num)
|
||||
{
|
||||
// find record
|
||||
mov.curr().zero();
|
||||
mov.put(MOV_NUMREG, rr->NUMREG);
|
||||
|
||||
mov.read();
|
||||
// should never happen
|
||||
CHECK(mov.good(), "Archivio movimenti inconsistente. Questo si' che e' un casino.");
|
||||
|
||||
// retrieve and change NUMREG
|
||||
recno = mov.recno();
|
||||
TString rgn = rr->NUMREG;
|
||||
FILE* fsav = fopen("__mov__.sav","a");
|
||||
fprintf(fsav,"%s %d ", (const char*)rgn, recno);
|
||||
fclose(fsav);
|
||||
|
||||
mov.put(MOV_NUMREG,num);
|
||||
mov.rewriteat(recno);
|
||||
// update linked records
|
||||
|
||||
rmov.curr().zero();
|
||||
rmov.put(RMV_NUMREG,rgn);
|
||||
rmov.read(_isgteq);
|
||||
|
||||
int row = 0;
|
||||
|
||||
while (!rmov.eof() && rgn == rmov.get(RMV_NUMREG) &&
|
||||
row++ < rmov.get_int(RMV_NUMRIG))
|
||||
{
|
||||
recno = rmov.recno();
|
||||
fsav = fopen("__mov__.sav","a");
|
||||
fprintf(fsav,"%ld ", recno);
|
||||
fclose(fsav);
|
||||
rmov.put(RMV_NUMREG,num);
|
||||
rmov.rewriteat(recno);
|
||||
rmov.next();
|
||||
}
|
||||
fsav = fopen("__mov__.sav","a");
|
||||
fprintf(fsav,"-1"); fclose(fsav);
|
||||
|
||||
rmoviva.zero();
|
||||
rmoviva.put(RMI_NUMREG,rgn);
|
||||
rmoviva.read(_isgteq);
|
||||
|
||||
row = 0;
|
||||
|
||||
while (!rmoviva.eof() && rgn == rmoviva.get(RMV_NUMREG) &&
|
||||
row++ < rmoviva.get_int(RMV_NUMRIG))
|
||||
{
|
||||
recno = rmoviva.recno();
|
||||
fsav = fopen("__mov__.sav","a");
|
||||
fprintf(fsav,"%ld ", recno);
|
||||
fclose(fsav);
|
||||
rmoviva.put(RMI_NUMREG,num);
|
||||
rmoviva.rewriteat(recno);
|
||||
rmoviva.next();
|
||||
}
|
||||
fsav = fopen("__mov__.sav","a");
|
||||
fprintf(fsav,"-1"); fclose(fsav);
|
||||
}
|
||||
num++;
|
||||
prnd.addstatus(1);
|
||||
}
|
||||
|
||||
remove("__mov__.sav");
|
||||
|
||||
FILE* fsav = fopen("__mov__.ind","w"); fclose(fsav);
|
||||
|
||||
prnd.set_text("Riordino archivio movimenti in corso\nRicostruzione files indice...");
|
||||
|
||||
// rebuild indexes
|
||||
mov.close(); rmov.close(); rmoviva.close();
|
||||
mov.indexon(); rmov.indexon(); rmoviva.indexon();
|
||||
mov.packfile(); rmov.packfile(); rmoviva.packfile();
|
||||
mov.packindex(); rmov.packindex(); rmoviva.packindex();
|
||||
|
||||
remove("__mov__.ind");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
bool CG4100_App::sort_sal()
|
||||
{
|
||||
|
||||
if (!set_parms())
|
||||
return FALSE;
|
||||
|
||||
FILE* fp = fopen ("__sal__.sav","w");
|
||||
fclose(fp);
|
||||
|
||||
TLocalisamfile rmov(LF_RMOV);
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
TLocalisamfile causali(LF_CAUSALI);
|
||||
TSaldo_agg sal;
|
||||
int gruppo, conto;
|
||||
const int year = atoi(_year);
|
||||
long oldnumreg = 0L, sottoconto;
|
||||
TProgind prnd(rmov.items(),
|
||||
"Riordino archivio saldi in corso\nLettura archivio movimenti...",
|
||||
FALSE,TRUE,30);
|
||||
|
||||
causali.zero();
|
||||
mov.setkey(1);
|
||||
rmov.first();
|
||||
sal.reset();
|
||||
sal.set_anno_es(year);
|
||||
sal.clear_saldi(year);
|
||||
while (!rmov.eof())
|
||||
{
|
||||
if (_year == rmov.get(RMV_ANNOES))
|
||||
{
|
||||
const long numreg = rmov.get_long(RMV_NUMREG);
|
||||
|
||||
gruppo = rmov.get_int(RMV_GRUPPO);
|
||||
conto = rmov.get_int(RMV_CONTO);
|
||||
sottoconto = rmov.get_long(RMV_SOTTOCONTO);
|
||||
if (numreg != oldnumreg)
|
||||
{
|
||||
oldnumreg = numreg;
|
||||
mov.zero();
|
||||
mov.put(MOV_NUMREG, numreg);
|
||||
mov.read();
|
||||
CHECK(mov.good(),"Archivi movimenti e righe inconsistenti");
|
||||
|
||||
const char* codcaus = mov.get(MOV_CODCAUS);
|
||||
|
||||
// cerca causale
|
||||
causali.zero();
|
||||
if (*codcaus)
|
||||
{
|
||||
causali.put(CAU_CODCAUS, codcaus);
|
||||
causali.read();
|
||||
CHECK(causali.good(),"Archivi causali e movimenti inconsistenti");
|
||||
}
|
||||
}
|
||||
const char sezione = rmov.get(RMV_SEZIONE)[0];
|
||||
real importo(rmov.get(RMV_IMPORTO));
|
||||
|
||||
sal.set_movap(causali.get(CAU_MOVAP) == "A");
|
||||
sal.set_movprovv(mov.get(MOV_PROVVIS).not_empty());
|
||||
sal.aggiorna(gruppo, conto, sottoconto, importo, sezione);
|
||||
if (sal.items() > MAX_CNT)
|
||||
{
|
||||
sal.registra();
|
||||
sal.reset();
|
||||
sal.set_anno_es(atoi(_year));
|
||||
}
|
||||
}
|
||||
rmov.next();
|
||||
prnd.addstatus(1);
|
||||
do_events();
|
||||
}
|
||||
if (sal.items() > 0)
|
||||
sal.registra();
|
||||
remove("__sal__.sav");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
int cg4100(int argc, char* argv[])
|
||||
{
|
||||
CG4100_App main_app;
|
||||
main_app.run(argc, argv, "Ricalcolo Saldi");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Rinumerazione movimenti e saldi
|
||||
// fv 12/12/93
|
||||
// -------------------------------------------------------------------------
|
||||
// *TBI* Partenza dall'ultimo movimento stampato
|
||||
// *TBI* Aggiornamento scadenziario
|
||||
// *TBI* Aggiornamento cespiti
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <applicat.h>
|
||||
#include <isam.h>
|
||||
#include <mask.h>
|
||||
#include <progind.h>
|
||||
#include <sort.h>
|
||||
#include <urldefid.h>
|
||||
#include <utility.h>
|
||||
|
||||
#define FLD_CG41_YEAR 100
|
||||
#define MAX_CNT 300
|
||||
|
||||
#include <mov.h>
|
||||
#include <rmov.h>
|
||||
#include <rmoviva.h>
|
||||
#include <saldi.h>
|
||||
#include <causali.h>
|
||||
|
||||
#include "cglib.h"
|
||||
|
||||
struct therec {
|
||||
char DATAREG[9];
|
||||
char REG[4];
|
||||
char DATADOC[9];
|
||||
char NUMPROT[9];
|
||||
char ANNOES[5];
|
||||
char NUMREG[8];
|
||||
};
|
||||
|
||||
class CG4100_App : public TApplication
|
||||
{
|
||||
TString _year;
|
||||
char _optype;
|
||||
TMask* _msk;
|
||||
|
||||
public:
|
||||
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
|
||||
bool set_parms();
|
||||
virtual bool menu(MENU_TAG m);
|
||||
|
||||
void restore_mov(TSystemisamfile& a, TSystemisamfile& b, TSystemisamfile& c);
|
||||
void sort_all();
|
||||
bool sort_mov();
|
||||
bool sort_sal();
|
||||
|
||||
CG4100_App() : TApplication(), _year(4), _optype('S') {}
|
||||
virtual ~CG4100_App() {}
|
||||
};
|
||||
|
||||
|
||||
bool CG4100_App::create()
|
||||
{
|
||||
TApplication::create();
|
||||
|
||||
// UNIX: signal() per intercettare errori
|
||||
#if XVT_OS == XVT_OS_SCOUNIX
|
||||
signal(SIGINT,SIG_IGN);
|
||||
#endif
|
||||
|
||||
if (fexist("__sal__.sav"))
|
||||
warning_box("Un'operazione di riordino saldi si e' conclusa"
|
||||
" impropriamente. Si raccomanda di rieseguirla");
|
||||
|
||||
if (fexist("__mov__.sav"))
|
||||
warning_box("Un'operazione di riordino movimenti si e' conclusa"
|
||||
" impropriamente. Si raccomanda di rieseguirla");
|
||||
|
||||
if (argc() > 2)
|
||||
_optype = toupper(argv(2)[0]);
|
||||
|
||||
_msk = new TMask(_optype == 'S' ? "cg4100b" : "cg4100a");
|
||||
|
||||
dispatch_e_menu(MENU_ITEM(1));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool CG4100_App::destroy()
|
||||
{
|
||||
// UNIX: resettare i segnali
|
||||
#if XVT_OS == XVT_OS_SCOUNIX
|
||||
signal(SIGINT,SIG_DFL);
|
||||
#endif
|
||||
delete _msk;
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
bool CG4100_App::set_parms()
|
||||
{
|
||||
_msk->run();
|
||||
|
||||
if (_optype == 'S')
|
||||
_year = _msk->get(FLD_CG41_YEAR);
|
||||
else
|
||||
_year = 0;
|
||||
|
||||
return _msk->last_key() == K_ENTER;
|
||||
}
|
||||
|
||||
|
||||
bool CG4100_App::menu(MENU_TAG)
|
||||
{
|
||||
if (_optype == 'S')
|
||||
sort_sal();
|
||||
else
|
||||
sort_mov();
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
void CG4100_App::restore_mov(TSystemisamfile& mov, TSystemisamfile& rmov,
|
||||
TSystemisamfile& rmoviva)
|
||||
{
|
||||
long rn, rec;
|
||||
if (fexist("__mov__.ind"))
|
||||
{
|
||||
// rebuild all indexes
|
||||
mov.close(); rmov.close(); rmoviva.close();
|
||||
mov.packfile(); rmov.packfile(); rmoviva.packfile();
|
||||
mov.packindex(); rmov.packindex(); rmoviva.packindex();
|
||||
remove("__mov__.ind");
|
||||
return;
|
||||
}
|
||||
|
||||
FILE* fp = fopen("__mov__.sav","r");
|
||||
if (feof(fp))
|
||||
{
|
||||
warning_box("File di ripristino vuoto; il ripristino non e' necessario");
|
||||
remove("__mov__.sav");
|
||||
return;
|
||||
};
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (feof(fp)) break;
|
||||
fscanf(fp,"%ld %ld", &rn, &rec);
|
||||
|
||||
mov.readat(rec);
|
||||
mov.put(MOV_NUMREG,rn);
|
||||
mov.rewrite();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (feof(fp)) break;
|
||||
fscanf(fp,"%ld",&rec);
|
||||
if (rec == -1l) break;
|
||||
rmov.readat(rec);
|
||||
rmov.put(RMV_NUMREG,rn);
|
||||
rmov.rewrite();
|
||||
}
|
||||
for (;;)
|
||||
{
|
||||
if (feof(fp)) break;
|
||||
fscanf(fp,"%ld",&rec);
|
||||
if (rec == -1l) break;
|
||||
rmoviva.readat(rec);
|
||||
rmoviva.put(RMI_NUMREG,rn);
|
||||
rmoviva.rewrite();
|
||||
}
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
remove("__mov__.sav");
|
||||
}
|
||||
|
||||
|
||||
bool CG4100_App::sort_mov()
|
||||
{
|
||||
if (!set_parms())
|
||||
return FALSE;
|
||||
|
||||
TSystemisamfile mov(LF_MOV);
|
||||
TSystemisamfile rmov(LF_RMOV);
|
||||
TSystemisamfile rmoviva(LF_RMOVIVA);
|
||||
|
||||
if (mov.open(_excllock) || rmov.open(_excllock) ||
|
||||
rmoviva.open(_excllock))
|
||||
{
|
||||
warning_box("Gli archivi sono in uso. Operazione interrotta");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
mov.indexoff(); rmov.indexoff(); rmoviva.indexoff();
|
||||
mov.first();
|
||||
|
||||
TSort sort(sizeof(struct therec));
|
||||
|
||||
if (fexist("__mov__.sav") || fexist("__mov__.ind"))
|
||||
{
|
||||
// previous operation failed
|
||||
if (yesno_box("Un riordinamento precedente e' fallito.\n"
|
||||
" Ripristino la situazione iniziale ora?" ))
|
||||
restore_mov(mov, rmov, rmoviva);
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
therec rbuf;
|
||||
|
||||
sort.addsortkey(rbuf.DATAREG - (char*)&rbuf, 8);
|
||||
sort.addsortkey(rbuf.REG - (char*)&rbuf, 3);
|
||||
sort.addsortkey(rbuf.NUMPROT - (char*)&rbuf, 8);
|
||||
sort.addsortkey(rbuf.DATADOC - (char*)&rbuf, 8);
|
||||
sort.addsortkey(rbuf.NUMREG - (char*)&rbuf, 7);
|
||||
|
||||
sort.init();
|
||||
|
||||
TProgind prnd(mov.items(),
|
||||
"Riordino archivio movimenti in corso\nOrdinamento file movimenti...",
|
||||
FALSE,TRUE,30);
|
||||
TString16 s;
|
||||
|
||||
while (!mov.eof())
|
||||
{
|
||||
do_events();
|
||||
TDate d(mov.get(MOV_DATAREG));
|
||||
strcpy(rbuf.DATAREG, d.string(ANSI));
|
||||
strcpy(rbuf.REG, mov.get(MOV_REG));
|
||||
d = mov.get(MOV_DATADOC);
|
||||
s = mov.get(MOV_PROTIVA);
|
||||
if (s.len() > 0 && isdigit(s[s.len() - 1])) s << " ";
|
||||
s.right_just(8);
|
||||
strcpy(rbuf.NUMPROT, (const char *) s);
|
||||
strcpy(rbuf.DATADOC, d.string(ANSI));
|
||||
strcpy(rbuf.ANNOES, mov.get(MOV_ANNOES));
|
||||
strcpy(rbuf.NUMREG, mov.get(MOV_NUMREG));
|
||||
|
||||
sort.sort((char*)&rbuf);
|
||||
mov.next();
|
||||
prnd.addstatus(1);
|
||||
}
|
||||
sort.endsort();
|
||||
|
||||
prnd.setstatus(0);
|
||||
prnd.set_text("Riordino archivio movimenti in corso\nRiscrittura file movimenti...");
|
||||
|
||||
therec* rr;
|
||||
long num = 1;
|
||||
TRecnotype recno;
|
||||
|
||||
while ((rr = (therec*)sort.retrieve()) != NULL)
|
||||
{
|
||||
do_events();
|
||||
if (atol(rr->NUMREG) != num)
|
||||
{
|
||||
// find record
|
||||
mov.curr().zero();
|
||||
mov.put(MOV_NUMREG, rr->NUMREG);
|
||||
|
||||
mov.read();
|
||||
// should never happen
|
||||
CHECK(mov.good(), "Archivio movimenti inconsistente. Questo si' che e' un casino.");
|
||||
|
||||
// retrieve and change NUMREG
|
||||
recno = mov.recno();
|
||||
TString rgn = rr->NUMREG;
|
||||
FILE* fsav = fopen("__mov__.sav","a");
|
||||
fprintf(fsav,"%s %d ", (const char*)rgn, recno);
|
||||
fclose(fsav);
|
||||
|
||||
mov.put(MOV_NUMREG,num);
|
||||
mov.rewriteat(recno);
|
||||
// update linked records
|
||||
|
||||
rmov.curr().zero();
|
||||
rmov.put(RMV_NUMREG,rgn);
|
||||
rmov.read(_isgteq);
|
||||
|
||||
int row = 0;
|
||||
|
||||
while (!rmov.eof() && rgn == rmov.get(RMV_NUMREG) &&
|
||||
row++ < rmov.get_int(RMV_NUMRIG))
|
||||
{
|
||||
recno = rmov.recno();
|
||||
fsav = fopen("__mov__.sav","a");
|
||||
fprintf(fsav,"%ld ", recno);
|
||||
fclose(fsav);
|
||||
rmov.put(RMV_NUMREG,num);
|
||||
rmov.rewriteat(recno);
|
||||
rmov.next();
|
||||
}
|
||||
fsav = fopen("__mov__.sav","a");
|
||||
fprintf(fsav,"-1"); fclose(fsav);
|
||||
|
||||
rmoviva.zero();
|
||||
rmoviva.put(RMI_NUMREG,rgn);
|
||||
rmoviva.read(_isgteq);
|
||||
|
||||
row = 0;
|
||||
|
||||
while (!rmoviva.eof() && rgn == rmoviva.get(RMV_NUMREG) &&
|
||||
row++ < rmoviva.get_int(RMV_NUMRIG))
|
||||
{
|
||||
recno = rmoviva.recno();
|
||||
fsav = fopen("__mov__.sav","a");
|
||||
fprintf(fsav,"%ld ", recno);
|
||||
fclose(fsav);
|
||||
rmoviva.put(RMI_NUMREG,num);
|
||||
rmoviva.rewriteat(recno);
|
||||
rmoviva.next();
|
||||
}
|
||||
fsav = fopen("__mov__.sav","a");
|
||||
fprintf(fsav,"-1"); fclose(fsav);
|
||||
}
|
||||
num++;
|
||||
prnd.addstatus(1);
|
||||
}
|
||||
|
||||
remove("__mov__.sav");
|
||||
|
||||
FILE* fsav = fopen("__mov__.ind","w"); fclose(fsav);
|
||||
|
||||
prnd.set_text("Riordino archivio movimenti in corso\nRicostruzione files indice...");
|
||||
|
||||
// rebuild indexes
|
||||
mov.close(); rmov.close(); rmoviva.close();
|
||||
mov.indexon(); rmov.indexon(); rmoviva.indexon();
|
||||
mov.packfile(); rmov.packfile(); rmoviva.packfile();
|
||||
mov.packindex(); rmov.packindex(); rmoviva.packindex();
|
||||
|
||||
remove("__mov__.ind");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
bool CG4100_App::sort_sal()
|
||||
{
|
||||
|
||||
if (!set_parms())
|
||||
return FALSE;
|
||||
|
||||
FILE* fp = fopen ("__sal__.sav","w");
|
||||
fclose(fp);
|
||||
|
||||
TLocalisamfile rmov(LF_RMOV);
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
TLocalisamfile causali(LF_CAUSALI);
|
||||
TSaldo_agg sal;
|
||||
int gruppo, conto;
|
||||
const int year = atoi(_year);
|
||||
long oldnumreg = 0L, sottoconto;
|
||||
TProgind prnd(rmov.items(),
|
||||
"Riordino archivio saldi in corso\nLettura archivio movimenti...",
|
||||
FALSE,TRUE,30);
|
||||
|
||||
causali.zero();
|
||||
mov.setkey(1);
|
||||
rmov.first();
|
||||
sal.reset();
|
||||
sal.set_anno_es(year);
|
||||
sal.clear_saldi(year);
|
||||
while (!rmov.eof())
|
||||
{
|
||||
if (_year == rmov.get(RMV_ANNOES))
|
||||
{
|
||||
const long numreg = rmov.get_long(RMV_NUMREG);
|
||||
|
||||
gruppo = rmov.get_int(RMV_GRUPPO);
|
||||
conto = rmov.get_int(RMV_CONTO);
|
||||
sottoconto = rmov.get_long(RMV_SOTTOCONTO);
|
||||
if (numreg != oldnumreg)
|
||||
{
|
||||
oldnumreg = numreg;
|
||||
mov.zero();
|
||||
mov.put(MOV_NUMREG, numreg);
|
||||
mov.read();
|
||||
CHECK(mov.good(),"Archivi movimenti e righe inconsistenti");
|
||||
|
||||
const char* codcaus = mov.get(MOV_CODCAUS);
|
||||
|
||||
// cerca causale
|
||||
causali.zero();
|
||||
if (*codcaus)
|
||||
{
|
||||
causali.put(CAU_CODCAUS, codcaus);
|
||||
causali.read();
|
||||
CHECK(causali.good(),"Archivi causali e movimenti inconsistenti");
|
||||
}
|
||||
}
|
||||
const char sezione = rmov.get(RMV_SEZIONE)[0];
|
||||
real importo(rmov.get(RMV_IMPORTO));
|
||||
|
||||
sal.set_movap(causali.get(CAU_MOVAP) == "A");
|
||||
sal.set_movprovv(mov.get(MOV_PROVVIS).not_empty());
|
||||
sal.aggiorna(gruppo, conto, sottoconto, importo, sezione);
|
||||
if (sal.items() > MAX_CNT)
|
||||
{
|
||||
sal.registra();
|
||||
sal.reset();
|
||||
sal.set_anno_es(atoi(_year));
|
||||
}
|
||||
}
|
||||
rmov.next();
|
||||
prnd.addstatus(1);
|
||||
do_events();
|
||||
}
|
||||
if (sal.items() > 0)
|
||||
sal.registra();
|
||||
remove("__sal__.sav");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
int cg4100(int argc, char* argv[])
|
||||
{
|
||||
CG4100_App main_app;
|
||||
main_app.run(argc, argv, "Ricalcolo Saldi");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
5848
cg/cg4400.cpp
5848
cg/cg4400.cpp
File diff suppressed because it is too large
Load Diff
282
cg/cglib.h
282
cg/cglib.h
@ -1,141 +1,141 @@
|
||||
#ifndef __CGLIB_H
|
||||
#define __CGLIB_H
|
||||
|
||||
#ifndef __ISAM_H
|
||||
#include <isam.h>
|
||||
#endif
|
||||
#ifndef __REAL_H
|
||||
#include <real.h>
|
||||
#endif
|
||||
#ifndef __DATE_H
|
||||
#include <date.h>
|
||||
#endif
|
||||
|
||||
#include <assoc.h>
|
||||
#include "conto.h"
|
||||
|
||||
//TLocalisamfile * get_descr_cf(TLocalisamfile * pconti,TLocalisamfile * clifo , int g, int c, long s);
|
||||
|
||||
class TSaldi_list : public TAssoc_array
|
||||
{
|
||||
public:
|
||||
TSaldi_list (int g, int c, int aec, int aep=0);
|
||||
TRectype* saldi() const;
|
||||
};
|
||||
|
||||
#define Saldo TSaldo
|
||||
|
||||
enum tipobil { DataLimite=1, UltimaImmissione };
|
||||
|
||||
class TSaldo
|
||||
{
|
||||
real _saldo, _saldo_iniziale;
|
||||
real _prg_dare, _prg_avere, _prg_daresca, _prg_averesca;
|
||||
int _indbil;
|
||||
TRectype _saldo_ep;
|
||||
int _annoes;
|
||||
TDate _inizioEs, _fineEs;
|
||||
TString16 _codcaus;
|
||||
TDate _datareg;
|
||||
TDate _datacomp;
|
||||
TString _provv;
|
||||
|
||||
bool _movimentato;
|
||||
bool _significativo;
|
||||
bool _rec_presente_ec;
|
||||
bool _rec_presente_ep;
|
||||
|
||||
protected:
|
||||
void InFinEs(int);
|
||||
void leggi_mov(long numreg); // Leggi testata
|
||||
real calcola_saldo_iniziale(int g, int c, long s, int indbil);
|
||||
|
||||
public:
|
||||
|
||||
bool movimentato() const { return _movimentato; }
|
||||
bool significativo() const { return _significativo; }
|
||||
bool esiste_saldo() const { return _rec_presente_ec || _rec_presente_ep;}
|
||||
|
||||
const int EsePre (const int annocorr); // Determina esercizio precedente
|
||||
int annoes () const { return _annoes; }
|
||||
void set_annoes (int anno) { _annoes = anno; }
|
||||
|
||||
bool causale_mov(long, const TDate&, const TDate&, TString&);
|
||||
const char* causale_chiusura_es();
|
||||
const char* causale_apertura_es();
|
||||
|
||||
bool ultima_immissione_bilancio(int anno,int g,int c,long s,int indbil);
|
||||
bool ultima_immissione_verifica(int anno,int g,int c,long s,int indbil);
|
||||
bool data_limite_bilancio(int,int,int,long,const TDate&,const TDate&,int,bool);
|
||||
|
||||
TRectype& ricerca_progr_prec(int, int, int, long);
|
||||
|
||||
real saldofin_esprec(int,int,int,long);
|
||||
bool prg_attuali(int,TConto&,real&,real&);
|
||||
bool prg_mov_eliminati(int,TConto&,real&,real&);
|
||||
|
||||
const real& saldo() const { return _saldo;}
|
||||
const real& saldoini() const { return _saldo_iniziale;}
|
||||
const real& prgdare() const { return _prg_dare;}
|
||||
const real& prgavere() const { return _prg_avere;}
|
||||
bool prg_attuali(int,TConto&,int,real&,real&);
|
||||
bool prg_mov_eliminati(int,TConto&,int,real&,real&);
|
||||
Saldo();
|
||||
~Saldo();
|
||||
};
|
||||
|
||||
class TTab_conti : public TAssoc_array
|
||||
{
|
||||
void do_agg(TConto* tc, int anno_es, const real& importo, char sezione,
|
||||
bool movap, bool provv, bool somma, const char* key);
|
||||
public:
|
||||
void aggiorna_conto(const TConto& tc, int anno_es, const real& importo,
|
||||
char sezione, bool movap, bool provv, bool somma);
|
||||
void aggiorna_conto (int gruppo, int conto, long sottoconto, int anno_es,
|
||||
const real& importo, char sezione, bool movap,
|
||||
bool provv, bool somma);
|
||||
};
|
||||
|
||||
class TSaldo_agg : public TObject
|
||||
{
|
||||
TTab_conti _tab_conti;
|
||||
bool _movap; // se e' mov. d'apertura (aggiorno SALDO e FLAGSALINI in
|
||||
// saldi)
|
||||
bool _provv;
|
||||
int _anno_es; // anno esercizio
|
||||
TDate _data_ulmov; // data ultimo movimento
|
||||
long _num_ulmov; // numero ultimo movimento
|
||||
TRectype * _rec; // record corrente sui saldi
|
||||
THash_object * tconti() { return _tab_conti.get_hashobj(); }
|
||||
|
||||
public:
|
||||
void clear_saldi(int year);
|
||||
void registra();
|
||||
void aggiorna (const TConto& tc, const real& importo, char sezione,
|
||||
bool somma=TRUE);
|
||||
void aggiorna (int gruppo, int conto, long sottoconto, const real& importo,
|
||||
char sezione, bool somma=TRUE);
|
||||
|
||||
void set_anno_es(int anno) { _anno_es = anno; }
|
||||
int anno_es() const { return _anno_es; }
|
||||
|
||||
void set_movap (bool movap) { _movap = movap; }
|
||||
bool movap() const { return _movap; }
|
||||
|
||||
void set_movprovv (bool p) { _provv = p; }
|
||||
bool movprovv() const { return _provv; }
|
||||
|
||||
void set_data_ulmov (const TDate& data) { _data_ulmov = data; }
|
||||
const TDate& data_ulmov() const { return _data_ulmov; }
|
||||
|
||||
void set_num_ulmov (long num) { _num_ulmov = num; }
|
||||
long num_ulmov() const { return _num_ulmov; }
|
||||
|
||||
void reset(); // pulisce l'array dei conti
|
||||
TSaldo_agg();
|
||||
int items() const { return _tab_conti.items();}
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef __CGLIB_H
|
||||
#define __CGLIB_H
|
||||
|
||||
#ifndef __ISAM_H
|
||||
#include <isam.h>
|
||||
#endif
|
||||
#ifndef __REAL_H
|
||||
#include <real.h>
|
||||
#endif
|
||||
#ifndef __DATE_H
|
||||
#include <date.h>
|
||||
#endif
|
||||
|
||||
#include <assoc.h>
|
||||
#include "conto.h"
|
||||
|
||||
//TLocalisamfile * get_descr_cf(TLocalisamfile * pconti,TLocalisamfile * clifo , int g, int c, long s);
|
||||
|
||||
class TSaldi_list : public TAssoc_array
|
||||
{
|
||||
public:
|
||||
TSaldi_list (int g, int c, int aec, int aep=0);
|
||||
TRectype* saldi() const;
|
||||
};
|
||||
|
||||
#define Saldo TSaldo
|
||||
|
||||
enum tipobil { DataLimite=1, UltimaImmissione };
|
||||
|
||||
class TSaldo
|
||||
{
|
||||
real _saldo, _saldo_iniziale;
|
||||
real _prg_dare, _prg_avere, _prg_daresca, _prg_averesca;
|
||||
int _indbil;
|
||||
TRectype _saldo_ep;
|
||||
int _annoes;
|
||||
TDate _inizioEs, _fineEs;
|
||||
TString16 _codcaus;
|
||||
TDate _datareg;
|
||||
TDate _datacomp;
|
||||
TString _provv;
|
||||
|
||||
bool _movimentato;
|
||||
bool _significativo;
|
||||
bool _rec_presente_ec;
|
||||
bool _rec_presente_ep;
|
||||
|
||||
protected:
|
||||
void InFinEs(int);
|
||||
void leggi_mov(long numreg); // Leggi testata
|
||||
real calcola_saldo_iniziale(int g, int c, long s, int indbil);
|
||||
|
||||
public:
|
||||
|
||||
bool movimentato() const { return _movimentato; }
|
||||
bool significativo() const { return _significativo; }
|
||||
bool esiste_saldo() const { return _rec_presente_ec || _rec_presente_ep;}
|
||||
|
||||
const int EsePre (const int annocorr); // Determina esercizio precedente
|
||||
int annoes () const { return _annoes; }
|
||||
void set_annoes (int anno) { _annoes = anno; }
|
||||
|
||||
bool causale_mov(long, const TDate&, const TDate&, TString&);
|
||||
const char* causale_chiusura_es();
|
||||
const char* causale_apertura_es();
|
||||
|
||||
bool ultima_immissione_bilancio(int anno,int g,int c,long s,int indbil);
|
||||
bool ultima_immissione_verifica(int anno,int g,int c,long s,int indbil);
|
||||
bool data_limite_bilancio(int,int,int,long,const TDate&,const TDate&,int,bool);
|
||||
|
||||
TRectype& ricerca_progr_prec(int, int, int, long);
|
||||
|
||||
real saldofin_esprec(int,int,int,long);
|
||||
bool prg_attuali(int,TConto&,real&,real&);
|
||||
bool prg_mov_eliminati(int,TConto&,real&,real&);
|
||||
|
||||
const real& saldo() const { return _saldo;}
|
||||
const real& saldoini() const { return _saldo_iniziale;}
|
||||
const real& prgdare() const { return _prg_dare;}
|
||||
const real& prgavere() const { return _prg_avere;}
|
||||
bool prg_attuali(int,TConto&,int,real&,real&);
|
||||
bool prg_mov_eliminati(int,TConto&,int,real&,real&);
|
||||
Saldo();
|
||||
~Saldo();
|
||||
};
|
||||
|
||||
class TTab_conti : public TAssoc_array
|
||||
{
|
||||
void do_agg(TConto* tc, int anno_es, const real& importo, char sezione,
|
||||
bool movap, bool provv, bool somma, const char* key);
|
||||
public:
|
||||
void aggiorna_conto(const TConto& tc, int anno_es, const real& importo,
|
||||
char sezione, bool movap, bool provv, bool somma);
|
||||
void aggiorna_conto (int gruppo, int conto, long sottoconto, int anno_es,
|
||||
const real& importo, char sezione, bool movap,
|
||||
bool provv, bool somma);
|
||||
};
|
||||
|
||||
class TSaldo_agg : public TObject
|
||||
{
|
||||
TTab_conti _tab_conti;
|
||||
bool _movap; // se e' mov. d'apertura (aggiorno SALDO e FLAGSALINI in
|
||||
// saldi)
|
||||
bool _provv;
|
||||
int _anno_es; // anno esercizio
|
||||
TDate _data_ulmov; // data ultimo movimento
|
||||
long _num_ulmov; // numero ultimo movimento
|
||||
TRectype * _rec; // record corrente sui saldi
|
||||
THash_object * tconti() { return _tab_conti.get_hashobj(); }
|
||||
|
||||
public:
|
||||
void clear_saldi(int year);
|
||||
void registra();
|
||||
void aggiorna (const TConto& tc, const real& importo, char sezione,
|
||||
bool somma=TRUE);
|
||||
void aggiorna (int gruppo, int conto, long sottoconto, const real& importo,
|
||||
char sezione, bool somma=TRUE);
|
||||
|
||||
void set_anno_es(int anno) { _anno_es = anno; }
|
||||
int anno_es() const { return _anno_es; }
|
||||
|
||||
void set_movap (bool movap) { _movap = movap; }
|
||||
bool movap() const { return _movap; }
|
||||
|
||||
void set_movprovv (bool p) { _provv = p; }
|
||||
bool movprovv() const { return _provv; }
|
||||
|
||||
void set_data_ulmov (const TDate& data) { _data_ulmov = data; }
|
||||
const TDate& data_ulmov() const { return _data_ulmov; }
|
||||
|
||||
void set_num_ulmov (long num) { _num_ulmov = num; }
|
||||
long num_ulmov() const { return _num_ulmov; }
|
||||
|
||||
void reset(); // pulisce l'array dei conti
|
||||
TSaldo_agg();
|
||||
int items() const { return _tab_conti.items();}
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
512
cg/cglib02.cpp
512
cg/cglib02.cpp
@ -1,256 +1,256 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// cglib02.cpp
|
||||
//
|
||||
// Aggiornamento saldi
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <isam.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include <saldi.h>
|
||||
|
||||
#include "conto.h"
|
||||
#include "cglib.h"
|
||||
|
||||
void TTab_conti::do_agg(TConto* tc, int anno_es, const real& importo,
|
||||
char sezione, bool movap, bool provv, bool somma, const char* key)
|
||||
{
|
||||
real i = somma ? importo : -importo;
|
||||
|
||||
if (movap)
|
||||
{
|
||||
if (sezione == 'D') tc->saldo() += i;
|
||||
else tc->saldo() -= i;
|
||||
}
|
||||
else
|
||||
if (provv)
|
||||
{
|
||||
if (sezione == 'D') tc->darepro() += i;
|
||||
else tc->averepro() += i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sezione == 'D') tc->dare() += i;
|
||||
else tc->avere() += i;
|
||||
}
|
||||
|
||||
// rimuovo dalla tabella il conto se dare e avere vanno a zero
|
||||
if (tc->dare().is_zero() && tc->avere().is_zero() &&
|
||||
tc->darepro().is_zero() && tc->averepro().is_zero() &&
|
||||
tc->saldo().is_zero()) remove(key);
|
||||
}
|
||||
|
||||
|
||||
void TTab_conti::aggiorna_conto(const TConto& tcon, int anno_es, const real& importo, char sezione, bool movap, bool provv, bool somma)
|
||||
{
|
||||
TString80 key;
|
||||
key << format("%4d", anno_es);
|
||||
key << format("%3d", tcon.gruppo());
|
||||
key << format("%3d", tcon.conto());
|
||||
key << format("%6ld", tcon.sottoconto());
|
||||
|
||||
TConto* tc = (TConto*) objptr(key);
|
||||
if (tc == NULL)
|
||||
{
|
||||
tc = new TConto(tcon.gruppo(), tcon.conto(), tcon.sottoconto(),
|
||||
tcon.tipo());
|
||||
add(key, tc);
|
||||
tc->dare() = ZERO;
|
||||
tc->avere() = ZERO;
|
||||
tc->darepro() = ZERO;
|
||||
tc->averepro() = ZERO;
|
||||
tc->saldo() = ZERO;
|
||||
}
|
||||
do_agg(tc, anno_es, importo, sezione, movap, provv, somma, key);
|
||||
}
|
||||
|
||||
void TTab_conti::aggiorna_conto(int gruppo, int conto, long sottoconto,
|
||||
int anno_es, const real& importo, char sezione,
|
||||
bool movap, bool provv, bool somma)
|
||||
{
|
||||
TString80 key;
|
||||
key << format("%4d", anno_es);
|
||||
key << format("%3d", gruppo);
|
||||
key << format("%3d", conto);
|
||||
key << format("%6ld", sottoconto);
|
||||
|
||||
TConto* tc = (TConto*) objptr(key);
|
||||
if (tc == NULL)
|
||||
{
|
||||
tc = new TConto(gruppo, conto, sottoconto);
|
||||
add(key, tc);
|
||||
}
|
||||
do_agg(tc, anno_es, importo, sezione, movap, provv, somma, key);
|
||||
}
|
||||
|
||||
|
||||
TSaldo_agg::TSaldo_agg()
|
||||
{
|
||||
_anno_es = 0;
|
||||
_data_ulmov = "";
|
||||
_num_ulmov = 0l;
|
||||
_movap = FALSE;
|
||||
_provv = FALSE;
|
||||
reset(); // pulizia dell'array dei conti
|
||||
}
|
||||
|
||||
void TSaldo_agg::aggiorna(const TConto& tc, const real& importo, char sezione,
|
||||
bool somma)
|
||||
{
|
||||
_tab_conti.aggiorna_conto(tc, _anno_es, importo, sezione, _movap, _provv,
|
||||
somma);
|
||||
}
|
||||
|
||||
void TSaldo_agg::aggiorna(int gruppo, int conto, long sottoconto, const real& importo, char sezione, bool somma)
|
||||
{
|
||||
_tab_conti.aggiorna_conto(gruppo, conto, sottoconto, _anno_es, importo,
|
||||
sezione, _movap, _provv, somma);
|
||||
}
|
||||
|
||||
void TSaldo_agg::reset()
|
||||
{
|
||||
_tab_conti.destroy();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// pulizia file saldi
|
||||
//
|
||||
// Scorro il file saldi per l' anno year o per tutti gli anni se year = 0
|
||||
// e azzero i progressivi.
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
void TSaldo_agg::clear_saldi(int year)
|
||||
{
|
||||
TLocalisamfile saldi(LF_SALDI);
|
||||
|
||||
set_anno_es(year);
|
||||
saldi.zero();
|
||||
if (anno_es() != 0)
|
||||
saldi.put(SLD_ANNOES, anno_es());
|
||||
|
||||
TRectype last(saldi.curr());
|
||||
|
||||
for (saldi.read(_isgteq, _lock);
|
||||
!saldi.eof() && saldi.curr() <= last;
|
||||
saldi.next(_lock))
|
||||
{
|
||||
saldi.put(SLD_FLAGSALINI, "D");
|
||||
saldi.zero(SLD_SALDO);
|
||||
saldi.zero(SLD_PDAREPRO);
|
||||
saldi.zero(SLD_PAVEREPRO);
|
||||
saldi.zero(SLD_PDARE);
|
||||
saldi.zero(SLD_PAVERE);
|
||||
saldi.zero(SLD_NUMULTMOV);
|
||||
saldi.zero(SLD_DATAULMOV);
|
||||
saldi.rewrite();
|
||||
}
|
||||
saldi.reread(_unlock);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Aggiornamento file saldi
|
||||
//
|
||||
// Scorro la tabella dei conti interna _tab_conti.
|
||||
// Per ogni conto cerco il record su saldi, se non c'e' lo creo.
|
||||
// Se c'e' gia' lo aggiorno nel seguente modo:
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
void TSaldo_agg::registra()
|
||||
{
|
||||
real s, r;
|
||||
TString Flagsalini;
|
||||
TDate data_ulmov;
|
||||
long num_ulmov;
|
||||
TLocalisamfile saldi(LF_SALDI);
|
||||
int conti = _tab_conti.items();
|
||||
|
||||
_tab_conti.restart();
|
||||
for (int i = 0; i < conti; i++)
|
||||
{
|
||||
THash_object * hobj = tconti();
|
||||
const TConto& tcon = (TConto &)hobj->obj();
|
||||
CHECK(tcon.ok(), "Tentativo di saldare un conto incompleto");
|
||||
|
||||
saldi.zero();
|
||||
saldi.put(SLD_ANNOES, atoi(hobj->key().left(4)) );
|
||||
saldi.put(SLD_GRUPPO, tcon.gruppo());
|
||||
saldi.put(SLD_CONTO, tcon.conto());
|
||||
saldi.put(SLD_SOTTOCONTO, tcon.sottoconto());
|
||||
|
||||
bool update = TRUE;
|
||||
|
||||
if (saldi.read(_isequal, _lock) != NOERR)
|
||||
{
|
||||
saldi.zero();
|
||||
saldi.put(SLD_ANNOES, anno_es());
|
||||
saldi.put(SLD_GRUPPO, tcon.gruppo());
|
||||
saldi.put(SLD_CONTO, tcon.conto());
|
||||
saldi.put(SLD_SOTTOCONTO, tcon.sottoconto());
|
||||
s = tcon.saldo();
|
||||
if (s < ZERO)
|
||||
{ Flagsalini = "A"; s = -s; }
|
||||
else
|
||||
Flagsalini = "D";
|
||||
|
||||
saldi.put(SLD_FLAGSALINI, (const char *) Flagsalini);
|
||||
saldi.put(SLD_SALDO, s);
|
||||
saldi.put(SLD_PDAREPRO, tcon.darepro());
|
||||
saldi.put(SLD_PAVEREPRO, tcon.averepro());
|
||||
saldi.put(SLD_PDARE, tcon.dare());
|
||||
|
||||
saldi.put(SLD_PAVERE, tcon.avere());
|
||||
if (_num_ulmov != 0L) saldi.put(SLD_NUMULTMOV, _num_ulmov);
|
||||
if (_data_ulmov.ok()) saldi.put(SLD_DATAULMOV, _data_ulmov);
|
||||
update = saldi.write() == _isreinsert;
|
||||
if (update)
|
||||
saldi.read(_isequal, _lock);
|
||||
}
|
||||
|
||||
if (update)
|
||||
{
|
||||
num_ulmov = saldi.get_long(SLD_NUMULTMOV);
|
||||
data_ulmov = saldi.get_date(SLD_DATAULMOV);
|
||||
|
||||
if (((_num_ulmov != 0L) && (_num_ulmov > num_ulmov)) ||
|
||||
((_data_ulmov.ok()) && (_data_ulmov > data_ulmov)))
|
||||
{
|
||||
saldi.put(SLD_DATAULMOV, _data_ulmov);
|
||||
saldi.put(SLD_NUMULTMOV, _num_ulmov);
|
||||
}
|
||||
r = tcon.saldo();
|
||||
if (r != ZERO)
|
||||
{
|
||||
s = saldi.get_real(SLD_SALDO);
|
||||
Flagsalini = saldi.get(SLD_FLAGSALINI);
|
||||
if (Flagsalini == "A") s = r - s;
|
||||
else s = r + s;
|
||||
if (s < ZERO)
|
||||
{
|
||||
Flagsalini = "A"; s = -s;
|
||||
}
|
||||
else
|
||||
Flagsalini = "D";
|
||||
saldi.put(SLD_FLAGSALINI, Flagsalini);
|
||||
saldi.put(SLD_SALDO, s);
|
||||
}
|
||||
r = saldi.get_real(SLD_PDAREPRO);
|
||||
r += tcon.darepro();
|
||||
saldi.put(SLD_PDAREPRO, r);
|
||||
r = saldi.get_real(SLD_PAVEREPRO);
|
||||
r += tcon.averepro();
|
||||
saldi.put(SLD_PAVEREPRO, r);
|
||||
r = saldi.get_real(SLD_PDARE);
|
||||
r += tcon.dare();
|
||||
saldi.put(SLD_PDARE, r);
|
||||
r = saldi.get_real(SLD_PAVERE);
|
||||
r += tcon.avere();
|
||||
saldi.put(SLD_PAVERE, r);
|
||||
saldi.rewrite();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// cglib02.cpp
|
||||
//
|
||||
// Aggiornamento saldi
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <isam.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include <saldi.h>
|
||||
|
||||
#include "conto.h"
|
||||
#include "cglib.h"
|
||||
|
||||
void TTab_conti::do_agg(TConto* tc, int anno_es, const real& importo,
|
||||
char sezione, bool movap, bool provv, bool somma, const char* key)
|
||||
{
|
||||
real i = somma ? importo : -importo;
|
||||
|
||||
if (movap)
|
||||
{
|
||||
if (sezione == 'D') tc->saldo() += i;
|
||||
else tc->saldo() -= i;
|
||||
}
|
||||
else
|
||||
if (provv)
|
||||
{
|
||||
if (sezione == 'D') tc->darepro() += i;
|
||||
else tc->averepro() += i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sezione == 'D') tc->dare() += i;
|
||||
else tc->avere() += i;
|
||||
}
|
||||
|
||||
// rimuovo dalla tabella il conto se dare e avere vanno a zero
|
||||
if (tc->dare().is_zero() && tc->avere().is_zero() &&
|
||||
tc->darepro().is_zero() && tc->averepro().is_zero() &&
|
||||
tc->saldo().is_zero()) remove(key);
|
||||
}
|
||||
|
||||
|
||||
void TTab_conti::aggiorna_conto(const TConto& tcon, int anno_es, const real& importo, char sezione, bool movap, bool provv, bool somma)
|
||||
{
|
||||
TString80 key;
|
||||
key << format("%4d", anno_es);
|
||||
key << format("%3d", tcon.gruppo());
|
||||
key << format("%3d", tcon.conto());
|
||||
key << format("%6ld", tcon.sottoconto());
|
||||
|
||||
TConto* tc = (TConto*) objptr(key);
|
||||
if (tc == NULL)
|
||||
{
|
||||
tc = new TConto(tcon.gruppo(), tcon.conto(), tcon.sottoconto(),
|
||||
tcon.tipo());
|
||||
add(key, tc);
|
||||
tc->dare() = ZERO;
|
||||
tc->avere() = ZERO;
|
||||
tc->darepro() = ZERO;
|
||||
tc->averepro() = ZERO;
|
||||
tc->saldo() = ZERO;
|
||||
}
|
||||
do_agg(tc, anno_es, importo, sezione, movap, provv, somma, key);
|
||||
}
|
||||
|
||||
void TTab_conti::aggiorna_conto(int gruppo, int conto, long sottoconto,
|
||||
int anno_es, const real& importo, char sezione,
|
||||
bool movap, bool provv, bool somma)
|
||||
{
|
||||
TString80 key;
|
||||
key << format("%4d", anno_es);
|
||||
key << format("%3d", gruppo);
|
||||
key << format("%3d", conto);
|
||||
key << format("%6ld", sottoconto);
|
||||
|
||||
TConto* tc = (TConto*) objptr(key);
|
||||
if (tc == NULL)
|
||||
{
|
||||
tc = new TConto(gruppo, conto, sottoconto);
|
||||
add(key, tc);
|
||||
}
|
||||
do_agg(tc, anno_es, importo, sezione, movap, provv, somma, key);
|
||||
}
|
||||
|
||||
|
||||
TSaldo_agg::TSaldo_agg()
|
||||
{
|
||||
_anno_es = 0;
|
||||
_data_ulmov = "";
|
||||
_num_ulmov = 0l;
|
||||
_movap = FALSE;
|
||||
_provv = FALSE;
|
||||
reset(); // pulizia dell'array dei conti
|
||||
}
|
||||
|
||||
void TSaldo_agg::aggiorna(const TConto& tc, const real& importo, char sezione,
|
||||
bool somma)
|
||||
{
|
||||
_tab_conti.aggiorna_conto(tc, _anno_es, importo, sezione, _movap, _provv,
|
||||
somma);
|
||||
}
|
||||
|
||||
void TSaldo_agg::aggiorna(int gruppo, int conto, long sottoconto, const real& importo, char sezione, bool somma)
|
||||
{
|
||||
_tab_conti.aggiorna_conto(gruppo, conto, sottoconto, _anno_es, importo,
|
||||
sezione, _movap, _provv, somma);
|
||||
}
|
||||
|
||||
void TSaldo_agg::reset()
|
||||
{
|
||||
_tab_conti.destroy();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// pulizia file saldi
|
||||
//
|
||||
// Scorro il file saldi per l' anno year o per tutti gli anni se year = 0
|
||||
// e azzero i progressivi.
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
void TSaldo_agg::clear_saldi(int year)
|
||||
{
|
||||
TLocalisamfile saldi(LF_SALDI);
|
||||
|
||||
set_anno_es(year);
|
||||
saldi.zero();
|
||||
if (anno_es() != 0)
|
||||
saldi.put(SLD_ANNOES, anno_es());
|
||||
|
||||
TRectype last(saldi.curr());
|
||||
|
||||
for (saldi.read(_isgteq, _lock);
|
||||
!saldi.eof() && saldi.curr() <= last;
|
||||
saldi.next(_lock))
|
||||
{
|
||||
saldi.put(SLD_FLAGSALINI, "D");
|
||||
saldi.zero(SLD_SALDO);
|
||||
saldi.zero(SLD_PDAREPRO);
|
||||
saldi.zero(SLD_PAVEREPRO);
|
||||
saldi.zero(SLD_PDARE);
|
||||
saldi.zero(SLD_PAVERE);
|
||||
saldi.zero(SLD_NUMULTMOV);
|
||||
saldi.zero(SLD_DATAULMOV);
|
||||
saldi.rewrite();
|
||||
}
|
||||
saldi.reread(_unlock);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Aggiornamento file saldi
|
||||
//
|
||||
// Scorro la tabella dei conti interna _tab_conti.
|
||||
// Per ogni conto cerco il record su saldi, se non c'e' lo creo.
|
||||
// Se c'e' gia' lo aggiorno nel seguente modo:
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
void TSaldo_agg::registra()
|
||||
{
|
||||
real s, r;
|
||||
TString Flagsalini;
|
||||
TDate data_ulmov;
|
||||
long num_ulmov;
|
||||
TLocalisamfile saldi(LF_SALDI);
|
||||
int conti = _tab_conti.items();
|
||||
|
||||
_tab_conti.restart();
|
||||
for (int i = 0; i < conti; i++)
|
||||
{
|
||||
THash_object * hobj = tconti();
|
||||
const TConto& tcon = (TConto &)hobj->obj();
|
||||
CHECK(tcon.ok(), "Tentativo di saldare un conto incompleto");
|
||||
|
||||
saldi.zero();
|
||||
saldi.put(SLD_ANNOES, atoi(hobj->key().left(4)) );
|
||||
saldi.put(SLD_GRUPPO, tcon.gruppo());
|
||||
saldi.put(SLD_CONTO, tcon.conto());
|
||||
saldi.put(SLD_SOTTOCONTO, tcon.sottoconto());
|
||||
|
||||
bool update = TRUE;
|
||||
|
||||
if (saldi.read(_isequal, _lock) != NOERR)
|
||||
{
|
||||
saldi.zero();
|
||||
saldi.put(SLD_ANNOES, anno_es());
|
||||
saldi.put(SLD_GRUPPO, tcon.gruppo());
|
||||
saldi.put(SLD_CONTO, tcon.conto());
|
||||
saldi.put(SLD_SOTTOCONTO, tcon.sottoconto());
|
||||
s = tcon.saldo();
|
||||
if (s < ZERO)
|
||||
{ Flagsalini = "A"; s = -s; }
|
||||
else
|
||||
Flagsalini = "D";
|
||||
|
||||
saldi.put(SLD_FLAGSALINI, (const char *) Flagsalini);
|
||||
saldi.put(SLD_SALDO, s);
|
||||
saldi.put(SLD_PDAREPRO, tcon.darepro());
|
||||
saldi.put(SLD_PAVEREPRO, tcon.averepro());
|
||||
saldi.put(SLD_PDARE, tcon.dare());
|
||||
|
||||
saldi.put(SLD_PAVERE, tcon.avere());
|
||||
if (_num_ulmov != 0L) saldi.put(SLD_NUMULTMOV, _num_ulmov);
|
||||
if (_data_ulmov.ok()) saldi.put(SLD_DATAULMOV, _data_ulmov);
|
||||
update = saldi.write() == _isreinsert;
|
||||
if (update)
|
||||
saldi.read(_isequal, _lock);
|
||||
}
|
||||
|
||||
if (update)
|
||||
{
|
||||
num_ulmov = saldi.get_long(SLD_NUMULTMOV);
|
||||
data_ulmov = saldi.get_date(SLD_DATAULMOV);
|
||||
|
||||
if (((_num_ulmov != 0L) && (_num_ulmov > num_ulmov)) ||
|
||||
((_data_ulmov.ok()) && (_data_ulmov > data_ulmov)))
|
||||
{
|
||||
saldi.put(SLD_DATAULMOV, _data_ulmov);
|
||||
saldi.put(SLD_NUMULTMOV, _num_ulmov);
|
||||
}
|
||||
r = tcon.saldo();
|
||||
if (r != ZERO)
|
||||
{
|
||||
s = saldi.get_real(SLD_SALDO);
|
||||
Flagsalini = saldi.get(SLD_FLAGSALINI);
|
||||
if (Flagsalini == "A") s = r - s;
|
||||
else s = r + s;
|
||||
if (s < ZERO)
|
||||
{
|
||||
Flagsalini = "A"; s = -s;
|
||||
}
|
||||
else
|
||||
Flagsalini = "D";
|
||||
saldi.put(SLD_FLAGSALINI, Flagsalini);
|
||||
saldi.put(SLD_SALDO, s);
|
||||
}
|
||||
r = saldi.get_real(SLD_PDAREPRO);
|
||||
r += tcon.darepro();
|
||||
saldi.put(SLD_PDAREPRO, r);
|
||||
r = saldi.get_real(SLD_PAVEREPRO);
|
||||
r += tcon.averepro();
|
||||
saldi.put(SLD_PAVEREPRO, r);
|
||||
r = saldi.get_real(SLD_PDARE);
|
||||
r += tcon.dare();
|
||||
saldi.put(SLD_PDARE, r);
|
||||
r = saldi.get_real(SLD_PAVERE);
|
||||
r += tcon.avere();
|
||||
saldi.put(SLD_PAVERE, r);
|
||||
saldi.rewrite();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
186
cg/conto.h
186
cg/conto.h
@ -1,93 +1,93 @@
|
||||
#ifndef __CONTO_H
|
||||
#define __CONTO_H
|
||||
|
||||
#ifndef __STRINGS_H
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
#ifndef __REAL_H
|
||||
#include <real.h>
|
||||
#endif
|
||||
|
||||
class TBill : public TSortable
|
||||
{
|
||||
char _tipo; // ' ' = Conto, 'C' = Cliente, 'F' = 'Fornitore'
|
||||
int _gruppo, _conto;
|
||||
long _sottoconto; // Sottoconto, codice cliente o fornitore
|
||||
TString80 _descrizione; // Vuota fino alla chiamata di describe
|
||||
int _tipo_cr; // Tipo costo/ricavo
|
||||
bool _sospeso;
|
||||
|
||||
protected:
|
||||
virtual int compare(const TSortable& s) const;
|
||||
virtual const char* class_name() const { return "Conto"; }
|
||||
void describe();
|
||||
|
||||
const TBill& copy(const TBill& b);
|
||||
|
||||
public:
|
||||
TBill(int g = 0, int c = 0, long s = 0L, char t = ' ', const char* d = NULL, int r = -1)
|
||||
: _tipo(t), _gruppo(g), _conto(c), _sottoconto(s), _descrizione(d), _tipo_cr(r) { set(g,c,s,t,d,r);}
|
||||
|
||||
TBill(TToken_string& tgcsd, int from, int mode = 0);
|
||||
TBill(const TBill& b) { copy(b); }
|
||||
virtual ~TBill() {}
|
||||
|
||||
const TBill& set(int g = 0, int c = 0, long s = 0L, char t = ' ',
|
||||
const char* d = NULL, int r = -1);
|
||||
const TBill& add_to(TToken_string& ts, int from, int mode = 0);
|
||||
const TBill& operator=(const TBill& b) { return copy(b); }
|
||||
|
||||
virtual bool ok() const; // Gruppo, Conto e Sottoconto non nulli
|
||||
bool empty() const { return _gruppo==0 && _conto==0 && _sottoconto == 0; }
|
||||
|
||||
char tipo() const { return _tipo; }
|
||||
int gruppo() const { return _gruppo; }
|
||||
int conto() const { return _conto; }
|
||||
long sottoconto() const { return _sottoconto; }
|
||||
|
||||
const TString& descrizione();
|
||||
int tipo_cr();
|
||||
void tipo_cr(int tcr) { _tipo_cr = tcr; }
|
||||
|
||||
int tipo_att();
|
||||
bool read(TRectype& r);
|
||||
bool sospeso() const { return _sospeso;} // _sospeso e' letto nella read()
|
||||
|
||||
const char* string(int mode = 0);
|
||||
};
|
||||
|
||||
|
||||
enum TIndbil { ib_null, ib_attivita, ib_passivita, ib_costi, ib_ricavi, ib_conti_ordine };
|
||||
|
||||
class TConto : public TBill
|
||||
{
|
||||
real _dare, _avere, _darepro, _averepro, _saldo;
|
||||
|
||||
public:
|
||||
TConto(int g = 0, int c = 0, long s = 0L, char t = ' ', const char* d = NULL)
|
||||
: TBill(g, c, s, t, d) {}
|
||||
TConto (TToken_string& tgcsd, int from, int mode = 0)
|
||||
: TBill(tgcsd, from, mode) {};
|
||||
|
||||
real& dare() { return _dare; }
|
||||
const real& dare() const { return _dare; }
|
||||
|
||||
real& avere() { return _avere; }
|
||||
const real& avere() const { return _avere; }
|
||||
|
||||
real& darepro() { return _darepro; }
|
||||
const real& darepro() const { return _darepro; }
|
||||
|
||||
real& averepro() { return _averepro; }
|
||||
const real& averepro() const { return _averepro; }
|
||||
|
||||
real& saldo() { return _saldo; }
|
||||
const real& saldo() const { return _saldo; }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
#ifndef __CONTO_H
|
||||
#define __CONTO_H
|
||||
|
||||
#ifndef __STRINGS_H
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
#ifndef __REAL_H
|
||||
#include <real.h>
|
||||
#endif
|
||||
|
||||
class TBill : public TSortable
|
||||
{
|
||||
char _tipo; // ' ' = Conto, 'C' = Cliente, 'F' = 'Fornitore'
|
||||
int _gruppo, _conto;
|
||||
long _sottoconto; // Sottoconto, codice cliente o fornitore
|
||||
TString80 _descrizione; // Vuota fino alla chiamata di describe
|
||||
int _tipo_cr; // Tipo costo/ricavo
|
||||
bool _sospeso;
|
||||
|
||||
protected:
|
||||
virtual int compare(const TSortable& s) const;
|
||||
virtual const char* class_name() const { return "Conto"; }
|
||||
void describe();
|
||||
|
||||
const TBill& copy(const TBill& b);
|
||||
|
||||
public:
|
||||
TBill(int g = 0, int c = 0, long s = 0L, char t = ' ', const char* d = NULL, int r = -1)
|
||||
: _tipo(t), _gruppo(g), _conto(c), _sottoconto(s), _descrizione(d), _tipo_cr(r) { set(g,c,s,t,d,r);}
|
||||
|
||||
TBill(TToken_string& tgcsd, int from, int mode = 0);
|
||||
TBill(const TBill& b) { copy(b); }
|
||||
virtual ~TBill() {}
|
||||
|
||||
const TBill& set(int g = 0, int c = 0, long s = 0L, char t = ' ',
|
||||
const char* d = NULL, int r = -1);
|
||||
const TBill& add_to(TToken_string& ts, int from, int mode = 0);
|
||||
const TBill& operator=(const TBill& b) { return copy(b); }
|
||||
|
||||
virtual bool ok() const; // Gruppo, Conto e Sottoconto non nulli
|
||||
bool empty() const { return _gruppo==0 && _conto==0 && _sottoconto == 0; }
|
||||
|
||||
char tipo() const { return _tipo; }
|
||||
int gruppo() const { return _gruppo; }
|
||||
int conto() const { return _conto; }
|
||||
long sottoconto() const { return _sottoconto; }
|
||||
|
||||
const TString& descrizione();
|
||||
int tipo_cr();
|
||||
void tipo_cr(int tcr) { _tipo_cr = tcr; }
|
||||
|
||||
int tipo_att();
|
||||
bool read(TRectype& r);
|
||||
bool sospeso() const { return _sospeso;} // _sospeso e' letto nella read()
|
||||
|
||||
const char* string(int mode = 0);
|
||||
};
|
||||
|
||||
|
||||
enum TIndbil { ib_null, ib_attivita, ib_passivita, ib_costi, ib_ricavi, ib_conti_ordine };
|
||||
|
||||
class TConto : public TBill
|
||||
{
|
||||
real _dare, _avere, _darepro, _averepro, _saldo;
|
||||
|
||||
public:
|
||||
TConto(int g = 0, int c = 0, long s = 0L, char t = ' ', const char* d = NULL)
|
||||
: TBill(g, c, s, t, d) {}
|
||||
TConto (TToken_string& tgcsd, int from, int mode = 0)
|
||||
: TBill(tgcsd, from, mode) {};
|
||||
|
||||
real& dare() { return _dare; }
|
||||
const real& dare() const { return _dare; }
|
||||
|
||||
real& avere() { return _avere; }
|
||||
const real& avere() const { return _avere; }
|
||||
|
||||
real& darepro() { return _darepro; }
|
||||
const real& darepro() const { return _darepro; }
|
||||
|
||||
real& averepro() { return _averepro; }
|
||||
const real& averepro() const { return _averepro; }
|
||||
|
||||
real& saldo() { return _saldo; }
|
||||
const real& saldo() const { return _saldo; }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user