Risistemate varie boiate liquidazione

Continua la saga della visualizzazione liquidazione


git-svn-id: svn://10.65.10.50/trunk@770 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1994-12-16 10:14:26 +00:00
parent fb30854f4c
commit 1b2466f0cd
11 changed files with 304 additions and 66 deletions

@ -23,8 +23,8 @@ inline TLiquidazione_app& app()
TLiquidazione_app::TLiquidazione_app()
: _ditte(NULL), _selected(10000), _year(4), _nomiditte(100)
{
_isprint = TRUE; _recalc = needed;
_isplafond = FALSE; _isfinal = FALSE;
_isprint = _is_interactive = TRUE; _recalc = needed;
_isplafond = _isfinal = _is_visliq = FALSE;
_isvent = _isagricolo = _isbenzinaro = _isviaggio = FALSE;
_row = 1; _what = all; _comp_acconto = FALSE;
_isriepilogo = FALSE; _calcall = FALSE;
@ -37,7 +37,7 @@ bool TLiquidazione_app::user_create()
TProgind* pnd = NULL;
TMessage* msg = m.next_s("RCL");
TToken_string subj(36);
bool is_interactive = msg == NULL;
_is_interactive = msg == NULL;
bool recalc_only = FALSE;
bool is_header = TRUE;
TDate printdate;
@ -48,7 +48,7 @@ bool TLiquidazione_app::user_create()
if (msg != NULL) subj = msg->body();
if (is_interactive)
if (_is_interactive)
pnd = new TProgind (3,"Preparazione archivi\nPrego attendere",
FALSE, TRUE, 30);
@ -64,7 +64,7 @@ bool TLiquidazione_app::user_create()
// prevediamo la data che usera'; se calcola la liq. di un altro anno
// si fottera' la frequenza versamenti
if (is_interactive)
if (_is_interactive)
{
TDate oggi(TODAY);
_year.format("%d",oggi.year());
@ -75,10 +75,10 @@ bool TLiquidazione_app::user_create()
_month = subj.get_int(1);
ditta = subj.get_long(2);
recalc_only = *(subj.get(3)) == 'C';
_is_visliq = *(subj.get(3)) == 'V';
printdate = subj.get(4);
filename = subj.get(5);
is_header = subj.items() == 6;
}
if(pnd) pnd->addstatus(1);
@ -148,7 +148,7 @@ bool TLiquidazione_app::user_create()
if (pnd) pnd->addstatus(1);
if (is_interactive)
if (_is_interactive)
{
TLocalisamfile& dt = _nditte->lfile();
@ -182,10 +182,9 @@ bool TLiquidazione_app::user_create()
TApplication::set_firm(__firm);
set_real_picture(REAL_PICTURE);
if (!is_interactive)
if (!_is_interactive)
{
TTemp_window w(TASK_WIN);
w.iconize();
if (recalc_only)
_isprint = FALSE;
else printer().set_export_file(filename, is_header);
@ -218,7 +217,7 @@ bool TLiquidazione_app::user_create()
}
else delete pnd;
return is_interactive;
return _is_interactive;
}
bool TLiquidazione_app::user_destroy()

@ -192,7 +192,10 @@ class TLiquidazione_app : public TPrint_application
real _p8, _p8b, _p9; // totali plafond
real _prorata; // percentuale indetraibilita' (prorata)
long __firm; // ditta selezionata all'inizio
static real CENTO;
bool _is_interactive; // lanciata da menu o da altro prog
bool _is_visliq; // lanciata da visualizzazione liquidazione
static real CENTO;
// main cursor
TRelation* _rel;

@ -951,8 +951,8 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
set_row(6,""); int rw = 7;
set_row(rw++," @66gCredito@84gDebito"); set_row(rw++,"");
set_row(rw++,"@11gIva sulle operazioni di vendita@75g%r", &(d._r0));
set_row(rw++,"@11gRettifiche IVA a debito@75g%r", &(d._r5));
set_row(rw++,"@11gIva chiesta a rimborso@75g%r", &(d._r4));
set_row(rw++,"%s@11gRettifiche IVA a debito@75g%r", _is_visliq ? "$[r]" : "", &(d._r5));
set_row(rw++,"%s@11gIva chiesta a rimborso@75g%r", _is_visliq ? "$[r]" : "", &(d._r4));
real rd = d._r0 + d._r5 + d._r4;
// conguaglio prorata
@ -976,13 +976,14 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
d._r7 -= d._r8;
set_row(rw++,"@11gCredito precedente@58g%r", &(d._r7));
if (!(d._r8.is_zero()))
set_row(rw++,"@11gVersamento acconto dicembre@58g%r", &(d._r8));
if ((_is_visliq && _month == 12) || !(d._r8.is_zero()))
set_row(rw++,"%s@11gVersamento acconto dicembre@58g%r",
_is_visliq ? "$[r]" : "", &(d._r8));
if (!(d._r11.is_zero()))
set_row(rw++,"@11gUlteriori detrazioni@58g%r", &(d._r11));
set_row(rw++,"@11gRettifiche IVA a credito@58g%r", &(d._r6));
set_row(rw++,"%s@11gRettifiche IVA a credito@58g%r", _is_visliq ? "$[r]" : "", &(d._r6));
real rc = d._r1 + d._r7 + d._r8 + d._r6 -d._r11;
// conguaglio prorata
@ -1081,7 +1082,9 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
set_print_zero(FALSE);
}
set_auto_ff(TRUE);
if (!_is_visliq) set_auto_ff(TRUE);
else set_auto_ff(FALSE);
}

