Patch level : xx.811

Files correlati     :
Ricompilazione Demo : [ ]
Commento           : Riportata la versione 1.5 fino alla patch 811


git-svn-id: svn://10.65.10.50/trunk@8985 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2000-05-05 15:25:49 +00:00
parent 623bb0d214
commit cbb608d183
386 changed files with 19476 additions and 11120 deletions

View File

@ -1462,12 +1462,14 @@ bool TMenu_application::test_programs()
TToken_string dangerous; TToken_string dangerous;
bool test = FALSE; bool test = FALSE;
bool more = FALSE;
{ {
TConfig prawin(CONFIG_INSTALL, "Main"); TConfig prawin(CONFIG_INSTALL, "Main");
test = prawin.get_bool("TestPrograms"); test = prawin.get_bool("TestPrograms");
} }
if (test) TExternal_app app("ba1 -6");
while (test)
{ {
TConfig install("install.ini", "Main"); TConfig install("install.ini", "Main");
TFilename remote_name = install.get("DiskPath"); TFilename remote_name = install.get("DiskPath");
@ -1499,22 +1501,22 @@ bool TMenu_application::test_programs()
{ {
dangerous.add(code); dangerous.add(code);
const TString& name = scan.token().mid(3); const TString& name = scan.token().mid(3);
warning_box("ATTENZIONE: Il modulo %s\ndeve essere aggiornato prima di poterlo utilizzare.", (const char*)name); if (!more)
warning_box("ATTENZIONE: Il modulo %s\ndeve essere aggiornato prima di poterlo utilizzare.", (const char*)name);
} }
} }
} }
} }
}
if (dangerous.not_empty() && user() == dongle().administrator()) if (more)
{ break;
TExternal_app app("ba1 -6"); if (dangerous.empty() ||
app.run(TRUE, TRUE, FALSE); (!more && !yesno_box("Vuoi aggiornare i moduli adesso?")))
return FALSE; break;
app.run(FALSE, TRUE, TRUE, TRUE);
more = TRUE; // ricontrolla
} }
_menu.set_dangerous_modules(dangerous); _menu.set_dangerous_modules(dangerous);
return TRUE; return TRUE;
} }
@ -1556,7 +1558,7 @@ bool TMenu_application::create()
TFilename menu = (argc() < 2) ? "baprassi" : argv(1); TFilename menu = (argc() < 2) ? "baprassi" : argv(1);
menu.ext("men"); menu.ext("men");
_menu.read(menu); _menu.read(menu);
dispatch_e_menu(MENU_ITEM(1)); dispatch_e_menu(MENU_ITEM(1));
} }
return TRUE; return TRUE;

View File

@ -1,8 +1,8 @@
PAGE "Colori" -1 -1 50 20 PAGE "Colori" -1 -1 50 19
GROUPBOX DLG_NULL 48 3 GROUPBOX DLG_NULL 48 3
BEGIN BEGIN
PROMPT 1 0 "Maschera" PROMPT 1 0 "@bMaschera"
END END
BUTTON 101 10 BUTTON 101 10
@ -22,7 +22,7 @@ END
GROUPBOX DLG_NULL 14 4 GROUPBOX DLG_NULL 14 4
BEGIN BEGIN
PROMPT 1 3 "Normale" PROMPT 1 3 "@bNormale"
END END
BUTTON 104 10 BUTTON 104 10
@ -37,7 +37,7 @@ END
GROUPBOX DLG_NULL 14 4 GROUPBOX DLG_NULL 14 4
BEGIN BEGIN
PROMPT 18 3 "Attivo" PROMPT 18 3 "@bAttivo"
END END
BUTTON 106 10 BUTTON 106 10
@ -52,7 +52,7 @@ END
GROUPBOX DLG_NULL 14 4 GROUPBOX DLG_NULL 14 4
BEGIN BEGIN
PROMPT 35 3 "Disabilitato" PROMPT 35 3 "@bDisabilitato"
END END
BUTTON 108 10 BUTTON 108 10
@ -72,7 +72,7 @@ END
GROUPBOX DLG_NULL 14 5 GROUPBOX DLG_NULL 14 5
BEGIN BEGIN
PROMPT 35 7 "Bottone" PROMPT 35 7 "@bBottone"
END END
BUTTON 110 10 BUTTON 110 10
@ -95,6 +95,11 @@ BEGIN
PROMPT 2 -1 "Campi 3D" PROMPT 2 -1 "Campi 3D"
END END
BUTTON 114 10 2
BEGIN
PROMT 19 -1 "Font"
END
GROUPBOX DLG_NULL 14 8 GROUPBOX DLG_NULL 14 8
BEGIN BEGIN
PROMPT 35 12 "" PROMPT 35 12 ""

View File

@ -1,22 +1,20 @@
#include <applicat.h> #include <applicat.h>
#include <dongle.h> #include <dongle.h>
#include <execp.h>
#include <isam.h> #include <isam.h>
#include <prefix.h> #include <prefix.h>
#include <progind.h> #include <progind.h>
#include <sheet.h> #include <sheet.h>
#include <urldefid.h>
#include <utility.h>
#include "ba1.h" #include "ba1.h"
class TPackFiles_application:public TApplication
class TPackFiles_application:public TSkeleton_application
{ {
TArray_sheet * _selsheet; TArray_sheet * _selsheet;
long _firm; long _firm;
protected: protected:
virtual bool menu(MENU_TAG); virtual void main_loop();
virtual bool create () ; virtual bool create () ;
virtual bool destroy(); virtual bool destroy();
virtual bool extended_firm() const { return TRUE; } virtual bool extended_firm() const { return TRUE; }
@ -30,7 +28,6 @@ public:
bool TPackFiles_application::create() // initvar e arrmask bool TPackFiles_application::create() // initvar e arrmask
{ {
TApplication::create();
_firm = get_firm(); _firm = get_firm();
if (!set_firm()) if (!set_firm())
return FALSE; return FALSE;
@ -40,8 +37,7 @@ bool TPackFiles_application::create() // initvar e arrmask
"@1|N.@5|Nome@20|EOD@7|EOX@7|Lung. |Descrizione@43|Flags@7" : "@1|N.@5|Nome@20|EOD@7|EOX@7|Lung. |Descrizione@43|Flags@7" :
"N.@5|Nome@20|EOD@7|EOX@7|Lung. |Descrizione@43|Flags@7", "N.@5|Nome@20|EOD@7|EOX@7|Lung. |Descrizione@43|Flags@7",
is_prassi ? 0 : 0x10); is_prassi ? 0 : 0x10);
dispatch_e_menu(BAR_ITEM(1)); return TSkeleton_application::create();
return TRUE ;
} }
bool TPackFiles_application::destroy() bool TPackFiles_application::destroy()
@ -49,7 +45,7 @@ bool TPackFiles_application::destroy()
{ {
if (_firm) set_firm(_firm); if (_firm) set_firm(_firm);
if (_selsheet != NULL) delete _selsheet; if (_selsheet != NULL) delete _selsheet;
return TApplication::destroy() ; return TSkeleton_application::destroy() ;
} }
void TPackFiles_application::build_sheet() void TPackFiles_application::build_sheet()
@ -99,14 +95,14 @@ void TPackFiles_application::search_blanks(TSystemisamfile& f)
f.close(); f.close();
} }
bool TPackFiles_application::menu(MENU_TAG m) void TPackFiles_application::main_loop()
{ {
KEY tasto; KEY tasto = K_ENTER;
while (tasto != K_ESC)
do
{ {
build_sheet(); build_sheet();
switch(tasto = _selsheet->run()) tasto = _selsheet->run();
switch(tasto)
{ {
case K_ENTER: case K_ENTER:
if (_selsheet->checked()>0) if (_selsheet->checked()>0)
@ -187,8 +183,7 @@ bool TPackFiles_application::menu(MENU_TAG m)
default: default:
break; break;
} }
} while (tasto != K_ESC); }
return FALSE;
} }
int ba1300(int argc, char** argv) int ba1300(int argc, char** argv)

View File

@ -83,7 +83,7 @@ ENDPAGE
PAGE "Permessi" -1 -1 78 20 PAGE "Permessi" -1 -1 78 20
TREE F_PERMESSI -3 -7 TREE F_PERMESSI -3 -8
BEGIN BEGIN
PROMPT 0 1 "" PROMPT 0 1 ""
END END

View File

@ -12,6 +12,7 @@
#include <text.h> #include <text.h>
#include <sheet.h> #include <sheet.h>
#include <utility.h> #include <utility.h>
#include <text.h>
#include "ba1.h" #include "ba1.h"
#include "ba1600.h" #include "ba1600.h"
@ -23,16 +24,21 @@ int find(const TString& name, TString_array & rows) ;
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Configurazione per installazione // Configurazione per installazione
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TFascicolator_mask;
class TCreazione_dischi : public TSkeleton_application class TCreazione_dischi : public TSkeleton_application
{ {
protected: protected:
TFascicolator_mask* _mask;
virtual bool use_files() const { return FALSE; } virtual bool use_files() const { return FALSE; }
virtual void main_loop(); virtual void main_loop();
public: public:
virtual bool modify_mode() { return FALSE;} virtual bool modify_mode() { return FALSE; }
TFascicolator_mask& mask() const { return *_mask; }
}; };
class TFascicolator : public TCreazione_dischi class TFascicolator : public TCreazione_dischi
{ {
protected: protected:
@ -42,7 +48,7 @@ public:
virtual bool modify_mode() { return TRUE;} virtual bool modify_mode() { return TRUE;}
}; };
inline TCreazione_dischi& app() { return (TCreazione_dischi&)main_app(); }
class TFconv_ini : public TConfig class TFconv_ini : public TConfig
{ {
@ -314,7 +320,7 @@ void TInstall_ini::version_info(const char* module,
ver.insert("19", 0); ver.insert("19", 0);
year = atoi(ver.left(4)); year = atoi(ver.left(4));
if (year == 0) if (year == 0)
main_app().get_version_info(year, release, tag, patchlevel); app().get_version_info(year, release, tag, patchlevel);
else else
{ {
release = atoi(ver.mid(4,2)); release = atoi(ver.mid(4,2));
@ -850,7 +856,6 @@ void TMod_composition_msk::save()
if (spc >= 0) n.cut(spc); if (spc >= 0) n.cut(spc);
n.ext("exe"); n.ext("exe");
TString16 sub = module; TString16 sub = module;
FOR_EACH_SHEET_ROW(sheet, sr, srow) FOR_EACH_SHEET_ROW(sheet, sr, srow)
{ {
if (n == srow->get(0)) if (n == srow->get(0))
@ -859,11 +864,11 @@ void TMod_composition_msk::save()
break; break;
} }
} }
ini.set(var, prow->get(2), sub); n = prow->get(2);
ini.set(var, n, sub);
} }
} }
TMod_composition_msk::TMod_composition_msk(const bool modify_mode) TMod_composition_msk::TMod_composition_msk(const bool modify_mode)
: TMask("ba1600b") : TMask("ba1600b")
{ {
@ -880,7 +885,9 @@ TMod_composition_msk::TMod_composition_msk(const bool modify_mode)
miss.set_notify(missing_notify); miss.set_notify(missing_notify);
miss.sheet_mask().set_handler(100, link_handler); miss.sheet_mask().set_handler(100, link_handler);
prog.sheet_mask().set_handler(102, isam_handler); prog.sheet_mask().set_handler(102, isam_handler);
} else { }
else
{
s.disable(); // Read-only sheet s.disable(); // Read-only sheet
//hide(DLG_OK); //hide(DLG_OK);
// hide(F_DESELECT); // hide(F_DESELECT);
@ -898,12 +905,12 @@ class TModule_mask : public TMask
{ {
bool _dirty_composition; bool _dirty_composition;
bool module_dependent(int row, TString_array &p_submodules, TString &sub_mod, TString &ver, int & patch) const ; bool module_dependent(int row, TString_array &p_submodules, TString &sub_mod, TString &ver, int & patch) const ;
public:
bool list_is_dirty() {return _dirty_composition;} public:
void dirty_composition( bool val=TRUE ) {_dirty_composition=val;} bool list_is_dirty() const { return _dirty_composition;}
bool check_patchlevels( TMod_composition_msk &mm); void dirty_composition(bool val = TRUE) { _dirty_composition = val; }
~TModule_mask() {} bool check_patchlevels(TMod_composition_msk &mm);
virtual ~TModule_mask() {}
}; };
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -916,6 +923,8 @@ protected:
static bool list_handler(TMask_field& f, KEY k); static bool list_handler(TMask_field& f, KEY k);
static bool confirm_handler(TMask_field& f, KEY k); static bool confirm_handler(TMask_field& f, KEY k);
static bool creazip_handler(TMask_field& f, KEY k); static bool creazip_handler(TMask_field& f, KEY k);
static bool testpatch_handler(TMask_field& f, KEY k);
static bool why_handler(TMask_field& f, KEY k);
static bool modules_notify(TSheet_field& f, int row, KEY k); static bool modules_notify(TSheet_field& f, int row, KEY k);
static bool import_export_handler(TMask_field& f, KEY k); static bool import_export_handler(TMask_field& f, KEY k);
static bool patchl_handler(TMask_field& f, KEY k); static bool patchl_handler(TMask_field& f, KEY k);
@ -1132,10 +1141,6 @@ bool TFascicolator_mask::list_handler(TMask_field& f, KEY k)
return TRUE; return TRUE;
} }
bool TCreadischi_mask::confirm_handler(TMask_field& f, KEY k) bool TCreadischi_mask::confirm_handler(TMask_field& f, KEY k)
{ {
return TRUE; return TRUE;
@ -1193,7 +1198,6 @@ bool TFascicolator_mask::confirm_handler(TMask_field& f, KEY k)
return TRUE; return TRUE;
} }
bool TFascicolator_mask::creazip_handler(TMask_field& f, KEY k) bool TFascicolator_mask::creazip_handler(TMask_field& f, KEY k)
{ {
if (k == K_SPACE) if (k == K_SPACE)
@ -1228,7 +1232,160 @@ bool TCreadischi_mask::creazip_handler(TMask_field& f, KEY k)
return TRUE; return TRUE;
} }
bool TCreadischi_mask::why_handler(TMask_field& f, KEY k)
{
if (k != K_SPACE)
return TRUE;
TArray_sheet& main_sheet = (TArray_sheet&)f.mask();
const TFilename stopfile = main_sheet.row(main_sheet.selected()).get(1);
TString16 module = stopfile.name(); module.cut(2);
TFilename path = app().mask().get(F_DISKPATH);
path.add(module); path << "????a.ini";
TString_array inifiles;
list_files(path, inifiles);
inifiles.sort();
TProgind pi(inifiles.items(), "Scansione archivi successivi...", FALSE, TRUE);
TString caption; caption << "File eliminabili da " << stopfile.name();
TArray_sheet sheet(3, 3, -3, -3, caption, "Modulo|File@20|Ultima Patch@50");
TAssoc_array files;
TString_array para;
TToken_string tok;
FOR_EACH_ARRAY_ROW_BACK(inifiles, numf, filename)
{
pi.addstatus(1);
const bool is_last = stopfile == *filename;
TConfig ini(*filename);
ini.list_paragraphs(para);
FOR_EACH_ARRAY_ROW_BACK(para, nump, paraname) if (paraname->len() == 3)
{
ini.set_paragraph(*paraname);
TAssoc_array& vars = ini.list_variables();
FOR_EACH_ASSOC_STRING(vars, obj, key, str)
{
if (strncmp(key, "File(", 5) == 0)
{
tok = str;
const int pipe = tok.find('|');
if (pipe > 0) tok.cut(pipe);
tok.lower();
if (is_last)
{
const TString* nextpatch = (const TString*)files.objptr(tok);
TToken_string row;
row = *paraname;
row.add(tok);
if (nextpatch)
row.add(*nextpatch);
else
row.add("*** Nessuna ***"); // Should never happen!
sheet.add(row);
}
else
{
if (!files.is_key(tok))
files.add(tok, *filename);
}
}
}
}
if (is_last) break;
}
sheet.run();
return FALSE;
}
bool TCreadischi_mask::testpatch_handler(TMask_field& f, KEY k)
{
if (k != K_SPACE)
return TRUE;
TMask& m = f.mask();
const TString& module = m.get(S_MODULE);
TFilename path = app().mask().get(F_DISKPATH);
path.add(module); path << "????a.ini";
TArray_sheet sheet(3, 3, -3, -3, "File eliminabili", "@1|Percorso assoluto@70");
sheet.add_button(DLG_USER+1, "Dettagli", 'D');
sheet.set_handler(DLG_USER+1, why_handler);
TString_array& inifiles = sheet.rows_array();
list_files(path, inifiles);
inifiles.sort();
if (inifiles.items() > 0)
{
TProgind pi(inifiles.items(), "Scansione archivi...", FALSE, TRUE);
TAssoc_array files;
TString_array para;
TToken_string tok;
FOR_EACH_ARRAY_ROW_BACK(inifiles, numf, filename)
{
pi.addstatus(1);
bool can_be_deleted = TRUE;
TConfig ini(*filename, module);
ini.list_paragraphs(para);
FOR_EACH_ARRAY_ROW_BACK(para, nump, paraname) if (paraname->len() == 3)
{
ini.set_paragraph(*paraname);
TAssoc_array& vars = ini.list_variables();
FOR_EACH_ASSOC_STRING(vars, obj, key, str)
{
if (strncmp(key, "File(", 5) == 0)
{
tok = str;
const int pipe = tok.find('|');
if (pipe > 0) tok.cut(pipe);
tok.lower();
if (!files.is_key(tok))
{
files.add(tok);
can_be_deleted = FALSE;
}
}
}
}
if (can_be_deleted)
filename->insert(" |", 0);
else
inifiles.destroy(numf, TRUE);
}
}
if (inifiles.items() == 0)
return message_box("Non e' stato rilevato nessun file eliminabile");
if (sheet.run() == K_ENTER)
{
const long tot = sheet.checked();
if (tot > 0 && yesno_box("Confermare la cancellazione di %ld file", tot))
{
TWait_cursor hourglass;
for (long i = sheet.items()-1; i >= 0; i--) if (sheet.checked(i))
{
for (int d = 1; d <= 9; d++)
{
TFilename name = sheet.row(i).get(1);
name.ext(""); name << d << ".zip";
if (::remove(name) != 0)
{
if (d == 1)
error_box("Errore di cancellazione del file %s", (const char*)name);
break;
}
}
}
}
}
return TRUE;
}
bool TCreadischi_mask::import_export_handler(TMask_field& f, KEY k) bool TCreadischi_mask::import_export_handler(TMask_field& f, KEY k)
{ {
@ -1295,15 +1452,15 @@ const TFilename& TCreadischi_mask::build_export_path(TFilename& path) const
path.cut(0); path.cut(0);
path << SLASH << "src" << SLASH << module; path << SLASH << "src" << SLASH << module;
if (!fexist(path)) if (!path.exist())
{ {
path.cut(0); path.cut(0);
path << SLASH << 'u' << SLASH << user() << SLASH << "src" << SLASH << module; path << SLASH << 'u' << SLASH << user() << SLASH << "src" << SLASH << module;
if (!fexist(path)) if (!path.exist())
{ {
path.cut(0); path.cut(0);
path << SLASH << 'u' << SLASH << user() << SLASH << "p.due" << SLASH << module; path << SLASH << 'u' << SLASH << user() << SLASH << "p.due" << SLASH << module;
if (!fexist(path)) if (!path.exist())
path.tempdir(); path.tempdir();
} }
} }
@ -1369,13 +1526,9 @@ void TCreadischi_mask::load()
void TCreadischi_mask::save() void TCreadischi_mask::save()
{ {
TSheet_field& s = sfield(F_SHEET);
TInstall_ini ini; TInstall_ini ini;
ini.set("DiskSize", get(F_DISKSIZE)); ini.set("DiskSize", get(F_DISKSIZE));
ini.set("DiskPath", get(F_DISKPATH)); ini.set("DiskPath", get(F_DISKPATH));
} }
@ -1802,6 +1955,7 @@ TCreadischi_mask::TCreadischi_mask()
m.set_handler(S_LIST, list_handler); m.set_handler(S_LIST, list_handler);
m.set_handler(S_CREATEZIP, creazip_handler); m.set_handler(S_CREATEZIP, creazip_handler);
m.set_handler(S_CREATEPATCH, creazip_handler); m.set_handler(S_CREATEPATCH, creazip_handler);
m.set_handler(S_TESTPATCH, testpatch_handler);
m.hide(S_IMPORT); m.hide(S_IMPORT);
m.set_handler(S_EXPORT, import_export_handler); m.set_handler(S_EXPORT, import_export_handler);
s.disable(); s.disable();
@ -1831,22 +1985,22 @@ TFascicolator_mask::TFascicolator_mask()
s.enable_column(S_POSTPROCESS,TRUE); s.enable_column(S_POSTPROCESS,TRUE);
} }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Programma principale // Programma principale
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
void TFascicolator::main_loop() void TFascicolator::main_loop()
{ {
TFascicolator_mask m; _mask = new TFascicolator_mask;
m.load(); _mask->load();
int key; int key;
do do
{ {
key=m.run(); key = _mask->run();
if (key == K_ENTER) if (key == K_ENTER)
m.save(); _mask->save();
} }
while (key != K_ENTER && key != K_QUIT); while (key != K_ENTER && key != K_QUIT);
delete _mask; _mask = NULL;
} }

View File

@ -21,7 +21,8 @@
#define S_LIST 100 #define S_LIST 100
#define S_CREATEZIP 151 #define S_CREATEZIP 151
#define S_CREATEPATCH 152 #define S_CREATEPATCH 152
#define S_IMPORT 153 #define S_TESTPATCH 153
#define S_EXPORT 154 #define S_IMPORT 160
#define S_EXPORT 161
#endif #endif

View File

@ -48,7 +48,7 @@ ENDPAGE
ENDMASK ENDMASK
PAGE "Modulo" -1 -1 52 12 PAGE "Modulo" -1 -1 52 14
STRING 101 36 STRING 101 36
BEGIN BEGIN
@ -98,41 +98,45 @@ BEGIN
// FLAGS "D" // FLAGS "D"
END END
BUTTON DLG_CANCEL 14 2 BUTTON DLG_OK 22 2
BEGIN BEGIN
PROMPT -12 -1 "" PROMPT -12 -1 ""
END END
BUTTON DLG_OK 14 2 BUTTON DLG_CANCEL 22 2
BEGIN BEGIN
PROMPT -22 -1 "" PROMPT -22 -1 ""
END END
BUTTON S_CREATEZIP 20 2 BUTTON S_CREATEZIP 22 2
BEGIN BEGIN
PROMPT -12 -5 "Crea &Versione" PROMPT -12 6 "Crea &Versione"
END END
BUTTON S_CREATEPATCH 20 2 BUTTON S_CREATEPATCH 22 2
BEGIN BEGIN
PROMPT -22 -5 "Crea &Aggiornamento" PROMPT -12 8 "Crea &Aggiornamento"
END END
BUTTON S_LIST 14 1 BUTTON S_TESTPATCH 22 2
BEGIN BEGIN
PROMPT -13 -4 "Lista file" PROMPT -12 10 "&Patch Obsolete"
END END
BUTTON S_IMPORT 14 1 BUTTON S_LIST 22 2
BEGIN BEGIN
PROMPT -23 -4 "&Importa lista" PROMPT -22 6 "&Lista file"
END END
BUTTON S_EXPORT 14 1 BUTTON S_IMPORT 22 2
BEGIN BEGIN
PROMPT -33 -4 "&Esporta lista" PROMPT -22 8 "&Importa lista"
END END
BUTTON S_EXPORT 22 2
BEGIN
PROMPT -22 10 "&Esporta lista"
END
ENDPAGE ENDPAGE

View File

@ -201,7 +201,7 @@ int TInstaller_mask::precheck_modules(bool only_newer)
&& main_app().has_module(modnumber,CHK_DONGLE) ) && main_app().has_module(modnumber,CHK_DONGLE) )
{ {
// checca il modulo o la patch se ho installata la stessa versione // checca il modulo o la patch se ho installata la stessa versione
const bool chk = row(r).get_char(C_ISPATCH) == ' ' || release == row(r).get(C_CURRRELEASE) ; const bool chk = row(r).get_char(C_ISPATCH) != 'X' || release == row(r).get(C_CURRRELEASE) ;
check(r,chk ); check(r,chk );
} }
} }

View File

@ -85,7 +85,7 @@ END
BROWSEFILE F_COLUMNIZER 75 5 BROWSEFILE F_COLUMNIZER 75 5
BEGIN BEGIN
PROMPT 1 6 "" PROMPT 1 7 ""
END END
SPREADSHEET F_FIELDS 78 SPREADSHEET F_FIELDS 78

View File

@ -1,8 +1,11 @@
#include <direct.h>
#include <applicat.h> #include <applicat.h>
#include <archives.h> #include <config.h>
#include <isam.h> #include <isam.h>
#include <mask.h> #include <mask.h>
#include <prefix.h> #include <prefix.h>
#include <archives.h>
#include "ba2200.h" #include "ba2200.h"
@ -18,7 +21,7 @@ protected:
virtual bool create(); virtual bool create();
virtual void main_loop(); virtual void main_loop();
static bool test_firm(TMask_field& f, KEY k); static bool test_firm(TMask_field& f, KEY k);
KEY query(long& firm, char& floppy, TString& desc, bool& temp, bool& zip) const; KEY query(int& mode, long& firm, char& floppy, TString& desc, bool& tmp, bool& zip) const;
public: public:
void stop_job(); void stop_job();
@ -54,15 +57,14 @@ bool TArchive_app::test_firm(TMask_field& f, KEY k)
{ {
if (k == K_SPACE) if (k == K_SPACE)
{ {
const char* d = f.mask().get(F_CODDITTA); const long firm = f.mask().get_long(F_CODDITTA);
const long firm = atol(d);
if (firm > 0 && !prefix().exist(firm)) if (firm > 0 && !prefix().exist(firm))
return f.error_box("La ditta %s non esiste.",d); return f.error_box("La ditta %ld non esiste.", firm);
} }
return TRUE; return TRUE;
} }
KEY TArchive_app::query(long& firm, char& floppy, TString& desc, bool& temp, bool& zip) const KEY TArchive_app::query(int& mode, long& firm, char& floppy, TString& desc, bool& temp, bool& zip) const
{ {
TMask m("ba2200"); TMask m("ba2200");
@ -71,11 +73,24 @@ KEY TArchive_app::query(long& firm, char& floppy, TString& desc, bool& temp, boo
const KEY k = m.run(); const KEY k = m.run();
if (k != K_QUIT) if (k != K_QUIT)
{ {
if (m.get(F_DATA) == "T") mode = 0x0;
firm = -1; firm = 0L;
else
if (m.get_bool(F_COM))
mode |= 0x1;
if (m.get_bool(F_DITTA))
{
mode |= 0x2;
firm = m.get_long(F_CODDITTA); firm = m.get_long(F_CODDITTA);
}
if (m.get_bool(F_CONFIG))
mode |= 0x4;
if (m.get_bool(F_770))
mode |= 0x8;
if (m.get_bool(F_CESP))
mode |= 0x10;
floppy = m.get(F_FLOPPY)[0]; floppy = m.get(F_FLOPPY)[0];
desc = m.get(F_DESCR); desc = m.get(F_DESCR);
temp = m.get_bool(F_TEMP); temp = m.get_bool(F_TEMP);
@ -92,32 +107,38 @@ KEY TArchive_app::query(long& firm, char& floppy, TString& desc, bool& temp, boo
void TArchive_app::main_loop() void TArchive_app::main_loop()
{ {
KEY k; KEY k;
int mode;
long firm; long firm;
char floppy; char floppy;
TString desc(80); TString desc(80);
bool temp; bool temp;
bool zip; bool zip;
while ((k = query(firm, floppy, desc, temp, zip)) != K_QUIT) while ((k = query(mode, firm, floppy, desc, temp, zip)) != K_QUIT)
{ {
if (k == K_SAVE) if (mode)
{ {
if (zip) if (k == K_SAVE)
_arc.zip(firm, floppy, desc); {
if (zip)
_arc.zip(firm, floppy, desc);
#if XVT_OS == XVT_OS_WIN #if XVT_OS == XVT_OS_WIN
else else
_arc.backup(firm, floppy, desc); _arc.backup(firm, floppy, desc);
#endif #endif
}
else
{
if (zip)
_arc.unzip(firm, floppy, temp);
#if XVT_OS == XVT_OS_WIN
else
_arc.restore(firm, floppy, temp);
#endif
}
} }
else else
{ error_box("Non e' stato specificato nessun archivio");
if (zip)
_arc.unzip(firm, floppy, temp);
#if XVT_OS == XVT_OS_WIN
else
_arc.restore(firm, floppy, temp);
#endif
}
} }
} }

View File

@ -1,9 +1,16 @@
#define F_CODDITTA 101 #define F_CODDITTA 101
#define F_RAGSOC 102 #define F_RAGSOC 102
#define F_DATA 103
#define F_FLOPPY 104 #define F_FLOPPY 104
#define F_DESCR 105 #define F_DESCR 105
#define F_TEMP 106 #define F_TEMP 106
#define F_SALVA 107 #define F_SALVA 107
#define F_RIPR 108 #define F_RIPR 108
#define F_ZIP 109 #define F_ZIP 109
#define F_ALL 110
#define F_DITTA 111
#define F_COM 112
#define F_CONFIG 113
#define F_770 114
#define F_CESP 115

View File

@ -1,6 +1,6 @@
#include "ba2200.h" #include "ba2200.h"
PAGE "Salvataggio / Ripristino archivi" -1 -1 72 8 PAGE "Salvataggio / Ripristino archivi" -1 -1 72 12
LIST F_FLOPPY 1 5 LIST F_FLOPPY 1 5
BEGIN BEGIN
@ -9,43 +9,73 @@ BEGIN
ITEM "B|B:" ITEM "B|B:"
END END
LIST F_DATA 1 14 BOOLEAN F_DITTA
BEGIN BEGIN
PROMPT 17 1 "Dati " PROMPT 20 1 "Dati ditta"
ITEM " |Ditta" MESSAGE ENABLE,1@ MESSAGE TRUE ENABLE,1@|"X",F_770
ITEM "C|Dati comuni" MESSAGE CLEAR,1@|"Archivi comuni",F_RAGSOC MESSAGE FALSE CLEAR,1@
ITEM "T|Tutti" MESSAGE CLEAR,1@|"Archivi comuni e ditte",F_RAGSOC END
END
BOOLEAN F_COM
BEGIN
PROMPT 20 2 "Dati comuni"
MESSAGE TRUE "X",F_CONFIG
END
BOOLEAN F_CONFIG
BEGIN
PROMPT 20 3 "File di configurazione"
END
BOOLEAN F_770
BEGIN
PROMPT 20 4 "Dati 770"
END
BOOLEAN F_CESP
BEGIN
PROMPT 20 5 "Cespiti"
END
NUMBER F_CODDITTA 5 NUMBER F_CODDITTA 5
BEGIN BEGIN
PROMPT 56 1 "Ditta " PROMPT 48 1 "Ditta "
USE LF_NDITTE USE LF_NDITTE
INPUT CODDITTA F_CODDITTA INPUT CODDITTA F_CODDITTA
DISPLAY "Codice" CODDITTA DISPLAY "Codice" CODDITTA
DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT F_CODDITTA CODDITTA OUTPUT F_CODDITTA CODDITTA
OUTPUT F_RAGSOC RAGSOC OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED CHECKTYPE NORMAL
WARNING "Specificare la ditta su cui lavorare"
GROUP 1 GROUP 1
END END
TEXT DLG_NULL
BEGIN
PROMPT 48 2 "Non specificata = Tutte"
END
BUTTON F_ALL 10 2
BEGIN
PROMPT 56 4 "~Tutti"
MESSAGE "X",F_DITTA|"X",F_COM|"X",F_CONFIG|"X",F_770|"X",F_CESP
END
STRING F_RAGSOC 50 STRING F_RAGSOC 50
BEGIN BEGIN
PROMPT 1 2 "Ragione Sociale " PROMPT 1 6 "Ragione Sociale "
USE LF_NDITTE KEY 2 USE LF_NDITTE KEY 2
INPUT RAGSOC F_RAGSOC INPUT RAGSOC F_RAGSOC
DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Codice@10" CODDITTA DISPLAY "Codice@10" CODDITTA
COPY OUTPUT F_CODDITTA COPY OUTPUT F_CODDITTA
CHECKTYPE REQUIRED CHECKTYPE NORMAL
GROUP 1 GROUP 1
END END
STRING F_DESCR 50 STRING F_DESCR 50
BEGIN BEGIN
PROMPT 1 3 "Descrizione " PROMPT 1 7 "Descrizione "
END END
BOOLEAN F_ZIP BOOLEAN F_ZIP
@ -56,7 +86,7 @@ END
BOOLEAN F_TEMP BOOLEAN F_TEMP
BEGIN BEGIN
PROMPT 1 5 "Usare direttorio temporaneo durante il ripristino" PROMPT 1 8 "Usare direttorio temporaneo durante il ripristino"
END END
BUTTON F_SALVA 15 2 BUTTON F_SALVA 15 2

View File

@ -166,7 +166,7 @@ TEditMask_control* TEditMask_window::find_sheet(int i)
{ {
TEditMask_control& sh=(TEditMask_control& )_controls[j]; TEditMask_control& sh=(TEditMask_control& )_controls[j];
if (sh.get_idsheet()==i) if (sh.get_idsheet()==i)
return &sh; return &sh;
} }
return NULL; return NULL;
} }
@ -195,12 +195,12 @@ void TEditMask_window::save_page(ostream& out)
_controls.sort(compare);//ordinamento secondo la priorità focus _controls.sort(compare);//ordinamento secondo la priorità focus
for(int k=1;k<=_total_page ;k++) for (int k=1; k <= _total_page ; k++)
{ {
if(page_null(k)) if (page_null(k))
{ {
out<<"PAGE \""<< _name[k] <<"\" "<< _coordx <<" " <<_coordy; out << "PAGE \""<< _name[k] <<"\" "<< _coordx <<" " <<_coordy;
out<<" " <<_lung <<" " <<_alt << "\n\n"; out << " " <<_lung <<" " <<_alt << "\n\n";
for(int i=0; i<_controls.items(); i++) for(int i=0; i<_controls.items(); i++)
{ {
TEditMask_control& up=(TEditMask_control& )_controls[i]; TEditMask_control& up=(TEditMask_control& )_controls[i];
@ -217,10 +217,10 @@ void TEditMask_window::save_page(ostream& out)
else out<<_controls[i]; else out<<_controls[i];
} }
} }
out<<"ENDPAGE\n\n"; out << "ENDPAGE\n\n";
} }
} }
out<<"\nENDMASK\n\n"; out << "\nENDMASK\n\n";
} }
@ -248,9 +248,10 @@ void TEditMask_window::create_file()
if(up.type()=="BUTTON ") if(up.type()=="BUTTON ")
{ {
TString tipo=up.ident(); TString tipo=up.ident();
if(tipo=="DLG_OK" || tipo=="DLG_CANCEL" ||\ if (tipo=="DLG_OK" || tipo=="DLG_CANCEL" ||
tipo=="DLG_DELREC" ||tipo=="DLG_QUIT" || tipo=="DLG_PRINT" ||\ tipo=="DLG_DELREC" ||tipo=="DLG_QUIT" || tipo=="DLG_PRINT" ||
tipo=="DLG_SELECT") up.set_prompt(""); tipo=="DLG_SELECT")
up.set_prompt("");
} }
if(xvt_rect_has_point(&r,p) != 0) if(xvt_rect_has_point(&r,p) != 0)
file<<_controls[i]; file<<_controls[i];
@ -272,21 +273,21 @@ void TEditMask_window::create_file()
//Creazione del file .h //Creazione del file .h
void TEditMask_window::create_fileh() void TEditMask_window::create_fileh()
{ {
TFilename header(_file); TFilename header(_file);
header.lower(); header.lower();
header.ext("h"); header.ext("h");
ofstream fileh(header); ofstream fileh(header);
int k=101; int k=101;
for(int i=0; i<_controls.items(); i++) for(int i=0; i<_controls.items(); i++)
{ {
TEditMask_control& up=(TEditMask_control& )_controls[i]; TEditMask_control& up=(TEditMask_control& )_controls[i];
if(up.ident()!=("DLG_NULL")) if(up.ident()!=("DLG_NULL"))
{ {
fileh<<"#define "<<up.ident()<< " "<< k <<'\n'; fileh<<"#define "<<up.ident()<< " "<< k <<'\n';
k++; k++;
} }
} }
} }
//Definizione di un controllo disabilitato o nascosto //Definizione di un controllo disabilitato o nascosto
@ -446,14 +447,16 @@ void TEditMask_control::get_field(TMask& mask)
//Setta le dimensioni del controllo //Setta le dimensioni del controllo
void TEditMask_control::set_dim(int ln, int lg) void TEditMask_control::set_dim(int ln, int lg)
{ {
_latox=ln; _latoy=lg; _latox = ln;
_rct=resize_rect(_left,_top,_latox,_latoy,WO_TE,_intool); _latoy = lg;
_rct = resize_rect(_left,_top,_latox,_latoy,WO_TE,_intool);
} }
//Setta le coordinate del controllo //Setta le coordinate del controllo
void TEditMask_control::set_crd(int x, int y) void TEditMask_control::set_crd(int x, int y)
{ {
_left=x; _top=y; _left = x;
_top = y;
} }
//Legge dalla maschera di supporto i campi comuni opzionali //Legge dalla maschera di supporto i campi comuni opzionali
@ -470,59 +473,58 @@ void TEditMask_control::get_option(TMask& mask)
//Stampa su file .uml il controllo(i campi comuni e particolari) //Stampa su file .uml il controllo(i campi comuni e particolari)
void TEditMask_control::print_on(ostream& out) const void TEditMask_control::print_on(ostream& out) const
{ {
char c; char c;
out<<" BEGIN"<<"\n" ;
out<<" PROMPT " << _left << " " <<_top<<" \"";
out<<" BEGIN"<<"\n" ; out<<_prompt;
out<<" PROMPT " << _left << " " <<_top<<" \""; for(int i=off(); i > 0; i--)
out << ' ';
out<<_prompt; out<<"\"\n";
for(int i=off(); i > 0; i--)
out << ' ';
out<<"\"\n";
if(_flag.not_empty())
{
for(int j=0;j<_flag.len();j++)
{
c=toupper(_flag.operator[](j));
if(c==' ') ;
else out<<" FLAGS "<<"\""<< c <<"\"\n";
}
}
print_message(out);
if(_group.not_empty())
out<<" GROUP "<<_group<<"\n";
if(_field.not_empty())
{
out<<" FIELD ";
for(int f=0;f<_field.len();f++)
{
c=toupper(_field.operator[](f));
out<<c;
}
out<<"\n";
}
if(_key.not_empty()) if(_flag.not_empty())
out<<" KEY "<<_key<<"\n"; {
for(int j=0;j<_flag.len();j++)
{
if(_check.not_empty()) c=toupper(_flag.operator[](j));
{ if (c!=' ')
if(_check!=("a")) out<<" FLAGS "<<"\""<< c <<"\"\n";
out<<" CHECKTYPE "; }
if(_check==("b")) out<<"NORMAL\n"; }
if(_check==("c")) out<<"REQUIRED\n";
if(_check==("d")) out<<"SEARCH\n"; print_message(out);
if(_check==("e")) out<<"FORCED\n";
} if(_group.not_empty())
out<<" GROUP "<<_group<<"\n";
if(_warning.not_empty())
out<<" WARNING \""<<_warning<<"\"\n"; if(_field.not_empty())
{
out<<" FIELD ";
for(int f=0;f<_field.len();f++)
{
c=toupper(_field.operator[](f));
out<<c;
}
out<<"\n";
}
if(_key.not_empty())
out<<" KEY "<<_key<<"\n";
if(_check.not_empty())
{
if(_check!=("a"))
out<<" CHECKTYPE ";
if (_check==("b")) out << "NORMAL\n";
if (_check==("c")) out << "REQUIRED\n";
if (_check==("d")) out << "SEARCH\n";
if (_check==("e")) out << "FORCED\n";
}
if(_warning.not_empty())
out<<" WARNING \"" << _warning << "\"\n";
} }
//Legge da file .uml lecaratteristiche comuni dei controlli //Legge da file .uml lecaratteristiche comuni dei controlli
@ -532,11 +534,11 @@ void TEditMask_control::read_field(TScanner& scanner,const TString& tok,bool int
if(tok=="PROMPT") if(tok=="PROMPT")
{ {
_left=scanner.integer(); _left = scanner.integer();
_top=scanner.integer(); _top = scanner.integer();
_prompt=scanner.string(); _prompt = scanner.string();
_intool = intool; _intool = intool;
_rct=resize_rect(_left,_top,_latox,_latoy,WO_TE,intool); _rct = resize_rect(_left,_top,_latox,_latoy,WO_TE,intool);
} }
if(tok=="FLAGS" || tok=="WARNING") if(tok=="FLAGS" || tok=="WARNING")
@ -716,7 +718,7 @@ void TEditMask_string::print_use(ostream& out)const
for(int y=0;_use[k]!='\n' && _use[k];k++,y++) for(int y=0;_use[k]!='\n' && _use[k];k++,y++)
in[y]=_use[k]; in[y]=_use[k];
in[y]='\0'; in[y]='\0';
out<<" "<<in<<"\n"; out<<" "<< in <<"\n";
if(!_use[k]) break; if(!_use[k]) break;
} }
} }
@ -1370,52 +1372,56 @@ TEditMask_group::TEditMask_group(const TEditMask_group& ctl)
//Presenza o no del flags "R" //Presenza o no del flags "R"
bool TEditMask_group::fl_crt() const bool TEditMask_group::fl_crt() const
{ {
TString fl=flag(); TString fl=flag();
if(fl.find('R')!=-1 || fl.find('r')!=-1) if(fl.find('R')!=-1 || fl.find('r')!=-1)
return TRUE; return TRUE;
return FALSE; return FALSE;
} }
//Fa l'update del controllo //Fa l'update del controllo
void TEditMask_group::update()const void TEditMask_group::update()const
{ {
RCT r=rectangle(); RCT r=rectangle();
if(fl_crt()) padre().set_pen(MASK_DARK_COLOR); if(fl_crt())
else padre().set_pen(MASK_LIGHT_COLOR); padre().set_pen(MASK_DARK_COLOR);
line(r.left,r.top+ROWY,r.right,r.top+ROWY); else
line(r.left,r.top+ROWY,r.left,r.bottom); padre().set_pen(MASK_LIGHT_COLOR);
if(fl_crt()) padre().set_pen(MASK_LIGHT_COLOR); line(r.left,r.top+1+ROWY/2,r.right,r.top+1+ROWY/2);
else padre().set_pen(MASK_DARK_COLOR); line(r.left,r.top+1+ROWY/2,r.left,r.bottom+1-ROWY/2);
line(r.right,r.top+ROWY,r.right,r.bottom); if(fl_crt())
line(r.left,r.bottom,r.right,r.bottom); padre().set_pen(MASK_LIGHT_COLOR);
padre().set_pen(COLOR_BLACK); else
frase(r.left+2,r.top); padre().set_pen(MASK_DARK_COLOR);
line(r.right,r.top+1+ROWY/2,r.right,r.bottom+1-ROWY/2);
line(r.left,r.bottom+1-ROWY/2,r.right,r.bottom+1-ROWY/2);
padre().set_pen(COLOR_BLACK);
frase(r.left+2,r.top);
} }
//Gestisce la maschera di supporto //Gestisce la maschera di supporto
KEY TEditMask_group::main_loop() KEY TEditMask_group::main_loop()
{ {
TMask _mask("ba2600p"); TMask _mask("ba2600p");
TSheet_field& s=_mask.sfield(F_MESSAGE); TSheet_field& s=_mask.sfield(F_MESSAGE);
set_field(_mask);
set_option(_mask); set_field(_mask);
set_message(s); set_option(_mask);
_mask.set(F_LARGE,_latoy); set_message(s);
_mask.set(F_LONGEFF,_latox); _mask.set(F_LARGE,_latoy);
KEY k= _mask.run(); _mask.set(F_LONGEFF,_latox);
if(k==K_ENTER) KEY k= _mask.run();
{ if(k==K_ENTER)
get_field(_mask); {
get_option(_mask); get_field(_mask);
get_message(s); get_option(_mask);
_latoy=_mask.get_int(F_LARGE); get_message(s);
_latox=_mask.get_int(F_LONGEFF); _latoy=_mask.get_int(F_LARGE);
set_dim(_latox,_latoy); _latox=_mask.get_int(F_LONGEFF);
} set_dim(_latox,_latoy);
return k; }
return k;
} }
//Stampa su file .uml il controllo //Stampa su file .uml il controllo
@ -2211,36 +2217,36 @@ bool TEditMask_control::contains(const PNT pnt)
//Ritorna il controllo avente il punto pnt //Ritorna il controllo avente il punto pnt
TEditMask_control* TEditMask_window::search(const PNT& pnt) TEditMask_control* TEditMask_window::search(const PNT& pnt)
{ {
for(int i=_controls.items()-1; i >= 0; i--) for(int i=_controls.items()-1; i >= 0; i--)
{ {
TEditMask_control& down=(TEditMask_control& )_controls[i]; TEditMask_control& down=(TEditMask_control& )_controls[i];
if (_page==down.page() && down.contains(pnt)) if (_page==down.page() && down.contains(pnt))
{ {
down.set_selected(TRUE); down.set_selected(TRUE);
return &down; return &down;
} }
} }
return NULL; return NULL;
} }
//Ritorna TRUE se esistono controlli selezionati //Ritorna TRUE se esistono controlli selezionati
bool TEditMask_window::search(RCT* rct) bool TEditMask_window::search(RCT* rct)
{ {
bool sel=FALSE; bool sel=FALSE;
for(int i=_controls.items()-1; i >= 0; i--) for(int i=_controls.items()-1; i >= 0; i--)
{ {
TEditMask_control& down=(TEditMask_control& )_controls[i]; TEditMask_control& down=(TEditMask_control& )_controls[i];
PNT p={down.rectangle().top,down.rectangle().left}; PNT p={down.rectangle().top,down.rectangle().left};
bool selected=xvt_rect_has_point(rct,p) != 0; bool selected=xvt_rect_has_point(rct,p) != 0;
if (selected && _page==down.page()) if (selected && _page == down.page())
{ {
down.set_selected(TRUE); down.set_selected(TRUE);
sel=TRUE; sel=TRUE;
selected=FALSE; selected=FALSE;
} }
} }
return sel; return sel;
} }
@ -2254,9 +2260,9 @@ bool TEditMask_control::redesign(int dx, int dy)
if (_left < 0) _left = 0; if (_left < 0) _left = 0;
if (_left > 78) _left = 78; if (_left > 78) _left = 78;
_top = log.v + dy / ROWY; _top = log.v + dy / ROWY ;
if (_top < 0) _top = 0; if (_top < 0) _top = 0;
if (_top > 19) _top = 19; if (_top > ROWY) _top = ROWY;
resize_rect(); resize_rect();
@ -2955,7 +2961,7 @@ void TEditMask_window::get_mask(TMask& m)
} }
//Legge da file .uml solo i controlli //Legge da file .uml solo i controlli
void TEditMask_window::read_control(TScanner& scanner,const TString& k, bool intool) //aggiunge i controlli TEditMask_control* TEditMask_window::read_control(TScanner& scanner,const TString& k, bool intool) //aggiunge i controlli
{ {
TEditMask_control* ctl=NULL; TEditMask_control* ctl=NULL;
@ -2978,9 +2984,12 @@ void TEditMask_window::read_control(TScanner& scanner,const TString& k, bool int
} }
if (k == "RA") ctl = addradio(); if (k == "RA") ctl = addradio();
if(ctl) ctl->read_from(scanner, intool); if(ctl)
ctl->read_from(scanner, intool);
/* else /* else
warning_box("Ce sta' un campo un po' strano.. AGGIORNAMI!! "); */ warning_box("Ce sta' un campo un po' strano.. AGGIORNAMI!! "); */
return ctl;
} }
//Legge da file .uml solo le proprietà della pagina //Legge da file .uml solo le proprietà della pagina
@ -2999,77 +3008,87 @@ void TEditMask_window::read_page(TScanner& scanner, int pg,bool tool)
//Legge da file .uml solo la toolbar //Legge da file .uml solo la toolbar
bool TEditMask_window::read_tool(TScanner& scanner) bool TEditMask_window::read_tool(TScanner& scanner)
{ {
TString s; TString s;
_name.add(scanner.string(),0); _name.add(scanner.string(),0);
set_toolbar(TRUE); set_toolbar(TRUE);
scanner.rectangle(_rt); scanner.rectangle(_rt);
_y_tool=_rt.top; _y_tool=_rt.top;
s=scanner.pop(); if (_y_tool < 0)
while(s!="ENDPAGE") _y_tool = _y_tool + 22;
{ s=scanner.pop();
read_control(scanner,scanner.key(), TRUE); int fieldno=1;
s=scanner.pop(); while(s!="ENDPAGE")
} {
TEditMask_control* ctrl = read_control(scanner,scanner.key(), TRUE);
if (ctrl)
ctrl->set_focus(fieldno++);
s=scanner.pop();
}
return TRUE; return TRUE;
} }
//Gestisce la lettura da file .uml della "maschera" //Gestisce la lettura da file .uml della "maschera"
void TEditMask_window::restore_mask(const char* filename) void TEditMask_window::restore_mask(const char* filename)
{ {
int pg=0,sh=0; int pg=0,sh=0;
TString in; TString in;
bool tool=FALSE, endpage=FALSE; bool tool=FALSE, endpage=FALSE;
_file=filename; _file=filename;
_file.lower(); _file.lower();
TScanner scanner(_file); TScanner scanner(_file);
TEditMask_window* w=this; TEditMask_window* w=this;
in=scanner.pop(); in=scanner.pop();
if(scanner.ok()) if(scanner.ok())
{
while(!scanner.eof())
{ {
while(!scanner.eof()) for(int i=-1; i<_nsheet; i++)
{ {
for(int i=-1; i<_nsheet; i++) if(_nsheet!=0)
{ {
if(_nsheet!=0) pg=0; sh++;
tool=FALSE;
in=scanner.pop();
w=find_sheet(sh)->figlio();
}
while (in!="ENDMASK")
{
while (in!="ENDPAGE")
{ {
pg=0; sh++; if (in =="TOOLBAR")
tool=FALSE;
in=scanner.pop();
w=find_sheet(sh)->figlio();
}
while (in!="ENDMASK")
{
while(in!="ENDPAGE")
{ {
if(in =="TOOLBAR") tool=w->read_tool(scanner);
in=scanner.pop();
}
if (in == "PAGE")
{
pg++;
int fieldno=1;
w->read_page(scanner, pg, tool);
in=scanner.pop();
while (in != "ENDPAGE")
{ {
tool=w->read_tool(scanner); TEditMask_control* ctrl = w->read_control(scanner,scanner.key());
in=scanner.pop(); if (ctrl)
} ctrl->set_focus(fieldno++);
if(in =="PAGE")
{
pg++; w->read_page(scanner,pg,tool);
in=scanner.pop(); in=scanner.pop();
while(in!="ENDPAGE") }
{ endpage=TRUE;
w->read_control(scanner,scanner.key());
in=scanner.pop();
}
endpage=TRUE;
}
if(!endpage) in=scanner.pop();
} }
in=scanner.pop(); if (!endpage)
} in=scanner.pop();
}
in=scanner.pop();
} }
in=scanner.pop(); }
} in=scanner.pop();
} }
endpage=tool=FALSE; }
endpage=tool=FALSE;
} }
//Salva come.. la "maschera" su file .uml //Salva come.. la "maschera" su file .uml
@ -3226,42 +3245,43 @@ void TMaskEditor_application::new_mask()
void TMaskEditor_application::open_mask() void TMaskEditor_application::open_mask()
{ {
TFilename in; TFilename in;
if (_dirty && !_save && yesno_box("Salvare la maschera corrente?") == K_YES) if (_dirty && !_save && yesno_box("Salvare la maschera corrente?") == K_YES)
save_as_mask(); save_as_mask();
_dirty = _save = FALSE; _dirty = _save = FALSE;
destroy_window(); destroy_window();
FILE_SPEC fs; FILE_SPEC fs;
memset(&fs, 0, sizeof(FILE_SPEC)); memset(&fs, 0, sizeof(FILE_SPEC));
strcpy(fs.type, "UML"); strcpy(fs.type, "UML");
strcpy(fs.name, ""); strcpy(fs.name, "");
strcpy(fs.creator, "ba2"); strcpy(fs.creator, "ba2");
xvt_fsys_get_default_dir(&fs.dir); xvt_fsys_get_default_dir(&fs.dir);
if (xvt_dm_post_file_open(&fs, "Apri file:") == FL_OK) //apre solo virtualmente if (xvt_dm_post_file_open(&fs, "Apri file:") == FL_OK) //apre solo virtualmente
{ {
xvt_fsys_set_dir(&fs.dir); xvt_fsys_set_dir(&fs.dir);
in=fs.name; in=fs.name;
in.lower(); in.lower();
} }
else return; else return;
if(!in.exist()) { if(!in.exist())
xvt_dm_post_error("Il file non può essere aperto... non esiste!"); {
return; xvt_dm_post_error("Il file non può essere aperto... non esiste!");
} return;
else }
{ else
destroy_window(); {
_window = new TEditMask_window(-1,-1,68,16,"Maschera", WSF_SIZE,W_DOC); destroy_window();
_save=TRUE; _window = new TEditMask_window(-1,-1,68,16,"Maschera", WSF_SIZE,W_DOC);
_window->set_mod(FALSE); _save=TRUE;
_window->open(); _window->set_mod(FALSE);
_window->restore_mask(fs.name); _window->open();
_window->force_update(); _window->restore_mask(fs.name);
} _window->force_update();
}
} }
//Risalva la "maschera" //Risalva la "maschera"

