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);
if (look_del(month,tp))
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;
}

View File

@ -7,12 +7,18 @@
#include <execp.h>
#include <progind.h>
#include <urldefid.h>
#include <relation.h>
#include <sheet.h>
#include <utility.h>
#include "cg5500a.h"
const char* Visliq_app::itoname(int m)
{
const char* mn;
const char* mn;
if (m == 13)
return "Annuale";
if (_freqviva == "M")
return itom(m);
@ -52,6 +58,13 @@ void Visliq_app::set_freqviva()
bool Visliq_app::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");
_lia = new TTable("LIA");
@ -65,6 +78,11 @@ bool Visliq_app::create()
_lim_anno = new TRecfield(*_lim_r,"CODTAB",0,3);
_lim_mese = new TRecfield(*_lim_r,"CODTAB",4,6);
begin_wait();
build_nomiditte();
build_ditte_sheet();
end_wait();
dispatch_e_menu(BAR_ITEM(1));
return TRUE;
@ -81,10 +99,84 @@ bool Visliq_app::destroy()
delete _del_r;
delete _lim;
delete _del;
delete _ditte;
delete _nditte;
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)
{
@ -107,6 +199,12 @@ bool Visliq_app::sheet_action(int r, KEY k)
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,
@ -147,33 +245,61 @@ bool Visliq_app::menu(MENU_TAG m)
// handlers
bool Visliq_app::set_ditta(TMask_field& f, KEY k)
{
long ditta = atol(f.get());
if (ditta <= 0) return k != K_ENTER;
if (!prefhndl->exist(ditta))
{
bool found = TRUE;
if (k == K_TAB && f.focusdirty())
{
warning_box("Archivi ditta %l non presenti!", ditta);
return FALSE;
}
else
{
main_app().set_firm(ditta);
((Visliq_app&)main_app()).set_freqviva();
}
((Visliq_app&)main_app()).set_mask_freq(f.mask());
return TRUE;
found = 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;
}
}
}
return found;
}
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()));
((Visliq_app&)main_app()).set_freqviva();
((Visliq_app&)main_app()).set_mask_freq(f.mask());
return TRUE;
bool found = TRUE;
if (k == K_TAB && f.focusdirty())
{
found = 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);
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;
}
@ -185,10 +311,10 @@ bool Visliq_app::sel_mese_sh1 (TMask_field& f, KEY k)
TSheet_field& sh = (TSheet_field&)m.field(F_VISLIQ1);
int month = sh.selected()+1;
TToken_string& tt = sh.row(sh.selected());
if (sh.items() == 4) month *= 3;
((Visliq_app&)main_app()).vis_one(month);
((Visliq_app&)main_app()).look_lim(month);
((Visliq_app&)main_app()).update_sheet_row(tt);
if (sh.items() == 4) month *= 3;
app().vis_one(month);
app().look_lim(month);
app().update_sheet_row(tt);
TMask& sm = sh.sheet_mask();
sm.field(103).set(tt.get(2));
@ -226,22 +352,43 @@ bool Visliq_app::vis_liq()
{
long ditta = get_firm();
set_freqviva();
KEY k;
TMask m("cg5500a");
_mask = &m;
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);
_year = m.get_int(F_YEAR);
while (m.run() != K_ESC)
{
int month = m.get_int(_freqviva == "M" ? F_MONTHS : F_TRIMS);
if (month == 0)
vis_all();
else
vis_one(month);
while ((k = m.run()) != K_ESC)
{
if (k == DLG_SELECT)
{
if (_ditte->run() == K_ENTER)
{
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);
@ -269,7 +416,8 @@ bool Visliq_app::vis_all()
// disabilita aggiunta/eliminazione righe
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);
sv.sheet_mask().set_handler(101,sel_mese_sh2);
@ -364,6 +512,9 @@ bool Visliq_app::vis_one(int m)
begin_wait();
TMask msk("cg5500d");
bool recorded = FALSE;
TString nomem("Liquidazione IVA ");
nomem << itoname(m);
nomem << " " << _year;
// ricalcolo liquidazione TMessage msg;
TFilename f;
@ -397,6 +548,7 @@ bool Visliq_app::vis_one(int m)
acconto = _lia->get_real("R4");
}
msk.field(F_YEAR).set(nomem);
msk.field(F_RIMBORSO).set(rimborso.string());
if (rettifica.sign() < 0)
{
@ -555,10 +707,7 @@ bool Visliq_app::vis_one(int m)
{
_lim->put("S1", n_desc2);
write_lim = TRUE;
}
// TBI abilitare ricalcolo liquidazione
}
if (write_lia && k == K_SAVE)
_lia->rewrite();

View File

@ -7,6 +7,11 @@ class Visliq_app : public TApplication
TString _freqviva;
int _year;
long _firm;
TRelation* _nditte;
TArray_sheet* _ditte;
TArray _nomiditte;
TTable* _lim;
TTable* _lia;
@ -38,23 +43,34 @@ protected:
// handlers
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_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 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_lim(int m);
bool look_del(int month, int type);
void set_freqviva();
void set_freqviva(const char* f) { _freqviva = f; }
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; }
void update_sheet_row(TToken_string& t);

View File

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

View File

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

View File

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

View File

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