@ -22,7 +22,7 @@ int main(int argc,char** argv)
case 4:
cg5400(argc,argv) ; break;
case 5:
// cg5500(argc,argv) ; break;
cg5500(argc,argv) ; break;
default:
error_box(usage, argv[0]) ;
}

@ -133,7 +133,7 @@ BEGIN
HELP "Percentuale di pro-rata"
PICTURE ".2"
NUM_EXPR {(#F_PRORATA>=0.0)&&(#F_PRORATA<=100.0)}
WARNING "La percentuale deve essere compresa tra 0 e 100"
WARNING "Percentuale non valida (0-100%)"
FLAGS "R"
GROUP 1
END

@ -4,6 +4,10 @@
#include <prefix.h>
#include "cg5500a.h"
#include <msksheet.h>
#include <mailbox.h>
#include <execp.h>
#include <progind.h>
#include <browfile.h>
const char* Visliq_app::itoname(int m)
{
@ -60,7 +64,8 @@ bool Visliq_app::create()
_lim_anno = new TRecfield(*_lim_r,"CODTAB",0,3);
_lim_mese = new TRecfield(*_lim_r,"CODTAB",4,6);
dispatch_e_menu(BAR_ITEM(1));
dispatch_e_menu(BAR_ITEM(1));
return TRUE;
}
@ -95,6 +100,43 @@ void Visliq_app::set_mask_freq(TMask& m)
}
bool Visliq_app::sheet_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,
int n, const char* txt, bool doubleclick)
{
// con click visualizza, con double click modifica
TString st(txt);
bool iscred = FALSE;
static int group;
int firstfoc;
if (group != 0) m.hide(group);
if (st.find("rimborso") != -1)
{ group = -1; firstfoc = F_RIMBORSO; }
else if (st.find("debito") != -1 || st.find("credito") != -1)
{ group = -2; firstfoc = F_RETTIFICA; }
else if (st.find("acconto") != -1)
{ group = -3; firstfoc = F_ACCONTO; }
m.show(group);
if (doubleclick)
{ m.enable(group); m.field(firstfoc).set_focus(); }
else m.disable(group);
return NULL;
}
bool Visliq_app::menu(MENU_TAG m)
{
if (m == BAR_ITEM(1))
@ -134,6 +176,29 @@ bool Visliq_app::set_anno(TMask_field& f, KEY k)
}
bool Visliq_app::sel_mese_sh1 (TMask_field& f, KEY k)
{
if (k != K_SPACE) return TRUE;
TMask& m = *(((Visliq_app&)main_app()).get_main_mask());
TSheet_field& sh = (TSheet_field&)m.field(F_VISLIQ1);
int month = sh.selected()+1;
((Visliq_app&)main_app()).vis_one(month);
return TRUE;
}
bool Visliq_app::sel_mese_sh2 (TMask_field& f, KEY k)
{
if (k != K_SPACE) return TRUE;
TMask& m = *(((Visliq_app&)main_app()).get_main_mask());
TSheet_field& sh = (TSheet_field&)m.field(F_VISLIQ2);
int month = sh.selected();
month = month == 4 ? 13 : (month+1)*3;
((Visliq_app&)main_app()).vis_one(month);
return TRUE;
}
bool Visliq_app::vis_liq()
{
long ditta = get_firm();
@ -170,8 +235,17 @@ bool Visliq_app::vis_all()
// mask diverse per trimestrale e annuale
TMask m(_freqviva == "M" ? "cg5500b" : "cg5500c");
_mask = &m;
TSheet_field& sh = (TSheet_field&)m.field(F_VISLIQ1);
TSheet_field& sv = (TSheet_field&)m.field(F_VISLIQ2);
// disabilita aggiunta/eliminazione righe
sh.set_notify(sheet_action);
sh.set_notify(sheet_action);
sh.sheet_mask().set_handler(101,sel_mese_sh1);
sv.sheet_mask().set_handler(101,sel_mese_sh2);
m.field(F_CREDPREC).set(_lia->get_real("R0").string());
@ -206,12 +280,15 @@ bool Visliq_app::vis_all()
continue;
// TBC uso solo deleghe normali (tipo == 1) e acconti (tipo == 7)
int tipod = atoi(*_del_tipo);
if (tipod != 1 || tipod != 7)
continue;
// somma versamenti nel mese adeguato
int m = atoi(*_del_mese);
if (m >= 12)
m = atoi(*_del_tipo) == 7 ? 12 : 13;
m = tipod == 7 ? 12 : 13;
versamenti[m-1] += _del->get_real("R0");
date[m-1] = _del->get_date("D0");
@ -242,6 +319,9 @@ bool Visliq_app::vis_all()
sv.row(i-1) = (*tt);
}
sh.disable();
sv.disable();
m.run();
return TRUE;
@ -249,8 +329,78 @@ bool Visliq_app::vis_all()
bool Visliq_app::vis_one(int m)
{
TMask msk("cg5500d");
// ricalcolo liquidazione TMessage msg;
TFilename f;
f.temp();
TToken_string body(36);
body.add(_year);
body.add(m);
body.add(get_firm());
body.add("V"); // visualizzazione: no ff alla fine, zeri stampati
body.add("");
body.add(f);
TMessage msg("cg4300", "RCL", body);
msg.send();
TBrowsefile_field& brw = (TBrowsefile_field&)msk.field(F_VISFLQ);
brw.set_link_handler(link_handler);
brw.enable_link("Modifica: ", 'r');
look_lim(m);
real rimborso = _lim->get_real("R1");
real rettifica = _lim->get_real("R5");
TString desc1(_lim->get("S0"));
TString desc2(_lim->get("S1"));
real acconto;
if (m == 12)
{
look_lia();
acconto = _lia->get_real("R4");
}
msk.field(F_RIMBORSO).set(rimborso.string());
if (rettifica.sign() < 0)
{
msk.field(F_RETTIFICA).set(abs(rettifica).string());
msk.field(F_DEBCRE).set("C");
}
else
{
msk.field(F_RETTIFICA).set(rettifica.string());
msk.field(F_DEBCRE).set("D");
}
msk.field(F_DESCR1).set(desc1);
msk.field(F_DESCR2).set(desc1);
msk.field(F_ACCONTO).set(acconto.string());
long line;
TExternal_app liq("cg4 -2");
{
return TRUE;
TProgind(10l,"Estrazione liquidazione\nPrego attendere", FALSE,FALSE);
liq.run();
if (liq.error())
{
beep();
return FALSE;
}
line = brw.set_text(f, "CALCOLO LIQUIDAZIONE D'IMPOSTA");
if (line != -1)
brw.goto_pos(line-1l, 9);
msk.run();
}
remove(f);
return TRUE;
}
int cg5500(int argc, char* argv[])