View File

@ -174,7 +174,7 @@ public:
// @cmember Legge da file le proprietà della toolbar // @cmember Legge da file le proprietà della toolbar
bool read_tool(TScanner& scanner); bool read_tool(TScanner& scanner);
// @cmember Legge da file i controlli presenti in ogni singola pagina // @cmember Legge da file i controlli presenti in ogni singola pagina
void read_control(TScanner& scanner,const TString& k, bool intool=FALSE); TEditMask_control* read_control(TScanner& scanner,const TString& k, bool intool=FALSE);
// @cmember Legge le proprietà della "maschera" da quella di supporto // @cmember Legge le proprietà della "maschera" da quella di supporto
void get_mask(TMask& m); void get_mask(TMask& m);
// @cmember Gestisce gli eventi // @cmember Gestisce gli eventi

View File

@ -1,6 +1,6 @@
#include "ba2600b.h" #include "ba2600b.h"
TOOLBAR "" 0 20 0 0 TOOLBAR "" 0 18 0 2
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
@ -116,7 +116,7 @@ STRING F_FLAG 15
GROUP 1 GROUP 1
END END
STRING F_GROUP 25 15 STRING F_GROUP 80 15
BEGIN BEGIN
PROMPT 45 4 "Gruppi: " PROMPT 45 4 "Gruppi: "
GROUP 1 GROUP 1

View File

@ -1,7 +1,8 @@
#include <config.h> #include <config.h>
#include <currency.h> #include <currency.h>
#include <printer.h>
#include <prefix.h> #include <prefix.h>
#include <printer.h>
#include <recarray.h>
#include <tabapp.h> #include <tabapp.h>
#include "../cg/cglib03.h" #include "../cg/cglib03.h"
@ -12,6 +13,7 @@
#include "batbver.h" #include "batbver.h"
#define REG_JOURNAL 5 #define REG_JOURNAL 5
#define TAB_BANCHE "%BAN"
#define TAB_CAMBI "CAM" #define TAB_CAMBI "CAM"
#define TAB_DELEGHE "%DEL" #define TAB_DELEGHE "%DEL"
#define TAB_REGISTRI "REG" #define TAB_REGISTRI "REG"
@ -42,6 +44,7 @@ protected: // TRelation_application
protected: protected:
static bool valute_decimals_handler(TMask_field& f, KEY k); static bool valute_decimals_handler(TMask_field& f, KEY k);
static bool change_decimals_handler(TMask_field& f, KEY k); static bool change_decimals_handler(TMask_field& f, KEY k);
static bool codcab_handler(TMask_field& f, KEY k);
public: public:
bool exist_journal() { return _exist_journal; } bool exist_journal() { return _exist_journal; }
@ -504,6 +507,18 @@ bool TGeneric_table_app::change_decimals_handler(TMask_field& f, KEY k)
return TRUE; return TRUE;
} }
bool TGeneric_table_app::codcab_handler(TMask_field& f, KEY k)
{
if (k == K_ENTER && !f.empty())
{
TMask& m = f.mask();
const TString& abi = m.get(f.dlg()-1);
const TRectype& rec = cache().get(TAB_BANCHE, abi);
if (rec.empty())
return f.error_box("Il codice ABI %s non esiste", (const char*)abi);
}
return TRUE;
}
bool TGeneric_table_app::user_create() bool TGeneric_table_app::user_create()
{ {
@ -555,6 +570,9 @@ bool TGeneric_table_app::user_create()
} }
if (name == TAB_CAMBI) if (name == TAB_CAMBI)
set_search_field(FLD_TABCAM_D0); set_search_field(FLD_TABCAM_D0);
if (name == TAB_BANCHE)
mask.set_handler(102, codcab_handler);
} }
return ok; return ok;

View File

@ -239,7 +239,7 @@ void BA3200_application::set_headers()
printer().setdate(d); printer().setdate(d);
} }
riga.overwrite ("Data @< Pag. @#", riga.len()-22); riga.overwrite ("Data @> Pag. @#", riga.len()-25);
set_header (last_riga++, "%s", (const char *)riga); set_header (last_riga++, "%s", (const char *)riga);

View File

@ -222,7 +222,7 @@ static bool registro_handler(TMask_field& field, KEY key)
} }
static bool codditta_handler(TMask_field& field, KEY key) static bool codditta_handler(TMask_field& field, KEY key)
{ {
if (key == K_TAB && field.focusdirty()) if (key == K_TAB)
{ {
TMask& m = field.mask(); TMask& m = field.mask();
const long codditta = m.get_long(F_CODDITTA); const long codditta = m.get_long(F_CODDITTA);

View File

@ -133,7 +133,7 @@ bool Stampa_condizioni_pagamento_application::set_print(int)
if (da.not_empty()) from.put("CODTAB",da); if (da.not_empty()) from.put("CODTAB",da);
if (a.not_empty()) to.put("CODTAB",a); if (a.not_empty()) to.put("CODTAB",a);
get_cursor(_cur)->setregion (from, to); get_cursor(_cur)->setregion (from, to, 0x2);
rt = TRUE; rt = TRUE;
} }
return rt; return rt;

View File

@ -5,7 +5,7 @@ PAGE "Stampa condizioni di pagamento" -1 -1 35 6
STRING F_INIZIO 4 STRING F_INIZIO 4
BEGIN BEGIN
PROMPT 2 1 "Da codice " PROMPT 2 1 "Da codice "
FLAGS "UZ" FLAGS "U#"
HELP "Inserire il codice da cui iniziare la stampa. Se in bianco vuol dire dall'inizio" HELP "Inserire il codice da cui iniziare la stampa. Se in bianco vuol dire dall'inizio"
FIELD CODTAB FIELD CODTAB
USE %CPG USE %CPG
@ -14,12 +14,13 @@ BEGIN
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_INIZIO CODTAB OUTPUT F_INIZIO CODTAB
GROUP 1 GROUP 1
ADD NONE
END END
STRING F_FINE 4 STRING F_FINE 4
BEGIN BEGIN
PROMPT 2 3 "A codice " PROMPT 2 3 "A codice "
FLAGS "UZ" FLAGS "U#"
HELP "Inserire il codice di fine. Se in bianco vuol dire l'ultimo" HELP "Inserire il codice di fine. Se in bianco vuol dire l'ultimo"
FIELD CODTAB FIELD CODTAB
COPY USE F_INIZIO COPY USE F_INIZIO
@ -27,6 +28,7 @@ BEGIN
COPY DISPLAY F_INIZIO COPY DISPLAY F_INIZIO
OUTPUT F_FINE CODTAB OUTPUT F_FINE CODTAB
GROUP 2 GROUP 2
ADD NONE
END END
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2

View File

@ -1,6 +1,6 @@
#include "ba4300.h" #include "ba4300.h"
TOOLBAR "" 0 18 0 4 TOOLBAR "" 0 -4 0 4
BUTTON DLG_ATT 10 2 BUTTON DLG_ATT 10 2
BEGIN BEGIN

View File

@ -11,6 +11,7 @@
#include <relation.h> #include <relation.h>
#include <sheet.h> #include <sheet.h>
#include <utility.h> #include <utility.h>
#include <dongle.h>
#define NO_MFC #define NO_MFC
#include <netsock.h> #include <netsock.h>
@ -173,6 +174,8 @@ HIDDEN int str2month(const char* str)
return m+1; return m+1;
} }
enum EncodingType { enc_plain_text, enc_quoted_printable, enc_base64 };
int TMail_box::get(TMail_messages& m) int TMail_box::get(TMail_messages& m)
{ {
// Lista dei caratteri validi // Lista dei caratteri validi
@ -181,13 +184,13 @@ int TMail_box::get(TMail_messages& m)
// Lista per decodifica dei caratteri validi // Lista per decodifica dei caratteri validi
char Deco64[256]; char Deco64[256];
memset(Deco64, ' ', sizeof(Deco64)); memset(Deco64, ' ', sizeof(Deco64));
for (int i = 0; Base64[i]; i++) for (int i = 0; Base64[i]; i++)
Deco64[Base64[i]] = i; Deco64[Base64[i]] = i;
TString_array a; TString_array a;
list(a); list(a);
TString buf; TString buf, boundary;
FOR_EACH_ARRAY_ROW(a, r, row) FOR_EACH_ARRAY_ROW(a, r, row)
{ {
TMail_message* msgptr = new TMail_message(user()); TMail_message* msgptr = new TMail_message(user());
@ -198,8 +201,10 @@ int TMail_box::get(TMail_messages& m)
WriteLine(_connection, buf); WriteLine(_connection, buf);
ReadLine(_connection, buf); ReadLine(_connection, buf);
bool ok = buf[0] == '+'; bool ok = buf[0] == '+';
bool base64 = FALSE; EncodingType encoding = enc_plain_text;
bool in_body = FALSE; bool in_body = FALSE;
bool in_section = FALSE;
boundary.cut(0);
while (ok) while (ok)
{ {
if (!ReadLine(_connection, buf)) if (!ReadLine(_connection, buf))
@ -215,60 +220,106 @@ int TMail_box::get(TMail_messages& m)
} }
if (in_body) if (in_body)
{ {
if (base64) if (buf[0] == '-' && boundary.not_empty() && buf.find(boundary) >= 0)
break; // Ignora sezioni di attachment
switch (encoding)
{ {
unsigned val = 0; case enc_base64:
int bits = 0;
for (const char* s = buf; *s && *s != '='; s++)
{ {
if (*s==0x0A || *s==0x0D || *s==0x20 || *s==0x09) unsigned val = 0;
continue; // Salta eventuali blanks int bits = 0;
val <<= 6; for (const char* s = buf; *s && *s != '='; s++)
val |= Deco64[*s];
bits += 6;
if (bits >= 8)
{ {
const char c = char((val >> (bits - 8)) & 0xFF); if (*s==0x0A || *s==0x0D || *s==0x20 || *s==0x09)
msg << c; continue; // Salta eventuali blanks
bits -= 8; val <<= 6;
val |= Deco64[*s];
bits += 6;
if (bits >= 8)
{
const char c = char((val >> (bits - 8)) & 0xFF);
msg << c;
bits -= 8;
}
} }
} }
} break;
else case enc_quoted_printable:
{ {
const char last = buf.right(1)[0]; for (const char* s = buf; *s; s++)
if (last > '\0' && last < ' ') {
buf.rtrim(1); if (*s == '=')
msg << buf << '\n'; {
} s++;
if (*s >= ' ')
{
int c; sscanf(s, "%2X", &c);
msg << char(c);
s++;
}
}
else
msg << *s;
}
}
break;
default:
buf.rtrim();
msg << buf << '\n';
break;
}
} }
else else
{ {
if (buf.blank()) if (boundary.not_empty())
in_body = TRUE; else {
if (buf.blank())
{
in_body = in_section;
}
else
{
if (buf.find(boundary) >= 0)
in_section = TRUE;
}
}
else
{
if (buf.blank())
{
in_body = TRUE;
continue;
}
}
if (buf.compare("From:", 5, TRUE) == 0) if (buf.compare("From:", 5, TRUE) == 0)
{ {
buf.ltrim(6); buf.ltrim(6); buf.trim();
msg.set_sender(buf); msg.set_sender(buf);
} else continue;
}
if (buf.compare("To:", 3, TRUE) == 0) if (buf.compare("To:", 3, TRUE) == 0)
{ {
buf.ltrim(4); buf.ltrim(4); buf.trim();
msg.add_recipient(buf); msg.add_recipient(buf);
} else continue;
}
if (buf.compare("Cc:", 3, TRUE) == 0) if (buf.compare("Cc:", 3, TRUE) == 0)
{ {
buf.ltrim(4); buf.ltrim(4); buf.trim();
msg.add_copy_recipient(buf); msg.add_copy_recipient(buf);
} else continue;
}
if (buf.compare("Subject:", 8, TRUE) == 0) if (buf.compare("Subject:", 8, TRUE) == 0)
{ {
buf.ltrim(9); buf.ltrim(9); buf.trim();
msg.set_subject(buf); msg.set_subject(buf);
} else continue;
}
if (buf.compare("Date:", 5, TRUE) == 0) if (buf.compare("Date:", 5, TRUE) == 0)
{ {
TToken_string d(buf.mid(6), ' '); TToken_string d(buf.mid(6), ' '); d.trim();
int giorno = d.get_int(1); int giorno = d.get_int(1);
int mese = str2month(d.get()); int mese = str2month(d.get());
int anno = d.get_int(); int anno = d.get_int();
@ -277,10 +328,32 @@ int TMail_box::get(TMail_messages& m)
buf.cut(0); buf.cut(0);
buf << anno << '/' << mese << '/' << giorno << ' ' << ora; buf << anno << '/' << mese << '/' << giorno << ' ' << ora;
msg.set_date_time(buf); msg.set_date_time(buf);
} else continue;
}
if (buf.compare("Content-Transfer-Encoding:", 26, TRUE) == 0) if (buf.compare("Content-Transfer-Encoding:", 26, TRUE) == 0)
{ {
base64 = buf.find("base64") > 0; if (buf.find("base64") > 0)
encoding = enc_base64; else
if (buf.find("quoted-printable") > 0)
encoding = enc_quoted_printable;
continue;
}
if (buf.compare("Content-Type:", 13, TRUE) == 0)
{
int bnd = buf.find("oundary="); // Funziona per Boundary e boundary
if (bnd < 0)
{
ReadLine(_connection, buf);
bnd = buf.find("oundary=");
}
if (bnd > 0)
{
const int apicia = buf.find('"', bnd);
const int apicic = buf.find('"', apicia+1);
if (apicia > 0 && apicic > apicia)
boundary = buf.sub(apicia+1, apicic);
}
continue;
} }
} }
} }
@ -343,7 +416,7 @@ TFilter_expr::TFilter_expr(TAutomask& m, int logicnum, const char* expr)
TLocalisamfile isf(logicnum); TLocalisamfile isf(logicnum);
TRectype& rec = isf.curr(); TRectype& rec = isf.curr();
for (int i = 0; i < numvar(); i++) if (rec.exist(varname(i))) for (int i = 0; i < numvar(); i++) if (!rec.exist(varname(i)))
{ {
_error = 883; _error = 883;
TString msg; TString msg;
@ -362,7 +435,7 @@ TFilter_expr::TFilter_expr(TAutomask& m, int logicnum, const char* expr)
class TMailer_mask : public TAutomask class TMailer_mask : public TAutomask
{ {
int _timer_id; long _timer_id;
int _mail_semaphore; int _mail_semaphore;
protected: protected:
@ -596,7 +669,7 @@ bool TMailer_mask::save_curr_line()
const TString old_mailto = set_ini_var(CONFIG_INSTALL, "Main", "MailTo", ""); const TString old_mailto = set_ini_var(CONFIG_INSTALL, "Main", "MailTo", "");
appname << " /i" << tmp; appname << " /i" << tmp << " -u" << ::dongle().administrator();
TExternal_app app(appname); TExternal_app app(appname);
bool ok = app.run() == NOERR; bool ok = app.run() == NOERR;
if (ok) if (ok)
@ -697,14 +770,20 @@ bool TMailer_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
break; break;
case DLG_SAVEREC: case DLG_SAVEREC:
if (e == fe_button) if (e == fe_button)
save_all_lines(); if (jolly == 0)
{
save_all_lines();
}
break; break;
case DLG_DELREC: case DLG_DELREC:
if (e == fe_button) if (e == fe_button)
{ {
test_delete(); if (jolly == 0)
fill_messages(); {
return FALSE; test_delete();
fill_messages();
return FALSE;
}
} }
break; break;
case F_FILE: case F_FILE:
@ -818,6 +897,10 @@ TMailer_mask::TMailer_mask()
_timer_id(XVT_TIMER_ERROR), _mail_semaphore(0) _timer_id(XVT_TIMER_ERROR), _mail_semaphore(0)
{ {
load(); load();
if (user() != ::dongle().administrator())
{
disable(- G_SUPERUSER);
}
} }
TMailer_mask::~TMailer_mask() TMailer_mask::~TMailer_mask()

View File

@ -24,3 +24,4 @@
#define F_OPERATOR 103 #define F_OPERATOR 103
#define F_EXPR 104 #define F_EXPR 104
#define G_SUPERUSER 10

View File

@ -1,6 +1,6 @@
#include "ba7100a.h" #include "ba7100a.h"
TOOLBAR "Toolbar" 0 19 78 3 TOOLBAR "Toolbar" 0 -3 0 3
BUTTON DLG_SAVEREC 10 2 BUTTON DLG_SAVEREC 10 2
BEGIN BEGIN
@ -25,17 +25,19 @@ END
ENDPAGE ENDPAGE
PAGE "Transazioni" -1 -1 78 20 PAGE "Ricezione" -1 -1 78 20
BOOLEAN F_MAPI BOOLEAN F_MAPI
BEGIN BEGIN
PROMPT 1 0 "Preleva messaggi MAPI" PROMPT 1 0 "Preleva messaggi MAPI"
GROUP G_SUPERUSER
END END
NUMBER F_TIMER 4 NUMBER F_TIMER 4
BEGIN BEGIN
PROMPT 41 0 "Controlla la posta ogni " PROMPT 41 0 "Controlla la posta ogni "
FLAGS "U" FLAGS "U"
GROUP G_SUPERUSER
END END
TEXT DLG_NULL TEXT DLG_NULL
@ -46,17 +48,20 @@ END
STRING F_SERVER 80 28 STRING F_SERVER 80 28
BEGIN BEGIN
PROMPT 1 1 "Server " PROMPT 1 1 "Server "
GROUP G_SUPERUSER
END END
STRING F_USER 32 8 STRING F_USER 32 8
BEGIN BEGIN
PROMPT 41 1 "Utente " PROMPT 41 1 "Utente "
GROUP G_SUPERUSER
END END
STRING F_PASSWORD 32 8 STRING F_PASSWORD 32 8
BEGIN BEGIN
PROMPT 61 1 "Password " PROMPT 61 1 "Password "
FLAGS "*" FLAGS "*"
GROUP G_SUPERUSER
END END
SPREADSHEET F_MESSAGES SPREADSHEET F_MESSAGES
@ -70,26 +75,39 @@ BEGIN
ITEM "Messaggio@50" ITEM "Messaggio@50"
ITEM "Mailer@4" ITEM "Mailer@4"
ITEM "Id@64" ITEM "Id@64"
GROUP G_SUPERUSER
END END
ENDPAGE ENDPAGE
PAGE "Parametri" -1 -1 78 20 PAGE "Spedizione" -1 -1 78 20
TEXT DLG_NULL
BEGIN
PROMPT 1 0 "@bDestinatari"
END
SPREADSHEET F_ADDRESSES 0 6 SPREADSHEET F_ADDRESSES 0 6
BEGIN BEGIN
PROMPT 0 1 "" PROMPT 0 1 ""
ITEM "Indirizzo@50" ITEM "Indirizzo@50"
ITEM "Gruppo@50" ITEM "Gruppo@50"
GROUP G_SUPERUSER
END
TEXT DLG_NULL
BEGIN
PROMPT 1 8 "@bRegole"
END END
SPREADSHEET F_PARAMS SPREADSHEET F_PARAMS
BEGIN BEGIN
PROMPT 0 8 "" PROMPT 0 9 ""
ITEM "Indirizzo@40" ITEM "Indirizzo@40"
ITEM "File" ITEM "File"
ITEM "OP@2" ITEM "OP@2"
ITEM "Filtro@64" ITEM "Filtro@64"
GROUP G_SUPERUSER
END END
ENDPAGE ENDPAGE

View File

@ -22,6 +22,29 @@ public:
virtual ~TInstall_BA () {} virtual ~TInstall_BA () {}
}; };
HIDDEN int search_edit(TConfig& cfg, void*)
{
const TString16 module = cfg.get_paragraph().left(2);
TAssoc_array& var = cfg.list_variables();
bool dirty = FALSE;
FOR_EACH_ASSOC_STRING (var, obj, key, str)
{
const TFixed_string confr (key);
if (confr.compare("Edit_", 5, TRUE) == 0)
{
if (module.compare(str, 2, TRUE) != 0)
{
cfg.remove(key);
dirty = TRUE;
}
}
}
if (dirty)
{
cfg.set_paragraph("");
}
return FALSE;
}
bool TInstall_BA::post_installer() bool TInstall_BA::post_installer()
{ {
@ -50,6 +73,10 @@ bool TInstall_BA::post_installer()
prassis.set_paragraph("mr"); prassis.set_paragraph("mr");
prassis.set(tabapp,"mr0 -0"); prassis.set(tabapp,"mr0 -0");
} }
TConfig install ("install.ini");
install.for_each_paragraph(search_edit, NULL);
return TRUE; return TRUE;
} }

View File

@ -2,10 +2,10 @@
PAGE "Stampa vettori" -1 -1 50 8 PAGE "Stampa vettori" -1 -1 50 8
NUMBER F_INIZIO1 5 STRING F_INIZIO1 6
BEGIN BEGIN
PROMPT 2 1 "Da codice " PROMPT 2 1 "Da codice "
FLAGS "RZ" FLAGS "ZU"
HELP "Codice da cui iniziare la stampa. Vuoto = inizio archivio" HELP "Codice da cui iniziare la stampa. Vuoto = inizio archivio"
FIELD LF_TABCOM->CODTAB FIELD LF_TABCOM->CODTAB
USE %VET USE %VET
@ -17,10 +17,10 @@ KEY 1
GROUP 1 GROUP 1
END END
NUMBER F_FINE1 5 STRING F_FINE1 6
BEGIN BEGIN
PROMPT 2 3 "A codice " PROMPT 2 3 "A codice "
FLAGS "RZ" FLAGS "ZU"
HELP "Codice di fine. Vuoto = fine archivio" HELP "Codice di fine. Vuoto = fine archivio"
FIELD LF_TABCOM->CODTAB FIELD LF_TABCOM->CODTAB
COPY USE F_INIZIO1 COPY USE F_INIZIO1

View File

@ -1,7 +1,7 @@
#include "ba3100.h" #include "ba3100.h"
#include "batbban.h" #include "batbban.h"
TOOLBAR "" 0 19 0 3 TOOLBAR "" 0 -3 0 3
#include <toolbar.h> #include <toolbar.h>
ENDPAGE ENDPAGE
@ -13,7 +13,7 @@ BEGIN
FIELD CODTAB[1,5] FIELD CODTAB[1,5]
FLAGS "Z" FLAGS "Z"
KEY 1 KEY 1
USE %BAN KEY 1 SELECT CODTAB ?= "?????" USE %BAN SELECT CODTAB ?= "?????"
INPUT CODTAB F_CODICEABI INPUT CODTAB F_CODICEABI
DISPLAY "ABI@5" CODTAB[1,5] DISPLAY "ABI@5" CODTAB[1,5]
DISPLAY "Istituto@50" S0 DISPLAY "Istituto@50" S0
@ -21,7 +21,7 @@ BEGIN
OUTPUT H_DENOMABI S0 OUTPUT H_DENOMABI S0
MESSAGE COPY,H_CODICEABI MESSAGE COPY,H_CODICEABI
WARNING "Istituto assente" WARNING "Istituto assente"
CHECKTYPE FORCED CHECKTYPE REQUIRED
END END
NUMBER F_CODICECAB 5 NUMBER F_CODICECAB 5

View File

@ -165,10 +165,10 @@ END
STRING F_CPAG_NC 2 STRING F_CPAG_NC 2
BEGIN BEGIN
FLAGS "UZ" FLAGS "U"
PROMPT 38 16 "Cod. pag. per note di credito " PROMPT 38 16 "Cod. pag. per note di credito "
FIELD S7 FIELD S7
USE %CPG SELECT (CODTAB?="??") && (S4=="1") USE %CPG SELECT ((CODTAB?="??")||(CODTAB?="?")) && (S4=="1")
INPUT CODTAB F_CPAG_NC INPUT CODTAB F_CPAG_NC
DISPLAY "Cod. pagamento" CODTAB DISPLAY "Cod. pagamento" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0

View File

@ -16,9 +16,9 @@
#define LST_TABIVA_S3 115 #define LST_TABIVA_S3 115
#define LST_TABIVA_S4 116 #define LST_TABIVA_S4 116
#define CHK_TABIVA_B1 117 #define CHK_TABIVA_B1 117
#define DLG_DEL 120
#define FLD_SOSPESO_B2 118 #define FLD_SOSPESO_B2 118
#define CHK_TABIVA_B4 119 #define CHK_TABIVA_B4 119
#define FLD_TABIVA_S10 120 #define FLD_TABIVA_S10 120
#define FLD_TABIVA_S11 121 #define FLD_TABIVA_S11 121
#define FLD_TABIVA_I1 122
#define FLD_DETRAZIONE 123

View File

@ -106,19 +106,38 @@ BEGIN
HELP "Inserire la percentuale teorica dell'imposta" HELP "Inserire la percentuale teorica dell'imposta"
END END
GROUPBOX DLG_NULL 40 4 #ifdef COVER
NUMBER FLD_TABIVA_I1 1
BEGIN BEGIN
PROMPT 3 5 "Colonne per allegati imponibili" PROMPT 3 5 "Detraibilita' "
SHEET "Codice|Tipo detraibilita'@75"
INPUT FLD_TABIVA_I1
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 FLD_TABIVA_I1
OUTPUT FLD_DETRAZIONE
FIELD I1
END END
GROUPBOX DLG_NULL 25 4 STRING FLD_DETRAZIONE 80 52
BEGIN BEGIN
PROMPT 44 5 "Indicatori mod. 101/102" PROMPT 22 5 ""
FLAGS "D"
END
#endif
GROUPBOX DLG_NULL 40 4
BEGIN
PROMPT 3 6 "@bColonne per allegati imponibili"
END END
LIST FLD_TABIVA_S7 1 24 LIST FLD_TABIVA_S7 1 24
BEGIN BEGIN
PROMPT 4 6 "Clienti " PROMPT 4 7 "Clienti "
FIELD S7 FIELD S7
HELP "Inserire il numero della colonna degli allegati clienti relativa all'imposta" HELP "Inserire il numero della colonna degli allegati clienti relativa all'imposta"
ITEM " |Non in allegato" ITEM " |Non in allegato"
@ -128,7 +147,7 @@ END
LIST FLD_TABIVA_S8 1 24 LIST FLD_TABIVA_S8 1 24
BEGIN BEGIN
PROMPT 4 7 "Fornitori " PROMPT 4 8 "Fornitori "
FIELD S8 FIELD S8
HELP "Inserire il numero della colonna degli allegati fornitori relativa all'imposta" HELP "Inserire il numero della colonna degli allegati fornitori relativa all'imposta"
ITEM " |Non in allegato" ITEM " |Non in allegato"
@ -137,16 +156,21 @@ BEGIN
ITEM "4|Non imponibili" ITEM "4|Non imponibili"
END END
GROUPBOX DLG_NULL 25 4
BEGIN
PROMPT 44 6 "@bIndicatori mod. 101/102"
END
BOOLEAN CHK_TABIVA_B0 BOOLEAN CHK_TABIVA_B0
BEGIN BEGIN
PROMPT 50 6 "Clienti" PROMPT 50 7 "Clienti"
FIELD B0 FIELD B0
HELP "Indicare se il codice deve comparire nel modello 101" HELP "Indicare se il codice deve comparire nel modello 101"
END END
BOOLEAN FLD_TABIVA_B1 BOOLEAN FLD_TABIVA_B1
BEGIN BEGIN
PROMPT 50 7 "Fornitori" PROMPT 50 8 "Fornitori"
FIELD B1 FIELD B1
HELP "Indicare se il codice deve comparire nel modello 102" HELP "Indicare se il codice deve comparire nel modello 102"
END END
@ -195,11 +219,10 @@ BEGIN
FLAGS "U" FLAGS "U"
SHEET "Riga|Descrizione@60" SHEET "Riga|Descrizione@60"
INPUT FLD_TABIVA_S10 INPUT FLD_TABIVA_S10
ITEM " |Nessuno"
ITEM "VP1|Ammontare complessivo operazioni attive"
ITEM "VP2|Ammontare complessivo operazioni intracomunitarie"
OUTPUT FLD_TABIVA_S10 OUTPUT FLD_TABIVA_S10
ITEM " |Nessuno"
ITEM "VP1|VP1"
ITEM "VP2|VP2"
CHECKTYPE NORMAL
END END
STRING FLD_TABIVA_S11 3 STRING FLD_TABIVA_S11 3
@ -209,11 +232,10 @@ BEGIN
FLAGS "U" FLAGS "U"
SHEET "Riga|Descrizione@60" SHEET "Riga|Descrizione@60"
INPUT FLD_TABIVA_S11 INPUT FLD_TABIVA_S11
ITEM " |Nessuno"
ITEM "VP3|Ammontare complessivo operazioni passive"
ITEM "VP4|Ammontare complessivo operazioni intracomunitarie"
OUTPUT FLD_TABIVA_S11 OUTPUT FLD_TABIVA_S11
ITEM " |Nessuno"
ITEM "VP3|VP3"
ITEM "VP4|VP4"
CHECKTYPE NORMAL
END END
LIST LST_TABIVA_S3 1 31 LIST LST_TABIVA_S3 1 31
@ -255,21 +277,18 @@ BOOLEAN CHK_TABIVA_B4
BEGIN BEGIN
PROMPT 3 17 "Escluso dal calcolo rimborso per aliquota media" PROMPT 3 17 "Escluso dal calcolo rimborso per aliquota media"
FIELD B4 FIELD B4
HELP "Indicare se il codice NON vale per il calcolo del rimborso per aliquota media"
END END
BOOLEAN CHK_TABIVA_S9 BOOLEAN CHK_TABIVA_S9
BEGIN BEGIN
PROMPT 3 18 "Codice per calcolo rimborso infrannuale" PROMPT 3 18 "Codice per calcolo rimborso infrannuale"
FIELD B3 FIELD B3
HELP "Indicare se il codice vale per il calcolo del rimborso infrannuale"
END END
BOOLEAN FLD_SOSPESO_B2 BOOLEAN FLD_SOSPESO_B2
BEGIN BEGIN
PROMPT 3 19 "Codice IVA sospeso" PROMPT 3 19 "Codice IVA sospeso"
FIELD B2 FIELD B2
HELP "Indicare se il codice iva e' sospeso"
END END
ENDPAGE ENDPAGE

View File

@ -64,7 +64,7 @@ BEGIN
END END
GROUPBOX DLG_NULL 75 3 GROUPBOX DLG_NULL 75 4
BEGIN BEGIN
PROMPT 1 10 "Formato valuta" PROMPT 1 10 "Formato valuta"
END END
@ -79,7 +79,7 @@ END
LIST F_DECIMALI 1 14 LIST F_DECIMALI 1 14
BEGIN BEGIN
PROMPT 40 11 "Separatore decimali " PROMPT 2 12 "Separatore decimali "
ITEM "I|Virgola (,)" ITEM "I|Virgola (,)"
ITEM "E|Punto (.)" ITEM "E|Punto (.)"
FLAGS "D" FLAGS "D"

View File

@ -13,42 +13,18 @@ BEGIN
PROMPT 1 1 "@bCodice Nomenclatura" PROMPT 1 1 "@bCodice Nomenclatura"
END END
STRING NOC_CODICE1 4 STRING NOC_CODICE1 8
BEGIN BEGIN
PROMPT 2 3 "Codice " PROMPT 2 3 "Codice "
FLAGS "U" FLAGS "U"
USE %NOC USE %NOC
INPUT CODTAB[1,4] NOC_CODICE1 INPUT CODTAB[1,8] NOC_CODICE1
INPUT CODTAB[5,6] NOC_CODICE2
INPUT CODTAB[7,8] NOC_CODICE3
DISPLAY "Codice@8" CODTAB DISPLAY "Codice@8" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT NOC_CODICE1 CODTAB[1,4] OUTPUT NOC_CODICE1 CODTAB[1,8]
OUTPUT NOC_CODICE2 CODTAB[5,6]
OUTPUT NOC_CODICE3 CODTAB[7,8]
OUTPUT NOC_DESCR S0 OUTPUT NOC_DESCR S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD CODTAB[1,4] FIELD CODTAB[1,8]
KEY 1
END
STRING NOC_CODICE2 2
BEGIN
PROMPT 24 3 ""
FLAGS "U"
COPY ALL NOC_CODICE1
CHECKTYPE REQUIRED
FIELD CODTAB[5,6]
KEY 1
END
STRING NOC_CODICE3 2
BEGIN
PROMPT 32 3 ""
FLAGS "U"
COPY ALL NOC_CODICE1
CHECKTYPE REQUIRED
FIELD CODTAB[7,8]
KEY 1 KEY 1
END END

View File

@ -158,8 +158,8 @@ END
STRING F_ATTIVITA 5 STRING F_ATTIVITA 5
BEGIN BEGIN
PROMPT 1 9 "Codice attivita " PROMPT 1 9 "Codice attivita' "
FIELD REG->S8 FIELD S8
FLAGS "URZ" FLAGS "URZ"
GROUP GRP_VENDITE GRP_ACQUISTI GRP_RIEPIVA GROUP GRP_VENDITE GRP_ACQUISTI GRP_RIEPIVA
USE LF_ATTIV USE LF_ATTIV

View File

@ -100,7 +100,7 @@ END
BOOLEAN VAL_INEURO BOOLEAN VAL_INEURO
BEGIN BEGIN
PROMPT 40 11 "Espresso in EURO" PROMPT 40 11 "Espresso Contro EURO"
FIELD B1 FIELD B1
END END

View File

@ -17,7 +17,7 @@ BEGIN
PROMPT 2 2 "Codice vettore " PROMPT 2 2 "Codice vettore "
FIELD CODTAB FIELD CODTAB
HELP "Codice del vettore" HELP "Codice del vettore"
FLAGS "RZU" FLAGS "ZU"
USE %VET USE %VET
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
INPUT CODTAB F_CODVETT INPUT CODTAB F_CODVETT

View File

@ -11,5 +11,5 @@ Fields=B3,1|B4,1|B5,1|B6,1|B7,1|B8,1|B9,1|FPC,1
ESC|%yr%|||||||||||||||||||||||||||||||||||||||||01-01-%yr%|31-12-%yr%|||||||||||||| ESC|%yr%|||||||||||||||||||||||||||||||||||||||||01-01-%yr%|31-12-%yr%||||||||||||||
REG|%yr%VEN|REGISTRO DELLE VENDITE|||||||1|%att%|M|1|||1||||1||||||||||||||||||||||||||||||||||X|X||| REG|%yr%VEN|REGISTRO DELLE VENDITE|||||||1|%att%|M|1|||1||||1||||||||||||||||||||||||||||||||||X|X|||
REG|%yr%ACQ|REGISTRO DEGLI ACQUISTI|||||||2|%att%|M|2|||1||||1|||||||||||||||||||||||||||||||||||||| REG|%yr%ACQ|REGISTRO DEGLI ACQUISTI|||||||2|%att%|M|2|||1||||1||||||||||||||||||||||||||||||||||||||
REG|%yr%GIO|LIBRO GIORNALE|||||||5|%att%|M|5|||1|1|||1|||||||||||||||||||||||||||||||||||||| REG|%yr%GIO|LIBRO GIORNALE|||||||5||M|5|||1|1|||1||||||||||||||||||||||||||||||||||||||
REG|%yr%COR|REGISTRO DEI CORRISPETTIVI|||||||3|%att%|M|1|||1||||1||||||||||||||||||||||||||||X|||||||||| REG|%yr%COR|REGISTRO DEI CORRISPETTIVI|||||||3|%att%|M|1|||1||||1||||||||||||||||||||||||||||X||||||||||

View File

@ -147,6 +147,8 @@
#define F_DESBANPR 244 #define F_DESBANPR 244
#define F_TIPODOCFAT 245 #define F_TIPODOCFAT 245
#define F_CODCAUS 246 #define F_CODCAUS 246
#define F_CODVALINTRA 247
#define F_DESVALINTRA 248
#define DLG_RIC 300 #define DLG_RIC 300
#define DLG_CST 301 #define DLG_CST 301

View File

@ -706,9 +706,34 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_CODVALINTRA 3
BEGIN
PROMPT 2 8 "Valuta INTRA"
FLAGS "UZ"
FIELD VALINTRA
COPY USE F_CODVAL
INPUT CODTAB F_CODVALINTRA
COPY DISPLAY F_CODVAL
OUTPUT F_CODVALINTRA CODTAB
OUTPUT F_DESVALINTRA S0
CHECKTYPE NORMAL
GROUP 4
END
STRING F_DESVALINTRA 50
BEGIN
PROMPT 22 8 ""
COPY USE F_DESVAL
INPUT S0 F_DESVALINTRA
COPY DISPLAY F_DESVAL
COPY OUTPUT F_CODVALINTRA
CHECKTYPE NORMAL
GROUP 4
END
STRING F_CODLIN 1 STRING F_CODLIN 1
BEGIN BEGIN
PROMPT 2 8 "Lingua " PROMPT 2 9 "Lingua "
FIELD CODLIN FIELD CODLIN
USE %LNG USE %LNG
FLAGS "U" FLAGS "U"
@ -723,7 +748,7 @@ END
STRING F_DESLIN 50 STRING F_DESLIN 50
BEGIN BEGIN
PROMPT 22 8 "" PROMPT 22 9 ""
USE %LNG KEY 2 USE %LNG KEY 2
INPUT S0 F_DESLIN INPUT S0 F_DESLIN
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
@ -734,7 +759,7 @@ END
STRING F_CODPAG 4 STRING F_CODPAG 4
BEGIN BEGIN
PROMPT 2 9 "Pagamento " PROMPT 2 10 "Pagamento "
FIELD CODPAG FIELD CODPAG
FLAGS "U#" FLAGS "U#"
USE %CPG USE %CPG
@ -750,37 +775,38 @@ END
STRING F_DESPAG 50 STRING F_DESPAG 50
BEGIN BEGIN
PROMPT 22 9 "" PROMPT 22 10 ""
USE %CPG KEY 2 USE %CPG KEY 2
INPUT S0 F_DESPAG INPUT S0 F_DESPAG
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Codice pagamento" CODTAB DISPLAY "Codice pagamento" CODTAB
COPY OUTPUT F_CODPAG COPY OUTPUT F_CODPAG
CHECKTYPE NORMAL CHECKTYPE NORMAL
ADD RUN ba3 -6
END END
CURRENCY F_FIDO 15 CURRENCY F_FIDO 15
BEGIN BEGIN
PROMPT 2 10 "Fido " PROMPT 2 11 "Fido "
FIELD FIDO FIELD FIDO
DRIVENBY F_CODVAL DRIVENBY F_CODVAL
HELP "Importo massimo fido del cliente/fornitore" HELP "Importo massimo fido del cliente/fornitore"
END END
GROUPBOX DLG_NULL 76 4 GROUPBOX DLG_NULL 76 3
BEGIN BEGIN
PROMPT 1 11 "Conto cliente/fornitore" PROMPT 1 12 "@bConto cliente/fornitore"
END END
NUMBER F_GRUPPO 3 NUMBER F_GRUPPO 3
BEGIN BEGIN
PROMPT 2 12 "Gruppo " PROMPT 2 13 "Grp."
FIELD GRUPPO FIELD GRUPPO
END END
NUMBER F_CONTO 3 NUMBER F_CONTO 3
BEGIN BEGIN
PROMPT 27 12 "Conto " PROMPT 11 13 "Cnt."
FIELD CONTO FIELD CONTO
USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="")&&(TMCF=#F_TIPOCF) USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="")&&(TMCF=#F_TIPOCF)
INPUT GRUPPO F_GRUPPO INPUT GRUPPO F_GRUPPO
@ -798,7 +824,7 @@ END
STRING F_DESCONTO 50 STRING F_DESCONTO 50
BEGIN BEGIN
PROMPT 2 13 "Descrizione " PROMPT 22 13 ""
USE LF_PCON KEY 2 SELECT (CONTO!="")&&(SOTTOCONTO="")&&(TMCF=#F_TIPOCF) USE LF_PCON KEY 2 SELECT (CONTO!="")&&(SOTTOCONTO="")&&(TMCF=#F_TIPOCF)
INPUT DESCR F_DESCONTO INPUT DESCR F_DESCONTO
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
@ -811,12 +837,12 @@ END
GROUPBOX DLG_RIC 76 4 GROUPBOX DLG_RIC 76 4
BEGIN BEGIN
PROMPT 1 15 "Conto di ricavo" PROMPT 1 15 "@bConto di ricavo"
END END
GROUPBOX DLG_CST 76 4 GROUPBOX DLG_CST 76 4
BEGIN BEGIN
PROMPT 1 15 "Conto di costo" PROMPT 1 15 "@bConto di costo"
FLAGS "H" FLAGS "H"
END END

View File

@ -1,6 +1,6 @@
#include "cg0500.h" #include "cg0500.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 -3 0 3
#include <toolbar.h> #include <toolbar.h>
@ -300,7 +300,7 @@ END
LIST F_OP_FINE_ANNO 1 11 LIST F_OP_FINE_ANNO 1 11
BEGIN BEGIN
PROMPT 2 14 "Operazioni di fine anno " PROMPT 2 14 "Operazioni di fine anno "
ITEM " | " ITEM " | "
ITEM "C|Chiusura" ITEM "C|Chiusura"
ITEM "A|Apertura" ITEM "A|Apertura"

View File

@ -29,7 +29,6 @@ public:
TDate _datadoc; TDate _datadoc;
TString _numdoc; TString _numdoc;
real _totale; real _totale;
TString _descrizione;
TString _causale_fattura; TString _causale_fattura;
TipoIVA _iva_fattura; TipoIVA _iva_fattura;
}; };
@ -484,11 +483,12 @@ void TPrimanota_application::init_mask(TMask& m)
// Show/Hide campi valuta: F_VALUTAINTRA, F_CAMBIOINTRA, F_CORRLIRE, F_CORRVAL (GROUP 4) // Show/Hide campi valuta: F_VALUTAINTRA, F_CAMBIOINTRA, F_CORRLIRE, F_CORRVAL (GROUP 4)
m.show(-4, causale().valintra()); m.show(-4, causale().valintra());
if (god_mode("IntraAutoIva")) /* if (god_mode("IntraAutoIva"))
{ {
if (m.insert_mode() && causale().valintra() && !causale().intra()) if (m.insert_mode() && causale().valintra() && !causale().intra())
m.set(F_SOLAIVA, "X", TRUE); // Propone movimento di sola iva m.set(F_SOLAIVA, "X", TRUE); // Propone movimento di sola iva
} }
*/
m.show(F_CODIVA, m.insert_mode()); // Codice IVA standard m.show(F_CODIVA, m.insert_mode()); // Codice IVA standard
@ -825,11 +825,6 @@ int TPrimanota_application::read(TMask& m)
c.add_to(riga, 4, 0x7); // Conto 105-110 c.add_to(riga, 4, 0x7); // Conto 105-110
} }
#ifdef DBG
if (type2pos('T') >= 0 && type2pos('I') < 0)
NFCHECK("Sono spariti i tipi riga!");
#endif
calcola_imp(); // Calcola totale imponibile ed imposte calcola_imp(); // Calcola totale imponibile ed imposte
if (is_fattura()) // Ci dovrebbero essere delle scadenze if (is_fattura()) // Ci dovrebbero essere delle scadenze
@ -1202,7 +1197,6 @@ void TPrimanota_application::genera_incasso(const char* causimm)
_incasso->_numdoc = m.get(F_NUMDOC); _incasso->_numdoc = m.get(F_NUMDOC);
_incasso->_clifo.get(_rel->cg(0)); _incasso->_clifo.get(_rel->cg(0));
_incasso->_totale = m.get_real(F_TOTALE); _incasso->_totale = m.get_real(F_TOTALE);
_incasso->_descrizione= m.get(F_DESCR);
_incasso->_step = 1; _incasso->_step = 1;
} }
else else
@ -1218,7 +1212,7 @@ void TPrimanota_application::genera_incasso(const char* causimm)
imp.add_to(row1, 0); imp.add_to(row1, 0);
row1.add(_incasso->_clifo.string(0x3)); row1.add(_incasso->_clifo.string(0x3));
row1.add(" "); row1.add(" ");
row1.add(_incasso->_descrizione); row1.add(" ");
row1.add(contro.string(0x3)); row1.add(contro.string(0x3));
TToken_string& row2 = cgs().row(1); TToken_string& row2 = cgs().row(1);

