Programma di gestione parametri IVA
git-svn-id: svn://10.65.10.50/trunk@356 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c78072e5c4
commit
d4bb2684e7
291
cg/cg5300.cpp
Executable file
291
cg/cg5300.cpp
Executable file
@ -0,0 +1,291 @@
|
|||||||
|
// cg5300.cpp
|
||||||
|
// modifica parametri contabilita' relativi alla liquidazione
|
||||||
|
|
||||||
|
#include <relapp.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
#include <urldefid.h>
|
||||||
|
#include <utility.h>
|
||||||
|
#include <msksheet.h>
|
||||||
|
#include <attiv.h>
|
||||||
|
#include <nditte.h>
|
||||||
|
#include "cg5.h"
|
||||||
|
#include "cg5300a.h"
|
||||||
|
|
||||||
|
#define TAB_LIA "LIA"
|
||||||
|
#define TAB_PLA "PLA"
|
||||||
|
|
||||||
|
class CG5300_App : public TRelation_application
|
||||||
|
{
|
||||||
|
TRelation * _rel;
|
||||||
|
TMask * _msk;
|
||||||
|
TLocalisamfile * _attiv;
|
||||||
|
TLocalisamfile * _ditte;
|
||||||
|
TTable * _pla;
|
||||||
|
TArray _atts; // array di stringhe con i codici attivita'
|
||||||
|
TArray _tips; // array di stringhe con i tipi attivita'
|
||||||
|
long _lastditta;
|
||||||
|
TString16 _freqiva;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
virtual bool user_create();
|
||||||
|
virtual bool user_destroy();
|
||||||
|
|
||||||
|
// minchia di cristo
|
||||||
|
virtual TRelation* get_relation() const { return _rel; }
|
||||||
|
virtual TMask* get_mask(int mode) { return _msk; }
|
||||||
|
virtual bool changing_mask(int mode) { return FALSE; }
|
||||||
|
|
||||||
|
// file intertface
|
||||||
|
virtual bool remove() { return TRUE; }
|
||||||
|
virtual bool protected_record(TRectype&) { return TRUE; }
|
||||||
|
virtual void init_query_mode(TMask&);
|
||||||
|
virtual void init_insert_mode(TMask& m);
|
||||||
|
virtual int rewrite(const TMask& m);
|
||||||
|
// non si possono aggiungere record, se non ci sono vengono
|
||||||
|
// creati automaticamente
|
||||||
|
virtual int write(const TMask& m) { return rewrite(m);}
|
||||||
|
virtual int read(TMask& m);
|
||||||
|
|
||||||
|
void init_ditta(TMask&);
|
||||||
|
// notifier
|
||||||
|
static bool sheet_action(int r, KEY k);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
CG5300_App() { _lastditta = 0L;}
|
||||||
|
virtual ~CG5300_App() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void CG5300_App::init_ditta(TMask& m)
|
||||||
|
|
||||||
|
{
|
||||||
|
// qui per evitare casini da cambio ditta
|
||||||
|
const long newditta = get_firm();
|
||||||
|
|
||||||
|
if (newditta != _lastditta)
|
||||||
|
{
|
||||||
|
_lastditta = newditta;
|
||||||
|
_atts.destroy();
|
||||||
|
_attiv->zero();
|
||||||
|
_attiv->put(ATT_CODDITTA, m.get(F_CODDITTA));
|
||||||
|
TRectype r(_attiv->curr());
|
||||||
|
|
||||||
|
for(_attiv->read(_isgteq); _attiv->status() == NOERR && _attiv->curr() == r;
|
||||||
|
_attiv->next())
|
||||||
|
{
|
||||||
|
// istanzia array _atts on le attivita' della ditta corrente
|
||||||
|
_atts.add(new TString(_attiv->get(ATT_CODATT)));
|
||||||
|
_tips.add(new TString(_attiv->get(ATT_TIPOATT)));
|
||||||
|
}
|
||||||
|
_ditte->put(NDT_CODDITTA, _lastditta);
|
||||||
|
if (_ditte->read() == NOERR)
|
||||||
|
_freqiva = _ditte->get(NDT_FREQVIVA);
|
||||||
|
else
|
||||||
|
_freqiva = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// se non c'e' LIA per la ditta, la crea
|
||||||
|
TTable & lia = (TTable &) _rel->lfile();
|
||||||
|
|
||||||
|
const TString16 year(m.get(F_YEAR));
|
||||||
|
|
||||||
|
lia.zero();
|
||||||
|
lia.put("CODTAB", year);
|
||||||
|
lia.put("S7", _freqiva);
|
||||||
|
lia.write();
|
||||||
|
for (int i = 0; i < _atts.items(); i++)
|
||||||
|
{
|
||||||
|
// se non ci sono i record di PLA per le attivita', li crea vuoti
|
||||||
|
const TString& att = (TString&) _atts[i];
|
||||||
|
const TString& tips = (TString&) _tips[i];
|
||||||
|
|
||||||
|
_pla->zero();
|
||||||
|
_pla->put("CODTAB", format("%s%s1", (const char *) year, (const char *) att));
|
||||||
|
_pla->put("S7", tips);
|
||||||
|
_pla->write();
|
||||||
|
_pla->zero();
|
||||||
|
_pla->put("CODTAB", format("%s%s2", (const char *) year, (const char *) att));
|
||||||
|
_pla->put("S7", tips);
|
||||||
|
_pla->write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CG5300_App::user_create()
|
||||||
|
|
||||||
|
{
|
||||||
|
_rel = new TRelation(TAB_LIA);
|
||||||
|
_pla = new TTable(TAB_PLA);
|
||||||
|
_attiv = new TLocalisamfile(LF_ATTIV);
|
||||||
|
_ditte = new TLocalisamfile(LF_NDITTE);
|
||||||
|
_msk = new TMask("cg5300a");
|
||||||
|
((TSheet_field&)_msk->field(F_SHEET_PLA)).set_notify(sheet_action);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CG5300_App::user_destroy()
|
||||||
|
|
||||||
|
{
|
||||||
|
delete _rel;
|
||||||
|
delete _attiv;
|
||||||
|
delete _ditte;
|
||||||
|
delete _msk;
|
||||||
|
delete _pla;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CG5300_App::sheet_action(int r, KEY k)
|
||||||
|
|
||||||
|
{
|
||||||
|
// non si possono cancellare o aggiungere righe in PLA
|
||||||
|
return (k != K_DEL && k != K_INS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CG5300_App::init_query_mode(TMask& m)
|
||||||
|
|
||||||
|
{
|
||||||
|
// svuota tutto
|
||||||
|
TSheet_field& sh = (TSheet_field&)m.field(F_SHEET_PLA);
|
||||||
|
sh.reset();
|
||||||
|
init_ditta(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CG5300_App::init_insert_mode(TMask& m)
|
||||||
|
{
|
||||||
|
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET_PLA);
|
||||||
|
TToken_string tt(60);
|
||||||
|
|
||||||
|
m.set(F_FREQ_VERS, _freqiva);
|
||||||
|
|
||||||
|
for (int i = 0; i < _atts.items(); i++)
|
||||||
|
{
|
||||||
|
TString& att = (TString&)_atts[i];
|
||||||
|
TString& tips = (TString&)_tips[i];
|
||||||
|
|
||||||
|
// cerca l'attivita' in pla
|
||||||
|
tt = "";
|
||||||
|
tt.add(att);
|
||||||
|
tt.add(tips);
|
||||||
|
tt.add("");
|
||||||
|
tt.add("");
|
||||||
|
tt.add("");
|
||||||
|
tt.add("");
|
||||||
|
sf.row(-1) = tt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int CG5300_App::rewrite(const TMask& m)
|
||||||
|
|
||||||
|
{
|
||||||
|
// scrive LIA
|
||||||
|
// scrive tutte le righe di PLA a partire dalle righe sheet
|
||||||
|
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET_PLA);
|
||||||
|
const TString16 year(m.get(F_YEAR));
|
||||||
|
int err = NOERR;
|
||||||
|
|
||||||
|
for (int i = 0; err == NOERR && i < _atts.items(); i++)
|
||||||
|
{
|
||||||
|
TToken_string& tt = sf.row(i);
|
||||||
|
const TString& att = (TString&) _atts[i];
|
||||||
|
const TString16 tips(tt.get(1));
|
||||||
|
|
||||||
|
_pla->zero();
|
||||||
|
_pla->put("CODTAB", format("%s%s1", (const char *) year, (const char *) att));
|
||||||
|
// scrive i campi (vedi a read() per i nomi)
|
||||||
|
// in base alla riga sheet
|
||||||
|
_pla->put("S7", tips); // tipo attivita'
|
||||||
|
_pla->put("R8", tt.get()); // prorata
|
||||||
|
_pla->put("R5", tt.get()); // plafond art. 8
|
||||||
|
_pla->put("R6", tt.get()); // plafond art. 8bis
|
||||||
|
_pla->put("R7", tt.get()); // plafond art. 9
|
||||||
|
if ((err = _pla->write()) == _isreinsert)
|
||||||
|
err = _pla->rewrite();
|
||||||
|
_pla->zero();
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
_pla->put("CODTAB", format("%s%s2", (const char *) year, (const char *) att));
|
||||||
|
// scrive i campi (vedi a read() per i nomi)
|
||||||
|
// in base alla riga sheet
|
||||||
|
_pla->put("S7", tips); // tipo attivita'
|
||||||
|
_pla->put("R8", tt.get()); // prorata
|
||||||
|
_pla->put("R5", tt.get()); // plafond art. 8
|
||||||
|
_pla->put("R6", tt.get()); // plafond art. 8bis
|
||||||
|
_pla->put("R7", tt.get()); // plafond art. 9
|
||||||
|
if ((err = _pla->write()) == _isreinsert)
|
||||||
|
err = _pla->rewrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.autosave();
|
||||||
|
if (err == NOERR) err = _rel->rewrite();
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CG5300_App::read(TMask& m)
|
||||||
|
|
||||||
|
{
|
||||||
|
// legge da LIA (si istanziano i campi credito prec. e Freq. Vers
|
||||||
|
// prende le attivita' una per una da _atts e
|
||||||
|
// crea le righe sheet
|
||||||
|
m.autoload();
|
||||||
|
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET_PLA);
|
||||||
|
TToken_string tt(60);
|
||||||
|
const TString16 year(m.get(F_YEAR));
|
||||||
|
|
||||||
|
sf.reset();
|
||||||
|
for (int i = 0; i < _atts.items(); i++)
|
||||||
|
{
|
||||||
|
TString& att = (TString&)_atts[i];
|
||||||
|
|
||||||
|
// cerca l'attivita' in pla
|
||||||
|
_pla->zero();
|
||||||
|
_pla->put("CODTAB", format("%s%s1", (const char *) year, (const char *) att));
|
||||||
|
tt = "";
|
||||||
|
tt.add(att);
|
||||||
|
if (_pla->read() == NOERR)
|
||||||
|
{
|
||||||
|
tt.add(_pla->get("S7")); // tipo attivita'
|
||||||
|
tt.add(_pla->get("R8")); // prorata
|
||||||
|
tt.add(_pla->get("R5")); // plafond art. 8
|
||||||
|
tt.add(_pla->get("R6")); // plafond art. 8bis
|
||||||
|
tt.add(_pla->get("R7")); // plafond art. 9
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tt.add("");
|
||||||
|
tt.add("");
|
||||||
|
tt.add("");
|
||||||
|
tt.add("");
|
||||||
|
tt.add("");
|
||||||
|
}
|
||||||
|
sf.row(-1) = tt;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NOERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int cg5300(int argc, char* argv[])
|
||||||
|
|
||||||
|
{
|
||||||
|
CG5300_App a;
|
||||||
|
a.run(argc, argv, "Parametri liquidazione");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
14
cg/cg5300a.h
Executable file
14
cg/cg5300a.h
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#define F_YEAR 301
|
||||||
|
#define F_CRED_PREC 302
|
||||||
|
#define F_FREQ_VERS 303
|
||||||
|
#define F_SHEET_PLA 304
|
||||||
|
#define F_CODDITTA 305
|
||||||
|
#define F_RAGSOC 306
|
||||||
|
#define F_CRED_COST 308
|
||||||
|
#define F_CODATT 101
|
||||||
|
#define F_DESATT 150
|
||||||
|
#define F_TIPOATT 102
|
||||||
|
#define F_PRORATA 103
|
||||||
|
#define F_P8 104
|
||||||
|
#define F_P8B 105
|
||||||
|
#define F_P9 106
|
173
cg/cg5300a.uml
Executable file
173
cg/cg5300a.uml
Executable file
@ -0,0 +1,173 @@
|
|||||||
|
#include "cg5300a.h"
|
||||||
|
TOOLBAR "" 0 20 0 2
|
||||||
|
|
||||||
|
#include <toolbar.h>
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Parametri liquidazione" -1 -1 78 15
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 71 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 0 "Ditta"
|
||||||
|
FLAGS "R"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODDITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 6 1 "Codice "
|
||||||
|
FLAGS "DFGR"
|
||||||
|
USE LF_NDITTE
|
||||||
|
INPUT CODDITTA F_CODDITTA
|
||||||
|
DISPLAY "Codice" CODDITTA
|
||||||
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
|
OUTPUT F_CODDITTA CODDITTA
|
||||||
|
OUTPUT F_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 20 1 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_YEAR 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 6 3 "Anno "
|
||||||
|
FIELD LIA->CODTAB
|
||||||
|
USE LIA
|
||||||
|
INPUT CODTAB F_YEAR
|
||||||
|
DISPLAY "Anno@20" CODTAB
|
||||||
|
OUTPUT F_YEAR CODTAB
|
||||||
|
KEY 1
|
||||||
|
FLAGS "RZ"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD MASK ""
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 71 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 4 "Parametri ditta"
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_FREQ_VERS 14
|
||||||
|
BEGIN
|
||||||
|
PROMPT 6 5 "Frequenza versamenti "
|
||||||
|
ITEM "M|Mensile"
|
||||||
|
ITEM "T|Trimestrale"
|
||||||
|
FIELD LIA->S7
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CRED_PREC 15 0
|
||||||
|
BEGIN
|
||||||
|
PROMPT 6 6 "Credito precedente "
|
||||||
|
FIELD LIA->R0
|
||||||
|
PICTURE "."
|
||||||
|
FLAGS "R"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CRED_COST 15 0
|
||||||
|
BEGIN
|
||||||
|
PROMPT 6 7 "Credito di costo "
|
||||||
|
FIELD LIA->R5
|
||||||
|
PICTURE "."
|
||||||
|
FLAGS "R"
|
||||||
|
END
|
||||||
|
|
||||||
|
SPREADSHEET F_SHEET_PLA 75 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 10 "Parametri attivita'"
|
||||||
|
ITEM "Attivita'"
|
||||||
|
ITEM "Tipo"
|
||||||
|
ITEM "Pro-rata@15"
|
||||||
|
ITEM "Plafond art.8@15"
|
||||||
|
ITEM "Plafond art.8b@15"
|
||||||
|
ITEM "Plafond art.9@15"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
PAGE "" -1 -1 65 16
|
||||||
|
|
||||||
|
NUMBER F_CODATT 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 1 "Codice Attivita' "
|
||||||
|
FLAGS "DURZG"
|
||||||
|
USE %AIS
|
||||||
|
INPUT CODTAB F_CODATT
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_CODATT CODTAB
|
||||||
|
OUTPUT F_DESATT S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESATT 50 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 31 1 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_TIPOATT 26
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 3 "Tipo "
|
||||||
|
FLAGS "R"
|
||||||
|
ITEM " |Altre"
|
||||||
|
ITEM "M|Mista"
|
||||||
|
ITEM "E|Mista evidenziata"
|
||||||
|
ITEM "S|Servizio o mista generica"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_PRORATA 15 0
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 5 "Pro-Rata "
|
||||||
|
PICTURE "."
|
||||||
|
FLAGS "R"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_P8 15 0
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 7 "Plafond art. 8 "
|
||||||
|
PICTURE "."
|
||||||
|
FLAGS "R"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_P8B 15 0
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 9 "Plafond art. 8b "
|
||||||
|
PICTURE "."
|
||||||
|
FLAGS "R"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_P9 15 0
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 11 "Plafond art. 9 "
|
||||||
|
PICTURE "."
|
||||||
|
FLAGS "R"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
BUTTON DLG_OK 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -13 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -23 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_NULL 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -33 -1 "Azzera"
|
||||||
|
MESSAGE RESET,1@
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user