@ -21,6 +21,8 @@ class Visliq_app : public TApplication
TRecfield* _lim_anno;
TRecfield* _lim_mese;
TMask* _mask;
const char* itoname(int m);
bool is_trim(int x);
@ -29,6 +31,7 @@ class Visliq_app : public TApplication
bool look_lia(int year = 0);
bool look_lim(int m);
bool look_del(int month, int type);
protected:
@ -39,12 +42,20 @@ protected:
// handlers
static bool set_ditta(TMask_field&, KEY);
static bool set_anno (TMask_field&, KEY);
static bool sel_mese_sh1 (TMask_field&, KEY);
static bool sel_mese_sh2 (TMask_field&, KEY);
static const char* link_handler(TMask&, int, const char*, bool doubleclick);
static bool sheet_action(int r, KEY k);
public:
void set_freqviva();
void set_mask_freq(TMask&);
void set_year(int y) { _year = y; }
void set_year(int y) { _year = y; }
TMask* get_main_mask() { return _mask; }
// workhorses
bool vis_liq();

@ -1,9 +1,16 @@
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_MONTHS 103
#define F_TRIMS 104
#define F_YEAR 105
#define F_VISLIQ1 106
#define F_VISLIQ2 107
#define F_CREDPREC 108
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_MONTHS 103
#define F_TRIMS 104
#define F_YEAR 105
#define F_VISLIQ1 106
#define F_VISLIQ2 107
#define F_CREDPREC 108
#define F_VISFLQ 109
#define F_ACCONTO 110
#define F_RIMBORSO 111
#define F_RETTIFICA 112
#define F_DESCR1 113
#define F_DESCR2 114
#define F_DEBCRE 115