View File

@ -1,6 +1,6 @@
#include "cg2100.h" #include "cg2100.h"
TOOLBAR "" 0 19 0 3 TOOLBAR "" 0 -4 0 4
#include <toolbar.h> #include <toolbar.h>
ENDPAGE ENDPAGE

View File

@ -1,6 +1,6 @@
#include "cg2100.h" #include "cg2100.h"
TOOLBAR "" 0 19 0 3 TOOLBAR "" 0 -4 0 4
#include <toolbar.h> #include <toolbar.h>

View File

@ -1,7 +1,7 @@
#include "cg2100.h" #include "cg2100.h"
#include "cg21sld.h" #include "cg21sld.h"
TOOLBAR "" 0 19 0 3 TOOLBAR "" 0 -4 0 4
#include <toolbar.h> #include <toolbar.h>

View File

@ -36,6 +36,13 @@ TRectype& TMovimentoPN::iva(int i)
return _iva.row(i >= 0 ? i+1 : -1, TRUE); return _iva.row(i >= 0 ? i+1 : -1, TRUE);
} }
void TMovimentoPN::destroy_cg_row(int i)
{
if (i < 0)
_cg.destroy_rows();
else
_cg.destroy_row(i+1, TRUE);
}
int TMovimentoPN::read_mov_rows() int TMovimentoPN::read_mov_rows()
{ {

View File

@ -67,6 +67,7 @@ public:
int cg_items() const { return _cg.rows(); } int cg_items() const { return _cg.rows(); }
int iva_items() const { return _iva.rows(); } int iva_items() const { return _iva.rows(); }
void destroy_rows(long numreg); void destroy_rows(long numreg);
void destroy_cg_row(int i);
int date2liq(const TDate& data) const; // Estrae dalla data il mese di liquidazione int date2liq(const TDate& data) const; // Estrae dalla data il mese di liquidazione
char frequenza_versamenti(int year) const; // Ritorna 'M'ensile o 'T'rimestrale char frequenza_versamenti(int year) const; // Ritorna 'M'ensile o 'T'rimestrale

View File

@ -10,6 +10,7 @@
#include "cg21sld.h" #include "cg21sld.h"
#include <clifo.h> #include <clifo.h>
#include <cfven.h>
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Funzioni di decodifica/calcolo // Funzioni di decodifica/calcolo
@ -647,6 +648,20 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
bool errato = importo != speso; bool errato = importo != speso;
if (errato && a._as400 && speso.is_zero()) if (errato && a._as400 && speso.is_zero())
errato = FALSE; errato = FALSE;
/* Richiesto da Cover ed inculato da PRASSI
if (nota && errato && speso.is_zero())
{
const int annorif = m.get_int(F_ANNORIF);
const TString& numrif = m.get(F_NUMRIF);
if (annorif > 0 && !numrif.blank() &&
yesno_box("Si desidera generare automaticamente la partita %d %s?", annorif, (const char*)numrif))
{
const TBill bill(r, 2, 0x1);
errato = !a.crea_partita(bill, annorif, numrif, currig, importo);
}
}
*/
if (errato) if (errato)
{ {
@ -1169,8 +1184,9 @@ bool TPrimanota_application::codiva_handler(TMask_field& f, KEY key)
bool TPrimanota_application::detrazione_handler(TMask_field& f, KEY key) bool TPrimanota_application::detrazione_handler(TMask_field& f, KEY key)
{ {
if (key == K_TAB && f.dirty() && app().iva() == iva_acquisti) if (key == K_TAB && f.dirty() && app().iva() == iva_acquisti)
{ {
TMask_field& ci = f.mask().field(101); TMask& m = f.mask();
TMask_field& ci = m.field(101);
ci.set_dirty(); ci.set_dirty();
ci.on_hit(); ci.on_hit();
} }
@ -1246,7 +1262,7 @@ real TPrimanota_application::calcola_imp() const
return imponibili+imposte; return imponibili+imposte;
} }
// Elimina dallo sheet le righr iva senza importi (imponibile e imposta) // Elimina dallo sheet le righe iva senza importi (imponibile e imposta)
// Certified 99% // Certified 99%
void TPrimanota_application::ivas_pack() void TPrimanota_application::ivas_pack()
{ {
@ -2145,10 +2161,10 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
upi.check_type(alleg == 3 ? CHECK_REQUIRED : CHECK_NORMAL); upi.check_type(alleg == 3 ? CHECK_REQUIRED : CHECK_NORMAL);
const TString& oldpag = m.get(F_CODPAG); const TString& oldpag = m.get(F_CODPAG);
if (m.is_running() /* m.insert_mode() && oldpag.empty() */) if (m.is_running())
{ {
const TString& s = clifo.get(CLI_CODPAG); const TString& s = clifo.get(CLI_CODPAG);
if (s.not_empty() && s != oldpag) if (/* s.not_empty() && */ s != oldpag)
{ {
TEdit_field& cp = m.efield(F_CODPAG); TEdit_field& cp = m.efield(F_CODPAG);
if (cp.active()) // Se il campo F_CODPAG e' attivo if (cp.active()) // Se il campo F_CODPAG e' attivo
@ -2170,15 +2186,23 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
} }
if (a.is_fattura()) if (a.is_fattura())
{ {
const TRectype& clifov = cliforel.curr(LF_CFVEN);
if (clifo.get(CLI_CODCAB).not_empty()) if (clifo.get(CLI_CODCAB).not_empty())
{ {
m.set(FS_VSABI, clifo.get(CLI_CODABI)); m.set(FS_VSABI, clifo.get(CLI_CODABI));
m.set(FS_VSCAB, clifo.get(CLI_CODCAB)); m.set(FS_VSCAB, clifo.get(CLI_CODCAB));
m.send_key(K_TAB, FS_VSCAB); m.send_key(K_TAB, FS_VSCAB);
} }
if (clifov.get(CFV_CODCABPR).not_empty())
{
m.set(FS_NSABI, clifov.get(CFV_CODABIPR));
m.set(FS_NSCAB, clifov.get(CFV_CODCABPR));
m.send_key(K_TAB, FS_NSCAB);
}
const TString& agente = cliforel.curr(LF_CFVEN).get(CLI_CODAG); const TString& agente = clifov.get(CLI_CODAG);
if (agente.not_empty()) if (agente.not_empty())
{ {
m.set(FS_AGENTE, agente, TRUE); m.set(FS_AGENTE, agente, TRUE);

View File

@ -258,6 +258,7 @@ protected:
int cerca_conto_cf(TBill& bill) const; int cerca_conto_cf(TBill& bill) const;
bool edit_partite(const TMask& m, int riga); bool edit_partite(const TMask& m, int riga);
bool crea_partita(const TBill& bill, int anno, const TString& numero, int numrig, const TImporto& importo);
bool notify_cgline_deletion(TPartita& partita, long nreg, int numrig); bool notify_cgline_deletion(TPartita& partita, long nreg, int numrig);
bool notify_cgline_deletion(int numrig); bool notify_cgline_deletion(int numrig);

View File

@ -168,10 +168,10 @@ bool TCausale::ok() const
{ {
if (iva() == iva_errata) if (iva() == iva_errata)
return FALSE; return FALSE;
/* Non segnalare piu' questa incongruenza di poco conto
if (corrispettivi() != reg().corrispettivi()) if (corrispettivi() != reg().corrispettivi())
return error_box("Tipo documento e registro incongruenti per i corrispettivi"); return error_box("Tipo documento e registro incongruenti per i corrispettivi");
*/
return TRUE; return TRUE;
} }

View File

@ -826,10 +826,23 @@ bool TPrimanota_application::read_scadenze(TMask& m)
const bool in_valuta = m.get(SK_VALUTA).not_empty(); const bool in_valuta = m.get(SK_VALUTA).not_empty();
const real totale = m.get(in_valuta ? SK_TOTDOCVAL : F_TOTALE); const real totale = m.get(in_valuta ? SK_TOTDOCVAL : F_TOTALE);
if (totale != partita.importo(in_valuta).valore() || if (totale != partita.importo(in_valuta).valore())
m.get_real(F_IMPOSTE) != partita.get_real(PART_IMPOSTA))
{ {
warning_box("Gli importi delle scadenze non corrispondono al totale documento"); const TCurrency totdoc_c(totale, m.get(SK_VALUTA));
const TCurrency totdoc_s(partita.importo(in_valuta).valore(), m.get(SK_VALUTA));
const TString i1 = totdoc_c.string(TRUE);
const TString i2 = totdoc_s.string(TRUE);
warning_box("Il totale documento (%s) non corrisponde a quello del saldaconto (%s).",
(const char*)i1, (const char*)i2);
}
if (m.get_real(F_IMPOSTE) != partita.get_real(PART_IMPOSTA))
{
const TCurrency imposte_c(m.get_real(F_IMPOSTE));
const TCurrency imposte_s(partita.get_real(PART_IMPOSTA));
const TString i1 = imposte_c.string(TRUE);
const TString i2 = imposte_s.string(TRUE);
warning_box("Il totale delle imposte (%s) non corrisponde a quello del saldaconto (%s).",
(const char*)i1, (const char*)i2);
} }
set_totale_pagamento(FALSE); set_totale_pagamento(FALSE);

View File

@ -1346,7 +1346,7 @@ bool TGame_mask::edit_scadenza_handler(TMask_field& f, KEY k)
#ifdef __EXTRA__ #ifdef __EXTRA__
TMask* nm = new TNew_mask(gm.conto().tipo(), FALSE, FALSE); TMask* nm = new TNew_mask(gm.conto().tipo(), FALSE, FALSE);
nm->set(P_ANNO, game.anno()); nm->set(P_ANNO, game.anno());
nm->set(P_NUMERO, game.numero()); // nm->set(P_NUMERO, game.numero()); // Non deve proporre nulla: CM000206
const KEY k = nm->run(); const KEY k = nm->run();
tm = (tipo_movimento)nm->get_int(P_NUOVO); tm = (tipo_movimento)nm->get_int(P_NUOVO);
delete nm; nm = NULL; delete nm; nm = NULL;
@ -1909,7 +1909,7 @@ bool TPrimanota_application::edit_partite(const TMask& m, int riga)
partite().update_reg(pn->curr()); partite().update_reg(pn->curr());
// Esecuzione maschera di selezione partite // Esecuzione maschera di selezione partite
TGame_mask* mask = NULL; static TGame_mask* mask = NULL;
if (mask == NULL) if (mask == NULL)
mask = new TGame_mask(b, numreg, riga+1); mask = new TGame_mask(b, numreg, riga+1);
@ -1930,4 +1930,67 @@ bool TPrimanota_application::edit_partite(const TMask& m, int riga)
return changed; return changed;
} }
bool TPrimanota_application::crea_partita(const TBill& bill, int anno, const TString& numero, int numrig, const TImporto& importo)
{
TPartita& partita = app().partite().partita(bill, anno, numero);
TRiga_partite& part = partita.new_row(); // Creazione nuova riga vuota
const int nriga = part.get_int(PART_NRIGA); // Nuova riga
// Copia dati movimento corrente
part.put(PART_NREG, NUMREG_PROVVISORIO); // Numero operazione
part.put(PART_NUMRIG, numrig); // Riga su cui ho cliccato
// Forza il gruppo/conto cliente corretto (lo fa gia' anche la new_row)
part.put(PART_GRUPPOCL, bill.gruppo());
part.put(PART_CONTOCL, bill.conto());
const TCausale& causale = app().causale();
const tipo_movimento tm = (tipo_movimento)causale.tipomov();
part.put(PART_TIPOMOV, int(tm));
TMask& cm = app().curr_mask();
// Setta il cambio corrente
const TValuta valuta(cm, SK_VALUTA, SK_DATACAMBIO, SK_CAMBIO);
valuta.put(part);
part.put(PART_NUMDOC, cm.get(F_NUMDOC));
part.put(PART_DATADOC, cm.get(F_DATADOC));
part.put(PART_DATAREG, cm.get(F_DATAREG));
part.put(PART_DESCR, cm.get(F_DESCR));
part.put(PART_DATAPAG, cm.get(F_DATAREG));
part.put(PART_TIPOPAG, 1); // Rimessa diretta
// Copia dati causale corrente
part.put(PART_CODCAUS, causale.codice());
if (causale.iva() != nessuna_iva)
{
part.put(PART_REG, cm.get(F_CODREG));
part.put(PART_PROTIVA, cm.get(F_PROTIVA));
}
const char sezione = importo.sezione();
// Memorizza solo la sezione (importi nulli)
part.put(PART_SEZ, sezione);
part.put(PART_SEZABB, sezione);
part.put(PART_SEZDIFCAM, sezione);
if (tm != tm_fattura)
{
// Crea nuovo pagamento
TRectype pagamento = partita.pagamento(TPartita::UNASSIGNED, TPartita::UNASSIGNED, nriga);
const real implit = importo.valore();
pagamento.put(PAGSCA_IMPORTO, implit);
if (valuta.in_valuta())
{
const real impval = valuta.lit2val(implit);
pagamento.put(PAGSCA_IMPORTOVAL, impval);
}
partita.modifica_pagamento(pagamento, valuta, TRUE);
}
return TRUE;
}
#endif #endif

View File

@ -72,8 +72,7 @@ BEGIN
PROMPT 1 7 "Ns. Banca ABI " PROMPT 1 7 "Ns. Banca ABI "
FLAGS "Z" FLAGS "Z"
USE %BAN SELECT CODTAB?="?????" USE %BAN SELECT CODTAB?="?????"
INPUT CODTAB[1,5] 108 INPUT CODTAB 108
INPUT CODTAB[6,10] 109
DISPLAY "ABI@5" CODTAB[1,5] DISPLAY "ABI@5" CODTAB[1,5]
DISPLAY "Denominazione@50" S0 DISPLAY "Denominazione@50" S0
OUTPUT 108 CODTAB[1,5] OUTPUT 108 CODTAB[1,5]
@ -113,7 +112,7 @@ BEGIN
PROMPT 1 9 "Vs. Banca ABI " PROMPT 1 9 "Vs. Banca ABI "
FLAGS "Z" FLAGS "Z"
COPY USE 108 COPY USE 108
INPUT CODTAB[1,5] 110 INPUT CODTAB 110
COPY DISPLAY 108 COPY DISPLAY 108
OUTPUT 110 CODTAB[1,5] OUTPUT 110 CODTAB[1,5]
CHECKTYPE NORMAL CHECKTYPE NORMAL

View File

@ -161,7 +161,6 @@ BEGIN
FLAGS "Z" FLAGS "Z"
COPY USE FS_NSABI COPY USE FS_NSABI
INPUT CODTAB[1,5] FS_VSABI INPUT CODTAB[1,5] FS_VSABI
INPUT CODTAB[6,10] FS_VSCAB
COPY DISPLAY FS_NSABI COPY DISPLAY FS_NSABI
OUTPUT FS_VSABI CODTAB[1,5] OUTPUT FS_VSABI CODTAB[1,5]
OUTPUT FS_VSCAB CODTAB[6,10] OUTPUT FS_VSCAB CODTAB[6,10]
@ -203,6 +202,7 @@ BEGIN
DISPLAY "Descrizione@50" RAGSOC DISPLAY "Descrizione@50" RAGSOC
OUTPUT FS_AGENTE CODAGE OUTPUT FS_AGENTE CODAGE
OUTPUT FS_DESCAGENTE RAGSOC OUTPUT FS_DESCAGENTE RAGSOC
ADD RUN PR0 -4
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
@ -211,9 +211,10 @@ BEGIN
PROMPT 25 10 "" PROMPT 25 10 ""
USE LF_AGENTI KEY 2 USE LF_AGENTI KEY 2
INPUT RAGSOC FS_DESCAGENTE INPUT RAGSOC FS_DESCAGENTE
DISPLAY "Descrizione@50" RAGSOC DISPLAY "Descrizione@60" RAGSOC
DISPLAY "Codice" CODAGE DISPLAY "Codice" CODAGE
COPY OUTPUT FS_AGENTE COPY OUTPUT FS_AGENTE
ADD RUN PR0 -4
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END

View File

@ -406,19 +406,23 @@ void TBalance::read(const TBill& b, int esercizio, bool ignora_movap)
curr.put(PCN_GRUPPO, b.gruppo()); curr.put(PCN_GRUPPO, b.gruppo());
curr.put(PCN_CONTO, b.conto()); curr.put(PCN_CONTO, b.conto());
const int err = pcon.read(); const int err = pcon.read();
CHECK(err == NOERR, "Impossibile stabilire indicatore di bilancio"); if (err == NOERR)
const int indbil = curr.get_int(PCN_INDBIL); {
if (indbil == 1 || indbil == 2 || indbil == 5) const int indbil = curr.get_int(PCN_INDBIL);
{ if (indbil == 1 || indbil == 2 || indbil == 5)
TEsercizi_contabili esercizi; {
const int precedente = esercizi.pred(esercizio); TEsercizi_contabili esercizi;
if (precedente > 0 && find(b, precedente, si, pd, pa, sf)) const int precedente = esercizi.pred(esercizio);
{ if (precedente > 0 && find(b, precedente, si, pd, pa, sf))
_saldo_ini = si; {
_saldo_ini += pd; _saldo_ini = si;
_saldo_ini += pa; _saldo_ini += pd;
_saldo_ini += pa;
}
} }
} }
else
NFCHECK("Impossibile stabilire indicatore di bilancio");
} }
else else
{ {
@ -705,7 +709,7 @@ void TMastrino::read(const TBill& conto,
TString caption(80); TString caption(80);
caption.format("Caricamento mastrino %03d.%03d.%06ld", caption.format("Caricamento mastrino %03d.%03d.%06ld",
_conto.gruppo(), _conto.conto(), _conto.sottoconto()); _conto.gruppo(), _conto.conto(), _conto.sottoconto());
TProgind pi(num_giorni, caption, FALSE, TRUE, 48); TProgind pi(num_giorni, caption, FALSE, TRUE);
// Stima dimensione mastrino // Stima dimensione mastrino
_riga.choose_step(num_giorni); _riga.choose_step(num_giorni);
@ -883,14 +887,17 @@ TImporto TMastrino::saldo_periodo() const
bool TMastrino::expandable(long rec) const bool TMastrino::expandable(long rec) const
{ {
bool e = FALSE; bool e = FALSE;
if (row(rec).tipo() == riga_mastrino) if (rec >= 0 && rec < items())
{ {
if (rec < items()-1) if (row(rec).tipo() == riga_mastrino)
e = row(rec+1).tipo() != riga_contropartita; {
else if (rec < items()-1)
e = TRUE; e = row(rec+1).tipo() != riga_contropartita;
} else
e = TRUE;
}
}
return e; return e;
} }
@ -2363,11 +2370,14 @@ bool TMastrini_grid::on_record(long rec)
void TMastrini_grid::on_dbl_cell(long rec, short id) void TMastrini_grid::on_dbl_cell(long rec, short id)
{ {
if (_mastrino.expandable(rec)) if (rec >= 0 && rec < items())
_mastrino.expand(rec); {
else if (_mastrino.expandable(rec))
_mastrino.collapse(rec); _mastrino.expand(rec);
update(); else
_mastrino.collapse(rec);
update();
}
} }
void TMastrini_grid::on_grid_button() void TMastrini_grid::on_grid_button()

View File

@ -10,7 +10,8 @@
#include <prefix.h> #include <prefix.h>
#include <progind.h> #include <progind.h>
#include <sheet.h> #include <sheet.h>
#include <utility.h>
#include "cg4300.h" #include "cg4300.h"
#include "cg4300a.h" #include "cg4300a.h"
@ -378,15 +379,15 @@ bool TLiquidazione_app::user_create()
if (!nocalc) if (!nocalc)
{ {
// se ci sono altri mesi dopo l'ultimo calcolato, invalida il // se ci sono altri mesi dopo l'ultimo calcolato, invalida il
// flag 'calcolato' del primo, per causare il ricalcolo dei // flag 'calcolato' del primo, per causare il ricalcolo dei
// successivi (evitando problemi per credito precedente) // successivi (evitando problemi per credito precedente)
for (m = _month+1; m <= 13; m++) for (m = _month+1; m <= 13; m++)
if (look_lim(m)) if (look_lim(m))
{ {
_lim->put("B0",""); _lim->put("B0","");
_lim->rewrite(); _lim->rewrite();
break; break;
} }
} }

View File

@ -163,9 +163,10 @@ class _DescrItem : public TObject
public: public:
word _flags; word _flags;
word _f0, _f1, _f2, _f3; word _f0, _f1, _f2, _f3;
TString _s0, _s1, _s2, _s3, _s4, _s5; TString _s0, _s1, _s2, _s3, _s4, _s5, _s6;
real _r0, _r1, _r2, _r3, _r4, _r5, real _r0, _r1, _r2, _r3, _r4, _r5,
_r6, _r7, _r8, _r9, _r10,_r11, _r12, _r13, _r14, _r15; _r6, _r7, _r8, _r9, _r10, _r11, _r12,
_r13, _r14, _r15, _r16, _r17, _r18, _r19;
TArray _arr; TArray _arr;
TDate _d0; TDate _d0;
@ -239,7 +240,7 @@ class TLiquidazione_app : public TPrint_application
wht _what; wht _what;
TBit_array _selected; TBit_array _selected;
int _menu; // 1 = Liquidazione, 2 = Deleghe, 3 = Acconti int _menu; // 1 = Liquidazione, 2 = Deleghe, 3 = Acconti
TString _year; // anno di calcolo TString16 _year; // anno di calcolo
int _month; // mese da calcolare int _month; // mese da calcolare
TDate _date; // data di stampa TDate _date; // data di stampa
bool _isprint; // vuoi stampare o no? bool _isprint; // vuoi stampare o no?
@ -274,7 +275,7 @@ class TLiquidazione_app : public TPrint_application
bool _riepilogo; // stampa riepilogo sul registro bool _riepilogo; // stampa riepilogo sul registro
bool _sind11; // somma imposte non detraibili in trasferimento IVA11 (da configurazione dati studio) bool _sind11; // somma imposte non detraibili in trasferimento IVA11 (da configurazione dati studio)
tbc _basecalc; // tipo base di calcolo acconto tbc _basecalc; // tipo base di calcolo acconto
TString _freqviva; // frequenza versamenti (M|T) TString16 _freqviva; // frequenza versamenti (M|T)
long _n_ditte; // numero ditte long _n_ditte; // numero ditte
bool _comp_acconto; // stiamo calcolando l'acconto bool _comp_acconto; // stiamo calcolando l'acconto
TArray _nomiditte; // array descr. ditte per sheet TArray _nomiditte; // array descr. ditte per sheet
@ -577,9 +578,14 @@ public:
void set_plm(_DescrItem& d); void set_plm(_DescrItem& d);
bool set_annual(_DescrItem& d); bool set_annual(_DescrItem& d);
void set_grand(_DescrItem& d); void set_grand(_DescrItem& d);
void set_grand_1999(_DescrItem& d, int &rw);
void set_grand_2000(_DescrItem& d, int &rw);
void set_pim_head(_DescrItem& d); void set_pim_head(_DescrItem& d);
void set_liqacc(_DescrItem& d); void set_liqacc(_DescrItem& d);
// Utility per stampare nella colonna debito o credito
void print_importo(int rw, const char* prompt, real imp, bool red = FALSE);
// cercapalle in tabelle con opzione di creazione se serve // cercapalle in tabelle con opzione di creazione se serve
bool look_pim(int m, const char* a, const char* r, const char* cr, bool look_pim(int m, const char* a, const char* r, const char* cr,
const char* i, int tipodet = 0, bool create = FALSE); const char* i, int tipodet = 0, bool create = FALSE);
@ -629,8 +635,8 @@ public:
// questa serve per i progressivi: la data passata va bene // questa serve per i progressivi: la data passata va bene
// se il movimento deve essere considerato in calcolo e riepilogo // se il movimento deve essere considerato in calcolo e riepilogo
// per la liquidazione di month // per la liquidazione di month
bool is_date_ok (TDate& d, int month, int liqmonth, int year); bool is_date_ok (const TDate& d, int month, int liqmonth, int year);
bool is_in_liq_period(TDate& d); bool is_in_liq_period(const TDate& d);
bool is_first_month (int m); bool is_first_month (int m);
int liq_month(int x); int liq_month(int x);
@ -656,6 +662,8 @@ public:
void set_acconto_p(_DescrItem& d); void set_acconto_p(_DescrItem& d);
void set_acchead_p(_DescrItem& d); void set_acchead_p(_DescrItem& d);
real credito_utilizzato(int month, bool iva, bool f24) const;
// cippiuppiu' // cippiuppiu'
TLiquidazione_app(int men); TLiquidazione_app(int men);
virtual ~TLiquidazione_app() {} virtual ~TLiquidazione_app() {}

View File

@ -156,17 +156,22 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
_isintr = !cnf.get_bool("InTrTr") && _freqviva != "M"; _isintr = !cnf.get_bool("InTrTr") && _freqviva != "M";
if (_isbenzinaro) if (_isbenzinaro)
_gest4 = cnf.get_bool("GesT74"); _gest4 = cnf.get_bool("GesT74");
// controlla che il periodo corrente non sia l'inizio dell'attivita'
// nel caso, differita va a FALSE
_monthinatt = 1;
} }
TDate inatt(_nditte->lfile().get("DINIZIOATT"));
// controlla che il periodo corrente non sia l'inizio dell'attivita'
// nel caso, differita va a FALSE
_monthinatt = 1;
const TDate inatt(_nditte->curr().get("DINIZIOATT"));
if (is_in_liq_period(inatt))
_isdifferita = FALSE;
if (inatt.year() == atoi(_year))
_monthinatt = inatt.month();
{ {
if (is_in_liq_period(inatt)) _isdifferita = FALSE;
if (inatt.year() == atoi(_year)) _monthinatt = inatt.month();
TConfig cnf1(CONFIG_STUDIO, "cg"); TConfig cnf1(CONFIG_STUDIO, "cg");
_isricacq = cnf1.get_bool("RicAcq") && month == 13; _isricacq = cnf1.get_bool("RicAcq") && month == 13;
} }
// ricalcolo normale // ricalcolo normale
// lim c'e' solo per i trimestri // lim c'e' solo per i trimestri
bool ok = _lim->get_bool("B0"); bool ok = _lim->get_bool("B0");
@ -365,10 +370,10 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
//if (calc || !recalc) //if (calc || !recalc)
//fine //fine
// Se siamo in annuale e se non e' stato indicato di ricalcolare (stampa liquidazione chiamata // Se siamo in annuale e se non e' stato indicato di ricalcolare (stampa liquidazione chiamata
// dalla stampa registri) non riscrivere i risultati delle liquidazioni, // dalla stampa registri) non riscrivere i risultati delle liquidazioni,
if ((is_month_ok_strict(month) && _month != 13 && _recalc != never) || _is_interactive /*month == 13*/ ) if ((is_month_ok_strict(month) && _month != 13 && _recalc != never) || _is_interactive /*month == 13*/ )
write_liq(month, atts); write_liq(month, atts);
// occorre poterla chiamare altre volte con mesi diversi // occorre poterla chiamare altre volte con mesi diversi
_nditte->restore_status(); _nditte->restore_status();
@ -394,8 +399,6 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
} }
} }
//in caso di stampa registri e in caso sia //in caso di stampa registri e in caso sia
//stato calcolato l'acconto (metodo analitico) //stato calcolato l'acconto (metodo analitico)
//deve essere stampato il prospetto di liquidazione //deve essere stampato il prospetto di liquidazione
@ -776,7 +779,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
TString tipocr_s = _rmoviva->get(RMI_TIPOCR); TString tipocr_s = _rmoviva->get(RMI_TIPOCR);
int tipocr = atoi(tipocr_s); int tipocr = atoi(tipocr_s);
real imponibile = _rmoviva->get_real(RMI_IMPONIBILE); real imponibile = _rmoviva->get_real(RMI_IMPONIBILE);
real imposta = _rmoviva->get_real(RMI_IMPOSTA); const real imposta = _rmoviva->get_real(RMI_IMPOSTA);
bool intra = _rmoviva->get_bool(RMI_INTRA); bool intra = _rmoviva->get_bool(RMI_INTRA);
int tipoatt = _rmoviva->get_int(RMI_TIPOATT); int tipoatt = _rmoviva->get_int(RMI_TIPOATT);
// autofatture art. 17 per non residenti, con trattamento // autofatture art. 17 per non residenti, con trattamento
@ -937,22 +940,25 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// else fuck it up, dirty dick head. // else fuck it up, dirty dick head.
break; break;
case vendita: // VENDITA case vendita: // VENDITA
if (tipocr == 4) if (tipoiva != "NS") /* Segnalazione CM000219: I non soggetti non vanno considerati */
/* {
* Vendite strum. art 17 (cess. amm.) if (tipocr == 4)
* Comprende anche autofatture, anche nell'annuale /*
* (Sergio 1995) * Vendite strum. art 17 (cess. amm.)
*/ * Comprende anche autofatture, anche nell'annuale
{ * (Sergio 1995)
/* NO! */
* Invece non le deve comprendere nell'annuale {
* (Vladimiro 1995, piu' tardi) /* NO!
*/ * Invece non le deve comprendere nell'annuale
if (!(_month == 13 && autodafe)) * (Vladimiro 1995, piu' tardi)
{ */
cess_amm += imponibile; if (!(_month == 13 && autodafe))
cess_amm_iva += imposta; {
} cess_amm += imponibile;
cess_amm_iva += imposta;
}
}
} }
break; break;
default: // Chissa'... forse in futuro vi sara' un ulteriore tipo di movimento... default: // Chissa'... forse in futuro vi sara' un ulteriore tipo di movimento...
@ -1250,7 +1256,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// totale acquisti // totale acquisti
acquisti += imponibile; acquisti += imponibile;
acquisti_iva += imposta; acquisti_iva += imposta;
const int yr = datedoc.year(); const int yr = datedoc.year();
if (year_int > 1997 && (yr < (year_int-1) && yr > (year_int-4))) // Prende un intervallo di 2 anni al massimo if (year_int > 1997 && (yr < (year_int-1) && yr > (year_int-4))) // Prende un intervallo di 2 anni al massimo
@ -2412,24 +2418,25 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
// Calcolo liq. mensili e liq. annuali. Scrive le lim // Calcolo liq. mensili e liq. annuali. Scrive le lim
{ {
TToken_string atts(codatts); TToken_string atts(codatts);
const char* tmpatt;
const int year_int = atoi(_year); const int year_int = atoi(_year);
if (_ver->read(atoi(_year),_month)!=NOERR) if (_ver->read(year_int, _month)!=NOERR)
warning_box("Errore %d in lettura tabella versamenti ed interessi.",_ver->status()); warning_box("Errore %d in lettura tabella versamenti ed interessi.",_ver->status());
// evita casino se differita ma si sta ricalcolando il primo
// mese con ricalcolo di piu' mesi
bool wasdifferita = (_isdifferita && month <= _monthinatt &&
_month > _monthinatt);
/* Cazzata galattica: già gestito BENE da update_firm, prima di chiamare questa funzione
// evita casino se differita ma si sta ricalcolando il primo mese con ricalcolo di piu' mesi
const bool wasdifferita = (_isdifferita && month <= _monthinatt && _month > _monthinatt);
if (wasdifferita) _isdifferita = FALSE; if (wasdifferita) _isdifferita = FALSE;
*/
// liq. differita: considera mese precedente (solo per i risultati) // liq. differita: considera mese precedente (solo per i risultati)
int deltam = month; int deltam = month;
if (_isdifferita && !is_first_month(month) && month != 13) if (_isdifferita && !is_first_month(month) && month != 13)
month -= (_freqviva == "T" ? 3 : 1); month -= (_freqviva == "T" ? 3 : 1);
deltam -= month; deltam -= month;
look_lia();
const bool new_age_2000 = (year_int >= 2000) && (_lia->get("S9") == "NV");
real risultato = 0.0; real risultato = 0.0;
real detrazioni = 0.0; real detrazioni = 0.0;
real versamenti = 0.0; real versamenti = 0.0;
@ -2445,7 +2452,10 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
real iva_vend = 0.0; real iva_vend = 0.0;
real iva_acq = 0.0; real iva_acq = 0.0;
real conguaglio = 0.0; real conguaglio = 0.0;
real variazioni_imposta = 0.0;
real imposta_non_versata = 0.0;
real crediti_speciali = 0.0;
// totali per regimi agricoli // totali per regimi agricoli
real acq_noCEE = 0.0; real acq_noCEE = 0.0;
real imp_agr1 = 0.0; real imp_agr1 = 0.0;
@ -2475,11 +2485,24 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
bool almeno_una_normale = FALSE; bool almeno_una_normale = FALSE;
int attc = 0; // counter attivita' int attc = 0; // counter attivita'
// nuova liquidazione
real credito_utilizzabile_inizio_anno = ZERO;
real credito_utilizzato_inizio_anno = ZERO;
real credito_utilizzato_iva = ZERO;
if (new_age_2000)
{
credito_utilizzato_inizio_anno = _lia->get_real("R15");
credito_utilizzabile_inizio_anno = _lia->get_real("R0") - credito_utilizzato_inizio_anno;
if (credito_utilizzabile_inizio_anno < ZERO)
credito_utilizzabile_inizio_anno = ZERO;
}
TLocalisamfile& attiv = _nditte->lfile(LF_ATTIV); TLocalisamfile& attiv = _nditte->lfile(LF_ATTIV);
const char* tmpatt;
while ((tmpatt = atts.get()) != NULL) while ((tmpatt = atts.get()) != NULL)
{ {
TString att(tmpatt); const TString16 att = tmpatt;
// Reperisce il flag di regime agricolo per ogni attivita'... // Reperisce il flag di regime agricolo per ogni attivita'...
attiv.put(ATT_CODATT,att); attiv.put(ATT_CODATT,att);
@ -2493,11 +2516,11 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
// usa i totali del mese di dicembre dell'anno // usa i totali del mese di dicembre dell'anno
// precedente // precedente
differita = TRUE; differita = TRUE;
TString yr(_year); const TString16 yr(_year); // Salvo anno corrente
_year.format("%d", year_int-1); _year.format("%d", year_int-1);
if (!look_lim(12)) //controlla solamente, il vero posizionamento lo fa dopo if (!look_lim(12)) //controlla solamente, il vero posizionamento lo fa dopo
{ {
_year = yr; _year = yr; // Ripristino anno corrente
differita = FALSE; differita = FALSE;
} }
} }
@ -2593,38 +2616,68 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
* rimborso se chiesto e previsto * rimborso se chiesto e previsto
* in annuale non si chiede e non va sommato se no lo cumula * in annuale non si chiede e non va sommato se no lo cumula
*/ */
if (attc == 0 && is_lim && m < 13) if (attc == 0 && is_lim && m < 13 && is_month_ok_strict(m,month))
{ {
risultato += _lim->get_real("R1"); const real rimborso_richiesto = _lim->get_real("R1");
rimborsi += _lim->get_real("R1"); risultato += rimborso_richiesto;
res_debt += _lim->get_real("R1"); rimborsi += rimborso_richiesto;
res_debt += rimborso_richiesto;
} }
/* /*
* rettifiche gia' col loro bravo segno * rettifiche gia' col loro bravo segno
*/ */
if (attc == 0 && is_lim) if (attc == 0 && is_lim && is_month_ok_strict(m,month))
{ {
// se sono per benzinaro le conta solo in annuale, bool somma_rettifiche = FALSE;
// se no vanno solo in periodica if (year_int < 2000)
// almeno cosi' dicevano fino ad agosto
// poi, sara' il caldo, mi hanno detto che e' sbagliato
TString descrett(_lim->get("S0"));
bool isforbenzinaro = descrett[0] == '$' ||
(descrett[0] == '>' && descrett[1] == '>');
if (/*(isforbenzinaro && _isannual) || ...alla cincia quest'idea non piaceva piu'
(!isforbenzinaro && !_isannual) adesso la storia e' cosi':
in ANNUALE solo se benzinaro, altrimenti niente; diversamente tutto*/
!(month == 13 && !isforbenzinaro) && m < 13)
{ {
risultato += _lim->get_real("R5"); // se sono per benzinaro le conta solo in annuale,
rettifiche += _lim->get_real("R5"); // se no vanno solo in periodica
if (_lim->get_real("R5").sign() < 0) // almeno cosi' dicevano fino ad agosto
res_cred += abs(_lim->get_real("R5")); // poi, sara' il caldo, mi hanno detto che e' sbagliato
else const TString& descrett = _lim->get("S0");
res_debt += abs(_lim->get_real("R5")); const bool isforbenzinaro = descrett[0] == '$' || (descrett[0] == '>' && descrett[1] == '>');
somma_rettifiche = !(month == 13 && !isforbenzinaro) && m < 13;
} }
else
{
somma_rettifiche = month < 13 || m < 13; // CM00278
}
if (somma_rettifiche)
{
const real rett = _lim->get_real("R5");
risultato += rett;
rettifiche += rett;
if (rett.sign() < 0)
res_cred -= rett;
else
res_debt += rett;
}
}
/*
* Somme varie per 13a
*/
if (attc == 0 && is_lim && m < 13 && is_month_ok_strict(m,month))
{
const real r17 = _lim->get_real("R17");
variazioni_imposta += r17;
risultato += r17;
if (r17.sign() >= 0)
res_debt += r17;
else
res_cred -= r17;
const real r18 = _lim->get_real("R18");
imposta_non_versata += r18;
risultato += r18;
res_debt += r18;
const real r19 = _lim->get_real("R19");
crediti_speciali += r19;
risultato -= r19;
res_cred += r19;
} }
} // fine ciclo sul mese } // fine ciclo sul mese
@ -2677,6 +2730,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
} // __ end of agricolo } // __ end of agricolo
} // end ciclo su attivita' } // end ciclo su attivita'
real credito_utilizzabile = ZERO;
if (month < 13) // va bene anche se differita sommando deltam (che e' 0 normalmente) if (month < 13) // va bene anche se differita sommando deltam (che e' 0 normalmente)
{ {
// toglie credito precedente // toglie credito precedente
@ -2687,21 +2742,51 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
debt_precd = debt_prec(month+deltam); debt_precd = debt_prec(month+deltam);
risultato += debt_precd; risultato += debt_precd;
res_debt += debt_precd; res_debt += debt_precd;
if (new_age_2000 && credito_utilizzabile_inizio_anno > ZERO &&
(_freqviva == "M" || is_trim(month+deltam)))
{
real debiti = res_debt; round_mille_lire(debiti);
real crediti = res_cred; round_mille_lire(crediti);
const real risul = debiti - crediti;
if (risul > ZERO)
{
credito_utilizzabile = credito_utilizzabile_inizio_anno;
credito_utilizzabile -= credito_utilizzato(month+deltam, TRUE, TRUE);
if (credito_utilizzabile < ZERO) credito_utilizzabile = ZERO;
credito_utilizzato_iva = min(risul, credito_utilizzabile);
res_cred += credito_utilizzato_iva;
risultato -= credito_utilizzato_iva;
}
}
} }
else else
{ {
// per l'annuale considera solo il credito a inizio anno if (new_age_2000)
// const real cred_res = _lia->get_real("R15"); {
cred_prec = credito_prec(_freqviva == "M" ? 1 : 3); cred_prec = ZERO;
// cred_trasf= cred_res > ZERO ? cred_res - cred_prec : ZERO; vacca la pt if (credito_utilizzabile_inizio_anno > ZERO)
cred_trasf = _lia->get_real("R15"); {
const real cred_res = cred_prec - cred_trasf; credito_utilizzato_iva = credito_utilizzato(13, TRUE, FALSE); // CM00285
// risultato -= cred_prec - cred_trasf; res_cred += credito_utilizzato_iva;
// res_cred += cred_prec + cred_trasf; risultato -= credito_utilizzato_iva;
risultato -= cred_res;
res_cred += cred_res;
}
// Calcola credito utilizzabile da riportare nell'anno successivo
credito_utilizzabile = credito_utilizzabile_inizio_anno;
credito_utilizzabile -= credito_utilizzato(13, TRUE, TRUE);
if (credito_utilizzabile < ZERO) credito_utilizzabile = ZERO;
}
}
else
{
// per l'annuale considera solo il credito a inizio anno
cred_prec = credito_prec(_freqviva == "M" ? 1 : 3);
cred_trasf = _lia->get_real("R15");
const real cred_res = cred_prec - cred_trasf;
risultato -= cred_res;
res_cred += cred_res;
}
}
if (month == 13) if (month == 13)
{ {
@ -2777,7 +2862,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
_pla->rewrite(); _pla->rewrite();
// scrivi nuovo prorata in tabella anno successivo // scrivi nuovo prorata in tabella anno successivo
TString yr = _year; const TString16 yr = _year;
_year.format("%d", atoi(_year) + 1); _year.format("%d", atoi(_year) + 1);
look_pla(att, TRUE); look_pla(att, TRUE);
_pla->put("R8", prorata); _pla->put("R8", prorata);
@ -2803,7 +2888,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
if (atoi(_year) <= 1997) if (atoi(_year) <= 1997)
{ {
if (tot_cong.sign() > 0) res_debt += tot_cong; if (tot_cong.sign() > 0) res_debt += tot_cong;
if (tot_cong.sign() < 0) res_cred += abs(tot_cong); if (tot_cong.sign() < 0) res_cred -= tot_cong;
} }
else // Nuovo prorata dal 1998, congloba il conguaglio pro-rata nell'IVA ammessa in detrazione else // Nuovo prorata dal 1998, congloba il conguaglio pro-rata nell'IVA ammessa in detrazione
{ {
@ -2823,20 +2908,32 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
// azzeriamo tutto (tranne r1, r5, s1, s0, s7) // azzeriamo tutto (tranne r1, r5, s1, s0, s7)
TString codtab = _lim->get("CODTAB"); TString codtab = _lim->get("CODTAB");
real r5 = _lim->get("R5"); real rimborso = _lim->get("R1");
real r1 = _lim->get("R1"); real r5 = _lim->get("R5"); // Rettifiche
real credito_utilizzato_f24 = _lim->get("R16");
real r17 = _lim->get("R17");
real r18 = _lim->get("R18");
real r19 = _lim->get("R19");
TString s7 = _lim->get("S7"); TString s7 = _lim->get("S7");
TString s0 = _lim->get("S0"); const TString s0 = _lim->get("S0"); // Descrizioni rettifiche
TString s1 = _lim->get("S1"); const TString s1 = _lim->get("S1");
const TString s2 = _lim->get("S2");
const TString s3 = _lim->get("S3");
bool wasb0 = _lim->get_bool("B0"); bool wasb0 = _lim->get_bool("B0");
bool wasb1 = _lim->get_bool("B1"); bool wasb1 = _lim->get_bool("B1");
_lim->zero(); _lim->zero();
_lim->put("CODTAB", codtab); _lim->put("CODTAB", codtab);
_lim->put("R1", r1); _lim->put("R1", rimborso);
_lim->put("R5", r5); _lim->put("R5", r5); // Rettifiche
_lim->put("R16", credito_utilizzato_f24);
_lim->put("R17", r17);
_lim->put("R18", r18);
_lim->put("R19", r19);
_lim->put("S0", s0); _lim->put("S0", s0);
_lim->put("S1", s1); _lim->put("S1", s1);
_lim->put("S2", s2);
_lim->put("S3", s3);
_lim->put("S7", s7); _lim->put("S7", s7);
_lim->put("B0", wasb0 ? "X" : ""); _lim->put("B0", wasb0 ? "X" : "");
_lim->put("B1", wasb1 ? "X" : ""); _lim->put("B1", wasb1 ? "X" : "");
@ -2861,7 +2958,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
// in annuale si arrotondera' a 1000 in stampa // in annuale si arrotondera' a 1000 in stampa
// se no il conguaglio prorata fa casino // se no il conguaglio prorata fa casino
risultato.round(ROUND_LIRA); risultato.round(ROUND_LIRA);
_lim->put("R0",risultato); _lim->put("R0",risultato);
_lim->put("R2",cred_cost); _lim->put("R2",cred_cost);
_lim->put("R3",deb_mens); _lim->put("R3",deb_mens);
@ -2879,6 +2976,10 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
// anno precedente // anno precedente
_lim->put("R1",rimborsi); _lim->put("R1",rimborsi);
_lim->put("R5",rettifiche); _lim->put("R5",rettifiche);
_lim->put("R17", variazioni_imposta);
_lim->put("R18", imposta_non_versata);
_lim->put("R19", crediti_speciali);
} }
/* /*
@ -2892,8 +2993,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
if (_isintr && ( true_trim || (month == 12 && _isbenzinaro && _gest4) if (_isintr && ( true_trim || (month == 12 && _isbenzinaro && _gest4)
|| (month == 13 && !(_isbenzinaro && _gest4)) )) || (month == 13 && !(_isbenzinaro && _gest4)) ))
{ {
real interesse = interesse_trimestrale(_month); const real interesse = interesse_trimestrale(_month);
real ivi = risultato * (interesse / CENTO); real ivi = risultato.sign() > 0 ? (risultato * interesse / CENTO) : ZERO;
ivi.ceil(ROUND_LIRA); ivi.ceil(ROUND_LIRA);
_lim->put("R14", ivi); _lim->put("R14", ivi);
} }
@ -2903,17 +3004,17 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|| (month == 13 && !(_isbenzinaro && _gest4)) )) || (month == 13 && !(_isbenzinaro && _gest4)) ))
_lim->put("R10",interesse_trimestrale(_month)); _lim->put("R10",interesse_trimestrale(_month));
// totale conguaglio su tutte le attivita' _lim->put("R7", tot_cong); // totale conguaglio su tutte le attivita'
_lim->put("R7", tot_cong);
_lim->put("R8", versamenti); _lim->put("R8", versamenti);
_lim->put("R9", vers_int); _lim->put("R9", vers_int);
_lim->put("R11", acc_dec);
_lim->put("R12", res_cred);
_lim->put("R13", res_debt);
_lam->put("R0", iva_vend); _lam->put("R0", iva_vend);
_lam->put("R1", iva_acq); _lam->put("R1", iva_acq);
_lam->put("R2", cred_prec); _lam->put("R2", cred_prec);
_lam->put("R3", debt_precd); _lam->put("R3", debt_precd);
_lim->put("R11", acc_dec);
_lim->put("R12", res_cred);
_lim->put("R13", res_debt);
if (!_recalc_only && _recalc != never) if (!_recalc_only && _recalc != never)
{ {
@ -2926,15 +3027,16 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
if (_recalc_only) if (_recalc_only)
_lim->put("B1", "X"); _lim->put("B1", "X");
/* Cazzata galattica: vedi sopra
if (wasdifferita) _isdifferita = TRUE; if (wasdifferita) _isdifferita = TRUE;
*/
// AWFUL! se siamo in annuale, occorre arrotondare alle 1000 lire // AWFUL! se siamo in annuale, occorre arrotondare alle 1000 lire
// TUTTI gli ADDENDI e non il risultato. Cio' e' disonesto e mostruoso;
// siccome sa di ricorso al TAR nonche' di errore della Prassi
// schiaffo tutto il codice nell'IF che segue, e se lo si vuole togliere // schiaffo tutto il codice nell'IF che segue, e se lo si vuole togliere
// non si fara' che scancellare tutto il blocco // non si fara' che scancellare tutto il blocco
if (month == 13) const bool after2000 = atoi(_year) >= 2000; // CM000222
if (month == 13 || after2000)
{ {
// molto codice duplicato, ma ne val la pena (vedi sopra) // molto codice duplicato, ma ne val la pena (vedi sopra)
round_mille_lire(iva_vend); round_mille_lire(iva_vend);
@ -2949,55 +3051,80 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
round_mille_lire(cred_trasf); round_mille_lire(cred_trasf);
round_mille_lire(tot_cong); round_mille_lire(tot_cong);
round_mille_lire(acc_dec); round_mille_lire(acc_dec);
round_mille_lire(debt_precd); round_mille_lire(debt_precd);
round_mille_lire(variazioni_imposta);
round_mille_lire(imposta_non_versata);
round_mille_lire(credito_utilizzato_iva);
round_mille_lire(crediti_speciali);
res_cred = iva_acq + versamenti + vers_int + cred_prec - cred_trasf + acc_dec + credito_utilizzato_iva + crediti_speciali;
// res_cred = iva_acq + versamenti + vers_int + cred_prec + cred_trasf + acc_dec; res_debt = iva_vend + rimborsi + debt_precd + imposta_non_versata;
res_cred = iva_acq + versamenti + vers_int + cred_prec - cred_trasf + acc_dec;
res_debt = iva_vend + rimborsi + debt_precd; // Tolto la somma di deb_mens, perche' gia' presente in iva_vend
if (atoi(_year) <= 1997) // Non vale piu' dal 1998 in poi; iva_acq e' gia' ok e cosi' res_cred. if (atoi(_year) < 1998) // Non vale piu' dal 1998 in poi; iva_acq e' gia' ok e cosi' res_cred.
if (tot_cong.sign() > 0) res_debt += tot_cong; {
else res_cred -= tot_cong; if (tot_cong.sign() > 0)
res_debt += tot_cong;
else
res_cred -= tot_cong;
}
if (rettifiche.sign() > 0) res_debt += rettifiche; if (rettifiche.sign() >= 0)
else res_cred -= rettifiche; res_debt += rettifiche;
else
res_cred -= rettifiche;
if (variazioni_imposta.sign() >= 0)
res_debt += variazioni_imposta;
else
res_cred -= variazioni_imposta;
if (almeno_una_normale) if (almeno_una_normale)
res_cred += detrazioni; res_cred += detrazioni;
risultato = res_debt - res_cred; risultato = res_debt - res_cred;
// tut ricalcule', riscrivem // tut ricalcule', riscrivem
_lim->put("R0", risultato);
_lim->put("R2", cred_cost);
_lim->put("R3", deb_mens);
_lim->put("R1", rimborsi);
_lim->put("R5", rettifiche);
_lim->put("R6", detrazioni);
_lim->put("R7", tot_cong);
_lim->put("R8", versamenti);
_lim->put("R9", vers_int);
_lam->put("R0", iva_vend); _lam->put("R0", iva_vend);
_lam->put("R1", iva_acq); _lam->put("R1", iva_acq);
_lam->put("R2", cred_prec); _lam->put("R2", cred_prec);
_lam->put("R3", debt_precd); _lam->put("R3", debt_precd);
_lam->put("R4", cred_trasf); _lam->put("R4", cred_trasf);
_lim->put("R0", risultato);
_lim->put("R1", rimborsi);
_lim->put("R2", cred_cost);
_lim->put("R3", deb_mens);
_lim->put("R5", rettifiche);
_lim->put("R6", detrazioni);
_lim->put("R7", tot_cong);
_lim->put("R8", versamenti);
_lim->put("R9", vers_int);
_lim->put("R11", acc_dec); _lim->put("R11", acc_dec);
_lim->put("R12", res_cred); _lim->put("R12", res_cred);
_lim->put("R13", res_debt); _lim->put("R13", res_debt);
if (after2000) // Anche R14
// Riporta eventuale credito nella tabella parametri liquidazione dell'anno successivo
if (risultato < 0) // Risultato a credito
{ {
TString yr = _year; real ivi = _lim->get("R14");
_year = format("%d", atoi(_year) + 1); round_mille_lire(ivi);
if (look_lia(0l, TRUE)) _lim->put("R14", ivi);
}
_lim->put("R15", credito_utilizzato_iva);
if (month == 13)
{
// Riporta eventuale credito nella tabella parametri liquidazione dell'anno successivo
const real riporto = credito_utilizzabile - risultato;
if (riporto > ZERO) // Risultato a credito
{ {
_lia->put("R0", abs(risultato)); const TString16 yr = _year;
_lia->rewrite(); _year.format("%d", atoi(_year) + 1);
if (look_lia(0l, TRUE))
{
_lia->put("R0", riporto);
_lia->rewrite();
}
_year = yr;
} }
_year = yr;
} }
// ciapa // ciapa
} }
@ -3048,7 +3175,7 @@ void TLiquidazione_app::recalc_annual(const char* att)
_CorrItem *cc; _CorrItem *cc;
bool is_key; bool is_key;
for (_pim->first(); !_pim->eof(); _pim->next()) for (_pim->first(); !_pim->eof(); _pim->next())
{ {
if (_year != *_pim_anno || _month != atoi(*_pim_mese)) // In questo caso _month vale sempre 13 if (_year != *_pim_anno || _month != atoi(*_pim_mese)) // In questo caso _month vale sempre 13
continue; continue;

View File

@ -75,14 +75,17 @@ int TLiquidazione_app::next_trim(int x)
return x + (2 - ((x-1) % 3)); return x + (2 - ((x-1) % 3));
} }
bool TLiquidazione_app::is_in_liq_period(TDate& d) bool TLiquidazione_app::is_in_liq_period(const TDate& d)
{ {
bool ok = FALSE; bool ok = FALSE;
const int y = atoi(_year); const int y = atoi(_year);
if (_freqviva == "M") ok = d.month() == _month && d.year() == y; if (_freqviva == "M")
{
ok = d.month() == _month && d.year() == y;
}
else else
{ {
int m = liq_month(_month); const int m = liq_month(_month);
ok = d.month() > m - 3 && d.month() <= m && d.year() == y; ok = d.month() > m - 3 && d.month() <= m && d.year() == y;
} }
return ok; return ok;
@ -102,7 +105,7 @@ int TLiquidazione_app::previous_month(int m)
return m == 3 ? 3 : m - 3; return m == 3 ? 3 : m - 3;
} }
bool TLiquidazione_app::is_date_ok(TDate& d, int month, int liqmonth, int year) bool TLiquidazione_app::is_date_ok(const TDate& d, int month, int liqmonth, int year)
// TRUE se la data passata va considerata nel // TRUE se la data passata va considerata nel
// ricalcolo dei progressivi mensili per il mese e anno // ricalcolo dei progressivi mensili per il mese e anno
// selezionati. Vedi cg4301.cpp per maggiori informazioni // selezionati. Vedi cg4301.cpp per maggiori informazioni
@ -111,7 +114,7 @@ bool TLiquidazione_app::is_date_ok(TDate& d, int month, int liqmonth, int year)
bool ok; bool ok;
if (year < 1998 || _recalc_regis) // Vecchia selezione o calcolo progoressivi per stampa registri bollati if (year < 1998 || _recalc_regis) // Vecchia selezione o calcolo progressivi per stampa registri bollati
{ {
if (d.month() > month || d.year() != atoi(_year)) if (d.month() > month || d.year() != atoi(_year))
return FALSE; return FALSE;
@ -808,14 +811,20 @@ real TLiquidazione_app::debt_prec(int month)
real TLiquidazione_app::credito_prec(int month) real TLiquidazione_app::credito_prec(int month)
// ritorna l'appropriato credito precedente al mese in corso // ritorna l'appropriato credito precedente al mese in corso
{ {
real c(0.0); real c = ZERO;
const bool lia_ok = look_lia(); const bool lia_ok = look_lia();
const bool old_age = atoi(_year) < 2000 || _lia->get("S9") != "NV";
if (is_first_month(month)) if (is_first_month(month))
{ {
// credito inizio anno // credito inizio anno
if (lia_ok) if (lia_ok)
c = _lia->get_real("R0"); {
// Dal 2000 se S8="NV" il credito precedente non esiste piu'
if (old_age)
c = _lia->get_real("R0");
}
// e' positivo o 0 // e' positivo o 0
} }
else else
@ -824,17 +833,21 @@ real TLiquidazione_app::credito_prec(int month)
if (c.sign() < 0) if (c.sign() < 0)
c = abs(c); c = abs(c);
else else
c = real(0.0); c = ZERO;
// Nel caso di trimestrali considera dal trimestre corrispondente a // Dal 2000 se S8="NV" il credito trasferito non esiste piu'
// quello impostato+1. Ad es. se m == 1 considera dal I trim. (m=3) if (old_age)
// se m == 2 idem (m=3). Se m == 3 considera dal II trim. (m=6).
const int crm = _lia->get_int("I0") + 1;
if (lia_ok && crm > 1) // Vale dal mese successivo a quello impostato
{ {
// Toglie il Credito Trasferito // Nel caso di trimestrali considera dal trimestre corrispondente a
if (month == liq_month(crm)) // quello impostato+1. Ad es. se m == 1 considera dal I trim. (m=3)
c -= _lia->get_real("R15"); // se m == 2 idem (m=3). Se m == 3 considera dal II trim. (m=6).
const int crm = _lia->get_int("I0") + 1;
if (lia_ok && crm > 1) // Vale dal mese successivo a quello impostato
{
// Toglie il Credito Trasferito
if (month == liq_month(crm))
c -= _lia->get_real("R15");
}
} }
} }
@ -990,3 +1003,25 @@ bool TLiquidazione_app::look_conc(TString& uffcon, TString& uffiva)
} }
return TRUE; return TRUE;
} }
real TLiquidazione_app::credito_utilizzato(int month, bool iva, bool f24) const
{
real credito;
TTable lim("LIM");
TString16 cod;
for (int m = 1; m <= month; m++)
{
cod.format("%s%02d", (const char*)_year, m);
lim.put("CODTAB", cod);
if (lim.read() == NOERR)
{
if (iva && m < month)
credito += lim.get_real("R15"); // Credito utilizzato IVA
if (f24 && m < 13)
credito += lim.get_real("R16"); // Credito utilizzato F24
}
}
return credito;
}

View File

@ -486,16 +486,20 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
} }
} }
// condizione 1 // condizione 1: prc = es_ni / vol_aff
real prc = es_ni/vol_aff; prc.round(2);
if (stliq && !vol_aff.is_zero() && prc > MIN_PARTE_ESENTE) if (stliq && !vol_aff.is_zero())
{ {
rimborsami = TRUE; real prc = es_ni / vol_aff;
d = new _DescrItem(RIMBORSO); prc.round(2);
d->_f0 = TRUE; if (prc > MIN_PARTE_ESENTE)
d->_r0 = es_ni; {
d->_r1 = vol_aff; rimborsami = TRUE;
d = new _DescrItem(RIMBORSO);
d->_f0 = TRUE;
d->_r0 = es_ni;
d->_r1 = vol_aff;
}
} }
// Condizione 2... // Condizione 2...
@ -573,16 +577,16 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
} }
// finalmente // finalmente
alv = ivav/vtot; alv.round(4); alv = ivav.is_zero() ? ZERO : ivav/vtot; alv.round(4);
ala = ivaa/atot; ala.round(4); ala = ivaa.is_zero() ? ZERO : ivaa/atot; ala.round(4);
// vedi condizioni // vedi condizioni
rimborsami = ala > alv; rimborsami = ala > alv;
if (rimborsami) if (rimborsami && !alv.is_zero())
{ {
// vedi di quanto ala eccede alv; deve essere > 10% // vedi di quanto ala eccede alv; deve essere > 10%
real ecc = ((ala/alv) - real(1.0)); real ecc = (ala/alv) - real(1.0);
rimborsami = (ecc >= SOGLIA_MAGGIORE_ALIQUOTA_DEL_CAZZO_PER_AVER_DIRITTO_AL_RIMBORSO); rimborsami = (ecc >= SOGLIA_MAGGIORE_ALIQUOTA_DEL_CAZZO_PER_AVER_DIRITTO_AL_RIMBORSO);
} }

