Liquidazione: corretto MI0265

Aggiunti primi vagiti della visualizzazione liquidazione (CG55*)


git-svn-id: svn://10.65.10.50/trunk@747 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1994-12-09 16:29:50 +00:00
parent 98efeaff69
commit 3f41395e7f
11 changed files with 895 additions and 7 deletions

@ -330,7 +330,13 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
const bool cmt = !_cur->is_first_match(LF_RMOVIVA);
if (dok || sreg || rs8 || cmt) continue;
/*
* Fatture in sospensione di imposta non vengono considerate
*/
if (_reg->get_bool("B1"))
continue;
/*
* check date se si calcola l'acconto
*/

@ -505,7 +505,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
_DescrItem* dd = new _DescrItem(ANNUAL);
// prorata
if (!(_prorata.is_zero() && pr.is_zero()))
if (!_prorata.is_zero())
dd->_f0 |= IS_PRORATA;
dd->_r0 = v - am - e3;
dd->_r1 = e1;

@ -3,6 +3,7 @@
#include <defmask.h>
#include <progind.h>
#include <prefix.h>
#include <sheet.h>
#include "cg4300.h"
@ -79,9 +80,9 @@ bool TLiquidazione_app::extract_deleghe()
char buf[256];
long firm = TApplication::get_firm();
_prind = new TProgind(_n_ditte,
_prind = new TProgind(_calcall ? _n_ditte : _selected.ones(),
" Estrazione deleghe "
"\n Preparazione archivi ",
" preparazione archivi \n ",
TRUE,TRUE,40);
long l;
@ -91,9 +92,12 @@ bool TLiquidazione_app::extract_deleghe()
break;
if (!(_calcall || _selected[l])) continue;
if (!prefhndl->exist(_nditte_r->get_long("CODDITTA")))
continue;
TApplication::set_firm(_nditte->curr().get_long("CODDITTA"));
sprintf (buf,"Estrazione deleghe (%d):\nditta %s",
sprintf (buf,"Estrazione deleghe (%d):\nditta %s\n ",
_month,
(const char*)_nditte_r->get("RAGSOC"));
_prind->set_text(buf);

@ -3,7 +3,7 @@
#include "cg5.h"
#define usage "Error - usage : %s -{0|1|2|3|4}"
#define usage "Error - usage : %s -{0|1|2|3|4|5}"
int main(int argc,char** argv)
{
@ -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]) ;
}

261
cg/cg5500.cpp Executable file