@ -34,7 +34,7 @@ END
SPREADSHEET F_VISLIQ1 80 11
BEGIN
PROMPT 1 7 "Liquidazione"
ITEM "V@1@F"
ITEM "V@1F#109"
ITEM "Mese@10"
ITEM "Risultato@15"
ITEM "D/C"
@ -67,12 +67,12 @@ END
SPREADSHEET F_VISLIQ2 80 11
BEGIN
PROMPT 1 5 "Versamenti"
ITEM "V@1@F"
ITEM "V@1F#109"
ITEM "Mese@15"
ITEM "Data@10"
ITEM "Azienda@10"
ITEM "Dipend.@10"
ITEM "Concess.@10"
ITEM "Azienda@5"
ITEM "Dipend.@5"
ITEM "Concess.@5"
ITEM "Versamenti@15"
ITEM "D/C"
END
@ -90,14 +90,12 @@ END
LIST 102
BEGIN
PROMPT 1 2 "Mese "
FLAGS "D"
END
NUMBER 103 15 0
BEGIN
PROMPT 1 4 "Risultato "
FLAGS "D"
END
LIST 104 2 0
@ -107,19 +105,16 @@ BEGIN
ITEM "C|Credito"
INPUT 105
OUTPUT 105
FLAGS "D"
END
NUMBER 105 15
BEGIN
PROMPT 22 6 "IVA a rimborso "
FLAGS "D"
END
NUMBER 106 15
BEGIN
PROMPT 22 6 "Debito/Credito "
FLAGS "D"
END
LIST 107 2 0
@ -129,7 +124,6 @@ BEGIN
ITEM "C|Credito"
INPUT 105
OUTPUT 105
FLAGS "D"
END
BUTTON DLG_CANCEL 10 2
@ -156,37 +150,31 @@ END
LIST 102
BEGIN
PROMPT 1 2 "Mese "
FLAGS "D"
END
DATE 103
BEGIN
PROMPT 1 5 "Data "
FLAGS "D"
END
STRING 104 5
BEGIN
PROMPT 1 6 "Azienda "
FLAGS "D"
END
STRING 105 5
BEGIN
PROMPT 1 7 "Dipendenza "
FLAGS "D"
END
STRING 106 5
BEGIN
PROMPT 1 8 "Concessionaria "
FLAGS "D"
END
NUMBER 107 15 0
BEGIN
PROMPT 1 4 "Versamenti "
FLAGS "D"
END
LIST 108 2 0
@ -196,7 +184,6 @@ BEGIN
ITEM "C|Credito"
INPUT 105
OUTPUT 105
FLAGS "D"
END
BUTTON DLG_CANCEL 10 2