View File

@ -965,7 +965,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
real am = _pla->get_real("R4"); real am = _pla->get_real("R4");
real iaq = _pla->get_real("R11"); // IVA acquisti real iaq = _pla->get_real("R11"); // IVA acquisti
real ppg = _pla->get_real("R12"); // pro-rata pagato real ppg = _pla->get_real("R12"); // pro-rata pagato
// calcola nuovo prorata per ogni attivita' (miste: 1+2) // calcola nuovo prorata per ogni attivita' (miste: 1+2)
real pr(0.0); real pr(0.0);
if (atoi(_year) > 1997) // Calcolo dal 1998 in poi if (atoi(_year) > 1997) // Calcolo dal 1998 in poi
@ -1033,46 +1033,52 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts,
_DescrItem* d = new _DescrItem(THE_END); _DescrItem* d = new _DescrItem(THE_END);
// gli diamo la stessa struttura di LIM // gli diamo la stessa struttura di LIM
d->_r0 = _lim->get_real("R0"); d->_r0 = _lim->get_real("R0");
d->_r1 = _lim->get_real("R1"); d->_r1 = _lim->get_real("R1");
d->_r2 = _lim->get_real("R2"); d->_r2 = _lim->get_real("R2");
d->_r3 = _lim->get_real("R3"); d->_r3 = _lim->get_real("R3");
d->_r4 = _lim->get_real("R4"); d->_r4 = _lim->get_real("R4");
d->_r5 = _lim->get_real("R5"); d->_r5 = _lim->get_real("R5"); // rettifiche
d->_r6 = _lim->get_real("R6"); d->_r6 = _lim->get_real("R6");
d->_r7 = _lim->get_real("R14"); d->_r7 = _lim->get_real("R14");
d->_r9 = _lim->get_real("R9"); d->_r9 = _lim->get_real("R9");
if (atoi(_year) <= 1997) // Dal 1998 in poi il conguaglio prorata non va stampato, ma conglobato nell'iva acquisti if (atoi(_year) <= 1997) // Dal 1998 in poi il conguaglio prorata non va stampato, ma conglobato nell'iva acquisti
d->_r10 = _lim->get_real("R7"); // totale conguaglio prorata d->_r10 = _lim->get_real("R7"); // totale conguaglio prorata
TToken_string tt(80); TToken_string tt(80);
tt.add(_lam->get_real("R0").string()); tt.add(_lam->get("R0"));
tt.add(_lam->get_real("R1").string()); tt.add(_lam->get("R1"));
tt.add(_lam->get_real("R2").string()); tt.add(_lam->get("R2"));
tt.add(_lam->get_real("R3").string()); tt.add(_lam->get("R3"));
tt.add(_lam->get_real("R4").string()); tt.add(_lam->get("R4"));
d->_s0 = tt; d->_s0 = tt;
d->_s1 = _lim->get_real("R11").string(); d->_s1 = _lim->get("R11");
d->_s2 = _lim->get_real("R12").string(); d->_s2 = _lim->get("R12");
d->_s3 = _lim->get_real("R13").string(); d->_s3 = _lim->get("R13");
// descrizione rettifiche // descrizione rettifiche
if (month < 13) if (month < 13)
{ {
d->_s4 = _lim->get("S0"); d->_s4 = _lim->get("S0");
d->_s5 = _lim->get("S1"); d->_s5 = _lim->get("S1");
d->_s6 = _lim->get("S2");
} }
d->_r11 = (const char*)_lim->get("R10"); // tasso di interesse d->_r11 = _lim->get_real("R10"); // tasso di interesse
d->_r15 = _lim->get_real("R15"); // Credito utilizzato IVA
d->_r16 = _lim->get_real("R16"); // Credito utilizzato F24
d->_r17 = _lim->get_real("R17"); // Variazioni d'imposta
d->_r18 = _lim->get_real("R18"); // Imposta non versata
d->_r19 = _lim->get_real("R19"); // Crediti speciali
d->_f1 = is_first_month(month); d->_f1 = is_first_month(month);
// rispettiamo tutte le casistiche per i versamenti se non siamo in visualizzazione // rispettiamo tutte le casistiche per i versamenti se non siamo in visualizzazione
// analogamente in Visualizzazione ma solo nel caso dell'annuale. // analogamente in Visualizzazione ma solo nel caso dell'annuale.
// In tutti gli altri casi va a cercare la delega // In tutti gli altri casi va a cercare la delega
d->_r8 = (_month == 13 || !_is_visliq) ? _lim->get_real("R8") : versamenti_IVA(_month, "1"); d->_r8 = (_month == 13 || !_is_visliq) ? _lim->get_real("R8") : versamenti_IVA(_month, "1");
// aggiunge eventuale satellite per rimborso infraannuale // aggiunge eventuale satellite per rimborso infraannuale
if (di != NULL) if (di != NULL)
{ {
@ -1373,17 +1379,14 @@ void TLiquidazione_app::set_liqacc(_DescrItem& d)
set_row(6,""); set_row(6,"");
set_row(7,"@72gCredito@90gDebito"); set_row(8,""); set_row(7,"@72gCredito@90gDebito"); set_row(8,"");
if (!_isdiffacc) if (!_isdiffacc)
set_row(9,"@11gIva sulle operazioni annotate fino al 20 Dicembre@81g%r", set_row(9,"@11gIva sulle operazioni annotate fino al 20 Dicembre@81g%r", &(d._r0));
&(d._r0)); else
else set_row(9,"@11gIva sulle operazioni di vendita@81g%r", set_row(9,"@11gIva sulle operazioni di vendita@81g%r", &(d._r0));
&(d._r0));
int i = 10; int i = 10;
if (!_isdiffacc) if (!_isdiffacc)
{ {
set_row(i++,"@11gIva su operazioni fino al 20 Dic., ma non fatturate@81g%r", set_row(i++,"@11gIva su operazioni fino al 20 Dic., ma non fatturate@81g%r", &(d._r1));
&(d._r1)); set_row(i++,"@11gIva su operazioni fino al 20 Dic., ma non annotate@81g%r", &(d._r2));
set_row(i++,"@11gIva su operazioni fino al 20 Dic., ma non annotate@81g%r",
&(d._r2));
} }
set_row(i,"@11gRettifiche iva a debito"); set_row(i,"@11gRettifiche iva a debito");
if (d._r3.sign() > 0) if (d._r3.sign() > 0)
@ -1393,9 +1396,9 @@ void TLiquidazione_app::set_liqacc(_DescrItem& d)
set_row(i++,"@11gRISULTATO@81g%r", &r1); set_row(i++,"@11gRISULTATO@81g%r", &r1);
if (!_isdiffacc) if (!_isdiffacc)
set_row(i++,"@11gIva sugli acquisti annotati fino al 20 Dicembre@64g%r", set_row(i++,"@11gIva sugli acquisti annotati fino al 20 Dicembre@64g%r", &r2);
&r2); else
else set_row(i++,"@11gIva sulle operazioni di acquisto@64g%r", &r2); set_row(i++,"@11gIva sulle operazioni di acquisto@64g%r", &r2);
if (d._r6 != ZERO) if (d._r6 != ZERO)
set_row(i++,"@11gmeno perc. di prorata pari a lire %r", &(d._r6)); set_row(i++,"@11gmeno perc. di prorata pari a lire %r", &(d._r6));
set_row(i++, "@11gCredito precedente@64g%r", &(d._r9)); set_row(i++, "@11gCredito precedente@64g%r", &(d._r9));
@ -1749,8 +1752,7 @@ void TLiquidazione_app::set_pumpam(_DescrItem& d)
set_auto_ff(TRUE); set_auto_ff(TRUE);
} }
void TLiquidazione_app::set_grand_1999(_DescrItem& d, int& rw)
void TLiquidazione_app::set_grand(_DescrItem& d)
{ {
real& risultato = d._r0; real& risultato = d._r0;
real& rimborso = d._r1; real& rimborso = d._r1;
@ -1779,11 +1781,6 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
if (rettifiche.sign() > 0) rett_debt = rettifiche; if (rettifiche.sign() > 0) rett_debt = rettifiche;
if (rettifiche.sign() < 0) rett_cred = -rettifiche; if (rettifiche.sign() < 0) rett_cred = -rettifiche;
set_bookmark("Riepilogativo liquidazione", _firm_bookmark);
set_row(1,""); set_row(2,""); set_row(3,""); set_row(4,"");
set_row(5,"@11g@bCALCOLO LIQUIDAZIONE D'IMPOSTA@r");
set_row(6,""); int rw = 7;
set_row(rw++," @66gCredito@84gDebito"); set_row(rw++,""); set_row(rw++," @66gCredito@84gDebito"); set_row(rw++,"");
set_row(rw++,"@11gIva sulle operazioni di vendita@75g%r", &iva_vend); set_row(rw++,"@11gIva sulle operazioni di vendita@75g%r", &iva_vend);
set_row(rw++,"%s@11gRettifiche IVA a debito%s@75g%r", set_row(rw++,"%s@11gRettifiche IVA a debito%s@75g%r",
@ -1889,7 +1886,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
if (_is_visliq && _month != 13) if (_is_visliq && _month != 13)
{ {
// stampa versamenti (anche 0) ad uso visualizzazione liquidazione IVA // stampa versamenti (anche 0) ad uso visualizzazione liquidazione IVA
rw ++; rw++;
set_row(rw++,"@11g$[r]Versamenti effettuati$[n]@58g%r", &versamenti); set_row(rw++,"@11g$[r]Versamenti effettuati$[n]@58g%r", &versamenti);
set_row(rw++, ""); set_row(rw++, "");
set_row(rw++, ""); set_row(rw++, "");
@ -1898,15 +1895,225 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
if (!_is_visliq) if (!_is_visliq)
{ {
// descrizione rettifiche // descrizione rettifiche
if (!(d._s4.empty() && d._s5.empty())) if (d._s4.not_empty() || d._s5.not_empty())
{ {
rw++; rw++;
set_row(rw++, "@11g@bDESCRIZIONE RETTIFICHE@r"); set_row(rw++, "@11g@bDESCRIZIONE RETTIFICHE@r");
rw++; rw++;
if (d._s4.not_empty()) { set_row(rw++, "@11g%t", &(d._s4)); }
if (d._s5.not_empty()) { set_row(rw++, "@11g%t", &(d._s5)); }
} }
if (!d._s4.empty()) { set_row(rw++, "@11g%t", &(d._s4)); }
if (!d._s5.empty()) { set_row(rw++, "@11g%t", &(d._s5)); }
} }
}
void TLiquidazione_app::print_importo(int rw, const char* prompt, real imp, bool red)
{
int tab = 75;
if (imp < ZERO)
{ imp = -imp; tab = 58; }
TString256 str;
str << "@11g";
if (red) str << "$[r]";
str << prompt;
if (red) str << "$[n]";
str << '@' << tab << "g%r";
set_row(rw, str, &imp);
}
void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw)
{
real& risultato = d._r0;
real& rimborso = d._r1;
real& cred_cost = d._r2;
real& deb_mens = d._r3;
real& rettifiche = d._r5;
real& detrazioni = d._r6;
real& interessi = d._r7;
real& versamenti = d._r8;
real& vers_int = d._r9;
TToken_string tt(d._s0);
real iva_vend(tt.get(0));
real iva_acq(tt.get(1));
real cred_prec(tt.get(2));
real debt_prec(tt.get(3));
real cred_trasf(tt.get(4)); cred_trasf = -cred_trasf;
real acc_dec(d._s1);
real res_cred(d._s2);
real res_debt(d._s3);
real rett_debt(0.0);
real rett_cred(0.0);
real& interesse = d._r11;
real& credito_utilizzato_iva = d._r15;
real& credito_utilizzato_f24 = d._r16;
real& variazioni_imposta = d._r17;
real& imposta_non_versata = d._r18;
real& crediti_speciali = d._r19;
if (rettifiche.sign() > 0) rett_debt = rettifiche;
if (rettifiche.sign() < 0) rett_cred = -rettifiche;
set_row(rw++," @66gCredito@84gDebito"); set_row(rw++,"");
// Se sono in visualizzazione stampo i due importi separati, altrimenti li sommo
if (!_is_visliq)
iva_vend += rett_debt;
set_row(rw++,"@11gIVA esigibile per il periodo@75g%r", &iva_vend);
if (_is_visliq)
set_row(rw++,"@11g$[r]Rettifiche IVA a debito$[n]@75g%r", &rett_debt); // Rettifiche modificabili
// Se sono in visualizzazione stampo i due importi separati, altrimenti li sommo
if (!_is_visliq)
iva_acq += rett_cred;
set_row(rw++,"@11gIva che si detrae per il periodo@58g%r", &iva_acq);
if (_is_visliq)
set_row(rw++,"@11g$[r]Rettifiche IVA a credito$[n]@58g%r", &rett_cred);
real iva_deb_cred = iva_vend - iva_acq;
if (_is_visliq)
iva_deb_cred += rett_debt - rett_cred;
print_importo(rw++, "IVA a debito o a credito per il periodo", iva_deb_cred);
rw++;
print_importo(rw++, "Variazioni d'imposta", variazioni_imposta, _is_visliq);
print_importo(rw++, "Imposta non versata", imposta_non_versata, _is_visliq);
// debito liq. precedente < 50000
if (debt_prec > ZERO)
set_row(rw++,"@11gDebito o credito da liquidazione precedente@75g%r", &debt_prec);
else
if (cred_prec > ZERO)
set_row(rw++,"@11gDebito o credito da liquidazione precedente@58g%r", &cred_prec);
set_row(rw++,"%s@11gRimborsi%s@75g%r",
_is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &rimborso);
set_row(rw++,"@11gCredito IVA compensabile detratto@58g%r", &credito_utilizzato_iva);
real cre_deb_per = risultato + crediti_speciali + acc_dec + vers_int;
if (_month == 13) cre_deb_per += versamenti;
print_importo(rw++, "IVA dovuta o a credito per il periodo", cre_deb_per);
#ifdef DBG
TRACE("Risultato = %s +", risultato.string("###.###.###.###"));
TRACE("Crediti speciali = %s +", crediti_speciali.string("###.###.###.###"));
TRACE("Accantonamenti = %s +", acc_dec.string("###.###.###.###"));
TRACE("Versamenti = %s +", versamenti.string("###.###.###.###"));
TRACE("Vers int = %s +", vers_int.string("###.###.###.###"));
TRACE("IVA dov o cre = %s\n", cre_deb_per.string("###.###.###.###"));
#endif
if (crediti_speciali != ZERO || _is_visliq)
set_row(rw++,"%s@11gCrediti speciali%s@58g%r",
_is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &crediti_speciali);
if (_freqviva == "T" && interessi != ZERO)
set_row(rw++,"@11gInteressi dovuti per liquidazioni trimestrali %6.2r%%@75g%r",&interesse, &interessi);
else
{
if (_is_visliq)
rw++;
}
if (!acc_dec.is_zero())
set_row(rw++,"%s@11gAcconto versato%s@58g%r",
_is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &acc_dec);
else
{
if (_is_visliq)
rw++;
}
// versamenti effettuati
if (!versamenti.is_zero() && (_month==13 || !_is_visliq))
{
set_row(rw++,"@11gVersamenti effettuati@58g%r", &versamenti);
}
else
{
if (_is_visliq)
rw++;
}
// versamenti integrativi
if (!vers_int.is_zero() && !_is_visliq)
{
set_row(rw++,"@11gVersamenti integrativi@58g%r", &vers_int);
}
else
{
if (_is_visliq)
rw++;
}
const real iva = risultato + interessi;
if (iva > ZERO)
{
if (iva >= IVA_DA_RIPORTARE || _isannual || _isriepilogo)
set_row(rw++,"@23gIMPORTO DA VERSARE@75g%r",&iva);
else
set_row(rw++,"@23gIMPORTO DA NON VERSARE@75g%r",&iva);
}
else
{
if (_isannual)
{
const int year = atoi(_year)+1;
const long ditta = get_firm();
TString16 cod; cod.format("%05ld%04d", ditta, year);
TTable lia("%LIA");
lia.put("CODTAB", cod);
if (lia.read() == NOERR)
{
real credito = lia.get_real("R0");
if (credito > ZERO)
set_row(rw++,"@11gCREDITO RIPORTATO NELL'ANNO SUCCESSIVO@58g%r", &credito);
}
}
if (_is_visliq)
rw++;
}
if (_is_visliq && _month != 13)
{
rw++;
set_row(rw++,"@11g$[r]Descrizione$[n]");
// stampa versamenti (anche 0) ad uso visualizzazione liquidazione IVA
rw++;
set_row(rw++,"@11g$[r]Versamenti effettuati$[n]@58g%r", &versamenti);
set_row(rw++, "");
set_row(rw++, "");
}
if (!_is_visliq)
{
// descrizione rettifiche
if (d._s6.not_empty())
{
rw++;
set_row(rw++, "@11g@bDESCRIZIONE RETTIFICHE@r");
rw++;
if (d._s6.not_empty()) { set_row(rw++, "@11g%t", &(d._s6)); }
}
}
}
void TLiquidazione_app::set_grand(_DescrItem& d)
{
set_bookmark("Riepilogativo liquidazione", _firm_bookmark);
set_row(1,""); set_row(2,""); set_row(3,""); set_row(4,"");
set_row(5,"@11g@bCALCOLO LIQUIDAZIONE D'IMPOSTA@r");
set_row(6,"");
int rw = 7;
const bool new_print = atoi(_year) >= 2000;
if (new_print)
set_grand_2000(d, rw);
else
set_grand_1999(d, rw);
// rapportini per rimborso infraannuale // rapportini per rimborso infraannuale
// non si stampano se la stampa serve per la visualizz. // non si stampano se la stampa serve per la visualizz.
@ -2129,11 +2336,13 @@ void TLiquidazione_app::set_ventila(_DescrItem& d)
set_row(10,""); set_row(10,"");
int row = 11; int row = 11;
real t1, t2, t3; real t1, t2, t3;
TString80 s0;
for(int i = 0; i < d._arr.items(); i++) for(int i = 0; i < d._arr.items(); i++)
{ {
_vDesc& vd = (_vDesc&)d._arr[i]; _vDesc& vd = (_vDesc&)d._arr[i];
look_iva(vd._codiva); look_iva(vd._codiva);
TString s0 = _iva->get("S0"); s0 = _iva->get("S0"); s0.cut(23);
set_row(row+i,"@8g%5s@17g%-23s@41g%r@68g%r@89g%r", set_row(row+i,"@8g%5s@17g%-23s@41g%r@68g%r@89g%r",
(const char*)vd._codiva, (const char*)vd._codiva,
(const char*)s0, (const char*)s0,
@ -2263,7 +2472,7 @@ void TLiquidazione_app::set_regagr(_DescrItem& d)
if (di._flags != PROGAGR) if (di._flags != PROGAGR)
continue; continue;
look_iva(di._s0); look_iva(di._s0);
des = _iva->get("S0"); des = _iva->get("S0"); des.cut(25);
al = _iva->get_real("R0"); al = _iva->get_real("R0");
set_row(r,"%4s %-25s@48g%s %%", (const char*) di._s0, (const char*) des, al.string("#@,@@")); set_row(r,"%4s %-25s@48g%s %%", (const char*) di._s0, (const char*) des, al.string("#@,@@"));
set_row(r,"@56g%r@75g%4s",&di._r0, (const char*)di._s1); set_row(r,"@56g%r@75g%4s",&di._r0, (const char*)di._s1);

View File

@ -97,18 +97,16 @@ bool TLiquidazione_app::extract_deleghe()
_freqviva = _lia->get("S7"); _freqviva = _lia->get("S7");
buf.format("Estrazione deleghe (%d):\nditta %s\n ", buf.format("Estrazione deleghe (%d):\nditta %s\n ",
_month, _month, (const char*)_nditte_r->get("RAGSOC"));
(const char*)_nditte_r->get("RAGSOC"));
_prind->set_text(buf); _prind->set_text(buf);
if (is_month_ok_strict(_month) || _month == 13) if (is_month_ok_strict(_month) || _month == 13)
{ {
bool mens = _freqviva == "M";
_isbenzinaro = _nditte->curr(LF_ATTIV).get_bool("ART74_4"); _isbenzinaro = _nditte->curr(LF_ATTIV).get_bool("ART74_4");
bool mens = _freqviva == "M";
_isriepilogo = _month == 13; _isriepilogo = _month == 13;
_isendliq = _isannual || _isriepilogo; _isendliq = _isannual || _isriepilogo;
if (mens || _isbenzinaro || _month!=12) if (mens || _isbenzinaro || _month!=12)
extract_delega(_month, desc); extract_delega(_month, desc);
} }

View File

@ -1263,9 +1263,10 @@ int TStampa_registri_app::setta_riga(int r, const TRigaiva& riga, real& tot1,
if (riga._imponibilep != ZERO) if (riga._imponibilep != ZERO)
set_row(r, "@81g%r", &riga._imponibilep); set_row(r, "@81g%r", &riga._imponibilep);
if (riga._impostap != ZERO) if (riga._impostap != ZERO)
set_row(r++, "@98g%r", &riga._impostap); set_row(r, "@98g%r", &riga._impostap);
} }
else r++; r++; // Incrementa sempre: cazzone!
tot1 += riga._imponibile; tot1 += riga._imponibile;
tot2 += riga._imposta; tot2 += riga._imposta;
tot3 += riga._imponibilep; tot3 += riga._imponibilep;
@ -1566,9 +1567,8 @@ int TStampa_registri_app::stampa_acquisti(int row)
set_row(rw, "Cod."); set_row(rw, "Cod.");
rw++; rw++;
set_row(rw, "iva Descrizione@34gImponibile@53gImposta"); set_row(rw, "iva Descrizione@34gImponibile@53gImposta");
if (_tipo_stampa != prova) set_row(rw++, "@86gImponibile@106gImposta"); if (_tipo_stampa != prova) set_row(rw, "@86gImponibile@106gImposta");
else rw++; rw+=2;
rw++;
} }
rw = setta_riga(rw, riga, tot_imponib, tot_imposta, tot_imponibp, tot_impostap); rw = setta_riga(rw, riga, tot_imponib, tot_imposta, tot_imponibp, tot_impostap);
tdetprec = riga._tipodet; tdetprec = riga._tipodet;
@ -1598,9 +1598,8 @@ int TStampa_registri_app::stampa_acquisti(int row)
rw++; rw++;
set_row(rw, "iva Descrizione@34gImponibile@53gImposta"); set_row(rw, "iva Descrizione@34gImponibile@53gImposta");
if (_tipo_stampa != prova) if (_tipo_stampa != prova)
set_row(rw++, "@86gImponibile@106gImposta"); set_row(rw, "@86gImponibile@106gImposta");
else rw++; rw+=2;
rw++;
} }
rw = setta_riga(rw, riga, tot_imponib, tot_imposta, tot_imponibp, tot_impostap); rw = setta_riga(rw, riga, tot_imponib, tot_imposta, tot_imponibp, tot_impostap);
tdetprec = riga._tipodet; tdetprec = riga._tipodet;
@ -1630,9 +1629,8 @@ int TStampa_registri_app::stampa_acquisti(int row)
rw++; rw++;
set_row(rw, "iva Descrizione@34gImponibile@53gImposta"); set_row(rw, "iva Descrizione@34gImponibile@53gImposta");
if (_tipo_stampa != prova) if (_tipo_stampa != prova)
set_row(rw++, "@86gImponibile@106gImposta"); set_row(rw, "@86gImponibile@106gImposta");
else rw++; rw+=2;
rw++;
} }
rw = setta_riga(rw, riga, tot_imponib, tot_imposta, tot_imponibp, tot_impostap); rw = setta_riga(rw, riga, tot_imponib, tot_imposta, tot_imponibp, tot_impostap);
tdetprec = riga._tipodet; tdetprec = riga._tipodet;
@ -2141,9 +2139,6 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
long numreg = mov.get_long(MOV_NUMREG); long numreg = mov.get_long(MOV_NUMREG);
long protiva = mov.get_long(MOV_PROTIVA); long protiva = mov.get_long(MOV_PROTIVA);
long uprotiva = mov.get_long(MOV_UPROTIVA); long uprotiva = mov.get_long(MOV_UPROTIVA);
real totdoc = mov.get_real(MOV_TOTDOC);
real ritsoc = mov.get_real(MOV_RITSOC);
real ritfis = mov.get_real(MOV_RITFIS);
TString16 numdoc = mov.get(MOV_NUMDOC); TString16 numdoc = mov.get(MOV_NUMDOC);
int meseliq = mov.get_int(MOV_MESELIQ); int meseliq = mov.get_int(MOV_MESELIQ);
char tipocf = mov.get(MOV_TIPO)[0]; char tipocf = mov.get(MOV_TIPO)[0];
@ -2155,6 +2150,15 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
real corrval = mov.get_real(MOV_CORRVALUTA); real corrval = mov.get_real(MOV_CORRVALUTA);
bool autof = caus.get_bool(CAU_AUTOFATT); bool autof = caus.get_bool(CAU_AUTOFATT);
TString80 descrcau = caus.get(CAU_DESCR); TString80 descrcau = caus.get(CAU_DESCR);
real totdoc = mov.get_real(MOV_TOTDOC);
real ritsoc = mov.get_real(MOV_RITSOC);
real ritfis = mov.get_real(MOV_RITFIS);
if (totdoc < ZERO) // Controlla il segno corretto da assegnare alle ritenute
{
ritsoc = -ritsoc;
ritfis = -ritfis;
}
if (_cur->pos() == 0) if (_cur->pos() == 0)
_uprotivap = uprotiva ? uprotiva : protiva; _uprotivap = uprotiva ? uprotiva : protiva;

View File

@ -3,74 +3,35 @@
class TAp_eser : public TSkeleton_application class TAp_eser : public TSkeleton_application
{ {
TTable* _esc, * _reg;
int _anno, _newanno; int _anno, _newanno;
TDate _dataini, _datafin, _datainp, _datafip; TDate _dataini, _datafin, _datainp, _datafip;
TString _conserva;
protected: protected:
bool check_esercizio(TString& cod, TDate s1, TDate f1); bool check_esercizio(const TString& cod, TDate s1, TDate f1);
static bool mask_dataini (TMask_field&, KEY); static bool mask_dataini (TMask_field&, KEY);
static bool mask_newanno (TMask_field&, KEY); static bool mask_newanno (TMask_field&, KEY);
public: public:
virtual bool create(); virtual bool create();
virtual bool destroy();
virtual void main_loop(); virtual void main_loop();
bool set(); bool set();
bool apertura_es(); bool apertura_es();
TAp_eser() {}
}; };
//TDate InizioEsercizio(int anno)
//{
// TTable TabEs ("ESC");
// TString codtab;
// TDate inizio_es;
//
// TabEs.zero();
// codtab.format ("%04d", anno);
// TabEs.put ("CODTAB", codtab);
// TabEs.read();
// if (TabEs.good())
// inizio_es= TabEs.get_date ("D0");
//
// return inizio_es;
//}
//TDate FineEsercizio(int anno)
//{
// TTable TabEs ("ESC");
// TString codtab;
// TDate fine_es;
//
// TabEs.zero();
// codtab.format ("%04d", anno);
// TabEs.put ("CODTAB", codtab);
// TabEs.read();
// if (TabEs.good())
// fine_es= TabEs.get_date ("D1");
//
// return fine_es;
//}
bool TAp_eser::mask_newanno (TMask_field& f, KEY k) bool TAp_eser::mask_newanno (TMask_field& f, KEY k)
{ {
if (k == K_ENTER) if (k == K_ENTER)
{ {
int newanno = f.mask().get_int(F_NUOVOANNO); int newanno = f.mask().get_int(F_NUOVOANNO);
int anno = f.mask().get_int(F_ANNO); TString16 codtab; codtab.format("%04d", newanno);
TString16 codtab; codtab.format ("%04d", newanno);
TTable TabEs("ESC"); TTable TabEs("ESC");
TabEs.put ("CODTAB", codtab); TabEs.put ("CODTAB", codtab);
if (TabEs.read() == NOERR) if (TabEs.read() == NOERR)
{ return f.warning_box ("Il codice %04d e' gia' presente nella tabella degli esercizi!",
f.warning_box ("Il codice %s e' gia' presente nella tabella degli esercizi!", newanno);
(const char*)codtab);
return FALSE;
}
} }
return TRUE; return TRUE;
} }
@ -91,22 +52,12 @@ bool TAp_eser::mask_dataini (TMask_field& f, KEY k)
} }
bool TAp_eser::create() bool TAp_eser::create()
{ {
_esc = new TTable("ESC"); open_files(LF_TAB, 0);
_reg = new TTable("REG");
enable_menu_item(M_FILE_NEW, FALSE); enable_menu_item(M_FILE_NEW, FALSE);
return TSkeleton_application::create(); return TSkeleton_application::create();
} }
bool TAp_eser::destroy()
{
delete _esc;
delete _reg;
return TRUE;
}
void TAp_eser::main_loop() void TAp_eser::main_loop()
{ {
TTable TabEs ("ESC"); TTable TabEs ("ESC");
@ -129,6 +80,7 @@ void TAp_eser::main_loop()
{ {
rn = TabEs.recno(); rn = TabEs.recno();
fine = TabEs.get_date("D1"); fine = TabEs.get_date("D1");
_conserva = TabEs.get("S1");
} }
TabEs.readat(rn); TabEs.readat(rn);
@ -140,8 +92,7 @@ void TAp_eser::main_loop()
msk.set(F_ANNO, anno); msk.set(F_ANNO, anno);
msk.set(F_DATAINIC, inizio.string()); msk.set(F_DATAINIC, inizio.string());
msk.set(F_DATAFINC, fine.string()); msk.set(F_DATAFINC, fine.string());
// msk.set(F_NUOVOANNO, anno+1);
msk.set_handler (F_NUOVOANNO, mask_newanno); msk.set_handler (F_NUOVOANNO, mask_newanno);
msk.set_handler (F_DATAINI, mask_dataini); msk.set_handler (F_DATAINI, mask_dataini);
@ -230,13 +181,14 @@ bool TAp_eser::apertura_es()
TabEs.put ("CODTAB", annonew); TabEs.put ("CODTAB", annonew);
TabEs.put ("D0", _dataini); TabEs.put ("D0", _dataini);
TabEs.put ("D1", _datafin); TabEs.put ("D1", _datafin);
TabEs.put ("S1", _conserva);
TabEs.write(); TabEs.write();
message_box("Apertura nuovo esercizio completata"); message_box("Apertura nuovo esercizio completata");
} }
return TRUE; return TRUE;
} }
bool TAp_eser::check_esercizio(TString& cod, TDate s1, TDate f1) bool TAp_eser::check_esercizio(const TString& cod, TDate s1, TDate f1)
{ {
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
// chiamata prima di registrare. Controlla: // chiamata prima di registrare. Controlla:

View File

@ -397,7 +397,7 @@ bool TApertura_chiusura::attivo_passivo (TMask_field& f, KEY k)
{ {
int indbil = pcon.get_int(PCN_INDBIL); int indbil = pcon.get_int(PCN_INDBIL);
if (indbil != 1 && indbil != 2 && indbil != 5) if (indbil != 1 && indbil != 2 && indbil != 5)
return f.warning_box("Indicatore di bilancio errato"); return f.warning_box("Indicatore di bilancio del conto %d %d errato: deve essere 1,2 o 5", g, c);
} }
} }
return TRUE; return TRUE;
@ -428,7 +428,7 @@ bool TApertura_chiusura::costi_ricavi (TMask_field& f, KEY k)
{ {
int indbil = pcon.get_int(PCN_INDBIL); int indbil = pcon.get_int(PCN_INDBIL);
if (indbil != 3 && indbil != 4) if (indbil != 3 && indbil != 4)
return f.warning_box("Indicatore di bilancio errato"); return f.warning_box("Indicatore di bilancio del conto %d %d errato: deve essere 3 o 4", g, c);
} }
} }
return TRUE; return TRUE;

