Embrioni disseccati e scheletrici di sc2, stampa speranzosa degli

estratti conto


git-svn-id: svn://10.65.10.50/trunk@2093 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-11-06 11:10:50 +00:00
parent 80ecf677c5
commit 6f39d41a3e
13 changed files with 1379 additions and 728 deletions

21
sc/sc2.cpp Executable file
View File

@ -0,0 +1,21 @@
#include <xvt.h>
#include <stdlib.h>
#include <checks.h>
#include "sc2.h"
#define usage "Errore - uso : sc2 -0"
int main(int argc,char** argv)
{
const int n = (argc > 1) ? (atoi(&argv[1][1])) : 0;
switch(n)
{
case 0:
sc2100(argc,argv); break;
default:
error_box(usage);
}
return 0;
}

3
sc/sc2.h Executable file
View File

@ -0,0 +1,3 @@
int sc2100(int argc, char** argv);

10
sc/sc2.url Executable file
View File

@ -0,0 +1,10 @@
#include <default.url>
MENU TASK_MENUBAR
SUBMENU MENU_FILE "~File"
MENUBAR MENU_BAR(1)
MENU MENU_BAR(1)
SUBMENU MENU_FILE "~File"

396
sc/sc2100.cpp Executable file
View File

@ -0,0 +1,396 @@
#ifndef __APPLICAT_H
#include <applicat.h>
#endif
#ifndef __MASK_H
#include <mask.h>
#endif
#ifndef __FORM_H
#include <form.h>
#endif
#ifndef __RELATION_H
#include <relation.h>
#endif
#ifndef __URLDEFID_H
#include <urldefid.h>
#endif
#ifndef __SHEET_H
#include <sheet.h>
#endif
#ifndef __LFFILES_H
#include <lffiles.h>
#endif
#include "sc2.h"
#include "sc2100a.h"
class TStampaEC_application : public TApplication
{
enum what {clienti, fornitori};
// begin AARGH
TRelation* _clifo_rel;
TCursor* _cli_cur_k1;
TCursor* _cli_cur_k2;
TCursor* _for_cur_k1;
TCursor* _for_cur_k2;
TCursor_sheet* _cli_sh_k1;
TCursor_sheet* _cli_sh_k2;
TCursor_sheet* _for_sh_k1;
TCursor_sheet* _for_sh_k2;
// end AARGH
what _what;
int _key;
TBit_array _selected;
TRelation* _ditta;
protected:
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG m);
long select_clifo_range(TMask& m, long from, long to);
static TStampaEC_application& app() { return (TStampaEC_application&)main_app(); }
// handlers
static bool bfrom_handler(TMask_field& f, KEY k);
static bool bto_handler(TMask_field& f, KEY k);
static bool ffrom_handler(TMask_field& f, KEY k);
static bool fto_handler(TMask_field& f, KEY k);
static bool breset_handler(TMask_field& f, KEY k);
static bool bselect_handler(TMask_field& f, KEY k);
static bool rclifo_handler(TMask_field& f, KEY k);
static bool rsortcf_handler(TMask_field& f, KEY k);
void set_clifo_limits(TMask&);
public:
bool select_ec(); // starting point
bool print_selected();
bool print_ec(long clifo);
TCursor_sheet* cur_sheet();
// utils per handlers
void reset_sheets(TMask& m);
void set_what(what w) {_what = w; }
void set_key (int k) {_key = k; }
TStampaEC_application();
virtual ~TStampaEC_application() {}
};
// handlers
bool TStampaEC_application::bfrom_handler(TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
app().cur_sheet()->disable_check();
if (app().cur_sheet()->run() == K_ENTER)
{
TToken_string& t = app().cur_sheet()->row(app().cur_sheet()->selected());
long cod1 = t.get_long(1);
long cod2 = f.mask().get_long(F_CFCODTO);
f.mask().set(F_CFCODFR, cod1);
app().select_clifo_range(f.mask(), cod1, cod2);
}
}
return TRUE;
}
bool TStampaEC_application::bto_handler(TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
app().cur_sheet()->disable_check();
if (app().cur_sheet()->run() == K_ENTER)
{
TToken_string& t = app().cur_sheet()->row(app().cur_sheet()->selected());
long cod2 = t.get_long(1);
long cod1 = f.mask().get_long(F_CFCODFR);
f.mask().set(F_CFCODTO, cod2);
app().select_clifo_range(f.mask(), cod1, cod2);
}
}
return TRUE;
}
bool TStampaEC_application::ffrom_handler(TMask_field& f, KEY k)
{
if (!f.focusdirty()) return TRUE;
if (k == K_TAB)
{
long cod1 = atol(f.get());
long cod2 = f.mask().get_long(F_CFCODTO);
app().select_clifo_range(f.mask(), cod1, cod2);
}
else if (k == K_F9)
app().bfrom_handler(f.mask().field(B_CFCODFR), K_SPACE);
return TRUE;
}
bool TStampaEC_application::fto_handler(TMask_field& f, KEY k)
{
if (!f.focusdirty()) return TRUE;
if (k == K_TAB)
{
long cod2 = atol(f.get());
long cod1 = f.mask().get_long(F_CFCODFR);
app().select_clifo_range(f.mask(), cod1, cod2);
}
else if (k == K_F9)
app().bfrom_handler(f.mask().field(B_CFCODTO), K_SPACE);
return TRUE;
}
bool TStampaEC_application::breset_handler(TMask_field& f, KEY k)
{
if (k == K_SPACE)
app().reset_sheets(f.mask());
return TRUE;
}
bool TStampaEC_application::bselect_handler(TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
app().cur_sheet()->enable_check();
app().cur_sheet()->run();
}
app().set_clifo_limits(f.mask());
return TRUE;
}
bool TStampaEC_application::rclifo_handler(TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
app().set_what(f.get() == "1" ? clienti : fornitori);
app().reset_sheets(f.mask());
}
return TRUE;
}
bool TStampaEC_application::rsortcf_handler(TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
app().set_key(atoi(f.get()));
app().reset_sheets(f.mask());
}
return TRUE;
}
long TStampaEC_application::select_clifo_range(TMask& m, long from, long to)
{
long nsel = 0;
if (cur_sheet()->items() == 0)
{
beep();
return 0l;
}
if (to == 0l)
to = cur_sheet()->row(cur_sheet()->items() - 1).get_long(1);
if (from == 0l)
from = cur_sheet()->row(0).get_long(1);
if (from > to)
{
long tmp = to;
to = from;
from = tmp;
}
bool go = FALSE;
bool cod1ok = FALSE, cod2ok = FALSE;
long last = 0l;
long firs = 0l;
for (long i = 0; i < cur_sheet()->items(); i++)
{
TToken_string& tt = cur_sheet()->row(i);
long cod = tt.get_long(1);
if (cod >= from && cod <= to)
{
cur_sheet()->check(i);
nsel ++;
if (firs == 0l) firs = cod;
last = cod;
}
else cur_sheet()->uncheck(i);
if (cod == from) cod1ok = TRUE;
if (cod == to) cod2ok = TRUE;
}
if (!cod1ok) from = firs;
if (!cod2ok) to = last;
m.set(F_CFCODFR, from);
m.set(F_CFCODTO, to);
m.set(F_NSEL, nsel);
return 0l;
}
void TStampaEC_application::reset_sheets(TMask& m)
{
_cli_sh_k1->uncheck(-1);
_cli_sh_k2->uncheck(-1);
_for_sh_k1->uncheck(-1);
_for_sh_k2->uncheck(-1);
m.set(F_CFCODFR,"");
m.set(F_CFCODTO,"");
}
bool TStampaEC_application::select_ec()
{
TMask m("sc2100a");
KEY k;
m.set_handler(R_CLIFO, rclifo_handler);
m.set_handler(R_SORTCF, rsortcf_handler);
m.set_handler(B_CFCODFR, bfrom_handler);
m.set_handler(B_CFCODTO, bto_handler);
m.set_handler(B_SELECT, bselect_handler);
m.set_handler(B_RESET, breset_handler);
m.set_handler(F_CFCODFR, ffrom_handler);
m.set_handler(F_CFCODTO, fto_handler);
if (_ditta->good())
{
m.set(F_COMSEND, _ditta->lfile(LF_COMUNI).get("COM"));
m.set(F_LUOGOSEND, _ditta->lfile(LF_COMUNI).get("DENCOM"));
}
while ((k = m.run()) != K_ESC)
if (k == K_ENTER)
print_selected();
return k != K_ESC;
}
void TStampaEC_application::set_clifo_limits(TMask& m)
{
long first = 0, last = 0;
bool primo = FALSE;
for (int i = 0; i < cur_sheet()->items(); i++)
{
if (cur_sheet()->checked(i))
{
TToken_string& t = cur_sheet()->row(i);
long kod = t.get_long(1);
if (!primo++) first = last = kod;
if (first > kod) first = kod;
if (last < kod) last = kod;
}
}
m.set(F_CFCODFR, first);
m.set(F_CFCODTO, last);
}
bool TStampaEC_application::print_selected()
{
for (int i = 0; i < cur_sheet()->items(); i++)
{
if (cur_sheet()->checked(i))
{
TToken_string& t = cur_sheet()->row(i);
print_ec(t.get_long(1));
}
}
return TRUE;
}
bool TStampaEC_application::print_ec(long clifo)
{
return TRUE;
}
TCursor_sheet* TStampaEC_application::cur_sheet()
{
if (_key == 1) return (_what == clienti ? _cli_sh_k1 : _for_sh_k1);
else return (_what == clienti ? _cli_sh_k2 : _for_sh_k2);
}
bool TStampaEC_application::create()
{
TApplication::create();
// crea relazioni, cursori e cursor_sheets
_clifo_rel = new TRelation(LF_CLIFO);
_cli_cur_k1 = new TCursor(_clifo_rel, "TIPOCF=\"C\"", 1);
_cli_cur_k2 = new TCursor(_clifo_rel, "TIPOCF=\"C\"", 2);
_for_cur_k1 = new TCursor(_clifo_rel, "TIPOCF=\"F\"", 1);
_for_cur_k2 = new TCursor(_clifo_rel, "TIPOCF=\"F\"", 2);
_cli_sh_k1 = new TCursor_sheet(_cli_cur_k1, " |CODCF|RAGSOC", "Selezione clienti per codice",
"@1|Codice|Ragione Sociale@50");
_cli_sh_k2 = new TCursor_sheet(_cli_cur_k2, " |RAGSOC|CODCF", "Selezione clienti per ragione sociale",
"@1|Ragione Sociale@50|Codice");
_for_sh_k1 = new TCursor_sheet(_for_cur_k1, " |CODCF|RAGSOC", "Selezione fornitori per codice",
"@1|Codice|Ragione Sociale@50");
_for_sh_k2 = new TCursor_sheet(_for_cur_k2, " |RAGSOC|CODCF", "Selezione fornitori per ragione sociale",
"@1|Ragione Sociale@50|Codice");
// relasiun per la ditta defiga
_ditta = new TRelation(LF_NDITTE);
_ditta->add(LF_ANAG, "TIPOA==TIPOA|CODANAGR==CODANAGR");
_ditta->add(LF_COMUNI, "COM==COMRF(COMRES)", 1, LF_ANAG);
_ditta->zero();
_ditta->lfile().put("CODDITTA", get_firm());
_ditta->read();
dispatch_e_menu(MENU_ITEM(1));
return TRUE;
}
bool TStampaEC_application::destroy()
{
delete _for_sh_k2;
delete _for_sh_k1;
delete _cli_sh_k2;
delete _cli_sh_k1;
delete _for_cur_k2;
delete _for_cur_k1;
delete _cli_cur_k2;
delete _cli_cur_k1;
delete _clifo_rel;
return TApplication::destroy();
}
bool TStampaEC_application::menu(MENU_TAG m)
{
if (m == MENU_ITEM(1))
return select_ec();
else return TApplication::menu(m);
}
TStampaEC_application::TStampaEC_application() : _selected(10000), _what(clienti), _key(1)
{
}
int sc2100(int argc, char** argv)
{
TStampaEC_application app;
app.run(argc, argv, "Stampa Estratti Conto");
return 0;
}