@ -49,9 +49,9 @@ BEGIN
ITEM "V@1F#109"
ITEM "Mese@10"
ITEM "Data@10"
ITEM "Azienda@10"
ITEM "Dipend.@10"
ITEM "Concess.@10"
ITEM "Azienda@5"
ITEM "Dipend.@5"
ITEM "Concess.@5"
ITEM "Versamenti@15"
ITEM "D/C"
END
@ -69,14 +69,12 @@ END
LIST 102
BEGIN
PROMPT 1 2 "Mese "
FLAGS "D"
END
NUMBER 103 15 0
BEGIN
PROMPT 1 4 "Risultato "
FLAGS "D"
END
LIST 104 2 0
@ -86,19 +84,16 @@ BEGIN
ITEM "C|Credito"
INPUT 105
OUTPUT 105
FLAGS "D"
END
NUMBER 105 15
BEGIN
PROMPT 22 6 "IVA a rimborso "
FLAGS "D"
END
NUMBER 106 15
BEGIN
PROMPT 22 6 "Debito/Credito "
FLAGS "D"
END
LIST 107 2 0
@ -108,7 +103,6 @@ BEGIN
ITEM "C|Credito"
INPUT 105
OUTPUT 105
FLAGS "D"
END
BUTTON DLG_CANCEL 10 2
@ -128,43 +122,37 @@ PAGE "Prospetto versamenti" -1 -1 50 7
BUTTON 101 10 2
BEGIN
PROMPT -13 -1 "CANGURO"
PROMPT -13 -1 "CANGURO"
END
LIST 102
BEGIN
PROMPT 1 2 "Mese "
FLAGS "D"
END
DATE 103
BEGIN
PROMPT 1 5 "Data "
FLAGS "D"
END
STRING 104 5
BEGIN
PROMPT 1 6 "Azienda "
FLAGS "D"
END
STRING 105 5
BEGIN
PROMPT 1 7 "Dipendenza "
FLAGS "D"
END
STRING 106 5
BEGIN
PROMPT 1 8 "Concessionaria "
FLAGS "D"
END
NUMBER 107 15 0
BEGIN
PROMPT 1 4 "Versamenti "
FLAGS "D"
END
LIST 108 2 0
@ -174,7 +162,6 @@ BEGIN
ITEM "C|Credito"
INPUT 105
OUTPUT 105
FLAGS "D"
END
BUTTON DLG_CANCEL 10 2

91
cg/cg5500d.uml Executable file

@ -0,0 +1,91 @@
#include "cg5500a.h"
TOOLBAR "" 0 20 0 2
#include <toolbar.h>
ENDPAGE
PAGE "Visualizzazione liquidazione" -1 -1 77 20
GROUPBOX DLG_NULL 79 3
BEGIN
PROMPT 0 0 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 2 1 "Codice ditta "
FLAGS "DF"
END
NUMBER F_RAGSOC 37 50
BEGIN
PROMPT 22 1 "Ragione sociale "
FLAGS "DF"
END
BROWSEFILE F_VISFLQ 80 11
BEGIN
PROMPT 0 3 ""
END
/* gruppo 1: edit rimborso */
NUMBER F_RIMBORSO 15 0
BEGIN
PROMPT 3 16 "Rimborso infraannuale: "
GROUP 1
FLAGS "H"
END
/* gruppo 2: edit rettifiche */
NUMBER F_RETTIFICA 15 0
BEGIN
PROMPT 2 15 "Importo rettif. "
GROUP 2
FLAGS "H"
END
LIST F_DEBCRE 7
BEGIN
PROMPT 35 15 " a "
GROUP 2
ITEM "D|Debito"
ITEM "C|Credito"
FLAGS "H"
END
STRING F_DESCR1 60
BEGIN
PROMPT 2 16 "Descrizione "
GROUP 2
FLAGS "H"
END
STRING F_DESCR2 60
BEGIN
PROMPT 2 17 " "
GROUP 2
FLAGS "H"
END
/* gruppo 3: edit acconto */
NUMBER F_ACCONTO 15 0
BEGIN
PROMPT 3 16 "Acconto versato: "
GROUP 3
FLAGS "H"
END
GROUPBOX DLG_NULL 80 5
BEGIN
PROMPT 1 14 ""
END
ENDPAGE
ENDMASK