View File

@ -35,6 +35,7 @@ protected: // Applicat
static bool agrmin_handler(TMask_field& f, KEY k); static bool agrmin_handler(TMask_field& f, KEY k);
static bool credres_handler(TMask_field& f, KEY k); static bool credres_handler(TMask_field& f, KEY k);
static bool credpreccost_handler(TMask_field& f, KEY k); static bool credpreccost_handler(TMask_field& f, KEY k);
static bool utcred_handler(TMask_field& f, KEY k);
protected: // Relapp protected: // Relapp
virtual bool user_create(); virtual bool user_create();
@ -49,6 +50,7 @@ protected: // Relapp
virtual bool protected_record(TRectype&) { return TRUE; } virtual bool protected_record(TRectype&) { return TRUE; }
virtual void init_query_mode(TMask&); virtual void init_query_mode(TMask&);
virtual void init_insert_mode(TMask& m); virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m);
virtual int rewrite(const TMask& m); virtual int rewrite(const TMask& m);
// non si possono aggiungere record, se non ci sono vengono // non si possono aggiungere record, se non ci sono vengono
// creati automaticamente // creati automaticamente
@ -61,7 +63,8 @@ protected:
static bool sheet_action(TSheet_field& s, int r, KEY k); static bool sheet_action(TSheet_field& s, int r, KEY k);
public: public:
TRelation & rel() const { return *_rel;}
TParaliq_app() {} TParaliq_app() {}
virtual ~TParaliq_app() {} virtual ~TParaliq_app() {}
}; };
@ -157,6 +160,42 @@ bool TParaliq_app::credpreccost_handler(TMask_field& f, KEY k)
return TRUE; return TRUE;
} }
bool TParaliq_app::utcred_handler(TMask_field& f, KEY k)
{
if ((k == K_TAB && f.focusdirty()) || !f.mask().is_running())
{
TMask & m = f.mask();
const int anno_liq = m.get_int(F_YEAR);
TString80 cod_mesi;
TString des_mesi(128);
TString16 mese;
TList_field & mese_res = ((TList_field &) m.field(F_MESE_RES_AL));
if (anno_liq >= 2000 && f.get().not_empty())
{
m.field(F_CRED_PREC).set_prompt("Credito compensabile inizio anno ");
m.field(F_CRED_RES).set_prompt("Credito in compensaz.utilizzato ");
m.enable(F_UTCR_IVA);
cod_mesi = "0|-1";
des_mesi = " |Inizio Anno";
mese = m.get_real(F_CRED_RES) != ZERO ? "-1" : "0";
}
else
{
m.field(F_CRED_PREC).set_prompt("Credito precedente ");
m.field(F_CRED_RES).set_prompt("Credito residuo ");
cod_mesi = "0|1|2|3|4|5|6|7|8|9|10|11|12";
des_mesi = " |Gennaio|Febbraio|Marzo|Aprile|Maggio|Giugno|Luglio|Agosto|Settembre|Ottobre|Novembre|Dicembre";
mese = app().rel().lfile().get("I0");
if (!m.edit_mode() || atoi(mese) < 0)
mese.cut(0);
}
mese_res.replace_items(cod_mesi, des_mesi);
m.set(F_MESE_RES_AL, mese);
}
return TRUE;
}
void TParaliq_app::check_registers(int year) void TParaliq_app::check_registers(int year)
{ {
// controlla che per ogni data attivita' esistano almeno un registro // controlla che per ogni data attivita' esistano almeno un registro
@ -265,6 +304,7 @@ bool TParaliq_app::user_create()
_msk->set_handler(F_CRED_PREC,credpreccost_handler); _msk->set_handler(F_CRED_PREC,credpreccost_handler);
_msk->set_handler(F_CRED_COST,credpreccost_handler); _msk->set_handler(F_CRED_COST,credpreccost_handler);
_msk->set_handler(F_CODDITTA,ditta_handler); _msk->set_handler(F_CODDITTA,ditta_handler);
_msk->set_handler(F_UTCR_IVA,utcred_handler);
((TSheet_field&)_msk->field(F_SHEET_PLA)).set_notify(sheet_action); ((TSheet_field&)_msk->field(F_SHEET_PLA)).set_notify(sheet_action);
return TRUE; return TRUE;
} }
@ -295,7 +335,24 @@ void TParaliq_app::init_query_mode(TMask& m)
void TParaliq_app::init_insert_mode(TMask& m) void TParaliq_app::init_insert_mode(TMask& m)
{ {
// Inizializza array delle attivita' // Inizializza array delle attivita'
init_array(m, TRUE); init_array(m, TRUE);
init_modify_mode(m);
}
void TParaliq_app::init_modify_mode(TMask& m)
{
const int anno_liq = m.get_int(F_YEAR);
if (anno_liq >= 2000)
{
m.enable(F_UTCR_IVA);
}
else
{
m.set(F_UTCR_IVA, " ", TRUE);
m.disable(F_UTCR_IVA);
}
} }

View File

@ -10,6 +10,7 @@
#define F_CRED_RES 310 #define F_CRED_RES 310
#define F_MESE_RES_AL 311 #define F_MESE_RES_AL 311
#define F_CODVAL 312 #define F_CODVAL 312
#define F_UTCR_IVA 313
#define F_CODATT 101 #define F_CODATT 101
#define F_DESATT 150 #define F_DESATT 150

View File

@ -63,7 +63,7 @@ BEGIN
FLAGS "HD" FLAGS "HD"
END END
GROUPBOX DLG_NULL 75 6 GROUPBOX DLG_NULL 75 7
BEGIN BEGIN
PROMPT 2 4 "Parametri ditta" PROMPT 2 4 "Parametri ditta"
END END
@ -83,11 +83,11 @@ BEGIN
FIELD B1 FIELD B1
END END
CURRENCY F_CRED_PREC 18 CURRENCY F_CRED_COST 18
BEGIN BEGIN
PROMPT 4 6 "Credito precedente " PROMPT 4 6 "Credito di costo "
HELP "Eventuale credito di imposta dell'anno precedente" HELP "Eventuale credito di costo dell'anno precedente"
FIELD R0 FIELD R5
FLAGS "R" FLAGS "R"
DRIVENBY F_CODVAL DRIVENBY F_CODVAL
END END
@ -98,18 +98,26 @@ BEGIN
FIELD B2 FIELD B2
END END
CURRENCY F_CRED_COST 18 LISTBOX F_UTCR_IVA 2 34
BEGIN BEGIN
PROMPT 4 7 "Credito di costo " PROMPT 4 7 "Utilizzo credito IVA "
HELP "Eventuale credito di costo dell'anno precedente" ITEM " |Visibile e utilizzato solo in IVA"
FIELD R5 ITEM "NV|Non visibile ma compensabile"
FIELD S9
END
CURRENCY F_CRED_PREC 18
BEGIN
PROMPT 4 8 "Credito compensabile inizio anno "
HELP "Eventuale credito di imposta dell'anno precedente"
FIELD R0
FLAGS "R" FLAGS "R"
DRIVENBY F_CODVAL DRIVENBY F_CODVAL
END END
CURRENCY F_CRED_RES 18 CURRENCY F_CRED_RES 18
BEGIN BEGIN
PROMPT 4 8 "Credito residuo " PROMPT 4 9 "Credito in compensaz.utilizzato "
FIELD R15 FIELD R15
FLAGS "R" FLAGS "R"
DRIVENBY F_CODVAL DRIVENBY F_CODVAL
@ -119,15 +127,14 @@ END
LISTBOX F_MESE_RES_AL 14 LISTBOX F_MESE_RES_AL 14
BEGIN BEGIN
PROMPT 45 8 "Al mese di " PROMPT 54 9 "A "
ITEM "0|" ITEM "0|"
FLAGS "M"
FIELD I0 FIELD I0
END END
SPREADSHEET F_SHEET_PLA 78 SPREADSHEET F_SHEET_PLA 78
BEGIN BEGIN
PROMPT 1 10 "Parametri attivita'" PROMPT 1 11 "Parametri attivita'"
ITEM "Attiv.@5F" ITEM "Attiv.@5F"
ITEM "Tipo@3" ITEM "Tipo@3"
ITEM "Prorata" ITEM "Prorata"

File diff suppressed because it is too large Load Diff

View File

