Patch level : 2.2
Files correlati : ve0 ve6 Ricompilazione Demo : [ ] Commento : Corretta contabilizzazione analitica dei documenti git-svn-id: svn://10.65.10.50/trunk@13222 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
3b0f6d38b7
commit
9191d73f21
52
ve/velib.h
52
ve/velib.h
@ -17,10 +17,6 @@ class TViswin;
|
||||
#include "../ve/clifor.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CURRENCY_H
|
||||
#include <currency.h>
|
||||
#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; }
|
||||
// @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
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user