diff --git a/ce/ce0100.cpp b/ce/ce0100.cpp index 6b77a6f66..0f8185a61 100755 --- a/ce/ce0100.cpp +++ b/ce/ce0100.cpp @@ -5,11 +5,13 @@ #include #include "ce0.h" +#include "celib.h" #include "cetbtmc.h" #include "cetbcac.h" #include "cetbcce.h" #include "cetbccb.h" +#include "cetbccc.h" #define MIN_CAT_COM 40 #ifndef TTable_application @@ -22,7 +24,6 @@ TTable_application& app() { return (TTable_application&)main_app(); } // TTMC_mask /////////////////////////////////////////////////////////// - class TTMC_mask : public TAutomask { public: @@ -46,14 +47,13 @@ bool TTMC_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) default: break; } - return TRUE; + return true; } /////////////////////////////////////////////////////////// // TCAC_mask /////////////////////////////////////////////////////////// - class TCAC_mask : public TAutomask { public: @@ -115,7 +115,50 @@ bool TCAC_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) default: break; } - return TRUE; + return true; +} + +/////////////////////////////////////////////////////////// +// TCCC_mask +/////////////////////////////////////////////////////////// + +class TCCC_mask : public TAutomask +{ +public: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + + TCCC_mask() : TAutomask("cetbccc") { } + virtual ~TCCC_mask() { } +}; + +bool TCCC_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch (o.dlg()) + { + case F_CODCAT_IN: + if (o.active()) + { + TDitta_cespiti& dc = ditta_cespiti(); + bool ok = dc.on_category_event(o, e, jolly); + if (ok) + { + if (e == fe_modify && !o.empty()) + { + const TRectype& cac = dc.categoria(0, NULL, get_int(F_CODCAT_IN)); + if (o.dlg() == F_CODCAT_IN) + set(F_DESCCAT, cac.get("S0")); + /*else + set(F_CODCAT_IN, cac.get("CODTAB");*/ + } + if (e == fe_close && o.empty()) + return error_box(TR("È necessario specificare la categoria!")); + } + } + break; + default: + break; + } + return true; } /////////////////////////////////////////////////////////// @@ -189,7 +232,7 @@ bool TCCE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) default: break; } - return TRUE; + return true; } /////////////////////////////////////////////////////////// @@ -207,7 +250,10 @@ protected: virtual int rewrite(const TMask& m); virtual bool remove(); virtual bool protected_record(TRectype& rec); + void show_hide_ccc_cat(TMask& m, const bool hide_cac); + virtual void init_query_mode(TMask& m); + virtual void init_insert_mode(TMask& m); virtual void init_query_insert_mode(TMask& m); virtual void init_modify_mode(TMask& m); }; @@ -223,21 +269,25 @@ TString& TCEtables::get_mask_name(TString& name) const TMask* TCEtables::set_mask(TMask* m) { + const TString& tab = get_tabname(); if (m == NULL) { - if (get_tabname() == "%TMC") + if (tab == "%TMC") m = new TTMC_mask(); else - if (get_tabname() == "%CAC") + if (tab == "%CAC") m = new TCAC_mask(); else - if (get_tabname() == "CCE") + if (tab == "CCE") m = new TCCE_mask(); else - { - TString name; get_mask_name(name); - m = new TMask(name); - } + if (tab == "CCC") + m = new TCCC_mask(); + else + { + TString name; get_mask_name(name); + m = new TMask(name); + } } return TTable_application::set_mask(m); } @@ -268,7 +318,8 @@ bool TCEtables::remove() bool TCEtables::protected_record(TRectype& rec) { - if (get_tabname() == "%CGR") + const TString& tab = get_tabname(); + if (tab == "%CGR") { TTable cat("%CAT"); @@ -278,7 +329,7 @@ bool TCEtables::protected_record(TRectype& rec) return key == cat.get("CODTAB").left(2); } else - if (get_tabname() == "%CAT") + if (tab == "%CAT") { TTable cac("%CAC"); @@ -293,32 +344,71 @@ bool TCEtables::protected_record(TRectype& rec) return TTable_application::protected_record(rec); } +void TCEtables::show_hide_ccc_cat(TMask& m, const bool hide_cac) +{ + //hide_cac = nasconde i campi che mostrano i record della tabella comune %CAC + if (hide_cac) + { + m.hide(F_CODCAT_IN); + m.show(F_CODCAT); + } + else + { + m.hide(F_CODCAT); + m.show(F_CODCAT_IN); + } +} + void TCEtables::init_query_mode(TMask& m) { - if (get_tabname() == "CCE") + const TString& tab = get_tabname(); + if (tab == "CCE") m.disable(DLG_ATTIV); - if (get_tabname() == "CCB") + if (tab == "CCB") { m.show(F_CODSP_CCB); m.hide(F_CODATT_CCB); - } + } + if (tab == "CCC") + { + show_hide_ccc_cat(m, true); + } +} + +void TCEtables::init_insert_mode(TMask& m) +{ + const TString& tab = get_tabname(); + if (tab == "CCC") + { + show_hide_ccc_cat(m, true); + } } void TCEtables::init_query_insert_mode(TMask& m) { - if (get_tabname() == "CCB") + const TString& tab = get_tabname(); + if (tab == "CCB") { m.hide(F_CODSP_CCB); m.show(F_CODATT_CCB); } + if (tab == "CCC") + { + show_hide_ccc_cat(m, false); + } } void TCEtables::init_modify_mode(TMask& m) { - if (get_tabname() == "CCE") + const TString& tab = get_tabname(); + if (tab == "CCE") { m.enable(DLG_ATTIV); } + if (tab == "CCC") + { + show_hide_ccc_cat(m, true); + } } int ce0100(int argc, char* argv[]) diff --git a/ce/ce0400a.h b/ce/ce0400a.h index fd6838eb4..06addda68 100755 --- a/ce/ce0400a.h +++ b/ce/ce0400a.h @@ -1,5 +1,6 @@ -// campi maschera ce0400a.msk +//campi maschera ce0400a.msk +//Pagina 1 #define F_DITTA 101 #define F_RAGSOC 102 #define F_ESERCORR 103 @@ -9,59 +10,60 @@ #define F_SPECIECORR 107 #define F_D_GRUPPOCORR 108 #define F_D_SPECIECORR 109 - #define F_DATACONS 110 #define F_ANNOTUIR 111 #define F_AMMPROP 112 -#define F_COLLCOGE 200 -#define F_PLUSMINUS 201 -#define F_TIPOSCRIT 202 - -#define F_ELIMCESP 204 -#define F_D_ELIMCESP 205 -#define F_RIL_DIFF 206 -#define F_D_RIL_DIFF 207 -#define F_RIL_QUOT 208 -#define F_D_RIL_QUOT 209 -#define F_RIL_PLUS 210 -#define F_D_RIL_PLUS 211 -#define F_RIL_MIN 212 -#define F_D_RIL_MIN 213 - -#define F_SOPR_PAS_GR 220 -#define F_SOPR_PAS_CO 221 -#define F_SOPR_PAS_SO 222 -#define F_SOPR_PAS_D 223 -#define F_DIFF_QUO_GR 224 -#define F_DIFF_QUO_CO 225 -#define F_DIFF_QUO_SO 226 -#define F_DIFF_QUO_D 227 -#define F_DIFF_FON_GR 228 -#define F_DIFF_FON_CO 229 -#define F_DIFF_FON_SO 230 -#define F_DIFF_FON_D 231 -#define F_PLUSVAL_GR 232 -#define F_PLUSVAL_CO 233 -#define F_PLUSVAL_SO 234 -#define F_PLUSVAL_D 235 -#define F_MINUSVAL_GR 236 -#define F_MINUSVAL_CO 237 -#define F_MINUSVAL_SO 238 -#define F_MINUSVAL_D 239 -#define F_VEND_CESP_GR 240 -#define F_VEND_CESP_CO 241 -#define F_VEND_CESP_SO 242 -#define F_VEND_CESP_D 243 - -#define F_TIPOAMM 245 -#define F_MOVDETT 246 -#define F_ANNOAMM 247 - +//Pagina 2 //sheet elenco files personalizzati e relative righe -#define F_USER 300 +#define F_USER 200 #define F_NAME_USER 101 #define F_PROMPT_USER 102 #define F_PICTURE_USER 103 -#define F_SEARCH_USER 104 +#define F_SEARCH_USER 104 + +//Pagina 3 +#define F_COLLCOGE 300 +#define F_PLUSMIN 301 +#define F_TIPOSCRIT 302 +#define F_TIPOAMM 303 +#define F_MOVDETT 304 +#define F_ANNOAMM 305 + +#define F_ELIMCESP 306 +#define F_D_ELIMCESP 307 +#define F_RIL_DIFF 308 +#define F_D_RIL_DIFF 309 +#define F_RIL_QUOT 310 +#define F_D_RIL_QUOT 311 +#define F_RIL_PLUS 312 +#define F_D_RIL_PLUS 313 +#define F_RIL_MIN 314 +#define F_D_RIL_MIN 315 + +#define F_SOPR_PAS_GR 316 +#define F_SOPR_PAS_CO 317 +#define F_SOPR_PAS_SO 318 +#define F_SOPR_PAS_D 319 +#define F_DIFF_QUO_GR 320 +#define F_DIFF_QUO_CO 321 +#define F_DIFF_QUO_SO 322 +#define F_DIFF_QUO_D 323 +#define F_DIFF_FON_GR 324 +#define F_DIFF_FON_CO 325 +#define F_DIFF_FON_SO 326 +#define F_DIFF_FON_D 327 +#define F_PLUSVAL_GR 328 +#define F_PLUSVAL_CO 329 +#define F_PLUSVAL_SO 330 +#define F_PLUSVAL_D 331 +#define F_MINUSVAL_GR 332 +#define F_MINUSVAL_CO 333 +#define F_MINUSVAL_SO 334 +#define F_MINUSVAL_D 335 +#define F_VEND_CESP_GR 336 +#define F_VEND_CESP_CO 337 +#define F_VEND_CESP_SO 338 +#define F_VEND_CESP_D 339 + diff --git a/ce/ce0400a.uml b/ce/ce0400a.uml index cd20941ad..19c35e891 100755 --- a/ce/ce0400a.uml +++ b/ce/ce0400a.uml @@ -154,7 +154,7 @@ ENDPAGE //-----------------------------------------------------------------------------------------------// -PAGE "Collegamento Contabilità" -1 -1 78 10 +PAGE "Collegamento a Contabilita'" -1 -1 78 10 BOOLEAN F_COLLCOGE BEGIN @@ -164,7 +164,7 @@ BEGIN MESSAGE TRUE ENABLE,9@ END -BOOLEAN F_PLUSMINUS +BOOLEAN F_PLUSMIN BEGIN PROMPT 2 1 "Genera anche movimenti plus/minusvalenza" MESSAGE TRUE ENABLE,F_RIL_PLUS|ENABLE,F_D_RIL_PLUS|ENABLE,F_RIL_MIN|ENABLE,F_D_RIL_MIN|ENABLE,F_TIPOSCRIT|"",F_TIPOSCRIT|ENABLE,F_PLUSVAL_GR|ENABLE,F_PLUSVAL_CO|ENABLE,F_PLUSVAL_SO|ENABLE,F_PLUSVAL_D|REQUIRED,F_PLUSVAL_SO|ENABLE,F_MINUSVAL_GR|ENABLE,F_MINUSVAL_CO|ENABLE,F_MINUSVAL_SO|ENABLE,F_MINUSVAL_D|REQUIRED,F_MINUSVAL_SO diff --git a/ce/ce4400.cpp b/ce/ce4400.cpp index 94a59457b..0f6122c76 100755 --- a/ce/ce4400.cpp +++ b/ce/ce4400.cpp @@ -29,13 +29,71 @@ public: bool TTrasf_mov_ce_cg_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { -/* switch (o.dlg()) + switch (o.dlg()) { + case F_DATACALC: + if (e == fe_close) + { + const TDate data_fine_es = get(F_FINE_ES); + const TDate data_ini_es = get(F_INIZIO_ES); + TDate datacalc = o.get(); + if (datacalc < data_ini_es) + return error_box("La data di calcolo deve essere pari o successiva alla data inizio dell'esercizio selezionato"); + if (!datacalc.ok()) + { + datacalc = data_fine_es; + o.set(datacalc.string()); + } + + if (datacalc < data_ini_es || datacalc > data_fine_es) + return error_box("La data di calcolo deve appartenere all'esercizio selezionato!"); + } + break; default: break; - }*/ + } return true; } + +//=============================================================================================== +//Rectype da utilizzare per la creazione delle righe movimento contabili. Deriva da LF_RMOV ma ha.. +//..3 valori in piu' (gruppo,specie,categoria) che servono per gli ordinamenti in fase di generazione.. +//..movimenti contabili +class TRigamov : public TRectype +{ + TString4 _spc; + int _grp, _cat; + +public: + virtual int compare(const TSortable& s) const; + const TRectype& categoria() const; + TRigamov(const int grp, const TString& spc, const int cat) : TRectype(LF_RMOV) { _grp = grp; _spc = spc; _cat = cat;} +}; + + +const TRectype& TRigamov::categoria() const +{ + return ditta_cespiti().categoria(_grp, _spc, _cat, true); +} + + +//confrontatore di saldi_per_codice +int TRigamov::compare(const TSortable& s) const +{ + int cmp = 0; + const TRigamov& sc = (const TRigamov&)s; + cmp = _grp - sc._grp; + if (cmp == 0) + { + cmp = _spc.compare(sc._spc); + if (cmp == 0) + cmp = _cat - sc._cat; + + } + + return cmp; +} + //=============================================================================================== //Struct che serve per avere ammortamenti per categoria (Codcat|Qamm_tot|Qperse_tot) struct TSaldo_per_codice :public TSortable @@ -43,7 +101,7 @@ struct TSaldo_per_codice :public TSortable TString4 _spc; int _grp, _cat; TString80 _idcespite; - real _qnor, _qant, _qacc, _qperse; + real _qnor, _qant, _qacc;//, _qperse; void add(const TRectype& rec_ammce); virtual int compare(const TSortable& s) const; @@ -51,7 +109,7 @@ struct TSaldo_per_codice :public TSortable int compila_rmov(const int tipo, const int riga_nor, TArray& righe_mov, TLog_report& log, const int movdett) const; int genera_righe(TArray& righe_mov, TLog_report& log, const int movdett) const; - TSaldo_per_codice(const int grp, const TString4 spc, const int cat, const char* idcespite = "") + TSaldo_per_codice(const int grp, const TString& spc, const int cat, const char* idcespite = "") : _grp(grp),_spc(spc), _cat(cat), _idcespite(idcespite) {} }; @@ -62,12 +120,12 @@ void TSaldo_per_codice::add(const TRectype& rec_ammce) const real qant = rec_ammce.get_real(AMMCE_QANT); const real qacc = rec_ammce.get_real(AMMCE_QACC); //valore totale delle qperse del cespite che trova in AMMCE - const real qperse = rec_ammce.get_real(AMMCE_QPERSE); + //const real qperse = rec_ammce.get_real(AMMCE_QPERSE); _qnor += qnor; _qant += qant; _qacc += qacc; - _qperse += qperse; + // _qperse += qperse; } //confrontatore di saldi_per_codice @@ -112,7 +170,7 @@ int TSaldo_per_codice::compila_rmov(const int tipo, const int riga_nor, TArray& case 1: quota = _qnor; pos = 24; break; case 2: quota = _qant; pos = 36; break; case 3: quota = _qacc; pos = 48; break; - case 4: quota = _qperse; pos = 0; field = "S2"; break; +// case 4: quota = _qperse; pos = 0; field = "S2"; break; default: break; } if (quota <= ZERO) @@ -123,8 +181,8 @@ int TSaldo_per_codice::compila_rmov(const int tipo, const int riga_nor, TArray& TBill zio; if (!str2bill(stringona, pos, zio)) { - if (tipo < 4) - { + //if (tipo < 4) + //{ pos = 24; if (tipo == 1 || !str2bill(stringona, pos, zio)) { @@ -133,14 +191,14 @@ int TSaldo_per_codice::compila_rmov(const int tipo, const int riga_nor, TArray& log.log(2, msg); return -1; } - } - else + //} +/* else { TString msg; msg << TR("Manca il conto per le quote perse della categoria ") << rec_cac.get("CODTAB"); log.log(2, msg); return -1; - } + }*/ } if (pos == 24 && riga_nor >= 0) @@ -150,22 +208,22 @@ int TSaldo_per_codice::compila_rmov(const int tipo, const int riga_nor, TArray& return riga_nor; } - TRectype* rmov = new TRectype(LF_RMOV); + TRigamov* rmov = new TRigamov(_grp, _spc, _cat); rmov->put(RMV_SEZIONE, "D"); rmov->put(RMV_IMPORTO, quota); //conto e descrizione dipendono dal livello di dettaglio stabilito nella configurazione del collegamento CG/CE switch (movdett) { - case 0: + case 0: //dettaglio per categoria rmov->put(RMV_DESCR, rec_cac.get("S0")); break; - case 1: + case 1: //dettaglio per cespite { const TRectype& rec_cespi = cache().get(LF_CESPI, _idcespite); rmov->put(RMV_DESCR, rec_cespi.get(CESPI_DESC)); } break; - case 2: + case 2: //dettaglio per cespite con sottoconto=idcespite (idcespite numerico e di 6 cifre max!) { const TRectype& rec_cespi = cache().get(LF_CESPI, _idcespite); rmov->put(RMV_DESCR, rec_cespi.get(CESPI_DESC)); @@ -201,7 +259,7 @@ int TSaldo_per_codice::genera_righe(TArray& righe_mov, TLog_report& log, const i const int riga_nor = compila_rmov(1, -1, righe_mov, log, movdett); const int riga_ant = compila_rmov(2, riga_nor, righe_mov, log, movdett); const int riga_acc = compila_rmov(3, riga_nor, righe_mov, log, movdett); - const int riga_persa = compila_rmov(4, -1, righe_mov, log, movdett); +// const int riga_persa = compila_rmov(4, -1, righe_mov, log, movdett); const int righe_dopo = righe_mov.items(); return righe_dopo - righe_prima; //messo qui tanto per poter compilare @@ -209,7 +267,37 @@ int TSaldo_per_codice::genera_righe(TArray& righe_mov, TLog_report& log, const i const TRectype& TSaldo_per_codice::categoria() const { - return ditta_cespiti().categoria(_grp, _spc, _cat); + //viene chiamato il metodo standard della ditta_cespiti con l'ultimo parametro true in modo che usi solo... + //...le categorie valide per il collegamento alla contabilita' (tabella CCC) + return ditta_cespiti().categoria(_grp, _spc, _cat, true); +} + + +//=============================================================================================== +//TMovimentoPN_CE + +class TMovimentoPN_CE : public TMovimentoPN +{ +public: + TRectype& nuova_riga(); + TRectype& nuova_riga(const TRectype& row); +}; + +TRectype& TMovimentoPN_CE::nuova_riga() +{ + TRectype& riga = cg(-1); + riga.put(RMV_NUMRIG, cg_items()); + riga.put(RMV_ANNOES, curr().get(MOV_ANNOES)); + return riga; +} + +TRectype& TMovimentoPN_CE::nuova_riga(const TRectype& row) +{ + TRectype& riga = cg(-1); + riga = row; + riga.put(RMV_NUMRIG, cg_items()); + riga.put(RMV_ANNOES, curr().get(MOV_ANNOES)); + return riga; } //=============================================================================================== @@ -225,7 +313,12 @@ protected: virtual bool destroy(); void elabora(); + void genera_mov_per_cat(TArray& righe_mov, const TDate& datareg, const TDate& datacomp, + const TString& codcaus, const bool definitivo); + void genera_mov_per_ces(TArray& righe_mov, const TDate& datareg, const TDate& datacomp, + const TString& codcaus, const bool definitivo); void delete_old_movs(const TDate& ini_es); + long get_new_numreg() const; public: @@ -256,6 +349,85 @@ void TTrasf_mov_ce_cg::delete_old_movs(const TDate& ini_es) } +long TTrasf_mov_ce_cg::get_new_numreg() const +{ + TLocalisamfile mov(LF_MOV); + mov.last(); + //primo numero libero da usare come numreg + return mov.curr().get_long(MOV_NUMREG) + 1; +} + +//metodo per la generazione di movimenti con righe per categoria (chiamata se movdett=0) +void TTrasf_mov_ce_cg::genera_mov_per_cat(TArray& righe_mov, const TDate& datareg, const TDate& datacomp, + const TString& codcaus, const bool definitivo) +{ + //riempie i campi della testata movimento + long numreg = get_new_numreg(); + + TMovimentoPN_CE pn; + TRectype& head = pn.curr(); + + TEsercizi_contabili esc; + const int codes = esc.date2esc(datacomp); + head.put(MOV_ANNOES, codes); + head.put(MOV_NUMREG, numreg); + head.put(MOV_DATAREG, datareg); + head.put(MOV_DATACOMP, datacomp); + head.put(MOV_CODCAUS, codcaus); + if (!definitivo) + head.put(MOV_PROVVIS, 'C'); + head.put(MOV_DESCR, TR("Rilevazione quote ammortamento cespiti")); + + int first_row = 0; + + righe_mov.add(new TRigamov(0, EMPTY_STRING, 0)); + for (int i = 0; i < righe_mov.items(); i++) + { + const TRigamov& rigamov = (const TRigamov&)righe_mov[i]; + + // Se cambio categoria + if (i > 0 && rigamov.compare((const TRigamov&)righe_mov[i-1]) != 0) + { + TRectype& riga_fondo = pn.nuova_riga(); + TImporto fondo; + for (int j = first_row; j < i; j++) + { + TImporto imp_riga(pn.cg(j).get_char(RMV_SEZIONE), pn.cg(j).get_real(RMV_IMPORTO)); + fondo += imp_riga; + } + fondo.swap_section(); + fondo.normalize(); + riga_fondo.put(RMV_SEZIONE, fondo.sezione()); + riga_fondo.put(RMV_IMPORTO, fondo.valore()); + + //ci vogliono gr/co/sot che stanno nella categoria in CCC + //Serve la categoria precedente, perche' in questo momento l'ha cambiata! Quindi [i-1] + const TRigamov& prev_riga_mov = (const TRigamov&)righe_mov[i-1]; + const TString& stringone = prev_riga_mov.categoria().get("S1"); + riga_fondo.put(RMV_GRUPPO, stringone.mid(13,3)); + riga_fondo.put(RMV_CONTO, stringone.mid(16,3)); + riga_fondo.put(RMV_SOTTOCONTO, stringone.mid(19,6)); + + //se il movimento supera le 95 righe va salvato sul file MOV, poi distrutto per poter costruirne uno nuovo.. + //..con le righe di righe_mov che sono rimaste + if (pn.cg_items() > 95 || i == righe_mov.last()) + { + pn.write(); + pn.destroy_rows(++numreg); + } + + first_row = pn.cg_items(); + } + pn.nuova_riga(rigamov); + } +} + +//metodo per la generazione di movimenti con righe per cespite raggruppate e pareggiate per categoria (chiamata se movdett>0) +void TTrasf_mov_ce_cg::genera_mov_per_ces(TArray& righe_mov, const TDate& datareg, const TDate& datacomp, + const TString& codcaus, const bool definitivo) +{ +} + //metodo per gestire la successione degli eventi ad alto livello void TTrasf_mov_ce_cg::elabora() { @@ -267,10 +439,14 @@ void TTrasf_mov_ce_cg::elabora() if (_mask->get_bool(F_KILLOLD)) delete_old_movs(ini_es); - TDate datacalc; + //ragionamenti sulle date + const TDate datareg = _mask->get_date(F_DATAREG); + const TDate datacomp = min(fine_es, datareg); //se il trasferimento e' definitivo la data di calcolo e' quella finale dell'esercizio selezionato, senno'... //...e' quella indicata in F_DATACALC - if (_mask->get_bool(F_PROVDEF)) + TDate datacalc; + const bool definitivo = _mask->get_bool(F_PROVDEF); + if (definitivo) datacalc = _mask->get_date(F_FINE_ES); else datacalc = _mask->get_date(F_DATACALC); @@ -288,6 +464,8 @@ void TTrasf_mov_ce_cg::elabora() const int tpamm = config_ditta_ce.get_int("TPAMM"); //Tipo di calcolo da eseguire in base al dettaglio const int movdett = config_ditta_ce.get_int("MOVDETT"); + //Codice causale da mettere nei movimenti generati + const TString4 codcaus = config_ditta_ce.get("COAUQU"); //Assoc_array Categoria-QammTot-QperseTot TAssoc_array quote_per_codice; @@ -351,16 +529,23 @@ void TTrasf_mov_ce_cg::elabora() sld.genera_righe(righe_mov, cont_cesp_log, movdett); } + //controllo sul numero righe dell'array (serve solo per controllo al sagace programmatore...) + const int nrighemov = righe_mov.items(); + //a questo punto ha l'array con le righe movimento CG completo (righe_mov); da queste righe deve costruire.. + //..uno o piu' movimenti di prima nota - /*TMovimentoPN mov; - mov.last(); - //primo numero libero da usare come numreg - long numreg = mov.curr().get_long(MOV_NUMREG) + 1;*/ - + if (movdett == 0) + { + genera_mov_per_cat(righe_mov, datareg, datacomp, codcaus, definitivo); + } + else + { + genera_mov_per_ces(righe_mov, datareg, datacomp, codcaus, definitivo); + } - + //stampa il log degli errori TReport_book book; book.add(cont_cesp_log); book.preview(); diff --git a/ce/ce4400a.h b/ce/ce4400a.h index 3e074ab1a..09eae33e0 100755 --- a/ce/ce4400a.h +++ b/ce/ce4400a.h @@ -10,5 +10,4 @@ #define F_PROVDEF 209 #define F_DATACALC 210 #define F_DATAREG 211 -#define F_DATACOMP 212 -#define F_KILLOLD 213 +#define F_KILLOLD 212 diff --git a/ce/ce4400a.uml b/ce/ce4400a.uml index 7b63a0b4c..3ec1a6dbf 100755 --- a/ce/ce4400a.uml +++ b/ce/ce4400a.uml @@ -137,11 +137,6 @@ BEGIN CHECKTYPE REQUIRED END -DATA F_DATACOMP -BEGIN - PROMPT 2 12 "Data competenza " -END - BOOLEAN F_KILLOLD BEGIN PROMPT 2 13 "Eliminare i movimenti provvisori cespiti" diff --git a/ce/celib.cpp b/ce/celib.cpp index cba4f8681..2b9a99572 100755 --- a/ce/celib.cpp +++ b/ce/celib.cpp @@ -219,7 +219,7 @@ bool TDitta_cespiti::legge_223_06() const return data <= fines; } -const TRectype& TDitta_cespiti::categoria(int gr, const char* sp, int ca) const +const TRectype& TDitta_cespiti::categoria(int gr, const char* sp, int ca, const bool ccc) const { TString8 key; if (ca >= 41) @@ -232,8 +232,17 @@ const TRectype& TDitta_cespiti::categoria(int gr, const char* sp, int ca) const sp = _specie; key.format("%02d%-4s%02d", gr, sp, ca); } - const TRectype& cac = cache().get("%CAC", key); - return cac; + //se fa riferimento alla tabella CCC (tabella di ditta delle categorie collegate alla contabilita').. + if (ccc) + { + const TRectype& ccc = cache().get("CCC", key); + return ccc; + } + else //..senno' tabella standard di studio %CAC + { + const TRectype& cac = cache().get("%CAC", key); + return cac; + } } static TString8 _cac_filter; diff --git a/ce/celib.h b/ce/celib.h index 9f52dd82d..aacd0de57 100755 --- a/ce/celib.h +++ b/ce/celib.h @@ -33,7 +33,7 @@ public: const TRectype& get_attivita() const; int esercizio_corrente() const { return _esercizio; } int esercizio_corrente(TDate& inies, TDate& fines) const; - const TRectype& categoria(int gr, const char* sp, int ca) const; + const TRectype& categoria(int gr, const char* sp, int ca, const bool ccc = false) const; const TDate& data_primi_ricavi() const { return _data_primi_ricavi; } bool rinvio_ammortamento_ai_primi_ricavi() const; diff --git a/ce/cemenu.men b/ce/cemenu.men index fe9024554..a0a573868 100755 --- a/ce/cemenu.men +++ b/ce/cemenu.men @@ -63,6 +63,7 @@ Item_02 = "Localizzazioni", "ce0 -0 loc", "" Item_03 = "Impianti", "ce0 -0 cim" , "" Item_04 = "Esercizi", "ce0 -0 cce", "F" Item_05 = "Esercizi contabili", "cg0 -5 esc", "F" +Item_06 = "Collegamento contabilita'", "ce0 -0 ccc", "F" [CEMENU_007] Caption = "Stampa tabelle ditta" diff --git a/ce/cetbcac.h b/ce/cetbcac.h index 435f9bf71..26655cf43 100755 --- a/ce/cetbcac.h +++ b/ce/cetbcac.h @@ -31,29 +31,3 @@ #define GR_MAT 130 #define GR_IMMAT 131 #define GR_PLURI 132 - -//pagina collegamenti con la contabilta' -#define F_IMM_GR 201 -#define F_IMM_CO 202 -#define F_IMM_SOT 203 -#define F_IMM_DES 204 -#define F_FON_GR 205 -#define F_FON_CO 206 -#define F_FON_SOT 207 -#define F_FON_DES 208 -#define F_QNOR_GR 209 -#define F_QNOR_CO 210 -#define F_QNOR_SOT 211 -#define F_QNOR_DES 212 -#define F_QANT_GR 213 -#define F_QANT_CO 214 -#define F_QANT_SOT 215 -#define F_QANT_DES 216 -#define F_QACC_GR 217 -#define F_QACC_CO 218 -#define F_QACC_SOT 219 -#define F_QACC_DES 220 -#define F_QPERSE_GR 221 -#define F_QPERSE_CO 222 -#define F_QPERSE_SOT 223 -#define F_QPERSE_DES 224 diff --git a/ce/cetbcac.uml b/ce/cetbcac.uml index 25ce9a8c5..f3e1a6f81 100755 --- a/ce/cetbcac.uml +++ b/ce/cetbcac.uml @@ -239,425 +239,5 @@ END ENDPAGE -PAGE "Collegamento contabilita'" -1 -1 60 6 - -GROUPBOX DLG_NULL 74 9 -BEGIN - PROMPT 1 1 "@bConti per attivita'" - FLAGS "R" -END - -TEXT -1 -BEGIN - PROMPT 15 2 "@BGruppo" -END - -TEXT -1 -BEGIN - PROMPT 22 2 "@BConto" -END - -TEXT -1 -BEGIN - PROMPT 29 2 "@BSottoconto" -END - -TEXT -1 -BEGIN - PROMPT 39 2 "@BDescrizione" -END - -NUMBER F_IMM_GR 3 -BEGIN - PROMPT 2 3 "Immobilizzo " - FIELD S1[1,3] - FLAGS "Z" - USE LF_PCON SELECT CONTO="" - INPUT GRUPPO F_IMM_GR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Descrizione@50" DESCR - OUTPUT F_IMM_GR GRUPPO - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -NUMBER F_IMM_CO 3 -BEGIN - PROMPT 22 3 "" - FIELD S1[4,6] - FLAGS "Z" - USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO="")&&((INDBIL==1)||(INDBIL==2))) - COPY INPUT F_IMM_GR - INPUT CONTO F_IMM_CO - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Ind.Bil." INDBIL - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_IMM_GR - OUTPUT F_IMM_CO CONTO - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -NUMBER F_IMM_SOT 6 -BEGIN - PROMPT 29 3 "" - FIELD S1[7,12] - FLAGS "Z" - USE LF_PCON SELECT SOTTOCONTO!="" - COPY INPUT F_IMM_CO - INPUT SOTTOCONTO F_IMM_SOT - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_IMM_CO - OUTPUT F_IMM_SOT SOTTOCONTO - OUTPUT F_IMM_DES DESCR - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -STRING F_IMM_DES 50 32 -BEGIN - PROMPT 39 3 "" - USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" - INPUT DESCR F_IMM_DES - DISPLAY "Descrizione@50" DESCR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - COPY OUTPUT F_IMM_SOT - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -NUMBER F_FON_GR 3 -BEGIN - PROMPT 2 4 "Fondo " - FIELD S1[13,15] - FLAGS "Z" - USE LF_PCON SELECT CONTO="" - INPUT GRUPPO F_FON_GR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Descrizione@50" DESCR - OUTPUT F_FON_GR GRUPPO - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -NUMBER F_FON_CO 3 -BEGIN - PROMPT 22 4 "" - FIELD S1[16,18] - FLAGS "Z" - USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO="")&&((INDBIL==1)||(INDBIL==2))) - COPY INPUT F_FON_GR - INPUT CONTO F_FON_CO - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Ind.Bil." INDBIL - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_FON_GR - OUTPUT F_FON_CO CONTO - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -NUMBER F_FON_SOT 6 -BEGIN - PROMPT 29 4 "" - FIELD S1[19,24] - FLAGS "Z" - USE LF_PCON SELECT SOTTOCONTO!="" - COPY INPUT F_FON_CO - INPUT SOTTOCONTO F_FON_SOT - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_FON_CO - OUTPUT F_FON_SOT SOTTOCONTO - OUTPUT F_FON_DES DESCR - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -STRING F_FON_DES 50 32 -BEGIN - PROMPT 39 4 "" - USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" - INPUT DESCR F_FON_DES - DISPLAY "Descrizione@50" DESCR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - COPY OUTPUT F_FON_SOT - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -NUMBER F_QNOR_GR 3 -BEGIN - PROMPT 2 5 "Amm. Normali " - FIELD S1[25,27] - FLAGS "Z" - USE LF_PCON SELECT CONTO="" - INPUT GRUPPO F_QNOR_GR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Descrizione@50" DESCR - OUTPUT F_QNOR_GR GRUPPO - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -NUMBER F_QNOR_CO 3 -BEGIN - PROMPT 22 5 "" - FIELD S1[28,30] - FLAGS "Z" - USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO="")&&(INDBIL==3)) - COPY INPUT F_QNOR_GR - INPUT CONTO F_QNOR_CO - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Ind.Bil." INDBIL - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_QNOR_GR - OUTPUT F_QNOR_CO CONTO - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -NUMBER F_QNOR_SOT 6 -BEGIN - PROMPT 29 5 "" - FIELD S1[31,36] - FLAGS "Z" - USE LF_PCON SELECT SOTTOCONTO!="" - COPY INPUT F_QNOR_CO - INPUT SOTTOCONTO F_QNOR_SOT - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_QNOR_CO - OUTPUT F_QNOR_SOT SOTTOCONTO - OUTPUT F_QNOR_DES DESCR - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -STRING F_QNOR_DES 50 32 -BEGIN - PROMPT 39 5 "" - USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" - INPUT DESCR F_QNOR_DES - DISPLAY "Descrizione@50" DESCR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - COPY OUTPUT F_QNOR_SOT - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -NUMBER F_QANT_GR 3 -BEGIN - PROMPT 2 6 "Amm. Anticip." - FIELD S1[37,39] - FLAGS "Z" - USE LF_PCON SELECT CONTO="" - INPUT GRUPPO F_QANT_GR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Descrizione@50" DESCR - OUTPUT F_QANT_GR GRUPPO - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -NUMBER F_QANT_CO 3 -BEGIN - PROMPT 22 6 "" - FIELD S1[40,42] - FLAGS "Z" - USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO="")&&(INDBIL==3)) - COPY INPUT F_QANT_GR - INPUT CONTO F_QANT_CO - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Ind.Bil." INDBIL - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_QANT_GR - OUTPUT F_QANT_CO CONTO - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -NUMBER F_QANT_SOT 6 -BEGIN - PROMPT 29 6 "" - FIELD S1[43,48] - FLAGS "Z" - USE LF_PCON SELECT SOTTOCONTO!="" - COPY INPUT F_QANT_CO - INPUT SOTTOCONTO F_QANT_SOT - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_QANT_CO - OUTPUT F_QANT_SOT SOTTOCONTO - OUTPUT F_QANT_DES DESCR - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -STRING F_QANT_DES 50 32 -BEGIN - PROMPT 39 6 "" - USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" - INPUT DESCR F_QANT_DES - DISPLAY "Descrizione@50" DESCR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - COPY OUTPUT F_QANT_SOT - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -NUMBER F_QACC_GR 3 -BEGIN - PROMPT 2 7 "Amm. Accel. " - FIELD S1[49,51] - FLAGS "Z" - USE LF_PCON SELECT CONTO="" - INPUT GRUPPO F_QACC_GR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Descrizione@50" DESCR - OUTPUT F_QACC_GR GRUPPO - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -NUMBER F_QACC_CO 3 -BEGIN - PROMPT 22 7 "" - FIELD S1[52,54] - FLAGS "Z" - USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO="")&&(INDBIL==3)) - COPY INPUT F_QACC_GR - INPUT CONTO F_QACC_CO - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Ind.Bil." INDBIL - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_QACC_GR - OUTPUT F_QACC_CO CONTO - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -NUMBER F_QACC_SOT 6 -BEGIN - PROMPT 29 7 "" - FIELD S1[55,60] - FLAGS "Z" - USE LF_PCON SELECT SOTTOCONTO!="" - COPY INPUT F_QACC_CO - INPUT SOTTOCONTO F_QACC_SOT - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_QACC_CO - OUTPUT F_QACC_SOT SOTTOCONTO - OUTPUT F_QACC_DES DESCR - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -STRING F_QACC_DES 50 32 -BEGIN - PROMPT 39 7 "" - USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" - INPUT DESCR F_QACC_DES - DISPLAY "Descrizione@50" DESCR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - COPY OUTPUT F_QACC_SOT - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -NUMBER F_QPERSE_GR 3 -BEGIN - PROMPT 2 8 "Quote perse " - FIELD S2[1,3] - FLAGS "Z" - USE LF_PCON SELECT CONTO="" - INPUT GRUPPO F_QPERSE_GR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Descrizione@50" DESCR - OUTPUT F_QPERSE_GR GRUPPO - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -NUMBER F_QPERSE_CO 3 -BEGIN - PROMPT 22 8 "" - FIELD S2[4,6] - FLAGS "Z" - USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO="")&&(INDBIL==3)) - COPY INPUT F_QPERSE_GR - INPUT CONTO F_QPERSE_CO - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Ind.Bil." INDBIL - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_QPERSE_GR - OUTPUT F_QPERSE_CO CONTO - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -NUMBER F_QPERSE_SOT 6 -BEGIN - PROMPT 29 8 "" - FIELD S2[7,12] - FLAGS "Z" - USE LF_PCON SELECT SOTTOCONTO!="" - COPY INPUT F_QPERSE_CO - INPUT SOTTOCONTO F_QPERSE_SOT - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT F_QPERSE_CO - OUTPUT F_QPERSE_SOT SOTTOCONTO - OUTPUT F_QPERSE_DES DESCR - ADD RUN CG0 -0 - CHECKTYPE REQUIRED -END - -STRING F_QPERSE_DES 50 32 -BEGIN - PROMPT 39 8 "" - USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" - INPUT DESCR F_QPERSE_DES - DISPLAY "Descrizione@50" DESCR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - COPY OUTPUT F_QPERSE_SOT - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -ENDPAGE - ENDMASK diff --git a/ce/cetbccc.h b/ce/cetbccc.h new file mode 100755 index 000000000..aa9c4431b --- /dev/null +++ b/ce/cetbccc.h @@ -0,0 +1,32 @@ +// campi maschera cetbccc.msk (Collegamenti Cespiti Contabilita') + +#define F_CODGR 101 +#define F_CODSP 102 +#define F_CODCAT 103 +#define F_CODCAT_IN 104 +#define F_DESCGR 105 +#define F_DESCSP 106 +#define F_DESCCAT 107 +#define F_DESCCAT_IN 108 + +//Pagina 1 +#define F_IMM_GR 201 +#define F_IMM_CO 202 +#define F_IMM_SOT 203 +#define F_IMM_DES 204 +#define F_FON_GR 205 +#define F_FON_CO 206 +#define F_FON_SOT 207 +#define F_FON_DES 208 +#define F_QNOR_GR 209 +#define F_QNOR_CO 210 +#define F_QNOR_SOT 211 +#define F_QNOR_DES 212 +#define F_QANT_GR 213 +#define F_QANT_CO 214 +#define F_QANT_SOT 215 +#define F_QANT_DES 216 +#define F_QACC_GR 217 +#define F_QACC_CO 218 +#define F_QACC_SOT 219 +#define F_QACC_DES 220 diff --git a/ce/cetbccc.uml b/ce/cetbccc.uml new file mode 100755 index 000000000..92f5f3b25 --- /dev/null +++ b/ce/cetbccc.uml @@ -0,0 +1,458 @@ +#include "cetbccc.h" + +TOOLBAR "" 0 -2 0 2 + +#include +#include + +ENDPAGE + +PAGE "Categorie collegate CG" -1 -1 78 10 + +GROUPBOX DLG_NULL 75 5 +BEGIN + PROMPT 1 1 "@BCategorie" + FLAGS "R" +END + +NUMBER F_CODGR 2 +BEGIN + PROMPT 2 2 "Gruppo " + FIELD CODTAB[1,2] + FLAGS "Z" + KEY 1 + USE %CGR + INPUT CODTAB F_CODGR + DISPLAY "Codice gruppo" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODGR CODTAB + OUTPUT F_DESCGR S0 + CHECKTYPE SEARCH + MESSAGE EMPTY "",F_DESCGR +END + +STRING F_DESCGR 60 50 +BEGIN + PROMPT 20 2 "" + FLAGS "D" +END + +STRING F_CODSP 4 +BEGIN + PROMPT 2 3 "Specie " + FIELD CODTAB[3,6] + FLAGS "_" + KEY 1 + USE %CAT + INPUT CODTAB[1,2] F_CODGR + INPUT CODTAB[3,6] F_CODSP + DISPLAY "Codice gruppo " CODTAB[1,2] + DISPLAY "Codice specie " CODTAB[3,6] + DISPLAY "Descrizione @50" S0 + OUTPUT F_CODGR CODTAB[1,2] + OUTPUT F_CODSP CODTAB[3,6] + OUTPUT F_DESCSP S0 + CHECKTYPE SEARCH + MESSAGE EMPTY "",F_DESCSP + VALIDATE REQIF_FUNC 1 F_CODGR +END + +STRING F_DESCSP 60 50 +BEGIN + PROMPT 20 3 "" + FLAGS "D" +END + +NUMBER F_CODCAT 2 +BEGIN + PROMPT 2 4 "Categoria " + FIELD CODTAB[7,8] + FLAGS "UZ" + KEY 1 + USE %CCC + INPUT CODTAB[1,2] F_CODGR + INPUT CODTAB[3,6] F_CODSP + INPUT CODTAB[7,8] F_CODCAT + DISPLAY "Gruppo" CODTAB[1,2] + DISPLAY "Specie" CODTAB[3,6] + DISPLAY "Categoria" CODTAB[7,8] + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODGR CODTAB[1,2] + OUTPUT F_CODSP CODTAB[3,6] + OUTPUT F_CODCAT CODTAB[7,8] + OUTPUT F_DESCCAT S0 + CHECKTYPE REQUIRED +END + +NUMBER F_CODCAT_IN 2 +BEGIN + PROMPT 2 4 "Categoria " + FLAGS "BZ" + KEY 1 + DRIVENBY F_CODGR + DRIVENBY F_CODSP + MESSAGE COPY,F_CODCAT + CHECKTYPE REQUIRED +END + +STRING F_DESCCAT 60 50 +BEGIN + PROMPT 20 4 "" + FLAGS "BD" +END + +GROUPBOX DLG_NULL 74 8 +BEGIN + PROMPT 1 6 "@bConti per attivita'" + FLAGS "R" +END + +TEXT -1 +BEGIN + PROMPT 15 7 "@BGruppo" +END + +TEXT -1 +BEGIN + PROMPT 22 7 "@BConto" +END + +TEXT -1 +BEGIN + PROMPT 29 7 "@BSottoconto" +END + +TEXT -1 +BEGIN + PROMPT 39 7 "@BDescrizione" +END + +NUMBER F_IMM_GR 3 +BEGIN + PROMPT 2 8 "Immobilizzo " + FIELD S1[1,3] + FLAGS "Z" + USE LF_PCON SELECT CONTO="" + INPUT GRUPPO F_IMM_GR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Descrizione@50" DESCR + OUTPUT F_IMM_GR GRUPPO + ADD RUN CG0 -0 + CHECKTYPE REQUIRED +END + +NUMBER F_IMM_CO 3 +BEGIN + PROMPT 22 8 "" + FIELD S1[4,6] + FLAGS "Z" + USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO="")&&((INDBIL==1)||(INDBIL==2))) + COPY INPUT F_IMM_GR + INPUT CONTO F_IMM_CO + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Ind.Bil." INDBIL + DISPLAY "Descrizione@50" DESCR + COPY OUTPUT F_IMM_GR + OUTPUT F_IMM_CO CONTO + ADD RUN CG0 -0 + CHECKTYPE REQUIRED +END + +NUMBER F_IMM_SOT 6 +BEGIN + PROMPT 29 8 "" + FIELD S1[7,12] + FLAGS "Z" + USE LF_PCON SELECT SOTTOCONTO!="" + COPY INPUT F_IMM_CO + INPUT SOTTOCONTO F_IMM_SOT + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + COPY OUTPUT F_IMM_CO + OUTPUT F_IMM_SOT SOTTOCONTO + OUTPUT F_IMM_DES DESCR + ADD RUN CG0 -0 + CHECKTYPE REQUIRED +END + +STRING F_IMM_DES 50 32 +BEGIN + PROMPT 39 8 "" + USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" + INPUT DESCR F_IMM_DES + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT F_IMM_SOT + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +NUMBER F_FON_GR 3 +BEGIN + PROMPT 2 9 "Fondo " + FIELD S1[13,15] + FLAGS "Z" + USE LF_PCON SELECT CONTO="" + INPUT GRUPPO F_FON_GR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Descrizione@50" DESCR + OUTPUT F_FON_GR GRUPPO + ADD RUN CG0 -0 + CHECKTYPE REQUIRED +END + +NUMBER F_FON_CO 3 +BEGIN + PROMPT 22 9 "" + FIELD S1[16,18] + FLAGS "Z" + USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO="")&&((INDBIL==1)||(INDBIL==2))) + COPY INPUT F_FON_GR + INPUT CONTO F_FON_CO + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Ind.Bil." INDBIL + DISPLAY "Descrizione@50" DESCR + COPY OUTPUT F_FON_GR + OUTPUT F_FON_CO CONTO + ADD RUN CG0 -0 + CHECKTYPE REQUIRED +END + +NUMBER F_FON_SOT 6 +BEGIN + PROMPT 29 9 "" + FIELD S1[19,24] + FLAGS "Z" + USE LF_PCON SELECT SOTTOCONTO!="" + COPY INPUT F_FON_CO + INPUT SOTTOCONTO F_FON_SOT + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + COPY OUTPUT F_FON_CO + OUTPUT F_FON_SOT SOTTOCONTO + OUTPUT F_FON_DES DESCR + ADD RUN CG0 -0 + CHECKTYPE REQUIRED +END + +STRING F_FON_DES 50 32 +BEGIN + PROMPT 39 9 "" + USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" + INPUT DESCR F_FON_DES + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT F_FON_SOT + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +NUMBER F_QNOR_GR 3 +BEGIN + PROMPT 2 10 "Amm. Normali " + FIELD S1[25,27] + FLAGS "Z" + USE LF_PCON SELECT CONTO="" + INPUT GRUPPO F_QNOR_GR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Descrizione@50" DESCR + OUTPUT F_QNOR_GR GRUPPO + ADD RUN CG0 -0 + CHECKTYPE REQUIRED +END + +NUMBER F_QNOR_CO 3 +BEGIN + PROMPT 22 10 "" + FIELD S1[28,30] + FLAGS "Z" + USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO="")&&(INDBIL==3)) + COPY INPUT F_QNOR_GR + INPUT CONTO F_QNOR_CO + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Ind.Bil." INDBIL + DISPLAY "Descrizione@50" DESCR + COPY OUTPUT F_QNOR_GR + OUTPUT F_QNOR_CO CONTO + ADD RUN CG0 -0 + CHECKTYPE REQUIRED +END + +NUMBER F_QNOR_SOT 6 +BEGIN + PROMPT 29 10 "" + FIELD S1[31,36] + FLAGS "Z" + USE LF_PCON SELECT SOTTOCONTO!="" + COPY INPUT F_QNOR_CO + INPUT SOTTOCONTO F_QNOR_SOT + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + COPY OUTPUT F_QNOR_CO + OUTPUT F_QNOR_SOT SOTTOCONTO + OUTPUT F_QNOR_DES DESCR + ADD RUN CG0 -0 + CHECKTYPE REQUIRED +END + +STRING F_QNOR_DES 50 32 +BEGIN + PROMPT 39 10 "" + USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" + INPUT DESCR F_QNOR_DES + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT F_QNOR_SOT + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +NUMBER F_QANT_GR 3 +BEGIN + PROMPT 2 11 "Amm. Anticip." + FIELD S1[37,39] + FLAGS "Z" + USE LF_PCON SELECT CONTO="" + INPUT GRUPPO F_QANT_GR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Descrizione@50" DESCR + OUTPUT F_QANT_GR GRUPPO + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +NUMBER F_QANT_CO 3 +BEGIN + PROMPT 22 11 "" + FIELD S1[40,42] + FLAGS "Z" + USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO="")&&(INDBIL==3)) + COPY INPUT F_QANT_GR + INPUT CONTO F_QANT_CO + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Ind.Bil." INDBIL + DISPLAY "Descrizione@50" DESCR + COPY OUTPUT F_QANT_GR + OUTPUT F_QANT_CO CONTO + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +NUMBER F_QANT_SOT 6 +BEGIN + PROMPT 29 11 "" + FIELD S1[43,48] + FLAGS "Z" + USE LF_PCON SELECT SOTTOCONTO!="" + COPY INPUT F_QANT_CO + INPUT SOTTOCONTO F_QANT_SOT + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + COPY OUTPUT F_QANT_CO + OUTPUT F_QANT_SOT SOTTOCONTO + OUTPUT F_QANT_DES DESCR + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +STRING F_QANT_DES 50 32 +BEGIN + PROMPT 39 11 "" + USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" + INPUT DESCR F_QANT_DES + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT F_QANT_SOT + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +NUMBER F_QACC_GR 3 +BEGIN + PROMPT 2 12 "Amm. Accel. " + FIELD S1[49,51] + FLAGS "Z" + USE LF_PCON SELECT CONTO="" + INPUT GRUPPO F_QACC_GR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Descrizione@50" DESCR + OUTPUT F_QACC_GR GRUPPO + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +NUMBER F_QACC_CO 3 +BEGIN + PROMPT 22 12 "" + FIELD S1[52,54] + FLAGS "Z" + USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO="")&&(INDBIL==3)) + COPY INPUT F_QACC_GR + INPUT CONTO F_QACC_CO + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Ind.Bil." INDBIL + DISPLAY "Descrizione@50" DESCR + COPY OUTPUT F_QACC_GR + OUTPUT F_QACC_CO CONTO + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +NUMBER F_QACC_SOT 6 +BEGIN + PROMPT 29 12 "" + FIELD S1[55,60] + FLAGS "Z" + USE LF_PCON SELECT SOTTOCONTO!="" + COPY INPUT F_QACC_CO + INPUT SOTTOCONTO F_QACC_SOT + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + COPY OUTPUT F_QACC_CO + OUTPUT F_QACC_SOT SOTTOCONTO + OUTPUT F_QACC_DES DESCR + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +STRING F_QACC_DES 50 32 +BEGIN + PROMPT 39 12 "" + USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" + INPUT DESCR F_QACC_DES + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT F_QACC_SOT + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +ENDPAGE + +ENDMASK +