@ -43,12 +43,13 @@ class Visliq_app : public TSkeleton_application
bool _is_annual; bool _is_annual;
const char* itoname(int m); const char* itoname(int m);
bool is_trim(int x); bool is_trim(int x);
bool is_month_ok(int x, int month = -1); bool is_month_ok(int x, int month = -1);
protected: protected:
virtual void main_loop();
virtual bool create(); virtual bool create();
virtual bool destroy(); virtual bool destroy();
@ -81,7 +82,6 @@ public:
void write_general(TMask& m); void write_general(TMask& m);
void write_liq(); void write_liq();
void write_del(); void write_del();
void set_freqviva(); void set_freqviva();
void set_freqviva(const char* f) { _freqviva = f; } void set_freqviva(const char* f) { _freqviva = f; }
@ -99,15 +99,19 @@ public:
TTable* del() { return _del; } TTable* del() { return _del; }
// riaggiusta la liquidazione del mese dato // riaggiusta la liquidazione del mese dato
void recalc_liq_data(TViswin & v, real& rimb, real& rett, real& vers, void recalc_liq_data(TViswin* v, real& rimb, real& rett, real& vers, real& acc,
real& acc, TString& d1, TString& d2, TDate& date, TString& real& varimp, real& impnonver, real& credspec,
abi, TString& cab, TString& con); TString& d1, TString& d2, TString& d3, TDate& date,
TString& abi, TString& cab, TString& con);
// Calcolo del credito utilizzato IVA ed F24
real credito_utilizzato(int year, int month) const;
// riaggiusta le liquidazioni successive se serve // riaggiusta le liquidazioni successive se serve
void recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field* sv); void recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field* sv);
// workhorses // workhorses
virtual void main_loop(); void vis_liq();
bool vis_all(); bool vis_all();
bool vis_one(int); bool vis_one(int);

View File

@ -1,11 +1,11 @@
#define F_CODDITTA 101 #define F_CODDITTA 151
#define F_RAGSOC 102 #define F_RAGSOC 152
#define F_MONTHS 103 #define F_MONTHS 103
#define F_TRIMS 104 #define F_TRIMS 104
#define F_YEAR 105 #define F_YEAR 105
#define F_VISLIQ1 106 #define F_VISLIQ1 106
#define F_VISLIQ2 107 #define F_VISLIQ2 107
#define F_CREDPREC 108 #define F_CREDPREC 158
#define F_VISFLQ 109 #define F_VISFLQ 109
#define F_ACCONTO 110 #define F_ACCONTO 110
#define F_RIMBORSO 111 #define F_RIMBORSO 111
@ -21,6 +21,11 @@
#define F_DELCON 121 #define F_DELCON 121
#define F_PERIODOM 122 #define F_PERIODOM 122
#define F_PERIODOT 123 #define F_PERIODOT 123
#define F_DESCR3 124
#define F_VARIMP 125
#define F_VARIMP_DC 126
#define F_IMPNONVER 127
#define F_CREDSPEC 128
#define F_CODDITTA2 201 #define F_CODDITTA2 201
#define F_RAGSOC2 202 #define F_RAGSOC2 202

View File

@ -49,18 +49,23 @@ END
CURRENCY F_CREDPREC 15 CURRENCY F_CREDPREC 15
BEGIN BEGIN
PROMPT 1 5 "Credito inizio anno " PROMPT 1 5 "Credito compensabile inizio anno "
PICTURE "."
END END
SPREADSHEET F_VISLIQ1 78 11 SPREADSHEET F_VISLIQ1 78
BEGIN BEGIN
PROMPT 1 7 "Liquidazione" PROMPT 1 7 "Liquidazione"
ITEM "Mese@10" ITEM "Mese@10"
ITEM "Risultato@15" ITEM "Risultato@15"
ITEM "D/C" ITEM "D/C@3"
ITEM "IVA rimborso@15" ITEM "IVA rimborso@15"
ITEM "IVA rettifiche@15" ITEM "IVA rettifiche@15"
ITEM "D/C" ITEM "D/C@3"
ITEM "Credito\nutilizzato IVA@15"
ITEM "Credito\nutilizzato F24@15"
ITEM "Credito IVA\nresiduo@15"
ITEM "Descrizione@35"
END END
ENDPAGE ENDPAGE
@ -84,7 +89,7 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
SPREADSHEET F_VISLIQ2 78 11 SPREADSHEET F_VISLIQ2 76
BEGIN BEGIN
PROMPT 1 5 "Versamenti" PROMPT 1 5 "Versamenti"
ITEM "Mese@15" ITEM "Mese@15"
@ -103,20 +108,20 @@ PAGE "Prospetto mensile" -1 -1 50 10
STRING 101 20 STRING 101 20
BEGIN BEGIN
PROMPT 1 2 "Mese " PROMPT 1 1 "Mese "
FLAGS "D" FLAGS "D"
END END
CURRENCY 102 15 CURRENCY 102 15
BEGIN BEGIN
PROMPT 1 3 "Risultato " PROMPT 1 2 "Risultato "
FLAGS "D" FLAGS "D"
END END
LIST 103 1 10 LIST 103 1 10
BEGIN BEGIN
PROMPT 1 4 "Importo a " PROMPT 35 2 ""
ITEM " | " ITEM " | "
ITEM "D|Debito" ITEM "D|Debito"
ITEM "C|Credito" ITEM "C|Credito"
@ -125,23 +130,53 @@ END
CURRENCY 104 15 CURRENCY 104 15
BEGIN BEGIN
PROMPT 1 5 "IVA a rimborso " PROMPT 1 3 "IVA rimborso "
PICTURE "."
GROUP 11
END END
CURRENCY 105 15 CURRENCY 105 15
BEGIN BEGIN
PROMPT 1 6 "Rettifiche " PROMPT 1 4 "IVA rettifiche "
GROUP 11
END END
LIST 106 1 10 LIST 106 1 10
BEGIN BEGIN
PROMPT 1 7 "Rettifica a " PROMPT 35 4 ""
ITEM " | " ITEM " | "
ITEM "D|Debito" ITEM "D|Debito"
ITEM "C|Credito" ITEM "C|Credito"
FLAGS "U" FLAGS "U"
GROUP 11
END END
CURRENCY 107 15
BEGIN
PROMPT 1 3 "Credito utilizzato IVA "
FLAGS "D"
GROUP 12
END
CURRENCY 108 15
BEGIN
PROMPT 1 4 "Credito utilizzato F24 "
GROUP 12
END
CURRENCY 109 15
BEGIN
PROMPT 1 5 "Credito IVA residuo "
FLAGS "D"
GROUP 12
END
STRING 110 50 35
BEGIN
PROMPT 1 6 "Descr. "
GROUP 12
END
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -13 -1 ""
@ -155,7 +190,6 @@ END
BUTTON 100 10 2 BUTTON 100 10 2
BEGIN BEGIN
PROMPT -33 -1 "Dettaglio" PROMPT -33 -1 "Dettaglio"
// FLAGS "H"
END END
ENDPAGE ENDPAGE
@ -226,22 +260,11 @@ BEGIN
END END
CURRENCY 106 15 0 CURRENCY 106 15
BEGIN BEGIN
PROMPT 1 6 "Versamenti " PROMPT 1 6 "Versamenti "
END END
/*
LIST 107 1 10
BEGIN
PROMPT 1 7 "Importo a "
ITEM " | "
ITEM "D|Debito"
ITEM "C|Credito"
FLAGS "U"
END
*/
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -13 -1 ""

View File

@ -2,7 +2,7 @@
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 20 0 2
BUTTON DLG_SAVEREC 8 2 BUTTON DLG_SAVEREC 10 2
BEGIN BEGIN
PROMPT -13 -1 "~Registra" PROMPT -13 -1 "~Registra"
PICTURE BMP_SAVEREC PICTURE BMP_SAVEREC
@ -10,12 +10,12 @@ PICTURE BMP_SAVERECDN
MESSAGE EXIT,K_SAVE MESSAGE EXIT,K_SAVE
END END
BUTTON DLG_CANCEL 8 2 BUTTON DLG_CANCEL 10 2
BEGIN BEGIN
PROMPT -23 -1 "" PROMPT -23 -1 ""
END END
BUTTON DLG_QUIT 8 2 BUTTON DLG_QUIT 10 2
BEGIN BEGIN
PROMPT -33 -1 "" PROMPT -33 -1 ""
MESSAGE EXIT,K_QUIT MESSAGE EXIT,K_QUIT
@ -24,15 +24,15 @@ END
ENDPAGE ENDPAGE
PAGE "Visualizzazione liquidazione" -1 -1 77 20 PAGE "Visualizzazione liquidazione" -1 -1 77 20
GROUPBOX DLG_NULL 79 3 GROUPBOX DLG_NULL 79 3
BEGIN BEGIN
PROMPT 0 1 "@BDitta corrente" PROMPT 0 1 "@BDitta corrente"
END END
NUMBER F_CODDITTA 5 NUMBER F_CODDITTA 5
BEGIN BEGIN
PROMPT 2 2 "Codice ditta " PROMPT 2 2 "Codice ditta "
FLAGS "FRD" FLAGS "FRD"
USE LF_NDITTE KEY 1 USE LF_NDITTE KEY 1
INPUT CODDITTA F_CODDITTA INPUT CODDITTA F_CODDITTA
@ -42,36 +42,41 @@ END
STRING F_RAGSOC 50 STRING F_RAGSOC 50
BEGIN BEGIN
PROMPT 22 2 "" PROMPT 22 2 ""
FLAGS "D" FLAGS "D"
END END
CURRENCY F_CREDPREC 15 CURRENCY F_CREDPREC 15
BEGIN BEGIN
PROMPT 1 4 "Credito inizio anno " PROMPT 1 4 "Credito compensabile inizio anno "
FLAGS "R"
END END
SPREADSHEET F_VISLIQ1 78 5 SPREADSHEET F_VISLIQ1 78 5
BEGIN BEGIN
PROMPT 1 7 "Liquidazione" PROMPT 1 7 "Liquidazione"
ITEM "Mese@10" ITEM "Mese@10"
ITEM "Risultato@15" ITEM "Risultato@15"
ITEM "D/C" ITEM "D/C@3"
ITEM "IVA rimborso@15" ITEM "IVA rimborso@15"
ITEM "IVA rettifiche@15" ITEM "IVA rettifiche@15"
ITEM "D/C" ITEM "D/C@3"
ITEM "Credito\nutilizzato IVA@15"
ITEM "Credito\nutilizzato F24@15"
ITEM "Credito IVA\nresiduo@15"
ITEM "Descrizione@35"
END END
SPREADSHEET F_VISLIQ2 78 5 SPREADSHEET F_VISLIQ2 78 5
BEGIN BEGIN
PROMPT 1 13 "Versamenti" PROMPT 1 13 "Versamenti"
ITEM "Mese@10" ITEM "Mese@10"
ITEM "Data@10" ITEM "Data@10"
ITEM "ABI@5" ITEM "ABI@5"
ITEM "CAB@5" ITEM "CAB@5"
ITEM "Conc.@5" ITEM "Conc.@5"
ITEM "Versamenti@15" ITEM "Versamenti@15"
// ITEM "D/C" // ITEM "D/C"
END END
ENDPAGE ENDPAGE
@ -81,11 +86,10 @@ PAGE "Prospetto mensile" -1 -1 50 10
STRING 101 20 STRING 101 20
BEGIN BEGIN
PROMPT 1 1 "Mese " PROMPT 1 1 "Mese "
FLAGS "D" FLAGS "D"
END END
CURRENCY 102 15 CURRENCY 102 15
BEGIN BEGIN
PROMPT 1 2 "Risultato " PROMPT 1 2 "Risultato "
@ -94,62 +98,90 @@ END
LIST 103 1 10 LIST 103 1 10
BEGIN BEGIN
PROMPT 1 3 "Importo a " PROMPT 35 2 ""
ITEM " | " ITEM " | "
ITEM "D|Debito" ITEM "D|Debito"
ITEM "C|Credito" ITEM "C|Credito"
FLAGS "DU" FLAGS "DU"
END END
CURRENCY 104 15 CURRENCY 104 15
BEGIN BEGIN
PROMPT 1 4 "IVA a rimborso " PROMPT 1 3 "IVA rimborso "
GROUP 11
END END
CURRENCY 105 15 CURRENCY 105 15
BEGIN BEGIN
PROMPT 1 5 "Rettifiche " PROMPT 1 4 "IVA rettifiche "
GROUP 11
END END
LIST 106 1 10 LIST 106 1 10
BEGIN BEGIN
PROMPT 1 6 "Rettifica a " PROMPT 35 4 ""
ITEM " | " ITEM " | "
ITEM "D|Debito" ITEM "D|Debito"
ITEM "C|Credito" ITEM "C|Credito"
FLAGS "U" FLAGS "U"
GROUP 11
END END
CURRENCY 107 15
BEGIN
PROMPT 1 3 "Credito utilizzato IVA "
FLAGS "D"
GROUP 12
END
CURRENCY 108 15
BEGIN
PROMPT 1 4 "Credito utilizzato F24 "
GROUP 12
END
CURRENCY 109 15
BEGIN
PROMPT 1 5 "Credito IVA residuo "
FLAGS "D"
GROUP 12
END
STRING 110 50 35
BEGIN
PROMPT 1 6 "Descr. "
GROUP 12
END
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -13 -1 ""
END END
BUTTON DLG_CANCEL 10 2 BUTTON DLG_CANCEL 10 2
BEGIN BEGIN
PROMPT -23 -1 "" PROMPT -23 -1 ""
END END
BUTTON 100 10 2 BUTTON 100 10 2
BEGIN BEGIN
PROMPT -33 -1 "Dettaglio" PROMPT -33 -1 "Dettaglio"
// FLAGS "H"
END END
ENDPAGE ENDPAGE
ENDMASK ENDMASK
PAGE "Prospetto versamenti" -1 -1 50 12 PAGE "Prospetto versamenti" -1 -1 50 12
STRING 101 20 STRING 101 20
BEGIN BEGIN
PROMPT 1 1 "Mese " PROMPT 1 1 "Mese "
FLAGS "D" FLAGS "D"
END END
DATE 102 DATE 102
BEGIN BEGIN
PROMPT 1 2 "Data " PROMPT 1 2 "Data "
END END
NUMBER 103 5 NUMBER 103 5
@ -201,32 +233,23 @@ END
CURRENCY 106 15 CURRENCY 106 15
BEGIN BEGIN
PROMPT 1 6 "Versamenti " PROMPT 1 6 "Versamenti "
FLAGS "R"
END END
/*
LIST 107 1 10
BEGIN
PROMPT 1 7 "Importo a "
ITEM "D|Debito"
ITEM "C|Credito"
FLAGS "U"
END
*/
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -13 -1 ""
END END
BUTTON DLG_CANCEL 10 2 BUTTON DLG_CANCEL 10 2
BEGIN BEGIN
PROMPT -23 -1 "" PROMPT -23 -1 ""
END END
BUTTON 100 10 2 BUTTON 100 10 2
BEGIN BEGIN
PROMPT -33 -1 "Dettaglio" PROMPT -33 -1 "Dettaglio"
// FLAGS "H" // FLAGS "H"
END END
ENDPAGE ENDPAGE

View File

@ -39,33 +39,33 @@ LISTBOX F_PERIODOM 30
BEGIN BEGIN
PROMPT 2 3 "Periodo liquidazione " PROMPT 2 3 "Periodo liquidazione "
FLAGS "D" FLAGS "D"
ITEM "1|Gennaio" ITEM "1|Gennaio"
ITEM "2|Febbraio" ITEM "2|Febbraio"
ITEM "3|Marzo" ITEM "3|Marzo"
ITEM "4|Aprile" ITEM "4|Aprile"
ITEM "5|Maggio" ITEM "5|Maggio"
ITEM "6|Giugno" ITEM "6|Giugno"
ITEM "7|Luglio" ITEM "7|Luglio"
ITEM "8|Agosto" ITEM "8|Agosto"
ITEM "9|Settembre" ITEM "9|Settembre"
ITEM "10|Ottobre" ITEM "10|Ottobre"
ITEM "11|Novembre" ITEM "11|Novembre"
ITEM "12|Dicembre" ITEM "12|Dicembre"
ITEM "13|Annuale" ITEM "13|Annuale"
END END
LISTBOX F_PERIODOT 30 LISTBOX F_PERIODOT 30
BEGIN BEGIN
PROMPT 2 3 "Periodo liquidazione " PROMPT 2 3 "Periodo liquidazione "
FLAGS "D" FLAGS "D"
ITEM "3|1° Trimestre" ITEM "3|1° Trimestre"
ITEM "6|2° Trimestre" ITEM "6|2° Trimestre"
ITEM "9|3° Trimestre" ITEM "9|3° Trimestre"
ITEM "12|4° Trimestre" ITEM "12|4° Trimestre"
ITEM "13|Annuale" ITEM "13|Annuale"
END END
BROWSEFILE F_VISFLQ 76 10 BROWSEFILE F_VISFLQ 78 10
BEGIN BEGIN
PROMPT 1 4 "" PROMPT 1 4 ""
END END
@ -74,7 +74,7 @@ END
CURRENCY F_RIMBORSO 15 CURRENCY F_RIMBORSO 15
BEGIN BEGIN
PROMPT 3 17 "Rimborso infrannuale: " PROMPT 2 17 "Rimborsi : "
GROUP 1 GROUP 1
FLAGS "H" FLAGS "H"
END END
@ -194,6 +194,54 @@ BEGIN
GROUP 4 GROUP 4
END END
/* gruppo 5: edit descrizione */
STRING F_DESCR3 60
BEGIN
PROMPT 2 18 "Descrizione "
GROUP 5
FLAGS "H"
END
/* gruppo 6: edit Variazioni d'imposta */
NUMBER F_VARIMP 15
BEGIN
PROMPT 2 17 "Variazioni d'imposta "
PICTURE "."
GROUP 6
FLAGS "H"
END
LIST F_VARIMP_DC 7
BEGIN
PROMPT 40 17 "a "
GROUP 6
ITEM "D|Debito"
ITEM "C|Credito"
FLAGS "H"
END
/* gruppo 7: edit Imposta non versata*/
NUMBER F_IMPNONVER 15
BEGIN
PROMPT 2 17 "Imposta non versata "
PICTURE "."
GROUP 7
FLAGS "H"
END
/* gruppo 8: edit crediti speciali */
NUMBER F_CREDSPEC 15 0
BEGIN
PROMPT 2 17 "Crediti speciali : "
GROUP 8
FLAGS "HR"
PICTURE "."
END
ENDPAGE ENDPAGE

View File

@ -1,4 +1,4 @@
BUTTON DLG_SAVEREC 8 2 BUTTON DLG_SAVEREC 10 2
BEGIN BEGIN
PROMPT -14 -1 "~Registra" PROMPT -14 -1 "~Registra"
PICTURE BMP_SAVEREC PICTURE BMP_SAVEREC
@ -6,19 +6,19 @@ PICTURE BMP_SAVERECDN
MESSAGE EXIT,K_SAVE MESSAGE EXIT,K_SAVE
END END
BUTTON DLG_RECALC 8 2 BUTTON DLG_RECALC 10 2
BEGIN BEGIN
PROMPT -24 -1 "Ri~calcola" PROMPT -24 -1 "Ri~calcola"
PICTURE BMP_RECALC PICTURE BMP_RECALC
MESSAGE EXIT,K_INS MESSAGE EXIT,K_INS
END END
BUTTON DLG_CANCEL 8 2 BUTTON DLG_CANCEL 10 2
BEGIN BEGIN
PROMPT -34 -1 "" PROMPT -34 -1 ""
END END
BUTTON DLG_QUIT 8 2 BUTTON DLG_QUIT 10 2
BEGIN BEGIN
PROMPT -44 -1 "" PROMPT -44 -1 ""
MESSAGE EXIT,K_QUIT MESSAGE EXIT,K_QUIT

View File

@ -6,16 +6,23 @@ bool Visliq_app::look_lim(int m)
bool ok = FALSE; bool ok = FALSE;
_lim_r->zero(); _lim_r->zero();
_lam_r->zero();
(*_lim_anno) = _year; (*_lim_anno) = _year;
(*_lim_mese) = format("%02d",m); (*_lim_mese) = format("%02d",m);
if (_lim->read() == NOERR) if (_lim->read() == NOERR)
{ {
_lam_r->zero();
(*_lam_anno) = _year; (*_lam_anno) = _year;
(*_lam_mese) = format("%02d",m); (*_lam_mese) = format("%02d",m);
_lam->read(); _lam->read();
} }
else
{
_lim_r->zero();
(*_lim_anno) = _year;
(*_lim_mese) = format("%02d",m);
}
return _lim->good() && _lam->good(); return _lim->good() && _lam->good();
} }

View File

@ -6,8 +6,6 @@
#include <prefix.h> #include <prefix.h>
#include <sheet.h> #include <sheet.h>
#include <tabutil.h> #include <tabutil.h>
#include <utility.h>
#include <urldefid.h>
#include <nditte.h> #include <nditte.h>
@ -68,8 +66,9 @@ void TDich_periodica_selfirm_mask::build_nomiditte()
bool good = prefix().exist(dt.get_long("CODDITTA")); bool good = prefix().exist(dt.get_long("CODDITTA"));
if (good) if (good)
{ {
lia.put("CODTAB", format("%05ld%d",dt.get_long("CODDITTA"),_year)); TString16 cod; cod.format("%05ld%d", dt.get_long("CODDITTA"),_year);
lia.put("CODTAB", cod);
if (lia.read() != NOERR) if (lia.read() != NOERR)
good = FALSE; good = FALSE;
else else

View File

@ -22,7 +22,7 @@ END
LIST F_MONTHS 30 LIST F_MONTHS 30
BEGIN BEGIN
PROMPT 1 5 "Mese liquidazione " PROMPT 1 5 "Iva periodica di "
ITEM "1|Gennaio" ITEM "1|Gennaio"
ITEM "2|Febbraio" ITEM "2|Febbraio"
ITEM "3|Marzo" ITEM "3|Marzo"
@ -39,7 +39,7 @@ END
LIST F_TRIMS 30 LIST F_TRIMS 30
BEGIN BEGIN
PROMPT 1 5 "Trim. liq. " PROMPT 1 5 "Iva periodica del "
ITEM "3|1° Trimestre" ITEM "3|1° Trimestre"
ITEM "6|2° Trimestre" ITEM "6|2° Trimestre"
ITEM "9|3° Trimestre" ITEM "9|3° Trimestre"

View File

@ -3,7 +3,6 @@
#include <direct.h> #include <direct.h>
#include <applicat.h> #include <applicat.h>
#include <colors.h>
#include <config.h> #include <config.h>
#include <mask.h> #include <mask.h>
#include <prefix.h> #include <prefix.h>
@ -19,7 +18,6 @@
class TRic_archivi : public TSkeleton_application class TRic_archivi : public TSkeleton_application
{ {
//TTable* _tab_tra;
TTransfer_file* _tras_file; TTransfer_file* _tras_file;
TLocalisamfile* _caus; TLocalisamfile* _caus;
TLocalisamfile* _rcaus; TLocalisamfile* _rcaus;
@ -32,7 +30,6 @@ class TRic_archivi : public TSkeleton_application
TLocalisamfile* _part; TLocalisamfile* _part;
TLocalisamfile* _scad; TLocalisamfile* _scad;
TLocalisamfile* _pagsca; TLocalisamfile* _pagsca;
//TLocalisamfile* _tab;
TString80 TEMP; TString80 TEMP;
@ -246,7 +243,7 @@ bool TRic_archivi::leggi_marker()
if (_dittaric != 0) if (_dittaric != 0)
{ {
if (!prefix().exist(_dittaric)) if (!prefix().exist(_dittaric))
return error_box("Gli archivi della ditta %ld non sono presenti su disco", _dittaric); return error_box("Libreria archivi ditta %s non presente su disco", (const char*)_dittaric);
} }
else else
return error_box("Codici NON PRESENTI in tabella ricezione: caricarli e riprovare"); return error_box("Codici NON PRESENTI in tabella ricezione: caricarli e riprovare");
@ -419,9 +416,9 @@ void TRic_archivi::main_loop()
aggiorna_tabella(); aggiorna_tabella();
_tras_file->close(); // Chiude il trasfer letto dalla directory della ditta _tras_file->close(); // Chiude il trasfer letto dalla directory della ditta
::remove(_trasf); ::remove(_trasf);
TString80 tab = _tras_file->path(_dittaric); TFilename tab = _tras_file->path(_dittaric);
TString tabcdx = tab; TFilename tabcdx = tab;
TString tabdbf = tab; TFilename tabdbf = tab;
tabcdx << "\\ttab.cdx"; tabcdx << "\\ttab.cdx";
tabdbf << "\\ttab.dbf"; tabdbf << "\\ttab.dbf";
::remove(tabcdx); ::remove(tabcdx);
@ -694,7 +691,6 @@ void TRic_archivi::trasfer2tempfile()
void TRic_archivi::ditta_ricevente() void TRic_archivi::ditta_ricevente()
{ {
TLocalisamfile nditte (LF_NDITTE); TLocalisamfile nditte (LF_NDITTE);
nditte.setkey(1); nditte.setkey(1);
nditte.zero(); nditte.zero();
nditte.put(NDT_CODDITTA, _dittaric); nditte.put(NDT_CODDITTA, _dittaric);

View File

@ -70,12 +70,12 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -12 -1 "" PROMPT -12 -1 ""
END END
BUTTON DLG_QUIT 9 2 BUTTON DLG_QUIT 10 2
BEGIN BEGIN
PROMPT -22 -1 "" PROMPT -22 -1 ""
END END

View File

@ -16,17 +16,14 @@ END
STRING F_PATHNAME 30 STRING F_PATHNAME 30
BEGIN BEGIN
PROMPT 2 4 "Indirizzario " PROMPT 2 4 "Indirizzario "
HELP "Specificare il percorso completo dove ricercare il file di ricezione dati"
FLAGS "U"
//VALIDATE FILENAME_FUNC
END END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -12 -1 "" PROMPT -12 -1 ""
END END
BUTTON DLG_QUIT 9 2 BUTTON DLG_QUIT 10 2
BEGIN BEGIN
PROMPT -22 -1 "" PROMPT -22 -1 ""
END END

View File

@ -9,12 +9,12 @@ BEGIN
ITEM "B:|B:" ITEM "B:|B:"
END END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -12 -1 "" PROMPT -12 -1 ""
END END
BUTTON DLG_QUIT 9 2 BUTTON DLG_QUIT 10 2
BEGIN BEGIN
PROMPT -22 -1 "" PROMPT -22 -1 ""
END END

View File

@ -1430,6 +1430,7 @@ void TRic_tab::ricevi_movSC(TString& key, char uselab)
partita.put(PART_DATADOC, _tpart->get_date(PART_DATADOC)); partita.put(PART_DATADOC, _tpart->get_date(PART_DATADOC));
partita.put(PART_DATAPAG, _tpart->get_date(PART_DATAPAG)); partita.put(PART_DATAPAG, _tpart->get_date(PART_DATAPAG));
partita.put(PART_NUMDOC, _tpart->get (PART_NUMDOC)); partita.put(PART_NUMDOC, _tpart->get (PART_NUMDOC));
partita.put(PART_DESCR, _tpart->get (PART_DESCR));
partita.put(PART_REG, _tpart->get (PART_REG)); partita.put(PART_REG, _tpart->get (PART_REG));
partita.put(PART_PROTIVA, _tpart->get_long(PART_PROTIVA)); partita.put(PART_PROTIVA, _tpart->get_long(PART_PROTIVA));
partita.put(PART_CODCAUS, _tpart->get (PART_CODCAUS)); partita.put(PART_CODCAUS, _tpart->get (PART_CODCAUS));
@ -1534,6 +1535,18 @@ void TRic_tab::ricevi_movSC(TString& key, char uselab)
pag.put(PAGSCA_IMPORTO, _tpagsca->get_real(PAGSCA_IMPORTO)); pag.put(PAGSCA_IMPORTO, _tpagsca->get_real(PAGSCA_IMPORTO));
pag.put(PAGSCA_IMPORTOVAL, _tpagsca->get_real(PAGSCA_IMPORTOVAL)); pag.put(PAGSCA_IMPORTOVAL, _tpagsca->get_real(PAGSCA_IMPORTOVAL));
pag.put(PAGSCA_RITENUTE, _tpagsca->get_real(PAGSCA_RITENUTE)); pag.put(PAGSCA_RITENUTE, _tpagsca->get_real(PAGSCA_RITENUTE));
pag.put(PAGSCA_TIPOCC, _tpagsca->get(PAGSCA_TIPOCC));
pag.put(PAGSCA_GRUPPOC, _tpagsca->get(PAGSCA_GRUPPOC));
pag.put(PAGSCA_CONTOC, _tpagsca->get(PAGSCA_CONTOC));
pag.put(PAGSCA_SOTTOCONTC, _tpagsca->get(PAGSCA_SOTTOCONTC));
pag.put(PAGSCA_CODABI, _tpagsca->get(PAGSCA_CODABI));
pag.put(PAGSCA_CODCAB, _tpagsca->get(PAGSCA_CODCAB));
pag.put(PAGSCA_CODABIPR, _tpagsca->get(PAGSCA_CODABIPR));
pag.put(PAGSCA_CODCABPR, _tpagsca->get(PAGSCA_CODCABPR));
pag.put(PAGSCA_CODAG, _tpagsca->get(PAGSCA_CODAG));
} }
} }

View File

@ -27,42 +27,42 @@
#include "cglib04.h" #include "cglib04.h"
#include "cg6700.h" #include "cg6700.h"
HIDDEN const char* err_msg[] = {"*** Data operazione non valida", HIDDEN const char* err_msg[] = {"*** Data operazione non valida", // 0
"*** Data operazione non compresa in alcun esercizio", "*** Data operazione non compresa in alcun esercizio",
"*** Data competenza non valida", "*** Data competenza non valida",
"*** Data competenza non compresa in alcun esercizio", "*** Data competenza non compresa in alcun esercizio",
"--- Data competenza incompatibile con data operazione", "--- Data competenza incompatibile con data operazione",
"*** Data operazione antecedente ad ultima stampa giornale", "*** Data operazione antecedente ad ultima stampa giornale", // 5
"--- Data documento non valida", "--- Data documento non valida",
"*** Codice causale non valido o non presente in archivio", "*** Codice causale non valido o non presente in archivio",
"--- Codice pagamento non valido o non presente in tabella", "--- Codice pagamento non valido o non presente in tabella",
"*** Codice registro IVA non valido o non presente in tabella", "*** Codice registro IVA non valido o non presente in tabella",
"*** Codice cliente/fornitore non valido o non presente in anagrafica", "*** Codice cliente/fornitore non valido o non presente in anagrafica", // 10
"--- Data 74 ter non valida", "--- Data 74 ter non valida",
"*** Data operazione antecedente ad ultima stampa registro IVA", "*** Data operazione antecedente ad ultima stampa registro IVA",
"*** Tipo anagrafico C/F errato", "*** Tipo anagrafico C/F errato",
"*** Codice anagrafico C/F/Piano Conti errato", "*** Codice anagrafico C/F/Piano Conti errato",
"*** Rif. partite saldaconto errato", "*** Rif. partite saldaconto errato", // 15
"--- Codice valuta errato", "--- Codice valuta errato",
"*** Data cambio non valida", "*** Data cambio non valida",
"*** Data pagamento/incasso non valida", "*** Data pagamento/incasso non valida",
"*** Tipo pagamento errato", "*** Tipo pagamento errato",
"*** Segno D/A errato", "*** Segno D/A errato", // 20
"*** Cambio mancante", "*** Cambio mancante",
"*** Gruppo/Conto errato", "*** Gruppo/Conto errato",
"*** Rif. rata partite saldaconto errato", "*** Rif. rata partite saldaconto errato",
"*** Data scadenza non valida", "*** Data scadenza non valida",
"--- Ulteriore classificazione non valida o non presente in archivio", "--- Ulteriore classificazione non valida o non presente in archivio", // 25
"*** Importo rata in lire mancante", "*** Importo rata in lire mancante",
"*** Importo rata in valuta mancante", "*** Importo rata in valuta mancante",
"--- Codice Nostra banca non valido o non presente in archivio", "--- Codice Nostra banca non valido o non presente in archivio",
"--- Codice Vostra banca non valido o non presente in archivio", "--- Codice Vostra banca non valido o non presente in archivio",
"--- Codice agente non valido o non presente in archivio", "--- Codice agente non valido o non presente in archivio", // 30
"--- Data sollecito non valida", "--- Data sollecito non valida",
"*** Rif. fattura errato", "*** Rif. fattura errato",
"*** Rif. rata fattura errato", "*** Rif. rata fattura errato",
"*** In acconto/a saldo errato", "*** In acconto/a saldo errato",
"*** Importo inc./pag. in lire mancante", "*** Importo inc./pag. in lire mancante", // 35
"*** Importo inc./pag. in valuta mancante", "*** Importo inc./pag. in valuta mancante",
"*** Flag abbuono attivo/passivo errato", "*** Flag abbuono attivo/passivo errato",
"*** Codice valuta errato", "*** Codice valuta errato",
@ -148,7 +148,7 @@ public:
bool cerca_tipopag_codpag(TString& codpag, int tipopag); bool cerca_tipopag_codpag(TString& codpag, int tipopag);
bool ulteriore_classificazione(int tipopag, TString& ultclass); bool ulteriore_classificazione(int tipopag, TString& ultclass);
bool banca(long abi,long cab); bool banca(long abi,long cab);
bool agente(TString& codag); bool agente(const char* codag) const;
bool record_partite(int nriga); bool record_partite(int nriga);
bool record_scadenze(int nriga,int nrata); bool record_scadenze(int nriga,int nrata);
void descrizione_pagamento(TString& descr,int tipopag,TString& ultclass,TString& codpag); void descrizione_pagamento(TString& descr,int tipopag,TString& ultclass,TString& codpag);
@ -478,7 +478,7 @@ bool TRic_ListaMov::check_archivi(TProgind* pnd)
long ditta_ric = get_firm(); long ditta_ric = get_firm();
if (!prefix().exist(ditta_ric)) if (!prefix().exist(ditta_ric))
return error_box("Rilevati errori gravi negli archivi: procedura interrotta"); return error_box("Non esistono gli archivi della ditta %05ld: procedura interrotta", ditta_ric);
TTransfer_file& tr = trasfer(); TTransfer_file& tr = trasfer();
@ -487,11 +487,12 @@ bool TRic_ListaMov::check_archivi(TProgind* pnd)
_pathfile = _pathfile << HEADER; _pathfile = _pathfile << HEADER;
if (!tr.open(_pathfile)) if (!tr.open(_pathfile))
return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata"); return error_box("Al momento non ci sono trasferimenti attivi sulla ditta selezionata");
if (!tr.read_control_rec()) if (!tr.read_control_rec())
return error_box("Rilevati errori gravi negli archivi: procedura interrotta"); return error_box("Rilevati errori gravi negli archivi: procedura interrotta");
else _record = tr.record(); else
_record = tr.record();
TString16 sd = look_sdt(); TString16 sd = look_sdt();
@ -1413,17 +1414,15 @@ bool TRic_ListaMov::cerca_codpag(TString& codpag)
bool TRic_ListaMov::cerca_tipopag_codpag(TString& codpag, int tipopag) bool TRic_ListaMov::cerca_tipopag_codpag(TString& codpag, int tipopag)
{ {
TTable rpg ("%RPG"); TTable rpg ("%RPG");
TString dep; TString16 dep;
for (int i = 0; !rpg.eof(); rpg.next(), i++) for (int i = 0; ; i++)
{ {
dep.format("%-s%3d", (const char*) codpag, i); dep.format("%-s%3d", (const char*) codpag, i);
rpg.zero();
rpg.put("CODTAB", dep); rpg.put("CODTAB", dep);
if (rpg.read() == NOERR) if (rpg.read() == NOERR)
{ {
int tipo = rpg.get_int("I1"); const int tipo = rpg.get_int("I1");
if (tipo == tipopag) if (tipo == tipopag)
{ {
_tipopag_pag = tipo; _tipopag_pag = tipo;
@ -1431,7 +1430,7 @@ bool TRic_ListaMov::cerca_tipopag_codpag(TString& codpag, int tipopag)
} }
} }
else else
return FALSE; break;
} }
return FALSE; return FALSE;
@ -1472,22 +1471,25 @@ bool TRic_ListaMov::banca(long abi,long cab)
return FALSE; return FALSE;
} }
bool TRic_ListaMov::agente(TString& codag) bool TRic_ListaMov::agente(const char* codag) const
{ {
if (codag == "") static int test_file = -1;
return TRUE;
bool ok = TRUE;
TTable ag ("%AGE"); if (codag && *codag)
TString dep; {
if (test_file < 0)
dep.format("%5s", (const char*) codag); {
TDir d; d.get(LF_AGENTI);
ag.zero(); test_file = fexist(d.filename()); // Controlla l'esistenza del file
ag.put("CODTAB", dep); }
if (ag.read() == NOERR) if (test_file)
return TRUE; {
const TRectype& age = cache().get(LF_AGENTI, codag);
return FALSE; ok = !age.empty();
}
}
return ok;
} }
bool TRic_ListaMov::controlla_scadenze() bool TRic_ListaMov::controlla_scadenze()
@ -1564,8 +1566,7 @@ bool TRic_ListaMov::controlla_scadenze()
scad.readat(nrec); scad.readat(nrec);
return TRUE; return TRUE;
} }
cerca_tipopag_codpag(codpag,tipopag); if (!cerca_tipopag_codpag(codpag,tipopag))
if (tipopag != _tipopag_pag)
{ {
scad.readat(nrec); scad.readat(nrec);
return TRUE; return TRUE;
@ -1756,8 +1757,8 @@ void TRic_ListaMov::stampa_errori_scadenze(int riga)
_errore_grave_SC = TRUE; _errore_grave_SC = TRUE;
set_row(++riga, "@30g%s", (const char*) err_msg[19]); set_row(++riga, "@30g%s", (const char*) err_msg[19]);
} }
cerca_tipopag_codpag(codpag,tipopag);
if (tipopag != _tipopag_pag) if (!cerca_tipopag_codpag(codpag,tipopag))
{ {
_errore_grave_SC = TRUE; _errore_grave_SC = TRUE;
set_row(++riga, "@30g%s", (const char*) err_msg[40]); set_row(++riga, "@30g%s", (const char*) err_msg[40]);

View File

@ -736,7 +736,7 @@ bool TVar_mov::setta_campi_maschera_iva(TMask& m)
m.enable(F_LOCALITA); m.enable(F_LOCALITA);
m.enable(F_CAPOCC); m.enable(F_CAPOCC);
m.enable(F_PROVOCC); m.enable(F_PROVOCC);
m.enable(F_PROVV); m.disable(F_PROVV); // CM000232
m.disable(F_IMPONIBILE); m.disable(F_IMPONIBILE);
m.disable(F_CODIVA); m.disable(F_CODIVA);
m.disable(F_IMPOSTA); m.disable(F_IMPOSTA);

View File

@ -184,7 +184,6 @@ bool TVar_sc::gestione_handler(TMask_field& f, KEY k)
rp.sheet_mask().set_handler(110, datascad_handler); rp.sheet_mask().set_handler(110, datascad_handler);
rp.sheet_mask().set_handler(120, banca_handler); rp.sheet_mask().set_handler(120, banca_handler);
rp.sheet_mask().set_handler(122, banca_handler); rp.sheet_mask().set_handler(122, banca_handler);
rp.sheet_mask().set_handler(123, codag_handler);
rp.sheet_mask().set_handler(124, datasoll_handler); rp.sheet_mask().set_handler(124, datasoll_handler);
rp.sheet_mask().set_handler(116, importo_handler); rp.sheet_mask().set_handler(116, importo_handler);
rp.sheet_mask().set_handler(117, impval_handler); rp.sheet_mask().set_handler(117, impval_handler);
@ -234,7 +233,6 @@ bool TVar_sc::gestione_handler(TMask_field& f, KEY k)
rp.sheet_mask().set_handler(131, passat_handler); rp.sheet_mask().set_handler(131, passat_handler);
rp.sheet_mask().set_handler(127, banca_handler); rp.sheet_mask().set_handler(127, banca_handler);
rp.sheet_mask().set_handler(129, banca_handler); rp.sheet_mask().set_handler(129, banca_handler);
rp.sheet_mask().set_handler(130, codag_handler);
rp.sheet_mask().set_handler(124, contropartita_handler); rp.sheet_mask().set_handler(124, contropartita_handler);
rp.sheet_mask().set_handler(115, ritenute_handler); rp.sheet_mask().set_handler(115, ritenute_handler);
rp.sheet_mask().set_handler(116, sezione_abb_handler); rp.sheet_mask().set_handler(116, sezione_abb_handler);
@ -1512,29 +1510,6 @@ bool TVar_sc::banca_handler(TMask_field& f, KEY k)
return TRUE; return TRUE;
} }
bool TVar_sc::codag_handler(TMask_field& f, KEY k)
{
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())
{
TString dep;
TString codag = f.get();
if (codag.empty()) return TRUE;
TTable age ("AGE");
if (real::is_natural(codag))
dep.format("%05s", (const char*) codag);
else
dep.format("%-5s", (const char*) codag);
age.zero();
age.put("CODTAB", dep);
if (age.read() != NOERR)
return f.warning_box("Codice agente errato o non presente in tabella");
}
return TRUE;
}
bool TVar_sc::datasoll_handler(TMask_field& f, KEY k) bool TVar_sc::datasoll_handler(TMask_field& f, KEY k)
{ {
if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running()) if ( (k == K_TAB || k == K_ENTER) && f.mask().is_running())

View File

@ -1,171 +1,172 @@
#include "cg6804a.h" #include "cg6804a.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2
BEGIN BEGIN
PROMPT -12 -1 "~Conferma" PROMPT -12 -1 "~Conferma"
MESSAGE EXIT,K_ENTER MESSAGE EXIT,K_ENTER
END END
BUTTON DLG_QUIT 9 2 BUTTON DLG_QUIT 9 2
BEGIN BEGIN
PROMPT -22 -1 "" PROMPT -22 -1 ""
END END
ENDPAGE ENDPAGE
PAGE "Variazione Movimenti Saldaconto" -1 -1 78 10 PAGE "Variazione Movimenti Saldaconto" -1 -1 78 10
LIST F_TIPOCF 1 12 LIST F_TIPOCF 1 12
BEGIN BEGIN
PROMPT 1 1 "Tipo conto " PROMPT 1 1 "Tipo conto "
ITEM " |Conto" ITEM " |Conto"
MESSAGE SHOW,1@|RESET,1@|HIDE,2@|HIDE,3@ MESSAGE SHOW,1@|RESET,1@|HIDE,2@|HIDE,3@
ITEM "C|Cliente" ITEM "C|Cliente"
MESSAGE HIDE,1@|SHOW,2@|RESET,2@|HIDE,3@ MESSAGE HIDE,1@|SHOW,2@|RESET,2@|HIDE,3@
ITEM "F|Fornitore" ITEM "F|Fornitore"
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@|RESET,3@ MESSAGE HIDE,1@|HIDE,2@|SHOW,3@|RESET,3@
END END
NUMBER F_GRUPPO 3 NUMBER F_GRUPPO 3
BEGIN BEGIN
PROMPT 28 1 "Gruppo " PROMPT 28 1 "Gruppo "
USE LF_PCON SELECT CONTO=="" USE LF_PCON SELECT CONTO==""
INPUT GRUPPO F_GRUPPO INPUT GRUPPO F_GRUPPO
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO GRUPPO OUTPUT F_GRUPPO GRUPPO
CHECKTYPE NORMAL CHECKTYPE NORMAL
ADD RUN cg0 -0 ADD RUN cg0 -0
END END
NUMBER F_CONTO 3 NUMBER F_CONTO 3
BEGIN BEGIN
PROMPT 41 1 "Conto " PROMPT 41 1 "Conto "
USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="") USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="")
INPUT GRUPPO F_GRUPPO INPUT GRUPPO F_GRUPPO
INPUT CONTO F_CONTO INPUT CONTO F_CONTO
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
DISPLAY "Tipo" TMCF DISPLAY "Tipo" TMCF
OUTPUT F_TIPOCF TMCF OUTPUT F_TIPOCF TMCF
OUTPUT F_GRUPPO GRUPPO OUTPUT F_GRUPPO GRUPPO
OUTPUT F_CONTO CONTO OUTPUT F_CONTO CONTO
CHECKTYPE NORMAL CHECKTYPE NORMAL
ADD RUN cg0 -0 ADD RUN cg0 -0
END END
NUMBER F_SOTTOCONTO 6 NUMBER F_SOTTOCONTO 6
BEGIN BEGIN
PROMPT 54 1 "Sottoconto " PROMPT 54 1 "Sottoconto "
USE LF_PCON SELECT SOTTOCONTO!="" USE LF_PCON SELECT SOTTOCONTO!=""
COPY INPUT F_CONTO COPY INPUT F_CONTO
INPUT SOTTOCONTO F_SOTTOCONTO INPUT SOTTOCONTO F_SOTTOCONTO
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO GRUPPO OUTPUT F_GRUPPO GRUPPO
OUTPUT F_CONTO CONTO OUTPUT F_CONTO CONTO
OUTPUT F_SOTTOCONTO SOTTOCONTO OUTPUT F_SOTTOCONTO SOTTOCONTO
OUTPUT F_DESCR DESCR OUTPUT F_DESCR DESCR
ADD RUN cg0 -0 ADD RUN cg0 -0
GROUP 1 GROUP 1
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
NUMBER F_CLIENTE 6 NUMBER F_CLIENTE 6
BEGIN BEGIN
PROMPT 54 1 "Cliente " PROMPT 54 1 "Cliente "
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "C" INPUT TIPOCF "C"
INPUT CODCF F_CLIENTE INPUT CODCF F_CLIENTE
DISPLAY "Cliente" CODCF DISPLAY "Cliente" CODCF
DISPLAY "Descrizione@50" RAGSOC DISPLAY "Descrizione@50" RAGSOC
OUTPUT F_CLIENTE CODCF OUTPUT F_CLIENTE CODCF
OUTPUT F_DESCRCLI RAGSOC OUTPUT F_DESCRCLI RAGSOC
ADD RUN cg0 -1 C ADD RUN cg0 -1 C
GROUP 2 GROUP 2
CHECKTYPE NORMAL CHECKTYPE NORMAL
MESSAGE COPY,F_SOTTOCONTO MESSAGE COPY,F_SOTTOCONTO
END END
NUMBER F_FORNITORE 6 NUMBER F_FORNITORE 6
BEGIN BEGIN
PROMPT 54 1 "Fornitore " PROMPT 54 1 "Fornitore "
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "F" INPUT TIPOCF "F"
INPUT CODCF F_FORNITORE INPUT CODCF F_FORNITORE
DISPLAY "Fornitore" CODCF DISPLAY "Fornitore" CODCF
DISPLAY "Descrizione@50" RAGSOC DISPLAY "Descrizione@50" RAGSOC
OUTPUT F_FORNITORE CODCF OUTPUT F_FORNITORE CODCF
OUTPUT F_DESCRFOR RAGSOC OUTPUT F_DESCRFOR RAGSOC
ADD RUN cg0 -1 F ADD RUN cg0 -1 F
GROUP 3 GROUP 3
CHECKTYPE NORMAL CHECKTYPE NORMAL
MESSAGE COPY,F_SOTTOCONTO MESSAGE COPY,F_SOTTOCONTO
END END
STRING F_DESCR 50 58 STRING F_DESCR 50 58
BEGIN BEGIN
PROMPT 1 2 "Descrizione " PROMPT 1 2 "Descrizione "
USE LF_PCON KEY 2 USE LF_PCON KEY 2
INPUT DESCR F_DESCR INPUT DESCR F_DESCR
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SOTTOCONTO COPY OUTPUT F_SOTTOCONTO
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 1 GROUP 1
ADD RUN cg0 -0 ADD RUN cg0 -0
END END
STRING F_DESCRCLI 50 58 STRING F_DESCRCLI 50 58
BEGIN BEGIN
PROMPT 1 2 "Descrizione " PROMPT 1 2 "Descrizione "
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "C" INPUT TIPOCF "C"
INPUT RAGSOC F_DESCRCLI INPUT RAGSOC F_DESCRCLI
DISPLAY "Gruppo" GRUPPO DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" CODCF DISPLAY "Sottoconto" CODCF
DISPLAY "Ragione sociale@50" RAGSOC DISPLAY "Ragione sociale@50" RAGSOC
COPY OUTPUT F_CLIENTE COPY OUTPUT F_CLIENTE
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 2 GROUP 2
ADD RUN cg0 -1 ADD RUN cg0 -1
END END
STRING F_DESCRFOR 50 58 STRING F_DESCRFOR 50 58
BEGIN BEGIN
PROMPT 1 2 "Descrizione " PROMPT 1 2 "Descrizione "
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "F" INPUT TIPOCF "F"
INPUT RAGSOC F_DESCRFOR INPUT RAGSOC F_DESCRFOR
COPY DISPLAY F_DESCRCLI COPY DISPLAY F_DESCRCLI
COPY OUTPUT F_FORNITORE COPY OUTPUT F_FORNITORE
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 3 GROUP 3
ADD RUN cg0 -1 ADD RUN cg0 -1
END END
NUMBER F_ANNO 4 NUMBER F_ANNO 4
BEGIN BEGIN
PROMPT 1 4 "Anno riferimento partita " PROMPT 1 4 "Anno riferimento partita "
END END
STRING F_NUMPART 7 STRING F_NUMPART 7
BEGIN BEGIN
PROMPT 1 5 "Numero riferimento partita " PROMPT 1 5 "Numero riferimento partita "
END FLAGS "_U"
END
NUMBER F_NRIGA 4
BEGIN NUMBER F_NRIGA 4
PROMPT 1 6 "Numero riga riferimento partita " BEGIN
END PROMPT 1 6 "Numero riga riferimento partita "
END
ENDPAGE
ENDPAGE