@ -0,0 +1,261 @@
#include "cg5500.h"
#include <urldefid.h>
#include <prefix.h>
#include "cg5500a.h"
#include <msksheet.h>
const char* Visliq_app::itoname(int m)
{
const char* mn;
if (_freqviva == "M")
return itom(m);
switch(m)
{
case 3:
mn = "1 Trimestre";
break;
case 6:
mn = "2 Trimestre";
break;
case 9:
mn = "3 Trimestre";
break;
case 12:
mn = "4 Trimestre";
break;
}
return mn;
}
void Visliq_app::set_freqviva()
{
if (look_lia())
_freqviva = _lia->get("S7");
else
{
TLocalisamfile ditte(LF_NDITTE,1);
ditte.zero();
ditte.put("CODDITTA", get_firm());
ditte.read();
_freqviva = ditte.get("FREQVIVA");
}
}
bool Visliq_app::create()
{
TApplication::create();
_del = new TTable("%DEL");
_lia = new TTable("LIA");
_lim = new TTable("LIM");
_del_r = &(_del->curr());
_lim_r = &(_lim->curr());
_del_ditta = new TRecfield(*_del_r,"CODTAB",0,4);
_del_anno = new TRecfield(*_del_r,"CODTAB",5,8);
_del_mese = new TRecfield(*_del_r,"CODTAB",9,10);
_del_tipo = new TRecfield(*_del_r,"CODTAB",11,11);
_lim_anno = new TRecfield(*_lim_r,"CODTAB",0,3);
_lim_mese = new TRecfield(*_lim_r,"CODTAB",4,6);
dispatch_e_menu(BAR_ITEM(1));
return TRUE;
}
bool Visliq_app::destroy()
{
delete _lim_mese;
delete _lim_anno;
delete _del_tipo;
delete _del_mese;
delete _del_ditta;
delete _lim_r;
delete _del_r;
delete _lim;
delete _del;
return TApplication::destroy();
}
void Visliq_app::set_mask_freq(TMask& m)
{
if (_freqviva == "M")
{
m.show(F_MONTHS);
m.hide(F_TRIMS);
}
else
{
m.hide(F_MONTHS);
m.show(F_TRIMS);
}
}
bool Visliq_app::menu(MENU_TAG m)
{
if (m == BAR_ITEM(1))
return vis_liq();
return TApplication::menu(m);
}
// handlers
bool Visliq_app::set_ditta(TMask_field& f, KEY k)
{
long ditta = atol(f.get());
if (!prefhndl->exist(ditta))
{
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;
}
bool Visliq_app::set_anno(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 Visliq_app::vis_liq()
{
long ditta = get_firm();
set_freqviva();
TMask m("cg5500a");
m.set_handler(F_CODDITTA, set_ditta);
m.set_handler(F_YEAR, set_anno);
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);
}
set_firm(ditta);
return FALSE;
}
bool Visliq_app::vis_all()
{
if (!look_lia())
return FALSE;
// mask diverse per trimestrale e annuale
TMask m(_freqviva == "M" ? "cg5500b" : "cg5500c");
TSheet_field& sh = (TSheet_field&)m.field(F_VISLIQ1);
TSheet_field& sv = (TSheet_field&)m.field(F_VISLIQ2);
m.field(F_CREDPREC).set(_lia->get_real("R0").string());
// set sheet
for (int i = 1; i <= 12; i++)
{
if (!is_month_ok(i) || !look_lim(i))
continue;
TToken_string* tt = new TToken_string(80);
tt->add(""); // questo e' il bottone
tt->add(itoname(i));
tt->add(abs(_lim->get_real("R0")).string());
tt->add(_lim->get_real("R0").sign() < 0 ? "C" : "D");
tt->add(_lim->get_real("R1").string());
tt->add(abs(_lim->get_real("R5")).string());
tt->add(_lim->get_real("R5").sign() < 0 ? "C" : "D");
sh.row(i-1) = (*tt);
}
// calcola versamenti
real versamenti[13];
TDate date[13];
for (_del->first(); !_del->eof(); _del->next())
{
if (atol(*_del_ditta) != get_firm() ||
atoi(*_del_anno) != _year)
continue;
// TBC uso solo deleghe normali (tipo == 1) e acconti (tipo == 7)
// somma versamenti nel mese adeguato
int m = atoi(*_del_mese);
if (m >= 12)
m = atoi(*_del_tipo) == 7 ? 12 : 13;
versamenti[m-1] += _del->get_real("R0");
date[m-1] = _del->get_date("D0");
}
TString nomemese(26);
for (i = 1; i <= 13; i++)
{
if (!is_month_ok(i))
continue;
TToken_string* tt = new TToken_string(80);
nomemese = itoname(i == 13 ? 12 : i);
if (i == 12) nomemese << " acconto";
if (i == 13) nomemese << " saldo";
tt->add(""); // questo e' il bottone
tt->add(nomemese); // mese
tt->add(date[i-1].string()); // data vers.
tt->add(""); // TBI azienda
tt->add(""); // TBI dipendenza
tt->add(""); // TBI concessionaria
tt->add(versamenti[i-1].string());// versamenti
tt->add(versamenti[i-1].sign() < 0 ? "C" : "D"); // debito/credito
sv.row(i-1) = (*tt);
}
m.run();
return TRUE;
}
bool Visliq_app::vis_one(int m)
{
return TRUE;
}
int cg5500(int argc, char* argv[])
{
Visliq_app app;
app.run(argc, argv, "Visualizzazione Liquidazione");
return 0;
}

57
cg/cg5500.h Executable file

@ -0,0 +1,57 @@
#include <applicat.h>
#include <mask.h>
#include <tabutil.h>
class Visliq_app : public TApplication
{
TString _freqviva;
int _year;
TTable* _lim;
TTable* _lia;
TTable* _del;
TRectype* _lim_r;
TRectype* _del_r;
TRecfield* _del_ditta;
TRecfield* _del_anno;
TRecfield* _del_mese;
TRecfield* _del_tipo;
TRecfield* _lim_anno;
TRecfield* _lim_mese;
const char* itoname(int m);
bool is_trim(int x);
bool is_month_ok(int x, int month = -1);
bool look_lia(int year = 0);
bool look_lim(int m);
bool look_del(int month, int type);
protected:
virtual bool menu(MENU_TAG);
virtual bool create();
virtual bool destroy();
// handlers
static bool set_ditta(TMask_field&, KEY);
static bool set_anno (TMask_field&, KEY);
public:
void set_freqviva();
void set_mask_freq(TMask&);
void set_year(int y) { _year = y; }
// workhorses
bool vis_liq();
bool vis_all();
bool vis_one(int);
Visliq_app() : TApplication() {}
virtual ~Visliq_app() {}
};

9
cg/cg5500a.h Executable file

@ -0,0 +1,9 @@
#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

87
cg/cg5500a.uml Executable file

@ -0,0 +1,87 @@
/*
* Visualizzazione liquidazione
* mask scelta ditta e mese liq.
*/
#include "cg5500a.h"
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
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
NUMBER F_YEAR 4
BEGIN
PROMPT 1 2 "Anno liquid. "
FLAGS "AR"
END
LIST F_MONTHS 30
BEGIN
PROMPT 25 2 "Mese liq. "
ITEM " |Prospetto complessivo"
ITEM "1|Gennaio"
ITEM "2|Febbraio"
ITEM "3|Marzo"
ITEM "4|Aprile"
ITEM "5|Maggio"
ITEM "6|Giugno"
ITEM "7|Luglio"
ITEM "8|Agosto"
ITEM "9|Settembre"
ITEM "10|Ottobre"
ITEM "11|Novembre"
ITEM "12|Dicembre"
ITEM "13|Annuale"
END
LIST F_TRIMS 30
BEGIN
PROMPT 25 2 "Trim. liq."
ITEM " |Prospetto complessivo"
ITEM "3|1° Trimestre"
ITEM "6|2° Trimestre"
ITEM "9|3° Trimestre"
ITEM "12|4° Trimestre"
FLAGS "H"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_CANCEL 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

215
cg/cg5500b.uml Executable file

@ -0,0 +1,215 @@
#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 1 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 2 2 "Codice ditta "
FLAGS "DF"
END
NUMBER F_RAGSOC 37 50
BEGIN
PROMPT 22 2 "Ragione sociale "
FLAGS "DF"
END
NUMBER F_CREDPREC 15
BEGIN
PROMPT 1 5 "Credito inizio anno "
FLAGS "D"
END
SPREADSHEET F_VISLIQ1 80 11
BEGIN
PROMPT 1 7 "Liquidazione"
ITEM "V@1@F"
ITEM "Mese@10"
ITEM "Risultato@15"
ITEM "D/C"
ITEM "IVA rimborso@15"
ITEM "IVA rettifiche@15"
ITEM "D/C"
END
ENDPAGE
PAGE "Visualizzazione liquidazione" -1 -1 77 20
GROUPBOX DLG_NULL 79 3
BEGIN
PROMPT 0 1 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 2 2 "Codice ditta "
FLAGS "DF"
END
NUMBER F_RAGSOC 37 50
BEGIN
PROMPT 22 2 "Ragione sociale "
FLAGS "DF"
END
SPREADSHEET F_VISLIQ2 80 11
BEGIN
PROMPT 1 5 "Versamenti"
ITEM "V@1@F"
ITEM "Mese@15"
ITEM "Data@10"
ITEM "Azienda@10"
ITEM "Dipend.@10"
ITEM "Concess.@10"
ITEM "Versamenti@15"
ITEM "D/C"
END
ENDPAGE
ENDMASK
PAGE "Prospetto mensile" -1 -1 50 7
BUTTON 101
BEGIN
PROMPT -11 -2 "DIO CAIMANO"
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
BEGIN
PROMPT 1 5 "Importo a "
ITEM "D|Debito"
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
BEGIN
PROMPT 1 5 "Importo a "
ITEM "D|Debito"
ITEM "C|Credito"
INPUT 105
OUTPUT 105
FLAGS "D"
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK
PAGE "Prospetto versamenti" -1 -1 50 7
BUTTON 101
BEGIN
PROMPT -11 -2 "DIO 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
BEGIN
PROMPT 1 5 "Importo a "
ITEM "D|Debito"
ITEM "C|Credito"
INPUT 105
OUTPUT 105
FLAGS "D"
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