23
sc/sc2100a.h Executable file
View File

@ -0,0 +1,23 @@
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_CODPROF 103
#define F_DESPROF 104
#define D_DATALIMOP 105
#define D_DATALIMSC 106
#define F_GIORISCH 107
#define B_STAMPCHIU 108
#define D_DATACHIU 109
#define F_LUOGOSEND 110
#define D_DATASEND 111
#define R_CLIFO 112
#define F_CFCODFR 113
#define F_CFCODTO 114
#define B_CFCODFR 115
#define B_CFCODTO 116
#define F_CFDESFR 117
#define F_CFDESTO 118
#define B_SELECT 119
#define B_RESET 120
#define R_SORTCF 121
#define F_NSEL 122
#define F_COMSEND 123

198
sc/sc2100a.uml Executable file
View File

@ -0,0 +1,198 @@
#include "sc2100a.h"
PAGE "Stampa estratti conto" -1 -1 68 17
NUMBER F_CODDITTA 5
BEGIN
PROMPT 1 1 "Cod. "
FLAGS "DFR"
USE LF_NDITTE KEY 1
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50 46
BEGIN
PROMPT 13 1 "R.S. "
FLAGS "D"
END
GROUPBOX DLG_NULL 68 8
BEGIN
PROMPT 0 7 ""
END
STRING F_CODPROF 5
BEGIN
PROMPT 1 8 "Codice profilo "
USE LF_FORM KEY 1
DISPLAY "Codice" CODPROF
DISPLAY "Descrizione@50" DESC
INPUT CODPROF F_CODPROF
OUTPUT F_CODPROF CODPROF
OUTPUT F_DESPROF DESC
HELP ""
FLAGS ""
END
STRING F_DESPROF 50 30
BEGIN
PROMPT 34 8 " "
HELP ""
FLAGS "D"
END
DATE D_DATALIMOP
BEGIN
PROMPT 1 9 "Data limite operazione "
HELP ""
FLAGS "A"
CHECKTYPE REQUIRED
END
DATE D_DATALIMSC
BEGIN
PROMPT 1 10 "Data limite scaduto "
HELP ""
FLAGS ""
CHECKTYPE REQUIRED
END
NUMBER F_GIORISCH 3
BEGIN
PROMPT 1 11 "Giorni calcolo rischio "
HELP ""
FLAGS ""
END
BOOLEAN B_STAMPCHIU
BEGIN
PROMPT 1 12 "Stampa partite chiuse"
MESSAGE TRUE ENABLE,D_DATACHIU
MESSAGE FALSE DISABLE,D_DATACHIU
HELP ""
FLAGS ""
END
DATE D_DATACHIU
BEGIN
PROMPT 25 12 "dal "
HELP ""
FLAGS ""
END
STRING F_COMSEND 5
BEGIN
PROMPT 1 13 "Luogo d'invio "
USE LF_COMUNI KEY 1
INPUT COM F_COMSEND
INPUT DENCOM F_LUOGOSEND
DISPLAY "Codice" COM
DISPLAY "Descrizione@50" DENCOM
OUTPUT F_COMSEND COM
OUTPUT F_LUOGOSEND DENCOM
// CHECKTYPE NORMAL
END
STRING F_LUOGOSEND 50 20
BEGIN
PROMPT 24 13 ""
USE LF_COMUNI KEY 2
INPUT DENCOM F_LUOGOSEND
INPUT COM F_COMSEND
DISPLAY "Descrizione@50" DENCOM
DISPLAY "Codice" COM
OUTPUT F_COMSEND COM
OUTPUT F_LUOGOSEND DENCOM
// CHECKTYPE NORMAL
END
DATE D_DATASEND
BEGIN
PROMPT 50 13 "data "
HELP ""
FLAGS "A"
CHECKTYPE REQUIRED
END
BUTTON B_SELECT 10 1
BEGIN
PROMPT 51 3 "~Selezione"
HELP ""
FLAGS ""
END
BUTTON B_RESET 10 1
BEGIN
PROMPT 51 4 "~Azzera"
HELP ""
FLAGS ""
END
RADIOBUTTON R_CLIFO 20
BEGIN
PROMPT 1 2 "Selezione"
ITEM "1|Clienti"
ITEM "2|Fornitori"
HELP ""
FLAGS ""
END
RADIOBUTTON R_SORTCF 20
BEGIN
PROMPT 25 2 "Ordinamento"
ITEM "1|Per codice"
ITEM "2|Per ragione sociale"
HELP ""
FLAGS ""
END
NUMBER F_CFCODFR 5
BEGIN
PROMPT 1 6 "Da codice "
HELP ""
FLAGS ""
END
NUMBER F_CFCODTO 5
BEGIN
PROMPT 36 6 "a codice "
HELP ""
FLAGS ""
END
NUMBER F_NSEL 3
BEGIN
PROMPT 56 6 "N. "
FLAGS "D"
END
BUTTON B_CFCODFR 2 1
BEGIN
PROMPT 31 6 ""
PICTURE 109
END
BUTTON B_CFCODTO 2 1
BEGIN
PROMPT 51 6 ""
PICTURE 109
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK