diff --git a/ve/velib.h b/ve/velib.h index e1ab2b5c0..072a8d3a9 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -16,11 +16,7 @@ class TViswin; #ifndef __CLIFOR_H #include "../ve/clifor.h" #endif - -#ifndef __CURRENCY_H -#include -#endif - + #ifndef __CGLIB01_H #include "../cg/cglib01.h" #endif @@ -89,23 +85,23 @@ class TDocumento_variable_field : public TVariable_field bool _dirty; public: - TObject* dup() const { return new TDocumento_variable_field(*this); } + virtual TObject* dup() const { return new TDocumento_variable_field(*this); } // @cmember segnala che il campo deve essere ricalcolato - virtual bool dirty() const { return _dirty;} + virtual bool dirty() const { return _dirty; } // @cmember assegna lo stato di campo da ricalcolare - virtual void set_dirty(bool on = TRUE) { _dirty = on;} + virtual void set_dirty(bool on = true) { _dirty = on; } // @ cmember Costruttore con una espressione di calcolo TDocumento_variable_field(const char * name, const char * expr = "", TTypeexp type = _strexpr) - : TVariable_field(name, expr, type), _dirty(TRUE) {} + : TVariable_field(name, expr, type), _dirty(true) {} // @ cmember Costruttore con una funzione TDocumento_variable_field(const char * name, VIRTUAL_GET_FUNCTION getfunc) - : TVariable_field(name, getfunc), _dirty(TRUE) {} + : TVariable_field(name, getfunc), _dirty(true) {} // @ cmember Costruttore con una espressione di calcolo TDocumento_variable_field(const char * name, const TExpression & expr, TTypeexp type = _strexpr) - : TVariable_field(name, expr, type), _dirty(TRUE) {} + : TVariable_field(name, expr, type), _dirty(true) {} // @ cmember Costruttore con un variable_field - TDocumento_variable_field(const TVariable_field & f) : TVariable_field(f), _dirty(TRUE) {} + TDocumento_variable_field(const TVariable_field & f) : TVariable_field(f), _dirty(true) {} // @ cmember Distruttore virtual ~TDocumento_variable_field() {} }; @@ -179,10 +175,10 @@ class TFormula_documento : public TRectype // velib01 TExpr_documento * _expr; protected: - int read(const char* codice, const char* expr = NULL, bool numexpr = TRUE); + int read(const char* codice, const char* expr = NULL, bool numexpr = true); public: - TObject* dup() const { return new TFormula_documento(_tab == "%FRD" ? _documento : _riga, codice(), NULL, TRUE); } + TObject* dup() const { return new TFormula_documento(_tab == "%FRD" ? _documento : _riga, codice(), NULL, true); } public: const TString& codice() const { return get("CODTAB");} @@ -193,7 +189,7 @@ public: const TString& expr_string() const { return get("S1"); } TTypeexp expr_type() const { return get_bool("B0") ? _numexpr : _strexpr;} - TFormula_documento(TTipo_formula tipo = _documento, const char* codice = NULL, const char* expr = NULL, bool numexpr = TRUE); + TFormula_documento(TTipo_formula tipo = _documento, const char* codice = NULL, const char* expr = NULL, bool numexpr = true); TFormula_documento(const TRectype& rec); virtual ~TFormula_documento(); }; @@ -299,7 +295,7 @@ public: const TString & main_print_profile() const { return get("S5").left(8); } const TString & additional_print_profile() const { return get("S5").mid(8); } - TFormula_documento * first_formula() { return succ_formula(TRUE); } + TFormula_documento * first_formula() { return succ_formula(true); } TFormula_documento * succ_formula(bool restart = FALSE); const int ncopie() const { return get_int("I0"); } @@ -407,7 +403,7 @@ public: int detraibilita() const { return get_int("I0"); } real perc_indetraibilita() const { return get_real("R0"); } - TFormula_documento* first_formula() { return succ_formula(TRUE); } + TFormula_documento* first_formula() { return succ_formula(true); } TFormula_documento* succ_formula(bool restart = FALSE); int read(const char* tiporig); @@ -441,12 +437,12 @@ protected: static void test_firm(); public: - void dirty_fields(bool dirty_document = TRUE); + void dirty_fields(bool dirty_document = true); bool doc_dependent() const; int numero() const { return get_int(RDOC_NRIGA); } void set_numero(int numero) { put(RDOC_NRIGA, numero);} bool is_generata() const { return get_bool(RDOC_GENERATA);} - void generata(bool on = TRUE) { put(RDOC_GENERATA, on);} + void generata(bool on = true) { put(RDOC_GENERATA, on);} bool is_merce() const { return tipo().tipo() == RIGA_MERCE;} bool is_spese() const { return tipo().tipo() == RIGA_SPESEDOC;} bool is_prestazione() const { return tipo().tipo() == RIGA_PRESTAZIONI;} @@ -460,7 +456,7 @@ public: bool is_checked() const { return get_bool(RDOC_CHECKED);} bool is_evadibile() const { return is_merce() || is_omaggio() || is_spese() || is_prestazione(); } bool is_evasa() const; // Ritorna vero se la riga è evasa - void checked(bool on = TRUE) { put(RDOC_CHECKED, (bool)on); } + void checked(bool on = true) { put(RDOC_CHECKED, (bool)on); } void unchecked() { checked(FALSE); } bool linked() const { return get(RDOC_DACODNUM).not_empty();} // @cmember Assegna il documento corrente @@ -501,12 +497,12 @@ public: real prezzo(bool scontato, bool lordo, int ndec = AUTO_DECIMALS) const ; real importo(bool scontato , bool lordo, int ndec = AUTO_DECIMALS) const ; - real sconto() const { return importo(FALSE,FALSE) - importo(TRUE,FALSE); } + real sconto() const { return importo(FALSE,FALSE) - importo(true,FALSE); } real iva(int ndec) const; real imponibile(bool lordo = FALSE) const; real imponibile_omaggio(int iva_calc_mode = 1) const; real iva_omaggio(int ndec, int iva_calc_mode = 1) const; - real imposta(bool round = TRUE) const; + real imposta(bool round = true) const; real provvigione(int ndec = AUTO_DECIMALS) const; real ritenuta(const char tipor = '\0', bool lordo = false, int ndec = AUTO_DECIMALS) const; @@ -548,8 +544,8 @@ protected: virtual TRiepilogo_iva & copy(const TRiepilogo_iva & a); public: - real imponibile(bool spese = TRUE) const { return _imp + (spese ? _imp_spese : ZERO);} // Imponibile - real imposta(bool spese = TRUE) const { return _iva + (spese ? _iva_spese : ZERO);} // Iva + real imponibile(bool spese = true) const { return _imp + (spese ? _imp_spese : ZERO);} // Imponibile + real imposta(bool spese = true) const { return _iva + (spese ? _iva_spese : ZERO);} // Iva real & imp() { return _imp;}; real & imp_spese() { return _imp_spese;}; real & imp_spese_row() { return _imp_spese_row;}; @@ -660,7 +656,7 @@ public: TRiga_documento& new_row(const char *tipo = NULL); virtual int read(TBaseisamfile& f, word op = _isequal, word lockop = _nolock); virtual int write(TBaseisamfile& f) const { return write_rewrite(f, FALSE); } - virtual int rewrite(TBaseisamfile& f) const { return write_rewrite(f, TRUE); } + virtual int rewrite(TBaseisamfile& f) const { return write_rewrite(f, true); } virtual int remove(TBaseisamfile& f) const; int read(char provv, int anno, const char* codnum, long numdoc, word op = _isequal, word lockop = _nolock); @@ -668,13 +664,13 @@ public: int read(word op = _isequal, word lockop = _nolock) { TLocalisamfile f(LF_DOC); return read(f, op, lockop);} int write(bool re = FALSE) const { TLocalisamfile f(LF_DOC); return write_rewrite(f, re);} - int rewrite() const { return write(TRUE); } + int rewrite() const { return write(true); } int remove() const { TLocalisamfile f(LF_DOC); return remove(f);} int decimals(bool price = FALSE) const; void flush_rows(); - TProvvigioni_agente& calc_provvigioni(const bool generata = TRUE); + TProvvigioni_agente& calc_provvigioni(const bool generata = true); int write_provvigioni() { return calc_provvigioni().write();} char tipo_numerazione() const { return get_char("PROVV"); } @@ -828,7 +824,7 @@ public: void occ2mask(); void cli2mask(); - void doc2mask(bool reload_clifo = TRUE); + void doc2mask(bool reload_clifo = true); void mask2doc(); void update_giacenza(); @@ -875,7 +871,7 @@ class TDocumentoEsteso : public TDocumento // membri per il calcolo del riepilogo IVA int _sum_filter; // Filtro corrente della riga TRiepilogo_iva in corso di stampa (-1 se non ha ancora calcolato la tabella) - bool _sum_selected; // TRUE se ha selezionato una riga del riepilogo, funge da semaforo per leggere la prossima + bool _sum_selected; // true se ha selezionato una riga del riepilogo, funge da semaforo per leggere la prossima TString_array _order_array; // Array di TToken_string contenenti i codici IVA soddisfacenti ad ogni tipo di filtro TAssoc_array _summary_table; // Array associativo contenete imonibili ed imposte pronte per la stampa; TArray _summary_array; // Array dove vengono memorizzate le imposte/imponibili per riga @@ -890,7 +886,7 @@ public: const bool summary_compiled() { return _sum_filter > -1; } void compile_summary(); // Aggiorna la tabella riepilogativa void summary_filter(byte selector); // filtra la tabellina secondo il filtro corrente se non e' gia' stato fatto - void summary_reset(bool force=FALSE); // riposiziona l'array dei codici IVA (_order_array). Se il parametro e' TRUE forza il ricalcolo della tabella + void summary_reset(bool force=FALSE); // riposiziona l'array dei codici IVA (_order_array). Se il parametro e' true forza il ricalcolo della tabella void summary_set_next(); // seleziona il prossimo elemento del filtro const TRiepilogo_iva& sum_current() const { return _sum_current; } // ritorna la riga corrente del filtro corrente const char * summary_get(const TString& w); // ritorna l'informazione richiesta estratta dall'elemento corrente diff --git a/ve/velib02.cpp b/ve/velib02.cpp index d63c9f589..3ab382a10 100755 --- a/ve/velib02.cpp +++ b/ve/velib02.cpp @@ -765,7 +765,7 @@ const TString & TRiga_documento::codice_costo() const const TString & TRiga_documento::codice_commessa() const { - const TString & cod_cms = get(RDOC_CODCMS); + const TString& cod_cms = get(RDOC_CODCMS); return cod_cms.empty() ? doc().get(DOC_CODCMS) : cod_cms; } @@ -803,7 +803,7 @@ void TRiga_documento::put_str(const char* fieldname, const char* val) { if (strcmp(fieldname, RDOC_TIPORIGA) == 0) { - const TString16 v(val); + const TString4 v(val); if (TRectype::get(RDOC_TIPORIGA) != v) { TAuto_variable_rectype::put_str(fieldname, v); diff --git a/ve/velib03.cpp b/ve/velib03.cpp index 0be22041a..8524c0384 100755 --- a/ve/velib03.cpp +++ b/ve/velib03.cpp @@ -799,9 +799,9 @@ void TDocumento::dirty_fields() for (int i = loaded_rows(); i > 0; i--) { TRiga_documento & r = (TRiga_documento &) row(i); - r.dirty_fields(FALSE); + r.dirty_fields(false); } - _dirty_deny = TRUE; + _dirty_deny = true; } } diff --git a/ve/velib04f.cpp b/ve/velib04f.cpp index 941b3f8fb..5384db5a5 100755 --- a/ve/velib04f.cpp +++ b/ve/velib04f.cpp @@ -285,9 +285,9 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri if (ok) { - const TString riga_cms = riga.get(RDOC_CODCMS); - const TString riga_fsc = riga.get(RDOC_FASCMS); - const TString riga_cos = riga.get(RDOC_CODCOSTO); + const TString riga_cms = riga.codice_commessa(); + const TString riga_fsc = riga.fase_commessa(); + const TString riga_cos = riga.codice_costo(); const bool riga_any = riga_cms.not_empty() || riga_fsc.not_empty() || riga_cos.not_empty(); if (contanal.blank()) // Non ho trovato il conto in anagrafica ... @@ -400,6 +400,13 @@ bool TContabilizzazione_analitica::elabora(const TDocumento& doc, long numreg_cg if (can_write) { + bool dare = doc.get_char(DOC_TIPOCF) == 'F'; + if (doc.is_nota_credito()) + dare= !dare; + const char sezione = dare ? 'D' : 'A'; + + TImporto totdoc; + TGeneric_distrib esso(valore, decimals); init_distrib(conti, esso); FOR_EACH_ARRAY_ROW(conti, i, row) @@ -419,12 +426,21 @@ bool TContabilizzazione_analitica::elabora(const TDocumento& doc, long numreg_cg rmov.put(RMOVANA_CODCMS, row->get()); rmov.put(RMOVANA_CODFASE, row->get()); rmov.put(RMOVANA_CODCCOSTO,row->get()); - rmov.put(RMOVANA_IMPORTO, esso.get()); - rmov.put(RMOVANA_SEZIONE, 'D'); + + TImporto imp(sezione, real(esso.get())); + imp.normalize(); + rmov.put(RMOVANA_SEZIONE, imp.sezione()); + rmov.put(RMOVANA_IMPORTO, imp.valore()); + + totdoc += imp; } if (mov != NULL) { + totdoc.normalize(); + mov->put(MOVANA_SEZIONE, totdoc.sezione()); + mov->put(MOVANA_TOTDOC, totdoc.valore()); + TLocalisamfile movana(LF_MOVANA); mov->write(movana); delete mov; diff --git a/ve/velib06a.cpp b/ve/velib06a.cpp index 3fea7c614..f066a7aa9 100755 --- a/ve/velib06a.cpp +++ b/ve/velib06a.cpp @@ -213,10 +213,10 @@ bool condpag_hndl( TMask_field& field, KEY key ) doc.put(DOC_TIPOCF, m.get(F_TIPOCF)); doc.put(DOC_CODCF, m.get(F_CODCF)); TPagamento& pag = doc.pagamento(); - pag.set_total(real(100), real(10), real(10)); + pag.set_total(CENTO, real(10), real(10)); pag.set_rate_auto(); - int numrate = pag.n_rate( ); + const int numrate = pag.n_rate( ); for(int i = 0; i < MAX_VIS_RATE; i++) { if (i < numrate)