Skudlerations visualizzazione liq.
git-svn-id: svn://10.65.10.50/trunk@944 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
2b2a325355
commit
69b4b4fb9b
@ -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;
|
||||
}
|
||||
|
231
cg/cg5500.cpp
231
cg/cg5500.cpp
@ -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();
|
||||
|
||||
|
22
cg/cg5500.h
22
cg/cg5500.h
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user