Patch level : main 07.150
Files correlati : nessuno Ricompilazione Demo : [ ] Commento : Riportata la versione aga 07.150 sul main trunk git-svn-id: svn://10.65.10.50/trunk@9871 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
63ac8f5406
commit
37178085ef
15
ba/baeur.cpp
15
ba/baeur.cpp
@ -25,10 +25,12 @@ bool dir_equal(const char* dir1, const char* dir2)
|
||||
return d1 == d2;
|
||||
}
|
||||
|
||||
void convert_import(TRectype& rec, const char* str)
|
||||
void convert_import(TRectype& rec, const char* str, bool price)
|
||||
{
|
||||
if (str && *str)
|
||||
{
|
||||
{
|
||||
const int dec = TCurrency::get_euro_dec(price);
|
||||
|
||||
TToken_string list = str;
|
||||
FOR_EACH_TOKEN(list, tok)
|
||||
{
|
||||
@ -36,7 +38,7 @@ void convert_import(TRectype& rec, const char* str)
|
||||
if (r != ZERO)
|
||||
{
|
||||
r /= EURO;
|
||||
r.round(2);
|
||||
r.round(dec);
|
||||
rec.put(tok, r);
|
||||
}
|
||||
}
|
||||
@ -283,7 +285,8 @@ void TEuro_app::zap_table(const char * tab, bool euro)
|
||||
}
|
||||
*/
|
||||
|
||||
void TEuro_app::convert_file(int lf, const char* cnv, const char* res, record_handler rh, void* jolly, const char* filter)
|
||||
void TEuro_app::convert_file(int lf, const char* cnv, const char* res, const char* pri,
|
||||
record_handler rh, void* jolly, const char* filter)
|
||||
{
|
||||
if (!dbf_exists(lf, FALSE, -1)) // Non esiste il file da convertire
|
||||
return; // per cui...
|
||||
@ -304,6 +307,7 @@ void TEuro_app::convert_file(int lf, const char* cnv, const char* res, record_ha
|
||||
|
||||
TToken_string conv(cnv);
|
||||
TToken_string azze(res);
|
||||
TToken_string pric(pri);
|
||||
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
@ -312,7 +316,8 @@ void TEuro_app::convert_file(int lf, const char* cnv, const char* res, record_ha
|
||||
{
|
||||
pi.addstatus(1);
|
||||
receur = curr;
|
||||
convert_import(receur, conv);
|
||||
convert_import(receur, conv, FALSE);
|
||||
convert_import(receur, pric, TRUE);
|
||||
zero_import(receur, azze);
|
||||
|
||||
bool do_write = TRUE;
|
||||
|
||||
@ -27,7 +27,7 @@ protected:
|
||||
bool goto_euro(long ditta = -1);
|
||||
bool copy_dir(const char* src, const char* dst) const;
|
||||
|
||||
void convert_file(int lf, const char* cnv, const char* res,
|
||||
void convert_file(int lf, const char* cnv, const char* res = NULL, const char* pri = NULL,
|
||||
record_handler rh = NULL, void* jolly = NULL, const char* filter = NULL);
|
||||
void zap_file(int lf, bool euro = TRUE, const char* filter = NULL) const;
|
||||
void zap_table(const char * tab, bool euro = TRUE);
|
||||
@ -89,7 +89,7 @@ public:
|
||||
};
|
||||
|
||||
bool dir_equal(const char* dir1, const char* dir2);
|
||||
void convert_import(TRectype& rec, const char* str);
|
||||
void convert_import(TRectype& rec, const char* str, bool price = FALSE);
|
||||
void zero_import(TRectype& rec, const char* str);
|
||||
void keep_import(TRectype& rec, const char* str);
|
||||
const TString& build_name(int logicnum, bool euro, long firm);
|
||||
|
||||
@ -282,7 +282,7 @@ void TEuro00_app::convert_tabcom(const TString& lit, const TString& eur)
|
||||
tipi.rewrite();
|
||||
}
|
||||
}
|
||||
convert_file(LF_TABCOM, NULL, NULL, tabcom_handler, &data);
|
||||
convert_file(LF_TABCOM, NULL, NULL, NULL, tabcom_handler, &data);
|
||||
}
|
||||
|
||||
HIDDEN void convert_ini_val(TConfig& inilit, TConfig& inieur, const char* name, int index)
|
||||
@ -329,7 +329,7 @@ void TEuro00_app::convert_ditte(const TString& eur)
|
||||
{
|
||||
TTabcom_data data;
|
||||
data._eur = eur;
|
||||
convert_file(LF_NDITTE, NULL, NULL, ditte_handler, &data);
|
||||
convert_file(LF_NDITTE, NULL, NULL, NULL, ditte_handler, &data);
|
||||
|
||||
zap_file(LF_TAB1100A, TRUE);
|
||||
zap_file(LF_TAB1100B, TRUE);
|
||||
|
||||
@ -415,7 +415,6 @@ static bool conv_condv(TRectype& rec, void* jolly)
|
||||
if (!rec.get_bool("CONTROEURO"))
|
||||
{
|
||||
real contro_change = EURO / rec.get_real("CAMBIO");
|
||||
|
||||
rec.put("CAMBIO", contro_change);
|
||||
rec.put("CONTROEURO", "X");
|
||||
}
|
||||
@ -435,7 +434,7 @@ static bool conv_rcondv(TRectype& rec, void* jolly)
|
||||
const TString16 val = cache().get(LF_CONDV, key, "CODVAL");
|
||||
|
||||
if (is_firm_value(val))
|
||||
convert_import(rec, "PREZZO");
|
||||
convert_import(rec, "PREZZO|PROMAGGIO", TRUE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -566,7 +565,7 @@ KEY TEuro01_app::convert_firm(long ditta)
|
||||
// prefix().set("."); // Riapre files ditta
|
||||
set_firm(ditta);
|
||||
|
||||
convert_file(LF_TAB, NULL, NULL, tab_handler, (void*)&data);
|
||||
convert_file(LF_TAB, NULL, NULL, NULL, tab_handler, (void*)&data);
|
||||
|
||||
if (is_firm_file(LF_CLIFO))
|
||||
{
|
||||
@ -616,14 +615,14 @@ KEY TEuro01_app::convert_firm(long ditta)
|
||||
zap_file(LF_DOC, TRUE);
|
||||
zap_file(LF_RIGHEDOC, TRUE);
|
||||
|
||||
convert_file(LF_ANAMAG, "COSTSTD|ULTCOS1|ULTCOS2|VALSTATUN", "");
|
||||
convert_file(LF_UMART, "PREZZO", "");
|
||||
convert_file(LF_ANAMAG, NULL, NULL, "COSTSTD|ULTCOS1|ULTCOS2|VALSTATUN");
|
||||
convert_file(LF_UMART, NULL, NULL, "PREZZO");
|
||||
|
||||
// cvrt condv codval cambio
|
||||
// cvrt rcondv prezzo
|
||||
convert_file(LF_RCONDV, "", "", conv_rcondv);
|
||||
convert_file(LF_CONDV, "", "", conv_condv);
|
||||
convert_file(LF_SVRIEP, "VALORE", "");
|
||||
convert_file(LF_RCONDV, NULL, NULL, NULL, conv_rcondv);
|
||||
convert_file(LF_CONDV, NULL, NULL, NULL, conv_condv);
|
||||
convert_file(LF_SVRIEP, "VALORE");
|
||||
}
|
||||
|
||||
if (do_magazzino)
|
||||
@ -638,12 +637,12 @@ KEY TEuro01_app::convert_firm(long ditta)
|
||||
mag._fields << "VALRIM|VALACQ|VALENT|VALVEN|VALUSC|VALORDF|VALORDC|VALSCARTI|";
|
||||
mag._fields << "USERVAL1|USERVAL2|USERVAL3|USERVAL4|USERVAL5|USERVAL6";
|
||||
|
||||
convert_file(LF_MAG, "", "ORDC|VALORDC|ORDF|VALORDF", mag_handler, (void*)&mag);
|
||||
convert_file(LF_MOVMAG, "", "", movmag_handler, (void*)&mag);
|
||||
convert_file(LF_RMOVMAG, "PREZZO", "", righemovmag_handler, (void*)&mag);
|
||||
convert_file(LF_MAG, "", "ORDC|VALORDC|ORDF|VALORDF", NULL, mag_handler, (void*)&mag);
|
||||
convert_file(LF_MOVMAG, NULL, NULL, NULL, movmag_handler, (void*)&mag);
|
||||
convert_file(LF_RMOVMAG, NULL, NULL, "PREZZO", righemovmag_handler, (void*)&mag);
|
||||
|
||||
convert_file(LF_STOMAG, "VALORE|ULTCOS1|COSTSTD|COSTOMEDIO|PRZLIST", "");
|
||||
convert_file(LF_DIST, "PREZZO", "");
|
||||
convert_file(LF_STOMAG, NULL, NULL, "VALORE|ULTCOS1|ULTCOS2|COSTSTD|COSTOMEDIO|PRZLIST");
|
||||
convert_file(LF_DIST, NULL, NULL, "PREZZO");
|
||||
|
||||
if (dbf_exists(LF_ANAMAG) && dbf_exists(LF_STOMAG) && dbf_exists(LF_MOVMAG))
|
||||
{
|
||||
@ -663,14 +662,14 @@ KEY TEuro01_app::convert_firm(long ditta)
|
||||
d._soloaperte = solo_aperte;
|
||||
d._adozione = adozione;
|
||||
_schede_passate.destroy();
|
||||
convert_file(LF_PERC, "FATTBIL", NULL, perc_handler, NULL, filter);
|
||||
convert_file(LF_SCPERC,"COMPENSO|SPESE|IVA|TOTALE|TOTRIT|RITSOC|RITOPE|RITVER", NULL, sch_handler, (void*)&d, filter);
|
||||
convert_file(LF_RVER, "RITENUTA", NULL, to_sch_handler, NULL, filter);
|
||||
convert_file(LF_PERC, "FATTBIL", NULL, NULL, perc_handler, NULL, filter);
|
||||
convert_file(LF_SCPERC,"COMPENSO|SPESE|IVA|TOTALE|TOTRIT|RITSOC|RITOPE|RITVER", NULL, NULL, sch_handler, (void*)&d, filter);
|
||||
convert_file(LF_RVER, "RITENUTA", NULL, NULL, to_sch_handler, NULL, filter);
|
||||
TString flds;
|
||||
|
||||
flds << "IMPONIBILE|RITENUTA|COMPENSO|NETTO|SPESA|CTSSNPERC|CTSSNCOMP|RITLORDA|CONTROBB|DETFAMIL|DETLAVDIP|TOTDET|";
|
||||
flds << "IMPCPA|SOMREGCONV|UTPAGATI|UTSPETT|RITUTPAG|RITUTSPE|SOMNSRIT|AMMLORDO|QUOTAPROV|IMPNETTO|COMNETTO";
|
||||
convert_file(LF_RPAG, flds, NULL, to_sch_handler, NULL, filter);
|
||||
convert_file(LF_RPAG, flds, NULL, NULL, to_sch_handler, NULL, filter);
|
||||
}
|
||||
if (adozione.ok()) // Dummy test
|
||||
{
|
||||
@ -725,7 +724,7 @@ void TEuro01_app::convert_saldi(const TDate& adozione, const TBill& arrotino)
|
||||
TSaldi_data sld;
|
||||
sld._annoes = esc.date2prevesc(adozione);
|
||||
sld._arrot = arrotino;
|
||||
convert_file(LF_SALDI, NULL, NULL, saldi_handler, &sld);
|
||||
convert_file(LF_SALDI, NULL, NULL, NULL, saldi_handler, &sld);
|
||||
|
||||
TImporto& saldo = sld._sld;
|
||||
saldo.valore().round(-2);
|
||||
@ -887,9 +886,9 @@ void TEuro01_app::convert_partite()
|
||||
|
||||
TSaldac_data data;
|
||||
|
||||
convert_file(LF_PARTITE, "IMPTOTDOC|IMPORTO|IMPOSTA|SPESE|RITENUTE|DIFFCAM", PART_NREG, partite_handler, &data);
|
||||
convert_file(LF_SCADENZE, "IMPORTO", NULL, scadenze_handler, &data);
|
||||
convert_file(LF_PAGSCA, "IMPORTO|RITENUTE|DIFFCAM", NULL, pagamenti_handler, &data);
|
||||
convert_file(LF_PARTITE, "IMPTOTDOC|IMPORTO|IMPOSTA|SPESE|RITENUTE|DIFFCAM", PART_NREG, NULL, partite_handler, &data);
|
||||
convert_file(LF_SCADENZE, "IMPORTO", NULL, NULL, scadenze_handler, &data);
|
||||
convert_file(LF_PAGSCA, "IMPORTO|RITENUTE|DIFFCAM", NULL, NULL, pagamenti_handler, &data);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
@ -461,7 +461,7 @@ void TEuro02_app::main_loop()
|
||||
TEsercizi_contabili esc;
|
||||
sd._anno = esc.date2esc(adozione);
|
||||
|
||||
convert_file(LF_SALDI, "", "", saldi_handler, &sd);
|
||||
convert_file(LF_SALDI, NULL, NULL, NULL, saldi_handler, &sd);
|
||||
|
||||
TBill contro;
|
||||
contro.get(msk, F20_CONTROG_C, F20_CONTROC_C, F20_CONTROS_C);
|
||||
|
||||
@ -270,8 +270,8 @@ void TEuro04_app::copy_docs(TEuro40_mask & mask)
|
||||
docs2convert.add(codnum, d);
|
||||
}
|
||||
}
|
||||
convert_file(LF_DOC, "", "", doc_handler, &docs2convert);
|
||||
convert_file(LF_RIGHEDOC, "", "", rdoc_handler, &docs2convert);
|
||||
convert_file(LF_DOC, NULL, NULL, NULL, doc_handler, &docs2convert);
|
||||
convert_file(LF_RIGHEDOC, NULL, NULL, NULL, rdoc_handler, &docs2convert);
|
||||
}
|
||||
|
||||
void TEuro04_app::main_loop()
|
||||
|
||||
@ -104,13 +104,13 @@ void TEuro05_app::convert_last_sto_eser(int eser)
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
TProgind pi(items, str, FALSE, TRUE);
|
||||
const TString fields("VALORE|ULTCOS1|COSTSTD|COSTOMEDIO|PRZLIST");
|
||||
const char* prices = "VALORE|ULTCOS1|ULTCOS2|COSTSTD|COSTOMEDIO|PRZLIST";
|
||||
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
{
|
||||
pi.addstatus(1);
|
||||
receur = curr;
|
||||
convert_import(receur, fields);
|
||||
convert_import(receur, prices, TRUE);
|
||||
fileur.write();
|
||||
}
|
||||
}
|
||||
|
||||
@ -143,7 +143,7 @@ void TApertura_saldi_euro::convert_saldi(const TDate& adozione, const TBill& arr
|
||||
TSaldi_data sld;
|
||||
sld._annoes = esc.date2prevesc(adozione);
|
||||
sld._arrot = arrotino;
|
||||
convert_file(LF_SALDI, NULL, NULL, saldi_handler, &sld);
|
||||
convert_file(LF_SALDI, NULL, NULL, NULL, saldi_handler, &sld);
|
||||
|
||||
TImporto& saldo = sld._sld;
|
||||
saldo.valore().round(-2);
|
||||
|
||||
@ -116,7 +116,8 @@ Item_02 = "Conversione ditte in Euro", "baeur -1"
|
||||
Item_03 = "Chiusura/Apertura in Euro", "baeur -3", "F"
|
||||
Item_04 = "Apertura magazzino", "baeur -5", "F"
|
||||
Item_05 = "Stampe magazzino",[PRASSI_884], ""
|
||||
Item_06 = "Manutenzione",[PRASSI_885], ""
|
||||
Item_06 = "Conversione cespiti",[PRASSI_885], ""
|
||||
Item_07 = "Manutenzione",[PRASSI_886], ""
|
||||
|
||||
[PRASSI_884]
|
||||
Caption = "Stampe magazzino in Euro"
|
||||
@ -126,6 +127,13 @@ Item_01 = "Stampa inventario", "baeur -7"
|
||||
Item_02 = "Stampa storico", "baeur -8"
|
||||
|
||||
[PRASSI_885]
|
||||
Caption = "Conversione cespiti"
|
||||
Picture = <ce00.bmp>
|
||||
Module = 11
|
||||
Item_01 = "Conversione cespiti", "ceeur -0"
|
||||
Item_02 = "Controllo arrotondamenti", "ceeur -1"
|
||||
|
||||
[PRASSI_886]
|
||||
Caption = "Manutenzione"
|
||||
Picture = <ba00.bmp>
|
||||
Module = 0
|
||||
|
||||
@ -13,21 +13,22 @@ BEGIN
|
||||
PROMPT 1 1 "@bCodice Nomenclatura"
|
||||
END
|
||||
|
||||
STRING NOC_CODICE1 4
|
||||
NUMBER NOC_CODICE1 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codice "
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
USE %NOC
|
||||
INPUT CODTAB[1,4] NOC_CODICE1
|
||||
INPUT CODTAB[5,6] NOC_CODICE2
|
||||
INPUT CODTAB[6,8] NOC_CODICE3
|
||||
DISPLAY "Codice" CODTAB[1,4]
|
||||
DISPLAY "" CODTAB[5,6]
|
||||
DISPLAY "" CODTAB[7,8]
|
||||
DISPLAY "@3" CODTAB[5,6]
|
||||
DISPLAY "@3" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT NOC_CODICE1 CODTAB[1,4]
|
||||
OUTPUT NOC_CODICE2 CODTAB[5,6]
|
||||
OUTPUT NOC_CODICE3 CODTAB[7,8]
|
||||
OUTPUT NOC_DESCR S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB[1,4]
|
||||
KEY 1
|
||||
@ -37,17 +38,17 @@ END
|
||||
STRING NOC_CODICE2 2
|
||||
BEGIN
|
||||
PROMPT 21 3 ""
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
COPY ALL NOC_CODICE1
|
||||
FIELD CODTAB[5,6]
|
||||
KEY 1
|
||||
VALIDATE REQIF_FUNC 1 NOC_CODICE3
|
||||
END
|
||||
|
||||
STRING NOC_CODICE3 2
|
||||
NUMBER NOC_CODICE3 2
|
||||
BEGIN
|
||||
PROMPT 26 3 ""
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
COPY ALL NOC_CODICE1
|
||||
FIELD CODTAB[7,8]
|
||||
KEY 1
|
||||
@ -59,7 +60,9 @@ BEGIN
|
||||
USE %NOC KEY 2
|
||||
INPUT S0 NOC_DESCR
|
||||
DISPLAY "Descrizione@60" S0
|
||||
DISPLAY "Codice@8" CODTAB
|
||||
DISPLAY "Codice" CODTAB[1,4]
|
||||
DISPLAY "@3" CODTAB[5,6]
|
||||
DISPLAY "@3" CODTAB[7,8]
|
||||
COPY OUTPUT NOC_CODICE1
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD S0
|
||||
|
||||
@ -7,5 +7,5 @@ Item_02 = "Gestione cespiti", "cesp -t /cPRAWIN.INI", ""
|
||||
Item_03 = "Gestione percipienti", <77prassi.men>
|
||||
Item_04 = "Contabilita analitica", <procomm.men>
|
||||
Item_05 = "Bilanci e Analisi", <abprassi.men>
|
||||
Item_06 = "Elenchi INTRA comunitari", <inprassi.men>
|
||||
Item_06 = "Elenchi Intracomunitari", <inprassi.men>
|
||||
|
||||
|
||||
@ -122,37 +122,72 @@ bool TCAC_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
// TCCE_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
class TCCE_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
bool is_leap(int year) const;
|
||||
real calc_coeff(const TDate& ies, const TDate& fes) const;
|
||||
|
||||
public:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
TCCE_mask() : TAutomask("cetbcce") { }
|
||||
virtual ~TCCE_mask() { }
|
||||
};
|
||||
|
||||
|
||||
bool TCCE_mask::is_leap(int year) const
|
||||
{
|
||||
TDate d(28,2,year);
|
||||
++d;
|
||||
return d.day() == 29;
|
||||
}
|
||||
|
||||
real TCCE_mask::calc_coeff(const TDate& ies, const TDate& fes) const
|
||||
{
|
||||
const real tot_es = fes - ies + 1;
|
||||
real max_es = 365;
|
||||
const int im = ies.month();
|
||||
const int iy = ies.year();
|
||||
const int fm = fes.month();
|
||||
const int fy = fes.year();
|
||||
if ((im < 3 && (fm >= 3 || fy > iy) && is_leap(iy)) ||
|
||||
(fm >= 3 && (im < 3 || iy < fy) && is_leap(fy)))
|
||||
max_es += 1.0;
|
||||
real coeff = tot_es / max_es;
|
||||
coeff.round(9);
|
||||
return coeff;
|
||||
}
|
||||
|
||||
bool TCCE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case DLG_ATTIV:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TString app("ce0 -0 CCB");
|
||||
TMailbox mail;
|
||||
TString body; body.format("%d|%d=%s|%d=%s|%d=%s", F_CODSP_CCB, F_CODESER_CCB, (const char *)get(F_CODESER),
|
||||
F_DATAINI_CCB, (const char *)get(F_DATAINI),
|
||||
F_DATAFINE_CCB, (const char *)get(F_DATAFINE));
|
||||
case DLG_ATTIV:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TString app("ce0 -0 CCB");
|
||||
TMailbox mail;
|
||||
TString body; body.format("%d|%d=%s|%d=%s|%d=%s", F_CODSP_CCB, F_CODESER_CCB, (const char *)get(F_CODESER),
|
||||
F_DATAINI_CCB, (const char *)get(F_DATAINI),
|
||||
F_DATAFINE_CCB, (const char *)get(F_DATAFINE));
|
||||
|
||||
TMessage msg(app, MSG_FS, body);
|
||||
mail.send(msg);
|
||||
TExternal_app a(app);
|
||||
a.run();
|
||||
}
|
||||
default:
|
||||
TMessage msg(app, MSG_FS, body);
|
||||
mail.send(msg);
|
||||
TExternal_app a(app);
|
||||
a.run();
|
||||
}
|
||||
break;
|
||||
case F_DURATA:
|
||||
if (e == fe_init && !field(F_CODESER).empty())
|
||||
{
|
||||
const TDate ies = get(F_DATAINI);
|
||||
const TDate fes = get(F_DATAFINE);
|
||||
set(F_DURATA, fes-ies+1);
|
||||
set(F_COEFF_DURATA, calc_coeff(ies, fes));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
50
ce/ce0400a.h
50
ce/ce0400a.h
@ -1,7 +1,7 @@
|
||||
// campi maschera ce0400a.msk
|
||||
|
||||
#define F_DATACONS 101
|
||||
#define F_ANNOTUIR 102
|
||||
#define F_DITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_ESERCORR 103
|
||||
#define F_DATAINIZIO 104
|
||||
#define F_DATAFINE 105
|
||||
@ -9,3 +9,49 @@
|
||||
#define F_SPECIECORR 107
|
||||
#define F_D_GRUPPOCORR 108
|
||||
#define F_D_SPECIECORR 109
|
||||
|
||||
#define F_DATACONS 110
|
||||
#define F_ANNOTUIR 111
|
||||
|
||||
#define F_PLUSMINUS 201
|
||||
|
||||
#define F_GR1 211
|
||||
#define F_CO1 212
|
||||
#define F_SO1 213
|
||||
#define F_DE1 214
|
||||
|
||||
#define F_GR2 221
|
||||
#define F_CO2 222
|
||||
#define F_SO2 223
|
||||
#define F_DE2 224
|
||||
|
||||
#define F_GR3 231
|
||||
#define F_CO3 232
|
||||
#define F_SO3 233
|
||||
#define F_DE3 234
|
||||
|
||||
#define F_GR4 241
|
||||
#define F_CO4 242
|
||||
#define F_SO4 243
|
||||
#define F_DE4 244
|
||||
|
||||
#define F_GR5 251
|
||||
#define F_CO5 252
|
||||
#define F_SO5 253
|
||||
#define F_DE5 254
|
||||
|
||||
#define F_GR6 261
|
||||
#define F_CO6 262
|
||||
#define F_SO6 263
|
||||
#define F_DE6 264
|
||||
|
||||
#define F_CA1 280
|
||||
#define F_DC1 281
|
||||
#define F_CA2 282
|
||||
#define F_DC2 283
|
||||
#define F_CA3 284
|
||||
#define F_DC3 285
|
||||
#define F_CA4 286
|
||||
#define F_DC4 287
|
||||
#define F_CA5 288
|
||||
#define F_DC5 289
|
||||
|
||||
470
ce/ce0400a.uml
470
ce/ce0400a.uml
@ -16,31 +16,31 @@ ENDPAGE
|
||||
|
||||
PAGE "Parametri Ditta" -1 -1 78 10
|
||||
|
||||
DATE F_DATACONS
|
||||
GROUPBOX DLG_NULL 76 6
|
||||
BEGIN
|
||||
PROMPT 1 1 "Data conseguimento primi ricavi "
|
||||
FIELD CADTR
|
||||
END
|
||||
|
||||
RADIOBUTTON F_ANNOTUIR 30
|
||||
BEGIN
|
||||
FLAGS "Z"
|
||||
PROMPT 1 3 "Anno inizio applicazione TUIR"
|
||||
ITEM "0|1988"
|
||||
ITEM "1|1989"
|
||||
FIELD CATSU
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 6 "Esercizio/Attivita' corrente"
|
||||
PROMPT 1 1 "@bEsercizio/Attivita' corrente"
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Ditta "
|
||||
FLAGS "DFG"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 25 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ESERCORR 4
|
||||
BEGIN
|
||||
PROMPT 2 7 "Esercizio "
|
||||
PROMPT 2 3 "Esercizio "
|
||||
FIELD CODESCORR
|
||||
FLAGS "Z"
|
||||
USE CCE
|
||||
@ -57,19 +57,19 @@ END
|
||||
|
||||
DATE F_DATAINIZIO
|
||||
BEGIN
|
||||
PROMPT 20 7 "Data inizio "
|
||||
PROMPT 20 3 "Data inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_DATAFINE
|
||||
BEGIN
|
||||
PROMPT 45 7 "Data fine "
|
||||
PROMPT 45 3 "Data fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPOCORR 2
|
||||
BEGIN
|
||||
PROMPT 2 8 "Gruppo "
|
||||
PROMPT 2 4 "Gruppo "
|
||||
FIELD GRUPPOCORR
|
||||
FLAGS "Z"
|
||||
USE CCB KEY 1
|
||||
@ -90,22 +90,432 @@ END
|
||||
|
||||
STRING F_D_GRUPPOCORR 60 58
|
||||
BEGIN
|
||||
PROMPT 17 8 ""
|
||||
FLAGS "D"
|
||||
PROMPT 17 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_SPECIECORR 4
|
||||
BEGIN
|
||||
PROMPT 2 9 "Specie "
|
||||
FIELD SPECIECORR
|
||||
FLAGS "_"
|
||||
COPY ALL F_GRUPPOCORR
|
||||
CHECKTYPE NORMAL
|
||||
PROMPT 2 5 "Specie "
|
||||
FIELD SPECIECORR
|
||||
FLAGS "_"
|
||||
COPY ALL F_GRUPPOCORR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_D_SPECIECORR 60 58
|
||||
BEGIN
|
||||
PROMPT 17 9 ""
|
||||
FLAGS "D"
|
||||
PROMPT 17 5 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_DATACONS
|
||||
BEGIN
|
||||
PROMPT 1 7 "Data conseguimento primi ricavi "
|
||||
FIELD CADTR
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 8 "Anno inizio applicazione TUIR"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_ANNOTUIR 30
|
||||
BEGIN
|
||||
FLAGS "Z"
|
||||
PROMPT 33 7 ""
|
||||
ITEM "1988|1988"
|
||||
ITEM "1989|1989"
|
||||
FIELD CATSU
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Collegamento Contabilità" -1 -1 78 10
|
||||
|
||||
BOOLEAN F_PLUSMINUS
|
||||
BEGIN
|
||||
PROMPT 1 1 "Generazione movimenti di plus/minusvalenza"
|
||||
END
|
||||
|
||||
GROUP DLG_NULL 78 8
|
||||
BEGIN
|
||||
PROMPT 1 2 "@bConti di collegamento"
|
||||
END
|
||||
|
||||
NUMBER F_GR1 3
|
||||
BEGIN
|
||||
PROMPT 2 3 "Eliminazione cespiti "
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_CO1 3
|
||||
BEGIN
|
||||
PROMPT 30 3 ""
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_SO1 6
|
||||
BEGIN
|
||||
PROMPT 35 3 ""
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
INPUT GRUPPO F_GR1
|
||||
INPUT CONTO F_CO1
|
||||
INPUT SOTTOCONTO F_SO1
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_GR1 GRUPPO
|
||||
OUTPUT F_CO1 CONTO
|
||||
OUTPUT F_SO1 SOTTOCONTO
|
||||
OUTPUT F_DE1 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DE1 50 30
|
||||
BEGIN
|
||||
PROMPT 45 3 ""
|
||||
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
|
||||
INPUT DESCR F_DE1
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT F_SO1
|
||||
END
|
||||
|
||||
NUMBER F_GR2 3
|
||||
BEGIN
|
||||
PROMPT 2 4 "Differenze su quote "
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_CO2 3
|
||||
BEGIN
|
||||
PROMPT 30 4 ""
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_SO2 6
|
||||
BEGIN
|
||||
PROMPT 35 4 ""
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
INPUT GRUPPO F_GR2
|
||||
INPUT CONTO F_CO2
|
||||
INPUT SOTTOCONTO F_SO2
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_GR2 GRUPPO
|
||||
OUTPUT F_CO2 CONTO
|
||||
OUTPUT F_SO2 SOTTOCONTO
|
||||
OUTPUT F_DE2 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DE2 50 30
|
||||
BEGIN
|
||||
PROMPT 45 4 ""
|
||||
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
|
||||
INPUT DESCR F_DE2
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT F_SO2
|
||||
END
|
||||
|
||||
NUMBER F_GR3 3
|
||||
BEGIN
|
||||
PROMPT 2 5 "Differenze su fondi "
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_CO3 3
|
||||
BEGIN
|
||||
PROMPT 30 5 ""
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_SO3 6
|
||||
BEGIN
|
||||
PROMPT 35 5 ""
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
INPUT GRUPPO F_GR3
|
||||
INPUT CONTO F_CO3
|
||||
INPUT SOTTOCONTO F_SO3
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_GR3 GRUPPO
|
||||
OUTPUT F_CO3 CONTO
|
||||
OUTPUT F_SO3 SOTTOCONTO
|
||||
OUTPUT F_DE3 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DE3 50 30
|
||||
BEGIN
|
||||
PROMPT 45 5 ""
|
||||
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
|
||||
INPUT DESCR F_DE3
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT F_SO3
|
||||
END
|
||||
|
||||
NUMBER F_GR4 3
|
||||
BEGIN
|
||||
PROMPT 2 6 "Differenze su plusval. "
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_CO4 3
|
||||
BEGIN
|
||||
PROMPT 30 6 ""
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_SO4 6
|
||||
BEGIN
|
||||
PROMPT 35 6 ""
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
INPUT GRUPPO F_GR4
|
||||
INPUT CONTO F_CO4
|
||||
INPUT SOTTOCONTO F_SO4
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_GR4 GRUPPO
|
||||
OUTPUT F_CO4 CONTO
|
||||
OUTPUT F_SO4 SOTTOCONTO
|
||||
OUTPUT F_DE4 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DE4 50 30
|
||||
BEGIN
|
||||
PROMPT 45 6 ""
|
||||
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
|
||||
INPUT DESCR F_DE4
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT F_SO4
|
||||
END
|
||||
|
||||
NUMBER F_GR5 3
|
||||
BEGIN
|
||||
PROMPT 2 7 "Differenze su minusval."
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_CO5 3
|
||||
BEGIN
|
||||
PROMPT 30 7 ""
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_SO5 6
|
||||
BEGIN
|
||||
PROMPT 35 7 ""
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
INPUT GRUPPO F_GR5
|
||||
INPUT CONTO F_CO5
|
||||
INPUT SOTTOCONTO F_SO5
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_GR5 GRUPPO
|
||||
OUTPUT F_CO5 CONTO
|
||||
OUTPUT F_SO5 SOTTOCONTO
|
||||
OUTPUT F_DE5 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DE5 50 30
|
||||
BEGIN
|
||||
PROMPT 45 7 ""
|
||||
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
|
||||
INPUT DESCR F_DE5
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT F_SO5
|
||||
END
|
||||
|
||||
NUMBER F_GR6 3
|
||||
BEGIN
|
||||
PROMPT 2 8 "Vendita cespiti "
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_CO6 3
|
||||
BEGIN
|
||||
PROMPT 30 8 ""
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_SO6 6
|
||||
BEGIN
|
||||
PROMPT 35 8 ""
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
INPUT GRUPPO F_GR6
|
||||
INPUT CONTO F_CO6
|
||||
INPUT SOTTOCONTO F_SO6
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_GR6 GRUPPO
|
||||
OUTPUT F_CO6 CONTO
|
||||
OUTPUT F_SO6 SOTTOCONTO
|
||||
OUTPUT F_DE6 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DE6 50 30
|
||||
BEGIN
|
||||
PROMPT 45 8 ""
|
||||
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
|
||||
INPUT DESCR F_DE6
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT F_SO6
|
||||
END
|
||||
|
||||
GROUP DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 1 10 "@bCausali di collegamento"
|
||||
END
|
||||
|
||||
STRING F_CA1 3
|
||||
BEGIN
|
||||
PROMPT 2 11 "Eliminazione cespiti "
|
||||
USE LF_CAUSALI
|
||||
INPUT CODCAUS F_CA1
|
||||
DISPLAY "Codice" CODCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_CA1 CODCAUS
|
||||
OUTPUT F_DC1 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DC1 50 30
|
||||
BEGIN
|
||||
PROMPT 45 11 ""
|
||||
USE LF_CAUSALI KEY 2
|
||||
INPUT DESCR F_DC1
|
||||
DISPLAY "Descrizione@60" DESCR
|
||||
DISPLAY "Codice" CODCAUS
|
||||
COPY OUTPUT F_CA1
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_CA2 3
|
||||
BEGIN
|
||||
PROMPT 2 12 "Rilevazione differenze "
|
||||
USE LF_CAUSALI
|
||||
INPUT CODCAUS F_CA2
|
||||
DISPLAY "Codice" CODCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_CA2 CODCAUS
|
||||
OUTPUT F_DC2 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DC2 50 30
|
||||
BEGIN
|
||||
PROMPT 45 12 ""
|
||||
USE LF_CAUSALI KEY 2
|
||||
INPUT DESCR F_DC2
|
||||
DISPLAY "Descrizione@60" DESCR
|
||||
DISPLAY "Codice" CODCAUS
|
||||
COPY OUTPUT F_CA2
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_CA3 3
|
||||
BEGIN
|
||||
PROMPT 2 13 "Rilevazione quote ammortamento "
|
||||
USE LF_CAUSALI
|
||||
INPUT CODCAUS F_CA3
|
||||
DISPLAY "Codice" CODCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_CA3 CODCAUS
|
||||
OUTPUT F_DC3 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DC3 50 30
|
||||
BEGIN
|
||||
PROMPT 45 13 ""
|
||||
USE LF_CAUSALI KEY 2
|
||||
INPUT DESCR F_DC3
|
||||
DISPLAY "Descrizione@60" DESCR
|
||||
DISPLAY "Codice" CODCAUS
|
||||
COPY OUTPUT F_CA3
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_CA4 3
|
||||
BEGIN
|
||||
PROMPT 2 14 "Rilevazione quote plusvalenze "
|
||||
USE LF_CAUSALI
|
||||
INPUT CODCAUS F_CA4
|
||||
DISPLAY "Codice" CODCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_CA4 CODCAUS
|
||||
OUTPUT F_DC4 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DC4 50 30
|
||||
BEGIN
|
||||
PROMPT 45 14 ""
|
||||
USE LF_CAUSALI KEY 2
|
||||
INPUT DESCR F_DC4
|
||||
DISPLAY "Descrizione@60" DESCR
|
||||
DISPLAY "Codice" CODCAUS
|
||||
COPY OUTPUT F_CA4
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_CA5 3
|
||||
BEGIN
|
||||
PROMPT 2 15 "Rilevazione quote minusvalenze "
|
||||
USE LF_CAUSALI
|
||||
INPUT CODCAUS F_CA5
|
||||
DISPLAY "Codice" CODCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_CA5 CODCAUS
|
||||
OUTPUT F_DC5 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DC5 50 30
|
||||
BEGIN
|
||||
PROMPT 45 15 ""
|
||||
USE LF_CAUSALI KEY 2
|
||||
INPUT DESCR F_DC5
|
||||
DISPLAY "Descrizione@60" DESCR
|
||||
DISPLAY "Codice" CODCAUS
|
||||
COPY OUTPUT F_CA5
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
@ -59,10 +59,18 @@ void TQuery_mask::on_search_event(TOperable_field& o)
|
||||
|
||||
TRelation rel(LF_CESPI);
|
||||
|
||||
TString filter;
|
||||
const TEdit_field& imp = efield(F_IMPIANTO);
|
||||
if (imp.active() && !imp.empty())
|
||||
filter << CESPI_CODIMP << "=\"" << imp.get() << '"';
|
||||
TString filter;
|
||||
if (get(F_SELECT)[0] == 'I') // Filtro per impianto
|
||||
{
|
||||
const TString& imp = get(F_IMPIANTO);
|
||||
if (!imp.empty())
|
||||
filter << CESPI_CODIMP << "=\"" << imp << '"';
|
||||
}
|
||||
else // Filtro per attività
|
||||
{
|
||||
filter << "STR(" << CESPI_CODCGRA << "=" << get(F_GRUPPO) << ')';
|
||||
filter << "&&(" << CESPI_CODSPA << "=\"" << get(F_SPECIE) << "\")";
|
||||
}
|
||||
|
||||
TSorted_cursor cur(&rel, order, filter);
|
||||
TCursor_sheet sht(&cur, fields, "Cespiti", header, 0, 1);
|
||||
@ -114,13 +122,13 @@ void TQuery_mask::set_cespi_filter()
|
||||
TString filter;
|
||||
if (get(F_SELECT)[0] == 'I') // Filtro per impianto
|
||||
{
|
||||
const TEdit_field& imp = efield(F_IMPIANTO);
|
||||
const TString& imp = get(F_IMPIANTO);
|
||||
if (!imp.empty())
|
||||
filter << CESPI_CODIMP << "=\"" << imp.get() << '"';
|
||||
filter << CESPI_CODIMP << "=\"" << imp << '"';
|
||||
}
|
||||
else // Filtro per attività
|
||||
{
|
||||
filter << '(' << CESPI_CODCGRA << "=\"" << get(F_GRUPPO) << "\")";
|
||||
filter << "STR(" << CESPI_CODCGRA << "=" << get(F_GRUPPO) << ')';
|
||||
filter << "&&(" << CESPI_CODSPA << "=\"" << get(F_SPECIE) << "\")";
|
||||
}
|
||||
efield(F_IDCESPITE).browse()->set_filter(filter);
|
||||
@ -167,7 +175,7 @@ bool TQuery_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
if (fine_validita > 0 && fine_validita < get_int(F_ESERCIZIO))
|
||||
return error_box("Categoria scaduta nell'esercizio %d", fine_validita);
|
||||
}
|
||||
if (e == fe_init || e == fe_modify)
|
||||
if (e == fe_init || e == fe_modify || e == fe_button)
|
||||
{
|
||||
const bool bollati = stato_attivita() == 3;
|
||||
enable(DLG_NEWREC, !bollati && !o.empty() && !field(F_SPECIE).empty());
|
||||
@ -238,7 +246,7 @@ bool TEdit_mask::one_compiled(const short* f) const
|
||||
if (!field(f[i]).empty())
|
||||
break;
|
||||
}
|
||||
return i >= 0;
|
||||
return f[i] > 0;
|
||||
}
|
||||
|
||||
TCurrency TEdit_mask::sum_fields(const short* f) const
|
||||
@ -324,10 +332,10 @@ bool TEdit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
const TRectype& cac = dc.categoria(0, NULL, get_int(F_CATEGORIA));
|
||||
const TDate iniz = cac.get("D0");
|
||||
if (iniz.ok() && dtfunz < iniz)
|
||||
return error_box("La data è precedente all'inizio della validità della categoria");
|
||||
return error_box("La data è precedente all'inizio validità della categoria");
|
||||
const TDate fine = cac.get("D1");
|
||||
if (fine.ok() && dtfunz > fine)
|
||||
return error_box("La data è succesiva alla fine della validità della categoria");
|
||||
return error_box("La data è successiva alla fine validità della categoria");
|
||||
if (dtfunz.year() >= dc.anno_tuir())
|
||||
{
|
||||
set(F_TUIR, "X");
|
||||
@ -831,7 +839,7 @@ int TAnacespi::write(const TMask& m)
|
||||
switch (_emask->tipo_cespite())
|
||||
{
|
||||
case tc_immateriale:
|
||||
if (cac.get_int("I0") == 2) // Percentuali
|
||||
if (cac.get_int("I1") == 2) // Percentuali
|
||||
{
|
||||
curr.put(CESPI_PIMM, cac.get("R13"));
|
||||
curr.put(CESPI_VINCOLO, 1);
|
||||
@ -853,25 +861,24 @@ int TAnacespi::write(const TMask& m)
|
||||
{
|
||||
TDate dt = m.get(F_DTFUNZ);
|
||||
if (!dt.ok())
|
||||
dt = m.get_date(F_INIZIO_ES);
|
||||
if (dt.year() < 1989)
|
||||
curr.put(CESPI_PMAT, cac.get("R12")); // % beni mat D.M. 29/10/74
|
||||
else
|
||||
curr.put(CESPI_PMAT, cac.get("R11")); // % beni mat D.M. 31/12/88
|
||||
dt = m.get_date(F_INIZIO_ES);
|
||||
// % beni mat D.M. 29/10/74 oppure D.M. 31/12/88
|
||||
const TString& pmat = cac.get(dt.year() < 1989 ? "R12" : "R11");
|
||||
curr.put(CESPI_PMAT, pmat);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
const int cat = m.get_int(F_CATEGORIA);
|
||||
if (cat >= 41)
|
||||
if (cat > 40)
|
||||
{
|
||||
curr.zero(CESPI_CODCGR);
|
||||
curr.zero(CESPI_CODSP);
|
||||
}
|
||||
else
|
||||
{
|
||||
curr.put(CESPI_CODCGR, curr.get(CESPI_CODCGRA));
|
||||
curr.put(CESPI_CODSP, curr.get(CESPI_CODSPA));
|
||||
curr.put(CESPI_CODCGR, m.get(F_GRUPPO));
|
||||
curr.put(CESPI_CODSP, m.get(F_SPECIE));
|
||||
}
|
||||
|
||||
int err = TRelation_application::write(m);
|
||||
@ -894,7 +901,7 @@ bool TAnacespi::remove()
|
||||
{
|
||||
const int staat = _qmask->stato_attivita();
|
||||
bool yes = FALSE;
|
||||
if (staat != 1)
|
||||
if (staat == 3)
|
||||
yes = yesno_box("ATTENZIONE: il cespite è già stato stampato su bollato.\n"
|
||||
"Si desidera confermare l'elimininazione?");
|
||||
else
|
||||
@ -916,7 +923,7 @@ bool TAnacespi::remove()
|
||||
|
||||
bool TAnacespi::user_create()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CESPI, LF_SALCE, LF_AMMCE, LF_MOVCE, LF_AMMMV, 0);
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CESPI, LF_SALCE, LF_AMMCE, LF_MOVCE, LF_MOVAM, LF_AMMMV, 0);
|
||||
_cespiti = NULL;
|
||||
_rel_year = 0;
|
||||
|
||||
|
||||
@ -24,6 +24,7 @@ class TConversione_ce_mask : public TAutomask
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
bool already_converted(long ditta);
|
||||
|
||||
public:
|
||||
TCursor_sheet& sheet() {return *_sheet;}
|
||||
@ -70,6 +71,26 @@ bool TConversione_ce_mask::on_field_event(TOperable_field& o, TField_event e, lo
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TConversione_ce_mask::already_converted(long ditta)
|
||||
{
|
||||
prefix().set_codditta(ditta);
|
||||
TTable cce("CCE");
|
||||
int err = cce.first();
|
||||
if (err != NOERR)
|
||||
return FALSE;
|
||||
|
||||
TFilename ditce = prefix().get_studio();
|
||||
ditce.add("cesp/ditce");
|
||||
TExternisamfile oldfile(ditce, FALSE, FALSE);
|
||||
for (err = oldfile.first(); err == NOERR; err = oldfile.next())
|
||||
{
|
||||
long d = oldfile.get_long("CACDD");
|
||||
if (d == ditta)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void TConversione_ce_mask::lista_ditte(TAssoc_array& ditte)
|
||||
{
|
||||
ditte.destroy();
|
||||
@ -77,8 +98,14 @@ void TConversione_ce_mask::lista_ditte(TAssoc_array& ditte)
|
||||
{
|
||||
if (sheet().checked(i))
|
||||
{
|
||||
const char* codditta = sheet().row(i).get(1);
|
||||
ditte.add(codditta);
|
||||
const TString16 codditta = sheet().row(i).get(1);
|
||||
bool add = TRUE;
|
||||
if (already_converted(atol(codditta)))
|
||||
add = yesno_box("La ditta %s potrebbe già essere stata converita:\n"
|
||||
"Si desidera continuare ugualmente, azzerando gli archivi attuali?",
|
||||
(const char*)codditta);
|
||||
if (add)
|
||||
ditte.add(codditta);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -387,35 +414,35 @@ void TConversione_cespiti::zap_table(const char* tab) const
|
||||
|
||||
int TConversione_cespiti::conv_tab(const TFilename& ofname, const char* tab)
|
||||
{
|
||||
long oldditta = -1;
|
||||
long ditta;
|
||||
long oldditta = -1, ditta = -1;
|
||||
TExternisamfile oldfile(ofname, FALSE, FALSE);
|
||||
|
||||
TTable* newfile = NULL;
|
||||
TConfig config("ce0900.ini", tab);
|
||||
TAssoc_array& fieldlist = config.list_variables();
|
||||
TString16 campoditta = (TString&) config.get(CAMPODITTA);
|
||||
const TString16 campoditta = config.get(CAMPODITTA);
|
||||
TString fieldname, fieldvalue;
|
||||
TAssoc_array converted;
|
||||
|
||||
const bool tabella_comune = (tab[0] == '%');
|
||||
|
||||
TString80 message;
|
||||
message.format("Conversione tabella %s", (const char*) ofname);
|
||||
TProgind pi(oldfile.eod(),message, FALSE, TRUE);
|
||||
message.format("Conversione tabella %s", (const char*)ofname);
|
||||
TProgind pi(oldfile.eod(), message, FALSE, TRUE);
|
||||
|
||||
bool to_convert = TRUE;
|
||||
for (int err = oldfile.first(); err == NOERR; err = oldfile.next())
|
||||
{
|
||||
pi.addstatus(1);
|
||||
if (tabella_comune)
|
||||
ditta = -1;
|
||||
else
|
||||
if (!tabella_comune)
|
||||
ditta = oldfile.get_long(campoditta);
|
||||
// mi posiziono sulla ditta indicata
|
||||
// i record sono ordinati per ditta!
|
||||
if (oldditta != ditta)
|
||||
{
|
||||
oldditta = ditta;
|
||||
if (daconvertire(ditta))
|
||||
to_convert = daconvertire(ditta);
|
||||
if (to_convert)
|
||||
{
|
||||
if (newfile)
|
||||
delete newfile;
|
||||
@ -437,7 +464,10 @@ int TConversione_cespiti::conv_tab(const TFilename& ofname, const char* tab)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// creo nuovo record
|
||||
if (!to_convert)
|
||||
continue;
|
||||
|
||||
// creo nuovo record (Serve per tabelle comuni!)
|
||||
if (newfile == NULL)
|
||||
newfile = new TTable(tab);
|
||||
TRectype newrec = newfile->curr();
|
||||
|
||||
@ -9,6 +9,7 @@ int main(int argc,char** argv)
|
||||
{
|
||||
case 1 : ce1200(argc,argv); break; // Forzatura ammortamento su movimenti
|
||||
case 2 : ce1300(argc,argv); break; // Scelta ammortamento per cespite
|
||||
case 3 : ce1400(argc,argv); break; // Scelta ammortamento per categoria
|
||||
case 4 : ce1500(argc,argv); break; // Gestione movimenti
|
||||
default: ce1100(argc,argv); break; // Forzatura ammortamento su cespiti
|
||||
}
|
||||
|
||||
1
ce/ce1.h
1
ce/ce1.h
@ -4,6 +4,7 @@
|
||||
int ce1100(int argc, char* argv[]);
|
||||
int ce1200(int argc, char* argv[]);
|
||||
int ce1300(int argc, char* argv[]);
|
||||
int ce1400(int argc, char* argv[]);
|
||||
int ce1500(int argc, char* argv[]);
|
||||
|
||||
#endif // __CE1_H
|
||||
|
||||
@ -67,8 +67,17 @@ void TQuery_mask::on_search_event(TOperable_field& o)
|
||||
TRelation rel(LF_CESPI);
|
||||
|
||||
TString filter;
|
||||
if (!field(F_IMPIANTO).empty())
|
||||
filter << CESPI_CODIMP << "==" << get(F_IMPIANTO);
|
||||
if (get(F_SELECT)[0] == 'I') // Filtro per impianto
|
||||
{
|
||||
const TString& imp = get(F_IMPIANTO);
|
||||
if (!imp.empty())
|
||||
filter << CESPI_CODIMP << "=\"" << imp << '"';
|
||||
}
|
||||
else // Filtro per attività
|
||||
{
|
||||
filter << "STR(" << CESPI_CODCGRA << "=" << get(F_GRUPPO) << ')';
|
||||
filter << "&&(" << CESPI_CODSPA << "=\"" << get(F_SPECIE) << "\")";
|
||||
}
|
||||
|
||||
TSorted_cursor cur(&rel, order, filter);
|
||||
TCursor_sheet sht(&cur, fields, "Cespiti", header, 0, 1);
|
||||
@ -113,7 +122,7 @@ void TQuery_mask::calc_res(bool prec)
|
||||
TCespite ces (get(F_IDCESPITE));
|
||||
// calcolo ammortamento sul cespite (per sit. fiscale(1) e civilistica(2))
|
||||
TDate fine_es = get(F_FINE_ES);
|
||||
ces.calc_amm(1, FALSE, fine_es);
|
||||
ces.calc_amm(1, fine_es);
|
||||
const TRectype& salce2=ces.sal_pro(); //rectype giá di "tipo fiscale"
|
||||
const TRectype& ammce2=ces.amm_pro();
|
||||
// determinazione del residuo fiscale
|
||||
@ -123,7 +132,7 @@ void TQuery_mask::calc_res(bool prec)
|
||||
if (!prec)
|
||||
_residuof -= ammce2.get_real(AMMCE_QNOR)+ammce2.get_real(AMMCE_QACC)+ammce2.get_real(AMMCE_QANT)+ammce2.get_real(AMMCE_QPERSE)+ammce2.get_real(AMMCE_FPRIVATO)+ammce2.get_real(AMMCE_QPPRIVATE);
|
||||
|
||||
ces.calc_amm(2, FALSE, fine_es);
|
||||
ces.calc_amm(2, fine_es);
|
||||
//rectype giá di "tipo civilistico"
|
||||
// determinazione del residuo civilistico
|
||||
_residuoc = ZERO;
|
||||
@ -138,13 +147,13 @@ void TQuery_mask::set_cespi_filter() //metodo per il filtraggio corretto sulla
|
||||
TString filter;
|
||||
if (get(F_SELECT)[0] == 'I') // Filtro per impianto
|
||||
{
|
||||
const TEdit_field& imp = efield(F_IMPIANTO);
|
||||
const TString& imp = get(F_IMPIANTO);
|
||||
if (!imp.empty())
|
||||
filter << CESPI_CODIMP << "=\"" << imp.get() << '"';
|
||||
filter << CESPI_CODIMP << "=\"" << imp << '"';
|
||||
}
|
||||
else // Filtro per attività
|
||||
{
|
||||
filter << '(' << CESPI_CODCGRA << "=\"" << get(F_GRUPPO) << "\")";
|
||||
filter << "STR(" << CESPI_CODCGRA << "=" << get(F_GRUPPO) << ')';
|
||||
filter << "&&(" << CESPI_CODSPA << "=\"" << get(F_SPECIE) << "\")";
|
||||
}
|
||||
efield(F_IDCESPITE).browse()->set_filter(filter);
|
||||
@ -454,8 +463,8 @@ void TForza_amm_cespi::update_amm(const TMask& m)
|
||||
{
|
||||
TCespite ces(m.get(F_IDCESPITE));
|
||||
TDate fine_es = m.get_date(F_FINE_ES);
|
||||
ces.calc_amm(1, FALSE, fine_es);
|
||||
ces.calc_amm(2, FALSE, fine_es);
|
||||
ces.calc_amm(1, fine_es);
|
||||
ces.calc_amm(2, fine_es);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -287,7 +287,7 @@ BEGIN
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER F_QUOTE_PERSE 15
|
||||
CURRENCY F_QUOTE_PERSE 15
|
||||
BEGIN
|
||||
PROMPT 1 18 "Quote perse "
|
||||
FIELD QPERSE
|
||||
@ -295,7 +295,7 @@ BEGIN
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
NUMBER F_PRIVATO 15
|
||||
CURRENCY F_PRIVATO 15
|
||||
BEGIN
|
||||
PROMPT 1 19 "Privato "
|
||||
FIELD FPRIVATO
|
||||
@ -303,7 +303,7 @@ BEGIN
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
NUMBER F_QUOTE_PRIV 15
|
||||
CURRENCY F_QUOTE_PRIV 15
|
||||
BEGIN
|
||||
PROMPT 1 20 "Quote per priv. "
|
||||
FIELD QPPRIVATE
|
||||
|
||||
407
ce/ce1301b.uml
Executable file
407
ce/ce1301b.uml
Executable file
@ -0,0 +1,407 @@
|
||||
#include "ce1301a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -2 0 2
|
||||
|
||||
BUTTON DLG_SAVEREC 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 "~Registra"
|
||||
MESSAGE EXIT,K_SAVE
|
||||
PICTURE BMP_SAVEREC
|
||||
PICTURE BMP_SAVERECDN
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 10 2
|
||||
BEGIN
|
||||
PROMPT -23 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Scelte ammortamenti su cespiti Materiali" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 0 0 "@bParametri ditta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "Ditta "
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 1 ""
|
||||
FLAGS "D"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 2 "Esercizio "
|
||||
FLAGS "DGZ"
|
||||
USE CCE
|
||||
JOIN ESC ALIAS 104 INTO CODTAB==CODTAB
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
OUTPUT F_ESERCIZIO CODTAB
|
||||
OUTPUT F_INIZIO_ES 104@->D0
|
||||
OUTPUT F_FINE_ES 104@->D1
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 1
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
BEGIN
|
||||
PROMPT 26 2 "Inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_FINE_ES
|
||||
BEGIN
|
||||
PROMPT 50 2 "Fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 3 "Gruppo "
|
||||
FLAGS "DZ"
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 3 "Specie "
|
||||
FLAGS "_D"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 3 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IDCESPITE 10
|
||||
BEGIN
|
||||
PROMPT 1 4 "Cespite "
|
||||
FLAGS "DGZ"
|
||||
FIELD IDCESPITE
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 24 4 ""
|
||||
FLAGS "D"
|
||||
USE LF_CESPI
|
||||
INPUT IDCESPITE F_IDCESPITE
|
||||
OUTPUT F_DESC DESC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_CATEGORIA 2
|
||||
BEGIN
|
||||
PROMPT 1 5 "Categoria "
|
||||
FLAGS "DZG"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
FIELD LF_CESPI->CODCAT
|
||||
END
|
||||
|
||||
STRING F_DESC_CAT 60 58
|
||||
BEGIN
|
||||
PROMPT 16 5 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATA F_DTFUNZ
|
||||
BEGIN
|
||||
PROMPT 1 7 "Data entrata in funzione "
|
||||
FLAGS "DG"
|
||||
FIELD LF_CESPI->DTFUNZ
|
||||
END
|
||||
|
||||
NUMBER F_NUMESERAMM 3
|
||||
BEGIN
|
||||
PROMPT 1 8 "Numero esercizi ammortizzati "
|
||||
FLAGS "DG"
|
||||
FIELD LF_SALCE->ANNIAMM
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 56 7 " Normale Anticipato"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 45 8 "Minimo"
|
||||
END
|
||||
|
||||
NUMBER F_NORMIN 6 2
|
||||
BEGIN
|
||||
PROMPT 56 8 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
NUMBER F_ANTMIN 6 2
|
||||
BEGIN
|
||||
PROMPT 69 8 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 45 9 "Massimo"
|
||||
END
|
||||
|
||||
NUMBER F_NORMAX 6 2
|
||||
BEGIN
|
||||
PROMPT 56 9 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 10 "Tipo Scelta"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_SCELTA 1 72
|
||||
BEGIN
|
||||
FLAGS "Z"
|
||||
PROMPT 15 9 ""
|
||||
ITEM "0|Tab. Ministeriale"
|
||||
MESSAGE DISABLE,1@
|
||||
ITEM "1|Cespite"
|
||||
MESSAGE ENABLE,1@
|
||||
ITEM "2|Categoria"
|
||||
MESSAGE DISABLE,1@
|
||||
FIELD SCELTE
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 0 11 "@bScelta su categoria"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 40 11 " Normale Accelerato Anticipato"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 12 "Ammortamento fiscale"
|
||||
END
|
||||
|
||||
NUMBER F_AMMFISC_NOR_CT 6 2
|
||||
BEGIN
|
||||
PROMPT 41 12 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
NUMBER F_AMMFISC_ACC_CT 6 2
|
||||
BEGIN
|
||||
PROMPT 54 12 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
NUMBER F_AMMFISC_ANT_CT 6 2
|
||||
BEGIN
|
||||
PROMPT 67 12 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 13 "Ammortamento civilistico"
|
||||
END
|
||||
|
||||
NUMBER F_AMMCIV_NOR_CT 6 2
|
||||
BEGIN
|
||||
PROMPT 41 13 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
NUMBER F_AMMCIV_ACC_CT 6 2
|
||||
BEGIN
|
||||
PROMPT 54 13 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
NUMBER F_AMMCIV_ANT_CT 6 2
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 67 13 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
BOOLEAN F_AMMRIT_CT
|
||||
BEGIN
|
||||
FLAGS "DG"
|
||||
PROMPT 1 14 "Ammortamento ritardato"
|
||||
END
|
||||
|
||||
BOOLEAN F_AMM100_CT
|
||||
BEGIN
|
||||
FLAGS "DG"
|
||||
PROMPT 1 15 "Amm.to al 100% per beni di valore unitario inferiore a 516.46 Euro"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 0 17 "@bScelta su cespite"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 40 17 " Normale Accelerato Anticipato"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 18 "Ammortamento fiscale"
|
||||
END
|
||||
|
||||
NUMBER F_AMMFISC_NOR_CE 6 2
|
||||
BEGIN
|
||||
PROMPT 41 18 ""
|
||||
FLAGS "U"
|
||||
FIELD PNOR
|
||||
NUM_EXPR (#THIS_FIELD<=#F_NORMAX)&&(#THIS_FIELD<=100)
|
||||
WARNING "L'ammortamento fiscale normale scelto supera il limite della tabella ministeriale"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_AMMFISC_ACC_CE 6 2
|
||||
BEGIN
|
||||
PROMPT 54 18 ""
|
||||
FLAGS "U"
|
||||
FIELD PACC
|
||||
NUM_EXPR #THIS_FIELD<=100
|
||||
WARNING "La percentuale massima di ammortamento é 100"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_AMMFISC_ANT_CE 6 2
|
||||
BEGIN
|
||||
PROMPT 67 18 ""
|
||||
FLAGS "U"
|
||||
FIELD PANT
|
||||
NUM_EXPR (#THIS_FIELD>=#F_ANTMIN)&&(#THIS_FIELD<=100)
|
||||
WARNING "L'ammortamento fiscale anticipato scelto supera il limite ministeriale"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 19 "Ammortamento civilistico"
|
||||
END
|
||||
|
||||
NUMBER F_AMMCIV_NOR_CE 6 2
|
||||
BEGIN
|
||||
PROMPT 41 19 ""
|
||||
FLAGS "U"
|
||||
FIELD 69@->PNOR
|
||||
NUM_EXPR #THIS_FIELD<=100
|
||||
WARNING "La percentuale massima di ammortamento é 100"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_AMMCIV_ACC_CE 6 2
|
||||
BEGIN
|
||||
PROMPT 54 19 ""
|
||||
FLAGS "U"
|
||||
FIELD 69@->PACC
|
||||
NUM_EXPR #THIS_FIELD<=100
|
||||
WARNING "La percentuale massima di ammortamento é 100"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_AMMCIV_ANT_CE 6 2
|
||||
BEGIN
|
||||
PROMPT 67 19 ""
|
||||
FLAGS "U"
|
||||
FIELD 69@->PANT
|
||||
NUM_EXPR (#THIS_FIELD>=#F_ANTMIN)&&(#THIS_FIELD<=100)
|
||||
WARNING "L'ammortamento civilistico anticipato scelto supera il limite ministeriale"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_AMMRIT_CE
|
||||
BEGIN
|
||||
PROMPT 1 20 "Ammortamento ritardato"
|
||||
FLAGS "G"
|
||||
FIELD AMMRIT
|
||||
MESSAGE FALSE COPY,F_AMMRIT_CE2|COPY,F_AMMRIT_CE3
|
||||
MESSAGE TRUE COPY,F_AMMRIT_CE2|COPY,F_AMMRIT_CE3
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_AMMRIT_CE2
|
||||
BEGIN
|
||||
PROMPT 111 20 ""
|
||||
FLAGS "D"
|
||||
FIELD 69@->AMMRIT
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_AMMRIT_CE3
|
||||
BEGIN
|
||||
PROMPT 113 20 ""
|
||||
FLAGS "D"
|
||||
FIELD 77@->AMMRIT
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_AMM100_CE
|
||||
BEGIN
|
||||
PROMPT 1 21 "Amm.to al 100% per beni di valore unitario inferiore a 516.46 Euro"
|
||||
FLAGS "G"
|
||||
FIELD CSCEN
|
||||
MESSAGE FALSE COPY,F_AMM1002_CE|COPY,F_AMM1003_CE
|
||||
MESSAGE TRUE COPY,F_AMM1002_CE|COPY,F_AMM1003_CE
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_AMM1002_CE
|
||||
BEGIN
|
||||
PROMPT 111 21 ""
|
||||
FLAGS "D"
|
||||
FIELD 69@->CSCEN
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_AMM1003_CE
|
||||
BEGIN
|
||||
PROMPT 113 21 ""
|
||||
FLAGS "D"
|
||||
FIELD 77@->CSCEN
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
255
ce/ce1301c.uml
Executable file
255
ce/ce1301c.uml
Executable file
@ -0,0 +1,255 @@
|
||||
#include "ce1301a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -2 0 2
|
||||
|
||||
BUTTON DLG_SAVEREC 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 "~Registra"
|
||||
MESSAGE EXIT,K_SAVE
|
||||
PICTURE BMP_SAVEREC
|
||||
PICTURE BMP_SAVERECDN
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 10 2
|
||||
BEGIN
|
||||
PROMPT -23 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Scelte ammortamenti su cespiti: Beni Immateriali" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bParametri ditta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
FLAGS "D"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "DGZ"
|
||||
USE CCE
|
||||
JOIN ESC ALIAS 104 INTO CODTAB==CODTAB
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
OUTPUT F_ESERCIZIO CODTAB
|
||||
OUTPUT F_INIZIO_ES 104@->D0
|
||||
OUTPUT F_FINE_ES 104@->D1
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 1
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
BEGIN
|
||||
PROMPT 26 3 "Inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_FINE_ES
|
||||
BEGIN
|
||||
PROMPT 50 3 "Fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 4 "Gruppo "
|
||||
FLAGS "DZ"
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 4 "Specie "
|
||||
FLAGS "_D"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IDCESPITE 10
|
||||
BEGIN
|
||||
PROMPT 1 5 "Cespite "
|
||||
FLAGS "DGZ"
|
||||
FIELD IDCESPITE
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 24 5 ""
|
||||
FLAGS "D"
|
||||
USE LF_CESPI
|
||||
INPUT IDCESPITE F_IDCESPITE
|
||||
OUTPUT F_DESC DESC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_CATEGORIA 2
|
||||
BEGIN
|
||||
PROMPT 1 6 "Categoria "
|
||||
FLAGS "DZG"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
FIELD LF_CESPI->CODCAT
|
||||
END
|
||||
|
||||
STRING F_DESC_CAT 60 58
|
||||
BEGIN
|
||||
PROMPT 16 6 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATA F_DTFUNZ
|
||||
BEGIN
|
||||
PROMPT 1 8 "Data entrata in funzione "
|
||||
FLAGS "DG"
|
||||
FIELD LF_CESPI->DTFUNZ
|
||||
END
|
||||
|
||||
NUMBER F_NUMESERAMM 3
|
||||
BEGIN
|
||||
PROMPT 1 9 "Numero esercizi ammortizzati "
|
||||
FLAGS "DG"
|
||||
FIELD LF_SALCE->ANNIAMM
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 11 "Tipo Scelta"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_SCELTA 1 72
|
||||
BEGIN
|
||||
FLAGS "Z"
|
||||
PROMPT 15 10 ""
|
||||
ITEM "0|Tab. Ministeriale"
|
||||
MESSAGE DISABLE,1@
|
||||
ITEM "1|Cespite"
|
||||
MESSAGE ENABLE,1@
|
||||
ITEM "2|Categoria"
|
||||
MESSAGE DISABLE,1@
|
||||
FIELD SCELTE
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 0 13 "@bTabelle ministeriali"
|
||||
END
|
||||
|
||||
NUMBER F_ALIQMAX 6 2
|
||||
BEGIN
|
||||
PROMPT 1 14 "Aliquota massima "
|
||||
FLAGS "D"
|
||||
FIELD LF_CESPI->PIMM
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 0 17 "@bScelta ammortamenti"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 30 17 "Scelta su categoria Scelta su cespite"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 18 "Ammortamento fiscale"
|
||||
END
|
||||
|
||||
NUMBER F_AMMFISC_CT 6 2
|
||||
BEGIN
|
||||
PROMPT 40 18 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
NUMBER F_AMMFISC_CE 6 2
|
||||
BEGIN
|
||||
PROMPT 65 18 ""
|
||||
NUM_EXPR #THIS_FIELD<=100
|
||||
WARNING "La percentuale di ammortamento deve essere <= 100"
|
||||
FIELD PNOR
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 19 "Ammortamento civilistico"
|
||||
END
|
||||
|
||||
NUMBER F_AMMCIV_CT 6 2
|
||||
BEGIN
|
||||
PROMPT 40 19 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
NUMBER F_AMMCIV_CE 6 2
|
||||
BEGIN
|
||||
PROMPT 65 19 ""
|
||||
NUM_EXPR #THIS_FIELD<=100
|
||||
WARNING "La percentuale di ammortamento deve essere <= 100"
|
||||
FIELD 69@->PNOR
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 20 "Anni ammortamento richiesti"
|
||||
END
|
||||
|
||||
NUMBER F_ANNIAMMOREQ 8
|
||||
BEGIN
|
||||
PROMPT 65 20 ""
|
||||
FIELD ANNIRIC
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_ANNIAMMOREQ2 8
|
||||
BEGIN
|
||||
PROMPT 65 20 ""
|
||||
FIELD 69@->ANNIRIC
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
268
ce/ce1301d.uml
Executable file
268
ce/ce1301d.uml
Executable file
@ -0,0 +1,268 @@
|
||||
#include "ce1301a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -2 0 2
|
||||
|
||||
BUTTON DLG_SAVEREC 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 "~Registra"
|
||||
MESSAGE EXIT,K_SAVE
|
||||
PICTURE BMP_SAVEREC
|
||||
PICTURE BMP_SAVERECDN
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 10 2
|
||||
BEGIN
|
||||
PROMPT -23 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Scelte ammortamenti su cespiti: Costi Pluriennali" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bParametri ditta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
FLAGS "D"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "DGZ"
|
||||
USE CCE
|
||||
JOIN ESC ALIAS 104 INTO CODTAB==CODTAB
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
OUTPUT F_ESERCIZIO CODTAB
|
||||
OUTPUT F_INIZIO_ES 104@->D0
|
||||
OUTPUT F_FINE_ES 104@->D1
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 1
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
BEGIN
|
||||
PROMPT 26 3 "Inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_FINE_ES
|
||||
BEGIN
|
||||
PROMPT 50 3 "Fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 4 "Gruppo "
|
||||
FLAGS "DZ"
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 4 "Specie "
|
||||
FLAGS "_D"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IDCESPITE 10
|
||||
BEGIN
|
||||
PROMPT 1 5 "Cespite "
|
||||
FLAGS "DGZ"
|
||||
FIELD IDCESPITE
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 24 5 ""
|
||||
FLAGS "D"
|
||||
USE LF_CESPI
|
||||
INPUT IDCESPITE F_IDCESPITE
|
||||
OUTPUT F_DESC DESC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_CATEGORIA 2
|
||||
BEGIN
|
||||
PROMPT 1 6 "Categoria "
|
||||
FLAGS "DZG"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
FIELD LF_CESPI->CODCAT
|
||||
END
|
||||
|
||||
STRING F_DESC_CAT 60 58
|
||||
BEGIN
|
||||
PROMPT 16 6 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATA F_DTFUNZ
|
||||
BEGIN
|
||||
PROMPT 1 8 "Data entrata in funzione "
|
||||
FLAGS "DG"
|
||||
FIELD LF_CESPI->DTFUNZ
|
||||
END
|
||||
|
||||
NUMBER F_NUMESERAMM 3
|
||||
BEGIN
|
||||
PROMPT 1 9 "Numero esercizi ammortizzati "
|
||||
FLAGS "DG"
|
||||
FIELD LF_SALCE->ANNIAMM
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 11 "Tipo Scelta"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_SCELTA 1 72
|
||||
BEGIN
|
||||
FLAGS "Z"
|
||||
PROMPT 15 10 ""
|
||||
ITEM "0|Tab. Ministeriale"
|
||||
MESSAGE DISABLE,1@
|
||||
ITEM "1|Cespite"
|
||||
MESSAGE ENABLE,1@
|
||||
ITEM "2|Categoria"
|
||||
MESSAGE DISABLE,1@
|
||||
FIELD SCELTE
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 0 12 "@bTabelle ministeriali"
|
||||
END
|
||||
|
||||
NUMBER F_ALIQMAX 6 2
|
||||
BEGIN
|
||||
PROMPT 1 14 "Aliquota massima "
|
||||
FLAGS "D"
|
||||
FIELD LF_CESPI->PMAXP
|
||||
END
|
||||
|
||||
NUMBER F_ALIQMIN 6 2
|
||||
BEGIN
|
||||
PROMPT 1 13 "Aliquota minima "
|
||||
FLAGS "D"
|
||||
FIELD LF_CESPI->PMINP
|
||||
END
|
||||
|
||||
NUMBER F_ENTROANNI 8
|
||||
BEGIN
|
||||
PROMPT 1 15 "Entro numero anni "
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 0 17 "@bScelta ammortamenti"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 30 17 "Scelta su categoria Scelta su cespite"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 18 "Ammortamento fiscale"
|
||||
END
|
||||
|
||||
NUMBER F_AMMFISC_CT 6 2
|
||||
BEGIN
|
||||
PROMPT 40 18 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
NUMBER F_AMMFISC_CE 6 2
|
||||
BEGIN
|
||||
PROMPT 65 18 ""
|
||||
NUM_EXPR #THIS_FIELD<=100
|
||||
WARNING "La percentuale di ammortamento deve essere <= 100"
|
||||
FIELD PNOR
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 19 "Ammortamento civilistico"
|
||||
END
|
||||
|
||||
NUMBER F_AMMCIV_CT 6 2
|
||||
BEGIN
|
||||
PROMPT 40 19 ""
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
NUMBER F_AMMCIV_CE 6 2
|
||||
BEGIN
|
||||
PROMPT 65 19 ""
|
||||
NUM_EXPR #THIS_FIELD<=100
|
||||
WARNING "La percentuale di ammortamento deve essere <= 100"
|
||||
FIELD 69@->PNOR
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 20 "Anni ammortamento richiesti"
|
||||
END
|
||||
|
||||
NUMBER F_ANNIAMMOREQ 8
|
||||
BEGIN
|
||||
PROMPT 65 20 ""
|
||||
FIELD AMMRIC
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_ANNIAMMOREQ2 8
|
||||
BEGIN
|
||||
PROMPT 65 20 ""
|
||||
FIELD 69@->AMMRIC
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
466
ce/ce1400.cpp
Executable file
466
ce/ce1400.cpp
Executable file
@ -0,0 +1,466 @@
|
||||
#include <automask.h>
|
||||
#include <recarray.h>
|
||||
#include <relapp.h>
|
||||
#include <defmask.h>
|
||||
|
||||
#include "celib.h"
|
||||
#include "ce1400a.h"
|
||||
|
||||
#include "catdi.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Applicazione principale
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TScelta_amm_cat : public TRelation_application
|
||||
{
|
||||
TRelation* _rel;
|
||||
TAutomask* _msk[4];
|
||||
int _tipo;
|
||||
|
||||
protected:
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual TRelation* get_relation() const { return _rel; }
|
||||
virtual bool changing_mask(int) { return TRUE; }
|
||||
virtual TMask* get_mask(int mode);
|
||||
virtual bool protected_record(TRelation& rel);
|
||||
|
||||
void init_mask(TMask& m);
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_query_insert_mode(TMask& m);
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m);
|
||||
|
||||
public:
|
||||
void set_tipo_beni(int t) { _tipo = t; }
|
||||
};
|
||||
|
||||
inline TScelta_amm_cat& app() { return (TScelta_amm_cat&)main_app(); }
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Maschera di query
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TSac_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TSac_mask() : TAutomask("ce1400a") { }
|
||||
};
|
||||
|
||||
bool TSac_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_ESERCIZIO:
|
||||
case F_GRUPPO:
|
||||
case F_SPECIE:
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
const int ese = get_int(F_ESERCIZIO);
|
||||
const int gru = get_int(F_GRUPPO);
|
||||
const char* spe = get(F_SPECIE);
|
||||
TString16 str;
|
||||
str.format("%04d%02d%-4s", ese, gru, spe);
|
||||
const TRectype& curr_ccb = cache().get("CCB", str);
|
||||
const bool can_create = !curr_ccb.get_bool("B1"); // Bollato stampato
|
||||
enable(DLG_NEWREC, can_create);
|
||||
enable(DLG_DELREC, can_create);
|
||||
}
|
||||
break;
|
||||
case F_CATEGORIA:
|
||||
case F_DESC_CAT:
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
bool ok = dc.on_category_event(o, e, jolly);
|
||||
if (!ok)
|
||||
return FALSE;
|
||||
}
|
||||
case F_CATEGORIA2:
|
||||
case F_DESC_CAT2:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
const int gr = get_int(F_GRUPPO);
|
||||
const char* sp = get(F_SPECIE);
|
||||
const int ca = get_int(F_CATEGORIA);
|
||||
const TRectype& cac = dc.categoria(gr, sp, ca);
|
||||
bool ok = !cac.empty();
|
||||
if (ok && (o.dlg() == F_CATEGORIA || o.dlg() == F_CATEGORIA2))
|
||||
{
|
||||
set(o.dlg() == F_CATEGORIA ? F_DESC_CAT : F_DESC_CAT2, cac.get("S0"));
|
||||
|
||||
if (cac.get_bool("B0"))
|
||||
return error_box("Categoria non ammortizzabile");
|
||||
|
||||
const int tb = cac.get_int("I0");
|
||||
app().set_tipo_beni(tb);
|
||||
switch (tb)
|
||||
{
|
||||
case 1: // Beni immateriali
|
||||
{
|
||||
const bool amm_per_anni = cac.get_int("I1") <= 1;
|
||||
if (amm_per_anni)
|
||||
return error_box("La categoria prevede un ammortamento per anni:\n"
|
||||
"Effettuare le scelte sul cespite");
|
||||
}
|
||||
break;
|
||||
case 2: // Costi pluriennali
|
||||
{
|
||||
const int vincolo = cac.get_int("I2");
|
||||
if (vincolo == 3) // Quote
|
||||
return error_box("La categoria prevede un ammortamento per quote costanti:\n"
|
||||
"Effettuare le scelte sul cespite");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!ok && o.dlg() == F_CATEGORIA2)
|
||||
return error_box("E' neccessario specificare una categoria valida");
|
||||
if (ok && e == fe_button && o.dlg() == F_CATEGORIA)
|
||||
send_key(K_ENTER, 0);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Maschera di beni materiali
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TMat_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
bool test_min(short quota, short minimo) const;
|
||||
bool test_max(short nor, short ant, short acc) const;
|
||||
bool test_rit(short quota, short minimo) const;
|
||||
bool is_max(short quota, short massimo) const;
|
||||
|
||||
public:
|
||||
TMat_mask() : TAutomask("ce1400b") { }
|
||||
};
|
||||
|
||||
bool TMat_mask::test_min(short quota, short minimo) const
|
||||
{
|
||||
bool warning = FALSE;
|
||||
const bool ammrit = get_bool(F_AMMRIT);
|
||||
if (!ammrit)
|
||||
{
|
||||
const real perq = get(quota);
|
||||
const real minq = get(minimo);
|
||||
warning = perq < minq;
|
||||
}
|
||||
return warning;
|
||||
}
|
||||
|
||||
bool TMat_mask::test_rit(short quota, short minimo) const
|
||||
{
|
||||
bool warning = FALSE;
|
||||
const bool ammrit = get_bool(F_AMMRIT);
|
||||
if (ammrit)
|
||||
{
|
||||
const real perq = get(quota);
|
||||
const real minq = get(minimo);
|
||||
warning = perq >= minq;
|
||||
}
|
||||
return warning;
|
||||
}
|
||||
|
||||
|
||||
bool TMat_mask::test_max(short nor, short ant, short acc) const
|
||||
{
|
||||
real tot;
|
||||
tot += get_real(nor);
|
||||
tot += get_real(ant);
|
||||
tot += get_real(acc);
|
||||
return tot > 100.0;
|
||||
}
|
||||
|
||||
bool TMat_mask::is_max(short quota, short massima) const
|
||||
{
|
||||
const real perq = get(quota);
|
||||
const real maxq = get(massima);
|
||||
return perq >= maxq;
|
||||
}
|
||||
|
||||
bool TMat_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_CATEGORIA:
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
dc.on_category_event(o, e, jolly);
|
||||
}
|
||||
break;
|
||||
case F_NORFIS_87:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (test_min(F_NORFIS_87, F_MIN_87))
|
||||
warning_box("L'ammortamento normale è inferiore al minimo della tabella ministeriale:\n"
|
||||
"Se non si seleziona l'ammortamento ritardato verrano generate delle quote perse");
|
||||
if (test_max(F_NORFIS_87, F_ANTFIS_87, F_ACCFIS))
|
||||
return error_box("Il totale delle percentuali di ammortamento supera il 100%");
|
||||
if (test_rit(F_NORFIS_87, F_MIN_87))
|
||||
return error_box("In caso di ammortamento ritardato si deve specificare una quota inferiore al minimo ministeriale");
|
||||
}
|
||||
break;
|
||||
case F_NORFIS_88:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (test_min(F_NORFIS_88, F_MIN_88))
|
||||
warning_box("L'ammortamento normale è inferiore al minimo della tabella ministeriale:\n"
|
||||
"Se non si seleziona l'ammortamento ritardato verrano generate delle quote perse");
|
||||
if (test_max(F_NORFIS_88, F_ANTFIS_88, F_ACCFIS))
|
||||
return error_box("Il totale delle percentuali di ammortamento supera il 100%");
|
||||
if (test_rit(F_NORFIS_88, F_MIN_88))
|
||||
return error_box("In caso di ammortamento ritardato si deve specificare una quota inferiore al minimo ministeriale");
|
||||
}
|
||||
break;
|
||||
case F_NORFIS_89:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (test_min(F_NORFIS_89, F_MIN_89))
|
||||
warning_box("L'ammortamento normale è inferiore al minimo della tabella ministeriale:\n"
|
||||
"Se non si seleziona l'ammortamento ritardato verrano generate delle quote perse");
|
||||
if (test_max(F_NORFIS_89, F_ANTFIS_89, F_ACCFIS))
|
||||
return error_box("Il totale delle percentuali di ammortamento supera il 100%");
|
||||
if (test_rit(F_NORFIS_89, F_MIN_89))
|
||||
return error_box("In caso di ammortamento ritardato si deve specificare una quota inferiore al minimo ministeriale");
|
||||
}
|
||||
break;
|
||||
case F_ANTFIS_87:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (!o.empty() && !is_max(F_NORFIS_87, F_MAX_87))
|
||||
return error_box("E' necessario completare l'ammortamento normale prima di calcolare quello anticipato");
|
||||
}
|
||||
break;
|
||||
case F_ANTFIS_88:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (!o.empty() && !is_max(F_NORFIS_88, F_MAX_88))
|
||||
return error_box("E' necessario completare l'ammortamento normale prima di calcolare quello anticipato");
|
||||
}
|
||||
break;
|
||||
case F_ANTFIS_89:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (!o.empty() && !is_max(F_NORFIS_89, F_MAX_89))
|
||||
return error_box("E' necessario completare l'ammortamento normale prima di calcolare quello anticipato");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Maschera di beni immateriali
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TImm_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TImm_mask() : TAutomask("ce1400c") { }
|
||||
};
|
||||
|
||||
bool TImm_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_CATEGORIA:
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
return dc.on_category_event(o, e, jolly);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Maschera di costi pluriennali
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TPlu_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TPlu_mask() : TAutomask("ce1400d") { }
|
||||
};
|
||||
|
||||
bool TPlu_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_CATEGORIA:
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
return dc.on_category_event(o, e, jolly);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Applicazione principale
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TMask* TScelta_amm_cat::get_mask(int mode)
|
||||
{
|
||||
TMask* m = NULL;
|
||||
if (mode == MODE_QUERY || mode == MODE_QUERYINS)
|
||||
{
|
||||
if (_msk[0] == NULL)
|
||||
_msk[0] = new TSac_mask;
|
||||
m = _msk[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(_tipo)
|
||||
{
|
||||
case 1:
|
||||
if (_msk[2] == NULL)
|
||||
_msk[2] = new TImm_mask;
|
||||
break;
|
||||
case 2:
|
||||
if (_msk[3] == NULL)
|
||||
_msk[3] = new TPlu_mask;
|
||||
break;
|
||||
default:
|
||||
if (_msk[1] == NULL)
|
||||
_msk[1] = new TMat_mask;
|
||||
break;
|
||||
}
|
||||
m = _msk[_tipo+1];
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
bool TScelta_amm_cat::user_create()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_CATDI, 0);
|
||||
_rel = new TRelation(LF_CATDI);
|
||||
memset(_msk, 0, sizeof(_msk));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TScelta_amm_cat::user_destroy()
|
||||
{
|
||||
for (int m = 3; m >= 0; m--)
|
||||
if (_msk[m]) delete _msk[m];
|
||||
delete _rel;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TScelta_amm_cat::protected_record(TRelation& rel)
|
||||
{
|
||||
const TRectype& curr = rel.curr();
|
||||
const int annoes = curr.get_int(CATDI_CODES);
|
||||
int gruppo = curr.get_int(CATDI_CODCGRA);
|
||||
if (gruppo <= 0) gruppo = curr.get_int(CATDI_CODCGR);
|
||||
TString4 specie = curr.get(CATDI_CODSPA);
|
||||
if (specie.blank())
|
||||
specie = curr.get(CATDI_CODSP);
|
||||
|
||||
TString16 str;
|
||||
str.format("%04d%02d%-4s", annoes, gruppo, (const char*)specie);
|
||||
const TRectype& curr_ccb = cache().get("CCB", str);
|
||||
const bool protect = curr_ccb.get_bool("B1"); // Bollato stampato
|
||||
return protect;
|
||||
}
|
||||
|
||||
void TScelta_amm_cat::init_query_mode(TMask& m)
|
||||
{
|
||||
ditta_cespiti().init_mask(m);
|
||||
set_search_field(F_CATEGORIA2);
|
||||
m.show(F_CATEGORIA2); m.show(F_DESC_CAT2);
|
||||
m.hide(F_CATEGORIA); m.hide(F_DESC_CAT);
|
||||
}
|
||||
|
||||
void TScelta_amm_cat::init_query_insert_mode(TMask& m)
|
||||
{
|
||||
ditta_cespiti().init_mask(m);
|
||||
set_search_field(F_CATEGORIA);
|
||||
m.show(F_CATEGORIA); m.show(F_DESC_CAT);
|
||||
m.hide(F_CATEGORIA2); m.hide(F_DESC_CAT2);
|
||||
}
|
||||
|
||||
|
||||
void TScelta_amm_cat::init_mask(TMask& m)
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
const int ese = _msk[0]->get_int(F_ESERCIZIO);
|
||||
const int gru = _msk[0]->get_int(F_GRUPPO);
|
||||
const char* spe = _msk[0]->get(F_SPECIE);
|
||||
const int cat = _msk[0]->get_int(F_CATEGORIA);
|
||||
dc.set_attivita(ese, gru, spe);
|
||||
dc.init_mask(m);
|
||||
|
||||
const TRectype& cac = dc.categoria(gru, spe, cat);
|
||||
switch (_tipo)
|
||||
{
|
||||
case 1:
|
||||
m.set(F_TIPOAMM, cac.get("I1"));
|
||||
m.set(F_MAX_AMM, cac.get("R13"));
|
||||
m.set(F_ANNI, cac.get("I3"));
|
||||
break;
|
||||
case 2:
|
||||
m.set(F_TIPOVINC, cac.get("I2"));
|
||||
m.set(F_MIN_AMM, cac.get("R14"));
|
||||
m.set(F_MAX_AMM, cac.get("R15"));
|
||||
m.set(F_ANNI, cac.get("I3"));
|
||||
break;
|
||||
default:
|
||||
{
|
||||
const real r11 = cac.get("R11");
|
||||
const real r12 = cac.get("R12");
|
||||
m.set(F_MIN_87, real(r12/2.0));
|
||||
m.set(F_MIN_88, real(r12/2.0));
|
||||
m.set(F_MIN_89, real(r11/2.0));
|
||||
m.set(F_MAX_87, r12);
|
||||
m.set(F_MAX_88, r12);
|
||||
m.set(F_MAX_89, r11);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void TScelta_amm_cat::init_insert_mode(TMask& m)
|
||||
{
|
||||
init_mask(m);
|
||||
}
|
||||
|
||||
void TScelta_amm_cat::init_modify_mode(TMask& m)
|
||||
{
|
||||
init_mask(m);
|
||||
}
|
||||
|
||||
int ce1400(int argc, char* argv[])
|
||||
{
|
||||
TScelta_amm_cat sac;
|
||||
sac.run(argc, argv, "Scelta ammortamento per categoria");
|
||||
return 0;
|
||||
}
|
||||
47
ce/ce1400a.h
Executable file
47
ce/ce1400a.h
Executable file
@ -0,0 +1,47 @@
|
||||
#define F_DITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_ESERCIZIO 103
|
||||
#define F_INIZIO_ES 104
|
||||
#define F_FINE_ES 105
|
||||
#define F_GRUPPO 106
|
||||
#define F_SPECIE 107
|
||||
#define F_DESC_GRSP 108
|
||||
#define F_CATEGORIA 109
|
||||
#define F_DESC_CAT 110
|
||||
#define F_CATEGORIA2 111
|
||||
#define F_DESC_CAT2 112
|
||||
|
||||
#define F_MIN_87 201
|
||||
#define F_MIN_88 202
|
||||
#define F_MIN_89 203
|
||||
#define F_MAX_87 204
|
||||
#define F_MAX_88 205
|
||||
#define F_MAX_89 206
|
||||
|
||||
#define F_NORFIS_87 210
|
||||
#define F_NORCIV_87 211
|
||||
#define F_NORFIS_88 212
|
||||
#define F_NORCIV_88 213
|
||||
#define F_NORFIS_89 214
|
||||
#define F_NORCIV_89 215
|
||||
#define F_ANTFIS_87 216
|
||||
#define F_ANTCIV_87 217
|
||||
#define F_ANTFIS_88 218
|
||||
#define F_ANTCIV_88 219
|
||||
#define F_ANTFIS_89 220
|
||||
#define F_ANTCIV_89 221
|
||||
#define F_ACCFIS 222
|
||||
#define F_ACCCIV 223
|
||||
|
||||
#define F_AMMRIT 230
|
||||
#define F_AMM100 231
|
||||
|
||||
#define F_TIPOAMM 300
|
||||
#define F_TIPOVINC 301
|
||||
#define F_MIN_AMM 302
|
||||
#define F_MAX_AMM 303
|
||||
#define F_ANNI 304
|
||||
#define F_NORFIS 305
|
||||
#define F_NORCIV 306
|
||||
|
||||
|
||||
148
ce/ce1400a.uml
Executable file
148
ce/ce1400a.uml
Executable file
@ -0,0 +1,148 @@
|
||||
#include "ce1400a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -3 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Ammortamento per categorie" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bParametri ditta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "AZ"
|
||||
USE ESC
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
DISPLAY "Codice esercizio" CODTAB
|
||||
DISPLAY "Inizio esercizio" D0
|
||||
DISPLAY "Fine esercizio" D1
|
||||
OUTPUT F_ESERCIZIO CODTAB
|
||||
OUTPUT F_INIZIO_ES D0
|
||||
OUTPUT F_FINE_ES D1
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODES
|
||||
KEY 1
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
BEGIN
|
||||
PROMPT 26 3 "Inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_FINE_ES
|
||||
BEGIN
|
||||
PROMPT 50 3 "Fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 4 "Gruppo "
|
||||
FLAGS "Z"
|
||||
FIELD CODCGRA
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 4 "Specie "
|
||||
FLAGS "_"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
DISPLAY "Gruppo" CODTAB[5,6]
|
||||
DISPLAY "Specie" CODTAB[7,10]
|
||||
DISPLAY "Descrizione@50" 400@->S0
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODSPA
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_CATEGORIA2 2
|
||||
BEGIN
|
||||
PROMPT 1 5 "Categoria "
|
||||
FLAGS "Z"
|
||||
USE LF_CATDI
|
||||
INPUT CODES F_ESERCIZIO SELECT
|
||||
INPUT CODCGRA F_GRUPPO
|
||||
INPUT CODSPA F_SPECIE
|
||||
INPUT CODCAT F_CATEGORIA2
|
||||
DISPLAY "Esercizio" CODES
|
||||
DISPLAY "Gruppo" CODCGRA
|
||||
DISPLAY "Specie" CODSPA
|
||||
DISPLAY "Categoria" CODCAT
|
||||
OUTPUT F_GRUPPO CODCGRA
|
||||
OUTPUT F_SPECIE CODSPA
|
||||
OUTPUT F_CATEGORIA CODCAT
|
||||
OUTPUT F_CATEGORIA2 CODCAT
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "E' necessario specificare una categoria valida"
|
||||
FIELD CODCAT
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC_CAT2 60 58
|
||||
BEGIN
|
||||
PROMPT 16 5 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
NUMBER F_CATEGORIA 2
|
||||
BEGIN
|
||||
PROMPT 1 5 "Categoria "
|
||||
FLAGS "BHZ"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
WARNING "E' necessario specificare una categoria valida"
|
||||
FIELD CODCAT
|
||||
KEY 1
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_DESC_CAT 60 58
|
||||
BEGIN
|
||||
PROMPT 16 5 ""
|
||||
FLAGS "BH"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
363
ce/ce1400b.uml
Executable file
363
ce/ce1400b.uml
Executable file
@ -0,0 +1,363 @@
|
||||
#include "ce1400a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -3 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Beni materiali" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bParametri ditta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "AZD"
|
||||
USE ESC
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
DISPLAY "Codice esercizio" CODTAB
|
||||
DISPLAY "Inizio esercizio" D0
|
||||
DISPLAY "Fine esercizio" D1
|
||||
OUTPUT F_ESERCIZIO CODTAB
|
||||
OUTPUT F_INIZIO_ES D0
|
||||
OUTPUT F_FINE_ES D1
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODES
|
||||
KEY 1
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
BEGIN
|
||||
PROMPT 26 3 "Inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_FINE_ES
|
||||
BEGIN
|
||||
PROMPT 50 3 "Fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 4 "Gruppo "
|
||||
FLAGS "DZ"
|
||||
FIELD CODCGRA
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 4 "Specie "
|
||||
FLAGS "_D"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
DISPLAY "Gruppo" CODTAB[5,6]
|
||||
DISPLAY "Specie" CODTAB[7,10]
|
||||
DISPLAY "Descrizione@50" 400@->S0
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODSPA
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_CATEGORIA 2
|
||||
BEGIN
|
||||
PROMPT 1 5 "Categoria "
|
||||
FLAGS "DGZ"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
WARNING "E' necessario specificare una categoria valida"
|
||||
FIELD CODCAT
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC_CAT 60
|
||||
BEGIN
|
||||
PROMPT 16 5 ""
|
||||
FLAGS "D"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 0 7 "@bLimiti ammortamento"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 24 8 "31-12-1987"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 44 8 "31-12-1988"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 64 8 "31-12-1989"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 9 "Minimo da tabella"
|
||||
END
|
||||
|
||||
NUMBER F_MIN_87 6 2
|
||||
BEGIN
|
||||
PROMPT 26 9 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_MIN_88 6 2
|
||||
BEGIN
|
||||
PROMPT 46 9 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_MIN_89 6 2
|
||||
BEGIN
|
||||
PROMPT 66 9 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 10 "Massimo da tabella"
|
||||
END
|
||||
|
||||
NUMBER F_MAX_87 6 2
|
||||
BEGIN
|
||||
PROMPT 26 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_MAX_88 6 2
|
||||
BEGIN
|
||||
PROMPT 46 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_MAX_89 6 2
|
||||
BEGIN
|
||||
PROMPT 66 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 0 12 "@bScelte"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 13 "Ammortamento"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 22 13 "%Fisc. %Civil."
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 42 13 "%Fisc. %Civil."
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 62 13 "%Fisc. %Civil."
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 14 "Normale"
|
||||
END
|
||||
|
||||
NUMBER F_NORFIS_87 6 2
|
||||
BEGIN
|
||||
PROMPT 22 14 ""
|
||||
FLAGS "U"
|
||||
FIELD PFNORVN
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_87
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_NORCIV_87 6 2
|
||||
BEGIN
|
||||
PROMPT 30 14 ""
|
||||
FLAGS "U"
|
||||
FIELD PCNORVN
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_87
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_NORFIS_88 6 2
|
||||
BEGIN
|
||||
PROMPT 42 14 ""
|
||||
FLAGS "U"
|
||||
FIELD PFNORVT
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_88
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_NORCIV_88 6 2
|
||||
BEGIN
|
||||
PROMPT 50 14 ""
|
||||
FLAGS "U"
|
||||
FIELD PCNORVT
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_88
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_NORFIS_89 6 2
|
||||
BEGIN
|
||||
PROMPT 62 14 ""
|
||||
FLAGS "U"
|
||||
FIELD PFNORNT
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_89
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_NORCIV_89 6 2
|
||||
BEGIN
|
||||
PROMPT 70 14 ""
|
||||
FLAGS "U"
|
||||
FIELD PCNORNT
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_89
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 15 "Anticipato"
|
||||
END
|
||||
|
||||
NUMBER F_ANTFIS_87 6 2
|
||||
BEGIN
|
||||
PROMPT 22 15 ""
|
||||
FLAGS "U"
|
||||
FIELD PFANTVN
|
||||
NUM_EXPR #THIS_FIELD<=15
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_ANTCIV_87 6 2
|
||||
BEGIN
|
||||
PROMPT 30 15 ""
|
||||
FLAGS "U"
|
||||
FIELD PCANTVN
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_87
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_ANTFIS_88 6 2
|
||||
BEGIN
|
||||
PROMPT 42 15 ""
|
||||
FLAGS "U"
|
||||
FIELD PFANTVT
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_88
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_ANTCIV_88 6 2
|
||||
BEGIN
|
||||
PROMPT 50 15 ""
|
||||
FLAGS "U"
|
||||
FIELD PCANTVT
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_88
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_ANTFIS_89 6 2
|
||||
BEGIN
|
||||
PROMPT 62 15 ""
|
||||
FLAGS "U"
|
||||
FIELD PFANTNT
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_89
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_ANTCIV_89 6 2
|
||||
BEGIN
|
||||
PROMPT 70 15 ""
|
||||
FLAGS "U"
|
||||
FIELD PCANTNT
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_89
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 16 "Accelerato"
|
||||
END
|
||||
|
||||
NUMBER F_ACCFIS 6 2
|
||||
BEGIN
|
||||
PROMPT 22 16 ""
|
||||
FLAGS "U"
|
||||
FIELD PFACC
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_87
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_ACCCIV 6 2
|
||||
BEGIN
|
||||
PROMPT 30 16 ""
|
||||
FLAGS "U"
|
||||
FIELD PCACC
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_87
|
||||
WARNING "L'ammortamento non puo` superare il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
BOOLEAN F_AMMRIT
|
||||
BEGIN
|
||||
PROMPT 1 18 "Scelta ammortamento ritardato "
|
||||
FIELD AMMRIT
|
||||
MESSAGE FALSE ENABLE,F_ACCFIS
|
||||
MESSAGE TRUE CLEAR,F_ACCFIS
|
||||
END
|
||||
|
||||
BOOLEAN F_AMM100
|
||||
BEGIN
|
||||
PROMPT 1 19 "Scelta ammortamento al 100% per beni inferiori a 516.46 Euro "
|
||||
FIELD CSCEN
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
175
ce/ce1400c.uml
Executable file
175
ce/ce1400c.uml
Executable file
@ -0,0 +1,175 @@
|
||||
#include "ce1400a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -3 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Beni immateriali" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bParametri ditta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "DZ"
|
||||
USE ESC
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
DISPLAY "Codice esercizio" CODTAB
|
||||
DISPLAY "Inizio esercizio" D0
|
||||
DISPLAY "Fine esercizio" D1
|
||||
OUTPUT F_ESERCIZIO CODTAB
|
||||
OUTPUT F_INIZIO_ES D0
|
||||
OUTPUT F_FINE_ES D1
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODES
|
||||
KEY 1
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
BEGIN
|
||||
PROMPT 26 3 "Inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_FINE_ES
|
||||
BEGIN
|
||||
PROMPT 50 3 "Fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 4 "Gruppo "
|
||||
FLAGS "DZ"
|
||||
FIELD CODCGRA
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 4 "Specie "
|
||||
FLAGS "D_"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
DISPLAY "Gruppo" CODTAB[5,6]
|
||||
DISPLAY "Specie" CODTAB[7,10]
|
||||
DISPLAY "Descrizione@50" 400@->S0
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODSPA
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_CATEGORIA 2
|
||||
BEGIN
|
||||
PROMPT 1 5 "Categoria "
|
||||
FLAGS "DGZ"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
WARNING "E' necessario specificare una categoria valida"
|
||||
FIELD CODCAT
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC_CAT 60
|
||||
BEGIN
|
||||
PROMPT 16 5 ""
|
||||
FLAGS "D"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 0 7 "@bParametri categoria"
|
||||
END
|
||||
|
||||
LIST F_TIPOAMM 1 12
|
||||
BEGIN
|
||||
PROMPT 1 8 "Tipo ammortamento beni immateriali "
|
||||
ITEM "1|Anni"
|
||||
ITEM "2|Percentuali"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_MAX_AMM 6 2
|
||||
BEGIN
|
||||
PROMPT 1 9 "Limite massimo di ammortamento "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ANNI 6
|
||||
BEGIN
|
||||
PROMPT 1 10 "Entro numero anni "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 0 12 "@bScelta ammortamento"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 31 13 "% Fiscale"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 51 13 "% Civilisitico"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 14 "Ammortamento normale"
|
||||
END
|
||||
|
||||
NUMBER F_NORFIS 6 2
|
||||
BEGIN
|
||||
PROMPT 32 14 ""
|
||||
NUM_EXPR #THIS_FIELD<=#F_MAX_AMM
|
||||
WARNING "La quota di ammortamento supera il limite della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_NORCIV 6 2
|
||||
BEGIN
|
||||
PROMPT 56 14 ""
|
||||
FLAGS "U"
|
||||
NUM_EXPR #THIS_FIELD<=100
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
182
ce/ce1400d.uml
Executable file
182
ce/ce1400d.uml
Executable file
@ -0,0 +1,182 @@
|
||||
#include "ce1400a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -3 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Costi pluriennali" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bParametri ditta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "DZ"
|
||||
USE ESC
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
DISPLAY "Codice esercizio" CODTAB
|
||||
DISPLAY "Inizio esercizio" D0
|
||||
DISPLAY "Fine esercizio" D1
|
||||
OUTPUT F_ESERCIZIO CODTAB
|
||||
OUTPUT F_INIZIO_ES D0
|
||||
OUTPUT F_FINE_ES D1
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODES
|
||||
KEY 1
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
BEGIN
|
||||
PROMPT 26 3 "Inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_FINE_ES
|
||||
BEGIN
|
||||
PROMPT 50 3 "Fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 4 "Gruppo "
|
||||
FLAGS "DZ"
|
||||
FIELD CODCGRA
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 4 "Specie "
|
||||
FLAGS "D_"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
DISPLAY "Gruppo" CODTAB[5,6]
|
||||
DISPLAY "Specie" CODTAB[7,10]
|
||||
DISPLAY "Descrizione@50" 400@->S0
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODSPA
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_CATEGORIA 2
|
||||
BEGIN
|
||||
PROMPT 1 5 "Categoria "
|
||||
FLAGS "DGZ"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
WARNING "E' necessario specificare una categoria valida"
|
||||
FIELD CODCAT
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC_CAT 60
|
||||
BEGIN
|
||||
PROMPT 16 5 ""
|
||||
FLAGS "D"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 0 7 "@bParametri categoria"
|
||||
END
|
||||
|
||||
LIST F_TIPOVINC 1 8
|
||||
BEGIN
|
||||
PROMPT 1 8 "Tipo vincolo costi pluriennali "
|
||||
ITEM "1|Nessuno"
|
||||
ITEM "2|Anni"
|
||||
ITEM "3|Quote"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_MIN_AMM 6 2
|
||||
BEGIN
|
||||
PROMPT 1 9 "Limite minimo di ammortamento "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_MAX_AMM 6 2
|
||||
BEGIN
|
||||
PROMPT 1 10 "Limite massimo di ammortamento "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ANNI 6
|
||||
BEGIN
|
||||
PROMPT 1 11 "Entro numero anni "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 0 13 "@bScelta ammortamento"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 31 14 "% Fiscale"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 51 14 "% Civilisitico"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 15 "Ammortamento normale"
|
||||
END
|
||||
|
||||
NUMBER F_NORFIS 6 2
|
||||
BEGIN
|
||||
PROMPT 32 15 ""
|
||||
NUM_EXPR (#THIS_FIELD>=#F_MIN_AMM)&&(#THIS_FIELD<=#F_MAX_AMM)
|
||||
WARNING "La quota di ammortamento deve essere compresa tra i limiti della tabella ministeriale"
|
||||
END
|
||||
|
||||
NUMBER F_NORCIV 6 2
|
||||
BEGIN
|
||||
PROMPT 56 15 ""
|
||||
FLAGS "U"
|
||||
NUM_EXPR #THIS_FIELD<=100
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
@ -8,8 +8,9 @@ int main(int argc,char** argv)
|
||||
|
||||
switch(n)
|
||||
{
|
||||
case 1: ce2200(argc, argv); break;
|
||||
default: ce2100(argc, argv); break;
|
||||
case 1: ce2200(argc, argv); break; // Apertura nuovo esercizio
|
||||
case 2: ce2300(argc, argv); break; // Generazione movimenti contabili
|
||||
default: ce2100(argc, argv); break; // Calcolo ammortamenti
|
||||
}
|
||||
exit(0);
|
||||
return 0;
|
||||
|
||||
2
ce/ce2.h
2
ce/ce2.h
@ -1,3 +1,3 @@
|
||||
int ce2100(int argc, char* argv[]);
|
||||
int ce2200(int argc, char* argv[]);
|
||||
|
||||
int ce2300(int argc, char* argv[]);
|
||||
|
||||
@ -102,7 +102,7 @@ bool TCalcamm::calcola_ammortamenti()
|
||||
|
||||
TCespite cespite(cur.curr());
|
||||
for (int tipo_sit = 1; tipo_sit <= 3; tipo_sit++)
|
||||
cespite.calc_amm(tipo_sit, TRUE, data_limite);
|
||||
cespite.calc_amm(tipo_sit, data_limite, TRUE);
|
||||
}
|
||||
|
||||
// Aggiorna maschera
|
||||
|
||||
682
ce/ce2101.cpp
682
ce/ce2101.cpp
File diff suppressed because it is too large
Load Diff
47
ce/ce2101.h
47
ce/ce2101.h
@ -9,6 +9,7 @@ enum TTipo_cespite { tc_materiale, tc_immateriale, tc_pluriennale };
|
||||
|
||||
class TCespite : public TRectype
|
||||
{
|
||||
int _tipo_sit;
|
||||
TRectype _salini, _salpro;
|
||||
TRectype _ammini, _ammpro;
|
||||
|
||||
@ -19,45 +20,55 @@ protected:
|
||||
void read_sal(int esercizio);
|
||||
void save_sal() const;
|
||||
|
||||
void fill_amm_key(TRectype& ammce, int esercizio, int tpsal, int tpamm) const;
|
||||
void read_amm(int esercizio, int tipo);
|
||||
void fill_amm_key(TRectype& ammce, int esercizio, int tpsal) const;
|
||||
void read_amm(int esercizio);
|
||||
void save_amm() const;
|
||||
|
||||
void set_msg05(const char* msg);
|
||||
|
||||
bool valido(int tipo_sit);
|
||||
bool valido();
|
||||
real get_limit() const;
|
||||
void prepara_saldi(int tipo_sit, bool is_valid);
|
||||
void prepara_saldi(bool is_valid);
|
||||
|
||||
real val_amm(int tiposit) const;
|
||||
real res_amm(int tiposit) const;
|
||||
real val_amm() const;
|
||||
real res_amm() const;
|
||||
real mov_val_amm(const TRectype& tmv) const;
|
||||
real mov_res_amm(const TRectype& tmv, const TRectype& tmvam) const;
|
||||
real calcola_spese_manutenzione(const real& valamm);
|
||||
|
||||
void rip_jolly(TRelation& rel, TRectype& tmv, TRectype& tmvam, const real& num, const real& den);
|
||||
void rip_elem(TRelation& rel, TRectype& tmv, TRectype& tmvam);
|
||||
void rip_costo(TRelation& rel, TRectype& tmv, TRectype& tmvam);
|
||||
void rip_jolly(TRelation& rel, const real& num, const real& den, int mode);
|
||||
void rip_elem(TRelation& rel, int mode);
|
||||
void rip_costo(TRelation& rel, int mode);
|
||||
int test_rip(TRelation& rel);
|
||||
|
||||
TString& ammini_get(const char* pstar) const;
|
||||
bool ammini_get_bool(const char* pstar) const;
|
||||
real ammini_get_real(const char* pstar) const;
|
||||
|
||||
void calc_perc(TRelation& rel, const TRectype& tmv, const TRectype& tmvam, int tipo_sit);
|
||||
void calc_perc(TRelation& rel, const TRectype& tmv, const TRectype& tmvam);
|
||||
void calc_anni(TRectype& ammmv, const TRectype& tmv, const TRectype& tmvam);
|
||||
void amm_mov_ven(TRelation& rel, const TRectype& tmv, const TRectype& tmvam, int tipo_sit);
|
||||
void elabora_mov_neg(TRelation& rel, TRectype& tmv, TRectype& tmvam, int tipo_sit, bool is_valid);
|
||||
void amm_mov_ven(TRelation& rel, const TRectype& tmv, const TRectype& tmvam);
|
||||
real mov_r90_escl_ven(const TRectype& tmv);
|
||||
real mov_r91_escl_ven(const TRectype& tmv);
|
||||
real mov_val_ven(const TRectype& tmv);
|
||||
void cal_valenza(const TRectype& tmv, const TRectype& tmvam, TRectype& ammmv);
|
||||
void elabora_mov_neg(TRelation& rel, TRectype& tmv, TRectype& tmvam);
|
||||
|
||||
real calc_quota(const real& valamm, const real& perric, const real& residuo,
|
||||
real& pereff, TRelation* mov = NULL);
|
||||
real calc_quote_perse(const real& valamm, const real& peric, const real& residuo,
|
||||
const real& quotamm, bool mov_vend, const TDate& dtmov);
|
||||
void agg_quota(int tipo_sit, const real& valamm, TRectype& rec, const char* field, bool calcq);
|
||||
void agg_quota(const real& valamm, TRectype& rec, const char* field, bool calcq);
|
||||
|
||||
void incr_field(TRectype& dst, const char* fdst, const TRectype& src, const char* fsrc, char segno) const;
|
||||
void applica_rettifiche(TRectype& tmv, TRectype& tmvam, int tipo_sit);
|
||||
void applica_rettifiche(TRectype& tmv, TRectype& tmvam);
|
||||
void aggiorna_salpro(const TRectype& tmv, const TRectype& tmvam, char segno);
|
||||
void scansione_movimenti(int tipo_sit, const TDate& data_limite, bool is_valid);
|
||||
void calc_amm_residui(int tipo_sit, bool is_valid);
|
||||
void agg_spe_man(int tipo_sit, bool is_valid);
|
||||
void scansione_movimenti(const TDate& data_limite, bool is_valid);
|
||||
void calc_amm_residui(bool is_valid);
|
||||
void agg_spe_man(bool is_valid);
|
||||
|
||||
public:
|
||||
bool calc_amm(int tipo_sit, bool calc_spe_man, const TDate& data_limite);
|
||||
bool calc_amm(int tipo_sit, const TDate& data_limite, bool calc_spe_man = FALSE);
|
||||
|
||||
const TRectype& categoria() const;
|
||||
TTipo_cespite tipo() const;
|
||||
|
||||
35
ce/ce2300.cpp
Executable file
35
ce/ce2300.cpp
Executable file
@ -0,0 +1,35 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
|
||||
class TCesp2cg_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TCesp2cg_mask() : TAutomask("ce2300a") { }
|
||||
};
|
||||
|
||||
bool TCesp2cg_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
class TCesp2cg : public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
void TCesp2cg::main_loop()
|
||||
{
|
||||
TCesp2cg_mask m;
|
||||
m.run();
|
||||
}
|
||||
|
||||
int ce2300(int argc, char* argv[])
|
||||
{
|
||||
TCesp2cg a;
|
||||
a.run(argc, argv, "Trasferimento movimenti contabili");
|
||||
return 0;
|
||||
}
|
||||
1
ce/ce2300a.h
Executable file
1
ce/ce2300a.h
Executable file
@ -0,0 +1 @@
|
||||
#define F_DITTA 101
|
||||
21
ce/ce2300a.uml
Executable file
21
ce/ce2300a.uml
Executable file
@ -0,0 +1,21 @@
|
||||
#include "ce2300a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -3 0 3
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Trasferimento a contabilità" -1 -1 78 18
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
@ -573,7 +573,7 @@ SECTION BODY FIRST 9
|
||||
BEGIN
|
||||
KEY "Quote non + ammortizzabili"
|
||||
PROMPT 126 3 ""
|
||||
MESSAGE _NUMEXPR, 106@->QPERSE+106@->FPRIVATO+106@->QPPRIVATE
|
||||
MESSAGE _NUMEXPR, (106@->QPERSE+106@->FPRIVATO+106@->QPPRIVATE)*#FR_MV_SEGNO
|
||||
MESSAGE ADD,BO->FR_MV_QNONAMM
|
||||
END
|
||||
|
||||
|
||||
@ -352,12 +352,12 @@ void TStampa_prospetto::aggiorna_totali(TCursor& cur, const int tipo, TTipo_cesp
|
||||
|
||||
if (tipo == 1)
|
||||
{
|
||||
real rivgf = recsalce.get(MOVCE_RIVGF);
|
||||
real rivgf = recsalce.get(SALCE_RIVGF);
|
||||
_cat._tot_riv += riv75 + riv83 + riv90 + riv91 + rivgf;
|
||||
}
|
||||
else
|
||||
{
|
||||
real rivgc = recsalce.get(MOVCE_RIVGC);
|
||||
real rivgc = recsalce.get(SALCE_RIVGC);
|
||||
_cat._tot_riv += riv75 + riv83 + riv90 + riv91 + rivgc;
|
||||
}
|
||||
|
||||
@ -392,8 +392,9 @@ void TStampa_prospetto::aggiorna_totali(TCursor& cur, const int tipo, TTipo_cesp
|
||||
const TDate dtmov = mov.get(MOVCE_DTMOV);
|
||||
if (dtmov >= _dataini && dtmov <= _datafine)
|
||||
{
|
||||
const TString& tmc = cache().get("TMC", mov.get(MOVCE_CODMOV), "S6"); //prende il valore del campo S6 nella tabella tipi movimento
|
||||
const real segno = mov.get_char(MOVCE_SEGNO) == '-' ? -1 : +1 ;
|
||||
const TString8 codmov = mov.get(MOVCE_CODMOV);
|
||||
const char tmc = cache().get("%TMC", codmov, "S6")[0]; //prende il valore del campo S6 nella tabella tipi movimento
|
||||
const char segno = mov.get_char(MOVCE_SEGNO);
|
||||
riv75 = mov.get_real(MOVCE_RIV75);
|
||||
riv83 = mov.get_real(MOVCE_RIV83);
|
||||
riv90 = mov.get_real(MOVCE_RIV90);
|
||||
@ -406,16 +407,20 @@ void TStampa_prospetto::aggiorna_totali(TCursor& cur, const int tipo, TTipo_cesp
|
||||
real qacc = amm.get_real(MOVAM_QACC);
|
||||
real qant = amm.get_real(MOVAM_QANT);
|
||||
|
||||
if (tmc == "3")
|
||||
if (tmc == 'R')
|
||||
_cat._tot_riveser += riv75 + riv83 + riv90 + riv91 + rivg;
|
||||
if (tmc == "1" || (tmc == "" && segno == '+'))
|
||||
if (tmc == 'I' || (tmc <= ' ' && segno == '+'))
|
||||
{
|
||||
_cat._tot_acqincr += csto - vnonamm2 + riv75 + riv83 + riv90 + riv91 + rivg;
|
||||
_cat._tot_incr += qnor + qacc + qant;
|
||||
if (tmc == "2" || (tmc == "" && segno == '-'))
|
||||
}
|
||||
if (tmc == 'E' || (tmc <= ' ' && segno == '-'))
|
||||
{
|
||||
_cat._tot_cesselim2 += csto - vnonamm2 + riv75 + riv83 + riv90 + riv91 + rivg;
|
||||
_cat._tot_cesselim3 += qnor + qant + qacc;
|
||||
|
||||
_cat._tot_reinplus += mov.get_real(MOVCE_PLUSREIN);
|
||||
}
|
||||
if (tmc == 'P')
|
||||
_cat._tot_reinplus += mov.get_real(MOVCE_PLUSREIN);
|
||||
|
||||
// solo nei casi con tipo =2 e/o 3 viene preso l'ammortamento da ammmv (che verrá poi sommato nella riga 4, piú sotto, a quello
|
||||
// preso da ammce); l'ammortamento viene preso qui in quanto é relativo ai movimenti che vengono qui scanditi
|
||||
|
||||
379
ce/ceeur.cpp
Executable file
379
ce/ceeur.cpp
Executable file
@ -0,0 +1,379 @@
|
||||
#include <applicat.h>
|
||||
#include <config.h>
|
||||
#include <currency.h>
|
||||
#include <prefix.h>
|
||||
#include <progind.h>
|
||||
#include <relation.h>
|
||||
#include <utility.h>
|
||||
#include <tabutil.h>
|
||||
|
||||
#include "../cg/cglib01.h"
|
||||
|
||||
#include "ceeur.h"
|
||||
|
||||
inline TEuro_app& app() { return (TEuro_app&)main_app(); }
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Utilities
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
// Confronta due nomi di directory
|
||||
bool dir_equal(const char* dir1, const char* dir2)
|
||||
{
|
||||
TFilename d1 = dir1; d1.strip("\\/");
|
||||
TFilename d2 = dir2; d2.strip("\\/");
|
||||
return d1 == d2;
|
||||
}
|
||||
|
||||
void convert_import(TRectype& rec, const char* str)
|
||||
{
|
||||
if (str && *str)
|
||||
{
|
||||
TToken_string list = str;
|
||||
FOR_EACH_TOKEN(list, tok)
|
||||
{
|
||||
real r = rec.get(tok);
|
||||
if (r != ZERO)
|
||||
{
|
||||
r /= EURO;
|
||||
r.round(2);
|
||||
rec.put(tok, r);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void zero_import(TRectype& rec, const char* str)
|
||||
{
|
||||
if (str && *str)
|
||||
{
|
||||
TToken_string list = str;
|
||||
FOR_EACH_TOKEN(list, tok)
|
||||
rec.zero(tok);
|
||||
}
|
||||
}
|
||||
|
||||
void keep_import(TRectype& rec, const char* str)
|
||||
{
|
||||
if (str && *str)
|
||||
{
|
||||
TAssoc_array old;
|
||||
TToken_string list = str;
|
||||
FOR_EACH_TOKEN(list, tok)
|
||||
old.add(tok, rec.get(tok));
|
||||
rec.zero();
|
||||
FOR_EACH_ASSOC_STRING(old, obj, key, val)
|
||||
rec.put(key, val);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const TString& build_name(int logicnum, bool euro, long firm)
|
||||
{
|
||||
TFilename dati, datie;
|
||||
app().get_aree_dati(dati, datie);
|
||||
|
||||
TDir d; d.get(logicnum, _nolock, _nordir, _sysdirop);
|
||||
|
||||
TString8 ditta = "com";
|
||||
TFilename name = d.filename();
|
||||
TFilename n = name.name();
|
||||
|
||||
if (!d.is_com())
|
||||
{
|
||||
if (firm < 0)
|
||||
firm = app().get_firm();
|
||||
if (firm > 0)
|
||||
ditta.format("%05ldA", firm);
|
||||
}
|
||||
else
|
||||
{
|
||||
const TFilename n1 = d.name();
|
||||
if (n1[0] != '%')
|
||||
{
|
||||
ditta.cut(0);
|
||||
n = n1;
|
||||
n.ext("dbf");
|
||||
}
|
||||
}
|
||||
|
||||
static TFilename _filename;
|
||||
_filename = euro ? datie : dati;
|
||||
_filename.add(ditta);
|
||||
_filename.add(n);
|
||||
_filename.insert("%", 0);
|
||||
|
||||
return _filename;
|
||||
}
|
||||
|
||||
bool dbf_exists(int logicnum, bool euro, long firm)
|
||||
{
|
||||
TFilename n = build_name(logicnum, euro, firm);
|
||||
if (n[0] == '%') n.ltrim(1);
|
||||
return fexist(n);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Base app
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
bool TEuro_app::get_aree_dati(TFilename& lit, TFilename& eur) const
|
||||
{
|
||||
TConfig prassis(CONFIG_STUDIO, "Euro");
|
||||
lit = prassis.get("DatiLire");
|
||||
eur = prassis.get("DatiEuro");
|
||||
if (lit.blank())
|
||||
{
|
||||
lit = prefix().get_studio();
|
||||
lit.rtrim(1);
|
||||
}
|
||||
bool ok = eur.exist();
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TEuro_app::goto_euro(long ditta)
|
||||
{
|
||||
TFilename lit, eur;
|
||||
bool ok = get_aree_dati(lit, eur);
|
||||
if (ok)
|
||||
{
|
||||
TFilename cur = prefix().get_studio(); cur.rtrim(1);
|
||||
if (ditta < 0)
|
||||
ditta = get_firm();
|
||||
if (!dir_equal(cur, eur))
|
||||
ok = prefix().set_studio(eur, ditta);
|
||||
else
|
||||
prefix().set_codditta(ditta);
|
||||
}
|
||||
if (!ok)
|
||||
error_box("Impossibile utilizzare lo studio in euro '%s'", (const char*)eur);
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TEuro_app::goto_lire(long ditta)
|
||||
{
|
||||
TFilename lit, eur;
|
||||
get_aree_dati(lit, eur);
|
||||
|
||||
bool ok = !lit.blank() && fexist(lit);
|
||||
if (ok)
|
||||
{
|
||||
TFilename cur = prefix().get_studio(); cur.rtrim(1);
|
||||
if (ditta < 0)
|
||||
ditta = get_firm();
|
||||
if (!dir_equal(cur, lit))
|
||||
ok = prefix().set_studio(lit, ditta);
|
||||
else
|
||||
prefix().set_codditta(ditta);
|
||||
}
|
||||
if (!ok)
|
||||
error_box("Impossibile utilizzare lo studio in lire '%s'", (const char*)lit);
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TEuro_app::save_round_bill(const TBill& b) const
|
||||
{
|
||||
bool ok = b.ok();
|
||||
if (ok)
|
||||
{
|
||||
TFilename lit, eur;
|
||||
ok = get_aree_dati(lit, eur);
|
||||
if (ok)
|
||||
{
|
||||
eur.add("config/prassis.ini");
|
||||
TConfig prassis(eur, "Euro");
|
||||
|
||||
TString16 str;
|
||||
str.format("%d,%d,%ld", b.gruppo(), b.conto(), b.sottoconto());
|
||||
prassis.set("RoundBill", str);
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TEuro_app::load_round_bill(TBill& b) const
|
||||
{
|
||||
TFilename lit, eur;
|
||||
bool ok = get_aree_dati(lit, eur);
|
||||
if (ok)
|
||||
{
|
||||
eur.add("config/prassis.ini");
|
||||
TConfig prassis(eur, "Euro");
|
||||
TToken_string str(prassis.get("RoundBill"), ',');
|
||||
const int g = str.get_int();
|
||||
const int c = str.get_int();
|
||||
const long s = str.get_long();
|
||||
b.set(g, c, s);
|
||||
ok = b.find();
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TEuro_app::copy_dir(const char* src, const char* dst) const
|
||||
{
|
||||
bool ok = TRUE;
|
||||
if (!fexist(dst))
|
||||
make_dir(dst);
|
||||
|
||||
TString_array files;
|
||||
TFilename file1, file2;
|
||||
file1 = src; file1.add("*.*");
|
||||
list_files(file1, files);
|
||||
|
||||
TString str;
|
||||
str << "Copia da " << src << " a " << dst << "...";
|
||||
TProgind pi(files.items(), str, FALSE, TRUE);
|
||||
FOR_EACH_ARRAY_ROW(files, i, file)
|
||||
{
|
||||
pi.addstatus(1);
|
||||
file1 = *file;
|
||||
file2 = dst; file2.add(file1.name());
|
||||
ok &= fcopy(file1, file2);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TEuro_app::is_com_file(int lf) const
|
||||
{
|
||||
TDir d;
|
||||
d.get(lf, _nolock, _nordir, _sysdirop);
|
||||
return d.is_com();
|
||||
}
|
||||
|
||||
void TEuro_app::zap_file(int lf, bool euro, const char* filter) const
|
||||
{
|
||||
TFilename name = build_name(lf, euro, -1);
|
||||
if (name[0] == '%') name.ltrim(1);
|
||||
if (name.exist())
|
||||
{
|
||||
if (filter && *filter)
|
||||
{
|
||||
TRelation rel(lf);
|
||||
rel.replace(new TEuroisamfile(lf, euro));
|
||||
TCursor cur(&rel, filter);
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
rel.remove();
|
||||
}
|
||||
else
|
||||
{
|
||||
TExternisamfile f(name);
|
||||
f.zap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TEuro_app::convert_file(int lf, const char* cnv, const char* res, record_handler rh, void* jolly, const char* filter)
|
||||
{
|
||||
if (!dbf_exists(lf, FALSE, -1)) // Non esiste il file da convertire
|
||||
return; // per cui...
|
||||
|
||||
// Cursore su file in lire
|
||||
TRelation rel(lf);
|
||||
TCursor cur(&rel, filter);
|
||||
TRectype& curr = rel.curr();
|
||||
|
||||
zap_file(lf, TRUE, filter); // Azzera file in euro
|
||||
|
||||
// File destinazione in euro
|
||||
TEuroisamfile fileur(lf, TRUE);
|
||||
TRectype& receur = fileur.curr();
|
||||
|
||||
TString str;
|
||||
str << "Conversione " << rel.lfile().description() << " ...";
|
||||
|
||||
TToken_string conv(cnv);
|
||||
TToken_string azze(res);
|
||||
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
TProgind pi(items, str, FALSE, TRUE);
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
{
|
||||
pi.addstatus(1);
|
||||
receur = curr;
|
||||
convert_import(receur, conv);
|
||||
zero_import(receur, azze);
|
||||
|
||||
bool do_write = TRUE;
|
||||
if (rh != NULL)
|
||||
do_write = rh(receur, jolly);
|
||||
if (do_write)
|
||||
fileur.write();
|
||||
}
|
||||
}
|
||||
|
||||
bool TEuro_app::data_adozione_euro(long firm, TDate& adozione, bool& inizio) const
|
||||
{
|
||||
TFilename dati, datie;
|
||||
get_aree_dati(dati, datie);
|
||||
|
||||
TString8 ditta;
|
||||
ditta.format("%05ldA", firm <= 0 ? get_firm() : firm);
|
||||
|
||||
TFilename inie = datie;
|
||||
inie.add(ditta);
|
||||
inie.add("prassid.ini");
|
||||
|
||||
inizio = TRUE; // Supponiamo che adotti l'euro ad inizio esercizio
|
||||
|
||||
bool adotta = inie.exist();
|
||||
if (adotta)
|
||||
{
|
||||
TConfig prassid(inie, "Euro");
|
||||
adozione = prassid.get("DataAdozione");
|
||||
adotta = adozione.ok();
|
||||
if (adotta)
|
||||
{
|
||||
TEsercizi_contabili esc;
|
||||
const int anno = esc.date2esc(adozione);
|
||||
if (anno > 0)
|
||||
inizio = adozione == esc[anno].inizio();
|
||||
}
|
||||
}
|
||||
return adotta;
|
||||
}
|
||||
|
||||
|
||||
bool TEuro_app::create()
|
||||
{
|
||||
old_study = prefix().get_studio();
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
bool TEuro_app::destroy()
|
||||
{
|
||||
if (old_study != prefix().get_studio())
|
||||
{
|
||||
TConfig ini(CONFIG_INSTALL, "Main");
|
||||
ini.set("Study", old_study);
|
||||
}
|
||||
return TSkeleton_application::destroy();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TEuroisamfile
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TEuroisamfile::TEuroisamfile(int logicnum, bool euro, long firm)
|
||||
: TIsamtempfile(logicnum, build_name(logicnum, euro, firm), FALSE, FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// main
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
TApplication::check_parameters(argc, argv);
|
||||
|
||||
int a = argc > 1 ? argv[1][1]-'0' : 0;
|
||||
switch (a)
|
||||
{
|
||||
case 1: ceeur02(argc, argv); break; // Controllo arrotondamenti
|
||||
default: ceeur01(argc, argv); break; // Conversione ditte cespiti
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
104
ce/ceeur.h
Executable file
104
ce/ceeur.h
Executable file
@ -0,0 +1,104 @@
|
||||
#ifndef __BAEUR_H
|
||||
#define __BAEUR_H
|
||||
|
||||
#ifndef __APPLICAT_H
|
||||
#include <applicat.h>
|
||||
#endif
|
||||
|
||||
#ifndef __ISAM_H
|
||||
#include <isam.h>
|
||||
#endif
|
||||
|
||||
#ifndef __CGLIB01_H
|
||||
class TBill;
|
||||
#endif
|
||||
|
||||
|
||||
// Handler personalizzato. Se ritorna true rewrite, altrimenti remove
|
||||
typedef bool (*record_handler)(TRectype& rec, void* jolly);
|
||||
typedef void (*zap_function)(int lf, bool euro, void * jolly);
|
||||
|
||||
class TEuro_app : public TSkeleton_application
|
||||
{
|
||||
TFilename old_study;
|
||||
|
||||
protected:
|
||||
bool goto_lire(long ditta = -1);
|
||||
bool goto_euro(long ditta = -1);
|
||||
bool copy_dir(const char* src, const char* dst) const;
|
||||
|
||||
void convert_file(int lf, const char* cnv, const char* res,
|
||||
record_handler rh = NULL, void* jolly = NULL, const char* filter = NULL);
|
||||
void zap_file(int lf, bool euro = TRUE, const char* filter = NULL) const;
|
||||
void zap_table(const char * tab, bool euro = TRUE);
|
||||
bool is_com_file(int lf) const;
|
||||
bool is_firm_file(int lf) const { return !is_com_file(lf); }
|
||||
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
|
||||
public:
|
||||
bool get_aree_dati(TFilename& lit, TFilename& eur) const;
|
||||
bool data_adozione_euro(long firm, TDate& adozione, bool& inizio) const;
|
||||
|
||||
bool save_round_bill(const TBill& b) const;
|
||||
bool load_round_bill(TBill& b) const;
|
||||
};
|
||||
|
||||
class TEuroisamfile : public TIsamtempfile
|
||||
{
|
||||
public:
|
||||
TEuroisamfile(int logicnum, bool euro = FALSE, long firm = -1);
|
||||
virtual ~TEuroisamfile() { }
|
||||
};
|
||||
|
||||
struct TCG_rmov : public TObject
|
||||
{
|
||||
int _gruppo, _conto;
|
||||
long _sottoconto;
|
||||
TImporto _importo;
|
||||
};
|
||||
|
||||
class TCG_mov : public TArray
|
||||
{
|
||||
enum { MAX_CG_ROWS = 98};
|
||||
|
||||
protected:
|
||||
const TCG_rmov& row(int i) const { return (const TCG_rmov&)*objptr(i); }
|
||||
|
||||
void crea_testata(TLocalisamfile& mov, const TString& caus,
|
||||
const TDate& datareg, const TString& desc) const;
|
||||
void crea_riga(const TRectype& mov, TRectype& rmov, int r) const;
|
||||
void update_saldo(const TRectype& mov, const TRectype& rmov, TLocalisamfile& saldi);
|
||||
|
||||
public:
|
||||
void add(int g, int c, long s, char sez, const real& imp);
|
||||
void add(const TBill& bill, const TImporto& imp);
|
||||
TImporto save(const TDate& datareg, const TString& caus, const TString& desc,
|
||||
const TBill& contro, bool adeuro, bool convert, bool invert);
|
||||
TImporto calc_bil(bool convert, bool invert); // Sommatoria delle righe
|
||||
};
|
||||
|
||||
class TCG_movs : public TArray
|
||||
{
|
||||
public:
|
||||
int indbil(int g, int c) const;
|
||||
TCG_mov& mov(int ib);
|
||||
int add(int g, int c, long s, char sez, const real& imp);
|
||||
TImporto save(const TDate& datareg, const TString& caus, const TString& desc, const TBill& contro,
|
||||
bool adeuro, bool convert, bool invert);
|
||||
};
|
||||
|
||||
bool dir_equal(const char* dir1, const char* dir2);
|
||||
void convert_import(TRectype& rec, const char* str);
|
||||
void zero_import(TRectype& rec, const char* str);
|
||||
void keep_import(TRectype& rec, const char* str);
|
||||
const TString& build_name(int logicnum, bool euro, long firm);
|
||||
bool dbf_exists(int logicnum, bool euro = FALSE, long firm = -1);
|
||||
|
||||
const real EURO(1936.27);
|
||||
|
||||
int ceeur01(int argc, char* argv[]);
|
||||
int ceeur02(int argc, char* argv[]);
|
||||
|
||||
#endif
|
||||
3
ce/ceeur.url
Executable file
3
ce/ceeur.url
Executable file
@ -0,0 +1,3 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
||||
|
||||
441
ce/ceeur01.cpp
Executable file
441
ce/ceeur01.cpp
Executable file
@ -0,0 +1,441 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <browfile.h>
|
||||
#include <dongle.h>
|
||||
#include <execp.h>
|
||||
#include <modaut.h>
|
||||
#include <prefix.h>
|
||||
#include <progind.h>
|
||||
#include <relation.h>
|
||||
|
||||
#include <nditte.h>
|
||||
#include <partite.h>
|
||||
#include <scadenze.h>
|
||||
#include <pagsca.h>
|
||||
#include <saldi.h>
|
||||
|
||||
#include "ceeur.h"
|
||||
#include "ceeur10.h"
|
||||
#include "ceeur11.h"
|
||||
|
||||
#include "movce.h"
|
||||
|
||||
#include "../cg/cglib01.h"
|
||||
#include "../mg/mag.h"
|
||||
#include "../mg/movmag.h"
|
||||
#include "../mg/rmovmag.h"
|
||||
#include "../mg/mglib.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Main app
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TEuro01_app : public TEuro_app
|
||||
{
|
||||
TEsercizi_contabili _esc;
|
||||
|
||||
protected:
|
||||
virtual bool create();
|
||||
virtual void main_loop();
|
||||
|
||||
public:
|
||||
TEsercizi_contabili& esc() { return _esc; }
|
||||
|
||||
void copy_cespi();
|
||||
|
||||
void convert_saldi(int codes);
|
||||
void convert_saldi_file(int lf, int codes);
|
||||
|
||||
void convert_mov(int codes, bool infra);
|
||||
void convert_mov_file(int lf, int codes);
|
||||
|
||||
KEY convert_firm(long ditta);
|
||||
};
|
||||
|
||||
inline TEuro01_app& app() { return (TEuro01_app&)main_app(); }
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Step 1
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TEuro03_mask : public TAutomask
|
||||
{
|
||||
void fill_ditte();
|
||||
|
||||
public:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
TEuro03_mask() : TAutomask("ceeur10") { }
|
||||
};
|
||||
|
||||
void TEuro03_mask::fill_ditte()
|
||||
{
|
||||
TFilename lit, eur;
|
||||
app().get_aree_dati(lit, eur);
|
||||
|
||||
TRelation rel(LF_NDITTE);
|
||||
TCursor cur(&rel);
|
||||
const TRectype& curr = rel.curr();
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
|
||||
TSheet_field& ditte = sfield(F10_DITTE);
|
||||
ditte.destroy();
|
||||
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
{
|
||||
const long ditta = curr.get_long(NDT_CODDITTA);
|
||||
if (prefix().exist(ditta))
|
||||
{
|
||||
TToken_string& row = ditte.row(-1);
|
||||
row.add(ditta);
|
||||
row.add(curr.get(NDT_RAGSOC));
|
||||
|
||||
TFilename firm;
|
||||
firm.format("%s/%05ldA", (const char*)eur, ditta);
|
||||
|
||||
if (firm.exist())
|
||||
{
|
||||
row.add("X");
|
||||
firm.add("prassid.ini");
|
||||
TConfig ini(firm, "Euro");
|
||||
TString16 dde = ini.get("DataAdozione");
|
||||
if (dde.empty()) dde = "01-01-2002";
|
||||
row.add(dde);
|
||||
|
||||
if (ini.get_bool("Cespiti"))
|
||||
row.add("X");
|
||||
|
||||
if (field(F10_DITTA).empty())
|
||||
{
|
||||
set(F10_DITTA, ditta);
|
||||
set(F10_RAGSOC, row.get(1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ditte.disable_row(ditte.items()-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ditte.force_update();
|
||||
}
|
||||
|
||||
bool TEuro03_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F10_DITTA:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
TSheet_field& s = sfield(F10_DITTE);
|
||||
TEdit_field& f = efield(F10_DITTA);
|
||||
const long ditta = atol(o.get());
|
||||
for (int r = s.items()-1; r >= 0; r--)
|
||||
{
|
||||
TToken_string& row = s.row(r);
|
||||
const long d = row.get_long(0);
|
||||
if (d == ditta)
|
||||
{
|
||||
set(F10_RAGSOC, row.get());
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (r < 0)
|
||||
return error_box(f.get_warning());
|
||||
}
|
||||
break;
|
||||
case F10_DITTE:
|
||||
if (e == fe_init)
|
||||
fill_ditte();
|
||||
if (e == se_query_add || e == se_query_del)
|
||||
return FALSE;
|
||||
if (e == se_enter)
|
||||
{
|
||||
TSheet_field& s = sfield(F10_DITTE);
|
||||
TToken_string& r = s.row((int)jolly);
|
||||
set(F10_DITTA, r.get(0));
|
||||
set(F10_RAGSOC, r.get());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Step 2 - Conversione ditta
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TEuro11_mask : public TAutomask
|
||||
{
|
||||
public:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
TEuro11_mask();
|
||||
};
|
||||
|
||||
TEuro11_mask::TEuro11_mask() : TAutomask("ceeur11")
|
||||
{
|
||||
disable(F11_ADOZIONE);
|
||||
}
|
||||
|
||||
bool TEuro11_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Conversione ditta
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
KEY TEuro01_app::convert_firm(long ditta)
|
||||
{
|
||||
TFilename lit, eur;
|
||||
get_aree_dati(lit, eur);
|
||||
prefix().set_studio(lit, ditta);
|
||||
|
||||
TString16 firm; firm.format("%05ldA", ditta);
|
||||
TFilename litf = lit; litf.add(firm);
|
||||
TFilename eurf = eur; eurf.add(firm);
|
||||
|
||||
TFilename europrassid;
|
||||
europrassid = eurf; europrassid.add("prassid.ini");
|
||||
|
||||
TDate adozione;
|
||||
bool already_present = FALSE;
|
||||
if (!adozione.ok())
|
||||
{
|
||||
TConfig prassid(europrassid, "Euro");
|
||||
already_present = prassid.get_bool("Cespiti");
|
||||
adozione = prassid.get("DataAdozione");
|
||||
}
|
||||
|
||||
bool do_copy = TRUE;
|
||||
bool do_saldi = TRUE;
|
||||
bool do_movim = TRUE;
|
||||
|
||||
TEuro11_mask m;
|
||||
m.set(F11_DITTA, ditta, TRUE);
|
||||
m.set(F11_DATI, lit);
|
||||
m.set(F11_DATIE, eur);
|
||||
m.set(F11_ADOZIONE, adozione);
|
||||
|
||||
m.enable(F11_COPY, already_present);
|
||||
m.set(F11_COPY, do_copy ? "X" : "");
|
||||
|
||||
m.enable(F11_SALDI, already_present);
|
||||
m.set(F11_SALDI, do_saldi ? "X" : "");
|
||||
|
||||
m.enable(F11_MOVIM, already_present);
|
||||
m.set(F11_MOVIM, do_movim ? "X" : "");
|
||||
|
||||
KEY k = m.run();
|
||||
if (k == K_ENTER)
|
||||
{
|
||||
if (already_present && !yesno_box("Si conferma la sovrascrittura dei cespiti della ditta %ld in Euro?", ditta))
|
||||
return K_ESC;
|
||||
|
||||
do_copy = m.get_bool(F11_COPY);
|
||||
do_saldi = m.get_bool(F11_SALDI);
|
||||
do_movim = m.get_bool(F11_MOVIM);
|
||||
|
||||
const bool infra = adozione.day() != 1 || adozione.month() != 1;
|
||||
const int codes = infra ? _esc.date2esc(adozione) : _esc.date2prevesc(adozione);
|
||||
if (do_copy)
|
||||
copy_cespi();
|
||||
if (do_saldi)
|
||||
convert_saldi(codes);
|
||||
if (do_movim)
|
||||
convert_mov(codes, infra);
|
||||
if (!already_present)
|
||||
{
|
||||
TConfig prassid(europrassid, "Euro");
|
||||
prassid.set("Cespiti", "X");
|
||||
}
|
||||
}
|
||||
return k;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Copia cespiti
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
struct TCespi_data
|
||||
{
|
||||
int _codes;
|
||||
TEsercizi_contabili _esc;
|
||||
TLocalisamfile* _movcelit;
|
||||
TEuroisamfile* _movce;
|
||||
|
||||
public:
|
||||
TCespi_data(int codes, bool movce = FALSE);
|
||||
~TCespi_data();
|
||||
};
|
||||
|
||||
TCespi_data::TCespi_data(int codes, bool movce)
|
||||
: _codes(codes), _movce(NULL)
|
||||
{
|
||||
if (movce)
|
||||
{
|
||||
_movcelit = new TLocalisamfile(LF_MOVCE);
|
||||
_movce = new TEuroisamfile(LF_MOVCE, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
TCespi_data::~TCespi_data()
|
||||
{
|
||||
if (_movce)
|
||||
{
|
||||
delete _movce;
|
||||
delete _movcelit;
|
||||
}
|
||||
}
|
||||
|
||||
void TEuro01_app::copy_cespi()
|
||||
{
|
||||
convert_file(LF_CESPI, NULL, NULL);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Conversione saldi
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
HIDDEN bool codes_filter(TRectype& rec, void* jolly)
|
||||
{
|
||||
const TCespi_data* data = (const TCespi_data*)jolly;
|
||||
const int codrec = rec.get_int("CODES");
|
||||
return data->_codes == codrec;
|
||||
}
|
||||
|
||||
void TEuro01_app::convert_saldi_file(int lf, int codes)
|
||||
{
|
||||
TToken_string fields;
|
||||
TString desc;
|
||||
if (lf > LF_TAB)
|
||||
{
|
||||
TLocalisamfile file(lf);
|
||||
const TRectype& rec = file.curr();
|
||||
for (int i = rec.items()-1; i >= 0; i--)
|
||||
{
|
||||
const char* name = rec.fieldname(i);
|
||||
const int length = rec.length(name);
|
||||
const int ndec = rec.ndec(name);
|
||||
if (length >= 9 && ndec >= 2)
|
||||
fields.add(name);
|
||||
}
|
||||
desc << "Conversione " << file.description();
|
||||
}
|
||||
|
||||
TCespi_data data(codes);
|
||||
convert_file(lf, fields, NULL, codes_filter, (void*)&data);
|
||||
}
|
||||
|
||||
void TEuro01_app::convert_saldi(int codes)
|
||||
{
|
||||
convert_saldi_file(LF_SALCE, codes);
|
||||
convert_saldi_file(LF_AMMCE, codes);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Conversione movimenti cespiti
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
HIDDEN bool mov_filter(TRectype& rec, void* jolly)
|
||||
{
|
||||
TCespi_data* data = (TCespi_data*)jolly;
|
||||
TDate dtmov;
|
||||
switch (rec.num())
|
||||
{
|
||||
case LF_MOVCE:
|
||||
dtmov = rec.get(MOVCE_DTMOV);
|
||||
break;
|
||||
default:
|
||||
{
|
||||
CHECK(data->_movce, "Bad TCespi_data");
|
||||
const TString16 idmov = rec.get(MOVCE_IDMOV);
|
||||
TRectype& head = data->_movce->curr();
|
||||
head.zero();
|
||||
head.put(MOVCE_IDMOV, idmov);
|
||||
if (data->_movce->read(_isgteq) == NOERR)
|
||||
{
|
||||
if (head.get(MOVCE_IDMOV) == idmov)
|
||||
dtmov = head.get(MOVCE_DTMOV);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
const int codrec = data->_esc.date2esc(dtmov);
|
||||
return data->_codes == codrec;
|
||||
}
|
||||
|
||||
void TEuro01_app::convert_mov_file(int lf, int codes)
|
||||
{
|
||||
TToken_string fields;
|
||||
|
||||
if (lf > LF_TAB)
|
||||
{
|
||||
TLocalisamfile file(lf);
|
||||
const TRectype& rec = file.curr();
|
||||
for (int i = rec.items()-1; i >= 0; i--)
|
||||
{
|
||||
const char* name = rec.fieldname(i);
|
||||
const int length = rec.length(name);
|
||||
const int ndec = rec.ndec(name);
|
||||
if (length >= 9 && ndec >= 2)
|
||||
fields.add(name);
|
||||
}
|
||||
}
|
||||
|
||||
TCespi_data data(codes, lf != LF_MOVCE);
|
||||
convert_file(lf, fields, NULL, mov_filter, (void*)&data);
|
||||
}
|
||||
|
||||
void TEuro01_app::convert_mov(int codes, bool infra)
|
||||
{
|
||||
if (infra)
|
||||
{
|
||||
convert_mov_file(LF_MOVCE, codes);
|
||||
convert_mov_file(LF_MOVAM, codes);
|
||||
convert_mov_file(LF_AMMMV, codes);
|
||||
}
|
||||
else
|
||||
{
|
||||
zap_file(LF_MOVCE);
|
||||
zap_file(LF_MOVAM);
|
||||
zap_file(LF_AMMMV);
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Main
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
bool TEuro01_app::create()
|
||||
{
|
||||
TFilename lit, eur;
|
||||
if (!app().get_aree_dati(lit, eur))
|
||||
return error_box("Non esiste lo studio in Euro di destinazione");
|
||||
return TEuro_app::create();
|
||||
}
|
||||
|
||||
void TEuro01_app::main_loop()
|
||||
{
|
||||
long ditta = 0L;
|
||||
if (goto_lire())
|
||||
{
|
||||
TEuro03_mask m;
|
||||
if (m.run() == K_ENTER)
|
||||
ditta = m.get_long(F10_DITTA);
|
||||
}
|
||||
if (ditta > 0L)
|
||||
convert_firm(ditta);
|
||||
}
|
||||
|
||||
int ceeur01(int argc, char* argv[])
|
||||
{
|
||||
TEuro01_app ma;
|
||||
ma.run(argc, argv, "Conversione Cespiti Euro");
|
||||
|
||||
return 0;
|
||||
}
|
||||
4
ce/ceeur01.h
Executable file
4
ce/ceeur01.h
Executable file
@ -0,0 +1,4 @@
|
||||
#define F01_DATI 101
|
||||
#define F01_DATIE 102
|
||||
|
||||
|
||||
218
ce/ceeur02.cpp
Executable file
218
ce/ceeur02.cpp
Executable file
@ -0,0 +1,218 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <progind.h>
|
||||
#include <relation.h>
|
||||
#include <viswin.h>
|
||||
|
||||
#include "ceeur.h"
|
||||
#include "ceeur20.h"
|
||||
|
||||
#include "ammce.h"
|
||||
#include "cespi.h"
|
||||
#include "salce.h"
|
||||
|
||||
class TEuro02_app : public TEuro_app
|
||||
{
|
||||
protected:
|
||||
virtual void main_loop();
|
||||
|
||||
public:
|
||||
real valore_ammortizzabile(const TRelation& rel, int tipo_sit) const;
|
||||
real fondo(const TRelation& rel, int tipo_sit) const;
|
||||
real confronta_valori(const real& val_lit, const real& val_eur) const;
|
||||
void print_arr(int tipo_sit) const;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Maschera di selezione
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TEuro02_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TEuro02_mask() : TAutomask("ceeur20") { }
|
||||
};
|
||||
|
||||
bool TEuro02_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_DITTA:
|
||||
if (e == fe_close)
|
||||
{
|
||||
const long ditta = atol(o.get());
|
||||
main_app().set_firm(ditta);
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Applicazione principale
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
real TEuro02_app::confronta_valori(const real& val_lit, const real& val_eur) const
|
||||
{
|
||||
real expected_val_eur = val_lit / EURO; expected_val_eur.round(2);
|
||||
real error = expected_val_eur - val_eur;
|
||||
return error;
|
||||
}
|
||||
|
||||
real TEuro02_app::valore_ammortizzabile(const TRelation& rel, int tipo_sit) const
|
||||
{
|
||||
const TRectype& salpro = rel.curr();
|
||||
real val = salpro.get_real(SALCE_CSTO) - salpro.get_real(SALCE_PLUSREIN) +
|
||||
salpro.get_real(SALCE_RIV75) + salpro.get_real(SALCE_RIV83);
|
||||
|
||||
if (tipo_sit == 1)
|
||||
{
|
||||
val -= salpro.get_real(SALCE_VNONAMM);
|
||||
val += salpro.get_real(SALCE_RIVGF);
|
||||
}
|
||||
if (tipo_sit == 2)
|
||||
{
|
||||
val += salpro.get_real(SALCE_RIVGC);
|
||||
}
|
||||
|
||||
const real riv90 = salpro.get(SALCE_RIV90);
|
||||
const real riv91 = salpro.get(SALCE_RIV91);
|
||||
if (riv90 != ZERO || riv91 != ZERO)
|
||||
{
|
||||
const int annipost90 = salpro.get_int(SALCE_ANNIPOST90);
|
||||
if (riv91 != ZERO || annipost90 >= 3)
|
||||
val += riv90;
|
||||
}
|
||||
val += riv91;
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
real TEuro02_app::fondo(const TRelation& rel, int tipo_sit) const
|
||||
{
|
||||
const TString16 idcesp = rel.curr().get(SALCE_IDCESPITE);
|
||||
const TRectype& ammpro = rel.curr(LF_AMMCE);
|
||||
|
||||
real fondo; // Fondo ammortamento
|
||||
if (ammpro.get(AMMCE_IDCESPITE) == idcesp)
|
||||
{
|
||||
if (ammpro.get_int(AMMCE_TPAMM) == tipo_sit)
|
||||
{
|
||||
fondo += ammpro.get_real(AMMCE_QNORP);
|
||||
fondo += ammpro.get_real(AMMCE_QANTP);
|
||||
fondo += ammpro.get_real(AMMCE_QACCP);
|
||||
fondo += ammpro.get_real(AMMCE_QPERSEP);
|
||||
fondo += ammpro.get_real(AMMCE_QPPRIVATEP);
|
||||
fondo += ammpro.get_real(AMMCE_FPRIVATOP);
|
||||
|
||||
fondo += ammpro.get_real(AMMCE_QNOR);
|
||||
fondo += ammpro.get_real(AMMCE_QANT);
|
||||
fondo += ammpro.get_real(AMMCE_QACC);
|
||||
fondo += ammpro.get_real(AMMCE_QPERSE);
|
||||
fondo += ammpro.get_real(AMMCE_QPPRIVATE);
|
||||
fondo += ammpro.get_real(AMMCE_FPRIVATO);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fondo = ZERO;
|
||||
}
|
||||
return fondo;
|
||||
}
|
||||
|
||||
void TEuro02_app::print_arr(int tipo_sit) const
|
||||
{
|
||||
TViswin vw(NULL, "Controllo arrotondamenti", FALSE, TRUE, FALSE, 0, 0, 0, 0, FALSE);
|
||||
vw.maximize();
|
||||
vw.open_modal();
|
||||
|
||||
TString expr;
|
||||
expr << "CODES==CODES|IDCESPITE==IDCESPITE|TPSALDO==2|TPAMM==" << tipo_sit;
|
||||
|
||||
TRelation rel_lit(LF_SALCE);
|
||||
rel_lit.add(LF_AMMCE, expr);
|
||||
|
||||
TEuroisamfile* salce_eur = new TEuroisamfile(LF_SALCE, TRUE);
|
||||
TEuroisamfile* ammce_eur = new TEuroisamfile(LF_AMMCE, TRUE);
|
||||
|
||||
TRelation rel_eur(salce_eur);
|
||||
rel_eur.add(LF_AMMCE, expr);
|
||||
rel_eur.replacef(ammce_eur, LF_AMMCE, expr);
|
||||
rel_eur.add(LF_CESPI, "IDCESPITE==IDCESPITE");
|
||||
|
||||
TCursor cur_eur(&rel_eur, "(CODES==2001)&&(TPSALDO==2)");
|
||||
const long items = cur_eur.items();
|
||||
cur_eur.freeze();
|
||||
|
||||
const TRectype& salce = cur_eur.curr();
|
||||
const TRectype& cespi = cur_eur.curr(LF_CESPI);
|
||||
|
||||
for (cur_eur = 0L; cur_eur.pos() < items; ++cur_eur)
|
||||
{
|
||||
rel_lit.curr() = cur_eur.curr();
|
||||
if (rel_lit.read() == NOERR)
|
||||
{
|
||||
const TString16 idcespite = salce.get(SALCE_IDCESPITE);
|
||||
|
||||
const real val_amm_lit = valore_ammortizzabile(rel_lit, tipo_sit);
|
||||
const real val_amm_eur = valore_ammortizzabile(rel_eur, tipo_sit);
|
||||
|
||||
const real fondo_lit = fondo(rel_lit, tipo_sit);
|
||||
const real fondo_eur = fondo(rel_eur, tipo_sit);
|
||||
|
||||
const real residuo_lit = val_amm_lit - fondo_lit;
|
||||
const real residuo_eur = val_amm_eur - fondo_eur;
|
||||
|
||||
const real err = confronta_valori(residuo_lit, residuo_eur);
|
||||
if (err <= -0.01 || err >= 0.01)
|
||||
{
|
||||
TString str;
|
||||
str << "Cespite " << idcespite << " - " << cespi.get(CESPI_DESC);
|
||||
str << " - Situazione ";
|
||||
switch (tipo_sit)
|
||||
{
|
||||
case 2: str << "Civilistica"; break;
|
||||
case 3: str << "Gestionale"; break;
|
||||
default: str << "Fiscale"; break;
|
||||
}
|
||||
vw.add_line(str); str.cut(0);
|
||||
|
||||
str << "Residuo in Lire " << residuo_lit.string(".");
|
||||
str << " - Residuo in Euro " << residuo_eur.string(".2");
|
||||
vw.add_line(str); str.cut(0);
|
||||
|
||||
str << "Errore di arrotondamento in Euro " << err.string(".2");
|
||||
vw.add_line(str); str.cut(0);
|
||||
|
||||
vw.add_line(str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vw.close_print();
|
||||
vw.run();
|
||||
vw.close_modal();
|
||||
}
|
||||
|
||||
void TEuro02_app::main_loop()
|
||||
{
|
||||
goto_lire();
|
||||
TEuro02_mask m;
|
||||
while (m.run() == K_ENTER)
|
||||
{
|
||||
const int tipo_sit = m.get_int(F_TIPO);
|
||||
print_arr(tipo_sit);
|
||||
}
|
||||
}
|
||||
|
||||
int ceeur02(int argc, char* argv[])
|
||||
{
|
||||
TEuro02_app aa;
|
||||
aa.run(argc, argv, "Controllo arrotondamenti");
|
||||
|
||||
return 0;
|
||||
}
|
||||
12
ce/ceeur10.h
Executable file
12
ce/ceeur10.h
Executable file
@ -0,0 +1,12 @@
|
||||
#define F10_DITTA 201
|
||||
#define F10_RAGSOC 202
|
||||
#define F10_DITTE 203
|
||||
|
||||
#define S10_DITTA 101
|
||||
#define S10_RAGSOC 102
|
||||
#define S10_ESISTE 103
|
||||
#define S10_ADOZIONE 104
|
||||
#define S10_CESPITI 105
|
||||
|
||||
|
||||
|
||||
91
ce/ceeur10.uml
Executable file
91
ce/ceeur10.uml
Executable file
@ -0,0 +1,91 @@
|
||||
#include "ceeur10.h"
|
||||
|
||||
TOOLBAR "" 0 -3 0 3
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -11 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -11 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Selezione Ditte" 0 0 80 018
|
||||
|
||||
NUMBER F10_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "Ditta da convertire "
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Specificare una ditta tra quelle elencate di seguito"
|
||||
END
|
||||
|
||||
STRING F10_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 28 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
SPREADSHEET F10_DITTE
|
||||
BEGIN
|
||||
PROMPT 0 2 ""
|
||||
ITEM "Ditta"
|
||||
ITEM "Ragione Sociale@50"
|
||||
ITEM "Esiste in Euro"
|
||||
ITEM "Data adozione"
|
||||
ITEM "Cespiti convertiti"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Ditta" -1 -1 64 8
|
||||
|
||||
NUMBER S10_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRINGA S10_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 1 3 "Rag. Soc. "
|
||||
END
|
||||
|
||||
BOOLEAN S10_ESISTE
|
||||
BEGIN
|
||||
PROMPT 1 4 "Esiste in Euro"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN S10_CESPITI
|
||||
BEGIN
|
||||
PROMPT 31 4 "Cespiti convertiti"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE S10_ADOZIONE
|
||||
BEGIN
|
||||
PROMPT 1 5 "Data adozione Euro "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
12
ce/ceeur11.h
Executable file
12
ce/ceeur11.h
Executable file
@ -0,0 +1,12 @@
|
||||
#define F11_DITTA 101
|
||||
#define F11_RAGSOC 102
|
||||
#define F11_DATI 103
|
||||
#define F11_DATIE 104
|
||||
#define F11_ADOZIONE 105
|
||||
|
||||
#define F11_COPY 200
|
||||
#define F11_SALDI 201
|
||||
#define F11_MOVIM 202
|
||||
|
||||
#define F11_LOG 301
|
||||
|
||||
88
ce/ceeur11.uml
Executable file
88
ce/ceeur11.uml
Executable file
@ -0,0 +1,88 @@
|
||||
#include "ceeur11.h"
|
||||
|
||||
TOOLBAR "" 0 -3 0 3
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -11 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -11 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Conversione ditta" 0 0 80 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bDitta da convertire"
|
||||
END
|
||||
|
||||
NUMBER F11_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Ditta "
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F11_DITTA
|
||||
OUTPUT F11_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F11_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 21 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F11_DATI 50
|
||||
BEGIN
|
||||
PROMPT 2 3 "Area dati in Lire "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F11_DATIE 50
|
||||
BEGIN
|
||||
PROMPT 2 4 "Area dati in Euro "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F11_ADOZIONE
|
||||
BEGIN
|
||||
PROMPT 2 5 "Data adozione Euro "
|
||||
USE ESC
|
||||
INPUT D0 F11_ADOZIONE
|
||||
DISPLAY "Codice Esercizio" CODTAB
|
||||
DISPLAY "Inizio Esercizio" D0
|
||||
DISPLAY "Fine Esercizio" D1
|
||||
OUTPUT F11_ADOZIONE D0
|
||||
CHECKTYPE SEARCH
|
||||
ADD NONE
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 1 10 "@bOperazioni"
|
||||
END
|
||||
|
||||
BOOLEAN F11_COPY
|
||||
BEGIN
|
||||
PROMPT 2 11 "Copia cespiti"
|
||||
END
|
||||
|
||||
BOOLEAN F11_SALDI
|
||||
BEGIN
|
||||
PROMPT 2 12 "Conversione saldi e categorie 2001"
|
||||
END
|
||||
|
||||
BOOLEAN F11_MOVIM
|
||||
BEGIN
|
||||
PROMPT 2 13 "Conversione movimenti 2001"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
3
ce/ceeur20.h
Executable file
3
ce/ceeur20.h
Executable file
@ -0,0 +1,3 @@
|
||||
#define F_DITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_TIPO 103
|
||||
53
ce/ceeur20.uml
Executable file
53
ce/ceeur20.uml
Executable file
@ -0,0 +1,53 @@
|
||||
#include "ceeur20.h"
|
||||
|
||||
TOOLBAR "" 0 -3 0 3
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -11 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -11 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Controllo arrotondamenti" -1 -1 0 -3
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bDitta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "F"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
DISPLAY "Codice" CODDITTA
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
OUTPUT F_DITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_TIPO 1 40
|
||||
BEGIN
|
||||
PROMPT 1 6 "@bSituazione da controllare"
|
||||
ITEM "1|Situazione Fiscale"
|
||||
ITEM "2|Situazione Civilistica"
|
||||
ITEM "3|Situazione Gestionale"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
11
ce/celib.cpp
11
ce/celib.cpp
@ -30,7 +30,9 @@ void TDitta_cespiti::load_default()
|
||||
_specie = str;
|
||||
|
||||
_data_primi_ricavi = dit.get("CADTR");
|
||||
_anno_tuir = dit.get_int("CATSU");
|
||||
_anno_tuir = dit.get_int("CATSU");
|
||||
if (_anno_tuir == 0 || _anno_tuir == 1) // Demenzialmente può essere memorizzato come 0 o 1
|
||||
_anno_tuir += 1988;
|
||||
|
||||
load_records();
|
||||
}
|
||||
@ -74,6 +76,9 @@ void TDitta_cespiti::set_attivita(int esercizio, int gruppo, const char* specie)
|
||||
|
||||
_data_primi_ricavi = dit.get("CADTR");
|
||||
_anno_tuir = dit.get_int("CATSU");
|
||||
if (_anno_tuir == 0 || _anno_tuir == 1) // Demenzialmente può essere memorizzato come 0 o 1
|
||||
_anno_tuir += 1988;
|
||||
|
||||
_ditta = prefix().get_codditta();
|
||||
|
||||
load_records();
|
||||
@ -257,8 +262,8 @@ bool TDitta_cespiti::on_category_event(TOperable_field& o, TField_event e, long
|
||||
|
||||
if (e == fe_button)
|
||||
{
|
||||
const char* fields = by_code ? "CODTAB[7,8]|S0" : "S0|CODTAB[7,8]";
|
||||
const char* header = by_code ? "Categoria|Descrizione@60" : "Descrizione@60|Categoria";
|
||||
const char* fields = by_code ? "CODTAB[7,8]|S0|I0" : "S0|CODTAB[7,8]|I0";
|
||||
const char* header = by_code ? "Categoria|Descrizione@60|Tipo beni" : "Descrizione@60|Categoria|Tipo beni";
|
||||
const char* sorter = by_code ? "CODTAB[7,8]" : "S0";
|
||||
|
||||
TRelation rel("%CAC");
|
||||
|
||||
@ -93,8 +93,8 @@ Module = 11
|
||||
Flags = ""
|
||||
Item_01 = "Anagrafica cespiti", "ce0 -4", "F"
|
||||
Item_02 = "Movimenti", "ce1 -4", "F"
|
||||
Item_03 = "Scelte ammortamento per categoria", "", ""
|
||||
Item_04 = "Scelta ammortamento per cespite", "", ""
|
||||
Item_03 = "Scelte ammortamento per categoria", "ce1 -3", "F"
|
||||
Item_04 = "Scelta ammortamento per cespite", "ce1 -2", "F"
|
||||
Item_05 = "Forzatura ammortamento su cespiti", "ce1 -0", "F"
|
||||
Item_06 = "Forzatura ammortamento su movimenti", "ce1 -1", "F"
|
||||
Item_07 = "Esecuzione calcolo ammortamenti", "ce2 -0", "F"
|
||||
|
||||
@ -172,14 +172,6 @@ BEGIN
|
||||
WARNING "Percentuale massimo ammortamento fiscale obbligatoria"
|
||||
END
|
||||
|
||||
NUMBER F_NUMANNI 3
|
||||
BEGIN
|
||||
PROMPT 2 14 "Numero anni per ammortamento costi "
|
||||
FIELD I3
|
||||
GROUP GR_IMMAT GR_PLURI
|
||||
WARNING "Numero di anni per ammortamento costi obbligatorio"
|
||||
END
|
||||
|
||||
LIST F_TIPOAMMO 1 12
|
||||
BEGIN
|
||||
PROMPT 2 15 "Tipo ammortamento beni immateriali "
|
||||
@ -191,6 +183,15 @@ BEGIN
|
||||
GROUP GR_IMMAT
|
||||
END
|
||||
|
||||
NUMBER F_NUMANNI 3
|
||||
BEGIN
|
||||
PROMPT 2 14 "Numero anni per ammortamento costi "
|
||||
FIELD I3
|
||||
GROUP GR_IMMAT GR_PLURI
|
||||
WARNING "Numero di anni per ammortamento costi obbligatorio"
|
||||
END
|
||||
|
||||
|
||||
//Campi per gruppo Costi pluriennali//
|
||||
LIST F_TIPOVINC 1 8
|
||||
BEGIN
|
||||
@ -235,3 +236,8 @@ BEGIN
|
||||
PROMPT 2 20 "Sospeso"
|
||||
FIELD B4
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
||||
@ -109,6 +109,7 @@ END
|
||||
BOOLEAN F_BOLLATO
|
||||
BEGIN
|
||||
PROMPT 2 6 "Bollato stampato"
|
||||
FLAGS "D"
|
||||
FIELD B1
|
||||
END
|
||||
|
||||
@ -122,5 +123,6 @@ END
|
||||
BOOLEAN F_CHIUSO
|
||||
BEGIN
|
||||
PROMPT 2 8 "Esercizio chiuso"
|
||||
FLAGS "D"
|
||||
FIELD B2
|
||||
END
|
||||
|
||||
@ -15,4 +15,7 @@
|
||||
#define F_TIPO_RIP 121
|
||||
#define F_AMM_VEND 122
|
||||
#define F_RAGGUAGLIO 123
|
||||
#define F_ESPOSIZIONE 124
|
||||
#define F_ESPOSIZIONE 124
|
||||
|
||||
#define F_DURATA 125
|
||||
#define F_COEFF_DURATA 126
|
||||
|
||||
@ -108,7 +108,7 @@ BEGIN
|
||||
FIELD B7
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 6
|
||||
GROUPBOX DLG_NULL 76 7
|
||||
BEGIN
|
||||
PROMPT 1 10 "@BParametri di calcolo"
|
||||
FLAGS "R"
|
||||
@ -148,3 +148,17 @@ BEGIN
|
||||
PROMPT 2 14 "Esposizione fondi per ammortamenti diretti su LIBRO CESPITI"
|
||||
FIELD B5
|
||||
END
|
||||
|
||||
NUMBER F_DURATA 3
|
||||
BEGIN
|
||||
PROMPT 2 15 "Giorni di durata esercizio "
|
||||
FLAGS "DG"
|
||||
FIELD I3
|
||||
END
|
||||
|
||||
NUMBER F_COEFF_DURATA 11 9
|
||||
BEGIN
|
||||
PROMPT 41 15 "Coefficiente di durata "
|
||||
FLAGS "DG"
|
||||
FIELD S5
|
||||
END
|
||||
@ -27,8 +27,8 @@ BEGIN
|
||||
DISPLAY "Giorno" CODTAB[7,8]
|
||||
DISPLAY "Mese" CODTAB[5,6]
|
||||
DISPLAY "Anno" CODTAB[1,4]
|
||||
DISPLAY "Limite autovetture@20 " R1
|
||||
DISPLAY "Limite autocaravan@20 " R2
|
||||
DISPLAY "Limite autovetture 1@20 " R1
|
||||
DISPLAY "Limite autovetture 2@20 " R2
|
||||
DISPLAY "Limite motocicli@20 " R3
|
||||
DISPLAY "Limite ciclomotori@20 " R4
|
||||
OUTPUT F_ANNO CODTAB[1,4]
|
||||
@ -60,13 +60,13 @@ END
|
||||
|
||||
CURRENCY F_AUTO1 15
|
||||
BEGIN
|
||||
PROMPT 2 6 "Limite autovetture "
|
||||
PROMPT 2 6 "Limite autovetture 1 "
|
||||
FIELD R0
|
||||
END
|
||||
|
||||
CURRENCY F_AUTO2 15
|
||||
BEGIN
|
||||
PROMPT 2 7 "Limite autocaravan "
|
||||
PROMPT 2 7 "Limite autovetture 2 "
|
||||
FIELD R1
|
||||
END
|
||||
|
||||
|
||||
@ -25,4 +25,4 @@ CSCEN|8|1|0|Scelta ammortamento 100%
|
||||
DATE|5|8|0|Data operazione
|
||||
TPOP|2|1|0|Tipo operazione (<M>odifica, <C>reazione, <A>nnullo)
|
||||
1
|
||||
CODES+CODCGRA+CODCGR+CODCAT|
|
||||
CODES+CODCGRA+CODSPA+CODCAT|
|
||||
|
||||
@ -498,7 +498,7 @@ bool TCaus_app::ss_notify(TSheet_field& s, int r, KEY k)
|
||||
}
|
||||
break;
|
||||
case K_ENTER:
|
||||
if (s.row(r).get_int(3) == 0) // riga azzerata
|
||||
if (s.row(r).get_int(3) == 0 && s.row(r).get_char(1) <= ' ') // riga azzerata
|
||||
app().clear(r); // pulisco la riga anche nell'array
|
||||
break;
|
||||
default:
|
||||
@ -519,8 +519,8 @@ bool TCaus_app::sezione_hndl(TMask_field& f, KEY k)
|
||||
if (sez != 'A' && sez != 'D')
|
||||
return f.error_box("E' necessario specificare la sezione D/A");
|
||||
}
|
||||
else
|
||||
f.reset();
|
||||
// else
|
||||
// f.reset();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@ -768,7 +768,8 @@ int TCaus_app::re_write(const TMask& m, bool re)
|
||||
{
|
||||
TToken_string &riga = ss().row(i);
|
||||
const int g = riga.get_int(3);
|
||||
if (g > 0)
|
||||
const char sezione = riga.get_char(1);
|
||||
if (g > 0 || sezione > ' ')
|
||||
{
|
||||
TRectype & r = _rcaus_rec->row(i+1, TRUE);
|
||||
const char sezione = riga.get_char(1);
|
||||
|
||||
@ -31,6 +31,7 @@
|
||||
#define F_DES_DOC 128
|
||||
#define F_DES_REG 129
|
||||
#define F_MOVIND 130
|
||||
#define F_SOLAIVA 131
|
||||
|
||||
#define SS_SEZIONE 102
|
||||
#define SS_TIPOCF 103
|
||||
|
||||
@ -1720,7 +1720,17 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action)
|
||||
intrini.tempdir();
|
||||
intrini.add("ActIntra.ini");
|
||||
|
||||
TConfig intro(intrini, "Transaction");
|
||||
TConfig intro(intrini, "Transaction");
|
||||
|
||||
if (action == "Modify")
|
||||
{
|
||||
TString16 key;
|
||||
key << m.get(F_NUMREG);
|
||||
const TRectype & intra = cache().get(LF_INTRA, key);
|
||||
if (intra.empty())
|
||||
action = "Insert";
|
||||
}
|
||||
|
||||
intro.set("Action", action);
|
||||
|
||||
TString str; // Stringa jolly di lavoro
|
||||
@ -1739,10 +1749,14 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action)
|
||||
intro.set("TIPOMOV", "A");
|
||||
intro.set("TIPOCF", "F");
|
||||
intro.set("CODCF", m.get(F_FORNITORE));
|
||||
}
|
||||
intro.set("TOTDOC", m.get(F_CORRLIRE));
|
||||
}
|
||||
intro.set("TOTDOC", m.get(F_TOTALE));
|
||||
intro.set("CODVAL", m.get(F_VALUTAINTRA));
|
||||
intro.set("CAMBIO", m.get(F_CAMBIOINTRA));
|
||||
intro.set("DATAREG", m.get(F_DATAREG));
|
||||
intro.set("NUMDOC", m.get(F_NUMDOC));
|
||||
|
||||
|
||||
|
||||
intro.set_paragraph(""); // Flush
|
||||
|
||||
|
||||
@ -1391,7 +1391,8 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
||||
if (oldpos >= 0) // Se il conto esisteva anche prima ...
|
||||
{ // sottrai il vecchio imponibile
|
||||
TImporto i(a.get_cgs_imp(oldpos));
|
||||
i -= oldimp;
|
||||
i -= oldimp;
|
||||
i.normalize();
|
||||
a.set_cgs_imp(oldpos, i);
|
||||
if (i.is_zero()) delimp = oldpos;
|
||||
}
|
||||
@ -1399,6 +1400,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
||||
{ // sottrai la vecchia imposta
|
||||
TImporto i(a.get_cgs_imp(oldposiva));
|
||||
i -= oldiva;
|
||||
i.normalize();
|
||||
a.set_cgs_imp(oldposiva, i);
|
||||
if (i.is_zero()) deliva = oldposiva;
|
||||
}
|
||||
@ -1428,8 +1430,9 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
||||
imposta = 0.0;
|
||||
}
|
||||
|
||||
const TImporto newimp = a.real2imp(imponibile, 'I');
|
||||
TImporto newimp = a.real2imp(imponibile, 'I');
|
||||
|
||||
newimp.normalize();
|
||||
// Aggiorna conto sulla riga contabile
|
||||
if (newpos < 0)
|
||||
{
|
||||
@ -1465,7 +1468,9 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
||||
if (deliva >= 0 && newposiva != deliva) // E' cambiato il tipo d'imposta
|
||||
a.reset_cgs_row(deliva); // Azzera il vecchio tipo se necessario
|
||||
|
||||
const TImporto newiva = a.real2imp(imposta, 'I');
|
||||
TImporto newiva = a.real2imp(imposta, 'I');
|
||||
|
||||
newiva.normalize();
|
||||
if (newposiva < 0)
|
||||
{
|
||||
if (!imposta.is_zero()) // Se c'e' imposta ...
|
||||
@ -1659,7 +1664,7 @@ bool TPrimanota_application::sheet_clifo_handler(TMask_field& f, KEY k)
|
||||
m.set(gid-1, c.tipo() == 'C' ? "C" : "F");
|
||||
m.set(gid, c.gruppo());
|
||||
m.set(cid, c.conto());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2214,6 +2219,12 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
||||
cp.on_hit(); // lo ricopia eventualmente a pag.3
|
||||
}
|
||||
}
|
||||
if (cf == 'F')
|
||||
{
|
||||
const TString16 valintra(clifo.get("VALINTRA"));
|
||||
if (!valintra.empty())
|
||||
m.set(F_VALUTAINTRA, valintra, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
if (f.focusdirty() && a.is_saldaconto())
|
||||
|
||||
63
in/bastird.uml
Executable file
63
in/bastird.uml
Executable file
@ -0,0 +1,63 @@
|
||||
#include "../ba/ba3200.h"
|
||||
|
||||
PAGE "Stampa Dati Riassuntivi" -1 -1 60 8
|
||||
|
||||
NUMBER F_INIZIO1 4
|
||||
BEGIN
|
||||
PROMPT 4 1 "Da anno "
|
||||
USE IRD
|
||||
INPUT CODTAB[1,4] F_INIZIO1
|
||||
INPUT CODTAB[5,6] F_INIZIO2
|
||||
DISPLAY "Anno@15" CODTAB[1,4]
|
||||
DISPLAY "Mese@10" CODTAB[5,6]
|
||||
DISPLAY "N.dischetto@10" I0
|
||||
DISPLAY "Pagine@10" I1
|
||||
DISPLAY "Righe@10" I2
|
||||
DISPLAY "Ammontare compl.@18" R0
|
||||
OUTPUT F_INIZIO1 CODTAB[1,4]
|
||||
OUTPUT F_INIZIO2 CODTAB[5,6]
|
||||
FIELD CODTAB[1,4]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
LIST F_INIZIO2 20
|
||||
BEGIN
|
||||
PROMPT 21 1 "Da mese "
|
||||
FIELD CODTAB[5,6]
|
||||
FLAGS "MZ"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_FINE1 4
|
||||
BEGIN
|
||||
PROMPT 4 3 "A anno "
|
||||
COPY USE F_INIZIO1
|
||||
INPUT CODTAB[1,4] F_FINE1
|
||||
INPUT CODTAB[5,6] F_FINE2
|
||||
COPY DISPLAY F_INIZIO1
|
||||
OUTPUT F_FINE1 CODTAB[1,4]
|
||||
OUTPUT F_FINE2 CODTAB[5,6]
|
||||
FIELD CODTAB[1,4]
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
LIST F_FINE2 20
|
||||
BEGIN
|
||||
PROMPT 21 3 "A mese "
|
||||
FIELD CODTAB[5,6]
|
||||
FLAGS "MZ"
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
6
in/batbird.h
Executable file
6
in/batbird.h
Executable file
@ -0,0 +1,6 @@
|
||||
#define F_ANNO 101
|
||||
#define F_MESE 102
|
||||
#define F_NDKT 103
|
||||
#define F_PAGINE 104
|
||||
#define F_RIGHE 105
|
||||
#define F_AMM_COMP 106
|
||||
17
in/batbird.rpt
Executable file
17
in/batbird.rpt
Executable file
@ -0,0 +1,17 @@
|
||||
[Headers]
|
||||
80
|
||||
Tabella Dati Riassuntivi
|
||||
1|@3g%s|Anno
|
||||
1|@10g%s|Mese
|
||||
1|@15g%s|N.ro Disc.
|
||||
1|@28g%s|Pagine
|
||||
1|@38g%s|Righe
|
||||
1|@45g%s|Ammontare complessivo
|
||||
|
||||
[Rows]
|
||||
1|CODTAB[1,4]|@3g@4,rs
|
||||
1|CODTAB[5,]|@10@2,rs
|
||||
1|I0|@21g@4,rn
|
||||
1|I1|@27g@7,rn
|
||||
1|I2|@36g@7,rn
|
||||
1|R0|@48g@18,rpn|###############,@@
|
||||
69
in/batbird.uml
Executable file
69
in/batbird.uml
Executable file
@ -0,0 +1,69 @@
|
||||
#include "batbird.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 19 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Dati riassuntivi" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bDati Riassuntivi"
|
||||
END
|
||||
|
||||
LIST F_MESE 20
|
||||
BEGIN
|
||||
PROMPT 2 2 "Mese "
|
||||
FLAGS "MZ"
|
||||
FIELD CODTAB[5,6]
|
||||
KEY 1
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 46 2 "Anno "
|
||||
USE IRD
|
||||
INPUT CODTAB[1,4] F_ANNO
|
||||
INPUT CODTAB[5,6] F_MESE
|
||||
DISPLAY "Anno@15" CODTAB[1,4]
|
||||
DISPLAY "Mese@10" CODTAB[5,6]
|
||||
DISPLAY "N.dischetto@10" I0
|
||||
DISPLAY "Pagine@10" I1
|
||||
DISPLAY "Righe@10" I2
|
||||
DISPLAY "Ammontare compl.@18" R0
|
||||
OUTPUT F_ANNO CODTAB[1,4]
|
||||
OUTPUT F_MESE CODTAB[5,6]
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB[1,4]
|
||||
KEY 1
|
||||
END
|
||||
|
||||
NUMBER F_NDKT 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "Numero Dischetto "
|
||||
FIELD I0
|
||||
END
|
||||
|
||||
NUMBER F_PAGINE 7
|
||||
BEGIN
|
||||
PROMPT 2 6 "Pagine "
|
||||
FIELD I1
|
||||
END
|
||||
|
||||
NUMBER F_RIGHE 7
|
||||
BEGIN
|
||||
PROMPT 2 8 "Righe "
|
||||
FIELD I2
|
||||
END
|
||||
|
||||
CURRENCY F_AMM_COMP 18
|
||||
BEGIN
|
||||
PROMPT 2 10 "Ammontare Compl. "
|
||||
FIELD R0
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
@ -1,3 +1,3 @@
|
||||
135
|
||||
0
|
||||
$rieprett|0|0|156|0|Riepiloghi e rettifiche INTRA|||
|
||||
$rieprett|9|10|157|0|Riepiloghi e rettifiche INTRA|||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
135
|
||||
23
|
||||
24
|
||||
TIPO|7|1|0|Acquisti o Cessioni [A,C]
|
||||
ANNO|2|4|0|Anno
|
||||
PERIODO|9|2|0|Periodo (Mese[1,12] / Trimestre[1,4] / Anno [1.,1])
|
||||
@ -7,7 +7,7 @@ NUMRIG|3|7|0|Numero riga
|
||||
STATO|1|2|0|Codice ISO dello Stato CEE
|
||||
PIVA|1|13|0|Partita IVA Cliente/Fornitore
|
||||
NATURA|7|1|0|Natura della transazione
|
||||
NOMENCL|3|8|0|Nomenclatura combinata
|
||||
NOMENCL|1|8|0|Nomenclatura combinata
|
||||
CONSEGNA|1|3|0|Condizioni di consegna
|
||||
TRASPORTO|2|1|0|Tipo di trasporto [1,9]
|
||||
PAESE|1|2|0|Paese di destinazione/provenienza
|
||||
@ -23,5 +23,6 @@ ANNORETT|6|4|0|Anno rettificato
|
||||
PERETT|9|2|0|Periodo rettificato
|
||||
NUMRETT|3|7|0|Riga rettificata
|
||||
SEGNORETT|1|1|0|Segno della rettifica
|
||||
FREQUENZA|1|1|0|Frequenza (<M>ensile, <T>rimestrale, <A>nnuale)
|
||||
1
|
||||
TIPO+ANNO+PERIODO+NUMRIG|
|
||||
|
||||
@ -50,9 +50,19 @@ bool TStampaIntra_form::validate(TForm_item& fld, TToken_string& val)
|
||||
const int ndec = TCurrency::get_firm_dec() > 0 ? 0 : -3;
|
||||
|
||||
num.round(ndec);
|
||||
fld.set(val);
|
||||
fld.set(num.string());
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
if (code== "_ROUND")
|
||||
{
|
||||
real num(fld.get());
|
||||
const int ndec = val.get_int();
|
||||
|
||||
num.round(ndec);
|
||||
fld.set(num.string());
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return TForm::validate(fld, val);
|
||||
}
|
||||
@ -291,6 +301,7 @@ class TStampaIntra_mask : public TIntra_mask
|
||||
protected:
|
||||
virtual short type_field() const { return R_TIPO; }
|
||||
virtual short period_field() const { return R_PERIODO_M; }
|
||||
virtual int anno() const { return get_int(R_ANNO); }
|
||||
|
||||
public:
|
||||
void print();
|
||||
@ -304,7 +315,8 @@ TStampaIntra_mask::TStampaIntra_mask()
|
||||
|
||||
void TStampaIntra_mask::print()
|
||||
{
|
||||
TStampaIntra_form form(tipo() == 'A' ? "in0100a" : "in0100b", tipo(), frequenza(), periodo(), get_int(R_ANNO));
|
||||
const int anno_s = anno();
|
||||
TStampaIntra_form form(tipo() == 'A' ? "in0100a" : "in0100b", tipo(), frequenza(anno_s), periodo(), anno_s);
|
||||
form.print();
|
||||
}
|
||||
|
||||
@ -320,6 +332,7 @@ protected:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual void main_loop();
|
||||
|
||||
public:
|
||||
TStampa_intra() {};
|
||||
virtual ~TStampa_intra() {};
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
#include <progind.h>
|
||||
#include <recarray.h>
|
||||
#include <relation.h>
|
||||
#include <tabutil.h>
|
||||
|
||||
#include "in0.h"
|
||||
#include "in0200a.h"
|
||||
@ -311,6 +312,7 @@ protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
virtual short type_field() const { return F_TIPO; }
|
||||
virtual short period_field() const { return F_PERIODO_M; }
|
||||
virtual int anno() const { return get_int(F_ANNO); }
|
||||
|
||||
long calcola_totale(TCursor& cur, real& tot) const;
|
||||
bool write_record(ofstream& out, const TRecord_intra& rec, TIntra_context& ic);
|
||||
@ -327,7 +329,7 @@ bool TDischetto_mask::on_field_event(TOperable_field& o, TField_event e, long jo
|
||||
{
|
||||
case F_RIEPILOGHI:
|
||||
if (e == fe_button)
|
||||
::genera_riepiloghi(tipo(), get_int(F_ANNO), periodo());
|
||||
::genera_riepiloghi(tipo(), anno(), periodo());
|
||||
break;
|
||||
default:break;
|
||||
}
|
||||
@ -386,13 +388,21 @@ bool TDischetto_mask::write_record(ofstream& out, const TRecord_intra& rec, TInt
|
||||
|
||||
void TDischetto_mask::genera_dischetto()
|
||||
{
|
||||
TTable ird("IRD");
|
||||
TIntra_context ic;
|
||||
ic._tipo = tipo();
|
||||
ic._freq = frequenza();
|
||||
ic._anno = get_int(F_ANNO);
|
||||
ic._anno = anno();
|
||||
ic._freq = frequenza(ic._anno);
|
||||
ic._periodo = periodo();
|
||||
ic._progr = get_long(F_NUMERO);
|
||||
|
||||
TString16 codtab; codtab.format("%04d%02d", ic._anno, ic._periodo);
|
||||
ird.put("CODTAB", codtab);
|
||||
const bool exist = ird.read() == NOERR;
|
||||
|
||||
if (exist && !yesno_box("il periodo indicato e' gia' stato generato,\n devo proseguire"))
|
||||
return;
|
||||
|
||||
TRelation rel(LF_RIEPRETT);
|
||||
TRectype filter(LF_RIEPRETT);
|
||||
filter.put("TIPO", ic._tipo);
|
||||
@ -452,6 +462,18 @@ void TDischetto_mask::genera_dischetto()
|
||||
if (!write_record(out, rec, ic))
|
||||
return;
|
||||
}
|
||||
|
||||
codtab.format("%04d%02d", ic._anno, ic._periodo);
|
||||
|
||||
ird.put("CODTAB", codtab);
|
||||
ird.put("I0", ic._progr);
|
||||
// ird.put("I1", ??? );
|
||||
ird.put("I2", total);
|
||||
ird.put("R0", ic._totale_riep + ic._totale_rett);
|
||||
if (exist)
|
||||
ird.rewrite();
|
||||
else
|
||||
ird.write();
|
||||
}
|
||||
|
||||
TDischetto_mask::TDischetto_mask()
|
||||
|
||||
193
in/in0500.cpp
193
in/in0500.cpp
@ -7,6 +7,7 @@
|
||||
#include "in0.h"
|
||||
#include "in0500a.h"
|
||||
#include "inlib01.h"
|
||||
#include "../cg/cg2103.h"
|
||||
|
||||
#include <mov.h>
|
||||
|
||||
@ -18,6 +19,7 @@ class TImmissione_mask : public TIntra_mask
|
||||
{
|
||||
protected:
|
||||
virtual short type_field() const { return F_TIPO_MOV; }
|
||||
virtual int anno() const { return get_date(F_DATA_REG).year(); }
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
@ -35,33 +37,59 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
switch (id)
|
||||
{
|
||||
case F_NUM_REG:
|
||||
if (e == fe_modify)
|
||||
if (e == fe_modify || e == fe_init)
|
||||
{
|
||||
if (main_app().has_module(CGAUT))
|
||||
{
|
||||
const TString& numreg = o.get();
|
||||
const TRectype& mov = cache().get(LF_MOV, numreg);
|
||||
set(F_NUM_DOC, mov.get(MOV_NUMDOC));
|
||||
set(F_DATA_DOC, mov.get(MOV_DATADOC));
|
||||
|
||||
if (numreg.not_empty())
|
||||
{
|
||||
const TRectype& mov = cache().get(LF_MOV, numreg);
|
||||
if (mov.empty())
|
||||
return error_box("Il movimento contabile %s non esiste", (const char *) numreg);
|
||||
else
|
||||
{
|
||||
const TString16 caus(mov.get(MOV_CODCAUS));
|
||||
TCausale c(caus);
|
||||
|
||||
if (c.intra())
|
||||
{
|
||||
set(F_NUM_DOC, mov.get(MOV_NUMDOC));
|
||||
set(F_DATA_DOC, mov.get(MOV_DATADOC));
|
||||
}
|
||||
else
|
||||
return error_box("La causale del movimento contabile %s non e' intracomunitaria", (const char *) numreg);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_TIPO_MOV:
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
TMask& m = sfield(F_RIGHE).sheet_mask();
|
||||
TSheet_field& s = sfield(F_RIGHE);
|
||||
TMask& m = s.sheet_mask();
|
||||
const bool acq = tipo() == 'A';
|
||||
m.show(-GR_ACQUISTI, acq); // Mostra i gruppi di campi
|
||||
m.show(-GR_CESSIONI, !acq); // consoni al tipo movimento
|
||||
s.enable_column(F_PAESE_ORIG, acq);
|
||||
s.set_column_header(F_PAESE, acq ? "Paese\nProv." : "Paese\nDest.") ;
|
||||
s.set_column_header(F_PROV, acq ? "Provincia\nDest." : "Provincia\nOrig.") ;
|
||||
const CheckType chk1 = acq ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||
field(F_VALUTA).check_type(chk1);
|
||||
|
||||
TString key ; key << main_app().get_firm();
|
||||
const bool req = frequenza() == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||
const bool req = frequenza(anno()) == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||
const CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||
|
||||
m.field(F_VALORE_STAT).check_type(chk);
|
||||
m.field(F_CONSEGNA).check_type(chk);
|
||||
m.field(F_TRASPORTO).check_type(chk);
|
||||
}
|
||||
|
||||
s.force_update();
|
||||
}
|
||||
break;
|
||||
case F_CLIFO:
|
||||
if (e == fe_modify)
|
||||
@ -72,7 +100,7 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
if (codval.empty())
|
||||
codval = curr.get("CODVAL");
|
||||
|
||||
set(F_VALUTA, codval);
|
||||
set(F_VALUTA, codval, TRUE);
|
||||
|
||||
}
|
||||
break;
|
||||
@ -80,18 +108,32 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TEdit_field& cambio = efield(F_CAMBIO);
|
||||
if (cambio.empty())
|
||||
|
||||
if (o.empty())
|
||||
cambio.reset();
|
||||
else
|
||||
{
|
||||
const TRectype& curr = efield(F_VALUTA).browse()->cursor()->curr();
|
||||
const TRectype& curr = cache().get("%VAL", o.get());
|
||||
const TString& s = curr.get("S4");
|
||||
if (s.not_empty())
|
||||
cambio.set(s);
|
||||
else
|
||||
{
|
||||
const TString& r = curr.get("R0");
|
||||
cambio.set(r);
|
||||
}
|
||||
|
||||
cambio.set(s);
|
||||
}
|
||||
TSheet_field& s = sfield(F_RIGHE);
|
||||
const bool enable_val = is_true_value(get(F_VALUTA));
|
||||
|
||||
const int rows = s.items();
|
||||
|
||||
for (int i = 0; i < rows; i++)
|
||||
{
|
||||
const int col = s.cid2index(F_AMM_VALUTA);
|
||||
s.enable_cell(i, col, enable_val);
|
||||
|
||||
TToken_string & r = s.row(i);
|
||||
|
||||
if (!enable_val)
|
||||
r.add("", col);
|
||||
}
|
||||
s.force_update();
|
||||
}
|
||||
break;
|
||||
case F_TOT_DOC:
|
||||
@ -110,14 +152,21 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
case F_AMM_LIRE:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TMask& m = o.mask();
|
||||
|
||||
if (m.get_real(F_AMM_VALUTA).is_zero())
|
||||
{
|
||||
TMask& m = o.mask();
|
||||
TSheet_field& s = sfield(F_RIGHE);
|
||||
TCurrency curr(real(o.get()));
|
||||
curr.change_value(get(F_VALUTA), get_real(F_CAMBIO));
|
||||
m.set(F_AMM_VALUTA, curr, TRUE);
|
||||
}
|
||||
|
||||
const bool enable_val = is_true_value(get(F_VALUTA));
|
||||
m.enable(F_AMM_VALUTA, enable_val);
|
||||
if (!enable_val)
|
||||
m.reset(F_AMM_VALUTA);
|
||||
else
|
||||
if (m.get_real(F_AMM_VALUTA).is_zero())
|
||||
{
|
||||
curr.change_value(get(F_VALUTA), get_real(F_CAMBIO));
|
||||
m.set(F_AMM_VALUTA, curr, TRUE);
|
||||
}
|
||||
s.force_update();
|
||||
}
|
||||
break;
|
||||
case F_AMM_VALUTA:
|
||||
@ -135,8 +184,8 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
case F_RIGHE:
|
||||
return on_sheet_event((TSheet_field&)o, e, int(jolly));
|
||||
case R_RIEPILOGHI:
|
||||
if (e == fe_button)
|
||||
::genera_riepiloghi(tipo());
|
||||
if (e == fe_button)
|
||||
::genera_riepiloghi(tipo(), anno(), date2periodo(get_date(F_DATA_REG)));
|
||||
break;
|
||||
default:
|
||||
if (id < F_DITTA && jolly == 1)
|
||||
@ -148,20 +197,29 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
|
||||
bool TImmissione_mask::on_sheet_event(TSheet_field& s, TField_event e, int row)
|
||||
{
|
||||
if (e == se_notify_modify)
|
||||
if (e == se_notify_add)
|
||||
{
|
||||
real amm_lire;
|
||||
int rows = s.items();
|
||||
const bool enable_val = is_true_value(get(F_VALUTA));
|
||||
const int col = s.cid2index(F_AMM_VALUTA);
|
||||
|
||||
for (int i = 0; i < rows; i++)
|
||||
{
|
||||
TToken_string & r = s.row(i);
|
||||
const real val = r.get(s.cid2index(F_AMM_LIRE));
|
||||
|
||||
amm_lire += val;
|
||||
}
|
||||
s.mask().set(F_TOT_IMM, amm_lire);
|
||||
s.enable_cell(s.selected(), col, enable_val);
|
||||
s.force_update();
|
||||
}
|
||||
else
|
||||
if (e == se_notify_modify)
|
||||
{
|
||||
real amm_lire;
|
||||
int rows = s.items();
|
||||
|
||||
for (int i = 0; i < rows; i++)
|
||||
{
|
||||
TToken_string & r = s.row(i);
|
||||
const real val = r.get(s.cid2index(F_AMM_LIRE));
|
||||
|
||||
amm_lire += val;
|
||||
}
|
||||
s.mask().set(F_TOT_IMM, amm_lire);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -169,30 +227,42 @@ bool TImmissione_mask::on_sheet_field_event(TOperable_field& o, TField_event e,
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_NOMENCLATURA1:
|
||||
case F_NOMENCLATURA2:
|
||||
case F_NOMENCLATURA3:
|
||||
if (e == fe_modify)
|
||||
if (e == fe_close)
|
||||
{
|
||||
TMask& m = o.mask();
|
||||
if (!o.empty())
|
||||
{
|
||||
const TRectype& nom = ((TEdit_field&)o).browse()->cursor()->curr();
|
||||
if (m.get(F_UMS).empty())
|
||||
m.set(F_UMS, nom.get("S5"), TRUE);
|
||||
|
||||
bool req = frequenza() == 'M';
|
||||
if (req) // Solo la frequenza mensile puo' obbligare
|
||||
TString16 key; key << m.get(F_NOMENCLATURA1) << m.get(F_NOMENCLATURA2) << m.get(F_NOMENCLATURA3);
|
||||
|
||||
if (key.empty())
|
||||
return error_box("La nomenclatura combinata e' obbligatoria");
|
||||
}
|
||||
else
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TMask& m = o.mask();
|
||||
if (!o.empty())
|
||||
{
|
||||
const char obb = nom.get_char("S4");
|
||||
req = obb == 'E' || obb == tipo();
|
||||
TString16 key; key << m.get(F_NOMENCLATURA1) << m.get(F_NOMENCLATURA2) << m.get(F_NOMENCLATURA3);
|
||||
const TRectype& nom = cache().get("%NOC", key);
|
||||
|
||||
m.set(F_UMS, nom.get("S5"), TRUE);
|
||||
|
||||
bool req = frequenza(anno()) == 'M';
|
||||
if (req) // Solo la frequenza mensile puo' obbligare
|
||||
{
|
||||
const char obb = nom.get_char("S4");
|
||||
req = obb == 'E' || obb == tipo();
|
||||
}
|
||||
m.field(F_UMS).check_type(req ? CHECK_REQUIRED : CHECK_NORMAL);
|
||||
m.field(F_MASSA_UMS).check_type(req ? CHECK_REQUIRED : CHECK_NORMAL);
|
||||
}
|
||||
else
|
||||
{
|
||||
m.set(F_UMS, "", TRUE);
|
||||
}
|
||||
m.field(F_UMS).check_type(req ? CHECK_REQUIRED : CHECK_NORMAL);
|
||||
m.field(F_MASSA_UMS).check_type(req ? CHECK_REQUIRED : CHECK_NORMAL);
|
||||
}
|
||||
else
|
||||
{
|
||||
m.set(F_UMS, "", TRUE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -220,10 +290,23 @@ protected:
|
||||
virtual TMask* get_mask(int) { return _msk; }
|
||||
virtual bool changing_mask(int mode) { return FALSE; }
|
||||
virtual bool user_destroy();
|
||||
virtual bool protected_record(TRectype & rec);
|
||||
|
||||
public:
|
||||
};
|
||||
|
||||
bool TImmissione_intra::protected_record(TRectype & rec)
|
||||
{
|
||||
const char tipo = rec.get_char("TIPOMOV");
|
||||
const TDate d(rec.get("DATAREG"));
|
||||
const int periodo = _msk->date2periodo(d);
|
||||
|
||||
bool prot = is_riepilogo(tipo, d.year(), periodo) &&
|
||||
!yesno_box("Attenzione il movimento appartiene ad un riepilogo\nesistente, vuoi poterlo modificare ugualmente");
|
||||
_msk->enable(DLG_SAVEREC, !prot);
|
||||
return prot;
|
||||
}
|
||||
|
||||
bool TImmissione_intra::user_create()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_MOV,
|
||||
|
||||
@ -37,9 +37,10 @@
|
||||
#define F_VALORE_STAT 110
|
||||
#define F_CONSEGNA 111
|
||||
#define F_TRASPORTO 112
|
||||
#define F_PAESE_ORIG 113
|
||||
#define F_PAESE_DUMMY 213
|
||||
#define F_PROV 114
|
||||
#define F_PAESE 113
|
||||
#define F_PAESE_ORIG 114
|
||||
#define F_PAESE_DUMMY 214
|
||||
#define F_PROV 115
|
||||
|
||||
#define GR_CESSIONI 1
|
||||
#define GR_ACQUISTI 2
|
||||
|
||||
@ -38,7 +38,7 @@ NUMBER F_NUM_REG 5
|
||||
BEGIN
|
||||
PROMPT 1 3 "Numero registrazione "
|
||||
USE LF_INTRA
|
||||
JOIN LF_CLIFO INTO TIPOCF=TIPOCF CODCF=CODCF
|
||||
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
INPUT NUMREG F_NUM_REG
|
||||
DISPLAY "Numero" NUMREG
|
||||
DISPLAY "Data@10" DATAREG
|
||||
@ -46,6 +46,7 @@ BEGIN
|
||||
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||
OUTPUT F_NUM_REG NUMREG
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "G"
|
||||
KEY 1
|
||||
FIELD NUMREG
|
||||
END
|
||||
@ -167,7 +168,9 @@ BEGIN
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_VALUTA CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE EMPTY CLEAR,F_CAMBIO
|
||||
MESSAGE ENABLE,F_CAMBIO
|
||||
FIELD CODVAL
|
||||
END
|
||||
|
||||
@ -194,6 +197,7 @@ BEGIN
|
||||
ITEM "Condiz.\nCons.@6"
|
||||
ITEM "Modo\nTrasp.@5"
|
||||
ITEM "Paese\nDest.@6"
|
||||
ITEM "Paese\nOrig.@6"
|
||||
ITEM "Provincia\nOrig."
|
||||
FLAGS "A"
|
||||
USE LF_RINTRA KEY NUMRIG
|
||||
@ -232,7 +236,7 @@ BEGIN
|
||||
FIELD NATURA
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA1 4
|
||||
NUMBER F_NOMENCLATURA1 4
|
||||
BEGIN
|
||||
PROMPT 36 3 "Nomenclatura combinata "
|
||||
FLAGS "U"
|
||||
@ -241,32 +245,37 @@ BEGIN
|
||||
INPUT CODTAB[5,6] F_NOMENCLATURA2
|
||||
INPUT CODTAB[7,8] F_NOMENCLATURA3
|
||||
DISPLAY "Codice" CODTAB[1,4]
|
||||
DISPLAY "" CODTAB[5,6]
|
||||
DISPLAY "" CODTAB[7,8]
|
||||
DISPLAY "@3" CODTAB[5,6]
|
||||
DISPLAY "@3" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_NOMENCLATURA1 CODTAB[1,4]
|
||||
OUTPUT F_NOMENCLATURA2 CODTAB[5,6]
|
||||
OUTPUT F_NOMENCLATURA3 CODTAB[7,8]
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE DIRTY,F_NOMENCLATURA3
|
||||
VALIDATE REQIF_FUNC 1 F_NOMENCLATURA2
|
||||
FIELD NOMENCL[1,4]
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA2 2
|
||||
NUMBER F_NOMENCLATURA2 2
|
||||
BEGIN
|
||||
PROMPT 67 3 ""
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
MESSAGE DIRTY,F_NOMENCLATURA3
|
||||
VALIDATE REQIF_FUNC 1 F_NOMENCLATURA3
|
||||
FIELD NOMENCL[5,6]
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA3 2
|
||||
NUMBER F_NOMENCLATURA3 2
|
||||
BEGIN
|
||||
PROMPT 72 3 ""
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
FIELD NOMENCL[7,8]
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
NUMBER F_MASSA_KG 13 5
|
||||
@ -306,6 +315,7 @@ STRING F_CONSEGNA 3
|
||||
BEGIN
|
||||
PROMPT 43 5 "Condizioni consegna "
|
||||
USE %ICC
|
||||
FLAGS "U"
|
||||
INPUT CODTAB F_CONSEGNA
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
@ -330,16 +340,41 @@ BEGIN
|
||||
GROUP GR_ACQUISTI
|
||||
END
|
||||
|
||||
STRING F_PAESE_ORIG 2
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 7 "Paese provenienza "
|
||||
GROUP GR_ACQUISTI
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 7 "Paese destinazione "
|
||||
GROUP GR_CESSIONI
|
||||
END
|
||||
|
||||
STRING F_PAESE 2
|
||||
BEGIN
|
||||
PROMPT 20 7 ""
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB F_PAESE
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_PAESE CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD PAESE
|
||||
END
|
||||
|
||||
STRING F_PAESE_ORIG 2
|
||||
BEGIN
|
||||
PROMPT 1 8 "Paese di origine "
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB F_PAESE_ORIG
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_PAESE_ORIG CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD PAESEORIG
|
||||
GROUP GR_ACQUISTI
|
||||
END
|
||||
|
||||
@ -10,6 +10,7 @@ class TRiepiloghi_mask : public TIntra_mask
|
||||
protected:
|
||||
virtual short type_field() const;
|
||||
virtual short period_field() const;
|
||||
virtual int anno() const { return get_int(F_ANNO); }
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
@ -29,12 +30,32 @@ bool TRiepiloghi_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_NOMENCLATURA1:
|
||||
case F_NOMENCLATURA2:
|
||||
case F_NOMENCLATURA3:
|
||||
if (e == fe_close && !query_mode())
|
||||
{
|
||||
TString16 key; key << get(F_NOMENCLATURA1) << get(F_NOMENCLATURA2) << get(F_NOMENCLATURA3);
|
||||
|
||||
if (key.empty())
|
||||
return error_box("La nomenclatura combinata e' obbligatoria");
|
||||
}
|
||||
else
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
TString16 key; key << get(F_NOMENCLATURA1) << get(F_NOMENCLATURA2) << get(F_NOMENCLATURA3);
|
||||
const TRectype& nom = cache().get("%NOC", key);
|
||||
|
||||
key = nom.get("S5");
|
||||
set(F_UMS, key);
|
||||
}
|
||||
break;
|
||||
case F_VALORE_STAT:
|
||||
if (e == fe_init)
|
||||
{
|
||||
TMask& m = o.mask();
|
||||
TString key ; key << main_app().get_firm();
|
||||
const bool req = frequenza() == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||
const bool req = frequenza(anno()) == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||
const CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||
|
||||
m.field(F_VALORE_STAT).check_type(chk);
|
||||
@ -60,7 +81,7 @@ bool TRiepiloghi_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
break;
|
||||
case F_RIEPILOGHI:
|
||||
if (e == fe_button)
|
||||
::genera_riepiloghi(tipo(), get_int(F_ANNO));
|
||||
::genera_riepiloghi(tipo(), anno());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -87,6 +108,7 @@ protected:
|
||||
virtual bool user_create();
|
||||
virtual TRelation* get_relation() const { return _rel; }
|
||||
virtual TMask* get_mask(int) { return _msk; }
|
||||
virtual int write(const TMask& m);
|
||||
virtual bool changing_mask(int mode) { return FALSE; }
|
||||
virtual bool user_destroy();
|
||||
virtual bool get_next_key(TToken_string& k);
|
||||
@ -140,6 +162,11 @@ void TRiepiloghi_intra::init_insert_mode(TMask& m)
|
||||
m.enable(F_VALUTA);
|
||||
}
|
||||
|
||||
int TRiepiloghi_intra::write(const TMask& m)
|
||||
{
|
||||
_rel->curr().put("FREQUENZA", ((TRiepiloghi_mask &) m).frequenza(m.get_int(F_ANNO)));
|
||||
return TRelation_application::write(m);
|
||||
}
|
||||
void TRiepiloghi_intra::init_query_mode(TMask& m)
|
||||
{
|
||||
TEdit_field& numrig = m.efield(F_NUM_RIG);
|
||||
@ -148,9 +175,15 @@ void TRiepiloghi_intra::init_query_mode(TMask& m)
|
||||
cur.last_item();
|
||||
const TRectype& curr = cur.curr();
|
||||
m.set(F_ANNO, curr.get("ANNO"));
|
||||
m.set(F_TIPO, curr.get("TIPO"), TRUE);
|
||||
m.set(F_PERIODO_M, curr.get("PERIODO"));
|
||||
m.set(F_PERIODO_T, curr.get("PERIODO"));
|
||||
m.set(F_TIPO, curr.get("TIPO"), TRUE);
|
||||
if (m.field(F_PERIODO_M).shown())
|
||||
m.set(F_PERIODO_M, curr.get("PERIODO"));
|
||||
else
|
||||
if (m.field(F_PERIODO_T).shown())
|
||||
m.set(F_PERIODO_T, curr.get("PERIODO"));
|
||||
else
|
||||
if (m.field(F_PERIODO_A).shown())
|
||||
m.set(F_PERIODO_A, curr.get("PERIODO"));
|
||||
m.disable(F_VALUTA);
|
||||
}
|
||||
|
||||
|
||||
@ -32,6 +32,8 @@
|
||||
#define F_NOMENCLATURA2 356
|
||||
#define F_NOMENCLATURA3 357
|
||||
#define F_TRASPORTO_DESC 358
|
||||
#define F_PERIODO_H 359
|
||||
#define F_UMS 360
|
||||
|
||||
#define GR_CESSIONI 1
|
||||
#define GR_ACQUISTI 2
|
||||
|
||||
@ -32,7 +32,31 @@ END
|
||||
LIST F_PERIODO_M 2 16
|
||||
BEGIN
|
||||
PROMPT 1 3 "Periodo "
|
||||
FLAGS "AM"
|
||||
ITEM "01|Gennaio"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "02|Febbraio"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "03|Marzo"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "04|Aprile"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "05|Maggio"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "06|Giugno"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "07|Luglio"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "08|Agosto"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "09|Settembre"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "10|Ottobre"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "11|Novembre"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "12|Dicembre"
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
FLAGS "A"
|
||||
FIELD PERIODO
|
||||
KEY 1
|
||||
END
|
||||
@ -41,13 +65,13 @@ LIST F_PERIODO_T 2 16
|
||||
BEGIN
|
||||
PROMPT 1 3 "Periodo "
|
||||
ITEM "01|Gennaio-Marzo"
|
||||
MESSAGE COPY,F_PERIODO_M
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "02|Aprile-Giugno"
|
||||
MESSAGE COPY,F_PERIODO_M
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "03|Luglio-Settembre"
|
||||
MESSAGE COPY,F_PERIODO_M
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
ITEM "04|Ottobre-Dicembre"
|
||||
MESSAGE COPY,F_PERIODO_M
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
FIELD PERIODO
|
||||
KEY 1
|
||||
END
|
||||
@ -56,11 +80,18 @@ LIST F_PERIODO_A 2 16
|
||||
BEGIN
|
||||
PROMPT 1 3 "Periodo "
|
||||
ITEM "01|Annuale"
|
||||
MESSAGE COPY,F_PERIODO_M
|
||||
MESSAGE COPY,F_PERIODO_H
|
||||
FIELD PERIODO
|
||||
KEY 1
|
||||
END
|
||||
|
||||
NUMBER F_PERIODO_H 2
|
||||
BEGIN
|
||||
PROMPT 80 80 ""
|
||||
FLAGS "HZ"
|
||||
FIELD PERIODO
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 33 3 "Anno "
|
||||
@ -86,13 +117,9 @@ BEGIN
|
||||
USE LF_RIEPRETT
|
||||
INPUT TIPO F_TIPO SELECT
|
||||
INPUT ANNO F_ANNO SELECT
|
||||
INPUT PERIODO F_PERIODO_M SELECT
|
||||
INPUT PERIODO F_PERIODO_H SELECT
|
||||
INPUT NUMRIG F_NUM_RIG
|
||||
// DISPLAY "Tipo" TIPO
|
||||
// DISPLAY "Anno" ANNO
|
||||
// DISPLAY "Periodo" PERIODO
|
||||
DISPLAY "Numero" NUMRIG
|
||||
// DISPLAY "Stato" STATO
|
||||
DISPLAY "Partita IVA" PIVA
|
||||
DISPLAY "Natura" NATURA
|
||||
DISPLAY "Nomenclatura" NOMENCL
|
||||
@ -100,7 +127,6 @@ BEGIN
|
||||
DISPLAY "Trasporto" TRASPORTO
|
||||
DISPLAY "Paese" PAESE
|
||||
OUTPUT F_PERIODO_M PERIODO
|
||||
OUTPUT F_PERIODO_T PERIODO
|
||||
OUTPUT F_NUM_RIG NUMRIG
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD NUMRIG
|
||||
@ -146,7 +172,7 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
// WARNING "Lunghezza partita IVA errata"
|
||||
FIELD PIVA
|
||||
ADD RUN CG0 -1 /uPRASSI
|
||||
ADD RUN CG0 -1 #F_TIPO_CF
|
||||
END
|
||||
|
||||
STRING F_PARTITA_DESC 50
|
||||
@ -180,7 +206,7 @@ BEGIN
|
||||
PROMPT 1 9 "Nomenclatura"
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA1 4
|
||||
NUMBER F_NOMENCLATURA1 4
|
||||
BEGIN
|
||||
PROMPT 1 10 "combinata "
|
||||
FLAGS "U"
|
||||
@ -189,32 +215,34 @@ BEGIN
|
||||
INPUT CODTAB[5,6] F_NOMENCLATURA2
|
||||
INPUT CODTAB[7,8] F_NOMENCLATURA3
|
||||
DISPLAY "Codice" CODTAB[1,4]
|
||||
DISPLAY "" CODTAB[5,6]
|
||||
DISPLAY "" CODTAB[7,8]
|
||||
DISPLAY "@3" CODTAB[5,6]
|
||||
DISPLAY "@3" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_NOMENCLATURA1 CODTAB[1,4]
|
||||
OUTPUT F_NOMENCLATURA2 CODTAB[5,6]
|
||||
OUTPUT F_NOMENCLATURA3 CODTAB[7,8]
|
||||
OUTPUT F_NOMENCL_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
VALIDATE REQIF_FUNC 1 F_NOMENCLATURA2
|
||||
MESSAGE DIRTY,F_NOMENCLATURA3
|
||||
FIELD NOMENCL[1,4]
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA2 2
|
||||
NUMBER F_NOMENCLATURA2 2
|
||||
BEGIN
|
||||
PROMPT 22 10 ""
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
FIELD NOMENCL[5,6]
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE REQIF_FUNC 1 F_NOMENCLATURA3
|
||||
MESSAGE DIRTY,F_NOMENCLATURA3
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA3 2
|
||||
NUMBER F_NOMENCLATURA3 2
|
||||
BEGIN
|
||||
PROMPT 28 10 ""
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
FIELD NOMENCL[7,8]
|
||||
@ -231,13 +259,15 @@ STRING F_CONSEGNA 3
|
||||
BEGIN
|
||||
PROMPT 1 11 "Condiz. consegna "
|
||||
USE %ICC
|
||||
FLAGS "U"
|
||||
INPUT CODTAB F_CONSEGNA
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CONSEGNA CODTAB
|
||||
OUTPUT F_CONSEGNA_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CONSEGNA
|
||||
FIELD CONSEGNA
|
||||
WARNING "Condizione di consegna assente"
|
||||
END
|
||||
|
||||
STRING F_CONSEGNA_DESC 50
|
||||
@ -257,6 +287,7 @@ BEGIN
|
||||
OUTPUT F_TRASPORTO_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD TRASPORTO
|
||||
WARNING "Modo di trasporto assente"
|
||||
END
|
||||
|
||||
STRING F_TRASPORTO_DESC 50
|
||||
@ -288,8 +319,8 @@ BEGIN
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_PAESE CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
CHECKTYPE NORMAL
|
||||
FIELD PAESE
|
||||
WARNING "Paese assente"
|
||||
END
|
||||
|
||||
STRING F_PAESE_ORIG 2
|
||||
@ -299,6 +330,7 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "U"
|
||||
FIELD PAESEORIG
|
||||
WARNING "Paese di origine assente"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
@ -318,11 +350,13 @@ BEGIN
|
||||
PROMPT 66 13 ""
|
||||
FLAGS "U"
|
||||
FIELD PROV
|
||||
CHECTYPE REQUIRED
|
||||
WARNING "Provincia assente"
|
||||
END
|
||||
|
||||
CURRENCY F_AMM_LIRE 18
|
||||
BEGIN
|
||||
PROMPT 1 15 "Ammontare in lire "
|
||||
PROMPT 1 15 "Ammontare "
|
||||
FIELD AMMLIRE
|
||||
END
|
||||
|
||||
@ -333,6 +367,7 @@ BEGIN
|
||||
INPUT CODTAB F_VALUTA
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
CHECKTYPE NORMAL
|
||||
OUTPUT F_VALUTA CODTAB
|
||||
FIELD CODVAL
|
||||
FLAGS "UZ"
|
||||
@ -358,14 +393,19 @@ BEGIN
|
||||
FIELD MASSAKG
|
||||
END
|
||||
|
||||
STRING F_UMS 2
|
||||
BEGIN
|
||||
PROMPT 41 17 "In unita'supp."
|
||||
FLAGS "DU"
|
||||
END
|
||||
|
||||
NUMBER F_MASSA_UMS 18 5
|
||||
BEGIN
|
||||
PROMPT 41 17 "in unita' supp. "
|
||||
PROMPT 59 17 ""
|
||||
PICTURE ".5"
|
||||
FIELD MASSAUMS
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
@ -15,6 +15,7 @@ protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
virtual short type_field() const { return F_TIPO; }
|
||||
virtual short period_field() const { return F_PERIODO_M; }
|
||||
virtual int anno() const { return get_int(O_ANNO); }
|
||||
|
||||
public:
|
||||
|
||||
@ -41,7 +42,7 @@ bool TRettifiche_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
{
|
||||
TMask& m = o.mask();
|
||||
TString key ; key << main_app().get_firm();
|
||||
const bool req = frequenza() == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||
const bool req = frequenza(anno()) == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||
const CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||
|
||||
m.field(F_VALORE_STAT).check_type(chk);
|
||||
|
||||
@ -181,41 +181,46 @@ BEGIN
|
||||
GROUP GR_ORIGINAL
|
||||
END
|
||||
|
||||
STRING O_NOMENCLATURA1 4
|
||||
NUMBER O_NOMENCLATURA1 4
|
||||
BEGIN
|
||||
PROMPT 28 7 "Nomenclatura combinata "
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
USE %NOC
|
||||
INPUT CODTAB[1,4] O_NOMENCLATURA1
|
||||
INPUT CODTAB[5,6] O_NOMENCLATURA2
|
||||
INPUT CODTAB[7,8] O_NOMENCLATURA3
|
||||
DISPLAY "Codice" CODTAB[1,4]
|
||||
DISPLAY "" CODTAB[5,6]
|
||||
DISPLAY "" CODTAB[7,8]
|
||||
DISPLAY "@3" CODTAB[5,6]
|
||||
DISPLAY "@3" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT O_NOMENCLATURA1 CODTAB[1,4]
|
||||
OUTPUT O_NOMENCLATURA2 CODTAB[5,6]
|
||||
OUTPUT O_NOMENCLATURA3 CODTAB[7,8]
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE DIRTY,O_NOMENCLATURA3
|
||||
VALIDATE REQIF_FUNC 1 O_NOMENCLATURA2
|
||||
GROUP GR_ORIGINAL
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING O_NOMENCLATURA2 2
|
||||
NUMBER O_NOMENCLATURA2 2
|
||||
BEGIN
|
||||
PROMPT 58 7 ""
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
COPY ALL O_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
MESSAGE DIRTY,O_NOMENCLATURA3
|
||||
VALIDATE REQIF_FUNC 1 O_NOMENCLATURA3
|
||||
GROUP GR_ORIGINAL
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING O_NOMENCLATURA3 2
|
||||
NUMBER O_NOMENCLATURA3 2
|
||||
BEGIN
|
||||
PROMPT 63 7 ""
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
COPY ALL O_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
GROUP GR_ORIGINAL
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
CURRENCY O_AMM_LIRE 18
|
||||
@ -381,39 +386,44 @@ BEGIN
|
||||
FIELD NATURA
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA1 4
|
||||
NUMBER F_NOMENCLATURA1 4
|
||||
BEGIN
|
||||
PROMPT 28 15 "Nomenclatura combinata "
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
USE %NOC
|
||||
INPUT CODTAB[1,4] F_NOMENCLATURA1
|
||||
INPUT CODTAB[5,6] F_NOMENCLATURA2
|
||||
INPUT CODTAB[7,8] F_NOMENCLATURA3
|
||||
DISPLAY "Codice" CODTAB[1,4]
|
||||
DISPLAY "" CODTAB[5,6]
|
||||
DISPLAY "" CODTAB[7,8]
|
||||
DISPLAY "@3" CODTAB[5,6]
|
||||
DISPLAY "@3" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_NOMENCLATURA1 CODTAB[1,4]
|
||||
OUTPUT F_NOMENCLATURA2 CODTAB[5,6]
|
||||
OUTPUT F_NOMENCLATURA3 CODTAB[7,8]
|
||||
CHECKTYPE REQUIRED
|
||||
VALIDATE REQIF_FUNC 1 F_NOMENCLATURA2
|
||||
MESSAGE DIRTY,F_NOMENCLATURA3
|
||||
FIELD NOMENCL
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA2 2
|
||||
NUMBER F_NOMENCLATURA2 2
|
||||
BEGIN
|
||||
PROMPT 58 15 ""
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE REQIF_FUNC 1 F_NOMENCLATURA3
|
||||
MESSAGE DIRTY,F_NOMENCLATURA3
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA3 2
|
||||
NUMBER F_NOMENCLATURA3 2
|
||||
BEGIN
|
||||
PROMPT 63 15 ""
|
||||
FLAGS "U"
|
||||
FLAGS "Z"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
LIST F_SEGNO 1
|
||||
|
||||
@ -41,19 +41,52 @@ char TIntra_mask::tipo() const
|
||||
return t;
|
||||
}
|
||||
|
||||
char TIntra_mask::frequenza() const
|
||||
char TIntra_mask::frequenza(const int anno) const
|
||||
{
|
||||
const char t = tipo();
|
||||
TDate d(TODAY);
|
||||
if (anno < d.year())
|
||||
{
|
||||
TLocalisamfile riep(LF_RIEPRETT);
|
||||
riep.put("TIPO", (char)t);
|
||||
riep.put("ANNO", anno);
|
||||
if (riep.read(_isgteq) == NOERR)
|
||||
{
|
||||
if (riep.get_char("TIPO") == t && riep.get_int("ANNO") == anno)
|
||||
{
|
||||
const char freq = riep.get_char("FREQUENZA");
|
||||
|
||||
if (freq != '\0')
|
||||
return freq;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (t == 'A' || t == 'B') ? _freq_acq : _freq_ces;
|
||||
}
|
||||
|
||||
int TIntra_mask::date2periodo(const TDate & d)
|
||||
{
|
||||
const char freq = frequenza(d.year());
|
||||
|
||||
if (freq == 'A')
|
||||
return 1;
|
||||
const int month = d.month();
|
||||
|
||||
if (freq == 'T')
|
||||
return (month / 3) + 1;
|
||||
|
||||
return month;
|
||||
}
|
||||
|
||||
const char* TIntra_mask::periodo_str() const
|
||||
{
|
||||
const short id = period_field();
|
||||
const char* pe = "01";
|
||||
if (id != DLG_NULL)
|
||||
{
|
||||
switch(frequenza())
|
||||
// const int anno = get_int(R_ANNO);
|
||||
switch(frequenza(anno()))
|
||||
{
|
||||
case 'M': pe = get(id); break;
|
||||
case 'T': pe = get(id+1); break;
|
||||
@ -77,9 +110,10 @@ bool TIntra_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
if (e == fe_modify || e == fe_init)
|
||||
{
|
||||
const short id = period_field();
|
||||
|
||||
if (id != DLG_NULL)
|
||||
{
|
||||
const char freq = frequenza();
|
||||
const char freq = frequenza(anno());
|
||||
show(id+0, freq == 'M');
|
||||
show(id+1, freq == 'T');
|
||||
show(id+2, freq == 'A');
|
||||
@ -248,6 +282,7 @@ class TGenerazione_mask : public TIntra_mask
|
||||
protected:
|
||||
virtual short type_field() const { return R_TIPO; }
|
||||
virtual short period_field() const { return R_PERIODO_M; }
|
||||
virtual int anno() const { return get_int(R_ANNO); }
|
||||
|
||||
public:
|
||||
bool genera_riepiloghi();
|
||||
@ -259,10 +294,15 @@ public:
|
||||
bool TGenerazione_mask::genera_riepiloghi()
|
||||
{
|
||||
const char tipo = get(R_TIPO)[0];
|
||||
const int anno = get_int(R_ANNO);
|
||||
const int anno_r = anno();
|
||||
const int peri = periodo();
|
||||
int da_mese, a_mese;
|
||||
switch (frequenza())
|
||||
const char freq = frequenza(anno_r);
|
||||
|
||||
if (is_riepilogo(tipo, anno_r, peri) && !yesno_box("Attenzione esiste gia' il riepilogo\nper il periodo indicato, devo continuare"))
|
||||
return FALSE;
|
||||
|
||||
switch (freq)
|
||||
{
|
||||
case 'T':
|
||||
da_mese = (peri-1) * 3 + 1;
|
||||
@ -276,8 +316,8 @@ bool TGenerazione_mask::genera_riepiloghi()
|
||||
break;
|
||||
}
|
||||
|
||||
const TDate da_data(1, da_mese, anno);
|
||||
const TDate a_data(TDate::last_day(a_mese, anno), a_mese, anno);
|
||||
const TDate da_data(1, da_mese, anno_r);
|
||||
const TDate a_data(TDate::last_day(a_mese, anno_r), a_mese, anno_r);
|
||||
|
||||
TRectype filter_da(LF_INTRA), filter_a(LF_INTRA);
|
||||
filter_da.put("DATAREG", da_data);
|
||||
@ -315,7 +355,7 @@ bool TGenerazione_mask::genera_riepiloghi()
|
||||
TProgind pi(riepiloghi, "Scrittura riepiloghi intra...", FALSE, TRUE);
|
||||
TLocalisamfile riep(LF_RIEPRETT);
|
||||
riep.put("TIPO", tipo);
|
||||
riep.put("ANNO", anno);
|
||||
riep.put("ANNO", anno_r);
|
||||
riep.put("PERIODO", peri);
|
||||
riep.put("NUMRIG", 1);
|
||||
int err = riep.read();
|
||||
@ -323,11 +363,12 @@ bool TGenerazione_mask::genera_riepiloghi()
|
||||
{
|
||||
pi.addstatus(1);
|
||||
riep.put("TIPO", tipo);
|
||||
riep.put("ANNO", anno);
|
||||
riep.put("ANNO", anno_r);
|
||||
riep.put("PERIODO", peri);
|
||||
riep.put("NUMRIG", r+1);
|
||||
_riep[r].write(riep.curr());
|
||||
|
||||
riep.put("FREQUENZA", freq);
|
||||
|
||||
const int werr = err == NOERR ? riep.rewrite() : riep.write();
|
||||
if (werr != NOERR)
|
||||
return error_box("Errore %d durante la scrittura dei riepiloghi", werr);
|
||||
@ -385,3 +426,16 @@ void genera_riepiloghi(char tipo, int anno, int periodo)
|
||||
if (num_fields == 3 || m.run() == K_ENTER)
|
||||
m.genera_riepiloghi();
|
||||
}
|
||||
|
||||
bool is_riepilogo(char tipo, int anno, int periodo)
|
||||
{
|
||||
TLocalisamfile riep(LF_RIEPRETT);
|
||||
|
||||
riep.put("TIPO", tipo);
|
||||
riep.put("ANNO", anno);
|
||||
riep.put("PERIODO", periodo);
|
||||
riep.put("NUMRIG", 1);
|
||||
int err = riep.read();
|
||||
return err == NOERR;
|
||||
}
|
||||
|
||||
|
||||
@ -15,10 +15,12 @@ protected:
|
||||
|
||||
virtual short type_field() const;
|
||||
virtual short period_field() const;
|
||||
virtual int anno() const pure;
|
||||
|
||||
public:
|
||||
int date2periodo(const TDate & d);
|
||||
char tipo() const;
|
||||
char frequenza() const;
|
||||
char frequenza(const int anno) const;
|
||||
int periodo() const;
|
||||
const char* periodo_str() const;
|
||||
|
||||
@ -27,5 +29,6 @@ public:
|
||||
};
|
||||
|
||||
void genera_riepiloghi(char tipo = ' ', int anno = 0, int periodo = 0);
|
||||
|
||||
bool is_riepilogo(char tipo, int anno, int periodo);
|
||||
|
||||
#endif
|
||||
|
||||
@ -1,15 +1,11 @@
|
||||
[PRASSIEF_001]
|
||||
Caption = "Elenchi INTRA comunitari"
|
||||
[PRASSIIN_001]
|
||||
Caption = "Elenchi Intracomunitari"
|
||||
Picture = <ba00.bmp>
|
||||
Module = 18
|
||||
Flags = "F"
|
||||
Item_01 = "Stampa riepiloghi", "in0 -0", "F"
|
||||
Item_02 = "Generazione dischetti", "in0 -1", "F"
|
||||
Item_03 = "Gestione movimenti", "in0 -4", "F"
|
||||
Item_04 = "Gestione riepiloghi", "in0 -5", "F"
|
||||
Item_05 = "Gestione rettifiche", "in0 -6", "F"
|
||||
Item_06 = "Tabelle", [PRASSIIN_002]
|
||||
Item_07 = "Stampa Tabelle", [PRASSIIN_003]
|
||||
Flags = ""
|
||||
Item_01 = "Tabelle", [PRASSIIN_002]
|
||||
Item_02 = "Stampa Tabelle", [PRASSIIN_003]
|
||||
Item_03 = "Gestione movimenti", [PRASSIIN_004]
|
||||
|
||||
[PRASSIIN_002]
|
||||
Caption = "Tabelle"
|
||||
@ -33,3 +29,16 @@ Item_03 = "Natura Transazione", "ba3 -1 %int", ""
|
||||
Item_04 = "Condizioni di consegna", "ba3 -1 %icc", ""
|
||||
Item_05 = "Modalita' di trasporto", "ba3 -1 %imt", ""
|
||||
|
||||
[PRASSIIN_004]
|
||||
Caption = "Gestione movmenti"
|
||||
Picture = <ba00.bmp>
|
||||
Module = 18
|
||||
Flags = "F"
|
||||
Item_01 = "Gestione movimenti", "in0 -4", "F"
|
||||
Item_02 = "Gestione riepiloghi", "in0 -5", "F"
|
||||
Item_03 = "Stampa riepiloghi", "in0 -0", "F"
|
||||
Item_04 = "Gestione rettifiche", "in0 -6", "F"
|
||||
Item_05 = "Generazione dischetti", "in0 -1", "F"
|
||||
Item_06 = "Dati riassuntivi", "ba3 -0 IRD", "F"
|
||||
Item_06 = "Stampa dati riassuntivi", "ba3 -1 IRD", "F"
|
||||
|
||||
|
||||
@ -312,3 +312,4 @@ TSelect_color_mask::~TSelect_color_mask()
|
||||
{
|
||||
delete _sheet_mask;
|
||||
}
|
||||
|
||||
|
||||
@ -580,16 +580,17 @@ int TMask::id2pos(
|
||||
// (es. il campo 120 e' il quarto della maschera)
|
||||
{
|
||||
int pos = -1;
|
||||
if (id > 0 && id < 512)
|
||||
if (id > 0)
|
||||
{
|
||||
pos = int(_position.get_long(id)-1);
|
||||
CHECKD(pos < 0 || fld(pos).dlg() == id, "Bad position for field: ", id);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (pos = fields()-1; pos >= 0; pos--)
|
||||
if (fld(pos).dlg() == id) break;
|
||||
}
|
||||
if (id < 512)
|
||||
pos = int(long(_position.objptr(id))-1);
|
||||
else
|
||||
{
|
||||
for (pos = fields()-1; pos >= 0; pos--)
|
||||
if (fld(pos).dlg() == id)
|
||||
break;
|
||||
}
|
||||
}
|
||||
return pos;
|
||||
}
|
||||
|
||||
|
||||
@ -1025,13 +1025,11 @@ bool TPrefix::set_codditta(long codditta, bool force)
|
||||
{
|
||||
TString16 s("com");
|
||||
if (codditta > 0L)
|
||||
{
|
||||
s.format("%05lda", codditta);
|
||||
if (_firm)
|
||||
_firm->read(codditta);
|
||||
}
|
||||
s.format("%05lda", codditta);
|
||||
set(s, force);
|
||||
CPutPref(_prefix);
|
||||
if (_firm)
|
||||
_firm->read(codditta);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
@ -84,8 +84,6 @@ private:
|
||||
// @cmember:(INTERNAL) UNUSED
|
||||
void set_toolbar(bool all);
|
||||
|
||||
// @cmember:(INTERNAL) Seleziona il nuovo modo e ritorna il vecchio
|
||||
int set_mode(int mode);
|
||||
// @Setta i filtri di lettura
|
||||
void set_key_filter();
|
||||
// @cmember:(INTERNAL) Setta i limiti
|
||||
@ -129,6 +127,8 @@ protected:
|
||||
// @cmember Ritorna il nome del programma chiamante
|
||||
const TString& autoins_caller() const
|
||||
{ return _autoins_caller;}
|
||||
// @cmember:(INTERNAL) Seleziona il nuovo modo e ritorna il vecchio
|
||||
int set_mode(int mode);
|
||||
|
||||
// @cmember Ciclo principale
|
||||
virtual void main_loop();
|
||||
|
||||
@ -113,8 +113,8 @@ bool pi_check(
|
||||
else
|
||||
{
|
||||
const char* stpi[] = { "BE09", "DE09", "DK08", "EL08", "ES09",
|
||||
"FR11", "GB09", "GB12", "IE08", "IT11",
|
||||
"LU08", "NL12", "PT09", NULL };
|
||||
"FI08", "FR11", "GB09", "GB12", "IE08",
|
||||
"IT11", "LU08", "NL12", "PT09", NULL };
|
||||
TString16 test;
|
||||
test.format("%s%02d", (const char*)stato, pi.len());
|
||||
|
||||
@ -479,7 +479,8 @@ HIDDEN bool _mtcheck_val(TMask_field& f, KEY)
|
||||
{
|
||||
const int month = atoi(f.get());
|
||||
if (month < 1 || month > 13) return FALSE;
|
||||
|
||||
|
||||
|
||||
TLocalisamfile d(LF_NDITTE);
|
||||
d.zero();
|
||||
d.put(NDT_CODDITTA, prefix().get_codditta());
|
||||
|
||||
@ -594,7 +594,7 @@ void xvt_statbar_refresh()
|
||||
|
||||
// @xref <f xvt_create_statbar> <f xvt_statbar_set>
|
||||
{
|
||||
if (_statbar);
|
||||
if (_statbar)
|
||||
statbar_set_title(_statbar, NULL);
|
||||
}
|
||||
|
||||
|
||||
@ -111,6 +111,7 @@ bool TCondizioni_vendita::user_create()
|
||||
{
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
_condven= "*"; // inizializzazione dell'indicatore del tipo di archivio
|
||||
|
||||
if (argc() > 2)
|
||||
{
|
||||
TFilename trans = argv(2);
|
||||
|
||||
@ -84,7 +84,7 @@ bool TRighe_condizioni_vendita::user_create()
|
||||
bool gotcha= FALSE; // booleano di avvenuta inizializzazione
|
||||
|
||||
_rcondven= "*"; // inizializzazione dell'indicatore del tipo di archivio
|
||||
|
||||
|
||||
if (argc() > 2)
|
||||
{
|
||||
TFilename trans = argv(2);
|
||||
|
||||
@ -803,70 +803,47 @@ BEGIN
|
||||
ITEM "F|Fornitore"
|
||||
END
|
||||
|
||||
LISTBOX F_COLLTYPE 25
|
||||
NUMBER F_CLASSDOG1 4
|
||||
BEGIN
|
||||
PROMPT 1 7 "Mag.per movim.con distinta "
|
||||
FIELD LF_ANAMAG->COLLTYPE
|
||||
ITEM " |da movimento" MESSAGE CLEAR,F_CODMAGAN
|
||||
ITEM "M|da riga prod.fin/semilav." MESSAGE CLEAR,F_CODMAGAN
|
||||
ITEM "F|da fornitore" MESSAGE CLEAR,F_CODMAGAN
|
||||
ITEM "A|da articolo" MESSAGE ENABLE,F_CODMAGAN
|
||||
END
|
||||
|
||||
STRING F_CODMAGAN 5
|
||||
BEGIN
|
||||
PROMPT 59 7 "Codice mag. "
|
||||
FIELD LF_ANAMAG->CODMAG
|
||||
FLAG "U"
|
||||
USE MAG
|
||||
INPUT CODTAB F_CODMAGAN
|
||||
DISPLAY "Codice@10" CODTAB
|
||||
PROMPT 1 8 "Nomenclatura combin. "
|
||||
FIELD CLASSDOG[1,4]
|
||||
FLAG "Z"
|
||||
USE %NOC
|
||||
INPUT CODTAB[1,4] F_CLASSDOG1
|
||||
INPUT CODTAB[5,6] F_CLASSDOG2
|
||||
INPUT CODTAB[7,8] F_CLASSDOG3
|
||||
DISPLAY "Codice 1" CODTAB[1,4]
|
||||
DISPLAY "@3" CODTAB[5,6]
|
||||
DISPLAY "@3" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODMAGAN CODTAB
|
||||
OUTPUT F_CLASSDOG1 CODTAB[1,4]
|
||||
OUTPUT F_CLASSDOG2 CODTAB[5,6]
|
||||
OUTPUT F_CLASSDOG3 CODTAB[7,8]
|
||||
OUTPUT F_CLASSDOGD S0
|
||||
VALIDATE REQIF_FUNC 1 F_CLASSDOG2
|
||||
MESSAGE DIRTY,F_CLASSDOG3
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
NUMBER F_CLASSDOG2 2
|
||||
BEGIN
|
||||
PROMPT 30 8 ""
|
||||
FIELD CLASSDOG[5,6]
|
||||
FLAG "Z"
|
||||
COPY ALL F_CLASSDOG1
|
||||
VALIDATE REQIF_FUNC 1 F_CLASSDOG2
|
||||
MESSAGE DIRTY,F_CLASSDOG3
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
NUMBER F_CLASSDOG3 2
|
||||
BEGIN
|
||||
PROMPT 35 8 ""
|
||||
FIELD CLASSDOG[7,8]
|
||||
FLAG "Z"
|
||||
COPY ALL F_CLASSDOG1
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_CLASSDOG1 4
|
||||
BEGIN
|
||||
PROMPT 1 8 "Nomenclatura combin. "
|
||||
FIELD CLASSDOG[1,4]
|
||||
FLAG "UZ"
|
||||
USE %NOC
|
||||
INPUT CODTAB[1,4] F_CLASSDOG1
|
||||
INPUT CODTAB[5,6] F_CLASSDOG2
|
||||
INPUT CODTAB[7,8] F_CLASSDOG3
|
||||
DISPLAY "Codice 1" CODTAB[1,4]
|
||||
DISPLAY "Codice 2" CODTAB[5,6]
|
||||
DISPLAY "Codice 3" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CLASSDOG1 CODTAB[1,4]
|
||||
OUTPUT F_CLASSDOG2 CODTAB[5,6]
|
||||
OUTPUT F_CLASSDOG3 CODTAB[7,8]
|
||||
OUTPUT F_CLASSDOGD S0
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Il codice della Nom.combinata deve essere presente e completo"
|
||||
END
|
||||
|
||||
STRING F_CLASSDOG2 2
|
||||
BEGIN
|
||||
PROMPT 30 8 ""
|
||||
FIELD CLASSDOG[5,6]
|
||||
FLAG "U"
|
||||
COPY ALL F_CLASSDOG1
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE REQIF_FUNC 1 F_CLASSDOG1
|
||||
WARNING "Il codice della Nom.combinata deve essere presente e completo"
|
||||
END
|
||||
|
||||
STRING F_CLASSDOG3 2
|
||||
BEGIN
|
||||
PROMPT 35 8 ""
|
||||
FIELD CLASSDOG[7,8]
|
||||
FLAG "U"
|
||||
COPY ALL F_CLASSDOG1
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE REQIF_FUNC 1 F_CLASSDOG2
|
||||
WARNING "Il codice della Nom.combinata deve essere presente e completo"
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING F_CLASSDOGD 37
|
||||
|
||||
@ -7,6 +7,17 @@
|
||||
|
||||
#include <doc.h>
|
||||
|
||||
class TLista_cf : public TLista_clifo
|
||||
{
|
||||
char _tipo;
|
||||
|
||||
protected:
|
||||
virtual char tipo() const { return _tipo; }
|
||||
|
||||
public:
|
||||
TLista_cf(char tipo) { _tipo = tipo;}
|
||||
};
|
||||
|
||||
class TFatturazione_bolle_app : public TSkeleton_application
|
||||
{
|
||||
TString4 _default_selection;
|
||||
@ -90,7 +101,9 @@ void TFatturazione_bolle_app::process_by_cli(const TMask& m)
|
||||
eld.tipi_validi(tipidoc);
|
||||
eld.stati_validi(statidoc);
|
||||
|
||||
TLista_clienti clienti;
|
||||
TTipo_documento t(eld.tipo_iniziale(0));
|
||||
char tipocf(t.tipocf());
|
||||
TLista_cf clienti(tipocf);
|
||||
const int tot_cli = clienti.leggi(dc, ac, da, aa, dz, az);
|
||||
|
||||
TString msg(80);
|
||||
@ -103,7 +116,7 @@ void TFatturazione_bolle_app::process_by_cli(const TMask& m)
|
||||
do_events(); // Attende visualizzazione
|
||||
|
||||
TLista_documenti din; // Legge tutti i documenti di input
|
||||
din.read('D', 'C', codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
||||
din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
||||
if (din.items() > 0 && !iw.iscancelled())
|
||||
{
|
||||
bool ok = process(iw, eld, din, data_elab);
|
||||
@ -140,7 +153,9 @@ void TFatturazione_bolle_app::process_by_doc(const TMask& m)
|
||||
eld.tipi_validi(tipidoc);
|
||||
eld.stati_validi(statidoc);
|
||||
|
||||
TLista_clienti clienti;
|
||||
TTipo_documento t(eld.tipo_iniziale(0));
|
||||
char tipocf(t.tipocf());
|
||||
TLista_cf clienti(tipocf);
|
||||
const int tot_cli = clienti.leggi(dc, ac);
|
||||
|
||||
TString msg(80);
|
||||
@ -153,7 +168,7 @@ void TFatturazione_bolle_app::process_by_doc(const TMask& m)
|
||||
do_events(); // Attende visualizzazione
|
||||
|
||||
TLista_documenti din, dout; // Legge tutti i documenti di input
|
||||
din.read('D', 'C', codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
||||
din.read('D', tipocf, codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
|
||||
|
||||
for (int i = din.items()-1; i >= 0; i--)
|
||||
{
|
||||
|
||||
@ -2144,7 +2144,7 @@ error_type TContabilizzazione::write_all(TDocumento& doc)
|
||||
const real totdocval = -head.get_real(MOV_TOTDOCVAL);
|
||||
|
||||
head.put(MOV_TOTDOC, totdoc);
|
||||
head.put(MOV_TOTDOCVAL, totdocval);
|
||||
// head.put(MOV_TOTDOCVAL, totdocval); // Non cambio segno! :-( LL700285
|
||||
|
||||
const int items = _movimento->iva_items();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user