View File

@ -1,24 +1,24 @@
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 8 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -14 -1 "~Conferma" PROMPT -14 -1 "~Conferma"
MESSAGE EXIT,K_SAVE MESSAGE EXIT,K_SAVE
END END
BUTTON DLG_DELREC 8 2 BUTTON DLG_DELREC 10 2
BEGIN BEGIN
PROMPT -24 -1 "~Elimina" PROMPT -24 -1 "~Elimina"
MESSAGE EXIT,K_DEL MESSAGE EXIT,K_DEL
END END
BUTTON DLG_CANCEL 8 2 BUTTON DLG_CANCEL 10 2
BEGIN BEGIN
PROMPT -34 -1 "" PROMPT -34 -1 ""
MESSAGE EXIT,K_ESC MESSAGE EXIT,K_ESC
END END
BUTTON 100 8 2 BUTTON 100 10 2
BEGIN BEGIN
PROMPT -44 -1 "~Gestione" PROMPT -44 -1 "~Gestione"
END END
@ -74,7 +74,7 @@ END
STRING 107 7 STRING 107 7
BEGIN BEGIN
PROMPT 28 4 "Numero " PROMPT 28 4 "Numero "
FLAGS "UD" FLAGS "_UD"
END END
NUMBER 108 4 NUMBER 108 4

View File

@ -1,19 +1,19 @@
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 8 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -13 -1 "~Conferma" PROMPT -13 -1 "~Conferma"
MESSAGE EXIT,K_SAVE MESSAGE EXIT,K_SAVE
PICTURE BMP_SAVEREC PICTURE BMP_SAVEREC
END END
BUTTON DLG_DELREC 8 2 BUTTON DLG_DELREC 10 2
BEGIN BEGIN
PROMPT -23 -1 "~Elimina" PROMPT -23 -1 "~Elimina"
MESSAGE EXIT,K_DEL MESSAGE EXIT,K_DEL
END END
BUTTON DLG_CANCEL 8 2 BUTTON DLG_CANCEL 10 2
BEGIN BEGIN
PROMPT -33 -1 "" PROMPT -33 -1 ""
MESSAGE EXIT,K_ESC MESSAGE EXIT,K_ESC
@ -71,7 +71,7 @@ END
STRING 107 7 STRING 107 7
BEGIN BEGIN
PROMPT 22 4 "Numero " PROMPT 22 4 "Numero "
FLAGS "UD" FLAGS "_UD"
END END
NUMBER 108 4 NUMBER 108 4
@ -130,9 +130,10 @@ END
CURRENCY 116 15 CURRENCY 116 15
BEGIN BEGIN
PROMPT 18 9 "" PROMPT 18 9 ""
PICTURE "."
END END
NUMBER 117 15 3 NUMBER 117 15
BEGIN BEGIN
PROMPT 40 9 "Importo in valuta " PROMPT 40 9 "Importo in valuta "
PICTURE ".3" PICTURE ".3"
@ -201,12 +202,12 @@ END
STRING 123 5 STRING 123 5
BEGIN BEGIN
PROMPT 1 13 "Codice agente " PROMPT 1 13 "Codice agente "
USE AGE USE LF_AGENTI
INPUT CODTAB 123 INPUT CODAGE 123
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODAGE
DISPLAY "Denominazione@50" S0 DISPLAY "Denominazione@50" RAGSOC
OUTPUT 123 CODTAB OUTPUT 123 CODAGE
FLAGS "U" FLAGS "UZ"
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
@ -221,4 +222,3 @@ BEGIN
END END
ENDPAGE ENDPAGE

View File

@ -1,18 +1,18 @@
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 8 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -13 -1 "~Conferma" PROMPT -13 -1 "~Conferma"
MESSAGE EXIT,K_SAVE MESSAGE EXIT,K_SAVE
END END
BUTTON DLG_DELREC 8 2 BUTTON DLG_DELREC 10 2
BEGIN BEGIN
PROMPT -23 -1 "~Elimina" PROMPT -23 -1 "~Elimina"
MESSAGE EXIT,K_DEL MESSAGE EXIT,K_DEL
END END
BUTTON DLG_CANCEL 8 2 BUTTON DLG_CANCEL 10 2
BEGIN BEGIN
PROMPT -33 -1 "" PROMPT -33 -1 ""
MESSAGE EXIT,K_ESC MESSAGE EXIT,K_ESC
@ -70,7 +70,7 @@ END
STRING 107 7 STRING 107 7
BEGIN BEGIN
PROMPT 28 4 "Numero " PROMPT 28 4 "Numero "
FLAGS "UD" FLAGS "_UD"
END END
NUMBER 110 4 NUMBER 110 4
@ -103,9 +103,10 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
CURRENCY 113 15 NUMBER 113 15
BEGIN BEGIN
PROMPT 20 8 "" PROMPT 20 8 ""
PICTURE "."
END END
STRING 114 1 STRING 114 1
@ -117,6 +118,7 @@ END
CURRENCY 115 15 CURRENCY 115 15
BEGIN BEGIN
PROMPT 20 9 "" PROMPT 20 9 ""
PICTURE "."
END END
STRING 116 1 STRING 116 1
@ -125,9 +127,10 @@ BEGIN
FLAGS "U" FLAGS "U"
END END
CURRENCY 117 15 NUMBER 117 15
BEGIN BEGIN
PROMPT 20 10 "" PROMPT 20 10 ""
PICTURE "."
END END
STRING 118 1 STRING 118 1
@ -139,6 +142,7 @@ END
CURRENCY 119 15 CURRENCY 119 15
BEGIN BEGIN
PROMPT 20 11 "" PROMPT 20 11 ""
PICTURE "."
END END
NUMBER 120 15 NUMBER 120 15
@ -248,12 +252,12 @@ END
STRING 130 5 STRING 130 5
BEGIN BEGIN
PROMPT 1 16 "Codice agente " PROMPT 1 16 "Codice agente "
USE AGE USE LF_AGENTI
INPUT CODTAB 130 INPUT CODAGE 130
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODAGE
DISPLAY "Denominazione@50" S0 DISPLAY "Denominazione@50" RAGSOC
OUTPUT 130 CODTAB OUTPUT 130 CODAGE
FLAGS "U" FLAGS "UZ"
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
@ -264,4 +268,3 @@ BEGIN
END END
ENDPAGE ENDPAGE

View File

