Skudlerations visualizzazione liq.

git-svn-id: svn://10.65.10.50/trunk@944 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-02-01 11:49:54 +00:00
parent 2b2a325355
commit 69b4b4fb9b
7 changed files with 244 additions and 68 deletions

View File

@ -469,8 +469,10 @@ real TLiquidazione_app::versamenti_IVA(int month, const char* types, bool intr)
int tp = typ.get_int(i); int tp = typ.get_int(i);
if (look_del(month,tp)) if (look_del(month,tp))
if (_del->get_bool("B0")) // solo se stampata if (_del->get_bool("B0")) // solo se stampata
ret += _del->get_real("R0") + {
(intr ? _del->get_real("R1") : ZERO); ret += _del->get_real("R0");
if (intr) ret += _del->get_real("R1");
}
} }
return ret; return ret;
} }

View File

@ -7,12 +7,18 @@
#include <execp.h> #include <execp.h>
#include <progind.h> #include <progind.h>
#include <urldefid.h> #include <urldefid.h>
#include <relation.h>
#include <sheet.h>
#include <utility.h>
#include "cg5500a.h" #include "cg5500a.h"
const char* Visliq_app::itoname(int m) const char* Visliq_app::itoname(int m)
{ {
const char* mn; const char* mn;
if (m == 13)
return "Annuale";
if (_freqviva == "M") if (_freqviva == "M")
return itom(m); return itom(m);
@ -53,6 +59,13 @@ bool Visliq_app::create()
{ {
TApplication::create(); TApplication::create();
_firm = get_firm();
TDate oggi(TODAY);
_year = oggi.year();
_nditte = new TRelation(LF_NDITTE);
_ditte = new TArray_sheet(-1, -1, 0, 0, "Selezione Ditte",
"Cod.@5|Ragione Sociale@50|Vers.");
_del = new TTable("%DEL"); _del = new TTable("%DEL");
_lia = new TTable("LIA"); _lia = new TTable("LIA");
_lim = new TTable("LIM"); _lim = new TTable("LIM");
@ -65,6 +78,11 @@ bool Visliq_app::create()
_lim_anno = new TRecfield(*_lim_r,"CODTAB",0,3); _lim_anno = new TRecfield(*_lim_r,"CODTAB",0,3);
_lim_mese = new TRecfield(*_lim_r,"CODTAB",4,6); _lim_mese = new TRecfield(*_lim_r,"CODTAB",4,6);
begin_wait();
build_nomiditte();
build_ditte_sheet();
end_wait();
dispatch_e_menu(BAR_ITEM(1)); dispatch_e_menu(BAR_ITEM(1));
return TRUE; return TRUE;
@ -81,10 +99,84 @@ bool Visliq_app::destroy()
delete _del_r; delete _del_r;
delete _lim; delete _lim;
delete _del; delete _del;
delete _ditte;
delete _nditte;
return TApplication::destroy(); return TApplication::destroy();
} }
bool Visliq_app::ch_year_handler(TMask_field& f, KEY key)
{
if (key == K_TAB && f.focusdirty())
{
app().begin_wait();
app().set_year(f.get());
app().build_nomiditte();
app().build_ditte_sheet();
app().reset_fields();
app().end_wait();
}
return TRUE;
}
void Visliq_app::build_ditte_sheet()
{
// build sheet
_ditte->destroy();
for (int i = 0; i < _nomiditte.items(); i++)
{
TToken_string* d = new TToken_string(64);
*d = (TToken_string&)_nomiditte[i];
const char vers = d->get_char(2);
bool selectable = vers == '?';
const long pos = _ditte->add(d);
if (selectable) _ditte->disable(pos);
}
}
void Visliq_app::reset_fields()
{
_mask->field(F_CODDITTA).set("");
_mask->field(F_RAGSOC).set("");
}
void Visliq_app::build_nomiditte()
{
_nomiditte.destroy();
// ricostruire _nomiditte e rifare build_ditte_sheet
TLocalisamfile& dt = _nditte->lfile();
TString fr(2);
for (dt.first(); !dt.eof(); dt.next())
{
// check no archivi
fr = "??";
bool good = prefhndl->exist(dt.get_long("CODDITTA"));
if (good)
{
// check no parametri liquidazione
TApplication::set_firm(dt.get_long("CODDITTA"));
TTable lia("LIA");
lia.put("CODTAB", format("%d",_year));
if (lia.read() != NOERR) good = FALSE;
else fr = lia.get("S7");
}
TToken_string* d = new TToken_string(64);
// add record
d->add(dt.get("CODDITTA"));
d->add(dt.get("RAGSOC"));
d->add(fr);
_nomiditte.add(d);
}
TApplication::set_firm(_firm);
}
void Visliq_app::set_mask_freq(TMask& m) void Visliq_app::set_mask_freq(TMask& m)
{ {
@ -107,6 +199,12 @@ bool Visliq_app::sheet_action(int r, KEY k)
return (k != K_DEL && k != K_INS); return (k != K_DEL && k != K_INS);
} }
bool Visliq_app::vers_action(int r, KEY k)
{
// non si possono cancellare o aggiungere righe
return (k != K_DEL && k != K_INS);
}
const char* Visliq_app::link_handler(TMask& m, const char* Visliq_app::link_handler(TMask& m,
@ -148,32 +246,60 @@ bool Visliq_app::menu(MENU_TAG m)
// handlers // handlers
bool Visliq_app::set_ditta(TMask_field& f, KEY k) bool Visliq_app::set_ditta(TMask_field& f, KEY k)
{ {
long ditta = atol(f.get()); bool found = TRUE;
if (k == K_TAB && f.focusdirty())
if (ditta <= 0) return k != K_ENTER;
if (!prefhndl->exist(ditta))
{ {
warning_box("Archivi ditta %l non presenti!", ditta); found = FALSE;
return FALSE; TString ditta = f.get();
TArray_sheet* sh = app().get_ditte_sheet();
for (int i = 0; i < sh->items(); i++)
{
TToken_string& row = sh->row(i);
if (ditta == row.get(0))
{
if (sh->enabled(i))
{
f.mask().field(F_CODDITTA).set(row.get(0));
f.mask().field(F_RAGSOC).set(row.get(1));
app().set_freqviva(row.get(2));
app().set_mask_freq(f.mask());
found = TRUE;
}
else { f.reset(); beep(); }
break;
}
}
} }
else return found;
{
main_app().set_firm(ditta);
((Visliq_app&)main_app()).set_freqviva();
}
((Visliq_app&)main_app()).set_mask_freq(f.mask());
return TRUE;
} }
bool Visliq_app::set_anno(TMask_field& f, KEY k) bool Visliq_app::set_ragsoc(TMask_field& f, KEY k)
{ {
((Visliq_app&)main_app()).set_year(atoi(f.get())); bool found = TRUE;
((Visliq_app&)main_app()).set_freqviva(); if (k == K_TAB && f.focusdirty())
((Visliq_app&)main_app()).set_mask_freq(f.mask()); {
found = FALSE;
return TRUE; TString ditta = f.get();
TArray_sheet* sh = app().get_ditte_sheet();
for (int i = 0; i < sh->items(); i++)
{
TToken_string& row = sh->row(i);
TString ts(row.get(1));
if (ts.find(ditta) != -1)
{
if (sh->enabled(i))
{
f.mask().field(F_CODDITTA).set(row.get(0));
f.mask().field(F_RAGSOC).set(row.get(1));
app().set_freqviva(row.get(2));
app().set_mask_freq(f.mask());
found = TRUE;
break;
}
}
}
}
return found;
} }
@ -186,9 +312,9 @@ bool Visliq_app::sel_mese_sh1 (TMask_field& f, KEY k)
int month = sh.selected()+1; int month = sh.selected()+1;
TToken_string& tt = sh.row(sh.selected()); TToken_string& tt = sh.row(sh.selected());
if (sh.items() == 4) month *= 3; if (sh.items() == 4) month *= 3;
((Visliq_app&)main_app()).vis_one(month); app().vis_one(month);
((Visliq_app&)main_app()).look_lim(month); app().look_lim(month);
((Visliq_app&)main_app()).update_sheet_row(tt); app().update_sheet_row(tt);
TMask& sm = sh.sheet_mask(); TMask& sm = sh.sheet_mask();
sm.field(103).set(tt.get(2)); sm.field(103).set(tt.get(2));
@ -226,22 +352,43 @@ bool Visliq_app::vis_liq()
{ {
long ditta = get_firm(); long ditta = get_firm();
set_freqviva(); set_freqviva();
KEY k;
TMask m("cg5500a"); TMask m("cg5500a");
_mask = &m;
m.set_handler(F_CODDITTA, set_ditta); m.set_handler(F_CODDITTA, set_ditta);
m.set_handler(F_YEAR, set_anno); m.set_handler(F_RAGSOC, set_ragsoc);
m.set_handler(F_YEAR, ch_year_handler);
set_mask_freq(m); set_mask_freq(m);
_year = m.get_int(F_YEAR); _year = m.get_int(F_YEAR);
while (m.run() != K_ESC) while ((k = m.run()) != K_ESC)
{ {
int month = m.get_int(_freqviva == "M" ? F_MONTHS : F_TRIMS); if (k == DLG_SELECT)
if (month == 0) {
vis_all(); if (_ditte->run() == K_ENTER)
else {
vis_one(month); TToken_string& row = _ditte->row(_ditte->selected());
m.field(F_CODDITTA).set(row.get(0));
m.field(F_RAGSOC).set(row.get(1));
set_freqviva(row.get(2));
set_mask_freq(m);
}
}
else if (k == K_ENTER)
{
long dtt = m.get_long(F_CODDITTA);
set_firm(dtt);
int month = m.get_int(_freqviva == "M" ? F_MONTHS : F_TRIMS);
if (month == 0)
vis_all();
else
vis_one(month);
_mask = &m;
}
} }
set_firm(ditta); set_firm(ditta);
@ -269,7 +416,8 @@ bool Visliq_app::vis_all()
// disabilita aggiunta/eliminazione righe // disabilita aggiunta/eliminazione righe
sh.set_notify(sheet_action); sh.set_notify(sheet_action);
sv.set_notify(sheet_action); // TBI qui occorre modificare le deleghe
sv.set_notify(vers_action);
sh.sheet_mask().set_handler(101,sel_mese_sh1); sh.sheet_mask().set_handler(101,sel_mese_sh1);
sv.sheet_mask().set_handler(101,sel_mese_sh2); sv.sheet_mask().set_handler(101,sel_mese_sh2);
@ -364,6 +512,9 @@ bool Visliq_app::vis_one(int m)
begin_wait(); begin_wait();
TMask msk("cg5500d"); TMask msk("cg5500d");
bool recorded = FALSE; bool recorded = FALSE;
TString nomem("Liquidazione IVA ");
nomem << itoname(m);
nomem << " " << _year;
// ricalcolo liquidazione TMessage msg; // ricalcolo liquidazione TMessage msg;
TFilename f; TFilename f;
@ -397,6 +548,7 @@ bool Visliq_app::vis_one(int m)
acconto = _lia->get_real("R4"); acconto = _lia->get_real("R4");
} }
msk.field(F_YEAR).set(nomem);
msk.field(F_RIMBORSO).set(rimborso.string()); msk.field(F_RIMBORSO).set(rimborso.string());
if (rettifica.sign() < 0) if (rettifica.sign() < 0)
{ {
@ -556,9 +708,6 @@ bool Visliq_app::vis_one(int m)
_lim->put("S1", n_desc2); _lim->put("S1", n_desc2);
write_lim = TRUE; write_lim = TRUE;
} }
// TBI abilitare ricalcolo liquidazione
if (write_lia && k == K_SAVE) if (write_lia && k == K_SAVE)
_lia->rewrite(); _lia->rewrite();

View File

@ -7,6 +7,11 @@ class Visliq_app : public TApplication
TString _freqviva; TString _freqviva;
int _year; int _year;
long _firm;
TRelation* _nditte;
TArray_sheet* _ditte;
TArray _nomiditte;
TTable* _lim; TTable* _lim;
TTable* _lia; TTable* _lia;
@ -38,23 +43,34 @@ protected:
// handlers // handlers
static bool set_ditta(TMask_field&, KEY); static bool set_ditta(TMask_field&, KEY);
static bool set_anno (TMask_field&, KEY); static bool set_ragsoc(TMask_field&, KEY);
static bool sel_mese_sh1 (TMask_field&, KEY); static bool sel_mese_sh1 (TMask_field&, KEY);
static bool sel_mese_sh2 (TMask_field&, KEY); static bool sel_mese_sh2 (TMask_field&, KEY);
static bool ch_year_handler(TMask_field& f, KEY key);
static const char* link_handler(TMask&, int, const char*, bool doubleclick); static const char* link_handler(TMask&, int, const char*, bool doubleclick);
static bool sheet_action(int r, KEY k); static bool sheet_action(int r, KEY k);
static bool vers_action(int r, KEY k);
public: public:
static Visliq_app& app() { return (Visliq_app&)main_app(); }
TArray_sheet* get_ditte_sheet() { return _ditte; }
void build_ditte_sheet();
void build_nomiditte();
bool look_lia(int year = 0); bool look_lia(int year = 0);
bool look_lim(int m); bool look_lim(int m);
bool look_del(int month, int type); bool look_del(int month, int type);
void set_freqviva(); void set_freqviva();
void set_freqviva(const char* f) { _freqviva = f; }
void set_mask_freq(TMask&); void set_mask_freq(TMask&);
void set_year(int y) { _year = y; } void set_year(const char* y) { _year = atoi(y); }
void set_year(int y) { _year = y; }
void reset_fields();
TMask* get_main_mask() { return _mask; } TMask* get_main_mask() { return _mask; }
void update_sheet_row(TToken_string& t); void update_sheet_row(TToken_string& t);

View File

@ -13,6 +13,7 @@
#define F_DESCR1 113 #define F_DESCR1 113
#define F_DESCR2 114 #define F_DESCR2 114
#define F_DEBCRE 115 #define F_DEBCRE 115
#define F_SELECT 116
#define F_CODDITTA2 201 #define F_CODDITTA2 201
#define F_RAGSOC2 202 #define F_RAGSOC2 202

View File

@ -6,35 +6,31 @@
PAGE "Visualizzazione Liquidazione" -1 -1 70 6 PAGE "Visualizzazione Liquidazione" -1 -1 70 6
NUMBER F_CODDITTA 5 NUMBER F_CODDITTA 5
BEGIN BEGIN
PROMPT 1 1 "Codice ditta " PROMPT 1 1 "Codice ditta "
HELP "Codice della ditta da attivare" HELP "Codice della ditta da attivare"
FLAGS "FR" END
USE LF_NDITTE KEY 1
INPUT CODDITTA F_CODDITTA BUTTON F_SELECT 2 1
DISPLAY "Codice" CODDITTA BEGIN
DISPLAY "Ragione sociale@50" RAGSOC PROMPT 19 1 "*"
OUTPUT F_CODDITTA CODDITTA PICTURE 109
OUTPUT F_RAGSOC RAGSOC MESSAGE EXIT,DLG_SELECT
CHECKTYPE NORMAL
WARNING "Ditta assente"
KEY 1
END END
STRING F_RAGSOC 50 30 STRING F_RAGSOC 50 30
BEGIN BEGIN
PROMPT 25 1 "Rag. soc. " PROMPT 25 1 "Rag. soc. "
USE LF_NDITTE KEY 2
HELP "Ragione sociale della ditta da selezionare" HELP "Ragione sociale della ditta da selezionare"
INPUT RAGSOC F_RAGSOC
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice" CODDITTA
COPY OUTPUT F_CODDITTA
KEY 2
END END
BUTTON F_SELECT 2 1
BEGIN
PROMPT 66 1 "*"
PICTURE 109
MESSAGE EXIT,DLG_SELECT
END
NUMBER F_YEAR 4 NUMBER F_YEAR 4
BEGIN BEGIN

View File

@ -8,7 +8,7 @@ ENDPAGE
PAGE "Visualizzazione liquidazione" -1 -1 77 20 PAGE "Visualizzazione liquidazione" -1 -1 77 20
GROUPBOX DLG_NULL 79 3 GROUPBOX F_YEAR 79 3
BEGIN BEGIN
PROMPT 0 0 "@bDitta corrente" PROMPT 0 0 "@bDitta corrente"
END END
@ -41,7 +41,8 @@ NUMBER F_RIMBORSO 15 0
BEGIN BEGIN
PROMPT 3 16 "Rimborso infraannuale: " PROMPT 3 16 "Rimborso infraannuale: "
GROUP 1 GROUP 1
FLAGS "H" FLAGS "HR"
PICTURE "."
END END
/* gruppo 2: edit rettifiche */ /* gruppo 2: edit rettifiche */
@ -50,7 +51,8 @@ NUMBER F_RETTIFICA 15 0
BEGIN BEGIN
PROMPT 2 15 "Importo rettif. " PROMPT 2 15 "Importo rettif. "
GROUP 2 GROUP 2
FLAGS "H" FLAGS "HR"
PICTURE "."
END END
LIST F_DEBCRE 7 LIST F_DEBCRE 7
@ -82,7 +84,8 @@ NUMBER F_ACCONTO 15 0
BEGIN BEGIN
PROMPT 3 16 "Acconto versato: " PROMPT 3 16 "Acconto versato: "
GROUP 3 GROUP 3
FLAGS "H" FLAGS "HR"
PICTURE "."
END END
GROUPBOX DLG_NULL 80 5 GROUPBOX DLG_NULL 80 5

View File

@ -24,6 +24,8 @@ class TRipristino_liq : public TApplication
TArray _nomiditte; TArray _nomiditte;
virtual bool create(); virtual bool create();
virtual bool destroy();
bool menu(MENU_TAG) { return do_restore(); } bool menu(MENU_TAG) { return do_restore(); }
// handuler // handuler
@ -129,6 +131,13 @@ bool TRipristino_liq::create()
return TRUE; return TRUE;
} }
bool TRipristino_liq::destroy()
{
delete _nditte;
delete _ditte;
return TApplication::destroy();
}
bool TRipristino_liq::do_restore() bool TRipristino_liq::do_restore()
{ {
KEY k; int i; KEY k; int i;