Patch level : 10.0
Files correlati : fe0100a.msk fetbcon.msk fe0.exe Ricompilazione Demo : [ ] Commento : Prima versione che tenta di rispettare le specifiche in "totalone.pdf" (nome originale del file ministeriale ottenuto tramite copia e incolla casuale) git-svn-id: svn://10.65.10.50/branches/R_10_00@22372 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
fbc795ba4a
commit
b3ac97fea4
350
fe/fe0100.cpp
350
fe/fe0100.cpp
@ -52,6 +52,102 @@ static const TString& provincia_di(const TString& codcom)
|
|||||||
return cache().get(LF_COMUNI, key, COM_PROVCOM);
|
return cache().get(LF_COMUNI, key, COM_PROVCOM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TContratti
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
const TRectype& contratto(char tipocf, long codcf, const char* codcont)
|
||||||
|
{
|
||||||
|
TString80 key; key.format("%c%6ld%s", tipocf, codcf, codcont);
|
||||||
|
TRectype& c = (TRectype&)cache().get("&CON", key);
|
||||||
|
if (c.empty())
|
||||||
|
{
|
||||||
|
int primo_anno = c.get_int("I0");
|
||||||
|
if (primo_anno < 2010)
|
||||||
|
{
|
||||||
|
const TDate inizio = c.get("D0");
|
||||||
|
primo_anno = inizio.year();
|
||||||
|
if (primo_anno < 2010)
|
||||||
|
primo_anno = 2010;
|
||||||
|
c.put("I0", primo_anno);
|
||||||
|
}
|
||||||
|
|
||||||
|
real importo = c.get("R0");
|
||||||
|
if (importo <= ZERO)
|
||||||
|
{
|
||||||
|
importo = primo_anno > 2010 ? 3000 : 25000;
|
||||||
|
c.put("R0", importo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool importo_contratto(const TRectype& c, int anno, real& importo, real& imposta)
|
||||||
|
{
|
||||||
|
if (c.empty() || anno < 2010)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
const int primo_anno = c.get_int("I0");
|
||||||
|
int offset = (anno - primo_anno)*2;
|
||||||
|
if (offset < 0) offset = 0;
|
||||||
|
if (offset > 6) offset = 6;
|
||||||
|
|
||||||
|
for (int r = offset; r >= 0; r-=2)
|
||||||
|
{
|
||||||
|
char erre[3] = { 'R', r+'0', '\0' };
|
||||||
|
importo = c.get_real(erre);
|
||||||
|
if (importo > ZERO)
|
||||||
|
{
|
||||||
|
erre[1]++;
|
||||||
|
imposta = c.get_real(erre);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool importo_figli_contratto(const TRectype& c, int anno, real& importo, real& imposta)
|
||||||
|
{
|
||||||
|
const TString& codtab = c.get("CODTAB");
|
||||||
|
const TString& prefix = codtab.left(7);
|
||||||
|
const TString& suffix = codtab.mid(7);
|
||||||
|
|
||||||
|
TString query;
|
||||||
|
query << "USE &CON SELECT S1=\"" << suffix << '\"'
|
||||||
|
<< "\nFROM CODTAB=\"" << prefix << '\"'
|
||||||
|
<< "\nTO CODTAB=\"" << prefix << '\"';
|
||||||
|
|
||||||
|
TISAM_recordset recset(query);
|
||||||
|
|
||||||
|
importo = imposta = ZERO;
|
||||||
|
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||||
|
{
|
||||||
|
real imp, iva;
|
||||||
|
importo_figli_contratto(recset.cursor()->curr(), anno, imp, iva);
|
||||||
|
importo += imp;
|
||||||
|
imposta += iva;
|
||||||
|
}
|
||||||
|
if (importo <= ZERO)
|
||||||
|
importo_contratto(c, anno, importo, imposta);
|
||||||
|
|
||||||
|
return !importo.is_zero();
|
||||||
|
}
|
||||||
|
|
||||||
|
real importo_totale_contratto(char tipocf, long codcf, const char* codcont, int anno,
|
||||||
|
real& importo, real& imposta)
|
||||||
|
{
|
||||||
|
importo = imposta = ZERO;
|
||||||
|
const TRectype& c = contratto(tipocf, codcf, codcont);
|
||||||
|
if (!c.empty() && anno >= 2010)
|
||||||
|
{
|
||||||
|
const TString& padre = c.get("S1");
|
||||||
|
if (padre.full())
|
||||||
|
importo_totale_contratto(tipocf, codcf, padre, anno, importo, imposta);
|
||||||
|
else
|
||||||
|
importo_figli_contratto(c, anno, importo, imposta);
|
||||||
|
}
|
||||||
|
return importo > ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TAnagrafica
|
// TAnagrafica
|
||||||
@ -61,9 +157,10 @@ class TAnagrafica : public TObject
|
|||||||
{
|
{
|
||||||
char _tipo; // F o G
|
char _tipo; // F o G
|
||||||
TString16 _cofi, _paiv;
|
TString16 _cofi, _paiv;
|
||||||
TString80 _key, _ragsoc;
|
TString _ragsoc;
|
||||||
TString4 _com_nasc, _com_res;
|
TString4 _com_nasc, _com_res;
|
||||||
TDate _data_nasc;
|
TDate _data_nasc;
|
||||||
|
int _allegato, _stato_estero;
|
||||||
|
|
||||||
TAnagrafica(const TAnagrafica&) { CHECK(false, "Can't copy TAnagrafica"); }
|
TAnagrafica(const TAnagrafica&) { CHECK(false, "Can't copy TAnagrafica"); }
|
||||||
|
|
||||||
@ -71,7 +168,6 @@ public:
|
|||||||
virtual bool ok() const { return _tipo=='F' || _tipo == 'G'; }
|
virtual bool ok() const { return _tipo=='F' || _tipo == 'G'; }
|
||||||
bool fisica() const { return _tipo == 'F'; }
|
bool fisica() const { return _tipo == 'F'; }
|
||||||
bool giuridica() const { return _tipo == 'G'; }
|
bool giuridica() const { return _tipo == 'G'; }
|
||||||
const TString& key() const { return _key; }
|
|
||||||
|
|
||||||
const TString& codice_fiscale() const { return _cofi; }
|
const TString& codice_fiscale() const { return _cofi; }
|
||||||
const TString& partita_IVA() const { return _paiv; }
|
const TString& partita_IVA() const { return _paiv; }
|
||||||
@ -81,6 +177,8 @@ public:
|
|||||||
const TString& nome() const { return _ragsoc.mid(30,20); }
|
const TString& nome() const { return _ragsoc.mid(30,20); }
|
||||||
char sesso() const { return (_cofi[9] >= '4') ? 'F' : 'M'; }
|
char sesso() const { return (_cofi[9] >= '4') ? 'F' : 'M'; }
|
||||||
const TDate& data_nascita() const { return _data_nasc; }
|
const TDate& data_nascita() const { return _data_nasc; }
|
||||||
|
int stato_estero() const { return _stato_estero; }
|
||||||
|
int inserimento_in_allegato() const { return _allegato; }
|
||||||
|
|
||||||
const TString& comune_nascita() const { return comune_di(_com_nasc); }
|
const TString& comune_nascita() const { return comune_di(_com_nasc); }
|
||||||
const TString& provincia_nascita() const { return provincia_di(_com_nasc); }
|
const TString& provincia_nascita() const { return provincia_di(_com_nasc); }
|
||||||
@ -88,25 +186,27 @@ public:
|
|||||||
const TString& provincia_residenza() const { return provincia_di(_com_res); }
|
const TString& provincia_residenza() const { return provincia_di(_com_res); }
|
||||||
|
|
||||||
bool init(const TRectype& rec);
|
bool init(const TRectype& rec);
|
||||||
bool init(int num, const char* codice) { return init(cache().get(num, codice)); }
|
bool init(int num, const TString& codice) { return init(cache().get(num, codice)); }
|
||||||
bool init(int num, long codice) { return init(cache().get(num, codice)); }
|
bool init(int num, long codice) { return init(cache().get(num, codice)); }
|
||||||
bool init(int num, char tipo, long codice);
|
bool init(int num, char tipo, long codice);
|
||||||
|
bool init(char tipo, long codice, const TString& ocfpi);
|
||||||
|
|
||||||
TAnagrafica() : _tipo('\0') {}
|
TAnagrafica() : _tipo('\0') {}
|
||||||
TAnagrafica(int num, long codice) { init(num, codice); }
|
TAnagrafica(int lognum, const TString& codice) { init(lognum, codice); }
|
||||||
TAnagrafica(int num, char tipo, long codice) { init(num, tipo, codice); }
|
TAnagrafica(int lognum, long codice) { init(lognum, codice); }
|
||||||
|
TAnagrafica(int lognum, char tipo, long codice) { init(lognum, tipo, codice); }
|
||||||
|
TAnagrafica(char tipo, long codice, const TString& ocfpi) { init(tipo, codice, ocfpi); }
|
||||||
TAnagrafica(const TRectype& rec) { init(rec); }
|
TAnagrafica(const TRectype& rec) { init(rec); }
|
||||||
};
|
};
|
||||||
|
|
||||||
bool TAnagrafica::init(const TRectype& rec)
|
bool TAnagrafica::init(const TRectype& rec)
|
||||||
{
|
{
|
||||||
_tipo = '\0';
|
_tipo = '\0';
|
||||||
_key.cut(0);
|
_stato_estero = 0;
|
||||||
|
_allegato = 0;
|
||||||
if (rec.empty())
|
if (rec.empty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
_key << rec.num() << '|' << rec.build_key(1);
|
|
||||||
|
|
||||||
switch (rec.num())
|
switch (rec.num())
|
||||||
{
|
{
|
||||||
case LF_OCCAS:
|
case LF_OCCAS:
|
||||||
@ -125,6 +225,8 @@ bool TAnagrafica::init(const TRectype& rec)
|
|||||||
_data_nasc = rec.get(OCC_DNASC);
|
_data_nasc = rec.get(OCC_DNASC);
|
||||||
_com_nasc = rec.get(OCC_COMNASC);
|
_com_nasc = rec.get(OCC_COMNASC);
|
||||||
_com_res = rec.get(OCC_COM);
|
_com_res = rec.get(OCC_COM);
|
||||||
|
_stato_estero = rec.get_int(OCC_STATO);
|
||||||
|
_allegato = _paiv.blank() ? 6 : 2;
|
||||||
break;
|
break;
|
||||||
case LF_ANAG:
|
case LF_ANAG:
|
||||||
_tipo = rec.get_char(ANA_TIPOA);
|
_tipo = rec.get_char(ANA_TIPOA);
|
||||||
@ -144,6 +246,8 @@ bool TAnagrafica::init(const TRectype& rec)
|
|||||||
_data_nasc = anafis.get(ANF_DATANASC);
|
_data_nasc = anafis.get(ANF_DATANASC);
|
||||||
_com_nasc = rec.get(ANF_COMNASC);
|
_com_nasc = rec.get(ANF_COMNASC);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
_tipo = 'G';
|
||||||
break;
|
break;
|
||||||
case LF_NDITTE:
|
case LF_NDITTE:
|
||||||
{
|
{
|
||||||
@ -156,19 +260,22 @@ bool TAnagrafica::init(const TRectype& rec)
|
|||||||
_tipo = rec.get_char(CLI_TIPOAPER);
|
_tipo = rec.get_char(CLI_TIPOAPER);
|
||||||
if (_tipo == 'F')
|
if (_tipo == 'F')
|
||||||
init(LF_ANAG, _tipo, rec.get_long(CLI_CODANAGPER));
|
init(LF_ANAG, _tipo, rec.get_long(CLI_CODANAGPER));
|
||||||
|
else
|
||||||
|
_tipo = 'G';
|
||||||
// Assegno codice fiscale e partita IVA se validi, altrimenti mantengo quelli dell'anagrafica
|
// Assegno codice fiscale e partita IVA se validi, altrimenti mantengo quelli dell'anagrafica
|
||||||
if (rec.get(CLI_COFI).not_empty())
|
if (rec.get(CLI_COFI).not_empty())
|
||||||
_cofi = rec.get(CLI_COFI);
|
_cofi = rec.get(CLI_COFI);
|
||||||
if (rec.get(CLI_PAIV).not_empty())
|
if (rec.get(CLI_PAIV).not_empty())
|
||||||
_paiv = rec.get(CLI_PAIV);
|
_paiv = rec.get(CLI_PAIV);
|
||||||
_ragsoc = rec.get(CLI_RAGSOC); _ragsoc.upper(); // Prevale sempre la ragione sociale del cliente
|
// Prevale sempre la ragione sociale del cliente: "Il cliente ha sempre ragione".
|
||||||
|
_ragsoc = rec.get(CLI_RAGSOC); _ragsoc.upper();
|
||||||
|
_stato_estero = rec.get_int(CLI_STATOCF);
|
||||||
|
_allegato = rec.get_int(CLI_ALLEG);
|
||||||
break;
|
break;
|
||||||
case LF_MOV:
|
case LF_MOV:
|
||||||
{
|
return init(rec.get_char(MOV_TIPO), rec.get_long(MOV_CODCF), rec.get(MOV_OCFPI));
|
||||||
const TString& ocfpi = rec.get(MOV_OCFPI);
|
case LF_ALLEG:
|
||||||
return ocfpi.full() ? init(LF_OCCAS, ocfpi) : init(LF_CLIFO, rec.get_char(MOV_TIPO), rec.get_long(MOV_CODCF));
|
return init(rec.get_char(ALL_TIPOCF), rec.get_long(ALL_CODCF), rec.get(ALL_OCFPI));
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
CHECKD(false, "Record non valido per TAnagrafica ", rec.num());
|
CHECKD(false, "Record non valido per TAnagrafica ", rec.num());
|
||||||
break;
|
break;
|
||||||
@ -183,6 +290,16 @@ bool TAnagrafica::init(int num, char tipo, long codice)
|
|||||||
return init(cache().get(num, key));
|
return init(cache().get(num, key));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TAnagrafica::init(char tipo, long codice, const TString& ocfpi)
|
||||||
|
{
|
||||||
|
bool done = false;
|
||||||
|
if (ocfpi.full())
|
||||||
|
done = init(LF_OCCAS, ocfpi);
|
||||||
|
if (!done)
|
||||||
|
done = init(LF_CLIFO, tipo, codice);
|
||||||
|
return done;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TDati_rilevanti_trc
|
// TDati_rilevanti_trc
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -374,11 +491,12 @@ protected:
|
|||||||
void init();
|
void init();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void set(unsigned int n, const TString& v) { TAS400_recordset::set(n-1, TVariant(v)); }
|
bool set(unsigned int n, const TVariant& v) { return TAS400_recordset::set(n-1, v); }
|
||||||
void set(unsigned int n, char v) { TString4 str; str << v; TAS400_recordset::set(n-1, TVariant(str)); }
|
bool set(unsigned int n, const TString& v) { return TAS400_recordset::set(n-1, TVariant(v)); }
|
||||||
void set(unsigned int n, int v) { TAS400_recordset::set(n-1, TVariant(long(v))); }
|
bool set(unsigned int n, char v) { TString4 str; str << v; return TAS400_recordset::set(n-1, TVariant(str)); }
|
||||||
void set(unsigned int n, const real& v) { TAS400_recordset::set(n-1, v.integer()); }
|
bool set(unsigned int n, int v) { return TAS400_recordset::set(n-1, TVariant(long(v))); }
|
||||||
void set(unsigned int n, const TDate& v) { TAS400_recordset::set(n-1, TVariant(v)); }
|
bool set(unsigned int n, const real& v) { return TAS400_recordset::set(n-1, v.integer()); }
|
||||||
|
bool set(unsigned int n, const TDate& v) { return TAS400_recordset::set(n-1, TVariant(v)); }
|
||||||
void add_control_rec(int zero_o_nove);
|
void add_control_rec(int zero_o_nove);
|
||||||
TDati_rilevanti_set(int anno);
|
TDati_rilevanti_set(int anno);
|
||||||
};
|
};
|
||||||
@ -459,6 +577,10 @@ protected:
|
|||||||
TRecnotype nuovo_progr() const;
|
TRecnotype nuovo_progr() const;
|
||||||
bool check_rows(bool show_error);
|
bool check_rows(bool show_error);
|
||||||
|
|
||||||
|
bool send_nc(const TISAM_recordset& alleg, TDati_rilevanti_set& operaz);
|
||||||
|
bool send_fatt(const TISAM_recordset& alleg, TDati_rilevanti_set& operaz);
|
||||||
|
bool send_rec(const TISAM_recordset& alleg, TDati_rilevanti_set& operaz);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TRecnotype genera_alleg();
|
TRecnotype genera_alleg();
|
||||||
bool elabora_alleg();
|
bool elabora_alleg();
|
||||||
@ -466,7 +588,7 @@ public:
|
|||||||
bool azzera_alleg(bool manual, TRecnotype first) const;
|
bool azzera_alleg(bool manual, TRecnotype first) const;
|
||||||
bool elabora_movimento(const TRectype& mov, TFast_isamfile& falleg, TRecnotype& progr, TLog_report& log);
|
bool elabora_movimento(const TRectype& mov, TFast_isamfile& falleg, TRecnotype& progr, TLog_report& log);
|
||||||
bool salva_allegato(const TRectype& mov, TFast_isamfile& falleg, TRecnotype& progr,
|
bool salva_allegato(const TRectype& mov, TFast_isamfile& falleg, TRecnotype& progr,
|
||||||
const real& corrispettivo, const real& imposta, int tipimp, int tipope,
|
const real& corrispettivo, const real& imposta, int natope, int tipope,
|
||||||
TLog_report& log);
|
TLog_report& log);
|
||||||
bool convalida_clifo(const TRectype& mov, TLog_report& log) const;
|
bool convalida_clifo(const TRectype& mov, TLog_report& log) const;
|
||||||
bool convalida_mov(const TRectype& mov, TLog_report& log) const;
|
bool convalida_mov(const TRectype& mov, TLog_report& log) const;
|
||||||
@ -562,23 +684,23 @@ bool TDati_rilevanti_msk::convalida_mov(const TRectype& mov, TLog_report& log) c
|
|||||||
|
|
||||||
|
|
||||||
bool TDati_rilevanti_msk::salva_allegato(const TRectype& mov, TFast_isamfile& falleg, TRecnotype& progr,
|
bool TDati_rilevanti_msk::salva_allegato(const TRectype& mov, TFast_isamfile& falleg, TRecnotype& progr,
|
||||||
const real& corrispettivo, const real& imposta, int tipimp, int natope,
|
const real& corrispettivo, const real& imposta, int natope, int tipope,
|
||||||
TLog_report& log)
|
TLog_report& log)
|
||||||
{
|
{
|
||||||
bool update_contract = false;
|
bool update_contract = false;
|
||||||
|
const int anno = mov.get_int(MOV_ANNOIVA);
|
||||||
|
|
||||||
falleg.zero();
|
falleg.zero();
|
||||||
TRectype& alleg = falleg.curr();
|
TRectype& alleg = falleg.curr();
|
||||||
alleg.put(ALL_ANNO, mov.get(MOV_ANNOIVA));
|
alleg.put(ALL_ANNO, anno);
|
||||||
alleg.put(ALL_PROGR, progr);
|
alleg.put(ALL_PROGR, progr);
|
||||||
|
|
||||||
TString80 contratto = mov.get(MOV_CONTRATTO);
|
const TString80 contratto = mov.get(MOV_CONTRATTO);
|
||||||
real totale;
|
|
||||||
if (contratto.full())
|
if (contratto.full())
|
||||||
{
|
{
|
||||||
TString80 key;
|
TString80 key;
|
||||||
key.format("%c%06ld_%s_%d%d", mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF),
|
key.format("%c%06ld_%s_%d%d", mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF),
|
||||||
(const char*)contratto, tipimp, natope);
|
(const char*)contratto, natope, tipope);
|
||||||
real* first_progr = (real*)_contratti.objptr(key);
|
real* first_progr = (real*)_contratti.objptr(key);
|
||||||
if (first_progr == NULL) // Primo movimento del contratto
|
if (first_progr == NULL) // Primo movimento del contratto
|
||||||
{
|
{
|
||||||
@ -595,7 +717,7 @@ bool TDati_rilevanti_msk::salva_allegato(const TRectype& mov, TFast_isamfile& fa
|
|||||||
if (falleg.read() != NOERR)
|
if (falleg.read() != NOERR)
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg << "Impossibile aggiornare record da contratto: " << key;
|
msg << TR("Impossibile aggiornare record da contratto: ") << key;
|
||||||
log.log_error(msg);
|
log.log_error(msg);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -607,6 +729,11 @@ bool TDati_rilevanti_msk::salva_allegato(const TRectype& mov, TFast_isamfile& fa
|
|||||||
alleg.put(ALL_NUMREG, mov.get(MOV_NUMREG));
|
alleg.put(ALL_NUMREG, mov.get(MOV_NUMREG));
|
||||||
alleg.put(ALL_DATAREG, mov.get(MOV_DATAREG));
|
alleg.put(ALL_DATAREG, mov.get(MOV_DATAREG));
|
||||||
|
|
||||||
|
int modpag = mov.get_int(MOV_MODPAG);
|
||||||
|
if (modpag <= 0)
|
||||||
|
modpag = contratto.full() ? 1 : 3;
|
||||||
|
alleg.put(ALL_MODPAG, modpag);
|
||||||
|
|
||||||
int err = 0;
|
int err = 0;
|
||||||
if (update_contract)
|
if (update_contract)
|
||||||
{
|
{
|
||||||
@ -618,15 +745,24 @@ bool TDati_rilevanti_msk::salva_allegato(const TRectype& mov, TFast_isamfile& fa
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Registro tutti i dati del cliente e gli importi
|
// Registro tutti i dati del cliente e gli importi
|
||||||
alleg.put(ALL_TIPOCF, mov.get(MOV_TIPO));
|
const char tipocf = mov.get_char(MOV_TIPO);
|
||||||
alleg.put(ALL_CODCF, mov.get(MOV_CODCF));
|
const long codcf = mov.get_long(MOV_CODCF);
|
||||||
|
alleg.put(ALL_TIPOCF, tipocf);
|
||||||
|
alleg.put(ALL_CODCF, codcf);
|
||||||
alleg.put(ALL_OCFPI, mov.get(MOV_OCFPI));
|
alleg.put(ALL_OCFPI, mov.get(MOV_OCFPI));
|
||||||
alleg.put(ALL_TIPOPE, tipimp);
|
|
||||||
alleg.put(ALL_NATOPE, natope);
|
alleg.put(ALL_NATOPE, natope);
|
||||||
|
alleg.put(ALL_TIPOPE, tipope);
|
||||||
alleg.put(ALL_IMPORTO, corrispettivo);
|
alleg.put(ALL_IMPORTO, corrispettivo);
|
||||||
alleg.put(ALL_IMPOSTA, imposta);
|
alleg.put(ALL_IMPOSTA, imposta);
|
||||||
|
|
||||||
|
if (contratto.full())
|
||||||
|
{
|
||||||
alleg.put(ALL_CONTRATTO, contratto);
|
alleg.put(ALL_CONTRATTO, contratto);
|
||||||
alleg.put(ALL_TOTALE, totale);
|
real importotot, impostatot;
|
||||||
|
importo_totale_contratto(tipocf, codcf, contratto, anno, importotot, impostatot);
|
||||||
|
alleg.put(ALL_IMPORTOTOT, importotot);
|
||||||
|
alleg.put(ALL_IMPOSTATOT, impostatot);
|
||||||
|
}
|
||||||
|
|
||||||
err = falleg.rewrite_write();
|
err = falleg.rewrite_write();
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
@ -787,7 +923,7 @@ bool TDati_rilevanti_msk::azzera_alleg(bool manual, TRecnotype first) const
|
|||||||
query << "USE " << LF_ALLEG;
|
query << "USE " << LF_ALLEG;
|
||||||
|
|
||||||
if (manual) // Elimina i record immessi manualmente ed ignorati
|
if (manual) // Elimina i record immessi manualmente ed ignorati
|
||||||
query << "\nSELECT " << ALL_IGNORA << "=='X'";
|
query << "\nSELECT " << ALL_IGNORA << "!=\"\"";
|
||||||
|
|
||||||
if (daprog > 0)query << "\nFROM " << limit << daprog;
|
if (daprog > 0)query << "\nFROM " << limit << daprog;
|
||||||
if (aprog > 0) query << "\nTO " << limit << aprog;
|
if (aprog > 0) query << "\nTO " << limit << aprog;
|
||||||
@ -796,7 +932,7 @@ bool TDati_rilevanti_msk::azzera_alleg(bool manual, TRecnotype first) const
|
|||||||
|
|
||||||
const TRecnotype items = alleg.items();
|
const TRecnotype items = alleg.items();
|
||||||
TString str_pi;
|
TString str_pi;
|
||||||
str_pi << TR("Compattazione dati rilevanti ") << anno;
|
str_pi << TR("Compattazione dati ") << anno;
|
||||||
|
|
||||||
TProgind pi(items, str_pi);
|
TProgind pi(items, str_pi);
|
||||||
const TRectype& rec = alleg.cursor()->curr();
|
const TRectype& rec = alleg.cursor()->curr();
|
||||||
@ -812,19 +948,16 @@ bool TDati_rilevanti_msk::azzera_alleg(bool manual, TRecnotype first) const
|
|||||||
return items > 0;
|
return items > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cerca l'ultimo numero di riga immesso manualmente
|
||||||
TRecnotype TDati_rilevanti_msk::last_user_progr() const
|
TRecnotype TDati_rilevanti_msk::last_user_progr() const
|
||||||
{
|
{
|
||||||
const int anno = get_int(F_ANNO);
|
const int anno = get_int(F_ANNO);
|
||||||
|
|
||||||
TString limit;
|
|
||||||
limit << ALL_ANNO << '=' << anno << ' '
|
|
||||||
<< ALL_PROGR << '=';
|
|
||||||
|
|
||||||
TRecnotype progr = MANUAL_ROW;
|
TRecnotype progr = MANUAL_ROW;
|
||||||
TString query;
|
TString query;
|
||||||
query << "USE " << LF_ALLEG
|
query << "USE " << LF_ALLEG
|
||||||
<< "\nFROM " << limit << MANUAL_ROW
|
<< "\nFROM " << ALL_ANNO << '=' << anno << ' ' << ALL_PROGR << '=' << MANUAL_ROW
|
||||||
<< "\nTO " << limit << (progr+90000);
|
<< "\nTO " << ALL_ANNO << '=' << anno;
|
||||||
TISAM_recordset alleg(query);
|
TISAM_recordset alleg(query);
|
||||||
if (alleg.move_last())
|
if (alleg.move_last())
|
||||||
progr = alleg.get(ALL_PROGR).as_int();
|
progr = alleg.get(ALL_PROGR).as_int();
|
||||||
@ -833,12 +966,6 @@ TRecnotype TDati_rilevanti_msk::last_user_progr() const
|
|||||||
|
|
||||||
TRecnotype TDati_rilevanti_msk::nuovo_progr() const
|
TRecnotype TDati_rilevanti_msk::nuovo_progr() const
|
||||||
{
|
{
|
||||||
const int anno = get_int(F_ANNO);
|
|
||||||
|
|
||||||
TString limit;
|
|
||||||
limit << ALL_ANNO << '=' << anno << ' '
|
|
||||||
<< ALL_PROGR << '=';
|
|
||||||
|
|
||||||
TRecnotype progr = last_user_progr();
|
TRecnotype progr = last_user_progr();
|
||||||
|
|
||||||
TSheet_field& righe = sfield(F_RIGHE);
|
TSheet_field& righe = sfield(F_RIGHE);
|
||||||
@ -873,7 +1000,7 @@ TRecnotype TDati_rilevanti_msk::genera_alleg()
|
|||||||
TFast_isamfile fmov(LF_MOV);
|
TFast_isamfile fmov(LF_MOV);
|
||||||
|
|
||||||
TString query;
|
TString query;
|
||||||
query << "USE MOV KEY 2 SELECT TIPO!=''"
|
query << "USE MOV KEY 2 SELECT CODCF!=''"
|
||||||
<< "\nFROM DATAREG=01-01-" << anno
|
<< "\nFROM DATAREG=01-01-" << anno
|
||||||
<< "\nTO DATAREG=31-12-" << anno;
|
<< "\nTO DATAREG=31-12-" << anno;
|
||||||
TISAM_recordset mov(query);
|
TISAM_recordset mov(query);
|
||||||
@ -899,7 +1026,7 @@ TRecnotype TDati_rilevanti_msk::genera_alleg()
|
|||||||
// Analizza tutti i movimenti dell'anno dell'attività corrente e genera i record rilevanti
|
// Analizza tutti i movimenti dell'anno dell'attività corrente e genera i record rilevanti
|
||||||
bool TDati_rilevanti_msk::elabora_alleg()
|
bool TDati_rilevanti_msk::elabora_alleg()
|
||||||
{
|
{
|
||||||
if (!check_fields()) // Controlla che anno ed attività siano validi
|
if (!check_fields()) // Controlla che l'anno sia valido
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
_send_all = get_bool(F_SENDALL);
|
_send_all = get_bool(F_SENDALL);
|
||||||
@ -909,17 +1036,105 @@ bool TDati_rilevanti_msk::elabora_alleg()
|
|||||||
return prog > 1;
|
return prog > 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TDati_rilevanti_msk::send_nc(const TISAM_recordset& alleg, TDati_rilevanti_set& operaz)
|
||||||
|
{
|
||||||
|
return false; // TBI
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDati_rilevanti_msk::send_fatt(const TISAM_recordset& alleg, TDati_rilevanti_set& operaz)
|
||||||
|
{
|
||||||
|
const TAnagrafica anag(alleg.cursor()->curr());
|
||||||
|
|
||||||
|
if (anag.stato_estero() > 0)
|
||||||
|
{
|
||||||
|
operaz.new_rec("3"); // Operazioni con soggetti non residenti
|
||||||
|
if (anag.fisica())
|
||||||
|
{
|
||||||
|
operaz.set(2, anag.cognome());
|
||||||
|
operaz.set(3, anag.nome());
|
||||||
|
operaz.set(4, anag.data_nascita());
|
||||||
|
operaz.set(5, anag.comune_nascita());
|
||||||
|
operaz.set(6, anag.provincia_nascita());
|
||||||
|
operaz.set(7, anag.stato_estero());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
operaz.set(8, anag.ragione_sociale());
|
||||||
|
operaz.set(9, anag.comune_residenza());
|
||||||
|
operaz.set(10, anag.stato_estero());
|
||||||
|
operaz.set(11, EMPTY_STRING); // TBI? Indirizzo estero
|
||||||
|
}
|
||||||
|
operaz.set(12, alleg.get(ALL_DATAREG).as_date());
|
||||||
|
operaz.set(13, alleg.get(ALL_MODPAG).as_int());
|
||||||
|
operaz.set(14, alleg.get(ALL_IMPORTO).as_real());
|
||||||
|
operaz.set(15, alleg.get(ALL_IMPOSTA).as_real());
|
||||||
|
operaz.set(16, alleg.get(ALL_NATOPE).as_int());
|
||||||
|
operaz.set(17, alleg.get(ALL_TIPOPE).as_int());
|
||||||
|
operaz.set(18, alleg.get(ALL_IMPORTOTOT).as_real());
|
||||||
|
operaz.set(19, alleg.get(ALL_IMPOSTATOT).as_real());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const TString& paiv = anag.partita_IVA();
|
||||||
|
if (paiv.blank())
|
||||||
|
{
|
||||||
|
operaz.new_rec("1"); // Operazioni con soggetti residenti non titolari di partita IVA
|
||||||
|
operaz.set(2, anag.codice_fiscale());
|
||||||
|
operaz.set(3, alleg.get(ALL_DATAREG).as_date());
|
||||||
|
operaz.set(4, alleg.get(ALL_MODPAG).as_int());
|
||||||
|
real importo = alleg.get(ALL_IMPORTO).as_real();
|
||||||
|
importo += alleg.get(ALL_IMPOSTA).as_real();
|
||||||
|
operaz.set(5, importo);
|
||||||
|
operaz.set(6, alleg.get(ALL_NATOPE).as_int());
|
||||||
|
operaz.set(7, alleg.get(ALL_TIPOPE).as_int());
|
||||||
|
importo = alleg.get(ALL_IMPORTOTOT).as_real();
|
||||||
|
importo += alleg.get(ALL_IMPOSTATOT).as_real();
|
||||||
|
operaz.set(8, importo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
operaz.new_rec("2"); // Operazioni con soggetti residenti - titolari di partita IVA
|
||||||
|
operaz.set(2, paiv);
|
||||||
|
operaz.set(3, alleg.get(ALL_DATAREG).as_date());
|
||||||
|
operaz.set(4, alleg.get(ALL_MODPAG).as_int());
|
||||||
|
operaz.set(5, alleg.get(ALL_IMPORTO).as_real());
|
||||||
|
operaz.set(6, alleg.get(ALL_IMPOSTA).as_real());
|
||||||
|
operaz.set(7, alleg.get(ALL_NATOPE).as_int());
|
||||||
|
operaz.set(8, alleg.get(ALL_TIPOPE).as_int());
|
||||||
|
operaz.set(9, alleg.get(ALL_IMPORTOTOT).as_real());
|
||||||
|
operaz.set(10,alleg.get(ALL_IMPOSTATOT).as_real());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDati_rilevanti_msk::send_rec(const TISAM_recordset& alleg, TDati_rilevanti_set& operaz)
|
||||||
|
{
|
||||||
|
const bool ignora = alleg.get(ALL_IGNORA).as_bool();
|
||||||
|
if (ignora)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
const long numrett = alleg.get(ALL_NUMRETT).as_int();
|
||||||
|
return numrett > 0 ? send_nc(alleg, operaz) : send_fatt(alleg, operaz);
|
||||||
|
}
|
||||||
|
|
||||||
// Genera file per invio telematico
|
// Genera file per invio telematico
|
||||||
bool TDati_rilevanti_msk::send_alleg()
|
bool TDati_rilevanti_msk::send_alleg()
|
||||||
{
|
{
|
||||||
|
const int anno = get_int(F_ANNO);
|
||||||
TFilename temp; temp.tempdir();
|
TFilename temp; temp.tempdir();
|
||||||
temp.add("datiril.txt");
|
temp.add("datiril.txt");
|
||||||
|
|
||||||
TDati_rilevanti_set recset(get_int(F_ANNO));
|
TDati_rilevanti_set recset(get_int(F_ANNO));
|
||||||
recset.add_control_rec(0);
|
recset.add_control_rec(0);
|
||||||
|
|
||||||
TISAM_recordset alleg("");
|
TString query;
|
||||||
|
query << "USE " << LF_ALLEG << " SELECT " << ALL_IGNORA << "==\"\""
|
||||||
|
<< "\nFROM " << ALL_ANNO << '=' << anno
|
||||||
|
<< "\nTO " << ALL_ANNO << '=' << anno;
|
||||||
|
TISAM_recordset alleg(query);
|
||||||
|
for (bool ok = alleg.move_first(); ok; ok = alleg.move_next())
|
||||||
|
send_rec(alleg, recset);
|
||||||
|
|
||||||
recset.add_control_rec(9);
|
recset.add_control_rec(9);
|
||||||
return recset.save_as(temp);
|
return recset.save_as(temp);
|
||||||
@ -963,7 +1178,9 @@ void TDati_rilevanti_msk::load_sheet()
|
|||||||
for (bool ok = alleg.move_first(); ok; ok = alleg.move_next())
|
for (bool ok = alleg.move_first(); ok; ok = alleg.move_next())
|
||||||
{
|
{
|
||||||
if (!pi.addstatus(1)) break;
|
if (!pi.addstatus(1)) break;
|
||||||
s.autoload_line(++rec, curr);
|
s.autoload_line(rec+1, curr);
|
||||||
|
s.check_row(rec);
|
||||||
|
rec++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -993,6 +1210,9 @@ bool TDati_rilevanti_msk::save_sheet()
|
|||||||
|
|
||||||
TSheet_field& s = sfield(F_RIGHE);
|
TSheet_field& s = sfield(F_RIGHE);
|
||||||
const TRecnotype items = s.items();
|
const TRecnotype items = s.items();
|
||||||
|
|
||||||
|
if (items > 0)
|
||||||
|
{
|
||||||
TFast_isamfile alleg(LF_ALLEG);
|
TFast_isamfile alleg(LF_ALLEG);
|
||||||
TRectype& rec = alleg.curr();
|
TRectype& rec = alleg.curr();
|
||||||
TProgind pi(items, TR("Registrazione righe"), false);
|
TProgind pi(items, TR("Registrazione righe"), false);
|
||||||
@ -1012,9 +1232,11 @@ bool TDati_rilevanti_msk::save_sheet()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (done)
|
if (done)
|
||||||
{
|
{
|
||||||
|
// Cancella le righe manuali marcate come da NON inviare
|
||||||
azzera_alleg(true, MANUAL_ROW);
|
azzera_alleg(true, MANUAL_ROW);
|
||||||
set_dirty(false);
|
set_dirty(false);
|
||||||
}
|
}
|
||||||
@ -1024,8 +1246,6 @@ bool TDati_rilevanti_msk::save_sheet()
|
|||||||
|
|
||||||
bool TDati_rilevanti_msk::check_rows(bool show_error)
|
bool TDati_rilevanti_msk::check_rows(bool show_error)
|
||||||
{
|
{
|
||||||
TSheet_field& s = sfield(F_RIGHE);
|
|
||||||
|
|
||||||
const int anno = get_int(F_ANNO);
|
const int anno = get_int(F_ANNO);
|
||||||
bool ok = anno >= 2010;
|
bool ok = anno >= 2010;
|
||||||
if (!ok)
|
if (!ok)
|
||||||
@ -1037,13 +1257,14 @@ bool TDati_rilevanti_msk::check_rows(bool show_error)
|
|||||||
|
|
||||||
long codcf = 0L;
|
long codcf = 0L;
|
||||||
TString16 ocfpi;
|
TString16 ocfpi;
|
||||||
|
TSheet_field& s = sfield(F_RIGHE);
|
||||||
FOR_EACH_SHEET_ROW(s, i, row)
|
FOR_EACH_SHEET_ROW(s, i, row)
|
||||||
{
|
{
|
||||||
row->get(s.cid2index(A_CODCF), codcf);
|
row->get(s.cid2index(A_CODCF), codcf);
|
||||||
row->get(s.cid2index(A_OCFPI), ocfpi);
|
row->get(s.cid2index(A_OCFPI), ocfpi);
|
||||||
if (codcf <= 0L && ocfpi.blank())
|
if (codcf <= 0L && ocfpi.blank())
|
||||||
{
|
{
|
||||||
ok = show_error && error_box(FR("Soggetto mancante alla riga %d"), i);
|
ok = show_error && error_box(FR("Soggetto mancante alla riga %d"), i+1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1133,6 +1354,32 @@ bool TDati_rilevanti_msk::on_field_event(TOperable_field& o, TField_event e, lon
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case DLG_EXPORT:
|
||||||
|
if (e == fe_button)
|
||||||
|
return sfield(F_RIGHE).esporta();
|
||||||
|
break;
|
||||||
|
case A_CODCF:
|
||||||
|
case A_OCFPI:
|
||||||
|
if (e == fe_modify || (e == fe_init && !o.empty()))
|
||||||
|
{
|
||||||
|
TMask& m = o.mask();
|
||||||
|
const TAnagrafica anag(m.get(A_TIPOCF)[0], m.get_long(A_CODCF), m.get(A_OCFPI));
|
||||||
|
m.set(A_RAGSOC, anag.ragione_sociale());
|
||||||
|
m.set(A_PAIV, anag.partita_IVA());
|
||||||
|
m.set(A_COFI, anag.codice_fiscale());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case A_CONTRATTO:
|
||||||
|
if (e == fe_modify || (e == fe_init && !o.empty()))
|
||||||
|
{
|
||||||
|
TMask& m = o.mask();
|
||||||
|
real importo, imposta;
|
||||||
|
importo_totale_contratto(m.get(A_TIPOCF)[0], m.get_long(A_CODCF), m.get(A_CONTRATTO),
|
||||||
|
get_int(F_ANNO), importo, imposta);
|
||||||
|
m.set(A_IMPORTOTOT, importo);
|
||||||
|
m.set(A_IMPOSTATOT, imposta);
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1180,3 +1427,4 @@ int fe0100(int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
44
fe/fe0100a.h
44
fe/fe0100a.h
@ -1,16 +1,16 @@
|
|||||||
#define F_DITTA 201
|
#define F_DITTA 301
|
||||||
#define F_RAGSOCD 202
|
#define F_RAGSOCD 302
|
||||||
|
|
||||||
#define F_ANNO 203
|
#define F_ANNO 303
|
||||||
#define F_DESCATT 205
|
#define F_DESCATT 305
|
||||||
#define F_SENDALL 206
|
#define F_SENDALL 306
|
||||||
|
|
||||||
#define F_TIPOCF 210
|
#define F_TIPOCF 310
|
||||||
#define F_CODCF 211
|
#define F_CODCF 311
|
||||||
#define F_OCCAS 212
|
#define F_OCCAS 312
|
||||||
#define F_OCFPI 213
|
#define F_OCFPI 313
|
||||||
#define F_RAGSOC 214
|
#define F_RAGSOC 314
|
||||||
#define F_RAGOCC 215
|
#define F_RAGOCC 315
|
||||||
|
|
||||||
#define F_RIGHE 300
|
#define F_RIGHE 300
|
||||||
|
|
||||||
@ -19,13 +19,19 @@
|
|||||||
#define A_TIPOCF 103
|
#define A_TIPOCF 103
|
||||||
#define A_CODCF 104
|
#define A_CODCF 104
|
||||||
#define A_OCFPI 105
|
#define A_OCFPI 105
|
||||||
#define A_NUMREG 106
|
#define A_RAGSOC 106
|
||||||
#define A_DATAREG 107
|
#define A_NUMREG 107
|
||||||
#define A_MODPAG 108
|
#define A_DATAREG 108
|
||||||
#define A_IMPORTO 109
|
#define A_MODPAG 109
|
||||||
#define A_IMPOSTA 110
|
#define A_IMPORTO 110
|
||||||
#define A_NATOPE 111
|
#define A_IMPOSTA 111
|
||||||
#define A_TIPOPE 112
|
#define A_NATOPE 112
|
||||||
#define A_TOTALE 113
|
#define A_TIPOPE 113
|
||||||
|
#define A_CONTRATTO 114
|
||||||
|
#define A_IMPORTOTOT 115
|
||||||
|
#define A_IMPOSTATOT 116
|
||||||
|
#define A_NUMRETT 117
|
||||||
|
#define A_PAIV 118
|
||||||
|
#define A_COFI 119
|
||||||
|
|
||||||
#define A_OCCAS 155
|
#define A_OCCAS 155
|
||||||
|
207
fe/fe0100a.uml
207
fe/fe0100a.uml
@ -28,10 +28,16 @@ END
|
|||||||
|
|
||||||
BUTTON DLG_ELABORA 2 2
|
BUTTON DLG_ELABORA 2 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 3 "Genera"
|
PROMPT 1 4 "Genera"
|
||||||
PICTURE TOOL_ELABORA
|
PICTURE TOOL_ELABORA
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_EXPORT 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 5 "Excel"
|
||||||
|
PICTURE TOOL_EXCEL
|
||||||
|
END
|
||||||
|
|
||||||
#include <helpbar.h>
|
#include <helpbar.h>
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
@ -40,28 +46,18 @@ PAGE "Dati rilevanti" 0 2 0 0
|
|||||||
|
|
||||||
GROUPBOX DLG_NULL 78 6
|
GROUPBOX DLG_NULL 78 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 "@bAttività"
|
PROMPT 1 0 "@bDitta"
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER F_ANNO 4
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 1 "Anno "
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
FLAGS "AU"
|
|
||||||
GROUP 1
|
|
||||||
NUM_EXPR #THIS_FIELD>=2010
|
|
||||||
WARNING "Anno non valido"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_DITTA 5
|
NUMBER F_DITTA 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Ditta "
|
PROMPT 2 1 "Ditta "
|
||||||
FLAGS "DF"
|
FLAGS "DF"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_RAGSOCD 50
|
STRING F_RAGSOCD 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 26 2 ""
|
PROMPT 15 1 ""
|
||||||
USE LF_NDITTE
|
USE LF_NDITTE
|
||||||
INPUT CODDITTA F_DITTA
|
INPUT CODDITTA F_DITTA
|
||||||
OUTPUT F_RAGSOCD RAGSOC
|
OUTPUT F_RAGSOCD RAGSOC
|
||||||
@ -69,33 +65,19 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODATT 5
|
NUMBER F_ANNO 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Attività "
|
PROMPT 2 2 "Anno "
|
||||||
USE LF_ATTIV
|
|
||||||
INPUT CODDITTA F_DITTA SELECT
|
|
||||||
INPUT CODATT F_CODATT
|
|
||||||
DISPLAY "Ditta" CODDITTA
|
|
||||||
DISPLAY "Codice" CODATT
|
|
||||||
DISPLAY "ATECO@8" CODATECO
|
|
||||||
DISPLAY "Prev.@C" ATTPREV
|
|
||||||
DISPLAY "Descrizione@50" DESCR
|
|
||||||
OUTPUT F_CODATT CODATT
|
|
||||||
OUTPUT F_DESCATT DESCR
|
|
||||||
FLAGS "Z"
|
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
|
FLAGS "AU"
|
||||||
GROUP 1
|
GROUP 1
|
||||||
END
|
NUM_EXPR #THIS_FIELD>=2010
|
||||||
|
WARNING "Anno non valido"
|
||||||
STRING F_DESCATT 50
|
|
||||||
BEGIN
|
|
||||||
PROMPT 26 3 ""
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_SENDALL
|
BOOLEAN F_SENDALL
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Invia anche le operazioni escluse dall'obbligo di comunicazione"
|
PROMPT 15 2 "Invia anche operazioni escluse dall'obbligo di comunicazione"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 4
|
GROUPBOX DLG_NULL 78 4
|
||||||
@ -123,6 +105,7 @@ BEGIN
|
|||||||
OUTPUT F_CODCF CODCF
|
OUTPUT F_CODCF CODCF
|
||||||
OUTPUT F_RAGSOC RAGSOC
|
OUTPUT F_RAGSOC RAGSOC
|
||||||
CHEKTYPE NORMAL
|
CHEKTYPE NORMAL
|
||||||
|
ADD RUN CG0 -1
|
||||||
GROUP 1
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -168,32 +151,38 @@ BEGIN
|
|||||||
ITEM "C/F@3F"
|
ITEM "C/F@3F"
|
||||||
ITEM "Codice@F"
|
ITEM "Codice@F"
|
||||||
ITEM "Occasionale@16F"
|
ITEM "Occasionale@16F"
|
||||||
ITEM "Numero\nRegistraz.@9"
|
ITEM "Ragione Sociale@24"
|
||||||
|
ITEM "Numero\nRegistr.@7"
|
||||||
ITEM "Data\nOperazione@10"
|
ITEM "Data\nOperazione@10"
|
||||||
ITEM "Mod.\nPag.@4"
|
ITEM "Mod.\nPag.@4"
|
||||||
ITEM "Importo\ndovuto@12"
|
ITEM "Importo\ndovuto@12"
|
||||||
ITEM "Imposta@12"
|
ITEM "Imposta@12"
|
||||||
ITEM "Natura\nOperazione@10"
|
ITEM "Nat.\nOper.@4"
|
||||||
ITEM "Tipologia\nOperazione@10"
|
ITEM "Tipo.\nOper.@4"
|
||||||
|
ITEM "Contratto@18"
|
||||||
ITEM "Importo Totale\nOperazione@12"
|
ITEM "Importo Totale\nOperazione@12"
|
||||||
|
ITEM "Imposte Totali\nOperazione@12"
|
||||||
|
ITEM "N. Reg.\nrettif.@7"
|
||||||
|
ITEM "Partita IVA@15"
|
||||||
|
ITEM "Codice Fiscale@17"
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
PAGE "Riga" -1 -1 74 10
|
PAGE "Riga" -1 -1 69 13
|
||||||
|
|
||||||
NUMBER A_RIGA 7
|
NUMBER A_RIGA 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Numero riga "
|
PROMPT 1 1 "Numero progressivo "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
FIELD PROGR
|
FIELD PROGR
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN A_IGNORA
|
BOOLEAN A_IGNORA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 31 1 "Non inviare questa riga"
|
PROMPT 31 1 "Esclusa da invio"
|
||||||
FIELD IGNORA
|
FIELD IGNORA
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -207,13 +196,15 @@ END
|
|||||||
|
|
||||||
NUMBER A_CODCF 6
|
NUMBER A_CODCF 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 16 2 ""
|
PROMPT 17 2 ""
|
||||||
USE CLIFO
|
USE CLIFO
|
||||||
INPUT TIPOCF A_TIPOCF SELECT
|
INPUT TIPOCF A_TIPOCF SELECT
|
||||||
INPUT CODCF A_CODCF
|
INPUT CODCF A_CODCF
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
DISPLAY "Occasionale@C" OCCAS
|
DISPLAY "Occasionale@C" OCCAS
|
||||||
|
DISPLAY "Partita IVA" PAIV
|
||||||
|
DISPLAY "Codice fiscale@16" COFI
|
||||||
OUTPUT A_CODCF CODCF
|
OUTPUT A_CODCF CODCF
|
||||||
CHEKTYPE REQUIRED
|
CHEKTYPE REQUIRED
|
||||||
FIELD CODCF
|
FIELD CODCF
|
||||||
@ -221,78 +212,142 @@ END
|
|||||||
|
|
||||||
STRING A_OCFPI 16
|
STRING A_OCFPI 16
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 32 2 "Occasionale "
|
PROMPT 34 2 "Occasionale "
|
||||||
USE OCCAS
|
USE OCCAS
|
||||||
INPUT CFPI A_OCFPI
|
INPUT CFPI A_OCFPI
|
||||||
DISPLAY "Codice@16" CFPI
|
DISPLAY "Codice@16" CFPI
|
||||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
|
DISPLAY "Partita IVA" PAIV
|
||||||
|
DISPLAY "Codice fiscale@16" COFI
|
||||||
OUTPUT A_OCFPI CFPI
|
OUTPUT A_OCFPI CFPI
|
||||||
CHEKTYPE NORMAL
|
CHEKTYPE NORMAL
|
||||||
GROUP 3
|
GROUP 3
|
||||||
FIELD OCFPI
|
FIELD OCFPI
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING A_RAGSOC 50 45
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "Ragione Sociale "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_PAIV 12
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 4 "P.IVA "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_COFI 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 41 4 "C.F. "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
DATE A_DATAREG
|
DATE A_DATAREG
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Data operazione "
|
PROMPT 1 5 "Data operazione "
|
||||||
FIELD DATAREG
|
FIELD DATAREG
|
||||||
CHEKTYPE REQUIRED
|
CHEKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER A_NUMREG 7
|
NUMBER A_NUMREG 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 41 4 "N. operazione "
|
PROMPT 41 5 "N. operazione "
|
||||||
FIELD NUMREG
|
FIELD NUMREG
|
||||||
|
USE MOV
|
||||||
|
INPUT NUMREG A_NUMREG
|
||||||
|
DISPLAY "Numero@7" NUMREG
|
||||||
|
DISPLAY "Data@10" DATAREG
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT A_NUMREG NUMREG
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
ADD RUN cg2 -0
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST A_MODPAG 1 15
|
LIST A_MODPAG 1 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 ""
|
PROMPT 1 6 "Modalità di pagamento "
|
||||||
ITEM "3|Non frazionato"
|
ITEM "3|3 - Non frazionato"
|
||||||
ITEM "1|Acconto"
|
ITEM "1|1 - Acconto"
|
||||||
ITEM "2|Saldo"
|
ITEM "2|2 - Saldo"
|
||||||
FIELD MODPAG
|
FIELD MODPAG
|
||||||
END
|
END
|
||||||
|
|
||||||
|
LIST A_NATOPE 1 35
|
||||||
CURRENCY A_IMPORTO 12
|
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 "Importo dovuto "
|
PROMPT 1 7 "Natura operazione "
|
||||||
FIELD CORRISP
|
ITEM "1|1 - Imponibile"
|
||||||
END
|
ITEM "2|2 - Non imponibile"
|
||||||
|
ITEM "3|3 - Esente"
|
||||||
CURRENCY A_IMPOSTA 12
|
ITEM "4|4 - Imponibile con IVA non esposta"
|
||||||
BEGIN
|
ITEM "5|5 - Imponibile con IVA a margine"
|
||||||
PROMPT 41 5 "Imposta "
|
|
||||||
FIELD IMPOSTA
|
|
||||||
END
|
|
||||||
|
|
||||||
LIST A_NATOPE 1 30
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 6 "Tipologia imponibile "
|
|
||||||
ITEM "1|Imponibile"
|
|
||||||
ITEM "2|Non imponibile"
|
|
||||||
ITEM "3|Esente"
|
|
||||||
ITEM "4|Imponibile con IVA non esposta"
|
|
||||||
FIELD NATOPE
|
FIELD NATOPE
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST A_TIPOPE 1 30
|
LIST A_TIPOPE 1 30
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 7 "Tipologia operazione "
|
PROMPT 1 8 "Tipologia operazione "
|
||||||
ITEM "1|Cessione di beni"
|
ITEM "1|1 - Cessione di beni"
|
||||||
ITEM "2|Prestazione di servizi"
|
ITEM "2|2 - Prestazione di servizi"
|
||||||
ITEM "3|Acquisto di beni"
|
ITEM "3|3 - Acquisto di beni"
|
||||||
ITEM "4|Acquisto di servizi"
|
ITEM "4|4 - Acquisto di servizi"
|
||||||
FIELD TIPOPE
|
FIELD TIPOPE
|
||||||
END
|
END
|
||||||
|
|
||||||
CURRENCY A_TOTALE 12
|
CURRENCY A_IMPORTO 12
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 8 "Totawe "
|
PROMPT 1 9 "Importo dovuto "
|
||||||
FIELD TOTALE
|
FIELD IMPORTO
|
||||||
END
|
END
|
||||||
|
|
||||||
|
CURRENCY A_IMPOSTA 12
|
||||||
|
BEGIN
|
||||||
|
PROMPT 42 9 "Imposta "
|
||||||
|
FIELD IMPOSTA
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_CONTRATTO 18
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 10 "Contratto "
|
||||||
|
USE &CON
|
||||||
|
INPUT CODTAB[1,1] A_TIPOCF SELECT
|
||||||
|
INPUT CODTAB[2,7] A_CODCF SELECT
|
||||||
|
INPUT CODTAB[8,25] A_CONTRATTO
|
||||||
|
DISPLAY "Contratto@18" CODTAB[8,25]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT A_CONTRATTO CODTAB[8,25]
|
||||||
|
ADD RUN fe0 -1 &CON
|
||||||
|
CHEKCTYPE NORMAL
|
||||||
|
FIELD CONTRATTO
|
||||||
|
MESSAGE EMPTY DISABLE,A_IMPORTOTOT|DISABLE,A_IMPOSTATOT
|
||||||
|
MESSAGE ENABLE,A_IMPORTOTOT|ENABLE,A_IMPOSTATOT
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY A_IMPORTOTOT 12
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 11 "Totale "
|
||||||
|
FIELD IMPORTOTOT
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY A_IMPOSTATOT 12
|
||||||
|
BEGIN
|
||||||
|
PROMPT 42 11 "Imposte "
|
||||||
|
FIELD IMPOSTATOT
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER A_NUMRETT 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 12 "N. operazione da rettificare "
|
||||||
|
FIELD NUMRETT
|
||||||
|
COPY USE A_NUMREG
|
||||||
|
INPUT NUMREG A_NUMRETT
|
||||||
|
COPY DISPLAY A_NUMREG
|
||||||
|
OUTPUT A_NUMRETT NUMREG
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
ADD RUN cg2 -0
|
||||||
|
NUM_EXPR #A_NUMRETT!=#A_NUMREG
|
||||||
|
WARNING "Inserire un numero registrazione diverso da quello principale"
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
|
107
fe/fe0200.cpp
107
fe/fe0200.cpp
@ -4,20 +4,88 @@
|
|||||||
#include <modtbapp.h>
|
#include <modtbapp.h>
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Maschera generica di gestione tabelle di modulo CG
|
// Maschera gestione contratti FE
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TFE_table_mask : public TAutomask
|
class TFE_contract_mask : public TAutomask
|
||||||
{
|
{
|
||||||
|
TSheet_field& rate_sheet() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool on_field_event(TOperable_field &o, TField_event e, long jolly);
|
virtual bool on_field_event(TOperable_field &o, TField_event e, long jolly);
|
||||||
|
virtual void autoload(const TRelation& rel);
|
||||||
|
virtual void autosave(TRelation& rel) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TFE_table_mask(const char* name) : TAutomask(name) {}
|
TFE_contract_mask() : TAutomask("fetbcon") {}
|
||||||
};
|
};
|
||||||
|
|
||||||
bool TFE_table_mask::on_field_event(TOperable_field &o, TField_event e, long jolly)
|
// L'ultimo (e unico) sheet della maschera contiene la rateizzazione delle fatture
|
||||||
|
TSheet_field& TFE_contract_mask::rate_sheet() const
|
||||||
{
|
{
|
||||||
|
int f;
|
||||||
|
for (f = fields()-1; f > 0 && !fld(f).is_sheet(); f--);
|
||||||
|
CHECK(f > 0, "Rate sheet non found");
|
||||||
|
return (TSheet_field&)fld(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
// carica i normalmente i campi standard e la sequenza degli R* nello sheet
|
||||||
|
void TFE_contract_mask::autoload(const TRelation& rel)
|
||||||
|
{
|
||||||
|
TAutomask::autoload(rel);
|
||||||
|
|
||||||
|
TSheet_field& s = rate_sheet();
|
||||||
|
s.destroy();
|
||||||
|
const TRectype& curr = rel.curr();
|
||||||
|
|
||||||
|
char anno[] = "I0"; // I[0,1,2,3] contengono i 4 anni solari
|
||||||
|
char imp[] = "R0"; // R[0,2,4,6] contengono i 4 importi annuali
|
||||||
|
char iva[] = "R1"; // R[1,3,5,7] contengono le 4 imposte annuali
|
||||||
|
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
TToken_string& row = s.row(i);
|
||||||
|
row.add(curr.get(anno));
|
||||||
|
row.add(curr.get(imp));
|
||||||
|
row.add(curr.get(iva));
|
||||||
|
anno[1]++; // I0 -> I1
|
||||||
|
imp[1]+=2; // R0 -> R2
|
||||||
|
iva[1]+=2; // R1 -> R3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// salva i normalmente i campi standard e la sequenza degli R* dallo sheet
|
||||||
|
void TFE_contract_mask::autosave(TRelation& rel) const
|
||||||
|
{
|
||||||
|
TAutomask::autosave(rel);
|
||||||
|
TSheet_field& s = rate_sheet();
|
||||||
|
TRectype& curr = rel.curr();
|
||||||
|
|
||||||
|
char anno[] = "I0"; // I[0,1,2,3] contengono i 4 anni solari
|
||||||
|
char imp[] = "R0"; // R[0,2,4,6] contengono i 4 importi annuali
|
||||||
|
char iva[] = "R1"; // R[1,3,5,7] contengono le 4 imposte annuali
|
||||||
|
|
||||||
|
for (int i = 0; i < s.items(); i++)
|
||||||
|
{
|
||||||
|
TToken_string& row = s.row(i);
|
||||||
|
curr.put(anno, row.get(0));
|
||||||
|
curr.put(imp, row.get());
|
||||||
|
curr.put(iva, row.get());
|
||||||
|
anno[1]++; // I0 -> I1
|
||||||
|
imp[1]+=2; // R0 -> R2
|
||||||
|
iva[1]+=2; // R1 -> R3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TFE_contract_mask::on_field_event(TOperable_field &o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (e)
|
||||||
|
{
|
||||||
|
case se_query_add:
|
||||||
|
case se_query_del:
|
||||||
|
return false; // Non permetto aggiunta/cancellazione di righe
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,8 +98,6 @@ class TFE_table_app : public TTable_module_application
|
|||||||
{
|
{
|
||||||
protected: // TRelation_application
|
protected: // TRelation_application
|
||||||
virtual TMask* user_create_mask();
|
virtual TMask* user_create_mask();
|
||||||
virtual int write(const TMask& m);
|
|
||||||
virtual int rewrite(const TMask& m);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
};
|
};
|
||||||
@ -40,26 +106,21 @@ public:
|
|||||||
// che abbiano controlli speciali da effettuare nella on_field_event
|
// che abbiano controlli speciali da effettuare nella on_field_event
|
||||||
TMask* TFE_table_app::user_create_mask()
|
TMask* TFE_table_app::user_create_mask()
|
||||||
{
|
{
|
||||||
|
TMask* m = NULL;
|
||||||
const TString4 name = get_relation()->file(0).name();
|
const TString4 name = get_relation()->file(0).name();
|
||||||
if (name == "???")
|
if (name == "CON")
|
||||||
return new TFE_table_mask("???");
|
m = new TFE_contract_mask;
|
||||||
// Le maschere normali sono gia' gestite dalla TTable_module_application
|
else
|
||||||
return TTable_module_application::user_create_mask();
|
m = TTable_module_application::user_create_mask();
|
||||||
|
|
||||||
|
if (m != NULL)
|
||||||
|
{
|
||||||
|
TString str; m->get_caption(str);
|
||||||
|
if (str.full())
|
||||||
|
main_app().set_title(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return m;
|
||||||
// Ridefinizione del metodo write
|
|
||||||
int TFE_table_app::write(const TMask& m)
|
|
||||||
{
|
|
||||||
const TString4 name = get_relation()->file(0).name();
|
|
||||||
return TTable_module_application::write(m);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ridefinizione del metodo rewrite
|
|
||||||
int TFE_table_app::rewrite(const TMask& m)
|
|
||||||
{
|
|
||||||
const TString4 name = get_relation()->file(0).name();
|
|
||||||
return TTable_module_application::rewrite(m);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int fe0200(int argc, char* argv[])
|
int fe0200(int argc, char* argv[])
|
||||||
|
22
fe/fetbcon.h
22
fe/fetbcon.h
@ -1,8 +1,14 @@
|
|||||||
#define F_TIPOCF 101
|
#define F_TIPOCF 201
|
||||||
#define F_CODCF 102
|
#define F_CODCF 202
|
||||||
#define F_RAGSOC 103
|
#define F_RAGSOC 203
|
||||||
#define F_CONTRATTO 104
|
#define F_CONTRATTO 204
|
||||||
#define F_DESCRIZIONE 105
|
#define F_DESCRIZIONE 205
|
||||||
#define F_INIZIO 106
|
#define F_PADRE 206
|
||||||
#define F_FINE 107
|
#define F_DESPADRE 207
|
||||||
#define F_IMPORTO 108
|
#define F_INIZIO 220
|
||||||
|
#define F_FINE 221
|
||||||
|
#define F_RATE 250
|
||||||
|
|
||||||
|
#define R_ANNO 101
|
||||||
|
#define R_IMPORTO 102
|
||||||
|
#define R_IMPOSTA 103
|
||||||
|
@ -6,7 +6,7 @@ ENDPAGE
|
|||||||
|
|
||||||
PAGE "Contratti per invio dati rilevanti" 0 2 0 0
|
PAGE "Contratti per invio dati rilevanti" 0 2 0 0
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 5
|
GROUPBOX DLG_NULL 78 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "@bEstremi"
|
PROMPT 1 1 "@bEstremi"
|
||||||
END
|
END
|
||||||
@ -88,38 +88,88 @@ BEGIN
|
|||||||
KEY 2
|
KEY 2
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 5
|
STRING F_PADRE 18
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 6 "@bDurata ed importo"
|
PROMPT 2 5 "Contratto principale "
|
||||||
|
FLAGS "U"
|
||||||
|
FIELD S1
|
||||||
|
COPY USE F_CONTRATTO
|
||||||
|
INPUT CODTAB[1,1] F_TIPOCF SELECT
|
||||||
|
INPUT CODTAB[2,7] F_CODCF SELECT
|
||||||
|
INPUT CODTAB[8,25] F_PADRE
|
||||||
|
COPY DISPLAY F_CONTRATTO
|
||||||
|
OUTPUT F_PADRE CODTAB[8,]
|
||||||
|
//OUTPUT F_DESPADRE S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 7 "@bDurata"
|
||||||
END
|
END
|
||||||
|
|
||||||
DATA F_INIZIO
|
DATA F_INIZIO
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "Inizio "
|
PROMPT 2 8 "Inizio "
|
||||||
HELP "Data inizio contratto"
|
HELP "Data inizio contratto"
|
||||||
FIELD D0
|
FIELD D0
|
||||||
END
|
END
|
||||||
|
|
||||||
DATA F_FINE
|
DATA F_FINE
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 24 7 "Fine "
|
PROMPT 24 8 "Fine "
|
||||||
HELP "Data fine contratto"
|
HELP "Data fine contratto"
|
||||||
FIELD D1
|
FIELD D1
|
||||||
VALIDATE DATE_CMP_FUNC >= #F_INIZIO
|
VALIDATE DATE_CMP_FUNC >= #F_INIZIO
|
||||||
WARNING "La data finale deve essere successiva a quella iniziale"
|
WARNING "La data finale deve essere successiva a quella iniziale"
|
||||||
END
|
END
|
||||||
|
|
||||||
CURRENCY F_IMPORTO 15
|
SPREADSHEET F_RATE 40 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 "Totale "
|
PROMPT 2 11 ""
|
||||||
HELP "Inserire un importo non inferiore a 3000 Euro"
|
ITEM "Anno"
|
||||||
FIELD R0
|
ITEM "Importo@12R"
|
||||||
END
|
ITEM "Imposta@12R"
|
||||||
|
|
||||||
TEXT DLG_NULL
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 9 "Importo non inferiore a 3000 Euro (Legge n.122 del 30-07-2010)"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
|
PAGE "Rateizzazione" -1 -1 25 5
|
||||||
|
|
||||||
|
NUMBER R_ANNO 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Anno "
|
||||||
|
FIELD I0
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY R_IMPORTO 12
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Importo "
|
||||||
|
FIELD R0
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY R_IMPOSTA 12
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "Imposta "
|
||||||
|
FIELD R1
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
|
|
||||||
|
BUTTON DLG_OK 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user