193
cg/cg5500c.uml Executable file

@ -0,0 +1,193 @@
#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 1 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 2 2 "Codice ditta "
FLAGS "DF"
END
NUMBER F_RAGSOC 37 50
BEGIN
PROMPT 22 2 "Ragione sociale "
FLAGS "DF"
END
NUMBER F_CREDPREC 15
BEGIN
PROMPT 1 4 "Credito inizio anno "
FLAGS "D"
END
SPREADSHEET F_VISLIQ1 80 5
BEGIN
PROMPT 1 6 "Liquidazione"
ITEM "V@1@F"
ITEM "Mese@10"
ITEM "Risultato@15"
ITEM "D/C"
ITEM "IVA rimborso@15"
ITEM "IVA rettifiche@15"
ITEM "D/C"
END
SPREADSHEET F_VISLIQ2 80 5
BEGIN
PROMPT 1 12 "Versamenti"
ITEM "V@1@F"
ITEM "Mese@10"
ITEM "Data@10"
ITEM "Azienda@10"
ITEM "Dipend.@10"
ITEM "Concess.@10"
ITEM "Versamenti@15"
ITEM "D/C"
END
ENDPAGE
ENDMASK
PAGE "Prospetto mensile" -1 -1 50 7
BUTTON 101
BEGIN
PROMPT -11 -2 "DIO CAIMANO"
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
BEGIN
PROMPT 1 5 "Importo a "
ITEM "D|Debito"
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
BEGIN
PROMPT 1 5 "Importo a "
ITEM "D|Debito"
ITEM "C|Credito"
INPUT 105
OUTPUT 105
FLAGS "D"
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK
PAGE "Prospetto versamenti" -1 -1 50 7
BUTTON 101
BEGIN
PROMPT -11 -2 "DIO 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
BEGIN
PROMPT 1 5 "Importo a "
ITEM "D|Debito"
ITEM "C|Credito"
INPUT 105
OUTPUT 105
FLAGS "D"
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

56
cg/cg5501.cpp Executable file

@ -0,0 +1,56 @@
#include "cg5500.h"
#include <utility.h>
bool Visliq_app::look_lim(int m)
{
bool ok = FALSE;
_lim_r->zero();
(*_lim_mese) = format("%d",m);
(*_lim_anno) = _year;
TString s = _lim_r->get("CODTAB");
_lim->read();
return _lim->good();
}
bool Visliq_app::look_del(int month, int type)
{
long ditta = get_firm();
_del->zero();
(*_del_ditta) = ditta;
(*_del_anno) = _year;
(*_del_mese) = month;
(*_del_tipo) = type;
TString ctab = _del->get("CODTAB");
_del->read();
return _del->good();
}
bool Visliq_app::look_lia(int year)
{
if (year == 0) year = _year;
TString16 y; y << year;
_lia->zero();
_lia->put("CODTAB", y);
_lia->read();
return _lia->good();
}
bool Visliq_app::is_trim(int x)
// TRUE se il mese passato e' un trimestre
{ return x == 3 || x == 6 || x == 9 || x == 12; }
bool Visliq_app::is_month_ok(int x, int month)
// TRUE se il mese passato e' compatibile con il regime
// di liquidazione e (opz) non e' maggiore di quello scelto
{
if (month == -1) month = x;
return _freqviva == "M" ?
( x > 0 && x <= month) :
( x <= month && is_trim(x));
}