@ -1094,7 +1094,9 @@ void TInv_cont::crea_record_controllo(TMask& m)
} }
const char* TInv_cont::cerca_provincia(const TString& comcf) const char* TInv_cont::cerca_provincia(const TString& comcf)
{ {
HIDDEN TString16 TEMP;
TLocalisamfile comuni(LF_COMUNI); TLocalisamfile comuni(LF_COMUNI);
comuni.setkey(1); comuni.setkey(1);

View File

@ -1682,7 +1682,7 @@ void TInv_cont::partita2trasfer(TString& record, bool crea_record_riferimento)
{ {
if (tipomov == 2) // Note di credito sia contabili che extracontabili if (tipomov == 2) // Note di credito sia contabili che extracontabili
{ {
str.format("%2s",(const char*) _cpg_nc); str.format("%-2s", (const char*) _cpg_nc);
record.overwrite(str,112); record.overwrite(str,112);
} }
int tipopag = _tpart->get_int (PART_TIPOPAG); int tipopag = _tpart->get_int (PART_TIPOPAG);

View File

@ -1,9 +1,9 @@
[cg] [cg]
Data = 08-05-1998 Data = 11-10-1999
Descrizione = Contabilita' Generale Descrizione = Contabilita' Generale
Dischi = 1 Dischi = 1
Moduli = ba Moduli = ba
Patch = 25 Patch = 640
PostProcess = bainst -0 CG PostProcess = bainst -0 CG
PreProcess = PreProcess =
Prezzo(1) = 1000,350 Prezzo(1) = 1000,350
@ -12,13 +12,13 @@ Prezzo(3) = 200,70
Prezzo(5) = 150,60 Prezzo(5) = 150,60
Prezzo(9) = 100,40 Prezzo(9) = 100,40
Prezzo(30) = 50,20 Prezzo(30) = 50,20
Versione = 19980103 Versione = 19980105
[cg0] [cg0]
File(0) = cg00.bmp File(0) = cg00.bmp
File(1) = cgarea.men File(1) = cgarea.men
Patch = 25 Patch = 640
Versione = 19980103 Versione = 19980105
[cg1] [cg1]
File(2) = ab0.exe File(2) = ab0.exe
@ -32,112 +32,83 @@ File(9) = batbcfi.rpt
File(10) = batbdel.msk File(10) = batbdel.msk
File(11) = batbdpn.msk File(11) = batbdpn.msk
File(12) = batbdpn.rpt File(12) = batbdpn.rpt
File(13) = batbind.msk File(13) = batbivd.msk
File(14) = batbinl.msk File(14) = batbivd.rpt
File(15) = batbins.msk File(15) = batblbu.msk
File(16) = batbivd.msk File(16) = batblia.msk
File(17) = batbivd.rpt File(17) = batbpdb.msk
File(18) = batblbu.msk File(18) = batbver.msk
File(19) = batblia.msk File(19) = batbver.rpt
File(20) = batbpdb.msk File(20) = cb0000.exe
File(21) = batbtra.msk File(21) = cg01.bmp
File(22) = batbver.msk File(22) = cg2.exe
File(23) = batbver.rpt File(23) = cg2100a.msk
File(24) = cb0000.exe File(24) = cg2100b.msk
File(25) = cg01.bmp File(25) = cg2100c.msk
File(26) = cg0500a.msk File(26) = cg2100i.msk
File(27) = cg2.exe|X File(27) = cg2100k.msk
File(28) = cg2100a.msk File(28) = cg2100n.msk
File(29) = cg2100b.msk File(29) = cg2100o.msk
File(30) = cg2100c.msk File(30) = cg2100p.msk
File(31) = cg2100i.msk File(31) = cg2100s.msk
File(32) = cg2100k.msk File(32) = cg2104a.msk
File(33) = cg2100n.msk File(33) = cg2200a.msk
File(34) = cg2100o.msk File(34) = cg3.exe
File(35) = cg2100p.msk File(35) = cg3100a.msk
File(36) = cg2100s.msk File(36) = cg3100b.msk
File(37) = cg2200a.msk File(37) = cg3200a.msk
File(38) = cg3.exe File(38) = cg3300.frm
File(39) = cg3100a.msk File(39) = cg3300a.msk
File(40) = cg3100b.msk File(40) = cg3300b.msk
File(41) = cg3100c.msk File(41) = cg3300c.msk
File(42) = cg3200a.msk File(42) = cg3400a.msk
File(43) = cg3300.frm File(43) = cg3400b.msk
File(44) = cg3300a.msk File(44) = cg3500a.msk
File(45) = cg3300b.msk File(45) = cg3600a.msk
File(46) = cg3300c.msk File(46) = cg3600b.msk
File(47) = cg3400a.msk File(47) = cg3700a.msk
File(48) = cg3400b.msk File(48) = cg4.exe
File(49) = cg3500a.msk File(49) = cg4100a.msk
File(50) = cg3600a.msk File(50) = cg4100b.msk
File(51) = cg3600b.msk File(51) = cg4200a.msk
File(52) = cg3700a.msk File(52) = cg4300a.msk
File(53) = cg4.exe File(53) = cg4300b.msk
File(54) = cg4100a.msk File(54) = cg4300c.msk
File(55) = cg4100b.msk File(55) = cg4400a.msk
File(56) = cg4200a.msk File(56) = cg4400b.msk
File(57) = cg4300a.msk File(57) = cg4500a.msk
File(58) = cg4300b.msk File(58) = cg4500b.msk
File(59) = cg4300c.msk File(59) = cg4600a.msk
File(60) = cg4400a.msk File(60) = cg4700a.msk
File(61) = cg4400b.msk File(61) = cg4800a.msk
File(62) = cg4500a.msk File(62) = cg4800b.msk
File(63) = cg4500b.msk File(63) = cg4900a.msk
File(64) = cg4600a.msk File(64) = cg4900b.msk
File(65) = cg4700a.msk File(65) = cg4900c.msk
File(66) = cg4800a.msk File(66) = cg4900d.msk
File(67) = cg4800b.msk File(67) = cg4a00a.msk
File(68) = cg4900a.msk File(68) = cg5.exe
File(69) = cg4900b.msk File(69) = cg5000a.msk
File(70) = cg4900c.msk File(70) = cg5100a.msk
File(71) = cg4900d.msk File(71) = cg5200a.msk
File(72) = cg5.exe File(72) = cg5300a.msk
File(73) = cg5000a.msk File(73) = cg5400a.msk
File(74) = cg5100a.msk File(74) = cg5400b.msk
File(75) = cg5200a.msk File(75) = cg5500a.msk
File(76) = cg5300a.msk File(76) = cg5500b.msk
File(77) = cg5400a.msk File(77) = cg5500c.msk
File(78) = cg5400b.msk File(78) = cg5500d.msk
File(79) = cg5500a.msk File(79) = cg5600a.msk
File(80) = cg5500b.msk File(80) = cg5700a.frm
File(81) = cg5500c.msk File(81) = cg5700a.msk
File(82) = cg5500d.msk File(82) = cg5700b.msk
File(83) = cg5600a.msk File(83) = dummy.ldb
File(84) = cg6.exe File(84) = dummy.mdb
File(85) = cg6400a.msk File(85) = pec.frm
File(86) = cg6400b.msk File(86) = trrice.exe
File(87) = cg6400c.msk File(87) = vcopia.exe
File(88) = cg6600a.msk Patch = 640
File(89) = cg6700a.msk Versione = 19980105
File(90) = cg6800a.msk
File(91) = cg6800b.msk
File(92) = cg6800c.msk
File(93) = cg6801a.msk
File(94) = cg6802a.msk
File(95) = cg6802b.msk
File(96) = cg6803a.msk
File(97) = cg6804a.msk
File(98) = cg6804b.msk
File(99) = cg6804c.msk
File(100) = cg6804d.msk
File(101) = cg6804e.msk
File(102) = cg6804f.msk
File(103) = cg6804g.msk
File(104) = cg6900a.msk
File(105) = cg6900b.msk
File(106) = cg6903a.msk
File(107) = cgaddon.men
File(108) = cgprassi.hlp
File(109) = cgprassi.men
File(110) = cgtrc.ini
File(111) = cgtrcpc.ini
File(112) = dummy.ldb
File(113) = dummy.mdb
File(114) = pec.frm
File(115) = trrice.exe
File(116) = vcopia.exe
Patch = 25
Versione = 19980103
[cg2] [cg2]
File(117) = recdesc\f103.dir File(117) = recdesc\f103.dir
@ -168,89 +139,145 @@ Patch = 25
Versione = 19980103 Versione = 19980103
[cg9] [cg9]
File(141) = bastcam.msk File(88) = bastcam.msk
File(142) = bastcco.msk File(89) = bastcco.msk
File(143) = bastcve.msk File(90) = bastcve.msk
File(144) = bastesc.msk File(91) = bastesc.msk
File(145) = bastleg.msk File(92) = bastleg.msk
File(146) = bastmag.msk File(93) = bastmsp.msk
File(147) = bastmsp.msk File(94) = bastndo.msk
File(148) = bastndo.msk File(95) = bastnot.msk
File(149) = bastnot.msk File(96) = bastpor.msk
File(150) = bastpor.msk File(97) = bastreg.msk
File(151) = bastreg.msk File(98) = bastscc.msk
File(152) = bastscc.msk File(99) = bastspp.msk
File(153) = bastspp.msk File(100) = basttit.msk
File(154) = basttit.msk File(101) = basttri.msk
File(155) = basttri.msk File(102) = bastums.msk
File(156) = bastums.msk File(103) = bastvet.msk
File(157) = bastvet.msk File(104) = bastzon.msk
File(158) = bastzon.msk File(105) = batbcam.msk
File(159) = batbcam.msk File(106) = batbcam.rpt
File(160) = batbcam.rpt File(107) = batbcco.msk
File(161) = batbcco.msk File(108) = batbcco.rpt
File(162) = batbcco.rpt File(109) = batbcve.msk
File(163) = batbcve.msk File(110) = batbcve.rpt
File(164) = batbcve.rpt File(111) = batbesc.msk
File(165) = batbesc.msk File(112) = batbesc.rpt
File(166) = batbesc.rpt File(113) = batbind.msk
File(167) = batbleg.msk File(114) = batbinl.msk
File(168) = batbleg.rpt File(115) = batbins.msk
File(169) = batbmsp.msk File(116) = batbleg.msk
File(170) = batbmsp.rpt File(117) = batbleg.rpt
File(171) = batbndo.msk File(118) = batbmsp.msk
File(172) = batbndo.rpt File(119) = batbmsp.rpt
File(173) = batbnot.msk File(120) = batbndo.msk
File(174) = batbnot.rpt File(121) = batbndo.rpt
File(175) = batbpor.msk File(122) = batbnot.msk
File(176) = batbpor.rpt File(123) = batbnot.rpt
File(177) = batbreg.msk File(124) = batbpor.msk
File(178) = batbreg.rpt File(125) = batbpor.rpt
File(179) = batbscc.msk File(126) = batbreg.msk
File(180) = batbscc.rpt File(127) = batbreg.rpt
File(181) = batbspp.msk File(128) = batbscc.msk
File(182) = batbspp.rpt File(129) = batbscc.rpt
File(183) = batbtit.msk File(130) = batbspp.msk
File(184) = batbtit.rpt File(131) = batbspp.rpt
File(185) = batbtri.msk File(132) = batbtit.msk
File(186) = batbtri.rpt File(133) = batbtit.rpt
File(187) = batbums.msk File(134) = batbtra.msk
File(188) = batbums.rpt File(135) = batbtri.msk
File(189) = batbvet.msk File(136) = batbtri.rpt
File(190) = batbvet.rpt File(137) = batbums.msk
File(191) = batbzon.msk File(138) = batbums.rpt
File(192) = batbzon.rpt File(139) = batbvet.msk
File(193) = cg0.exe|X File(140) = batbvet.rpt
File(194) = cg0100a.msk File(141) = batbzon.msk
File(195) = cg0200a.msk File(142) = batbzon.rpt
File(196) = cg0200b.msk File(143) = cg0.exe
File(197) = cg0300a.msk File(144) = cg0100a.msk
File(198) = cg0400a.msk File(145) = cg0200a.msk
File(199) = cg0400b.msk File(146) = cg0200b.msk
File(200) = cg1.exe File(147) = cg0400a.msk
File(201) = cg1100a.msk File(148) = cg0400b.msk
File(202) = cg1200a.msk File(149) = cg0500a.msk
File(203) = cg1200b.msk File(150) = cg1.exe
File(204) = cg1300a.msk File(151) = cg1100a.msk
File(205) = cg1300b.msk File(152) = cg1200a.msk
File(206) = cg1300c.msk File(153) = cg1200b.msk
File(207) = cg1300d.msk File(154) = cg1300a.msk
File(208) = cg1400a.msk File(155) = cg1300b.msk
File(209) = cg1500a.msk File(156) = cg1300c.msk
File(210) = cg1600a.msk File(157) = cg1300d.msk
File(211) = cg1700a.msk File(158) = cg1300e.msk
File(212) = recdesc\f16.dir File(159) = cg1400a.msk
File(213) = recdesc\f16.trr File(160) = cg1500a.msk
File(214) = recdesc\f17.dir File(161) = cg1600a.msk
File(215) = recdesc\f17.trr File(162) = cg1700a.msk
File(216) = recdesc\f18.dir File(163) = cg6.exe
File(217) = recdesc\f18.trr File(164) = cg6400a.msk
File(218) = recdesc\f19.dir File(165) = cg6400b.msk
File(219) = recdesc\f19.trr File(166) = cg6400c.msk
File(220) = recdesc\f20.dir File(167) = cg6600a.msk
File(221) = recdesc\f20.trr File(168) = cg6700a.msk
File(222) = recdesc\f78.dir File(169) = cg6800a.msk
File(223) = recdesc\f78.trr File(170) = cg6800b.msk
Patch = 25 File(171) = cg6800c.msk
Versione = 19980103 File(172) = cg6801a.msk
File(173) = cg6802a.msk
File(174) = cg6802b.msk
File(175) = cg6803a.msk
File(176) = cg6804a.msk
File(177) = cg6804b.msk
File(178) = cg6804c.msk
File(179) = cg6804d.msk
File(180) = cg6804e.msk
File(181) = cg6804f.msk
File(182) = cg6804g.msk
File(183) = cg6900a.msk
File(184) = cg6900b.msk
File(185) = cg6903a.msk
File(186) = cgaddon.men
File(187) = cgprassi.hlp
File(188) = cgprassi.men
File(189) = cgtrc.ini
File(190) = cgtrcpc.ini
File(191) = recdesc\f103.dir
File(192) = recdesc\f103.trr
File(193) = recdesc\f104.dir
File(194) = recdesc\f104.trr
File(195) = recdesc\f16.dir
File(196) = recdesc\f16.trr
File(197) = recdesc\f17.dir
File(198) = recdesc\f17.trr
File(199) = recdesc\f18.dir
File(200) = recdesc\f18.trr
File(201) = recdesc\f19.dir
File(202) = recdesc\f19.trr
File(203) = recdesc\f20.dir
File(204) = recdesc\f20.trr
File(205) = recdesc\f21.dir
File(206) = recdesc\f21.trr
File(207) = recdesc\f22.dir
File(208) = recdesc\f22.trr
File(209) = recdesc\f23.dir
File(210) = recdesc\f23.trr
File(211) = recdesc\f24.dir
File(212) = recdesc\f24.trr
File(213) = recdesc\f25.dir
File(214) = recdesc\f25.trr
File(215) = recdesc\f26.dir
File(216) = recdesc\f26.trr
File(217) = recdesc\f27.dir
File(218) = recdesc\f27.trr
File(219) = recdesc\f28.dir
File(220) = recdesc\f28.trr
File(221) = recdesc\f29.dir
File(222) = recdesc\f29.trr
File(223) = recdesc\f30.dir
File(224) = recdesc\f30.trr
File(225) = recdesc\f78.dir
File(226) = recdesc\f78.trr
Patch = 640
Versione = 19980105

View File

@ -459,11 +459,12 @@ TCodiceIVA::TCodiceIVA(const char* cod) : TRectype(LF_TABCOM)
bool TCodiceIVA::read(const char* cod) bool TCodiceIVA::read(const char* cod)
{ {
if (cod == NULL) if (cod && *cod)
cod = ""; *this = cache().get("%IVA", cod);
else
zero();
*this = cache().get("%IVA", cod); return !empty();
return !this->empty();
} }
real TCodiceIVA::imposta(const real & imponibile, int ndec, const char * codval) const real TCodiceIVA::imposta(const real & imponibile, int ndec, const char * codval) const

View File

@ -827,19 +827,25 @@ void TSaldo_agg::registra()
curr.put(PCN_GRUPPO, tcon.gruppo()); curr.put(PCN_GRUPPO, tcon.gruppo());
curr.put(PCN_CONTO, tcon.conto()); curr.put(PCN_CONTO, tcon.conto());
const int err = pcon.read(); const int err = pcon.read();
CHECK(err == NOERR, "Impossibile stabilire indicatore di bilancio"); if (err == NOERR)
const int indbil = curr.get_int(PCN_INDBIL);
if (indbil == 1 || indbil == 2 || indbil == 5)
{ {
TSaldo saldo; const int indbil = curr.get_int(PCN_INDBIL);
si = saldo.saldofin_esprec(annoes, tcon.gruppo(), tcon.conto(), tcon.sottoconto()); if (indbil == 1 || indbil == 2 || indbil == 5)
if (si < ZERO)
{ {
flag_salini = 'A'; si = -si; TSaldo saldo;
} si = saldo.saldofin_esprec(annoes, tcon.gruppo(), tcon.conto(), tcon.sottoconto());
else if (si < ZERO)
flag_salini = 'D'; {
} flag_salini = 'A'; si = -si;
}
else
flag_salini = 'D';
}
}
else
{
// Era errore fatale
}
} }
TImporto sf(flag_salini, si); TImporto sf(flag_salini, si);

View File

@ -12,6 +12,7 @@
#include "cglib01.h" #include "cglib01.h"
#include "cglib04.h" #include "cglib04.h"
#include "cgsaldac.h"
const int size = 256; //Lunghezza del record del TRASFER const int size = 256; //Lunghezza del record del TRASFER
const int sizeH = 1024; //Lunghezza del record dell'HEADER const int sizeH = 1024; //Lunghezza del record dell'HEADER
@ -23,6 +24,7 @@ const int RIC_SIZE = 512;
HIDDEN char _isam_string[RIC_SIZE]; HIDDEN char _isam_string[RIC_SIZE];
HIDDEN char __dep[LEN_REC_HEAD]; HIDDEN char __dep[LEN_REC_HEAD];
HIDDEN TString TEMP;
//ritorna falso se la causale non e' significativa //ritorna falso se la causale non e' significativa
bool look_causale (const char* codcaus) bool look_causale (const char* codcaus)
@ -92,9 +94,9 @@ HIDDEN void __getfieldbuff(int l, int t, const char* recin, char *s)
if (*s) if (*s)
{ {
if (t == _datefld) if (t == _datefld)
{ {
const TDate dt(atol(s)); const TDate dt(atol(s));
strcpy(s, dt.string(full)); strcpy(s, dt.string(full));
} else } else
if (t == _boolfld) if (t == _boolfld)
{ {
@ -316,7 +318,8 @@ const char* TTransfer_file::record() const
return __dep; return __dep;
} }
TTransfer_file::TTransfer_file(char scelta) TTransfer_file::TTransfer_file(char scelta)
: _comuni2(LF_COMUNI, 2)
{ {
_trasfer = NULL; _trasfer = NULL;
_tot_rec = 0L; _tot_rec = 0L;
@ -328,7 +331,10 @@ TTransfer_file::TTransfer_file(char scelta)
if (scelta == 'S') if (scelta == 'S')
_trc.leggi_modulo(tracciato_AS); _trc.leggi_modulo(tracciato_AS);
else else
_trc.leggi_modulo(tracciato_PC); if (scelta == 'P')
_trc.leggi_modulo(tracciato_PC);
_tpcon = NULL;
_npoccas = 0L; _npoccas = 0L;
} }
@ -802,17 +808,12 @@ else
{ {
TToken_string * data = (TToken_string *) _trc.objptr(key); TToken_string * data = (TToken_string *) _trc.objptr(key);
pos_campo = data->get_int(2);
// NB // NB
// Nel tracciato parto da 1 (per compatibilita'), // Nel tracciato parto da 1 (per compatibilita'),
// la fseek() conta da 0 // la fseek() conta da 0
pos_campo -= 1; pos_campo = data->get_int(2) - 1;
if (seek) if (seek)
{
//pos_campo -= 1;
fseek(_trasfer,pos_campo,SEEK_CUR); fseek(_trasfer,pos_campo,SEEK_CUR);
}
} }
return pos_campo; return pos_campo;
} }
@ -957,8 +958,8 @@ char TTransfer_file::TipoConto(int g, int c)
if (g != 0 && c != 0) if (g != 0 && c != 0)
{ {
/*
TLocalisamfile pcon (LF_PCON); TLocalisamfile pcon (LF_PCON);
pcon.setkey(1); pcon.setkey(1);
pcon.zero(); pcon.zero();
pcon.put(PCN_GRUPPO, g); pcon.put(PCN_GRUPPO, g);
@ -966,7 +967,12 @@ char TTransfer_file::TipoConto(int g, int c)
pcon.put(PCN_SOTTOCONTO, 0l); pcon.put(PCN_SOTTOCONTO, 0l);
if (pcon.read() == NOERR) if (pcon.read() == NOERR)
tipo = pcon.get_char(PCN_TMCF); tipo = pcon.get_char(PCN_TMCF);
else // Se non lo trova sul piano dei conti standard, prova su quello temporaneo */
TString16 gcs; gcs.format("%d|%d|0", g, c);
tipo = cache().get(LF_PCON, gcs).get_char(PCN_TMCF);
if (tipo <= ' ') // Se non lo trova sul piano dei conti standard, prova su quello temporaneo
{
if (_tpcon != NULL) // Valido solo se si sta trasferendo anche il piano dei conti if (_tpcon != NULL) // Valido solo se si sta trasferendo anche il piano dei conti
{ {
_tpcon->put(PCN_GRUPPO, g); _tpcon->put(PCN_GRUPPO, g);
@ -975,9 +981,10 @@ char TTransfer_file::TipoConto(int g, int c)
if (_tpcon->read() == NOERR) if (_tpcon->read() == NOERR)
tipo = _tpcon->get_char(PCN_TMCF); tipo = _tpcon->get_char(PCN_TMCF);
} }
}
} }
if (tipo == '\0') if (tipo < ' ')
tipo = ' '; tipo = ' ';
return tipo; return tipo;
} }
@ -1024,7 +1031,7 @@ const char* TTransfer_file::numero_civico(TString& indirizzo)
const char* TTransfer_file::cerca_comune_cap(TString& field, const TString& localita) const char* TTransfer_file::cerca_comune_cap(TString& field, const TString& localita)
{ {
TLocalisamfile comuni (LF_COMUNI); TLocalisamfile comuni (LF_COMUNI);
TString cap = field; TString16 cap = field;
bool trovato = FALSE; bool trovato = FALSE;
bool prima_volta = TRUE; bool prima_volta = TRUE;
@ -1072,9 +1079,9 @@ const char* TTransfer_file::cerca_comune_cap(TString& field, const TString& loca
} }
const char* TTransfer_file::cerca_cap_comune(const TString& localita) const char* TTransfer_file::cerca_cap_comune(const TString& localita)
{ {
/*
TLocalisamfile comuni (LF_COMUNI); TLocalisamfile comuni (LF_COMUNI);
comuni.setkey(2); comuni.setkey(2);
comuni.zero(); comuni.zero();
comuni.put(COM_DENCOM, localita); comuni.put(COM_DENCOM, localita);
@ -1082,14 +1089,16 @@ const char* TTransfer_file::cerca_cap_comune(const TString& localita)
TEMP = comuni.get(COM_CAPCOM); TEMP = comuni.get(COM_CAPCOM);
else else
TEMP = ""; TEMP = "";
return TEMP; return TEMP;
*/
const TRectype& rec = _comuni2.get(localita);
return rec.get(COM_CAPCOM);
} }
const char* TTransfer_file::cerca_comune_den(TString& field) const char* TTransfer_file::cerca_comune_den(const TString& field)
{ {
/*
TLocalisamfile comuni (LF_COMUNI); TLocalisamfile comuni (LF_COMUNI);
comuni.setkey(2); comuni.setkey(2);
comuni.zero(); comuni.zero();
comuni.put(COM_DENCOM, field); comuni.put(COM_DENCOM, field);
@ -1097,13 +1106,16 @@ const char* TTransfer_file::cerca_comune_den(TString& field)
TEMP = comuni.get(COM_COM); TEMP = comuni.get(COM_COM);
else else
TEMP = ""; TEMP = "";
return TEMP; return TEMP;
*/
const TRectype& rec = _comuni2.get(field);
return rec.get(COM_COM);
} }
void TTransfer_file::write_tmp_tabelle(TString& record, bool create) void TTransfer_file::write_tmp_tabelle(TString& record, bool create)
{ {
TString sigla,key,str,numero,comune; TString16 sigla,key,cap;
int numfield = 2; //Per le tabelle il primo campo della mappa non e' significativo int numfield = 2; //Per le tabelle il primo campo della mappa non e' significativo
//ai fini del trasferimento (flag di record gia trasferito). //ai fini del trasferimento (flag di record gia trasferito).
TMappa_trc& trc = mappa(); TMappa_trc& trc = mappa();
@ -1112,9 +1124,6 @@ void TTransfer_file::write_tmp_tabelle(TString& record, bool create)
int logicnum; int logicnum;
int campi_righe = 0; int campi_righe = 0;
int num_riga = 1; int num_riga = 1;
TToken_string data;
TString cap = "";
TString tmp_path;
sigla = record.mid(0,2); sigla = record.mid(0,2);
key.format("%2s%d", (const char*)sigla,numfield); key.format("%2s%d", (const char*)sigla,numfield);
@ -1133,10 +1142,11 @@ void TTransfer_file::write_tmp_tabelle(TString& record, bool create)
{ {
_prog->addstatus(1); _prog->addstatus(1);
trasfer_data_tab(*file, *dep); trasfer_data_tab(*file, *dep);
delete file; delete file; file = NULL;
delete dep; delete dep; dep = NULL;
} }
TFilename tmp_path;
if (sigla == "W1") if (sigla == "W1")
{ {
if (logicnum == LF_CAUSALI) if (logicnum == LF_CAUSALI)
@ -1164,16 +1174,13 @@ void TTransfer_file::write_tmp_tabelle(TString& record, bool create)
if (campi_righe == CAMPI_RCAUS) if (campi_righe == CAMPI_RCAUS)
{ {
TString16 gruppo(dep->get("GRUPPO"));
//
// scarta le righe non significative // scarta le righe non significative
// -------------------- NB ----------------------- // -------------------- NB -----------------------
// supponiamo il GRUPPO INDISPENSABILE !!!!!!!!!!!!! // supponiamo il GRUPPO INDISPENSABILE !!!!!!!!!!!!!
// //
if (gruppo.not_empty()) if (dep->get("GRUPPO").not_empty())
{ {
dep->put("NRIGA", num_riga++); dep->put("NRIGA", num_riga++);
trasfer_data_tab(*file, *dep); trasfer_data_tab(*file, *dep);
} }
else else
@ -1185,7 +1192,7 @@ void TTransfer_file::write_tmp_tabelle(TString& record, bool create)
int from = trc.from(key); int from = trc.from(key);
int to = trc.to(key); int to = trc.to(key);
TString fname = trc.field_name(key); TString16 fname = trc.field_name(key);
int flag = trc.flag(key); int flag = trc.flag(key);
TString field = record.sub(from-1,to); TString field = record.sub(from-1,to);
@ -1271,8 +1278,8 @@ void TTransfer_file::write_tmp_tabelle(TString& record, bool create)
//alfanumerico di 4 trattato con il flag Z. Dunque in ricezione se si tratta //alfanumerico di 4 trattato con il flag Z. Dunque in ricezione se si tratta
//di un numero va riempito con degli 0. Se si tratta di un alfa va allineato a destra. //di un numero va riempito con degli 0. Se si tratta di un alfa va allineato a destra.
if (fname == "CODPAG") if (fname == "CODPAG")
{ {
TString f = field; TString16 f = field;
//if (real::is_natural(f)) //if (real::is_natural(f))
// field.format("%04s", (const char*) f); // field.format("%04s", (const char*) f);
//else //else
@ -1284,7 +1291,7 @@ void TTransfer_file::write_tmp_tabelle(TString& record, bool create)
field = field.rtrim(); field = field.rtrim();
if (field != "") if (field != "")
{ {
numero = numero_civico(field); const char* numero = numero_civico(field);
dep->put(CLI_CIVCF, (const char*)numero); dep->put(CLI_CIVCF, (const char*)numero);
} }
} }
@ -1299,7 +1306,7 @@ void TTransfer_file::write_tmp_tabelle(TString& record, bool create)
if (fname == "LOCALITACF") if (fname == "LOCALITACF")
{ {
comune = ""; TString80 comune;
if (cap.not_empty()) if (cap.not_empty())
comune = cerca_comune_cap(cap,field); comune = cerca_comune_cap(cap,field);
@ -1559,191 +1566,191 @@ void TTransfer_file::write_tmp_movPN(TString& record)
int solo_sezionale = atoi(record.mid(218,1)); int solo_sezionale = atoi(record.mid(218,1));
if (solo_sezionale != 1) if (solo_sezionale != 1)
{ {
sigla = record.mid(0,2); sigla = record.mid(0,2);
key.format("%2s%d", (const char*)sigla,numfield); key.format("%2s%d", (const char*)sigla,numfield);
if (trc.is_key((const char *) key))
{
int logicnum_p = 0;
_numreg = atol(record.sub(2,8));
if (_numreg == _numreg_p) if (trc.is_key((const char *) key))
{ {
numfield = fnrmov; int logicnum_p = 0;
key.format("%2s%d", (const char*)sigla,numfield);
} _numreg = atol(record.sub(2,8));
_annoes = annoes_datacomp(record,datacomp);
_numreg_p = _numreg;
do
{
logicnum = trc.logicnum(key);
if (logicnum != logicnum_p)
{
if (logicnum_p)
{
trasfer_data_mov(*file, *dep);
delete file;
delete dep;
}
if (sigla == "Z1")
{
if (logicnum == LF_MOV)
tmp_path = _tmpmov;
else
tmp_path = _tmprmov;
}
file = new TIsamtempfile(logicnum, tmp_path, create); if (_numreg == _numreg_p)
dep = new TRectype (logicnum); {
dep->zero(); numfield = fnrmov;
key.format("%2s%d", (const char*)sigla,numfield);
logicnum_p = logicnum;
}
int from = trc.from(key);
int to = trc.to(key);
TString fname = trc.field_name(key);
TString field = record.sub(from-1,to);
int flag = trc.flag(key);
int dec = trc.flag_bis(key);
TRecfield campo (*dep,fname);
if (campo.type() == _realfld)
negativo(field);
if (flag == 3)
{
if (dec > 0)
decimali(field,dec);
real appoggio (field);
field = appoggio.string();
} }
if (logicnum == LF_MOV)
{
if (fname == "REG")
{
if (real::is_natural(field))
field.format("%03s", (const char*) field);
else
field.format("%-3s", (const char*) field);
}
//Il codice pagamento su AS400 e' un alfanumerico di due, mentre su PC e' un
//alfanumerico di 4 trattato con il flag Z. Dunque in ricezione se si tratta
//di un numero va riempito con degli 0. Se si tratta di un alfa va allineato a destra.
if (fname == "CODPAG")
{
TString f = field;
//if (real::is_natural(f))
// field.format("%04s", (const char*) f);
//else
field.format("%-4s", (const char*) f);
}
if (fname == "CODCAUS") _annoes = annoes_datacomp(record,datacomp);
_numreg_p = _numreg;
do
{
logicnum = trc.logicnum(key);
if (logicnum != logicnum_p)
{ {
if (field == "000") if (logicnum_p)
field = "";
int nr = atoi(record.sub(8,10));
if (nr == 1)
{ {
TString descr = record.sub(44,74); trasfer_data_mov(*file, *dep);
dep->put(RMV_DESCR, descr); // Descrizione della prima riga riportata sulla testata delete file;
delete dep;
} }
}
if (sigla == "Z1")
{
if (logicnum == LF_MOV)
tmp_path = _tmpmov;
else
tmp_path = _tmprmov;
}
file = new TIsamtempfile(logicnum, tmp_path, create);
dep = new TRectype (logicnum);
dep->zero();
logicnum_p = logicnum;
}
if (fname == "TIPODOC") int from = trc.from(key);
tipodoc = field; int to = trc.to(key);
} TString fname = trc.field_name(key);
TString field = record.sub(from-1,to);
if (fname == "IMPORTO") int flag = trc.flag(key);
{ int dec = trc.flag_bis(key);
real imp = real::ita2eng(field);
importo = imp; TRecfield campo (*dep,fname);
} if (campo.type() == _realfld)
negativo(field);
if (logicnum == LF_RMOV)
{ if (flag == 3)
if (fname == "NUMRIG") {
{ if (dec > 0)
int nriga = atoi(field); decimali(field,dec);
field.format("%3d", nriga);
} real appoggio (field);
if (fname == "GRUPPO" || fname == "GRUPPOC") field = appoggio.string();
{
int gruppo = atoi(field);
field.format("%3d", gruppo);
}
if (fname == "CONTO" || fname == "CONTOC")
{
int conto = atoi(field);
field.format("%3d", conto);
}
if (fname == "SOTTOCONTO" || fname == "SOTTOCONTC")
{
long sottoc = atol(field);
field.format("%6ld", sottoc);
} }
}
if (logicnum == LF_MOV)
if (logicnum == LF_MOV && (fname == "NUMREG" || flag == 2) )
{
if (fname == "NUMREG")
{ {
dep->put(MOV_ANNOES, _annoes); if (fname == "REG")
dep->put(MOV_NUMREG, _numreg); {
dep->put(MOV_DATAREG, _datareg); if (real::is_natural(field))
dep->put(MOV_DATACOMP, datacomp); field.format("%03s", (const char*) field);
int annoiva = _datareg.year(); else
dep->put(MOV_ANNOIVA, annoiva); field.format("%-3s", (const char*) field);
} }
if (flag == 2)
{ //Il codice pagamento su AS400 e' un alfanumerico di due, mentre su PC e' un
TString f = converti(field,FALSE); //alfanumerico di 4 trattato con il flag Z. Dunque in ricezione se si tratta
dep->put(fname,f); //di un numero va riempito con degli 0. Se si tratta di un alfa va allineato a destra.
} if (fname == "CODPAG")
} {
else TString f = field;
if (logicnum == LF_RMOV && (fname == "NUMREG" || fname == "NUMRIG") ) //if (real::is_natural(f))
{ // field.format("%04s", (const char*) f);
if (fname == "NUMREG") //else
{ field.format("%-4s", (const char*) f);
dep->put(RMV_ANNOES, _annoes);
dep->put(RMV_NUMREG, _numreg);
} }
if (fname == "CODCAUS")
{
if (field == "000")
field = "";
int nr = atoi(record.sub(8,10));
if (nr == 1)
{
TString descr = record.sub(44,74);
dep->put(RMV_DESCR, descr); // Descrizione della prima riga riportata sulla testata
}
}
if (fname == "TIPODOC")
tipodoc = field;
}
if (fname == "IMPORTO")
{
real imp = real::ita2eng(field);
importo = imp;
}
if (logicnum == LF_RMOV)
{
if (fname == "NUMRIG") if (fname == "NUMRIG")
{ {
dep->put(RMV_NUMRIG, field); int nriga = atoi(field);
dep->put(RMV_DATAREG, _datareg); field.format("%3d", nriga);
} }
if (fname == "GRUPPO" || fname == "GRUPPOC")
{
int gruppo = atoi(field);
field.format("%3d", gruppo);
}
if (fname == "CONTO" || fname == "CONTOC")
{
int conto = atoi(field);
field.format("%3d", conto);
}
if (fname == "SOTTOCONTO" || fname == "SOTTOCONTC")
{
long sottoc = atol(field);
field.format("%6ld", sottoc);
}
} }
else
dep->put(fname, field);
numfield++;
key.format("%2s%d", (const char*) sigla,numfield);
}
while (trc.is_key((const char*) key));
_prog->addstatus(1);
if (importo != ZERO)
trasfer_data_mov(*file, *dep);
if (create)
create = FALSE; // I files (mov e rmov) vanno creati la prima volta che si tenta di scrivere un record su di essi
delete file; if (logicnum == LF_MOV && (fname == "NUMREG" || flag == 2) )
delete dep; {
} // if (trc.is_key((const char*) key)) if (fname == "NUMREG")
{
dep->put(MOV_ANNOES, _annoes);
dep->put(MOV_NUMREG, _numreg);
dep->put(MOV_DATAREG, _datareg);
dep->put(MOV_DATACOMP, datacomp);
int annoiva = _datareg.year();
dep->put(MOV_ANNOIVA, annoiva);
}
if (flag == 2)
{
TString f = converti(field,FALSE);
dep->put(fname,f);
}
}
else
if (logicnum == LF_RMOV && (fname == "NUMREG" || fname == "NUMRIG") )
{
if (fname == "NUMREG")
{
dep->put(RMV_ANNOES, _annoes);
dep->put(RMV_NUMREG, _numreg);
}
if (fname == "NUMRIG")
{
dep->put(RMV_NUMRIG, field);
dep->put(RMV_DATAREG, _datareg);
}
}
else
dep->put(fname, field);
numfield++;
key.format("%2s%d", (const char*) sigla,numfield);
}
while (trc.is_key((const char*) key));
_prog->addstatus(1);
if (importo != ZERO)
trasfer_data_mov(*file, *dep);
if (create)
create = FALSE; // I files (mov e rmov) vanno creati la prima volta che si tenta di scrivere un record su di essi
delete file;
delete dep;
} // if (trc.is_key((const char*) key))
} // if (solo_sezionale != 1) } // if (solo_sezionale != 1)
} }
@ -1790,19 +1797,6 @@ int TTransfer_file::cerca_annoes(long numreg,TString& tipodoc)
return anno; return anno;
} }
/*void TTransfer_file::ricerca_comune(const TString& com)
{
TLocalisamfile comuni (LF_COMUNI);
comuni.setkey(2);
comuni.zero();
comuni.put(COM_DENCOM, com);
if (comuni.read() == NOERR)
_cod_com = comuni.get(COM_COM);
else
_cod_com = "";
}*/
const char* TTransfer_file::scrivi_occasionali(const TString& record) const char* TTransfer_file::scrivi_occasionali(const TString& record)
{ {
TString cfpi,ragsoc,ind,com,cap,app,civ; TString cfpi,ragsoc,ind,com,cap,app,civ;
@ -2106,7 +2100,7 @@ void TTransfer_file::write_tmp_movSC(TString& record)
_numrigSC = atoi(record.sub(8,10)); _numrigSC = atoi(record.sub(8,10));
TString app (record.sub(26,28)); TString app (record.sub(26,28));
int anno = atoi(app); int anno = atoi(app);
if (anno <= 25) if (anno < 80)
annostr = "20"; annostr = "20";
else else
annostr = "19"; annostr = "19";
@ -2300,7 +2294,7 @@ void TTransfer_file::partita(TString& record)
{ {
TString app = field; TString app = field;
int anno = atoi(field); int anno = atoi(field);
if (anno <= 25) if (anno < 80)
{ {
field = "20"; field = "20";
field << app; field << app;
@ -2480,7 +2474,7 @@ void TTransfer_file::scadenza(TString& record)
{ {
TString app = field; TString app = field;
int anno = atoi(field); int anno = atoi(field);
if (anno <= 25) if (anno < 80)
{ {
field = "20"; field = "20";
field << app; field << app;
@ -2552,7 +2546,7 @@ void TTransfer_file::scadenza(TString& record)
_SCAnumrig = atoi(record.sub(8,10)); _SCAnumrig = atoi(record.sub(8,10));
TString app (record.sub(26,28)); TString app (record.sub(26,28));
int anno = atoi(app); int anno = atoi(app);
if (anno <= 25) if (anno < 80)
annostr = "20"; annostr = "20";
else else
annostr = "19"; annostr = "19";
@ -2869,7 +2863,7 @@ void TTransfer_file::pagsca(TString& record)
{ {
TString app = field; TString app = field;
int anno = atoi(field); int anno = atoi(field);
if (anno <= 25) if (anno < 80)
{ {
field = "20"; field = "20";
field << app; field << app;
@ -3054,12 +3048,11 @@ void TTransfer_file::new_key(TString& key, int tipo, TString& buffer)
//in un file con record odinati in modo sequenziale //in un file con record odinati in modo sequenziale
bool TTransfer_file::ordina_trasfer(const char* orig) bool TTransfer_file::ordina_trasfer(const char* orig)
{ {
const char* const rflag = "rb";
open(orig); open(orig);
FILE* i = fopen(orig, rflag); FILE* i = fopen(orig, "rb");
if (!i) return error_box("Impossibile leggere il file %s", orig); if (i == NULL)
return error_box("Impossibile leggere il file %s", orig);
long dim_t = determina_dimensione(i); //Determina la dimensione del trasfer long dim_t = determina_dimensione(i); //Determina la dimensione del trasfer
@ -3068,19 +3061,21 @@ bool TTransfer_file::ordina_trasfer(const char* orig)
int pos = 0; int pos = 0;
TString80 tmptab = "%"; TFilename tmptab = "%";
const long ditta = prefix().get_codditta(); const long ditta = prefix().get_codditta();
tmptab << firm2dir(ditta); tmptab << firm2dir(ditta);
tmptab << "\\" << TEMP_TAB; tmptab.add(TEMP_TAB);
_ttab = new TIsamtempfile(LF_TAB, tmptab, TRUE); _ttab = new TIsamtempfile(LF_TAB, tmptab, TRUE);
long cicli = dim_t / size; long cicli = dim_t / size;
TProgind prog (cicli,"Ordinamento file TRASFER in corso\nPrego attendere",FALSE, TRUE, 1); TProgind prog (cicli,"Ordinamento file TRASFER in corso\nPrego attendere",FALSE, TRUE);
bool ok = TRUE; bool ok = TRUE;
TRic_recfield recf (_ttab->curr(), "S0", 0, size); TRic_recfield recf (_ttab->curr(), "S0", 0, size);
TString80 key;
TString16 app;
while (ok) while (ok)
{ {
@ -3100,14 +3095,13 @@ bool TTransfer_file::ordina_trasfer(const char* orig)
prog.addstatus(1); prog.addstatus(1);
TString key = buffer.mid(0,15); key = buffer.mid(0,15);
if (buffer.mid(0,2) == "B1") if (buffer.mid(0,2) == "B1")
{ {
TString app; // Modifica del 06-09-96 relativa all'allineamento app = buffer.mid(28,7); // Modifica del 06-09-96 relativa all'allineamento
app = buffer.mid(28,7);
app.trim(); // del numero di riferimento partita che per i file app.trim(); // del numero di riferimento partita che per i file
app.format("%-7s", (const char*) app); // temporanei deve essere sempre a sinistra app.format("%-7s", (const char*)app); // temporanei deve essere sempre a sinistra
buffer.overwrite(app,28); // indipendentemente da quello che c'e' sul trasfer buffer.overwrite(app,28); // indipendentemente da quello che c'e' sul trasfer
int tipomov = atoi(buffer.mid(37,1)); int tipomov = atoi(buffer.mid(37,1));
@ -3119,10 +3113,12 @@ bool TTransfer_file::ordina_trasfer(const char* orig)
recf = buffer; recf = buffer;
int rc = _ttab->write(); int rc = _ttab->write();
/*
#ifdef DBG #ifdef DBG
if (rc != NOERR) error_box("ERRORE. Per qualche motivo la write e' fallita!!! Errore n. %d",rc ); if (rc != NOERR)
error_box("ERRORE. Per qualche motivo la write e' fallita!!! Errore n. %d",rc );
#endif #endif
*/
} }
fclose(i); fclose(i);
@ -3139,7 +3135,7 @@ bool TTransfer_file::fcopytemp(const char* orig, const char* dest)
bool is_delete = FALSE, tpcon_valid = FALSE; bool is_delete = FALSE, tpcon_valid = FALSE;
const char* const rflag = "rb"; const char* const rflag = "rb";
const char* const wflag = "ab"; const char* wflag = "ab";
TLocalisamfile tabella(LF_TAB); TLocalisamfile tabella(LF_TAB);
@ -3159,17 +3155,17 @@ bool TTransfer_file::fcopytemp(const char* orig, const char* dest)
{ {
_tmpcaus = "%"; _tmpcaus = "%";
_tmpcaus << path(); _tmpcaus << path();
_tmpcaus << "\\" << TEMP_CAUS; _tmpcaus << SLASH << TEMP_CAUS;
_tmprcaus = "%"; _tmprcaus = "%";
_tmprcaus << path(); _tmprcaus << path();
_tmprcaus << "\\" << TEMP_RCAUS; _tmprcaus << SLASH << TEMP_RCAUS;
nrec_cau = atol(nrec.mid(pos*6,6)); nrec_cau = atol(nrec.mid(pos*6,6));
} }
if ( (pos = sigle.find('A')) >= 0) if ( (pos = sigle.find('A')) >= 0)
{ {
_tmpclifo = "%"; _tmpclifo = "%";
_tmpclifo << path(); _tmpclifo << path();
_tmpclifo << "\\" << TEMP_CLIFO; _tmpclifo << SLASH << TEMP_CLIFO;
nrec_clifo = atol(nrec.mid(pos*6,6)); nrec_clifo = atol(nrec.mid(pos*6,6));
} }
if ( (pos = sigle.find('P')) >= 0) if ( (pos = sigle.find('P')) >= 0)
@ -3178,17 +3174,17 @@ bool TTransfer_file::fcopytemp(const char* orig, const char* dest)
_tmppcon = "%"; _tmppcon = "%";
_tmppcon << path(); _tmppcon << path();
_tmppcon << "\\" << TEMP_PCON; _tmppcon << SLASH << TEMP_PCON;
nrec_pcon = atol(nrec.mid(pos*6,6)); nrec_pcon = atol(nrec.mid(pos*6,6));
} }
if ( (pos = sigle.find('Z')) >= 0) if ( (pos = sigle.find('Z')) >= 0)
{ {
_tmpmov = "%"; _tmpmov = "%";
_tmpmov << path(); _tmpmov << path();
_tmpmov << "\\" << TEMP_MOV; _tmpmov << SLASH << TEMP_MOV;
_tmprmov = "%"; _tmprmov = "%";
_tmprmov << path(); _tmprmov << path();
_tmprmov << "\\" << TEMP_RMOV; _tmprmov << SLASH << TEMP_RMOV;
nrec_mov = atol(nrec.mid(pos*6,6)); nrec_mov = atol(nrec.mid(pos*6,6));
} }
if ( (pos = sigle.find('U')) >= 0) if ( (pos = sigle.find('U')) >= 0)
@ -3196,18 +3192,16 @@ bool TTransfer_file::fcopytemp(const char* orig, const char* dest)
is_delete = TRUE; is_delete = TRUE;
_tmpmov = "%"; _tmpmov = "%";
_tmpmov << path(); _tmpmov << path();
_tmpmov << "\\" << TEMP_MOV; _tmpmov.add(TEMP_MOV);
_tmprmoviva = "%"; _tmprmoviva = "%";
_tmprmoviva << path(); _tmprmoviva << path();
_tmprmoviva << "\\" << TEMP_RMOVIVA; _tmprmoviva.add(TEMP_RMOVIVA);
nrec_moviva = atol(nrec.mid(pos*6,6)); nrec_moviva = atol(nrec.mid(pos*6,6));
TString80 tmpocc = "%"; TFilename tmpocc = "%";
tmpocc << path();
const long ditta = prefix().get_codditta(); tmpocc.add(TEMP_OCC);
tmpocc << firm2dir(ditta);
tmpocc << "\\" << TEMP_OCC;
_toccas = new TIsamtempfile(LF_OCCAS, tmpocc, TRUE); _toccas = new TIsamtempfile(LF_OCCAS, tmpocc, TRUE);
} }
if ( (pos = sigle.find('B')) >= 0) if ( (pos = sigle.find('B')) >= 0)
@ -3261,12 +3255,19 @@ bool TTransfer_file::fcopytemp(const char* orig, const char* dest)
scrivi_SC(nrec_salda); scrivi_SC(nrec_salda);
if (is_delete) if (is_delete)
{
delete _toccas; delete _toccas;
_toccas = NULL;
}
if (tpcon_valid) if (tpcon_valid)
{
delete _tpcon; delete _tpcon;
_tpcon = NULL;
}
delete _ttab; delete _ttab;
_ttab = NULL;
return ok; return ok;
} }
@ -3361,7 +3362,7 @@ void TTransfer_file::scrivi_header(const char* dest, const char* wflag)
app1.insert(str,15); app1.insert(str,15);
app1.insert("0",70); app1.insert("0",70);
int pre = atoi(app1.sub(78,80)); int pre = atoi(app1.sub(78,80));
if (pre <= 25) if (pre < 80)
app1.insert("20",78); app1.insert("20",78);
else else
app1.insert("19",78); app1.insert("19",78);
@ -3603,20 +3604,19 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest)
{ {
_tmpmov = "%"; _tmpmov = "%";
_tmpmov << path(); _tmpmov << path();
_tmpmov << "\\" << TEMP_MOV; _tmpmov.add(TEMP_MOV);
_tmprmov = "%"; _tmprmov = "%";
_tmprmov << path(); _tmprmov << path();
_tmprmov << "\\" << TEMP_RMOV; _tmprmov.add(TEMP_RMOV);
_tmov = new TIsamtempfile(LF_MOV, _tmpmov, TRUE); _tmov = new TIsamtempfile(LF_MOV, _tmpmov, TRUE);
_depmov = new TRectype (LF_MOV); _depmov = new TRectype (LF_MOV);
_trmov = new TIsamtempfile(LF_RMOV, _tmprmov, TRUE); _trmov = new TIsamtempfile(LF_RMOV, _tmprmov, TRUE);
_deprmov = new TRectype (LF_RMOV); _deprmov = new TRectype (LF_RMOV);
TString80 tmpocc = "%"; TFilename tmpocc = "%";
const long ditta = prefix().get_codditta(); const long ditta = prefix().get_codditta();
tmpocc << firm2dir(ditta); tmpocc << firm2dir(ditta);
tmpocc << "\\" << TEMP_OCC; tmpocc.add(TEMP_OCC);
_toccas = new TIsamtempfile(LF_OCCAS, tmpocc, TRUE); _toccas = new TIsamtempfile(LF_OCCAS, tmpocc, TRUE);
_depoccas = new TRectype (LF_OCCAS); _depoccas = new TRectype (LF_OCCAS);
} }
@ -3626,10 +3626,10 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest)
_tmpmov = "%"; _tmpmov = "%";
_tmpmov << path(); _tmpmov << path();
_tmpmov << "\\" << TEMP_MOV; _tmpmov.add(TEMP_MOV);
_tmprmoviva = "%"; _tmprmoviva = "%";
_tmprmoviva << path(); _tmprmoviva << path();
_tmprmoviva << "\\" << TEMP_RMOVIVA; _tmprmoviva.add(TEMP_RMOVIVA);
_triva = new TIsamtempfile(LF_RMOVIVA, _tmprmoviva, TRUE); _triva = new TIsamtempfile(LF_RMOVIVA, _tmprmoviva, TRUE);
_depriva = new TRectype (LF_RMOVIVA); _depriva = new TRectype (LF_RMOVIVA);
} }
@ -3638,14 +3638,14 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest)
TTrec trec; TTrec trec;
_tmppart = "%"; _tmppart = "%";
_tmppart << path(); _tmppart << path();
_tmppart << "\\" << TEMP_PART; _tmppart.add(TEMP_PART);
_tmpscad = "%"; _tmpscad = "%";
_tmpscad << path(); _tmpscad << path();
_tmpscad << "\\" << TEMP_SCAD; _tmpscad.add(TEMP_SCAD);
_tmppagsca = "%"; _tmppagsca = "%";
_tmppagsca << path(); _tmppagsca << path();
_tmppagsca << "\\" << TEMP_PAGSCA; _tmppagsca.add(TEMP_PAGSCA);
_tpart = new TIsamtempfile(LF_PARTITE, _tmppart, TRUE); _tpart = new TIsamtempfile(LF_PARTITE, _tmppart, TRUE);
//_deppart = new TRectype (LF_PARTITE); //_deppart = new TRectype (LF_PARTITE);
@ -3668,7 +3668,7 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest)
long dim_t = determina_dimensione(i); //Determina la dimensione del trasfer long dim_t = determina_dimensione(i); //Determina la dimensione del trasfer
long cicli = dim_t / size; long cicli = dim_t / size;
_prog = new TProgind (cicli,"Elaborazione file TRASFER in corso\nPrego attendere",FALSE, TRUE, 1); _prog = new TProgind (cicli,"Elaborazione file TRASFER in corso\nPrego attendere",FALSE, TRUE);
while (ok) while (ok)
{ {
@ -4522,7 +4522,8 @@ void TTransfer_file::write_righe_contabili(TString& record)
_trmov->zero(); _trmov->zero();
_trmov->curr() = *_deprmov; _trmov->curr() = *_deprmov;
_trmov->write(); _trmov->write();
} }
_prog->addstatus(1); _prog->addstatus(1);
} }
@ -4661,6 +4662,15 @@ void TTransfer_file::write_righe_IVA(TString& record)
_prog->addstatus(1); _prog->addstatus(1);
} }
static void align_numpart(char tipocf, TString& numpart)
{
const char all = TPartita::allineamento_richiesto(tipocf);
if (all == 'R')
numpart.right_just(7);
else
numpart.trim();
}
void TTransfer_file::write_partite(TString& record) void TTransfer_file::write_partite(TString& record)
{ {
TString sigla,key; TString sigla,key;
@ -4803,6 +4813,12 @@ void TTransfer_file::write_partite(TString& record)
field.format("%6ld", sottoc); field.format("%6ld", sottoc);
} }
if (fname == PART_NUMPART)
{
const char tipocf = _deppart->get_char(PART_TIPOCF);
align_numpart(tipocf, field);
}
if (flag == 2) if (flag == 2)
{ {
TString f = converti(field,TRUE); TString f = converti(field,TRUE);
@ -4922,6 +4938,12 @@ void TTransfer_file::write_scadenze(TString& record)
field.format("%6ld", app); field.format("%6ld", app);
} }
if (fname == SCAD_NUMPART)
{
const char tipocf = _deppart->get_char(SCAD_TIPOCF);
align_numpart(tipocf, field);
}
if (flag == 2) if (flag == 2)
{ {
TString f = converti(field,TRUE); TString f = converti(field,TRUE);
@ -5057,6 +5079,12 @@ void TTransfer_file::write_pagsca(TString& record)
{ {
int app = atoi(field); int app = atoi(field);
field.format("%4d", app); field.format("%4d", app);
}
if (fname == PAGSCA_NUMPART)
{
const char tipocf = _deppart->get_char(PAGSCA_TIPOC);
align_numpart(tipocf, field);
} }
if (flag == 2) if (flag == 2)
@ -5199,19 +5227,20 @@ int pack(bool vis, int num, TString& name)
const char* converti (TString& data_AS400,bool anno_di_quattro) const char* converti (TString& data_AS400,bool anno_di_quattro)
{ {
if (data_AS400 == "000000" || data_AS400 == "00000000") return TEMP = ""; if (data_AS400 == "000000" || data_AS400 == "00000000")
return TEMP = "";
if (anno_di_quattro) if (anno_di_quattro)
{ {
TEMP = data_AS400.mid(6,2); TEMP = data_AS400.mid(6,2);
TEMP << "-" << data_AS400.mid(4,2); TEMP << '-' << data_AS400.mid(4,2);
TEMP << "-" << data_AS400.mid(0,4); TEMP << '-' << data_AS400.mid(0,4);
} }
else else
{ {
TEMP = data_AS400.mid(4,2); TEMP = data_AS400.mid(4,2);
TEMP << "-" << data_AS400.mid(2,2); TEMP << "-" << data_AS400.mid(2,2);
TEMP << "-" << "19" << data_AS400.mid(0,2); TEMP << "-" << (data_AS400[0] < '8' ? "20" : "19") << data_AS400.mid(0,2);
} }
return TEMP; return TEMP;
} }
@ -5235,15 +5264,6 @@ const char* riconverti (TString& data_PC,bool anno_di_quattro)
void TTransfer_file::datafine_esprec(const int aep, TDate& datacomp) void TTransfer_file::datafine_esprec(const int aep, TDate& datacomp)
{ {
/* Guy: Oink!
TTable esc("ESC");
for (int err = esc.first(); err == NOERR; err = esc.next())
{
const anno = esc.get_int("CODTAB");
if (anno == aep)
datacomp = esc.get("D1");
}
*/
TEsercizi_contabili esc; TEsercizi_contabili esc;
if (esc.exist(aep)) if (esc.exist(aep))
datacomp = esc[aep].fine(); datacomp = esc[aep].fine();

View File

@ -3,8 +3,8 @@
#ifndef __CGLIB04_H #ifndef __CGLIB04_H
#define __CGLIB04_H #define __CGLIB04_H
#ifndef __ISAM_H #ifndef __RECARRAY_H
#include <isam.h> #include <recarray.h>
#endif #endif
#ifndef __PROGIND_H #ifndef __PROGIND_H
@ -42,8 +42,7 @@ class TProgind;
static unsigned char _tabella[10] = {0x7d,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52}; static unsigned char _tabella[10] = {0x7d,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52};
HIDDEN TString80 TEMP; #define HEADER "\\header"
HIDDEN TString16 HEADER = "\\header";
const int CAMPI_RCAUS = 6; const int CAMPI_RCAUS = 6;
@ -128,7 +127,7 @@ class TTransfer_file
TString _curfile; TString _curfile;
TString256 _control_rec_t; // Buffer per il record di controllo del trasfer TString256 _control_rec_t; // Buffer per il record di controllo del trasfer
TFixed_string* _control_rec; // Buffer per il record di controllo TFixed_string* _control_rec; // Buffer per il record di controllo
// TString _control_rec; // Buffer per il record di controllo dell'header // TString _control_rec; // Buffer per il record di controllo dell'header
TString256 _record; // Buffer per il record corrente TString256 _record; // Buffer per il record corrente
TProgind* _prog; TProgind* _prog;
TIsamtempfile* _tcaus; TIsamtempfile* _tcaus;
@ -154,9 +153,10 @@ class TTransfer_file
//TRectype* _deppart; //TRectype* _deppart;
//TRectype* _depscad; //TRectype* _depscad;
//TRectype* _deppagsca; //TRectype* _deppagsca;
TExtrectype* _deppart; TExtrectype* _deppart;
TExtrectype* _depscad; TExtrectype* _depscad;
TExtrectype* _deppagsca; TExtrectype* _deppagsca;
TRecord_cache _comuni2;
TRecnotype _rec; //Serve alle funzioni per istanziare un Isamtempfile localmente TRecnotype _rec; //Serve alle funzioni per istanziare un Isamtempfile localmente
@ -269,7 +269,7 @@ public:
const char* cerca_comune_cap(TString& field,const TString& localita); const char* cerca_comune_cap(TString& field,const TString& localita);
const char* cerca_cap_comune(const TString& localita); const char* cerca_cap_comune(const TString& localita);
const char* cerca_comune_den(TString& field); const char* cerca_comune_den(const TString& field);
void datafine_esprec(const int aep, TDate& datacomp); void datafine_esprec(const int aep, TDate& datacomp);
bool fcopytemp(const char* orig, const char* dest); bool fcopytemp(const char* orig, const char* dest);

View File

@ -1,4 +1,3 @@
#include <currency.h>
#include <msksheet.h> #include <msksheet.h>
#include <recarray.h> #include <recarray.h>
#include <tabutil.h> #include <tabutil.h>

View File

@ -5,6 +5,10 @@
#include <date.h> #include <date.h>
#endif #endif
#ifndef __CURRENCY_H
#include <currency.h>
#endif
#ifndef __REAL_H #ifndef __REAL_H
#include <real.h> #include <real.h>
#endif #endif
@ -223,6 +227,13 @@ public:
void set_total_valuta(const real& ib, const real& im, const real& sp, const real& cambio, void set_total_valuta(const real& ib, const real& im, const real& sp, const real& cambio,
const real& ibl, const real& iml, const real& spl, const char* codval); const real& ibl, const real& iml, const real& spl, const char* codval);
void set_total(const TCurrency& ib, const TCurrency& im, const TCurrency& sp)
{ set_total(ib.get_num(), im.get_num(), sp.get_num());}
void set_total_valuta(const TCurrency& ib, const TCurrency& im, const TCurrency& sp,
const TCurrency& ibl, const TCurrency& iml, const TCurrency& spl)
{ set_total_valuta(ib.get_num(), im.get_num(), sp.get_num(), ib.get_base_change(),
ibl.get_num(), iml.get_num(), spl.get_num(), ib.get_value());}
// istanzia uno sheet field come diobue comanda // istanzia uno sheet field come diobue comanda
void set_sheet(TSheet_field& sf, int sscad = -1); void set_sheet(TSheet_field& sf, int sscad = -1);

View File

@ -105,8 +105,8 @@ Flags = ""
Item_01 = "Parametri liquidazione", "cg5 -3", "F" Item_01 = "Parametri liquidazione", "cg5 -3", "F"
Item_02 = "Liquidazione", "cg4 -2", "F" Item_02 = "Liquidazione", "cg4 -2", "F"
Item_03 = "Visualizzazione liquidazione", "cg5 -5", "F" Item_03 = "Visualizzazione liquidazione", "cg5 -5", "F"
Item_04 = "Riepilogo progressivi", "cg0 -3", "F" Item_04 = "Prospetto dich. IVA periodica", "cg5 -7", "F"
Item_05 = "Prospetto dich. IVA periodica", "cg5 -7", "F" Item_05 = "Riepilogo progressivi", "cg0 -3", "F"
Item_06 = "Stampa registri", "cg4 -3", "F" Item_06 = "Stampa registri", "cg4 -3", "F"
Item_07 = "Liste fatture", [PRASSICG_026] Item_07 = "Liste fatture", [PRASSICG_026]
Item_08 = "Gestione acconti IVA", [PRASSICG_027] Item_08 = "Gestione acconti IVA", [PRASSICG_027]

View File

@ -947,7 +947,7 @@ char TPartita::allineamento_richiesto(char tipocf)
{ {
case 'C': all = _cli_align; break; case 'C': all = _cli_align; break;
case 'F': all = _for_align; break; case 'F': all = _for_align; break;
default : all = 'L'; break; default : all = (_cli_align == _for_align) ? _cli_align : 'L'; break;
} }
return all; return all;
} }

View File

@ -1,3 +1,3 @@
20 20
0 0
$clifo|0|0|636|0|Clienti/Fornitori|NCF|| $clifo|0|0|639|0|Clienti/Fornitori|NCF||

Some files were not shown because too many files have changed in this diff Show More