diff --git a/ve/velib.h b/ve/velib.h
index ef3eb6902..64453120c 100755
--- a/ve/velib.h
+++ b/ve/velib.h
@@ -16,11 +16,11 @@ class TViswin;
#ifndef __CLIFOR_H
#include "../ve/clifor.h"
#endif
-
+
#ifndef __CGLIB01_H
#include "../cg/cglib01.h"
#endif
-
+
#ifndef __CGPAGAME_H
#include "../cg/cgpagame.h"
#endif
@@ -81,780 +81,779 @@ void set_curr_um(const TString& um);
class TDocumento_variable_field : public TVariable_field
-{
- bool _dirty;
+{
+ bool _dirty;
- public:
- virtual TObject* dup() const { return new TDocumento_variable_field(*this); }
+ public:
+ 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) {}
+// @ 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) {}
// @ cmember Costruttore con una funzione
- TDocumento_variable_field(const char * name, VIRTUAL_GET_FUNCTION getfunc)
- : 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) {}
+ TDocumento_variable_field(const char * name, VIRTUAL_GET_FUNCTION getfunc)
+ : 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) {}
// @ cmember Costruttore con un variable_field
- TDocumento_variable_field(const TVariable_field & f) : TVariable_field(f), _dirty(true) {}
-// @ cmember Distruttore
- virtual ~TDocumento_variable_field() {}
+ TDocumento_variable_field(const TVariable_field & f) : TVariable_field(f), _dirty(true) {}
+// @ cmember Distruttore
+ virtual ~TDocumento_variable_field() {}
};
-
-class TSpesa_prest : public TRectype // velib01
-{
+
+class TSpesa_prest : public TRectype // velib01
+{
protected:
public:
- TObject* dup() const { return new TSpesa_prest(codice()); }
+ TObject* dup() const { return new TSpesa_prest(codice()); }
-public:
- int read(const char* codice);
+public:
+ int read(const char* codice);
- const TString& codice() const { return get("CODTAB");}
- const TString& descrizione() const { return get("S0"); }
- const TString& field_perc() const { return get("S5"); }
- const TString & um() const { return get("S7"); }
- const TString& cod_iva() const { return get("S3").left(4); }
+ const TString& codice() const { return get("CODTAB");}
+ const TString& descrizione() const { return get("S0"); }
+ const TString& field_perc() const { return get("S5"); }
+ const TString & um() const { return get("S7"); }
+ const TString& cod_iva() const { return get("S3").left(4); }
const TString& revenue() const { return get("S5"); }
- real prezzo() const { return get_real("R0"); }
- real qta() const { return get_real("R1"); }
- real perc() const { return get_real("R2"); }
- char tipo() const { return get_char("S6"); }
- char tipo_ritenuta() const { return get_char("S9"); }
- const TString & tipo_riga() const { return get("S8"); }
-
- TSpesa_prest(const char* codice = NULL, char tipo = 'S');
- TSpesa_prest(const TRectype& rec);
- virtual ~TSpesa_prest() {}
+ real prezzo() const { return get_real("R0"); }
+ real qta() const { return get_real("R1"); }
+ real perc() const { return get_real("R2"); }
+ char tipo() const { return get_char("S6"); }
+ char tipo_ritenuta() const { return get_char("S9"); }
+ const TString & tipo_riga() const { return get("S8"); }
+
+ TSpesa_prest(const char* codice = NULL, char tipo = 'S');
+ TSpesa_prest(const TRectype& rec);
+ virtual ~TSpesa_prest() {}
};
-class TExpr_documento : public TExpression // velib01
-{
- TDocumento * _doc;
- TRiga_documento * _row;
-
-protected:
- virtual void evaluate_user_func(int index, int nparms, TEval_stack & stack, TTypeexp type) const;
- virtual int parse_user_func(const char * name, int nparms) const;
+class TExpr_documento : public TExpression // velib01
+{
+ TDocumento * _doc;
+ TRiga_documento * _row;
+
+protected:
+ virtual void evaluate_user_func(int index, int nparms, TEval_stack & stack, TTypeexp type) const;
+ virtual int parse_user_func(const char * name, int nparms) const;
-public:
+public:
// @cmember Duplica l'espressione
- virtual TObject* dup() const;
-
- // @cmember Assegna il documento corrente
- void set_doc(TDocumento* doc) { _doc = doc; }
- // @cmember Assegna il documento corrente
- void set_row(TRiga_documento* row) { _row = row; }
- // @cmember Costruttore (assegna l'estressione e il suo tipo)
- TExpr_documento(const char* expression, TTypeexp type = _numexpr,
- TDocumento* doc = NULL, TRiga_documento * row = NULL);
- // @cmember Costruttore (assegna il tipo dell'istruzione)
- TExpr_documento(TTypeexp type = _numexpr,
- TDocumento* doc = NULL, TRiga_documento* row = NULL)
- : TExpression(type, true), _doc(doc), _row(row) {}
- // @cmember Costruttore di copia
- TExpr_documento(const TExpr_documento & expr)
- : TExpression(expr), _doc(expr._doc), _row(expr._row) {}
+ virtual TObject* dup() const;
- // @cmember Distruttore
- virtual ~TExpr_documento() {}
+ // @cmember Assegna il documento corrente
+ void set_doc(TDocumento* doc) { _doc = doc; }
+ // @cmember Assegna il documento corrente
+ void set_row(TRiga_documento* row) { _row = row; }
+ // @cmember Costruttore (assegna l'estressione e il suo tipo)
+ TExpr_documento(const char* expression, TTypeexp type = _numexpr,
+ TDocumento* doc = NULL, TRiga_documento * row = NULL);
+ // @cmember Costruttore (assegna il tipo dell'istruzione)
+ TExpr_documento(TTypeexp type = _numexpr,
+ TDocumento* doc = NULL, TRiga_documento* row = NULL)
+ : TExpression(type, true), _doc(doc), _row(row) {}
+ // @cmember Costruttore di copia
+ TExpr_documento(const TExpr_documento & expr)
+ : TExpression(expr), _doc(expr._doc), _row(expr._row) {}
+
+ // @cmember Distruttore
+ virtual ~TExpr_documento() {}
};
enum TTipo_formula { _documento, _riga };
-class TFormula_documento : public TRectype // velib01
-{
- TString16 _tab;
- TExpr_documento * _expr;
-
+class TFormula_documento : public TRectype // velib01
+{
+ TString16 _tab;
+ 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");}
- const TString& name() const { return codice();}
- TExpr_documento* expr() const { return _expr;}
-
- const TString& descrizione() const { return get("S0"); }
- 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(const TRectype& rec);
- virtual ~TFormula_documento();
+public:
+ const TString& codice() const { return get("CODTAB");}
+ const TString& name() const { return codice();}
+ TExpr_documento* expr() const { return _expr;}
+
+ const TString& descrizione() const { return get("S0"); }
+ 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(const TRectype& rec);
+ virtual ~TFormula_documento();
};
-class TTipo_documento : public TRectype // velib03
-{
- static TAssoc_array _formule_documento;
- TToken_string _formule;
- TString_array _keys_descrs; // Tipi riga per listbox
- TString_array _defaults; // Defaults per i campi della maschera
- TString_array _sheet_columns; // Colonne dello spreadsheet
- TString_array _handlers; // Handlers
- TString16 _imponibile;
- TString16 _imposta;
- TString16 _totale;
- TString16 _totale_netto;
- TString16 _basesconto;
- TString16 _spese;
- TString16 _totprovv;
- TString16 _valore;
- TString16 _totvalres;
- TString16 _totvalore;
- TString16 _totale_cont;
- TString16 _field_prezzo;
- TString16 _field_qta, _field_qtaevasa; // Veri campi Quantità e Quantità Evasa
- TString _str_desc_doc, _str_desc_rdoc;
+class TTipo_documento : public TRectype // velib03
+{
- char _tipocf;
- char _check_qta;
- bool _cnt_prezzi, _show_evaded_lines;
+ static TAssoc_array _formule_documento;
+ TToken_string _formule;
+ TString_array _keys_descrs; // Tipi riga per listbox
+ TString_array _defaults; // Defaults per i campi della maschera
+ TString_array _sheet_columns; // Colonne dello spreadsheet
+ TString_array _handlers; // Handlers
+ TString16 _imponibile;
+ TString16 _imposta;
+ TString16 _totale;
+ TString16 _totale_netto;
+ TString16 _basesconto;
+ TString16 _spese;
+ TString16 _totprovv;
+ TString16 _valore;
+ TString16 _totvalres;
+ TString16 _totvalore;
+ TString16 _totale_cont;
+ TString16 _field_prezzo;
+ TString16 _field_qta, _field_qtaevasa; // Veri campi Quantità e Quantità Evasa
+ TString _str_desc_doc, _str_desc_rdoc;
+
+ char _tipocf;
+ char _check_qta;
+ bool _cnt_prezzi, _show_evaded_lines;
+
+protected:
+ void add_formula_if_needed(TConfig& profile, TString& variable, const char* varname, const char* formula);
+ void read_formule();
+ int read(const char* tipodoc);
-
-protected:
- void add_formula_if_needed(TConfig& profile, TString& variable, const char* varname, const char* formula);
- void read_formule();
- int read(const char* tipodoc);
-
public:
- TObject* dup() const { return new TTipo_documento(codice()); }
-
+ TObject* dup() const { return new TTipo_documento(codice()); }
enum { _altro, _bolla, _fattura, _ordine};
-public:
-// const TString& profile_name() const { return get("S4"); }
- const TFilename& profile_name(TFilename& name) const;
-
- // Funzioni che effettuano la cache di importanti valori contenuti nel profilo
- const char tipocf() const;
- void set_defaults(TMask& m) const;
- const TString_array& keys_descrs();
- const TString_array& sheet_columns() const;
- const TString_array& handlers() const;
-
- const TString& mask_name() const { return get("S4");}
- const TString& causale() const { return get("S6"); }
- int tipo() const { return get_int("I1"); }
- const TString& codice() const { return get("CODTAB");}
-
- bool is_generic() const { return tipo() == _altro; }
- bool is_fattura() const { return tipo() == _fattura; }
- bool is_bolla() const { return tipo() == _bolla; }
- bool is_ordine() const { return tipo() == _ordine; }
- bool controllo_prezzi() const { return _cnt_prezzi; }
- const char * field_prezzo() const { return _field_prezzo; }
- const TString& field_qta() const { return _field_qta; }
- const TString& field_qtaevasa() const { return _field_qtaevasa; }
- bool check_giac() const { return _check_qta == 'G'; }
- bool check_disp() const { return _check_qta == 'D'; }
+public:
+ const TFilename& profile_name(TFilename& name) const;
+
+ // Funzioni che effettuano la cache di importanti valori contenuti nel profilo
+ const char tipocf() const;
+ void set_defaults(TMask& m) const;
+ const TString_array& keys_descrs();
+ const TString_array& sheet_columns() const;
+ const TString_array& handlers() const;
-
- const TString & descrizione() const { return get("S0"); }
- const TString & riferimento(const TDocumento& doc, TString& rif) const;
- const TString & imponibile() const { return _imponibile;}
- const TString & imposta() const { return _imposta;}
- const TString & totale_doc() const { return _totale;}
- const TString & totale_netto() const { return _totale_netto; }
- const TString & totale_doc_cont() const { return _totale_cont;}
- const TString & basesconto() const { return _basesconto;}
- const TString & spese() const { return _spese;}
- const TString & totprovv() const { return _totprovv;}
- const TString & valore() const { return _valore;}
- const TString & totvalres() const { return _totvalres;}
- const TString & totvalore() const { return _totvalore;}
- bool mov_mag() const { return get_bool("B1"); }
- bool statistiche() const { return get_bool("B2"); }
- bool provvigioni() const { return get_bool("B3"); }
- const char stato_mov_iniziale() const {return get_char("S7"); }
- const char stato_mov_finale() const {return get_char("S8"); }
- const char stato_provvigioni() const {return get_char("S3"); }
- const TString & caus_mov() const {return get("S9"); }
- const TString & caus_anticipo() const {return get("S10"); }
- const TString & tipi_iva_validi() const {return get("S11"); }
- const char stato_finale_inserimento() const {return get("S2")[0]; }
- const char stato_finale_stampa() const {return get("S2")[1]; }
- const char stato_bloccato() const {return get("S2")[2]; }
- const TString & stati_iniziali_modifica() const {return get("S2").mid(9,20); }
- const TString & stati_iniziali_cancellazione() const {return get("S2").mid(29,20); }
- const TString & stati_iniziali_stampa() const {return get("S2").mid(49,20); }
- bool stato_with_mov_mag(const char stato) const;
- bool scarica_residuo() const;
- bool clifo_optional() const { return get_bool("B5"); }
+ const TString& mask_name() const { return get("S4");}
+ const TString& causale() const { return get("S6"); }
+ int tipo() const { return get_int("I1"); }
+ const TString& codice() const { return get("CODTAB");}
+
+ bool is_generic() const { return tipo() == _altro; }
+ bool is_fattura() const { return tipo() == _fattura; }
+ bool is_bolla() const { return tipo() == _bolla; }
+ bool is_ordine() const { return tipo() == _ordine; }
+ bool controllo_prezzi() const { return _cnt_prezzi; }
+ const char * field_prezzo() const { return _field_prezzo; }
+ const TString& field_qta() const { return _field_qta; }
+ const TString& field_qtaevasa() const { return _field_qtaevasa; }
+ bool check_giac() const { return _check_qta == 'G'; }
+ bool check_disp() const { return _check_qta == 'D'; }
+
+ const TString & descrizione() const { return get("S0"); }
+ const TString & riferimento(const TDocumento& doc, TString& rif) const;
+ const TString & imponibile() const { return _imponibile;}
+ const TString & imposta() const { return _imposta;}
+ const TString & totale_doc() const { return _totale;}
+ const TString & totale_netto() const { return _totale_netto; }
+ const TString & totale_doc_cont() const { return _totale_cont;}
+ const TString & basesconto() const { return _basesconto;}
+ const TString & spese() const { return _spese;}
+ const TString & totprovv() const { return _totprovv;}
+ const TString & valore() const { return _valore;}
+ const TString & totvalres() const { return _totvalres;}
+ const TString & totvalore() const { return _totvalore;}
+ bool mov_mag() const { return get_bool("B1"); }
+ bool statistiche() const { return get_bool("B2"); }
+ bool provvigioni() const { return get_bool("B3"); }
+ const char stato_mov_iniziale() const {return get_char("S7"); }
+ const char stato_mov_finale() const {return get_char("S8"); }
+ const char stato_provvigioni() const {return get_char("S3"); }
+ const TString & caus_mov() const {return get("S9"); }
+ const TString & caus_anticipo() const {return get("S10"); }
+ const TString & tipi_iva_validi() const {return get("S11"); }
+ const char stato_finale_inserimento() const {return get("S2")[0]; }
+ const char stato_finale_stampa() const {return get("S2")[1]; }
+ const char stato_bloccato() const {return get("S2")[2]; }
+ const TString & stati_iniziali_modifica() const {return get("S2").mid(9,20); }
+ const TString & stati_iniziali_cancellazione() const {return get("S2").mid(29,20); }
+ const TString & stati_iniziali_stampa() const {return get("S2").mid(49,20); }
+ bool stato_with_mov_mag(const char stato) const;
+ bool scarica_residuo() const;
+ bool clifo_optional() const { return get_bool("B5"); }
bool printable() const { return !get("S5").empty(); }
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 * succ_formula(bool restart = FALSE);
- const int ncopie() const { return get_int("I0"); }
- bool spese_aut() const { return get_bool("B0"); }
- bool nota_credito() const { return get_bool("B7"); }
- bool add_conai() const { return get_bool("B6"); }
- bool calcolo_lordo() const { return get_bool("B8"); }
- bool fattura_commerciale() const { return get_bool("B9"); }
-
- const TString& stringa_descrizione_documento() const { return _str_desc_doc; }
- const TString& stringa_descrizione_riga() const { return _str_desc_rdoc; }
- bool mostra_righe_evase_in_elaborazione() const { return _show_evaded_lines; }
-
- TTipo_documento(const char* tipodoc = NULL);
- TTipo_documento(const TRectype& rec);
- virtual ~TTipo_documento();
+ TFormula_documento * first_formula() { return succ_formula(true); }
+ TFormula_documento * succ_formula(bool restart = FALSE);
+
+ const int ncopie() const { return get_int("I0"); }
+ bool spese_aut() const { return get_bool("B0"); }
+ bool nota_credito() const { return get_bool("B7"); }
+ bool add_conai() const { return get_bool("B6"); }
+ bool calcolo_lordo() const { return get_bool("B8"); }
+ bool fattura_commerciale() const { return get_bool("B9"); }
+
+ const TString& stringa_descrizione_documento() const { return _str_desc_doc; }
+ const TString& stringa_descrizione_riga() const { return _str_desc_rdoc; }
+ bool mostra_righe_evase_in_elaborazione() const { return _show_evaded_lines; }
+
+ TTipo_documento(const char* tipodoc = NULL);
+ TTipo_documento(const TRectype& rec);
+ virtual ~TTipo_documento();
};
-
+
class TTipi_documento_cache : public TRecord_cache
{
protected:
- virtual TObject* rec2obj(const TRectype& rec) const;
+ virtual TObject* rec2obj(const TRectype& rec) const;
public:
- TTipo_documento& tipo(const char* key);
- TTipi_documento_cache();
- virtual ~TTipi_documento_cache() { }
+ TTipo_documento& tipo(const char* key);
+ TTipi_documento_cache();
+ virtual ~TTipi_documento_cache() { }
};
class TCodice_numerazione : public TRectype
{
- int _status;
+ int _status;
public:
- TObject* dup() const { return new TCodice_numerazione(*this); }
+ TObject* dup() const { return new TCodice_numerazione(*this); }
public:
- int read(const char* cod);
- const TString& codice() const { return get("CODTAB"); }
- const TString& descrizione() const { return get("S0"); }
- const TString& prefisso() const { return get("S6"); }
- const TString& postfisso() const { return get("S7"); }
- const bool num_provv() const { return get_bool("B0"); }
- const bool auto_num() const { return get_bool("B1"); }
- const bool dont_test_datadoc() const { return get_bool("B2"); }
- const bool fattura_emettere_ricevere() const { return get_bool("B3"); }
- const bool save_and_new() const { return get_bool("B4"); }
- const bool test_eser() const { return ! get_bool("B5"); }
+ int read(const char* cod);
+ const TString& codice() const { return get("CODTAB"); }
+ const TString& descrizione() const { return get("S0"); }
+ const TString& prefisso() const { return get("S6"); }
+ const TString& postfisso() const { return get("S7"); }
+ const bool num_provv() const { return get_bool("B0"); }
+ const bool auto_num() const { return get_bool("B1"); }
+ const bool dont_test_datadoc() const { return get_bool("B2"); }
+ const bool fattura_emettere_ricevere() const { return get_bool("B3"); }
+ const bool save_and_new() const { return get_bool("B4"); }
+ const bool test_eser() const { return ! get_bool("B5"); }
- const TString & tipo_doc(int i) const;
- int ntipi_doc() const;
-
- void complete_num(long num, TString& codnum) const;
- bool ok() const { return !empty(); }
- TCodice_numerazione(const char* codnum = NULL);
- TCodice_numerazione(const TRectype& rec);
- virtual ~TCodice_numerazione();
+ const TString & tipo_doc(int i) const;
+ int ntipi_doc() const;
+
+ void complete_num(long num, TString& codnum) const;
+ bool ok() const { return !empty(); }
+ TCodice_numerazione(const char* codnum = NULL);
+ TCodice_numerazione(const TRectype& rec);
+ virtual ~TCodice_numerazione();
};
-class TTipo_riga_documento : public TRectype // velib02
-{
- static TAssoc_array _formule_riga;
- TToken_string _formule;
+class TTipo_riga_documento : public TRectype // velib02
+{
+ static TAssoc_array _formule_riga;
+ TToken_string _formule;
TString_array _defaults;
- TString16 _imponibile;
- TString16 _quant;
- TString16 _quantevasa;
- TString16 _qtares;
- TString16 _valore;
- TString16 _valres;
-
- TString16 _field_provv;
- TString16 _field_qta, _field_qtaevasa; // Veri campi Quantità e Quantità Evasa
-
- int _decrp, _incrp;
+ TString16 _imponibile;
+ TString16 _quant;
+ TString16 _quantevasa;
+ TString16 _qtares;
+ TString16 _valore;
+ TString16 _valres;
+
+ TString16 _field_provv;
+ TString16 _field_qta, _field_qtaevasa; // Veri campi Quantità e Quantità Evasa
+
+ int _decrp, _incrp;
protected:
- void read_formule();
- void add_formula_if_needed(TConfig& profile, TString& variable,
- const char* varname, const char* formula);
+ void read_formule();
+ void add_formula_if_needed(TConfig& profile, TString& variable,
+ const char* varname, const char* formula);
public:
- TObject* dup() const { return new TTipo_riga_documento(codice()); }
+ TObject* dup() const { return new TTipo_riga_documento(codice()); }
-public:
- const TFilename& profile_name(TFilename& name) const;
- const TString& mask_name(TString& name) const;
- const TString& codice() const { return get("CODTAB");}
-
- const TString& descrizione() const { return get("S0"); }
- char tipo() const { return get_char("S7"); }
-
- const TString& imponibile() const { return _imponibile;}
- const TString& quant() const { return _quant;}
- const TString& quantevasa() const { return _quantevasa;}
- const TString& field_qta() const { return _field_qta;}
- const TString& field_qtaevasa() const { return _field_qtaevasa;}
+public:
+ const TFilename& profile_name(TFilename& name) const;
+ const TString& mask_name(TString& name) const;
+ const TString& codice() const { return get("CODTAB");}
- const TString& provv() const { return _field_provv;}
- const int incr_perc_prezzo() const { return _incrp;}
- const int decr_perc_prezzo() const { return _decrp;}
+ const TString& descrizione() const { return get("S0"); }
+ char tipo() const { return get_char("S7"); }
- bool formfeed() const { return get_bool("B0"); }
- int detraibilita() const { return get_int("I0"); }
- real perc_indetraibilita() const { return get_real("R0"); }
+ const TString& imponibile() const { return _imponibile;}
+ const TString& quant() const { return _quant;}
+ const TString& quantevasa() const { return _quantevasa;}
+ const TString& field_qta() const { return _field_qta;}
+ const TString& field_qtaevasa() const { return _field_qtaevasa;}
- TFormula_documento* first_formula() { return succ_formula(true); }
- TFormula_documento* succ_formula(bool restart = FALSE);
-
- int read(const char* tiporig);
- void set_defaults(TSheet_field& s, int row) const;
+ const TString& provv() const { return _field_provv;}
+ const int incr_perc_prezzo() const { return _incrp;}
+ const int decr_perc_prezzo() const { return _decrp;}
- TTipo_riga_documento(const char* tiporig = NULL);
- TTipo_riga_documento(const TRectype& rec);
- virtual ~TTipo_riga_documento() { }
+ bool formfeed() const { return get_bool("B0"); }
+ 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* succ_formula(bool restart = FALSE);
+
+ int read(const char* tiporig);
+ void set_defaults(TSheet_field& s, int row) const;
+
+ TTipo_riga_documento(const char* tiporig = NULL);
+ TTipo_riga_documento(const TRectype& rec);
+ virtual ~TTipo_riga_documento() { }
};
-class TRiga_documento : public TAuto_variable_rectype // velib02
+class TRiga_documento : public TAuto_variable_rectype // velib02
{
- TDocumento* _doc;
- static long _firm;
- static TAssoc_array _tipi;
- static TAssoc_array _spese;
- static TAssoc_array _ive;
- static TCache_articoli * _articoli;
- static int _iva_calc_mode;
+ TDocumento* _doc;
+ static long _firm;
+ static TAssoc_array _tipi;
+ static TAssoc_array _spese;
+ static TAssoc_array _ive;
+ static TCache_articoli * _articoli;
+ static int _iva_calc_mode;
static bool _rit_calc;
-protected:
- // @cmember Setta il contenuto del campo
(non tipizzata)
- virtual void put_str(const char* fieldname, const char* val);
+protected:
+ // @cmember Setta il contenuto del campo
(non tipizzata)
+ virtual void put_str(const char* fieldname, const char* val);
- virtual TRiga_documento & copy(const TRiga_documento & r);
- TObject* dup() const { return new TRiga_documento(*this); }
- virtual void set_variables(TExpression * e) const ;
-
- static void test_firm();
-
-public:
- 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);}
- 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;}
- bool is_risorsa() const { return tipo().tipo() == RIGA_RISORSE;}
- bool is_attrezzatura() const { return tipo().tipo() == RIGA_ATTREZZATURE;}
- bool is_sconto() const {return tipo().tipo() == RIGA_SCONTI;}
- bool is_sconto_perc() const { return is_sconto() && get(RDOC_SCONTO).not_empty();}
- bool is_omaggio() const { return tipo().tipo() == RIGA_OMAGGI;}
- bool is_descrizione() const { return tipo().tipo() == RIGA_DESCRIZIONI;}
- bool is_articolo() const;
- 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 unchecked() { checked(FALSE); }
- bool linked() const { return get(RDOC_DACODNUM).not_empty();}
- // @cmember Assegna il documento corrente
- void set_doc(TDocumento * doc) { _doc = doc; }
- const TDocumento & doc() const { CHECK(_doc, "Documento nullo"); return *_doc;}
+ virtual TRiga_documento & copy(const TRiga_documento & r);
+ TObject* dup() const { return new TRiga_documento(*this); }
+ virtual void set_variables(TExpression * e) const ;
- virtual void zero(const char * fieldname);
- virtual void zero(char c = '\0');
- // row -> sheet
- void autoload( TSheet_field& f);
- // sheet -> row
- void autosave( TSheet_field& f);
+ static void test_firm();
+
+public:
+ 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);}
+ 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;}
+ bool is_risorsa() const { return tipo().tipo() == RIGA_RISORSE;}
+ bool is_attrezzatura() const { return tipo().tipo() == RIGA_ATTREZZATURE;}
+ bool is_sconto() const {return tipo().tipo() == RIGA_SCONTI;}
+ bool is_sconto_perc() const { return is_sconto() && get(RDOC_SCONTO).not_empty();}
+ bool is_omaggio() const { return tipo().tipo() == RIGA_OMAGGI;}
+ bool is_descrizione() const { return tipo().tipo() == RIGA_DESCRIZIONI;}
+ bool is_articolo() const;
+ 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 unchecked() { checked(FALSE); }
+ bool linked() const { return get(RDOC_DACODNUM).not_empty();}
+ // @cmember Assegna il documento corrente
+ void set_doc(TDocumento * doc) { _doc = doc; }
+ const TDocumento & doc() const { CHECK(_doc, "Documento nullo"); return *_doc;}
+
+ virtual void zero(const char * fieldname);
+ virtual void zero(char c = '\0');
+ // row -> sheet
+ void autoload( TSheet_field& f);
+ // sheet -> row
+ void autosave( TSheet_field& f);
+
+ const TTipo_riga_documento & tipo() const;
+ const TSpesa_prest & spesa() const;
+ static const TCodiceIVA & iva(const char * codice);
+ const TCodiceIVA & iva() const {const TString16 cod(get(RDOC_CODIVA)); return iva(cod);}
+
+ const bool tipo_valido() const { return get(RDOC_TIPORIGA).not_empty(); }
+ void set_tipo(const char * tipo) { put(RDOC_TIPORIGA, tipo);}
+ bool sola_descrizione() const;
+ void forza_sola_descrizione();
+
+ void set_original_rdoc_key(const TRectype& orig, int depth = 0);
+ void reset_original_rdoc_key();
+ const TRectype* find_original_rdoc() const;
+
+ virtual TRiga_documento& operator =(const TRiga_documento& r) { return copy(r);}
+ virtual TRectype& operator =(const TRectype & r);
+ virtual TRectype& operator =(const char * r);
- const TTipo_riga_documento & tipo() const;
- const TSpesa_prest & spesa() const;
- static const TCodiceIVA & iva(const char * codice);
- const TCodiceIVA & iva() const {const TString16 cod(get(RDOC_CODIVA)); return iva(cod);}
-
- const bool tipo_valido() const { return get(RDOC_TIPORIGA).not_empty(); }
- void set_tipo(const char * tipo) { put(RDOC_TIPORIGA, tipo);}
- bool sola_descrizione() const;
- void forza_sola_descrizione();
-
- void set_original_rdoc_key(const TRectype& orig, int depth = 0);
- void reset_original_rdoc_key();
- const TRectype* find_original_rdoc() const;
-
- virtual TRiga_documento& operator =(const TRiga_documento& r) { return copy(r);}
- virtual TRectype& operator =(const TRectype & r);
- virtual TRectype& operator =(const char * r);
-
void cost2revenue();
- bool raggruppabile(const TRiga_documento& r, TToken_string& campi) const;
- TRiga_documento& operator +=(const TRiga_documento& r);
-
- void reset_fields(TAuto_variable_rectype& rec) { rec.remove_field(); }
- void set_fields(TAuto_variable_rectype& rec);
+ bool raggruppabile(const TRiga_documento& r, TToken_string& campi) const;
+ TRiga_documento& operator +=(const TRiga_documento& r);
- 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 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 provvigione(int ndec = AUTO_DECIMALS) const;
+ void reset_fields(TAuto_variable_rectype& rec) { rec.remove_field(); }
+ void set_fields(TAuto_variable_rectype& rec);
+
+ 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 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 provvigione(int ndec = AUTO_DECIMALS) const;
real ritenuta(const char tipor = '\0', bool lordo = false, int ndec = AUTO_DECIMALS) const;
-
- const TString& field_qta() const;
- const TString& field_qtaevasa() const;
- real quantita() const;
- real qtaevasa() const;
- real qtaresidua() const;
- real valore(bool totale, int ndec) const;
- const TString & codice_costo() const;
- const TString & codice_commessa() const;
- const TString & fase_commessa() const;
- TArticolo_giacenza * articolo() const;
- TRiga_documento(TDocumento* doc, const char* tipo = NULL);
- TRiga_documento(const TRiga_documento & row);
- TRiga_documento(const TRiga_documento& rec, TDocumento* doc,
- const char* tipo = NULL);
- virtual ~TRiga_documento() {}
+ const TString& field_qta() const;
+ const TString& field_qtaevasa() const;
+ real quantita() const;
+ real qtaevasa() const;
+ real qtaresidua() const;
+ real valore(bool totale, int ndec) const;
+ const TString & codice_costo() const;
+ const TString & codice_commessa() const;
+ const TString & fase_commessa() const;
+ TArticolo_giacenza * articolo() const;
+
+ TRiga_documento(TDocumento* doc, const char* tipo = NULL);
+ TRiga_documento(const TRiga_documento & row);
+ TRiga_documento(const TRiga_documento& rec, TDocumento* doc,
+ const char* tipo = NULL);
+ virtual ~TRiga_documento() {}
};
enum TTipo_importo { _lordo, _netto, _imposta };
class TRiepilogo_iva : public TObject
{
- TCodiceIVA _codiva;
- real _imp;
- real _imp_spese;
- real _imp_spese_row;
- real _iva;
- real _iva_spese;
- real _sconto_perc;
- real _sconto_imp;
- real _iva_sconto;
- byte _tipo;
-
+ TCodiceIVA _codiva;
+ real _imp;
+ real _imp_spese;
+ real _imp_spese_row;
+ real _iva;
+ real _iva_spese;
+ real _sconto_perc;
+ real _sconto_imp;
+ real _iva_sconto;
+ byte _tipo;
+
protected:
- virtual TObject* dup() const { return new TRiepilogo_iva(*this); }
- virtual TRiepilogo_iva & copy(const TRiepilogo_iva & a);
-
+ virtual TObject* dup() const { return new TRiepilogo_iva(*this); }
+ 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 & imp() { return _imp;};
- real & imp_spese() { return _imp_spese;};
- real & imp_spese_row() { return _imp_spese_row;};
- real & iva() { return _iva;};
- real & iva_spese() { return _iva_spese;};
- real & iva_sconto() { return _iva_sconto;};
- const real & iva_sconto() const { return _iva_sconto;};
- real & sconto_perc() { return _sconto_perc; }
- const real& sconto_perc() const { return _sconto_perc; }
- real & sconto_imp () { return _sconto_imp; }
- const real & sconto_imp () const { return _sconto_imp; }
- const TCodiceIVA & cod_iva() const { return _codiva;}
- byte tipo(){ return _tipo;}// Tipo (Vedi opzioni per la selzione di filtro nella validate())
- TRiepilogo_iva& operator = (const TRiepilogo_iva & a) {return copy(a);}
- TRiepilogo_iva(const TCodiceIVA & codiva);
- TRiepilogo_iva(const TRiepilogo_iva & a) {copy(a);}
- TRiepilogo_iva() : _tipo(0) {}
- ~TRiepilogo_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;};
+ real & iva() { return _iva;};
+ real & iva_spese() { return _iva_spese;};
+ real & iva_sconto() { return _iva_sconto;};
+ const real & iva_sconto() const { return _iva_sconto;};
+ real & sconto_perc() { return _sconto_perc; }
+ const real& sconto_perc() const { return _sconto_perc; }
+ real & sconto_imp () { return _sconto_imp; }
+ const real & sconto_imp () const { return _sconto_imp; }
+ const TCodiceIVA & cod_iva() const { return _codiva;}
+ byte tipo(){ return _tipo;}// Tipo (Vedi opzioni per la selzione di filtro nella validate())
+ TRiepilogo_iva& operator = (const TRiepilogo_iva & a) {return copy(a);}
+ TRiepilogo_iva(const TCodiceIVA & codiva);
+ TRiepilogo_iva(const TRiepilogo_iva & a) {copy(a);}
+ TRiepilogo_iva() : _tipo(0) {}
+ ~TRiepilogo_iva() {};
};
-
+
class TAgente ;
-class TDocumento : public TMultiple_rectype // velib03
-{
- TRecfield *_tipocf;
- TRecfield *_codcf;
- TRecfield *_cod_occas;
- char _stato_originale;
+class TDocumento : public TMultiple_rectype // velib03
+{
+ TRecfield *_tipocf;
+ TRecfield *_codcf;
+ TRecfield *_cod_occas;
+ char _stato_originale;
- TCli_for _cli_for;
- TOccasionale _occas;
- TPagamento _pag;
- TAssoc_array _tabella_iva; // tabella di imponibili ed imposte
+ TCli_for _cli_for;
+ TOccasionale _occas;
+ TPagamento _pag;
+ TAssoc_array _tabella_iva; // tabella di imponibili ed imposte
- TProvvigioni_agente* _provv_agente;
- TString16 _old_agente; // Agente originale
-
- TRiga_documento * _sconto; // Riga per lo sconto di testata
- TRiga_documento * _esenzione; // Riga per l' esenzione iva
-
- bool _dirty_deny;
+ TProvvigioni_agente* _provv_agente;
+ TString16 _old_agente; // Agente originale
+
+ TRiga_documento * _sconto; // Riga per lo sconto di testata
+ TRiga_documento * _esenzione; // Riga per l' esenzione iva
+
+ bool _dirty_deny;
- static TAssoc_array _tipi;
- static TAssoc_array _numerazioni;
- static long _firm;
- static TString16 _codiva_spese;
- static TString16 _codiva_bolli;
- static short _has_mag;
- static short _has_stat_ven;
- static short _has_provv;
- static TCodgiac_livelli *_livelli;
+ static TAssoc_array _tipi;
+ static TAssoc_array _numerazioni;
+ static long _firm;
+ static TString16 _codiva_spese;
+ static TString16 _codiva_bolli;
+ static short _has_mag;
+ static short _has_stat_ven;
+ static short _has_provv;
+ static TCodgiac_livelli *_livelli;
-protected:
- virtual TRectype * new_body_record(int logicnum = 0)
- { return new TRiga_documento(this); }
+protected:
+ virtual TRectype * new_body_record(int logicnum = 0) { return new TRiga_documento(this); }
+ TRiga_documento & row(int index);
+ const TRiga_documento& physical_row(int index) const;
- TRiga_documento & row(int index);
- const TRiga_documento& physical_row(int index) const;
+ long get_next_key(char provv, int anno, const char* codnum) const;
+ virtual void put_str(const char* fieldname, const char* val);
+ virtual const TString & get_str(const char* fieldname) const ;
- long get_next_key(char provv, int anno, const char* codnum) const;
- virtual void put_str(const char* fieldname, const char* val);
- virtual const TString & get_str(const char* fieldname) const ;
+ long renum_ndoc(long numdoc = 0);
+ virtual bool key_complete() { return numero() > 0; }
+ virtual bool renum() { return renum_ndoc() > 0;}
+ void set_riga_sconto();
+ int write_rewrite(TBaseisamfile & f, bool re) const;
+ virtual TDocumento & copy(const TDocumento & d);
+ virtual TObject* dup() const { return new TDocumento(*this); }
+ void calc_iva_fattura_commerciale();
+ void update_tabella_iva();
+ void dirty_tabella_iva() { _tabella_iva.destroy();}
+ static void test_firm();
- long renum_ndoc(long numdoc = 0);
- virtual bool key_complete() { return numero() > 0; }
- virtual bool renum() { return renum_ndoc() > 0;}
- void set_riga_sconto();
- int write_rewrite(TBaseisamfile & f, bool re) const;
- virtual TDocumento & copy(const TDocumento & d);
- virtual TObject* dup() const { return new TDocumento(*this); }
- void calc_iva_fattura_commerciale();
- void update_tabella_iva();
- void dirty_tabella_iva() { _tabella_iva.destroy();}
- static void test_firm();
-
- void init();
- void check_modules();
- virtual void set_variables(TExpression * e) const ;
- int set_row_ids();
-
-public:
- const TString& codiva_spese() const ;
- const TString& codiva_bolli() const ;
+ void init();
+ void check_modules();
+ virtual void set_variables(TExpression * e) const ;
+ int set_row_ids();
+
+public:
+ const TString& codiva_spese() const ;
+ const TString& codiva_bolli() const ;
- TCodgiac_livelli & livelli() const ;
- void dirty_fields();
+ TCodgiac_livelli & livelli() const ;
+ void dirty_fields();
- TAssoc_array & tabella_iva() { update_tabella_iva(); return _tabella_iva; }
- TCli_for & clifor() const;
- TOccasionale & occas() const;
- const TAgente & agente() const;
- const TString & riferimento(TString& rif) const { return tipo().riferimento(*this, rif); }
+ TAssoc_array & tabella_iva() { update_tabella_iva(); return _tabella_iva; }
+ TCli_for & clifor() const;
+ TOccasionale & occas() const;
+ const TAgente & agente() const;
+ const TString & riferimento(TString& rif) const { return tipo().riferimento(*this, rif); }
- virtual TRecord_array& body(int logicnum = 0) const;
- virtual TDocumento & operator =(const TDocumento & d) {return copy(d);}
- virtual TRectype & operator =(const TRectype & r);
- virtual TRectype & operator =(const char * r);
- virtual void zero(const char * fieldname);
- virtual void zero(char c = '\0') { TMultiple_rectype::zero(c); }
-
- int physical_rows() const { return body().rows(); }
- int rows() const { return physical_rows() + ((_sconto != NULL) ? 1 : 0) + ((_esenzione != NULL) ? 1 : 0); }
- const TRiga_documento& operator[](int index) const { return (const TRiga_documento&)((TDocumento *)this)->row(index); }
- TRiga_documento& operator[](int index) { return (TRiga_documento&)row(index); }
- const TRiga_documento* get_row_id(long id) const;
-
- TRiga_documento& insert_row(int row, const char *tipo = NULL);
- 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 remove(TBaseisamfile& f) const;
+ virtual TRecord_array& body(int logicnum = 0) const;
+ virtual TDocumento & operator =(const TDocumento & d) {return copy(d);}
+ virtual TRectype & operator =(const TRectype & r);
+ virtual TRectype & operator =(const char * r);
+ virtual void zero(const char * fieldname);
+ virtual void zero(char c = '\0') { TMultiple_rectype::zero(c); }
- int read(char provv, int anno, const char* codnum, long numdoc, word op = _isequal, word lockop = _nolock);
- int read(const TRectype& rec, word op = _isequal, word lockop = _nolock) { *this = rec; return read(op, lockop); }
- 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 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);
- int write_provvigioni() { return calc_provvigioni().write();}
+ int physical_rows() const { return body().rows(); }
+ int rows() const { return physical_rows() + ((_sconto != NULL) ? 1 : 0) + ((_esenzione != NULL) ? 1 : 0); }
+ const TRiga_documento& operator[](int index) const { return (const TRiga_documento&)((TDocumento *)this)->row(index); }
+ TRiga_documento& operator[](int index) { return (TRiga_documento&)row(index); }
+ const TRiga_documento* get_row_id(long id) const;
- char tipo_numerazione() const { return get_char("PROVV"); }
- int anno() const { return get_int("ANNO"); }
- const TString& numerazione() const { return get("CODNUM"); }
- long numero() const { return get_long("NDOC"); }
- TDate data() const { return get_date("DATADOC"); }
- bool in_valuta() const;
- const TString& valuta() const { return get("CODVAL"); }
- real cambio() const { return get_real("CAMBIO"); }
- bool tipo_valido() const { return get("TIPODOC").not_empty(); }
- static const TTipo_documento& tipo(const char * tipodoc);
- const TTipo_documento& tipo() const;
- static const TCodice_numerazione& codice_numerazione(const char * numerazione);
- const TCodice_numerazione& codice_numerazione() const;
- void set_tipo(const char * tipo) { head().put("TIPODOC", tipo);}
- bool provvisorio() const { return get_char("PROVV") == 'P'; }
- char stato() const { return get_char("STATO"); }
- void stato(char s) { put("STATO", s); }
- const TString & codice_costo() const { return get(DOC_CODCOSTO);}
- const TString & codice_commessa() const { return get(DOC_CODCMS);}
- const TString & fase_commessa() const { return get(DOC_FASCMS);}
- bool modificabile() const;
- bool cancellabile() const;
- bool stampabile() const;
- bool bloccato() const;
+ TRiga_documento& insert_row(int row, const char *tipo = NULL);
+ 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 remove(TBaseisamfile& f) const;
- bool raggruppabile() const { return get_bool("RAGGR"); }
- bool raggruppabile(const TDocumento& doc, TToken_string& campi) const;
-
- char tipocf() const {return *(const char *) (*_tipocf);}
- long codcf() const {return (long) *_codcf;}
- const char * cod_occas() const { return (const char *) *_cod_occas; }
-
- static void set_key(TRectype& rec, char provv, int anno, const char* codnum, long numdoc);
- static void copy_data(TRectype& dst, const TRectype& src);
- static void copy_data(TRiga_documento& dst, const TRiga_documento& src);
- void copy_contents(const TDocumento & src);
-
- void set_fields(TAuto_variable_rectype & rec);
- void set_riga_esenzione();
+ int read(char provv, int anno, const char* codnum, long numdoc, word op = _isequal, word lockop = _nolock);
+ int read(const TRectype& rec, word op = _isequal, word lockop = _nolock) { *this = rec; return read(op, lockop); }
+ int read(word op = _isequal, word lockop = _nolock) { TLocalisamfile f(LF_DOC); return read(f, op, lockop);}
- void iva_esente(TString & codiva_es) const;
- real spese_incasso(int ndec, TTipo_importo netto = _lordo) const ;
- real bolli(real & imp, int ndec, TTipo_importo netto = _lordo) const ;
+ int write(bool re = FALSE) const { TLocalisamfile f(LF_DOC); return write_rewrite(f, re);}
+ int rewrite() const { return write(true); }
+ int remove() const { TLocalisamfile f(LF_DOC); return remove(f);}
+ int decimals(bool price = FALSE) const;
- real imponibile(bool spese = FALSE, int ndec = AUTO_DECIMALS) const;
- real imposta(bool spese = FALSE, int ndec = AUTO_DECIMALS) const;
- real totale_doc() const;
- real totale_netto() const;
- real basesconto() const;
- real spese() const;
+ void flush_rows();
+
+ TProvvigioni_agente& calc_provvigioni(const bool generata = true);
+ int write_provvigioni() { return calc_provvigioni().write();}
+
+ char tipo_numerazione() const { return get_char("PROVV"); }
+ int anno() const { return get_int("ANNO"); }
+ const TString& numerazione() const { return get("CODNUM"); }
+ long numero() const { return get_long("NDOC"); }
+ TDate data() const { return get_date("DATADOC"); }
+ bool in_valuta() const;
+ const TString& valuta() const { return get("CODVAL"); }
+ real cambio() const { return get_real("CAMBIO"); }
+ bool tipo_valido() const { return get("TIPODOC").not_empty(); }
+ static const TTipo_documento& tipo(const char * tipodoc);
+ const TTipo_documento& tipo() const;
+ static const TCodice_numerazione& codice_numerazione(const char * numerazione);
+ const TCodice_numerazione& codice_numerazione() const;
+ void set_tipo(const char * tipo) { head().put("TIPODOC", tipo);}
+ bool provvisorio() const { return get_char("PROVV") == 'P'; }
+ char stato() const { return get_char("STATO"); }
+ void stato(char s) { put("STATO", s); }
+ const TString & codice_costo() const { return get(DOC_CODCOSTO);}
+ const TString & codice_commessa() const { return get(DOC_CODCMS);}
+ const TString & fase_commessa() const { return get(DOC_FASCMS);}
+ bool modificabile() const;
+ bool cancellabile() const;
+ bool stampabile() const;
+ bool bloccato() const;
+
+ bool raggruppabile() const { return get_bool("RAGGR"); }
+ bool raggruppabile(const TDocumento& doc, TToken_string& campi) const;
+
+ char tipocf() const {return *(const char *) (*_tipocf);}
+ long codcf() const {return (long) *_codcf;}
+ const char * cod_occas() const { return (const char *) *_cod_occas; }
+
+ static void set_key(TRectype& rec, char provv, int anno, const char* codnum, long numdoc);
+ static void copy_data(TRectype& dst, const TRectype& src);
+ static void copy_data(TRiga_documento& dst, const TRiga_documento& src);
+ void copy_contents(const TDocumento & src);
+
+ void set_fields(TAuto_variable_rectype & rec);
+ void set_riga_esenzione();
+
+ void iva_esente(TString & codiva_es) const;
+ real spese_incasso(int ndec, TTipo_importo netto = _lordo) const ;
+ real bolli(real & imp, int ndec, TTipo_importo netto = _lordo) const ;
+
+ real imponibile(bool spese = FALSE, int ndec = AUTO_DECIMALS) const;
+ real imposta(bool spese = FALSE, int ndec = AUTO_DECIMALS) const;
+ real totale_doc() const;
+ real totale_netto() const;
+ real basesconto() const;
+ real spese() const;
real ritenute(const char tipo = '\0', bool lordo = false, int ndec = AUTO_DECIMALS) const;
- real provvigione(int ndec = AUTO_DECIMALS) const;
- real valore(bool totale, int ndec = AUTO_DECIMALS) const;
-
- TPagamento & pagamento();
-
- void update_spese_aut(TString_array & spese, bool preserve_old = FALSE, TSheet_field * sh = NULL);
- real calc_conai_qta(int type);
- void update_conai();
-
- bool is_generic() const { return tipo_valido() && tipo().is_generic(); }
- bool is_fattura() const { return tipo_valido() && tipo().is_fattura(); }
- bool is_bolla() const { return tipo_valido() && tipo().is_bolla(); }
- bool is_ordine() const { return tipo_valido() && tipo().is_ordine(); }
- bool is_evaso() const;
- bool is_nota_credito() const;
+ real provvigione(int ndec = AUTO_DECIMALS) const;
+ real valore(bool totale, int ndec = AUTO_DECIMALS) const;
- TDocumento ();
- TDocumento (const TDocumento & d);
- TDocumento(char provv, int anno, const char* codnum, long numdoc);
- TDocumento(const TRectype& doc);
- virtual ~TDocumento();
- };
+ TPagamento & pagamento();
+
+ void update_spese_aut(TString_array & spese, bool preserve_old = FALSE, TSheet_field * sh = NULL);
+ real calc_conai_qta(int type);
+ void update_conai();
+
+ bool is_generic() const { return tipo_valido() && tipo().is_generic(); }
+ bool is_fattura() const { return tipo_valido() && tipo().is_fattura(); }
+ bool is_bolla() const { return tipo_valido() && tipo().is_bolla(); }
+ bool is_ordine() const { return tipo_valido() && tipo().is_ordine(); }
+ bool is_evaso() const;
+ bool is_nota_credito() const;
+
+ TDocumento ();
+ TDocumento (const TDocumento & d);
+ TDocumento(char provv, int anno, const char* codnum, long numdoc);
+ TDocumento(const TRectype& doc);
+ virtual ~TDocumento();
+};
class TCurrency_documento : public TCurrency
{
protected:
- void copy(const TCurrency& cur) {TCurrency::copy(cur); }
+ void copy(const TCurrency& cur) {TCurrency::copy(cur); }
public:
- const TCurrency_documento& operator=(const TCurrency_documento& cur) { copy(cur); return *this; }
- const TCurrency_documento& operator=(const TCurrency& cur) { copy(cur); return *this; }
+ const TCurrency_documento& operator=(const TCurrency_documento& cur) { copy(cur); return *this; }
+ const TCurrency_documento& operator=(const TCurrency& cur) { copy(cur); return *this; }
- TCurrency_documento(const TCurrency& cur) { copy(cur); }
- TCurrency_documento(const TCurrency_documento& cur) { copy(cur); }
- TCurrency_documento(const real& num, const TDocumento &doc, bool price = FALSE);
- virtual ~TCurrency_documento() { }
+ TCurrency_documento(const TCurrency& cur) { copy(cur); }
+ TCurrency_documento(const TCurrency_documento& cur) { copy(cur); }
+ TCurrency_documento(const real& num, const TDocumento &doc, bool price = FALSE);
+ virtual ~TCurrency_documento() { }
};
class TCodgiac_livelli;
-class TDocumento_mask : public TVariable_mask // velib06
+class TDocumento_mask : public TVariable_mask // velib06
{
- int _progs_page; // pagina in cui cominciano i progressivi
- TSheet_field* _sheet; // Spreadsheet
- TDocumento _doc; // documento
- TCodgiac_livelli * _livelli_giac;// livelli di giacenza
-
- TCond_vendita* _condv; // condizioni di vendita
- TAssoc_array _maskriga;// Maschere delle righe
+ int _progs_page; // pagina in cui cominciano i progressivi
+ TSheet_field* _sheet; // Spreadsheet
+ TDocumento _doc; // documento
+ TCodgiac_livelli * _livelli_giac; // livelli di giacenza
+
+ TCond_vendita* _condv; // condizioni di vendita
+ TAssoc_array _maskriga; // Maschere delle righe
TPointer_array _handlers;
TBit_array _calculated_pages;
- bool _ges_mag, _ges_dep;
- TString _std_mag, _std_dep;
+ bool _ges_mag, _ges_dep;
+ TString _std_mag, _std_dep;
TSmart_card * _smartcard;
+ short _last_cdc_dlg;
+ short _last_cms_dlg;
protected:
- void update_progs(bool stop_run = false);
- virtual void next_page(int p);
- virtual void start_run();
- virtual bool stop_run(KEY key);
- void sconto_testa2mask();
- void spese2mask();
+ void update_progs(bool stop_run = false);
+ virtual void next_page(int p);
+ virtual void start_run();
+ virtual bool stop_run(KEY key);
+ void sconto_testa2mask();
+ void spese2mask();
- int insert_anal_fields(TMask& m, int page, int lf, int& y, short& dlg, short& dlgd, bool required);
- void insert_anal_page();
+ int insert_anal_fields(TMask& m, int page, int lf, int& y, short& dlg, short& dlgd, bool required);
+ void insert_anal_page();
- void configura_sheet(TSheet_field& sheet);
- static bool ss_notify(TSheet_field& ss, int r, KEY key);
- static bool ss_handler(TMask_field& f, KEY key);
- static TMask* ss_getmask(int numriga, TMask& fullmask);
-
- void set_field_handler(short fieldid, CONTROL_HANDLER handler);
- bool call_handler( TMask_field& f, KEY key);
+ void configura_sheet(TSheet_field& sheet);
+ static bool ss_notify(TSheet_field& ss, int r, KEY key);
+ static bool ss_handler(TMask_field& f, KEY key);
+ static TMask* ss_getmask(int numriga, TMask& fullmask);
+
+ void set_field_handler(short fieldid, CONTROL_HANDLER handler);
+ bool call_handler( TMask_field& f, KEY key);
static bool universal_handler( TMask_field& f, KEY key);
static bool occas_handler( TMask_field& f, KEY key );
- static bool occas_code_handler( TMask_field& f, KEY key );
- static bool clifo_handler( TMask_field& f, KEY key );
- static bool print_handler( TMask_field& f, KEY key );
- static bool elabora_handler( TMask_field& f, KEY key );
- static bool codlist_handler( TMask_field& f, KEY key );
- static bool codcont_handler( TMask_field& f, KEY key );
- static bool codcamp_handler( TMask_field& f, KEY key );
- static bool datacambio_handler( TMask_field& f, KEY key );
- static bool codval_handler( TMask_field& f, KEY key );
- void user_set_handler( int fieldid, int index);
+ static bool occas_code_handler( TMask_field& f, KEY key );
+ static bool clifo_handler( TMask_field& f, KEY key );
+ static bool print_handler( TMask_field& f, KEY key );
+ static bool elabora_handler( TMask_field& f, KEY key );
+ static bool codlist_handler( TMask_field& f, KEY key );
+ static bool codcont_handler( TMask_field& f, KEY key );
+ static bool codcamp_handler( TMask_field& f, KEY key );
+ static bool datacambio_handler( TMask_field& f, KEY key );
+ static bool codval_handler( TMask_field& f, KEY key );
+ void user_set_handler( int fieldid, int index);
- void reset_masks(const TString& tipo_doc);
+ void reset_masks(const TString& tipo_doc);
public:
- TVariable_mask* riga_mask(int numriga);
- virtual bool on_key(KEY key);
+ TVariable_mask* riga_mask(int numriga);
+ virtual bool on_key(KEY key);
- TDocumento& doc() { return _doc; }
- const TDocumento& doc() const { return _doc; }
- TCond_vendita & condv() const;
+ TDocumento& doc() { return _doc; }
+ const TDocumento& doc() const { return _doc; }
+ TCond_vendita & condv() const;
- void occ2mask();
- void cli2mask();
- void doc2mask(bool reload_clifo = true);
- void mask2doc();
+ void occ2mask();
+ void cli2mask();
+ void doc2mask(bool reload_clifo = true);
+ void mask2doc();
- void update_giacenza();
-
- const TString& stdmag() const { return _std_mag; }
- const TString& stddep() const { return _std_dep; }
+ void update_giacenza();
+
+ const TString& stdmag() const { return _std_mag; }
+ const TString& stddep() const { return _std_dep; }
+ const short last_cdc_dlg() const { return _last_cdc_dlg;}
+ const short last_cms_dlg() const { return _last_cms_dlg;}
- TSheet_field& sheet() const { return *_sheet; }
- TCodgiac_livelli& livelli() const { return *_livelli_giac; }
- static bool anno_handler( TMask_field& f, KEY key);
- static bool num_handler( TMask_field& f, KEY key );
- static bool tip_handler( TMask_field& f, KEY key );
- static bool numdocrif_search_handler( TMask_field& f, KEY key );
- static bool ragsoc_search_handler( TMask_field& f, KEY key );
- static bool datadocrif_handler(TMask_field& f, KEY key);
+ TSheet_field& sheet() const { return *_sheet; }
+ TCodgiac_livelli& livelli() const { return *_livelli_giac; }
+ static bool anno_handler( TMask_field& f, KEY key);
+ static bool num_handler( TMask_field& f, KEY key );
+ static bool tip_handler( TMask_field& f, KEY key );
+ static bool numdocrif_search_handler( TMask_field& f, KEY key );
+ static bool ragsoc_search_handler( TMask_field& f, KEY key );
+ static bool datadocrif_handler(TMask_field& f, KEY key);
- void highlight(COLOR high_back_color, COLOR high_color);
+ void highlight(COLOR high_back_color, COLOR high_color);
- bool TDocumento_mask::is_calculated_page(int p) { return _calculated_pages[p]; }
+ bool TDocumento_mask::is_calculated_page(int p) { return _calculated_pages[p]; }
TSmart_card * smartcard() const { return _smartcard;}
- TDocumento_mask(const char* tipodoc);
- virtual ~TDocumento_mask();
+ TDocumento_mask(const char* tipodoc);
+ virtual ~TDocumento_mask();
};
struct dec_parm {
- int qta_lit,
- qta_val;
- // add other groups here
+ int qta_lit;
+ int qta_val;
+ // add other groups here
};
//////////////////////////////////////////////////////////////////////////////////////////////
@@ -863,62 +862,60 @@ struct dec_parm {
class TDocumentoEsteso : public TDocumento
{
- // Parametri del documento
- dec_parm _parm; // Parametri per gli arrotondamenti
-
- // Totali del documento ricalcolati non appena la tabellina di riepilogo IVA e' completa
-// real _importi_netti, _imposte;
+ // Parametri del documento
+ dec_parm _parm; // Parametri per gli arrotondamenti
- // 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
- 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
- TRiepilogo_iva _sum_current; // Riga corrente del riepilogo
+ // membri per il calcolo del riepilogo IVA
- // membri per il calcolo del riepilogo scadenze
- TString_array _scadenze_array;// Array che contiene le scadenze ("|")
- int _scadenze_current; // indice per identificare l'elementi corrente sull'array (-1 se non ha ancora calcolato)
+ 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
+ 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
+ TRiepilogo_iva _sum_current; // Riga corrente del riepilogo
+
+ // membri per il calcolo del riepilogo scadenze
+ TString_array _scadenze_array; // Array che contiene le scadenze ("|")
+ int _scadenze_current; // indice per identificare l'elementi corrente sull'array (-1 se non ha ancora calcolato)
public:
- // Funzioni per il riepilogo IVA
- 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_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
- int summary_items() { return tabella_iva().items();} // ritorna il numero di righe in totale della tabellina
- const TAssoc_array& summary() const { return _summary_table; }
- const TArray& summary_array() const { return _summary_array;}
-
- // Funzioni per il ricalcolo delle scadenze
- void scadenze_reset(); // riposiziona sulla prima scadenza
- void scadenze_recalc(); // resetta e ricalcola le scadenze
- void scadenze_set_next(); // seleziona il prossimo elemento dell'array delle scadenze
- const char * scadenze_get(const TString& w); // reperisce l'informazione richiesta dall'elemento corrente
- int scadenze_items() { return _scadenze_array.items(); } // restituisce il numero di scadenze
- TString_array& scadenze() { return _scadenze_array; }
+ // Funzioni per il riepilogo IVA
+ 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_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
+ int summary_items() { return tabella_iva().items();} // ritorna il numero di righe in totale della tabellina
+ const TAssoc_array& summary() const { return _summary_table; }
+ const TArray& summary_array() const { return _summary_array;}
+
+ // Funzioni per il ricalcolo delle scadenze
+ void scadenze_reset(); // riposiziona sulla prima scadenza
+ void scadenze_recalc(); // resetta e ricalcola le scadenze
+ void scadenze_set_next(); // seleziona il prossimo elemento dell'array delle scadenze
+ const char * scadenze_get(const TString& w); // reperisce l'informazione richiesta dall'elemento corrente
+ int scadenze_items() { return _scadenze_array.items(); } // restituisce il numero di scadenze
+ TString_array& scadenze() { return _scadenze_array; }
- // restituisce tot_imponibili, tot_esenti, tot_nonsoggetti a seconda del selettore:
- // 1 = regime normale
- // 2 = da ventilare (non usato)
- // 4 = esenti
- // 8 = non imponibili
- // 16 = non soggetti
- // pertanto i non imponibili avranno selettore 1 e gli esenti selettore 4.
- // per avere esenti + non soggetti il selettore sara' 20 e cosi' via.
- real tot_imponibili(byte selector);
-
- // Funzioni per settare i parametri
- void set_decimals(dec_parm & parm) { _parm = parm ; }
-// void set_condv(TCli_for * cli); // Cambia le condizioni di vendita
- TDocumentoEsteso (const TRectype & rec, dec_parm & parm) ;
- TDocumentoEsteso (const TRectype & rec) ;
- TDocumentoEsteso () ;
- virtual ~TDocumentoEsteso();
+ // restituisce tot_imponibili, tot_esenti, tot_nonsoggetti a seconda del selettore:
+ // 1 = regime normale
+ // 2 = da ventilare (non usato)
+ // 4 = esenti
+ // 8 = non imponibili
+ // 16 = non soggetti
+ // pertanto i non imponibili avranno selettore 1 e gli esenti selettore 4.
+ // per avere esenti + non soggetti il selettore sara' 20 e cosi' via.
+ real tot_imponibili(byte selector);
+
+ // Funzioni per settare i parametri
+ void set_decimals(dec_parm & parm) { _parm = parm ; }
+// void set_condv(TCli_for * cli); // Cambia le condizioni di vendita
+ TDocumentoEsteso (const TRectype & rec, dec_parm & parm) ;
+ TDocumentoEsteso (const TRectype & rec) ;
+ TDocumentoEsteso () ;
+ virtual ~TDocumentoEsteso();
};
#endif
\ No newline at end of file
diff --git a/ve/velib06.cpp b/ve/velib06.cpp
index 3643bad5a..852dcc5a3 100755
--- a/ve/velib06.cpp
+++ b/ve/velib06.cpp
@@ -22,20 +22,20 @@
#include "veuml1.h"
#include "veini.h"
-#include "sconti.h"
+#include "sconti.h"
-#include "doc.h"
-#include "rdoc.h"
+#include "doc.h"
+#include "rdoc.h"
class TOriginal_row_mask : public TAutomask
-{
+{
protected:
- virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
+ virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
virtual bool on_key(KEY key);
public:
- TOriginal_row_mask() : TAutomask("ve0100c") { }
+ TOriginal_row_mask() : TAutomask("ve0100c") { }
};
bool TOriginal_row_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
@@ -53,205 +53,207 @@ bool TOriginal_row_mask::on_key(KEY key)
TDocumento_mask::TDocumento_mask(const char* td)
- : TVariable_mask(), _progs_page(-1),
- _condv(NULL), _smartcard(NULL)
-{
- CHECK(strlen(td) <= 4, "TDocumento_mask(TipoDocumento) not (MaskName)");
+ : TVariable_mask(), _progs_page(-1),
+ _condv(NULL), _smartcard(NULL),
+ _last_cdc_dlg(-1), _last_cms_dlg(-1)
- {
- TMagazzini m;
+{
+ CHECK(strlen(td) <= 4, "TDocumento_mask(TipoDocumento) not (MaskName)");
- _ges_mag = m.gestmag();
- _ges_dep = m.gestdep();
- _std_mag = m.standardmag();
- _std_dep = m.standarddep();
- }
- _doc.set_tipo(td);
- const TString16 mname = _doc.tipo().mask_name();
- read_mask(mname, 0, MAX_PAGES);
+ {
+ TMagazzini m;
- _sheet = &sfield(F_SHEET);
- _sheet->set_handler( ss_handler );
- _sheet->set_notify( ss_notify );
- _sheet->set_append(FALSE);
-
- TList_field& listbox = (TList_field&)field(F_LBTIPORIGA);
-
- TTipo_documento& tdoc = (TTipo_documento&)_doc.tipo();
- TToken_string& keys = (TToken_string&)tdoc.keys_descrs()[0];
- TToken_string& descrs = (TToken_string&)tdoc.keys_descrs()[1];
- listbox.replace_items(keys, descrs);
+ _ges_mag = m.gestmag();
+ _ges_dep = m.gestdep();
+ _std_mag = m.standardmag();
+ _std_dep = m.standarddep();
+ }
+ _doc.set_tipo(td);
+ const TString16 mname = _doc.tipo().mask_name();
+ read_mask(mname, 0, MAX_PAGES);
- // Controlla se deve generare la pagina di analitica
- if (dongle().active(CAAUT) || dongle().active(CMAUT))
- insert_anal_page();
+ _sheet = &sfield(F_SHEET);
+ _sheet->set_handler( ss_handler );
+ _sheet->set_notify( ss_notify );
+ _sheet->set_append(FALSE);
+
+ TList_field& listbox = (TList_field&)field(F_LBTIPORIGA);
+
+ TTipo_documento& tdoc = (TTipo_documento&)_doc.tipo();
+ TToken_string& keys = (TToken_string&)tdoc.keys_descrs()[0];
+ TToken_string& descrs = (TToken_string&)tdoc.keys_descrs()[1];
+ listbox.replace_items(keys, descrs);
-
- configura_sheet(*_sheet);
-
- ((TVariable_sheet_field*)_sheet)->set_getmask( ss_getmask );
- if (_doc.tipo().clifo_optional())
- {
- field(F_CODCF).check_type(CHECK_NORMAL);
- field(F_RAGSOC).check_type(CHECK_NORMAL);
- }
-
+ // Controlla se deve generare la pagina di analitica
+ if (dongle().active(CAAUT) || dongle().active(CMAUT))
+ insert_anal_page();
+
+
+ configura_sheet(*_sheet);
+
+ ((TVariable_sheet_field*)_sheet)->set_getmask( ss_getmask );
+ if (_doc.tipo().clifo_optional())
+ {
+ field(F_CODCF).check_type(CHECK_NORMAL);
+ field(F_RAGSOC).check_type(CHECK_NORMAL);
+ }
+
int i;
-
+
for (i = fields() - 1; i >= 0; i--)
{
TMask_field & f = fld(i);
if (f.is_editable())
f.set_handler(universal_handler);
}
-
+
set_field_handler( F_OCCASEDIT, occas_handler );
- set_field_handler( F_CODCF, clifo_handler );
- set_field_handler( F_CODPAG, condpag_hndl );
- set_field_handler( F_DATAINSC, condpag_hndl );
- set_field_handler( F_CODNOTE, note_hndl );
- set_field_handler( F_DATADOC, data_hndl );
- set_field_handler( F_CODLIST, codlist_handler );
- set_field_handler( F_CODLIST1, codlist_handler );
- set_field_handler( F_CODCONT, codcont_handler );
- set_field_handler( F_CODCONT1, codcont_handler );
- set_field_handler( F_CODCAMP, codcamp_handler );
- set_field_handler( F_CODVAL, codval_handler );
- set_field_handler( F_CODVAL1, codval_handler );
- set_field_handler( F_NUMDOCRIF, datadocrif_handler);
- set_field_handler( F_DATADOCRIF, datadocrif_handler);
- set_handler( DLG_ELABORA, elabora_handler );
- set_handler( DLG_PRINT, print_handler );
-
- const TString_array& handlers = tdoc.handlers();
- int numhandler = handlers.items();
-
- for (i = 0; i < numhandler; i ++ )
- {
- TToken_string& riga = (TToken_string&) handlers[i];
-
+ set_field_handler( F_CODCF, clifo_handler );
+ set_field_handler( F_CODPAG, condpag_hndl );
+ set_field_handler( F_DATAINSC, condpag_hndl );
+ set_field_handler( F_CODNOTE, note_hndl );
+ set_field_handler( F_DATADOC, data_hndl );
+ set_field_handler( F_CODLIST, codlist_handler );
+ set_field_handler( F_CODLIST1, codlist_handler );
+ set_field_handler( F_CODCONT, codcont_handler );
+ set_field_handler( F_CODCONT1, codcont_handler );
+ set_field_handler( F_CODCAMP, codcamp_handler );
+ set_field_handler( F_CODVAL, codval_handler );
+ set_field_handler( F_CODVAL1, codval_handler );
+ set_field_handler( F_NUMDOCRIF, datadocrif_handler);
+ set_field_handler( F_DATADOCRIF, datadocrif_handler);
+ set_handler( DLG_ELABORA, elabora_handler );
+ set_handler( DLG_PRINT, print_handler );
+
+ const TString_array& handlers = tdoc.handlers();
+ int numhandler = handlers.items();
+
+ for (i = 0; i < numhandler; i ++ )
+ {
+ TToken_string& riga = (TToken_string&) handlers[i];
+
user_set_handler( riga.get_int( 0 ), riga.get_int( 1 ) );
- }
+ }
- _livelli_giac = new TCodgiac_livelli;
+ _livelli_giac = new TCodgiac_livelli;
- for (i = 4; i > 0; i--)
- {
- const short pos = _sheet->cid2index(FR_LIV1 + i -1);
- if (_livelli_giac->enabled(i))
- {
- const TString & header = _livelli_giac->name(i);
- const int len = header.len() + 1;
- const int f_len = _livelli_giac->code_length(i);
- _sheet->set_column_header(pos, header);
- _sheet->set_column_width(pos, (len > f_len ? len : f_len) * 8);
- }
- else
- {
- _sheet->sheet_mask().hide(FR_LIV1 + i -1);
- _sheet->delete_column(pos);
- }
- }
+ for (i = 4; i > 0; i--)
+ {
+ const short pos = _sheet->cid2index(FR_LIV1 + i -1);
+ if (_livelli_giac->enabled(i))
+ {
+ const TString & header = _livelli_giac->name(i);
+ const int len = header.len() + 1;
+ const int f_len = _livelli_giac->code_length(i);
+ _sheet->set_column_header(pos, header);
+ _sheet->set_column_width(pos, (len > f_len ? len : f_len) * 8);
+ }
+ else
+ {
+ _sheet->sheet_mask().hide(FR_LIV1 + i -1);
+ _sheet->delete_column(pos);
+ }
+ }
// configurazione campi
- TConfig cfg(CONFIG_DITTA, "ve");
- const bool gesval = cfg.get_bool("GESVAL");
- const bool gescambi = cfg.get_bool("GESVALAC");
+ TConfig cfg(CONFIG_DITTA, "ve");
+ const bool gesval = cfg.get_bool("GESVAL");
+ const bool gescambi = cfg.get_bool("GESVALAC");
- if (gesval)
- {
- const bool enable_controeuro = cfg.get_bool("CONTROEURO");
+ if (gesval)
+ {
+ const bool enable_controeuro = cfg.get_bool("CONTROEURO");
- enable(F_CONTROEURO, enable_controeuro);
- show(F_CODVAL, !gescambi);
- show(F_DATACAMBIO, !gescambi);
- show(F_NOMEVAL, !gescambi);
- show(F_CODVAL1, gescambi);
- show(F_DATACAMBIO1, gescambi);
- show(F_NOMEVAL1, gescambi);
- show(F_CAMBIO);
- }
- else
- {
- disable(F_CODVAL);
- disable(F_DATACAMBIO);
- disable(F_CONTROEURO);
- disable(F_NOMEVAL);
- hide(F_CODVAL1);
- hide(F_DATACAMBIO1);
- hide(F_NOMEVAL1);
- disable(F_CAMBIO);
- }
+ enable(F_CONTROEURO, enable_controeuro);
+ show(F_CODVAL, !gescambi);
+ show(F_DATACAMBIO, !gescambi);
+ show(F_NOMEVAL, !gescambi);
+ show(F_CODVAL1, gescambi);
+ show(F_DATACAMBIO1, gescambi);
+ show(F_NOMEVAL1, gescambi);
+ show(F_CAMBIO);
+ }
+ else
+ {
+ disable(F_CODVAL);
+ disable(F_DATACAMBIO);
+ disable(F_CONTROEURO);
+ disable(F_NOMEVAL);
+ hide(F_CODVAL1);
+ hide(F_DATACAMBIO1);
+ hide(F_NOMEVAL1);
+ disable(F_CAMBIO);
+ }
- const bool geslin = cfg.get_bool("GESLIN");
+ const bool geslin = cfg.get_bool("GESLIN");
- enable(F_CODLIN, geslin);
- enable(F_DESLIN, geslin);
+ enable(F_CODLIN, geslin);
+ enable(F_DESLIN, geslin);
- const bool geslis = cfg.get_bool("GES", NULL, 1);
- const bool gesliscatven = cfg.get_bool("GESLISCV");
+ const bool geslis = cfg.get_bool("GES", NULL, 1);
+ const bool gesliscatven = cfg.get_bool("GESLISCV");
- if (geslis)
- {
- show(F_CODLIST, !gesliscatven);
- show(F_CODLIST1, gesliscatven);
- }
- else
- {
- disable(F_CODLIST);
- hide(F_CODLIST1);
- }
+ if (geslis)
+ {
+ show(F_CODLIST, !gesliscatven);
+ show(F_CODLIST1, gesliscatven);
+ }
+ else
+ {
+ disable(F_CODLIST);
+ hide(F_CODLIST1);
+ }
- const bool gescontr = cfg.get_bool("GES", "ve", 2);
- const bool gescontrcli = cfg.get_bool("GESCONCC");
+ const bool gescontr = cfg.get_bool("GES", "ve", 2);
+ const bool gescontrcli = cfg.get_bool("GESCONCC");
- if (gescontr)
- {
- show(F_CODCONT1, gescontrcli);
- show(F_CODCONT, !gescontrcli);
- }
- else
- {
- disable(F_CODCONT);
- hide(F_CODCONT1);
- }
+ if (gescontr)
+ {
+ show(F_CODCONT1, gescontrcli);
+ show(F_CODCONT, !gescontrcli);
+ }
+ else
+ {
+ disable(F_CODCONT);
+ hide(F_CODCONT1);
+ }
- const bool gesoff = cfg.get_bool("GES", "ve", 3);
- enable(F_CODCAMP, gesoff);
+ const bool gesoff = cfg.get_bool("GES", "ve", 3);
+ enable(F_CODCAMP, gesoff);
- const bool gessco = cfg.get_char("GESSCO") != 'N';
- enable(F_SCONTOPERC, gessco);
+ const bool gessco = cfg.get_char("GESSCO") != 'N';
+ enable(F_SCONTOPERC, gessco);
- const bool gesage = cfg.get_bool("GESAGE");
- enable(F_CODAG, gesage);
- enable(F_DESAG, gesage);
- enable(F_CODAGVIS, gesage);
- enable(F_DESAGVIS, gesage);
+ const bool gesage = cfg.get_bool("GESAGE");
+ enable(F_CODAG, gesage);
+ enable(F_DESAG, gesage);
+ enable(F_CODAGVIS, gesage);
+ enable(F_DESAGVIS, gesage);
- const bool has_movmag = dongle().active(MGAUT) && _doc.tipo().mov_mag();
- int pos = id2pos(F_CAUSMAG);
- if (pos >= 0)
- fld(pos).show(has_movmag);
- pos = id2pos(F_DESCRMAG);
- if (pos >= 0)
- fld(pos).show(has_movmag);
- pos = id2pos(F_CAUSMAGC);
- if (pos >= 0)
- fld(pos).show(has_movmag);
- pos = id2pos(F_DESCRMAGC);
- if (pos >= 0)
- fld(pos).show(has_movmag);
- pos = id2pos(F_CURGIAC);
- if (pos >= 0)
- fld(pos).show(has_movmag);
- pos = id2pos(F_CURDISP);
- if (pos >= 0)
- fld(pos).show(has_movmag);
+ const bool has_movmag = dongle().active(MGAUT) && _doc.tipo().mov_mag();
+ int pos = id2pos(F_CAUSMAG);
+ if (pos >= 0)
+ fld(pos).show(has_movmag);
+ pos = id2pos(F_DESCRMAG);
+ if (pos >= 0)
+ fld(pos).show(has_movmag);
+ pos = id2pos(F_CAUSMAGC);
+ if (pos >= 0)
+ fld(pos).show(has_movmag);
+ pos = id2pos(F_DESCRMAGC);
+ if (pos >= 0)
+ fld(pos).show(has_movmag);
+ pos = id2pos(F_CURGIAC);
+ if (pos >= 0)
+ fld(pos).show(has_movmag);
+ pos = id2pos(F_CURDISP);
+ if (pos >= 0)
+ fld(pos).show(has_movmag);
for (i = fields() - 1; i >= 0; i--)
{
- const TMask_field& f = fld(i);
+ const TMask_field& f = fld(i);
const int p = f.page();
@@ -262,226 +264,230 @@ TDocumento_mask::TDocumento_mask(const char* td)
TDocumento_mask::~TDocumento_mask()
{
- if (_condv)
- delete _condv;
- if (_livelli_giac)
- delete _livelli_giac;
- if (_smartcard)
- delete _smartcard;
+ if (_condv)
+ delete _condv;
+ if (_livelli_giac)
+ delete _livelli_giac;
+ if (_smartcard)
+ delete _smartcard;
}
-int TDocumento_mask::insert_anal_fields(TMask& m, int page, int lf, int& y,
- short& dlg, short& dlgd, bool required)
+int TDocumento_mask::insert_anal_fields(TMask& m, int page, int lf, int& y,
+ short& dlg, short& dlgd, bool required)
{
- const int h = ca_create_fields(m, page, lf, 2, y, dlg, dlgd);
+ const int h = ca_create_fields(m, page, lf, 2, y, dlg, dlgd);
- const bool main_mask = m.id2pos(F_SHEET) > 0;
+ const bool main_mask = m.id2pos(F_SHEET) > 0;
- for (int i = 0; i < h; i++)
- {
- TEdit_field& fld = m.efield(dlg+i);
- int logic = lf;
- if (logic == LF_FASI)
- {
- const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
- if (fasinfo.parent() != 0)
- {
- const TMultilevel_code_info& parinfo = ca_multilevel_code_info(fasinfo.parent());
- if (i < parinfo.levels())
- logic = fasinfo.parent();
- }
- }
+ for (int i = 0; i < h; i++)
+ {
+ TEdit_field& fld = m.efield(dlg+i);
+ int logic = lf;
+ if (logic == LF_FASI)
+ {
+ const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
+ if (fasinfo.parent() != 0)
+ {
+ const TMultilevel_code_info& parinfo = ca_multilevel_code_info(fasinfo.parent());
+ if (i < parinfo.levels())
+ logic = fasinfo.parent();
+ }
+ }
- const char* fieldname = NULL;
- switch(logic)
- {
- case LF_COMMESSE: fieldname = DOC_CODCMS; break;
- case LF_FASI : fieldname = DOC_FASCMS; break;
- default : fieldname = DOC_CODCOSTO; break;
- }
- TFieldref* f = (TFieldref*)fld.field();
- f->set_name(fieldname);
-
- fld.check_type(required ? CHECK_REQUIRED : CHECK_NORMAL);
+ const char* fieldname = NULL;
+ switch(logic)
+ {
+ case LF_COMMESSE: fieldname = DOC_CODCMS; break;
+ case LF_FASI : fieldname = DOC_FASCMS; break;
+ default : fieldname = DOC_CODCOSTO; break;
+ }
+ TFieldref* f = (TFieldref*)fld.field();
+ f->set_name(fieldname);
+
+ fld.check_type(required ? CHECK_REQUIRED : CHECK_NORMAL);
- TEdit_field& dfld = m.efield(dlgd+i);
- dfld.set_field(EMPTY_STRING); // Toglie campi che fan saltare gli output!
+ TEdit_field& dfld = m.efield(dlgd+i);
+ dfld.set_field(EMPTY_STRING); // Toglie campi che fan saltare gli output!
- if (main_mask)
- {
- TSheet_field& sf = sfield(F_SHEET);
- const TString head = fld.prompt();
- const int colid = FR_CDC1+(fld.dlg()-F_CDC1);
- sf.set_column_header(colid, head);
- if (fld.size() > head.len())
- sf.set_column_width(colid, fld.size()*8); // XI_FU_MULTIPLE
+ if (main_mask)
+ {
+ TSheet_field& sf = sfield(F_SHEET);
+ const TString head = fld.prompt();
+ const int colid = FR_CDC1+(fld.dlg()-F_CDC1);
+ sf.set_column_header(colid, head);
+ if (fld.size() > head.len())
+ sf.set_column_width(colid, fld.size()*8); // XI_FU_MULTIPLE
- TMask& sm = sf.sheet_mask();
- TString80 str; str << *fld.field();
- sm.efield(colid).set_field(str); // Ricopia il campo nella maschera di riga per poterlo salvare!
- }
- }
+ TMask& sm = sf.sheet_mask();
+ TString80 str; str << *fld.field();
+ sm.efield(colid).set_field(str); // Ricopia il campo nella maschera di riga per poterlo salvare!
+ }
+ }
- y += h+1;
- dlg += h; dlgd += h;
- return h;
+ y += h+1;
+ dlg += h; dlgd += h;
+ return h;
}
void TDocumento_mask::insert_anal_page()
{
- int newpage = win2page(_sheet->parent());
+ int newpage = win2page(_sheet->parent());
if (newpage == 0)
newpage++;
- insert_page("Pagina", newpage); // Inserisce una pagina vuota con un titolo a caso
+ insert_page("Pagina", newpage); // Inserisce una pagina vuota con un titolo a caso
- // Rinumera i titoli di tutte le pagine
- const int lastpage = win2page(fld(fields()-1).parent()); // Calcola in numero dell'ultima pagina
- TToken_string caption;
- int i;
- for (i = 0; i <= lastpage; i++)
- {
- TString16 tag = TR("Pag.");
- tag << (i+1); // Calcola il titolo di ogni pagina
- caption.add(tag);
- }
- set_caption(caption); // Setta tutti i titoli contemporaneamente
+ // Rinumera i titoli di tutte le pagine
+ const int lastpage = win2page(fld(fields()-1).parent()); // Calcola in numero dell'ultima pagina
+ TToken_string caption;
+ int i;
+ for (i = 0; i <= lastpage; i++)
+ {
+ TString16 tag = TR("Pag.");
+ tag << (i+1); // Calcola il titolo di ogni pagina
+ caption.add(tag);
+ }
+ set_caption(caption); // Setta tutti i titoli contemporaneamente
- add_groupbox(DLG_NULL, newpage, "", 1, 0, 78, 6);
- add_string(DLG_NULL, newpage, TR("Cod. num. "), 2, 1, 4, "D").set_group(2);
- add_string(DLG_NULL, newpage, "", 24, 1, 50, "D").set_group(3);
- add_string(DLG_NULL, newpage, TR("Tipo doc. "), 2, 2, 4, "D").set_group(4);
- add_string(DLG_NULL, newpage, "", 24, 2, 50, "D").set_group(5);
- add_number(DLG_NULL, newpage, TR("Esercizio "), 2, 3, 4, "D").set_group(9);
- add_number(DLG_NULL, newpage, TR("Numero doc. "), 24, 3, 6, "D").set_group(6);
- add_date(DLG_NULL, newpage, TR("Data "), 46, 3, "D").set_group(7);
- add_string(DLG_NULL, newpage, TR("Stato "), 67, 3, 1, "D").set_group(8);
- add_number(DLG_NULL, newpage, TR("Cliente "), 2, 4, 6, "D").set_group(10);
- add_string(DLG_NULL, newpage, "", 24, 4, 50, "D").set_group(11);
+ add_groupbox(DLG_NULL, newpage, "", 1, 0, 78, 6);
+ add_string(DLG_NULL, newpage, TR("Cod. num. "), 2, 1, 4, "D").set_group(2);
+ add_string(DLG_NULL, newpage, "", 24, 1, 50, "D").set_group(3);
+ add_string(DLG_NULL, newpage, TR("Tipo doc. "), 2, 2, 4, "D").set_group(4);
+ add_string(DLG_NULL, newpage, "", 24, 2, 50, "D").set_group(5);
+ add_number(DLG_NULL, newpage, TR("Esercizio "), 2, 3, 4, "D").set_group(9);
+ add_number(DLG_NULL, newpage, TR("Numero doc. "), 24, 3, 6, "D").set_group(6);
+ add_date(DLG_NULL, newpage, TR("Data "), 46, 3, "D").set_group(7);
+ add_string(DLG_NULL, newpage, TR("Stato "), 67, 3, 1, "D").set_group(8);
+ add_number(DLG_NULL, newpage, TR("Cliente "), 2, 4, 6, "D").set_group(10);
+ add_string(DLG_NULL, newpage, "", 24, 4, 50, "D").set_group(11);
- add_groupbox(DLG_NULL, newpage, TR("Contabilita' Analitica"), 1, 6, 78, 14);
-
- const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
- const bool use_fsc = fasinfo.levels() > 0;
- TConfig_anal ini;
- const bool fsc_req = use_fsc && ini.get_bool("FscRequired");
+ add_groupbox(DLG_NULL, newpage, TR("Contabilita' Analitica"), 1, 6, 78, 14);
+
+ const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
+ const bool use_fsc = fasinfo.levels() > 0;
+ TConfig_anal ini;
+ const bool fsc_req = use_fsc && ini.get_bool("FscRequired");
- int y = 7;
- short dlg = F_CDC1; // id del primo campo da generare
- short dlgd = F_DESCDC1;
+ int y = 7;
+ short dlg = F_CDC1; // id del primo campo da generare
+ short dlgd = F_DESCDC1;
- for (i = 0; i < 2; i++)
- {
- const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2
- if (level == "CDC") // Crea centro di costo
- {
- if (use_fsc && fasinfo.parent() == LF_CDC)
- insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req);
- else
- {
- const bool cdc_req = ini.get_bool("CdcRequired");
- insert_anal_fields(*this, newpage, LF_CDC, y, dlg, dlgd, cdc_req);
- }
- } else
- if (level == "CMS") // Crea commessa
- {
- if (use_fsc && fasinfo.parent() == LF_COMMESSE)
- insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req);
- else
- {
- const bool cms_req = ini.get_bool("CmsRequired");
- insert_anal_fields(*this, newpage, LF_COMMESSE, y, dlg, dlgd, cms_req);
- }
- }
- }
- if (use_fsc && fasinfo.parent() <= 0)
- insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req);
+ for (i = 0; i < 2; i++)
+ {
+ const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2
+ if (level == "CDC") // Crea centro di costo
+ {
+ if (use_fsc && fasinfo.parent() == LF_CDC)
+ insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req);
+ else
+ {
+ const bool cdc_req = ini.get_bool("CdcRequired");
+
+ insert_anal_fields(*this, newpage, LF_CDC, y, dlg, dlgd, cdc_req);
+ _last_cdc_dlg = dlg - 1;
+ }
+ } else
+ if (level == "CMS") // Crea commessa
+ {
+ if (use_fsc && fasinfo.parent() == LF_COMMESSE)
+ insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req);
+ else
+ {
+ const bool cms_req = ini.get_bool("CmsRequired");
+
+ insert_anal_fields(*this, newpage, LF_COMMESSE, y, dlg, dlgd, cms_req);
+ _last_cms_dlg = dlg - 1;
+ }
+ }
+ }
+ if (use_fsc && fasinfo.parent() <= 0)
+ insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req);
}
void TDocumento_mask::configura_sheet(TSheet_field& sheet)
{
- TBit_array to_delete(MAX_COLUMNS);
- to_delete.set();
- const TTipo_documento& tdoc = _doc.tipo();
- const TString_array& sheet_columns = tdoc.sheet_columns();
- const int ncols = sheet_columns.items();
+ TBit_array to_delete(MAX_COLUMNS);
+ to_delete.set();
+ const TTipo_documento& tdoc = _doc.tipo();
+ const TString_array& sheet_columns = tdoc.sheet_columns();
+ const int ncols = sheet_columns.items();
- TToken_string colonne;
- int i;
-
- colonne = "0";
- for (i = 0; i < ncols; i ++ )
- {
- TToken_string& sheet_col = (TToken_string&)sheet_columns.row(i);
- const int field_id = sheet_col.get_int(0);
- const int coltomove = sheet.cid2index(field_id);
- to_delete.reset(coltomove);
+ TToken_string colonne;
+ int i;
+
+ colonne = "0";
+ for (i = 0; i < ncols; i ++ )
+ {
+ TToken_string& sheet_col = (TToken_string&)sheet_columns.row(i);
+ const int field_id = sheet_col.get_int(0);
+ const int coltomove = sheet.cid2index(field_id);
+ to_delete.reset(coltomove);
- const TString80 descr(sheet_col.get(1));
- if (descr.not_empty() )
- sheet.set_column_header( field_id, descr);
+ const TString80 descr(sheet_col.get(1));
+ if (descr.not_empty() )
+ sheet.set_column_header( field_id, descr);
- const int size = sheet_col.get_int(2) * 8; // XI_FU_MULTIPLE
- if (size != 0)
- sheet.set_column_width( field_id, size);
-
- if (field_id != FR_LORDO || tdoc.calcolo_lordo())
- colonne.add(field_id);
- }
-
- if (tdoc.calcolo_lordo())
- to_delete.reset(0L);
- else
- to_delete.set(0L);
- to_delete.reset(1);
+ const int size = sheet_col.get_int(2) * 8; // XI_FU_MULTIPLE
+ if (size != 0)
+ sheet.set_column_width( field_id, size);
+
+ if (field_id != FR_LORDO || tdoc.calcolo_lordo())
+ colonne.add(field_id);
+ }
+
+ if (tdoc.calcolo_lordo())
+ to_delete.reset(0L);
+ else
+ to_delete.set(0L);
+ to_delete.reset(1);
- if (!to_delete[sheet.cid2index(FR_CODDEP)])
- sheet.enable_column(FR_CODDEP, _ges_dep && _ges_mag);
- if (!to_delete[sheet.cid2index(FR_CODMAG)])
- sheet.enable_column(FR_CODMAG, _ges_mag);
- if (!to_delete[sheet.cid2index(FR_CODDEPC)])
- sheet.enable_column(FR_CODDEPC, _ges_dep && _ges_mag);
- if (!to_delete[sheet.cid2index(FR_CODMAGC)])
- sheet.enable_column(FR_CODMAGC, _ges_mag);
- to_delete.set(sheet.cid2index(FR_CODARTMAG));
- to_delete.set(sheet.cid2index(FR_CHECKED));
+ if (!to_delete[sheet.cid2index(FR_CODDEP)])
+ sheet.enable_column(FR_CODDEP, _ges_dep && _ges_mag);
+ if (!to_delete[sheet.cid2index(FR_CODMAG)])
+ sheet.enable_column(FR_CODMAG, _ges_mag);
+ if (!to_delete[sheet.cid2index(FR_CODDEPC)])
+ sheet.enable_column(FR_CODDEPC, _ges_dep && _ges_mag);
+ if (!to_delete[sheet.cid2index(FR_CODMAGC)])
+ sheet.enable_column(FR_CODMAGC, _ges_mag);
+ to_delete.set(sheet.cid2index(FR_CODARTMAG));
+ to_delete.set(sheet.cid2index(FR_CHECKED));
- const bool ca_active = dongle().active(CMAUT) || dongle().active(CAAUT);
- if (ca_active)
- {
- const TMultilevel_code_info& cdc = ca_multilevel_code_info(LF_CDC);
- const TMultilevel_code_info& cms = ca_multilevel_code_info(LF_COMMESSE);
- const TMultilevel_code_info& fas = ca_multilevel_code_info(LF_FASI);
- const int levels = cdc.levels() + cms.levels() + fas.levels();
- for (short cid = FR_CDC1; cid <= FR_CDC12; cid++)
- {
- const int level = cid-FR_CDC1;
- to_delete.set(sheet.cid2index(cid), level >= levels);
- if (level < levels)
- colonne.add(cid);
- }
- }
+ const bool ca_active = dongle().active(CMAUT) || dongle().active(CAAUT);
+ if (ca_active)
+ {
+ const TMultilevel_code_info& cdc = ca_multilevel_code_info(LF_CDC);
+ const TMultilevel_code_info& cms = ca_multilevel_code_info(LF_COMMESSE);
+ const TMultilevel_code_info& fas = ca_multilevel_code_info(LF_FASI);
+ const int levels = cdc.levels() + cms.levels() + fas.levels();
+ for (short cid = FR_CDC1; cid <= FR_CDC12; cid++)
+ {
+ const int level = cid-FR_CDC1;
+ to_delete.set(sheet.cid2index(cid), level >= levels);
+ if (level < levels)
+ colonne.add(cid);
+ }
+ }
- for ( i = MAX_COLUMNS - 1; i >= 0; i-- )
- {
- if( to_delete[i] )
- {
- sheet.enable_column( i + FIRST_FIELD, FALSE);
- sheet.delete_column( i + FIRST_FIELD);
- }
- }
+ for ( i = MAX_COLUMNS - 1; i >= 0; i-- )
+ {
+ if( to_delete[i] )
+ {
+ sheet.enable_column( i + FIRST_FIELD, FALSE);
+ sheet.delete_column( i + FIRST_FIELD);
+ }
+ }
- if (!sheet.user_saved_columns_order())
- sheet.set_columns_order(&colonne);
+ if (!sheet.user_saved_columns_order())
+ sheet.set_columns_order(&colonne);
}
TCond_vendita& TDocumento_mask::condv() const
{
- if (_condv == NULL)
- {
- TDocumento_mask* myself = (TDocumento_mask*)this;
- myself->_condv = new TCond_vendita(myself, NULL);
- }
- return *_condv;
+ if (_condv == NULL)
+ {
+ TDocumento_mask* myself = (TDocumento_mask*)this;
+ myself->_condv = new TCond_vendita(myself, NULL);
+ }
+ return *_condv;
}
void TDocumento_mask::update_progs(bool stop_run)
@@ -504,9 +510,9 @@ void TDocumento_mask::update_progs(bool stop_run)
if (fr)
_doc.put(fr->name(), mf.get());
}
-
+
_doc.set_riga_esenzione();
-
+
for (f = last_field; f >= 0; f--)
{
const TMask_field & mf = fld(f);
@@ -530,15 +536,15 @@ void TDocumento_mask::update_progs(bool stop_run)
}
void TDocumento_mask::next_page(int p)
-{
- TMask::next_page(p);
+{
+ TMask::next_page(p);
- if (is_calculated_page(curr_page()))
- update_progs();
+ if (is_calculated_page(curr_page()))
+ update_progs();
}
void TDocumento_mask::start_run()
-{
+{
TSmart_card * s = smartcard();
if (s != NULL)
@@ -560,13 +566,13 @@ void TDocumento_mask::start_run()
s->display_error(err);
}
}
- TVariable_mask::start_run();
+ TVariable_mask::start_run();
}
bool TDocumento_mask::stop_run(KEY key)
-{
- if (key != K_ESC && key != K_QUIT)
- update_progs(true);
+{
+ if (key != K_ESC && key != K_QUIT)
+ update_progs(true);
else
if (key == K_ESC)
{
@@ -583,31 +589,31 @@ bool TDocumento_mask::stop_run(KEY key)
}
}
- return TVariable_mask::stop_run(key);
+ return TVariable_mask::stop_run(key);
}
bool TDocumento_mask::on_key(KEY key)
{
- if (key == K_SHIFT + K_F12)
- {
- TRelation r(LF_DOC);
- r.curr()=doc();
- if (!doc().bloccato() && ::user_can_write(&r))
- {
- TMask_field& stato = field(F_STATO);
- stato.enable();
- enable(DLG_SAVEREC);
- enable(DLG_DELREC);
+ if (key == K_SHIFT + K_F12)
+ {
+ TRelation r(LF_DOC);
+ r.curr()=doc();
+ if (!doc().bloccato() && ::user_can_write(&r))
+ {
+ TMask_field& stato = field(F_STATO);
+ stato.enable();
+ enable(DLG_SAVEREC);
+ enable(DLG_DELREC);
TSmart_card * s = smartcard();
if (s != NULL && s->card_connected())
s->enable_prot_fields(*this);
- }
- else
- warning_box("L'utente %s non puo' modificare questo documento",
- (const char*)user());
- return TRUE;
- }
+ }
+ else
+ warning_box("L'utente %s non puo' modificare questo documento",
+ (const char*)user());
+ return TRUE;
+ }
else
if (key == K_F7)
{
@@ -644,930 +650,937 @@ bool TDocumento_mask::on_key(KEY key)
return true;
}
- return TVariable_mask::on_key(key);
+ return TVariable_mask::on_key(key);
}
void TDocumento_mask::occ2mask()
-{
- const TOccasionale& o = doc().occas();
+{
+ const TOccasionale& o = doc().occas();
- reset(F_COFI);
- reset(F_PAIVA);
- set(F_OCFPI, o.get(OCC_CFPI));
- const TString & ragsoc = o.get(OCC_RAGSOC);
- set(F_RAGSOC, ragsoc);
- set(F_RAGSOCSP, ragsoc);
- const TString & indir = o.get(OCC_INDIR);
- set(F_INDCF, indir);
- set(F_INDSP, indir);
- const TString & civ = o.get(OCC_CIV);
- set(F_CIVCF, civ);
- set(F_CIVSP, civ);
- const TString & cap = o.get(OCC_CAP);
- set(F_CAPCF, cap);
- set(F_CAPSP, cap);
- const TString & com = o.get(OCC_COM);
- set(F_COMCF, com);
- set( F_COMSP, com);
- const TString & stato = o.get(OCC_STATO);
- set(F_STATOCF, stato);
- set( F_STATOSP, stato);
- if (id2pos(F_CODINDSP) >= 0)
- reset(F_CODINDSP);
- // Sugli occasionali non c'è la località
- const TString & localita = o.get(OCC_LOCALITA);
- set(F_LOCALITACF, localita);
- set(F_LOCALITASP, localita);
- check_field(F_COMSP);
- check_field(F_STATOSP);
+ reset(F_COFI);
+ reset(F_PAIVA);
+ set(F_OCFPI, o.get(OCC_CFPI));
+ const TString & ragsoc = o.get(OCC_RAGSOC);
+ set(F_RAGSOC, ragsoc);
+ set(F_RAGSOCSP, ragsoc);
+ const TString & indir = o.get(OCC_INDIR);
+ set(F_INDCF, indir);
+ set(F_INDSP, indir);
+ const TString & civ = o.get(OCC_CIV);
+ set(F_CIVCF, civ);
+ set(F_CIVSP, civ);
+ const TString & cap = o.get(OCC_CAP);
+ set(F_CAPCF, cap);
+ set(F_CAPSP, cap);
+ const TString & com = o.get(OCC_COM);
+ set(F_COMCF, com);
+ set( F_COMSP, com);
+ const TString & stato = o.get(OCC_STATO);
+ set(F_STATOCF, stato);
+ set( F_STATOSP, stato);
+ if (id2pos(F_CODINDSP) >= 0)
+ reset(F_CODINDSP);
+ // Sugli occasionali non c'è la località
+ const TString & localita = o.get(OCC_LOCALITA);
+ set(F_LOCALITACF, localita);
+ set(F_LOCALITASP, localita);
+ check_field(F_COMSP);
+ check_field(F_STATOSP);
}
void TDocumento_mask::cli2mask()
-{
- TCli_for & c = doc().clifor();
+{
+ TCli_for & c = doc().clifor();
- const bool onload = !is_running();
-
- // Setta i campi che appartengono al file LF_CLIFO
- const bool occas = c.occasionale();
+ const bool onload = !is_running();
+
+ // Setta i campi che appartengono al file LF_CLIFO
+ const bool occas = c.occasionale();
- show(F_OCCASEDIT, occas);
- if (!occas)
- reset(F_OCFPI);
- show(F_OCFPI, occas);
- // In forse per l'Occasionale, sicuri per il Normale
- show(F_COFI, !occas);
- show(F_STATOPAIVA, !occas);
- show(F_PAIVA, !occas);
- set(F_RAGSOC, c.get(CLI_RAGSOC));
- enable(F_RAGSOC, !occas);
-
- const TRectype & ven_rec = c.vendite();
+ show(F_OCCASEDIT, occas);
+ if (!occas)
+ reset(F_OCFPI);
+ show(F_OCFPI, occas);
+ // In forse per l'Occasionale, sicuri per il Normale
+ show(F_COFI, !occas);
+ show(F_STATOPAIVA, !occas);
+ show(F_PAIVA, !occas);
+ set(F_RAGSOC, c.get(CLI_RAGSOC));
+ enable(F_RAGSOC, !occas);
+
+ const TRectype & ven_rec = c.vendite();
- if(!onload)
- {
- short pos = id2pos(F_CODVAL);
- const TString16 codval = c.get(CLI_CODVAL); // Attenzione: Non usare TString& qui!
-
- if (pos >= 0)
- set(F_CODVAL, codval, TRUE);
- pos = id2pos(F_CODVAL1);
- if (pos >= 0)
- set(F_CODVAL1, codval, TRUE);
- pos = id2pos(F_CODLIN);
- if (pos >= 0 && fld(pos).active())
- fld(pos).set(c.get(CLI_CODLIN));
- set(F_CODPAG, c.get(CLI_CODPAG));
- set(F_CODABIA, c.get(CLI_CODABI));
- set(F_CODCABA, c.get(CLI_CODCAB));
- if (id2pos(F_IBAN_STATO) > 0)
- {
- const TString80 iban = c.get(CLI_IBAN);
- set(F_IBAN, iban);
- efield(F_IBAN_STATO).validate(K_TAB);
- if (iban.not_empty())
- {
- set(F_IBAN_STATO, iban.left(2));
- set(F_IBAN_CHECK, iban.mid(2,2));
- set(F_BBAN , iban.mid(4));
- set(F_BBAN_CIN , iban.mid(4,1));
- set(F_BBAN_ABI , iban.mid(5,5));
- set(F_BBAN_CAB , iban.mid(10,5));
- set(F_BBAN_CONTO, iban.mid(15,12));
- }
- }
- // Setta i campi che appartengono al file LF_CFVEN
- set(F_CODABIP, ven_rec.get(CFV_CODABIPR));
- set(F_CODCABP, ven_rec.get(CFV_CODCABPR));
- set(F_RAGGR, ven_rec.get(CFV_RAGGDOC));
- set(F_RAGGREFF, ven_rec.get(CFV_RAGGEFF));
- set(F_CODINDSP, ven_rec.get(CFV_CODINDSP));
- set(F_CODAG, ven_rec.get(CFV_CODAG));
- set(F_CODSPMEZZO, ven_rec.get(CFV_CODSPMEZZO));
- set(F_CODPORTO, ven_rec.get(CFV_CODPORTO));
- set(F_CODNOTESP1, ven_rec.get(CFV_CODNOTESP1));
- set(F_CODNOTESP2, ven_rec.get(CFV_CODNOTESP2));
- set(F_CODNOTE, ven_rec.get(CFV_CODNOTE));
- set(F_CODVETT1, ven_rec.get(CFV_CODVETT1));
- set(F_CODVETT2, ven_rec.get(CFV_CODVETT2));
- set(F_CODVETT3, ven_rec.get(CFV_CODVETT3));
- set(F_SPESEINC, ven_rec.get(CFV_PERCSPINC));
- set(F_ADDBOLLI, ven_rec.get(CFV_ADDBOLLI));
- set(F_CATVEN, ven_rec.get(CFV_CATVEN));
- pos = id2pos(F_CODLIST);
- const TString16 codlist = ven_rec.get(CFV_CODLIST);
- if (pos >= 0 && fld(pos).active())
- {
- TEdit_field & f = (TEdit_field&) fld(pos);
-
- f.set(codlist);
- f.check();
- f.on_hit();
- }
- pos = id2pos(F_CODLIST1);
- if (pos >= 0 && fld(pos).active())
- {
- TEdit_field & f = (TEdit_field&) fld(pos);
-
- f.set(codlist);
- f.check();
- f.on_hit();
- }
- pos = id2pos(F_CODAG);
- if (pos >= 0 && fld(pos).active())
- fld(pos).set(ven_rec.get(CFV_CODAG));
- set(F_CODZON, ven_rec.get(CFV_CODZONA));
- set(F_RAGGR, ven_rec.get(CFV_RAGGDOC));
- sconto_testa2mask();
- spese2mask();
- }
- enable( F_CODINDSP , !occas);
- if (occas)
- occ2mask();
- else
- {
- set(F_COFI, c.get(CLI_COFI));
- set(F_INDCF, c.get(CLI_INDCF));
- set(F_CIVCF, c.get(CLI_CIVCF));
- set(F_STATOPAIVA, c.get(CLI_STATOPAIV));
- set(F_PAIVA, c.get(CLI_PAIV));
- set(F_LOCALITACF, c.get(CLI_LOCCF));
- set(F_CAPCF, c.get(CLI_CAPCF));
- set(F_COMCF, c.get(CLI_COMCF));
- set(F_STATOCF, c.get(CLI_STATOCF));
- check_field( F_CODINDSP );
- }
- const TString16 newcodval(get(F_CODVAL));
+ if(!onload)
+ {
+ short pos = id2pos(F_CODVAL);
+ const TString16 codval = c.get(CLI_CODVAL); // Attenzione: Non usare TString& qui!
+
+ if (pos >= 0)
+ set(F_CODVAL, codval, TRUE);
+ pos = id2pos(F_CODVAL1);
+ if (pos >= 0)
+ set(F_CODVAL1, codval, TRUE);
+ pos = id2pos(F_CODLIN);
+ if (pos >= 0 && fld(pos).active())
+ fld(pos).set(c.get(CLI_CODLIN));
+ set(F_CODPAG, c.get(CLI_CODPAG));
+ set(F_CODABIA, c.get(CLI_CODABI));
+ set(F_CODCABA, c.get(CLI_CODCAB));
+ if (id2pos(F_IBAN_STATO) > 0)
+ {
+ const TString80 iban = c.get(CLI_IBAN);
+ set(F_IBAN, iban);
+ efield(F_IBAN_STATO).validate(K_TAB);
+ if (iban.not_empty())
+ {
+ set(F_IBAN_STATO, iban.left(2));
+ set(F_IBAN_CHECK, iban.mid(2,2));
+ set(F_BBAN , iban.mid(4));
+ set(F_BBAN_CIN , iban.mid(4,1));
+ set(F_BBAN_ABI , iban.mid(5,5));
+ set(F_BBAN_CAB , iban.mid(10,5));
+ set(F_BBAN_CONTO, iban.mid(15,12));
+ }
+ }
+ // Setta i campi che appartengono al file LF_CFVEN
+ set(F_CODABIP, ven_rec.get(CFV_CODABIPR));
+ set(F_CODCABP, ven_rec.get(CFV_CODCABPR));
+ set(F_RAGGR, ven_rec.get(CFV_RAGGDOC));
+ set(F_RAGGREFF, ven_rec.get(CFV_RAGGEFF));
+ set(F_CODINDSP, ven_rec.get(CFV_CODINDSP));
+ set(F_CODAG, ven_rec.get(CFV_CODAG));
+ set(F_CODSPMEZZO, ven_rec.get(CFV_CODSPMEZZO));
+ set(F_CODPORTO, ven_rec.get(CFV_CODPORTO));
+ set(F_CODNOTESP1, ven_rec.get(CFV_CODNOTESP1));
+ set(F_CODNOTESP2, ven_rec.get(CFV_CODNOTESP2));
+ set(F_CODNOTE, ven_rec.get(CFV_CODNOTE));
+ set(F_CODVETT1, ven_rec.get(CFV_CODVETT1));
+ set(F_CODVETT2, ven_rec.get(CFV_CODVETT2));
+ set(F_CODVETT3, ven_rec.get(CFV_CODVETT3));
+ set(F_SPESEINC, ven_rec.get(CFV_PERCSPINC));
+ set(F_ADDBOLLI, ven_rec.get(CFV_ADDBOLLI));
+ set(F_CATVEN, ven_rec.get(CFV_CATVEN));
+ pos = id2pos(F_CODLIST);
+ const TString16 codlist = ven_rec.get(CFV_CODLIST);
+ if (pos >= 0 && fld(pos).active())
+ {
+ TEdit_field & f = (TEdit_field&) fld(pos);
+
+ f.set(codlist);
+ f.check();
+ f.on_hit();
+ }
+ pos = id2pos(F_CODLIST1);
+ if (pos >= 0 && fld(pos).active())
+ {
+ TEdit_field & f = (TEdit_field&) fld(pos);
+
+ f.set(codlist);
+ f.check();
+ f.on_hit();
+ }
+ pos = id2pos(F_CODAG);
+ if (pos >= 0 && fld(pos).active())
+ fld(pos).set(ven_rec.get(CFV_CODAG));
+ set(F_CODZON, ven_rec.get(CFV_CODZONA));
+ set(F_RAGGR, ven_rec.get(CFV_RAGGDOC));
+ sconto_testa2mask();
+ spese2mask();
+ }
+ enable( F_CODINDSP , !occas);
+ if (occas)
+ occ2mask();
+ else
+ {
+ set(F_COFI, c.get(CLI_COFI));
+ set(F_INDCF, c.get(CLI_INDCF));
+ set(F_CIVCF, c.get(CLI_CIVCF));
+ set(F_STATOPAIVA, c.get(CLI_STATOPAIV));
+ set(F_PAIVA, c.get(CLI_PAIV));
+ set(F_LOCALITACF, c.get(CLI_LOCCF));
+ set(F_CAPCF, c.get(CLI_CAPCF));
+ set(F_COMCF, c.get(CLI_COMCF));
+ set(F_STATOCF, c.get(CLI_STATOCF));
+ check_field( F_CODINDSP );
+ }
+ const TString16 newcodval(get(F_CODVAL));
- short pos = id2pos(F_CAMBIO);
- if ((pos >= 0) && newcodval.empty())
- fld(pos).reset();
- pos = id2pos(F_CODVAL);
- if (pos >= 0 && fld(pos).active())
- fld(pos).check(STARTING_CHECK);
- pos = id2pos(F_CODVAL1);
- if (pos >= 0 && fld(pos).active())
- fld(pos).check(STARTING_CHECK);
- check_field(F_COMCF);
- check_field(F_STATOCF);
- check_field( F_CODPAG );
- pos = id2pos(F_CODLIN);
- if (pos >= 0 && fld(pos).active())
- fld(pos).check();
- check_field( F_CODCABA );
- pos = id2pos(F_CODLIST);
- if (pos >= 0 && fld(pos).active())
- fld(pos).check();
- pos = id2pos(F_CODLIST1);
- if (pos >= 0 && fld(pos).active())
- fld(pos).check();
- check_field( F_CODCABP );
- pos = id2pos(F_CODAG);
- if (pos >= 0 && fld(pos).active())
- fld(pos).check();
- check_field( F_CODSPMEZZO );
- check_field( F_CODPORTO );
- check_field( F_CODNOTESP1 );
- check_field( F_CODNOTESP2 );
- check_field( F_CODNOTE );
- check_field( F_CODVETT1 );
- check_field( F_CODVETT2 );
- check_field( F_CODVETT3 );
- check_field( F_CATVEN );
- check_field( F_CODZON );
-
- const bool contr_enabled = ven_rec.get_bool(CFV_GESTCONTR);
- bool gescontr = FALSE;
- if (contr_enabled)
- {
- TConfig ditta(CONFIG_DITTA, "ve");
- gescontr = ditta.get_bool("GES", "ve", 2);
- }
-
- enable(F_CODCONT1, contr_enabled && gescontr);
- enable(F_CODCONT, contr_enabled && gescontr);
+ short pos = id2pos(F_CAMBIO);
+ if ((pos >= 0) && newcodval.empty())
+ fld(pos).reset();
+ pos = id2pos(F_CODVAL);
+ if (pos >= 0 && fld(pos).active())
+ fld(pos).check(STARTING_CHECK);
+ pos = id2pos(F_CODVAL1);
+ if (pos >= 0 && fld(pos).active())
+ fld(pos).check(STARTING_CHECK);
+ check_field(F_COMCF);
+ check_field(F_STATOCF);
+ check_field( F_CODPAG );
+ pos = id2pos(F_CODLIN);
+ if (pos >= 0 && fld(pos).active())
+ fld(pos).check();
+ check_field( F_CODCABA );
+ pos = id2pos(F_CODLIST);
+ if (pos >= 0 && fld(pos).active())
+ fld(pos).check();
+ pos = id2pos(F_CODLIST1);
+ if (pos >= 0 && fld(pos).active())
+ fld(pos).check();
+ check_field( F_CODCABP );
+ pos = id2pos(F_CODAG);
+ if (pos >= 0 && fld(pos).active())
+ fld(pos).check();
+ check_field( F_CODSPMEZZO );
+ check_field( F_CODPORTO );
+ check_field( F_CODNOTESP1 );
+ check_field( F_CODNOTESP2 );
+ check_field( F_CODNOTE );
+ check_field( F_CODVETT1 );
+ check_field( F_CODVETT2 );
+ check_field( F_CODVETT3 );
+ check_field( F_CATVEN );
+ check_field( F_CODZON );
+
+ const bool contr_enabled = ven_rec.get_bool(CFV_GESTCONTR);
+ bool gescontr = FALSE;
+ if (contr_enabled)
+ {
+ TConfig ditta(CONFIG_DITTA, "ve");
+ gescontr = ditta.get_bool("GES", "ve", 2);
+ }
+
+ enable(F_CODCONT1, contr_enabled && gescontr);
+ enable(F_CODCONT, contr_enabled && gescontr);
}
void TDocumento_mask::sconto_testa2mask()
{
- TCli_for & c = doc().clifor();
- TConfig ditta(CONFIG_DITTA, "ve");
- const char tipogestione = ditta.get("GESSCO", "ve")[ 0 ];
- switch( tipogestione )
- {
- case 'N': // Sconti non gestiti: pussa via!
- break;
- case 'P': // Percentuale su anagrafica cliente
- set( F_SCONTOPERC, c.vendite().get(CFV_SCONTO));
- break;
- case 'T': // Gestione tabella sconti
- {
- const TString16 codsconto(c.vendite().get(CFV_CODSCC));
-
- if (codsconto.not_empty())
- {
- TTable sconti("%SCC");
- sconti.setkey(1);
- sconti.zero();
- sconti.put("CODTAB", codsconto);
- if (sconti.read( ) == NOERR)
- set(F_SCONTOPERC, sconti.get("S1"));
- }
- }
- break;
- case 'A': // Gestione archivio sconti
- {
- TString16 cod;
- const TRectype & ven_rec = c.vendite();
- TLocalisamfile sconti(LF_SCONTI );
-
- sconti.setkey(1);
- sconti.zero();
- sconti.put("TIPO", "I");
- if(ditta.get_bool("SCOKEY", "ve", 1))
- sconti.put("CODCAT", ven_rec.get(CFV_CATVEN));
- if(ditta.get_bool("SCOKEY", "ve", 2))
- cod.format("%-2s", (const char *)ven_rec.get(CFV_CODSCC));
- else
- cod = " ";
- if( ditta.get_bool("SCOKEY", "ve", 3))
- {
- TString8 cz; cz.format("%-2s", (const char*)ven_rec.get(CFV_CODZONA));
- cod << cz;
- }
- else
- cod << " ";
- if( ditta.get_bool("SCOKEY", "ve", 4))
- cod << c.get(CLI_CODPAG);
- sconti.put("CODART", cod);
- if(sconti.read() == NOERR)
- set(F_SCONTOPERC, sconti.get( "SCONTO"));
- }
- break;
- default:
- break;
- }
- return;
+ TCli_for & c = doc().clifor();
+ TConfig ditta(CONFIG_DITTA, "ve");
+ const char tipogestione = ditta.get("GESSCO", "ve")[ 0 ];
+ switch( tipogestione )
+ {
+ case 'N': // Sconti non gestiti: pussa via!
+ break;
+ case 'P': // Percentuale su anagrafica cliente
+ set( F_SCONTOPERC, c.vendite().get(CFV_SCONTO));
+ break;
+ case 'T': // Gestione tabella sconti
+ {
+ const TString16 codsconto(c.vendite().get(CFV_CODSCC));
+
+ if (codsconto.not_empty())
+ {
+ TTable sconti("%SCC");
+ sconti.setkey(1);
+ sconti.zero();
+ sconti.put("CODTAB", codsconto);
+ if (sconti.read( ) == NOERR)
+ set(F_SCONTOPERC, sconti.get("S1"));
+ }
+ }
+ break;
+ case 'A': // Gestione archivio sconti
+ {
+ TString16 cod;
+ const TRectype & ven_rec = c.vendite();
+ TLocalisamfile sconti(LF_SCONTI );
+
+ sconti.setkey(1);
+ sconti.zero();
+ sconti.put("TIPO", "I");
+ if(ditta.get_bool("SCOKEY", "ve", 1))
+ sconti.put("CODCAT", ven_rec.get(CFV_CATVEN));
+ if(ditta.get_bool("SCOKEY", "ve", 2))
+ cod.format("%-2s", (const char *)ven_rec.get(CFV_CODSCC));
+ else
+ cod = " ";
+ if( ditta.get_bool("SCOKEY", "ve", 3))
+ {
+ TString8 cz; cz.format("%-2s", (const char*)ven_rec.get(CFV_CODZONA));
+ cod << cz;
+ }
+ else
+ cod << " ";
+ if( ditta.get_bool("SCOKEY", "ve", 4))
+ cod << c.get(CLI_CODPAG);
+ sconti.put("CODART", cod);
+ if(sconti.read() == NOERR)
+ set(F_SCONTOPERC, sconti.get( "SCONTO"));
+ }
+ break;
+ default:
+ break;
+ }
+ return;
}
void TDocumento_mask::spese2mask()
{
- TSheet_field & sh = (TSheet_field &) field(F_SHEET);
- TCli_for & c = doc().clifor();
-
- TString16 name("CODSP0");
- TString_array spese;
- TRectype & ven_rec = c.vendite();
- for (int i = 1; i <= 4; i++)
- {
- name.rtrim(1); name << i;
- const TString16 s(ven_rec.get(name));
-
- if (s.not_empty())
- spese.add(s);
- }
+ TSheet_field & sh = (TSheet_field &) field(F_SHEET);
+ TCli_for & c = doc().clifor();
+
+ TString16 name("CODSP0");
+ TString_array spese;
+ TRectype & ven_rec = c.vendite();
+ for (int i = 1; i <= 4; i++)
+ {
+ name.rtrim(1); name << i;
+ const TString16 s(ven_rec.get(name));
+
+ if (s.not_empty())
+ spese.add(s);
+ }
- doc().put("SPESEUPD", FALSE);
- doc().put(DOC_CODVAL, get(F_CODVAL));
- doc().put(DOC_CAMBIO, get(F_CAMBIO));
- doc().put(DOC_CONTROEURO, get(F_CONTROEURO));
-
- doc().update_spese_aut(spese, FALSE, &sh);
- sh.force_update();
+ doc().put("SPESEUPD", FALSE);
+ doc().put(DOC_CODVAL, get(F_CODVAL));
+ doc().put(DOC_CAMBIO, get(F_CAMBIO));
+ doc().put(DOC_CONTROEURO, get(F_CONTROEURO));
+
+ doc().update_spese_aut(spese, FALSE, &sh);
+ sh.force_update();
}
void TDocumento_mask::reset_masks(const TString& tipo_doc)
{
- static TString16 last_tipo_doc;
+ static TString16 last_tipo_doc;
- if (tipo_doc != last_tipo_doc)
- {
- FOR_EACH_ASSOC_OBJECT(_maskriga, h, k, o)
- {
- TMask* m = (TMask*)o;
- m->enable_default();
- if (!_sheet->exist_column(FR_PREZZO))
- m->hide(FR_PREZZO);
- }
- last_tipo_doc = tipo_doc;
- }
+ if (tipo_doc != last_tipo_doc)
+ {
+ FOR_EACH_ASSOC_OBJECT(_maskriga, h, k, o)
+ {
+ TMask* m = (TMask*)o;
+ m->enable_default();
+ if (!_sheet->exist_column(FR_PREZZO))
+ m->hide(FR_PREZZO);
+ }
+ last_tipo_doc = tipo_doc;
+ }
}
void TDocumento_mask::doc2mask(bool reload_clifo)
{
- TSheet_field& s = sfield(F_SHEET);
- s.destroy( );
+ TSheet_field& s = sfield(F_SHEET);
+ s.destroy( );
- for (int p = fields()-1; p >= 0; p--)
- {
- TMask_field& f = fld(p);
- const TFieldref* fr = f.field();
- if (fr)
- f.set(fr->read(doc()));
+ for (int p = fields()-1; p >= 0; p--)
+ {
+ TMask_field& f = fld(p);
+ const TFieldref* fr = f.field();
+ if (fr)
+ f.set(fr->read(doc()));
else
f.reset();
- }
+ }
- if (reload_clifo)
- cli2mask();
+ if (reload_clifo)
+ cli2mask();
- const int righe = doc().physical_rows();
- for (int i = 0; i < righe; i++)
- {
- s.insert(-1, FALSE);
- s.row(i); // qui verificare
- doc()[i+1].autoload(s);
- s.check_row(i, 0x2);
- }
+ const int righe = doc().physical_rows();
+ for (int i = 0; i < righe; i++)
+ {
+ s.insert(-1, FALSE);
+ s.row(i); // qui verificare
+ doc()[i+1].autoload(s);
+ s.check_row(i, 0x2);
+ }
- reset_masks(get(F_TIPODOC));
-
- s.force_update();
+ reset_masks(get(F_TIPODOC));
+
+ s.force_update();
}
void TDocumento_mask::mask2doc()
{
- for (int p = fields()-1; p >= 0; p--)
- {
- TMask_field& f = fld(p);
- const TFieldref* fr = f.field();
- if (fr)
- fr->write(f.get(), doc());
- }
+ for (int p = fields()-1; p >= 0; p--)
+ {
+ TMask_field& f = fld(p);
+ const TFieldref* fr = f.field();
+ if (fr)
+ fr->write(f.get(), doc());
+ }
}
TVariable_mask* TDocumento_mask::riga_mask(int numriga)
{
- const TRiga_documento& riga = doc()[numriga + 1];
- const TTipo_riga_documento& tiporiga = riga.tipo();
- TString16 name; tiporiga.mask_name(name);
+ const TRiga_documento& riga = doc()[numriga + 1];
+ const TTipo_riga_documento& tiporiga = riga.tipo();
+ TString16 name; tiporiga.mask_name(name);
- TVariable_mask* m = (TVariable_mask*)_maskriga.objptr(name);
- if (m == NULL)
- {
- m = new TVariable_mask(name);
+ TVariable_mask* m = (TVariable_mask*)_maskriga.objptr(name);
+ if (m == NULL)
+ {
+ m = new TVariable_mask(name);
- _maskriga.add(name, m);
-
- TFilename proname; tiporiga.profile_name(proname);
- TConfig pro( proname, "HANDLERS" );
-
- const int numhandler = pro.get_int( "NHANDLER", "HANDLERS" );
- for(int i = 1; i <= numhandler; i++)
- {
- TString8 chiave; chiave.format("%d", i );
- TToken_string riga(pro.get(chiave, "HANDLERS"));
- row_set_handler( *m, riga.get_int( 0 ), riga.get_int( 1 ) );
- }
-
- m->set_handler(FR_TIPORIGA, tipo_riga_handler);
+ _maskriga.add(name, m);
+
+ TFilename proname; tiporiga.profile_name(proname);
+ TConfig pro( proname, "HANDLERS" );
+
+ const int numhandler = pro.get_int( "NHANDLER", "HANDLERS" );
+ for(int i = 1; i <= numhandler; i++)
+ {
+ TString8 chiave; chiave.format("%d", i );
+ TToken_string riga(pro.get(chiave, "HANDLERS"));
+ row_set_handler( *m, riga.get_int(0), riga.get_int(1) );
+ }
+
+ m->set_handler(FR_TIPORIGA, tipo_riga_handler);
m->set_handler( FR_QTA, qta_handler );
- m->set_handler( FR_UMQTA, um_handler );
- m->set_handler( FR_DATACONS, dcons_handler);
+ m->set_handler( FR_UMQTA, um_handler );
+ m->set_handler( FR_DATACONS, dcons_handler);
TList_field & htr = lfield(F_LBTIPORIGA);
const TString codes(htr.get_codes());
const TString values(htr.get_values());
- m->lfield(FR_TIPORIGA).replace_items(codes, values);
-
- const int pos = m->id2pos(FR_CODART);
- if (pos >= 0)
- {
- const TMask_field & f = m->field(FR_CODART);
- if (f.is_edit())
- {
- TBrowse * browse = ((TEdit_field &) f).browse();
- const char tipo_r = tiporiga.tipo();
-
- if (browse )
- {
- const TCursor * cur = browse->cursor();
- if (cur)
- {
- const int num = cur->file().num();
- if (num == LF_ANAMAG || num == LF_CODCORR)
- {
- m->set_handler( FR_CODMAG, codmag_handler );
- m->set_handler( FR_CODMAGC, codmag_coll_handler );
- m->set_handler( FR_CODART, codart_handler );
- m->set_handler( FR_LIV1, liv_handler );
- m->set_handler( FR_LIV2, liv_handler );
- m->set_handler( FR_LIV3, liv_handler );
- m->set_handler( FR_LIV4, liv_handler );
- m->set_handler( FR_UMQTA, umart_handler );
- m->set_handler( FR_CODARTMAG, codartmag_handler );
- m->set_handler( FR_DESCR, descr_handler );
- m->set_handler( FR_QTA, qtaart_handler );
- if (livelli().autoinsert(1))
- m->field(FR_LIV1).check_type(CHECK_NONE);
- if (livelli().autoinsert(2))
- m->field(FR_LIV2).check_type(CHECK_NONE);
- if (livelli().autoinsert(3))
- m->field(FR_LIV3).check_type(CHECK_NONE);
- if (livelli().autoinsert(4))
- m->field(FR_LIV4).check_type(CHECK_NONE);
- }
- else
- if (tipo_r == RIGA_SPESEDOC || tipo_r == RIGA_PRESTAZIONI)
- m->set_handler( FR_CODART, sppr_handler );
- }
- }
- }
- }
- m->set_handler(FR_QTAEVASA, qta_evasa_handler);
- m->set_handler(FR_CAUS, causmag_handler);
-
- if (m->id2pos(FR_CODIVA) >= 0)
- {
- m->set_handler(FR_CODIVA, iva_handler);
- const TString& tipiva = doc().tipo().tipi_iva_validi();
- if (tipiva.not_empty())
- {
- TBrowse& browse = *(m->efield(FR_CODIVA)).browse();
- TString filter = browse.get_filter();
+ m->lfield(FR_TIPORIGA).replace_items(codes, values);
+
+ const int pos = m->id2pos(FR_CODART);
+ if (pos >= 0)
+ {
+ const TMask_field & f = m->field(FR_CODART);
+ if (f.is_edit())
+ {
+ TBrowse * browse = ((TEdit_field &) f).browse();
+ const char tipo_r = tiporiga.tipo();
+
+ if (browse )
+ {
+ const TCursor * cur = browse->cursor();
+ if (cur)
+ {
+ const int num = cur->file().num();
+ if (num == LF_ANAMAG || num == LF_CODCORR)
+ {
+ m->set_handler( FR_CODMAG, codmag_handler );
+ m->set_handler( FR_CODMAGC, codmag_coll_handler );
+ m->set_handler( FR_CODART, codart_handler );
+ m->set_handler( FR_LIV1, liv_handler );
+ m->set_handler( FR_LIV2, liv_handler );
+ m->set_handler( FR_LIV3, liv_handler );
+ m->set_handler( FR_LIV4, liv_handler );
+ m->set_handler( FR_UMQTA, umart_handler );
+ m->set_handler( FR_CODARTMAG, codartmag_handler );
+ m->set_handler( FR_DESCR, descr_handler );
+ m->set_handler( FR_QTA, qtaart_handler );
+ if (livelli().autoinsert(1))
+ m->field(FR_LIV1).check_type(CHECK_NONE);
+ if (livelli().autoinsert(2))
+ m->field(FR_LIV2).check_type(CHECK_NONE);
+ if (livelli().autoinsert(3))
+ m->field(FR_LIV3).check_type(CHECK_NONE);
+ if (livelli().autoinsert(4))
+ m->field(FR_LIV4).check_type(CHECK_NONE);
+ }
+ else
+ if (tipo_r == RIGA_SPESEDOC || tipo_r == RIGA_PRESTAZIONI)
+ m->set_handler( FR_CODART, sppr_handler );
+ }
+ }
+ }
+ }
+ m->set_handler(FR_QTAEVASA, qta_evasa_handler);
+ m->set_handler(FR_CAUS, causmag_handler);
+
+ if (m->id2pos(FR_CODIVA) >= 0)
+ {
+ m->set_handler(FR_CODIVA, iva_handler);
+ const TString& tipiva = doc().tipo().tipi_iva_validi();
+ if (tipiva.not_empty())
+ {
+ TBrowse& browse = *(m->efield(FR_CODIVA)).browse();
+ TString filter = browse.get_filter();
- bool close_filter = FALSE;
- if (filter.not_empty())
- {
- filter.insert("(");
- filter << ")&&(";
- close_filter = TRUE;
- }
- bool firstor = TRUE;
- for (int i = tipiva.len()-1; i >= 0; i--) if (tipiva[i] != ' ')
- {
- if (firstor)
- firstor = FALSE;
- else
- filter << "||";
- filter << "(S1==\"";
- switch(i)
- {
- case 1: filter << "VE"; break;
- case 2: filter << "ES"; break;
- case 3: filter << "NI"; break;
- case 4: filter << "NS"; break;
- default: break;
- }
- filter << "\")";
- }
- if (close_filter) filter << ')';
- browse.set_filter(filter);
- }
- m->set_handler(DLG_USER, link_handler);
- }
+ bool close_filter = FALSE;
+ if (filter.not_empty())
+ {
+ filter.insert("(");
+ filter << ")&&(";
+ close_filter = TRUE;
+ }
+ bool firstor = TRUE;
+ for (int i = tipiva.len()-1; i >= 0; i--) if (tipiva[i] != ' ')
+ {
+ if (firstor)
+ firstor = FALSE;
+ else
+ filter << "||";
+ filter << "(S1==\"";
+ switch(i)
+ {
+ case 1: filter << "VE"; break;
+ case 2: filter << "ES"; break;
+ case 3: filter << "NI"; break;
+ case 4: filter << "NS"; break;
+ default: break;
+ }
+ filter << "\")";
+ }
+ if (close_filter) filter << ')';
+ browse.set_filter(filter);
+ }
+ m->set_handler(DLG_USER, link_handler);
+ }
- bool ca_active = dongle().active(CMAUT) || dongle().active(CAAUT); // Qualsiasi cosa analitica va bene
- ca_active &= !(riga.is_descrizione() || riga.is_omaggio() || riga.is_sconto()); // Ignora 'ste righe
- if (ca_active)
- {
- const int page = m->win2page(m->fld(m->fields()-1).parent()); // Calcolo bastardo dell'ultima pagina
+ bool ca_active = dongle().active(CMAUT) || dongle().active(CAAUT); // Qualsiasi cosa analitica va bene
+ ca_active &= !(riga.is_descrizione() || riga.is_omaggio() || riga.is_sconto()); // Ignora 'ste righe
+ if (ca_active)
+ {
+ const int page = m->win2page(m->fld(m->fields()-1).parent()); // Calcolo bastardo dell'ultima pagina
- TConfig_anal ini;
- const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
- const bool use_fsc = fasinfo.levels() > 0;
+ TConfig_anal ini;
+ const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
+ const bool use_fsc = fasinfo.levels() > 0;
- int y = 1;
- short dlg = FR_CDC1; // id del primo campo da generare
- short dlgd = FR_DESCDC1;
+ int y = 1;
+ short dlg = FR_CDC1; // id del primo campo da generare
+ short dlgd = FR_DESCDC1;
- for (i = 0; i < 2; i++)
- {
- const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2
- if (level == "CDC") // Crea centro di costo
- {
- if (use_fsc && fasinfo.parent() == LF_CDC)
- insert_anal_fields(*m, page, LF_FASI, y, dlg, dlgd, false);
- else
- insert_anal_fields(*m, page, LF_CDC, y, dlg, dlgd, false);
- } else
- if (level == "CMS") // Crea commessa
- {
- if (use_fsc && fasinfo.parent() == LF_COMMESSE)
- insert_anal_fields(*m, page, LF_FASI, y, dlg, dlgd, false);
- else
- insert_anal_fields(*m, page, LF_COMMESSE, y, dlg, dlgd, false);
- }
- }
- if (use_fsc && fasinfo.parent() <= 0)
- insert_anal_fields(*m, page, LF_FASI, y, dlg, dlgd, false);
- }
- }
+ for (i = 0; i < 2; i++)
+ {
+ const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2
+ if (level == "CDC") // Crea centro di costo
+ {
+ if (use_fsc && fasinfo.parent() == LF_CDC)
+ insert_anal_fields(*m, page, LF_FASI, y, dlg, dlgd, false);
+ else
+ {
+ insert_anal_fields(*m, page, LF_CDC, y, dlg, dlgd, false);
+ m->set_handler( dlg - 1, cdc_mag_handler);
+ }
- m->set_sheet((TSheet_field *)&(field(F_SHEET)));
+ } else
+ if (level == "CMS") // Crea commessa
+ {
+ if (use_fsc && fasinfo.parent() == LF_COMMESSE)
+ insert_anal_fields(*m, page, LF_FASI, y, dlg, dlgd, false);
+ else
+ {
+ insert_anal_fields(*m, page, LF_COMMESSE, y, dlg, dlgd, false);
+ m->set_handler( dlg - 1, cms_mag_handler);
+ }
+ }
+ }
+ if (use_fsc && fasinfo.parent() <= 0)
+ insert_anal_fields(*m, page, LF_FASI, y, dlg, dlgd, false);
+ }
+ }
- int pos = m->id2pos(FR_PREZZO);
- if (pos >= 0)
- {
- TEditable_field & f =((TEditable_field &) m->fld(pos));
- f.reset_driver(F_CODVAL);
- f.add_driver(-F_CODVAL);
- }
-
- pos = m->id2pos(FR_IMPFISSO);
- if (pos >= 0)
- {
- TEditable_field & f =((TEditable_field &) m->fld(pos));
- f.reset_driver();
- f.add_driver(-F_CODVAL);
- }
+ m->set_sheet((TSheet_field *)&(field(F_SHEET)));
- return m;
+ int pos = m->id2pos(FR_PREZZO);
+ if (pos >= 0)
+ {
+ TEditable_field & f =((TEditable_field &) m->fld(pos));
+ f.reset_driver(F_CODVAL);
+ f.add_driver(-F_CODVAL);
+ }
+
+ pos = m->id2pos(FR_IMPFISSO);
+ if (pos >= 0)
+ {
+ TEditable_field & f =((TEditable_field &) m->fld(pos));
+ f.reset_driver();
+ f.add_driver(-F_CODVAL);
+ }
+
+ return m;
}
void TDocumento_mask::update_giacenza()
-{
- if (id2pos(F_CURGIAC)<0)
- return;
+{
+ if (id2pos(F_CURGIAC)<0)
+ return;
- TSheet_field& sf = sfield(F_SHEET);
- TToken_string& row = sf.row(sf.selected());
- const TString codart = row.get(sf.cid2index(FR_CODARTMAG));
-
- real giac, disp;
- if (!codart.blank())
- {
- TString16 codmag = row.get(sf.cid2index(FR_CODMAG));
- const TString16 coddep = row.get(sf.cid2index(FR_CODDEP));
- if (!coddep.blank())
- codmag << coddep;
-
- TString16 livello;
- for (int i = 0; i < 4; i++)
- {
- const char* liv = row.get(sf.cid2index(FR_LIV1+i));
- if (*liv > ' ')
- livello << liv;
- else
- break;
- }
-
- const TString8 annoes = get(F_ANNO);
- TArticolo_giacenza art(codart);
- giac = art.disponibilita(annoes, codmag, livello, TRUE);
- disp = art.disponibilita(annoes, codmag, livello, FALSE);
-
- TLocalisamfile umart(LF_UMART);
- umart.setkey(2);
- umart.put(UMART_CODART, codart);
- umart.put(UMART_UM, row.get(sf.cid2index(FR_UMQTA)));
- if (umart.read() == NOERR)
- {
- real curr_fc = umart.get_real(UMART_FC);
- if (curr_fc > ZERO)
- {
- giac /= curr_fc;
- disp /= curr_fc;
- }
- }
- }
-
- set(F_CURGIAC, giac.string());
- set(F_CURDISP, disp.string());
-
+ TSheet_field& sf = sfield(F_SHEET);
+ TToken_string& row = sf.row(sf.selected());
+ const TString codart = row.get(sf.cid2index(FR_CODARTMAG));
+
+ real giac, disp;
+ if (!codart.blank())
+ {
+ TString16 codmag = row.get(sf.cid2index(FR_CODMAG));
+ const TString16 coddep = row.get(sf.cid2index(FR_CODDEP));
+ if (!coddep.blank())
+ codmag << coddep;
+
+ TString16 livello;
+ for (int i = 0; i < 4; i++)
+ {
+ const char* liv = row.get(sf.cid2index(FR_LIV1+i));
+ if (*liv > ' ')
+ livello << liv;
+ else
+ break;
+ }
+
+ const TString8 annoes = get(F_ANNO);
+ TArticolo_giacenza art(codart);
+ giac = art.disponibilita(annoes, codmag, livello, TRUE);
+ disp = art.disponibilita(annoes, codmag, livello, FALSE);
+
+ TLocalisamfile umart(LF_UMART);
+ umart.setkey(2);
+ umart.put(UMART_CODART, codart);
+ umart.put(UMART_UM, row.get(sf.cid2index(FR_UMQTA)));
+ if (umart.read() == NOERR)
+ {
+ real curr_fc = umart.get_real(UMART_FC);
+ if (curr_fc > ZERO)
+ {
+ giac /= curr_fc;
+ disp /= curr_fc;
+ }
+ }
+ }
+
+ set(F_CURGIAC, giac.string());
+ set(F_CURDISP, disp.string());
+
}
///////////////////////////////////////////////////////////
// Handlers and notifiers
-///////////////////////////////////////////////////////////
-
+///////////////////////////////////////////////////////////
+
bool TDocumento_mask::ss_handler(TMask_field& f, KEY key)
-{
- bool ok = TRUE;
- if (key == K_ENTER && f.mask().insert_mode())
- {
- TSheet_field& ss = (TSheet_field&)f;
- if (!app().is_transaction() && ss.items() == 0)
- ok = yesno_box("Il documento e' privo di righe:\n"
- "Si desidera continuare ugualmente?");
- }
- return ok;
+{
+ bool ok = TRUE;
+ if (key == K_ENTER && f.mask().insert_mode())
+ {
+ TSheet_field& ss = (TSheet_field&)f;
+ if (!app().is_transaction() && ss.items() == 0)
+ ok = yesno_box("Il documento e' privo di righe:\n"
+ "Si desidera continuare ugualmente?");
+ }
+ return ok;
}
bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key )
{
- TDocumento_mask& m = (TDocumento_mask&)ss.mask();
- TDocumento& doc = m.doc();
+ TDocumento_mask& m = (TDocumento_mask&)ss.mask();
+ TDocumento& doc = m.doc();
- if ( key == K_ENTER ) // modifica
- {
+ if ( key == K_ENTER ) // modifica
+ {
static int calculated = 3;
- TRiga_documento & riga = doc[r + 1];
- riga.autosave(ss);
+ TRiga_documento & riga = doc[r + 1];
+ riga.autosave(ss);
if (calculated == 3)
calculated = m.is_calculated_page(m.curr_page());
if (calculated == (int) true)
m.update_progs();
- }
- else
- if ( key == K_DEL ) // Cancellazione
- {
- doc.destroy_row(r + 1, TRUE);
- if (r < doc.rows())
- {
- TRiga_documento & riga = doc[r + 1];
- if (riga.is_omaggio() && riga.is_generata())
- {
- ss.destroy(r + 1);
- doc.destroy_row(r + 1, TRUE);
- }
- }
- }
- else
- if (key == K_INS) // Inserimento
- {
-
+ }
+ else
+ if ( key == K_DEL ) // Cancellazione
+ {
+ doc.destroy_row(r + 1, TRUE);
+ if (r < doc.rows())
+ {
+ TRiga_documento & riga = doc[r + 1];
+ if (riga.is_omaggio() && riga.is_generata())
+ {
+ ss.destroy(r + 1);
+ doc.destroy_row(r + 1, TRUE);
+ }
+ }
+ }
+ else
+ if (key == K_INS) // Inserimento
+ {
+
if (r < doc.rows())
- {
- TRiga_documento & riga = doc[r + 1];
- if (riga.is_omaggio() && riga.is_generata())
- return FALSE;
- }
- doc.insert_row(r + 1, m.get( F_LBTIPORIGA ));
+ {
+ TRiga_documento & riga = doc[r + 1];
+ if (riga.is_omaggio() && riga.is_generata())
+ return FALSE;
+ }
+ doc.insert_row(r + 1, m.get( F_LBTIPORIGA ));
- }
- else
- if (key == K_CTRL + K_INS)
- {
- TRiga_documento & riga = doc[r + 1];
- TRectype & ven_rec = doc.clifor().vendite();
- TString16 s(ven_rec.get(CFV_CODMAG));
+ }
+ else
+ if (key == K_CTRL + K_INS)
+ {
+ TRiga_documento & riga = doc[r + 1];
+ TRectype & ven_rec = doc.clifor().vendite();
+ TString16 s(ven_rec.get(CFV_CODMAG));
const TTipo_riga_documento & t = riga.tipo();
- if (s.not_empty())
- {
- s.left_just(3);
- s << ven_rec.get(CFV_CODDEP);
- }
- else
- {
- s = m.get(F_CAUSMAG);
- if (!s.blank())
- {
- const TRectype & c=cache().get("%CAU", s);
- if (!c.empty() && !c.get("S10").blank())
- s = c.get("S10");
- else
- {
- s = m._std_mag;
- s.left_just(3);
- s << m._std_dep;
- }
- }
- }
- riga.put("CODMAG", s);
- riga.autoload(ss);
- ss.check_row(r);
+ if (s.not_empty())
+ {
+ s.left_just(3);
+ s << ven_rec.get(CFV_CODDEP);
+ }
+ else
+ {
+ s = m.get(F_CAUSMAG);
+ if (!s.blank())
+ {
+ const TRectype & c=cache().get("%CAU", s);
+ if (!c.empty() && !c.get("S10").blank())
+ s = c.get("S10");
+ else
+ {
+ s = m._std_mag;
+ s.left_just(3);
+ s << m._std_dep;
+ }
+ }
+ }
+ riga.put("CODMAG", s);
+ riga.autoload(ss);
+ ss.check_row(r);
t.set_defaults(ss, r + 1);
- }
- else
- if ( key == K_TAB ) // ingresso nella riga
- {
- m.update_giacenza();
- const TRectype& rdoc = doc[r + 1];
- set_curr_um(rdoc.get(RDOC_UMQTA));
- const bool on = rdoc.get(RDOC_DACODNUM).not_empty();
- ss.sheet_mask().enable(DLG_USER, on);
- }
+ }
+ else
+ if ( key == K_TAB ) // ingresso nella riga
+ {
+ m.update_giacenza();
+ const TRectype& rdoc = doc[r + 1];
+ set_curr_um(rdoc.get(RDOC_UMQTA));
+ const bool on = rdoc.get(RDOC_DACODNUM).not_empty();
+ ss.sheet_mask().enable(DLG_USER, on);
+ }
- return TRUE;
+ return TRUE;
}
// Funzione che dato il profilo di riga ottiene la maschera
// Serve per ottenere una maschera diversa per ogni riga
TMask* TDocumento_mask::ss_getmask(int numriga, TMask& fullmask)
{
- TSheet_field* sf = fullmask.get_sheet();
- TDocumento_mask& m = (TDocumento_mask&)sf->mask();
- const TDocumento& doc = m.doc();
+ TSheet_field* sf = fullmask.get_sheet();
+ TDocumento_mask& m = (TDocumento_mask&)sf->mask();
+ const TDocumento& doc = m.doc();
- if (numriga < doc.physical_rows())
- return m.riga_mask(numriga);
- else
- return &fullmask;
+ if (numriga < doc.physical_rows())
+ return m.riga_mask(numriga);
+ else
+ return &fullmask;
}
bool TDocumento_mask::occas_code_handler(TMask_field& f, KEY key)
{
- if (key == K_TAB && f.focusdirty())
- {
- const char* code = f.get();
- if (*code)
- {
- TRelation occas(LF_OCCAS);
- occas.lfile().put("CFPI", code);
- if (occas.read(_isequal) == NOERR)
- {
- TMask& m = f.mask();
- m.autoload(occas);
- m.send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
- m.send_key(K_TAB, O_COMUNENAS);
- }
- }
- }
- return TRUE;
+ if (key == K_TAB && f.focusdirty())
+ {
+ const char* code = f.get();
+ if (*code)
+ {
+ TRelation occas(LF_OCCAS);
+ occas.lfile().put("CFPI", code);
+ if (occas.read(_isequal) == NOERR)
+ {
+ TMask& m = f.mask();
+ m.autoload(occas);
+ m.send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
+ m.send_key(K_TAB, O_COMUNENAS);
+ }
+ }
+ }
+ return TRUE;
}
bool TDocumento_mask::occas_handler( TMask_field& f, KEY key )
{
- TDocumento_mask & m = (TDocumento_mask &)f.mask();
- if ( key == K_SPACE && m.is_running( ) )
- {
- TDocumento& doc = m.doc();
- TOccasionale& occ = doc.occas();
+ TDocumento_mask & m = (TDocumento_mask &)f.mask();
+ if ( key == K_SPACE && m.is_running( ) )
+ {
+ TDocumento& doc = m.doc();
+ TOccasionale& occ = doc.occas();
- TMask occas_mask("ve0100o");
- occas_mask.set_handler( O_CODICE, occas_code_handler );
+ TMask occas_mask("ve0100o");
+ occas_mask.set_handler( O_CODICE, occas_code_handler );
- for (int i = occas_mask.fields() - 1; i >= 0; i--)
- {
- TMask_field & f = occas_mask.fld(i);
- const TFieldref * c = f.field();
- if (c)
- f.set(c->read(occ));
- }
- if (occas_mask.run() != K_ESC)
- {
- const TString ocfpi(occas_mask.get(O_CODICE));
- doc.put("OCFPI", ocfpi);
- m.set(F_OCFPI, ocfpi);
-
- for (int i = occas_mask.fields() - 1; i >= 0; i--)
- {
- const TMask_field& f = occas_mask.fld(i);
- const TFieldref* c = f.field();
- if (c)
- {
- const char* val = f.get();
- c->write(val, occ);
- }
- }
- m.occ2mask();
- }
- f.set_focus( );
- }
- return TRUE;
+ for (int i = occas_mask.fields() - 1; i >= 0; i--)
+ {
+ TMask_field & f = occas_mask.fld(i);
+ const TFieldref * c = f.field();
+ if (c)
+ f.set(c->read(occ));
+ }
+ if (occas_mask.run() != K_ESC)
+ {
+ const TString ocfpi(occas_mask.get(O_CODICE));
+ doc.put("OCFPI", ocfpi);
+ m.set(F_OCFPI, ocfpi);
+
+ for (int i = occas_mask.fields() - 1; i >= 0; i--)
+ {
+ const TMask_field& f = occas_mask.fld(i);
+ const TFieldref* c = f.field();
+ if (c)
+ {
+ const char* val = f.get();
+ c->write(val, occ);
+ }
+ }
+ m.occ2mask();
+ }
+ f.set_focus( );
+ }
+ return TRUE;
}
bool TDocumento_mask::clifo_handler( TMask_field& f, KEY key )
{
- if (key != K_ENTER && f.to_check(key, TRUE))
- {
- TDocumento_mask & m = (TDocumento_mask &) f.mask();
- TDocumento & d = m.doc();
+ if (key != K_ENTER && f.to_check(key, TRUE))
+ {
+ TDocumento_mask & m = (TDocumento_mask &) f.mask();
+ TDocumento & d = m.doc();
- TTipo_documento& tdoc = (TTipo_documento&) d.tipo();
- d.put(DOC_TIPOCF, tdoc.tipocf());
- d.put(DOC_CODCF, f.get());
+ TTipo_documento& tdoc = (TTipo_documento&) d.tipo();
+ d.put(DOC_TIPOCF, tdoc.tipocf());
+ d.put(DOC_CODCF, f.get());
- TCli_for & cli_for = d.clifor();
- cli_for.put(CLI_CODCF, ""); // force reload
+ TCli_for & cli_for = d.clifor();
+ cli_for.put(CLI_CODCF, ""); // force reload
- if ( cli_for.get_bool(CLI_SOSPESO) )
- return f.error_box( "Il codice '%ld' e' sospeso e non puo' essere utilizzato", atol(f.get()));
- m.cli2mask();
- if (cli_for.occasionale())
- {
- TOccasionale& occas = d.occas();
- if(m.id2pos(F_OCCASEDIT) > 0 && f.to_check(key) && *(occas.codice()) == '\0')
- m.send_key( K_SPACE, F_OCCASEDIT ); // Lancia maschera occasionali
- }
- else
- d.zero(DOC_OCFPI);
- }
- return TRUE;
+ if ( cli_for.get_bool(CLI_SOSPESO) )
+ return f.error_box( "Il codice '%ld' e' sospeso e non puo' essere utilizzato", atol(f.get()));
+ m.cli2mask();
+ if (cli_for.occasionale())
+ {
+ TOccasionale& occas = d.occas();
+ if(m.id2pos(F_OCCASEDIT) > 0 && f.to_check(key) && *(occas.codice()) == '\0')
+ m.send_key( K_SPACE, F_OCCASEDIT ); // Lancia maschera occasionali
+ }
+ else
+ d.zero(DOC_OCFPI);
+ }
+ return TRUE;
}
void TDocumento_mask::highlight(COLOR high_back_color, COLOR high_color)
-{
- TSheet_field & sf = sfield(F_SHEET);
- const int items = sf.items();
-
- for (int i = 0 ; i < items; i++)
- {
- const bool on = doc()[i + 1].linked();
-
- COLOR back = on ? high_back_color : NORMAL_BACK_COLOR;
- COLOR fore = on ? high_color : NORMAL_COLOR;
-
- sf.set_back_and_fore_color(back, fore, i);
- sf.force_update(i);
- }
+{
+ TSheet_field & sf = sfield(F_SHEET);
+ const int items = sf.items();
+
+ for (int i = 0 ; i < items; i++)
+ {
+ const bool on = doc()[i + 1].linked();
+
+ COLOR back = on ? high_back_color : NORMAL_BACK_COLOR;
+ COLOR fore = on ? high_color : NORMAL_COLOR;
+
+ sf.set_back_and_fore_color(back, fore, i);
+ sf.force_update(i);
+ }
}
///////////////////////////////////////////////////////////
// TLista_elaborazioni
///////////////////////////////////////////////////////////
-class TLista_elaborazioni : public TObject // velib04
-{
- TAssoc_array * _elab;
-
+class TLista_elaborazioni : public TObject // velib04
+{
+ TAssoc_array * _elab;
+
protected:
- void read();
-
-public:
- TElaborazione & operator [](const char * key) const;
- int select(TString_array & result, const char * tipo_iniziale = NULL, const char * stato_iniziale = NULL, const char * tipo_finale = NULL, const char * stato_finale = NULL);
- void update();
- TLista_elaborazioni() : _elab(NULL) {}
- virtual ~TLista_elaborazioni();
+ void read();
+
+public:
+ TElaborazione & operator [](const char * key) const;
+ int select(TString_array & result, const char * tipo_iniziale = NULL, const char * stato_iniziale = NULL, const char * tipo_finale = NULL, const char * stato_finale = NULL);
+ void update();
+ TLista_elaborazioni() : _elab(NULL) {}
+ virtual ~TLista_elaborazioni();
};
void TLista_elaborazioni::read()
-{
- if (_elab == NULL)
- {
- _elab = new TAssoc_array();
-
- TTable eld("%ELD");
-
- for (int err = eld.first(); err == NOERR; err = eld.next())
- {
- TElaborazione * el = NULL;
- switch (eld.curr().get_int("I0"))
- {
- case _esterna :
- el = new TElaborazione_esterna(eld.curr());
- break;
- case _consegna_ordini:
- el = new TConsegna_ordini(eld.curr());
- break;
- case _fatturazione_bolle :
- el = new TFatturazione_bolle(eld.curr());
- break;
- case _contabilizzazione :
- el = new TContabilizzazione(eld.curr());
- break;
- case _copia_documento :
- el = new TCopia_documento(eld.curr());
- break;
- case _generazione_effetti :
- el = new TGenerazione_effetti(eld.curr());
- break;
- case _consuntivazione_produzione :
- el = new TConsuntivazione_produzione(eld.curr());
- break;
- case _contabilizzazione_analitica :
- el = new TContabilizzazione_analitica(eld.curr());
- break;
- default :
- break;
- }
- _elab->add(el->codice(), el);
- }
- }
-}
+{
+ if (_elab == NULL)
+ {
+ _elab = new TAssoc_array();
+
+ TTable eld("%ELD");
+
+ for (int err = eld.first(); err == NOERR; err = eld.next())
+ {
+ TElaborazione * el = NULL;
+ switch (eld.curr().get_int("I0"))
+ {
+ case _esterna :
+ el = new TElaborazione_esterna(eld.curr());
+ break;
+ case _consegna_ordini:
+ el = new TConsegna_ordini(eld.curr());
+ break;
+ case _fatturazione_bolle :
+ el = new TFatturazione_bolle(eld.curr());
+ break;
+ case _contabilizzazione :
+ el = new TContabilizzazione(eld.curr());
+ break;
+ case _copia_documento :
+ el = new TCopia_documento(eld.curr());
+ break;
+ case _generazione_effetti :
+ el = new TGenerazione_effetti(eld.curr());
+ break;
+ case _consuntivazione_produzione :
+ el = new TConsuntivazione_produzione(eld.curr());
+ break;
+ case _contabilizzazione_analitica :
+ el = new TContabilizzazione_analitica(eld.curr());
+ break;
+ default :
+ break;
+ }
+ _elab->add(el->codice(), el);
+ }
+ }
+}
int TLista_elaborazioni::select(TString_array & result, const char * tipo_iniziale, const char * stato_iniziale, const char * tipo_finale, const char * stato_finale)
{
- read();
- _elab->restart();
- result.destroy();
- for (TElaborazione * el = (TElaborazione *)_elab->get(); el ; el = (TElaborazione *) _elab->get())
- {
- bool ok = FALSE;
- TString ti;
- if ((tipo_iniziale && *tipo_iniziale) && (stato_iniziale && *stato_iniziale))
- for (int i = 0; !ok && i < TElaborazione::_max_tipi_doc_elab; i++)
- {
- ti = el->tipo_iniziale(i);
- const char si = el->stato_iniziale(i);
- ok |= ti == tipo_iniziale &&
- si == *stato_iniziale;
- }
- else
- ok = TRUE;
- if ((tipo_finale && *tipo_finale) && (stato_finale && *stato_finale))
- ok &= el->tipo_finale() == tipo_finale &&
- el->stato_finale() == stato_finale;
- if (ok)
- result.add(el->codice());
- }
- return result.items();
+ read();
+ _elab->restart();
+ result.destroy();
+ for (TElaborazione * el = (TElaborazione *)_elab->get(); el ; el = (TElaborazione *) _elab->get())
+ {
+ bool ok = FALSE;
+ TString ti;
+ if ((tipo_iniziale && *tipo_iniziale) && (stato_iniziale && *stato_iniziale))
+ for (int i = 0; !ok && i < TElaborazione::_max_tipi_doc_elab; i++)
+ {
+ ti = el->tipo_iniziale(i);
+ const char si = el->stato_iniziale(i);
+ ok |= ti == tipo_iniziale &&
+ si == *stato_iniziale;
+ }
+ else
+ ok = TRUE;
+ if ((tipo_finale && *tipo_finale) && (stato_finale && *stato_finale))
+ ok &= el->tipo_finale() == tipo_finale &&
+ el->stato_finale() == stato_finale;
+ if (ok)
+ result.add(el->codice());
+ }
+ return result.items();
}
-
+
TElaborazione & TLista_elaborazioni::operator [](const char * key) const
{
- ((TLista_elaborazioni *)this)->read();
- return (TElaborazione &) (*_elab)[key];
+ ((TLista_elaborazioni *)this)->read();
+ return (TElaborazione &) (*_elab)[key];
}
void TLista_elaborazioni::update()
{
- delete _elab; _elab = NULL;
- read();
-}
+ delete _elab; _elab = NULL;
+ read();
+}
TLista_elaborazioni::~TLista_elaborazioni()
-{
- if (_elab)
- delete _elab;
-}
+{
+ if (_elab)
+ delete _elab;
+}
///////////////////////////////////////////////////////////
// TDocument_tree
@@ -1575,23 +1588,23 @@ TLista_elaborazioni::~TLista_elaborazioni()
class TDocument_tree : public TBidirectional_tree
{
- TRelation* _relation;
- TCursor* _cursor;
- TToken_string _curnode;
+ TRelation* _relation;
+ TCursor* _cursor;
+ TToken_string _curnode;
bool _multiple_selection;
TAssoc_array _selected_docs;
TString _selected;
-
-protected:
- virtual void node2id(const TObject* node, TString& id) const;
- bool on_head() const;
- bool on_row() const;
-
- void format_field(const TRectype& rec, const TString& field, TString& str) const;
- void append_custom_fields(const TTipo_documento& tipo, const TRectype& rec, TString& str) const;
+
+protected:
+ virtual void node2id(const TObject* node, TString& id) const;
+ bool on_head() const;
+ bool on_row() const;
+
+ void format_field(const TRectype& rec, const TString& field, TString& str) const;
+ void append_custom_fields(const TTipo_documento& tipo, const TRectype& rec, TString& str) const;
-public:
+public:
void multiple_selection(bool on);
bool multiple_selection() const { return _multiple_selection;}
bool node_selected(const TObject* node = NULL) const;
@@ -1599,77 +1612,77 @@ public:
real select_doc(long numdoc);
void build_doc_list(TLista_documenti & docs);
void unselect_node(const TObject* node) { select_node(node, false);}
- virtual bool goto_root();
- virtual bool goto_firstson();
- virtual bool goto_rbrother();
- virtual bool goto_node(const TString &id);
- virtual bool has_son() const;
- virtual bool has_rbrother() const;
- virtual bool has_father() const;
- virtual bool has_lbrother() const;
- virtual bool goto_father();
- virtual bool goto_lbrother();
- virtual TObject* curr_node() const { return &(TToken_string&)_curnode; }
- virtual bool get_description(TString& str) const;
- virtual TImage* image(bool selected) const;
+ virtual bool goto_root();
+ virtual bool goto_firstson();
+ virtual bool goto_rbrother();
+ virtual bool goto_node(const TString &id);
+ virtual bool has_son() const;
+ virtual bool has_rbrother() const;
+ virtual bool has_father() const;
+ virtual bool has_lbrother() const;
+ virtual bool goto_father();
+ virtual bool goto_lbrother();
+ virtual TObject* curr_node() const { return &(TToken_string&)_curnode; }
+ virtual bool get_description(TString& str) const;
+ virtual TImage* image(bool selected) const;
void select(TString & id) { _selected = id;}
const TString & selected() const { return _selected;}
- const TRectype& testata() const;
- const TRectype& riga() const;
- const TRectype& record() const;
+ const TRectype& testata() const;
+ const TRectype& riga() const;
+ const TRectype& record() const;
const real totale_doc() const { TDocumento d(testata()); return d.totale_doc();}
- void set_cursor(char tipocf, long codcf, int anno, const char* filter, FILTERFUNCTION ff = NULL);
- TCursor* get_cursor() { return _cursor; }
+ void set_cursor(char tipocf, long codcf, int anno, const char* filter, FILTERFUNCTION ff = NULL);
+ TCursor* get_cursor() { return _cursor; }
- TDocument_tree();
- ~TDocument_tree();
+ TDocument_tree();
+ ~TDocument_tree();
};
const TRectype& TDocument_tree::testata() const
-{
- TDocument_tree& me = (TDocument_tree&)*this;
- const TRecnotype pos = me._curnode.get_long(0);
- if (_cursor->pos() != pos || _relation->curr(LF_RIGHEDOC).empty())
- *me._cursor = pos;
- return _relation->curr();
+{
+ TDocument_tree& me = (TDocument_tree&)*this;
+ const TRecnotype pos = me._curnode.get_long(0);
+ if (_cursor->pos() != pos || _relation->curr(LF_RIGHEDOC).empty())
+ *me._cursor = pos;
+ return _relation->curr();
}
const TRectype& TDocument_tree::riga() const
{
- TDocument_tree& me = (TDocument_tree&)*this;
- const TRectype& rec = _relation->curr(LF_RIGHEDOC);
- const TRecnotype pos = me._curnode.get_long(0);
- const int nriga = me._curnode.get_int(1);
- if (_cursor->pos() != pos || rec.get_int(RDOC_NRIGA) > nriga)
- *me._cursor = pos;
- for (int i = rec.get_int(RDOC_NRIGA); i < nriga; i++)
- _relation->next_match(LF_RIGHEDOC);
- return rec;
+ TDocument_tree& me = (TDocument_tree&)*this;
+ const TRectype& rec = _relation->curr(LF_RIGHEDOC);
+ const TRecnotype pos = me._curnode.get_long(0);
+ const int nriga = me._curnode.get_int(1);
+ if (_cursor->pos() != pos || rec.get_int(RDOC_NRIGA) > nriga)
+ *me._cursor = pos;
+ for (int i = rec.get_int(RDOC_NRIGA); i < nriga; i++)
+ _relation->next_match(LF_RIGHEDOC);
+ return rec;
}
const TRectype& TDocument_tree::record() const
{
- return on_row() ? riga() : testata();
+ return on_row() ? riga() : testata();
}
void TDocument_tree::node2id(const TObject* node, TString& id) const
{
- id = *(TString*)node;
+ id = *(TString*)node;
}
bool TDocument_tree::on_head() const
{
- TDocument_tree& me = (TDocument_tree&)*this;
- return me._curnode.get_int(1) == 0;
+ TDocument_tree& me = (TDocument_tree&)*this;
+ return me._curnode.get_int(1) == 0;
}
bool TDocument_tree::on_row() const
{
- TDocument_tree& me = (TDocument_tree&)*this;
- return me._curnode.get_int(1) > 0;
+ TDocument_tree& me = (TDocument_tree&)*this;
+ return me._curnode.get_int(1) > 0;
}
void TDocument_tree::multiple_selection(bool on)
@@ -1751,173 +1764,173 @@ void TDocument_tree::build_doc_list(TLista_documenti & docs)
bool TDocument_tree::goto_root()
{
- const bool ok = _cursor != NULL && _cursor->items()>0;
- _curnode = ok ? "0" : "";
- *_cursor = 0;
- return ok;
+ const bool ok = _cursor != NULL && _cursor->items()>0;
+ _curnode = ok ? "0" : "";
+ *_cursor = 0;
+ return ok;
}
bool TDocument_tree::goto_firstson()
{
- bool ok = has_son();
- if (ok)
- _curnode.add(1,1);
- return ok;
+ bool ok = has_son();
+ if (ok)
+ _curnode.add(1,1);
+ return ok;
}
bool TDocument_tree::goto_rbrother()
{
- bool ok = has_rbrother();
- if (ok)
- {
- if (on_head())
- {
- const long pos = _curnode.get_long(0);
- _curnode.add(pos+1, 0);
- }
- else
- {
- const int nriga = _curnode.get_int(1);
- _curnode.add(nriga+1, 1);
- }
- }
- return ok;
+ bool ok = has_rbrother();
+ if (ok)
+ {
+ if (on_head())
+ {
+ const long pos = _curnode.get_long(0);
+ _curnode.add(pos+1, 0);
+ }
+ else
+ {
+ const int nriga = _curnode.get_int(1);
+ _curnode.add(nriga+1, 1);
+ }
+ }
+ return ok;
}
bool TDocument_tree::goto_node(const TString &id)
-{
- _curnode = id;
- return TRUE;
+{
+ _curnode = id;
+ return TRUE;
}
bool TDocument_tree::has_son() const
{
- bool ok = on_head();
- if (ok)
- {
- testata();
- const TRectype& rec = _relation->curr(LF_RIGHEDOC);
- ok = rec.get_int(RDOC_NRIGA) > 0;
- }
- return ok;
+ bool ok = on_head();
+ if (ok)
+ {
+ testata();
+ const TRectype& rec = _relation->curr(LF_RIGHEDOC);
+ ok = rec.get_int(RDOC_NRIGA) > 0;
+ }
+ return ok;
}
bool TDocument_tree::has_rbrother() const
{
- bool ok = FALSE;
- if (on_head())
- {
- TDocument_tree& me = (TDocument_tree&)*this;
- const long pos = me._curnode.get_long(0);
- ok = pos < _cursor->items()-1;
- }
- else
- {
- riga(); // Posizionati sulla riga corrente
- ok = _relation->next_match(LF_RIGHEDOC);
- }
- return ok;
+ bool ok = FALSE;
+ if (on_head())
+ {
+ TDocument_tree& me = (TDocument_tree&)*this;
+ const long pos = me._curnode.get_long(0);
+ ok = pos < _cursor->items()-1;
+ }
+ else
+ {
+ riga(); // Posizionati sulla riga corrente
+ ok = _relation->next_match(LF_RIGHEDOC);
+ }
+ return ok;
}
bool TDocument_tree::has_father() const
{
- return on_row();
+ return on_row();
}
bool TDocument_tree::has_lbrother() const
{
- bool ok = FALSE;
- TDocument_tree& me = (TDocument_tree&)*this;
- if (on_head())
- {
- const long pos = me._curnode.get_long(0);
- ok = pos > 0L;
- }
- else
- {
- const int nriga = me._curnode.get_int(1);
- ok = nriga > 1;
- }
- return ok;
+ bool ok = FALSE;
+ TDocument_tree& me = (TDocument_tree&)*this;
+ if (on_head())
+ {
+ const long pos = me._curnode.get_long(0);
+ ok = pos > 0L;
+ }
+ else
+ {
+ const int nriga = me._curnode.get_int(1);
+ ok = nriga > 1;
+ }
+ return ok;
}
bool TDocument_tree::goto_father()
{
- bool ok = on_row();
- if (ok)
- _curnode.add(0, 1);
- return ok;
+ bool ok = on_row();
+ if (ok)
+ _curnode.add(0, 1);
+ return ok;
}
bool TDocument_tree::goto_lbrother()
{
- bool ok = has_lbrother();
- if (ok)
- {
- if (on_head())
- {
- const long pos = _curnode.get_long(0);
- _curnode.add(pos-1, 0);
- }
- else
- {
- const int nriga = _curnode.get_int(1);
- _curnode.add(nriga-1, 1);
- }
- }
- return ok;
+ bool ok = has_lbrother();
+ if (ok)
+ {
+ if (on_head())
+ {
+ const long pos = _curnode.get_long(0);
+ _curnode.add(pos-1, 0);
+ }
+ else
+ {
+ const int nriga = _curnode.get_int(1);
+ _curnode.add(nriga-1, 1);
+ }
+ }
+ return ok;
}
void TDocument_tree::format_field(const TRectype& rec, const TString& field, TString& str) const
{
- const TFieldref fld(field, rec.num());
- const TString& value = fld.read(rec);
- const TFieldtypes ft = rec.type(fld.name());
- if (ft == _realfld)
- {
- const int len = rec.length(fld.name());
- const int ndec = rec.ndec(fld.name());
- TString8 pic; pic.format(".%d", ndec);
- const real r(value);
- str = r.string(pic);
- str.right_just(len);
- }
- else
- str = value;
+ const TFieldref fld(field, rec.num());
+ const TString& value = fld.read(rec);
+ const TFieldtypes ft = rec.type(fld.name());
+ if (ft == _realfld)
+ {
+ const int len = rec.length(fld.name());
+ const int ndec = rec.ndec(fld.name());
+ TString8 pic; pic.format(".%d", ndec);
+ const real r(value);
+ str = r.string(pic);
+ str.right_just(len);
+ }
+ else
+ str = value;
}
void TDocument_tree::append_custom_fields(const TTipo_documento& tipo, const TRectype& rec, TString& str) const
{
- const TString& format = rec.num() == LF_DOC ? tipo.stringa_descrizione_documento()
- : tipo.stringa_descrizione_riga();
- if (format.not_empty())
- {
- str << ' ';
- int ch = -1;
- TString tmp;
- for (int ap = format.find('{'); ap >= 0; ap = format.find('{', ch+1))
- {
- str << format.sub(ch+1, ap);
- ch = format.find('}', ap);
- const TString16 field = format.sub(ap+1, ch);
- if (!field.blank())
- {
- format_field(rec, field, tmp);
- str << tmp;
- }
- }
- str << format.mid(ch+1);
- }
+ const TString& format = rec.num() == LF_DOC ? tipo.stringa_descrizione_documento()
+ : tipo.stringa_descrizione_riga();
+ if (format.not_empty())
+ {
+ str << ' ';
+ int ch = -1;
+ TString tmp;
+ for (int ap = format.find('{'); ap >= 0; ap = format.find('{', ch+1))
+ {
+ str << format.sub(ch+1, ap);
+ ch = format.find('}', ap);
+ const TString16 field = format.sub(ap+1, ch);
+ if (!field.blank())
+ {
+ format_field(rec, field, tmp);
+ str << tmp;
+ }
+ }
+ str << format.mid(ch+1);
+ }
}
TImage* TDocument_tree::image(bool selected) const
-{
- if (on_row())
- {
- const TRectype& rec = riga();
- if (rec.get_bool(RDOC_RIGAEVASA))
- return get_res_image(BMP_STOP);
- }
+{
+ if (on_row())
+ {
+ const TRectype& rec = riga();
+ if (rec.get_bool(RDOC_RIGAEVASA))
+ return get_res_image(BMP_STOP);
+ }
else
if (multiple_selection())
{
@@ -1931,102 +1944,102 @@ TImage* TDocument_tree::image(bool selected) const
return get_res_image(BMP_DIRSEL);
}
}
- return TTree::image(selected);
+ return TTree::image(selected);
}
bool TDocument_tree::get_description(TString& str) const
{
- if (on_head())
- {
- const TRectype& rec = testata();
- str = rec.get(DOC_ANNO);
- str << ' ' << rec.get(DOC_CODNUM);
- TString16 tmp;
- tmp.format("%6ld", rec.get_long(DOC_NDOC));
- str << ' ' << tmp << ' ' << rec.get(DOC_DATADOC);
- const char tipocf = rec.get_char(DOC_TIPOCF);
- const long codcf = rec.get_long(DOC_CODCF);
- tmp.format(" %c%6ld ", tipocf, codcf);
- str << tmp;
- tmp.format("%c|%6ld", tipocf, codcf);
- str << cache().get(LF_CLIFO, tmp, CLI_RAGSOC);
- str.left_just(63);
-
- const TString& tipodoc = rec.get(DOC_TIPODOC);
- const TTipo_documento& tipo = TDocumento::tipo(tipodoc);
- append_custom_fields(tipo, rec, str);
- }
- else
- {
- const TRectype& rec = riga();
- const TRectype& testata = _relation->curr();
-
- const TString80 codart = rec.get(RDOC_CODART);
- str = codart;
- str.left_just(21);
- str << rec.get(RDOC_DESCR).left(30);
- str.left_just(52);
-
- const TString& tipodoc = testata.get(DOC_TIPODOC);
- const TTipo_documento& tipo = TDocumento::tipo(tipodoc);
- if (codart.not_empty())
- {
- const real qta = rec.get_real(tipo.field_qta());
- str << qta.string("###.###.##@,@@@");
+ if (on_head())
+ {
+ const TRectype& rec = testata();
+ str = rec.get(DOC_ANNO);
+ str << ' ' << rec.get(DOC_CODNUM);
+ TString16 tmp;
+ tmp.format("%6ld", rec.get_long(DOC_NDOC));
+ str << ' ' << tmp << ' ' << rec.get(DOC_DATADOC);
+ const char tipocf = rec.get_char(DOC_TIPOCF);
+ const long codcf = rec.get_long(DOC_CODCF);
+ tmp.format(" %c%6ld ", tipocf, codcf);
+ str << tmp;
+ tmp.format("%c|%6ld", tipocf, codcf);
+ str << cache().get(LF_CLIFO, tmp, CLI_RAGSOC);
+ str.left_just(63);
+
+ const TString& tipodoc = rec.get(DOC_TIPODOC);
+ const TTipo_documento& tipo = TDocumento::tipo(tipodoc);
+ append_custom_fields(tipo, rec, str);
+ }
+ else
+ {
+ const TRectype& rec = riga();
+ const TRectype& testata = _relation->curr();
+
+ const TString80 codart = rec.get(RDOC_CODART);
+ str = codart;
+ str.left_just(21);
+ str << rec.get(RDOC_DESCR).left(30);
+ str.left_just(52);
+
+ const TString& tipodoc = testata.get(DOC_TIPODOC);
+ const TTipo_documento& tipo = TDocumento::tipo(tipodoc);
+ if (codart.not_empty())
+ {
+ const real qta = rec.get_real(tipo.field_qta());
+ str << qta.string("###.###.##@,@@@");
- if (tipo.is_ordine())
- {
- const real qta_evasa = rec.get_real(tipo.field_qtaevasa());
- const real residuo = qta_evasa < qta ? (qta-qta_evasa) : ZERO;
- str << residuo.string("###.###.##@,@@@");
- }
- append_custom_fields(tipo, rec, str);
- }
- }
- return TRUE;
+ if (tipo.is_ordine())
+ {
+ const real qta_evasa = rec.get_real(tipo.field_qtaevasa());
+ const real residuo = qta_evasa < qta ? (qta-qta_evasa) : ZERO;
+ str << residuo.string("###.###.##@,@@@");
+ }
+ append_custom_fields(tipo, rec, str);
+ }
+ }
+ return TRUE;
}
void TDocument_tree::set_cursor(char tipocf, long codcf, int anno, const char* filter, FILTERFUNCTION ff)
{
- if (_relation == NULL)
- {
- _relation = new TRelation(LF_DOC);
- _relation->add(LF_RIGHEDOC, "PROVV==PROVV|ANNO==ANNO|CODNUM==CODNUM|NDOC==NDOC");
- }
- if (_cursor == NULL)
- {
- _cursor = new TCursor(_relation, "", 2);
- }
- TRectype& rec = _relation->curr();
- rec.zero();
- rec.put(DOC_TIPOCF, tipocf);
- rec.put(DOC_CODCF, codcf);
- rec.put(DOC_PROVV, "D");
- rec.put(DOC_ANNO, anno);
- _cursor->freeze(FALSE);
- _cursor->setfilter(""); // Force cursor rebuild
- _cursor->setfilter(filter);
- _cursor->setregion(rec, rec);
- const long items = _cursor->items();
- _cursor->freeze(TRUE);
-
- goto_root();
- if (items <= 3)
- expand_all();
+ if (_relation == NULL)
+ {
+ _relation = new TRelation(LF_DOC);
+ _relation->add(LF_RIGHEDOC, "PROVV==PROVV|ANNO==ANNO|CODNUM==CODNUM|NDOC==NDOC");
+ }
+ if (_cursor == NULL)
+ {
+ _cursor = new TCursor(_relation, "", 2);
+ }
+ TRectype& rec = _relation->curr();
+ rec.zero();
+ rec.put(DOC_TIPOCF, tipocf);
+ rec.put(DOC_CODCF, codcf);
+ rec.put(DOC_PROVV, "D");
+ rec.put(DOC_ANNO, anno);
+ _cursor->freeze(FALSE);
+ _cursor->setfilter(""); // Force cursor rebuild
+ _cursor->setfilter(filter);
+ _cursor->setregion(rec, rec);
+ const long items = _cursor->items();
+ _cursor->freeze(TRUE);
+
+ goto_root();
+ if (items <= 3)
+ expand_all();
}
TDocument_tree::TDocument_tree()
- : _relation(NULL), _cursor(NULL), _multiple_selection(false)
+ : _relation(NULL), _cursor(NULL), _multiple_selection(false)
{
}
TDocument_tree::~TDocument_tree()
{
- if (_cursor)
- delete _cursor;
- if (_relation)
- delete _relation;
+ if (_cursor)
+ delete _cursor;
+ if (_relation)
+ delete _relation;
}
///////////////////////////////////////////////////////////
@@ -2034,52 +2047,52 @@ TDocument_tree::~TDocument_tree()
///////////////////////////////////////////////////////////
class TElabora_mask : public TAutomask
-{
- TDocumento_mask* _main;
- TLista_elaborazioni _elab;
- TDocument_tree _tree;
+{
+ TDocumento_mask* _main;
+ TLista_elaborazioni _elab;
+ TDocument_tree _tree;
int _check_fld;
- TElaborazione* _last_elab;
-
+ TElaborazione* _last_elab;
+
// @access Protected Member
-protected:
- TString _art_filter, _liv_filter;
- static TElabora_mask* _myself;
- static bool article_filter(const TRelation* rel);
+protected:
+ TString _art_filter, _liv_filter;
+ static TElabora_mask* _myself;
+ static bool article_filter(const TRelation* rel);
- void add_valuta_filter(TString& filter) const;
-
- void docrif_search();
- int update_list();
- void update_ndoc_filter(bool is_tipo_elaborazione = FALSE);
+ void add_valuta_filter(TString& filter) const;
+
+ void docrif_search();
+ int update_list();
+ void update_ndoc_filter(bool is_tipo_elaborazione = FALSE);
- virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
-
+ virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
+
// @access Public Member
-public:
- bool elabora();
- TElaborazione* curr_elab();
+public:
+ bool elabora();
+ TElaborazione* curr_elab();
- // @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk)
- TElabora_mask(TDocumento_mask& main_mask);
- // @cmember Distruttore
- virtual ~TElabora_mask() {}
+ // @cmember Costruttore (crea la maschera leggendo la descrizione dal file .msk)
+ TElabora_mask(TDocumento_mask& main_mask);
+ // @cmember Distruttore
+ virtual ~TElabora_mask() {}
};
TElabora_mask* TElabora_mask::_myself = NULL;
bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
- switch (o.dlg())
- {
- case F_CODART:
- case F_CODNUM_ELAB:
- if (e == fe_modify)
- update_ndoc_filter();
- break;
- case F_NDOC_ELAB:
- if (e == fe_init || e == fe_modify)
+ switch (o.dlg())
+ {
+ case F_CODART:
+ case F_CODNUM_ELAB:
+ if (e == fe_modify)
+ update_ndoc_filter();
+ break;
+ case F_NDOC_ELAB:
+ if (e == fe_init || e == fe_modify)
{
const long ndoc = atol(o.get());
@@ -2093,22 +2106,22 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
}
}
}
- break;
- case F_TYPE:
- if (e == fe_init || e == fe_modify)
- {
- int ne = update_list();
- if (e == fe_init && ne == 0) // Riprova a cambiare flag e ricostruire la lista
- {
- set(F_TYPE, "X");
- ne = update_list();
- if (ne == 0)
- set(F_TYPE, "");
- }
- update_ndoc_filter(TRUE);
+ break;
+ case F_TYPE:
+ if (e == fe_init || e == fe_modify)
+ {
+ int ne = update_list();
+ if (e == fe_init && ne == 0) // Riprova a cambiare flag e ricostruire la lista
+ {
+ set(F_TYPE, "X");
+ ne = update_list();
+ if (ne == 0)
+ set(F_TYPE, "");
+ }
+ update_ndoc_filter(TRUE);
const bool add_to_doc = o.get().not_empty();
- const bool is_search = !add_to_doc || field(F_CODCF_ELAB).empty();
- o.mask().field(F_NDOC_ELAB).check_type(is_search ? CHECK_SEARCH : CHECK_NORMAL);
+ const bool is_search = !add_to_doc || field(F_CODCF_ELAB).empty();
+ o.mask().field(F_NDOC_ELAB).check_type(is_search ? CHECK_SEARCH : CHECK_NORMAL);
_tree.multiple_selection(add_to_doc);
bool check_tot = false;
if (add_to_doc)
@@ -2116,13 +2129,13 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
if (_check_fld < -1)
{
_check_fld = -1;
- const TString_array& handlers = _main->doc().tipo().handlers();
+ const TString_array& handlers = _main->doc().tipo().handlers();
const int items = handlers.items();
-
+
for (int i = 0; i < items; i ++ )
{
TToken_string& riga = (TToken_string&) handlers[i];
-
+
if (riga.get_int(1) == 2)
_check_fld = riga.get_int(0);
}
@@ -2134,31 +2147,31 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
o.mask().show(-GRP_CHK, check_tot);
if (check_tot)
o.mask().set(F_TOTVAL, _main->get(_check_fld));
- }
- break;
- case F_STATODOC_ELAB:
- case F_TIPODOC_ELAB:
- if (e == fe_modify)
- {
- update_list();
- update_ndoc_filter();
- }
- break;
- case F_ELAB:
- if (e == fe_modify)
- update_ndoc_filter(TRUE);
- break;
- case F_ANNO_ELAB:
- if (e == fe_modify)
- update_ndoc_filter();
- break;
- case F_NUMDOCRIF_ELAB:
- if (e == fe_button)
- docrif_search();
- break;
- case F_ROWS:
- if (e == fe_modify)
- {
+ }
+ break;
+ case F_STATODOC_ELAB:
+ case F_TIPODOC_ELAB:
+ if (e == fe_modify)
+ {
+ update_list();
+ update_ndoc_filter();
+ }
+ break;
+ case F_ELAB:
+ if (e == fe_modify)
+ update_ndoc_filter(TRUE);
+ break;
+ case F_ANNO_ELAB:
+ if (e == fe_modify)
+ update_ndoc_filter();
+ break;
+ case F_NUMDOCRIF_ELAB:
+ if (e == fe_button)
+ docrif_search();
+ break;
+ case F_ROWS:
+ if (e == fe_modify)
+ {
TString id;
_tree.curr_id(id);
@@ -2175,7 +2188,7 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
set(F_NDOC_ELAB, head.get(DOC_NDOC));
}
}
- }
+ }
else
if (e == fe_select)
{
@@ -2198,7 +2211,7 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
}
}
}
- break;
+ break;
case DLG_LINK:
if (e == fe_button)
{
@@ -2233,150 +2246,150 @@ bool TElabora_mask::on_field_event(TOperable_field& o, TField_event e, long joll
}
}
break;
- default:
- break;
- }
- return TRUE;
+ default:
+ break;
+ }
+ return TRUE;
}
int TElabora_mask::update_list()
{
- TString_array elabs;
- const TString16 tipo(_main->get(F_TIPODOC));
- const TString16 stato(_main->get(F_STATO));
- const TString16 tipo_elab(get(F_TIPODOC_ELAB));
- const TString16 stato_elab(get(F_STATODOC_ELAB));
- const bool from_elab = !get_bool(F_TYPE);
- int items = 0;
-
- if (from_elab)
- items = _elab.select(elabs, tipo, stato,"","") ;
- else
- items = _elab.select(elabs, tipo_elab, stato_elab, tipo, stato);
+ TString_array elabs;
+ const TString16 tipo(_main->get(F_TIPODOC));
+ const TString16 stato(_main->get(F_STATO));
+ const TString16 tipo_elab(get(F_TIPODOC_ELAB));
+ const TString16 stato_elab(get(F_STATODOC_ELAB));
+ const bool from_elab = !get_bool(F_TYPE);
+ int items = 0;
+
+ if (from_elab)
+ items = _elab.select(elabs, tipo, stato,"","") ;
+ else
+ items = _elab.select(elabs, tipo_elab, stato_elab, tipo, stato);
- TList_field & f = (TList_field &) field(F_ELAB);
- TToken_string codes;
- TToken_string descrs;
- for (int i = 0; i < items; i++)
- {
- const TElaborazione& e = _elab[elabs.row(i)];
-
- if (!from_elab)
- {
- // AO20123: Impedire contabilizzazione all'indietro!
- if (e.tipo() == _contabilizzazione || e.tipo() == _generazione_effetti)
- continue;
- }
-
- codes.add(e.codice());
- descrs.add(e.descrizione());
- }
+ TList_field & f = (TList_field &) field(F_ELAB);
+ TToken_string codes;
+ TToken_string descrs;
+ for (int i = 0; i < items; i++)
+ {
+ const TElaborazione& e = _elab[elabs.row(i)];
+
+ if (!from_elab)
+ {
+ // AO20123: Impedire contabilizzazione all'indietro!
+ if (e.tipo() == _contabilizzazione || e.tipo() == _generazione_effetti)
+ continue;
+ }
+
+ codes.add(e.codice());
+ descrs.add(e.descrizione());
+ }
- items = codes.items(); // Conta elementi veramente aggiunti
- const bool ok = items > 0;
- enable(DLG_OK, ok);
- enable(F_ELAB, ok);
+ items = codes.items(); // Conta elementi veramente aggiunti
+ const bool ok = items > 0;
+ enable(DLG_OK, ok);
+ enable(F_ELAB, ok);
- if (codes != f.get_codes())
- f.replace_items(codes, descrs);
- const TElaborazione * e = curr_elab();
- if (e != NULL && e->tipo() == _consegna_ordini)
- show(-GRP_ART);
- else
- {
- reset(-GRP_ART);
- hide(-GRP_ART);
- }
-
- return items;
+ if (codes != f.get_codes())
+ f.replace_items(codes, descrs);
+ const TElaborazione * e = curr_elab();
+ if (e != NULL && e->tipo() == _consegna_ordini)
+ show(-GRP_ART);
+ else
+ {
+ reset(-GRP_ART);
+ hide(-GRP_ART);
+ }
+
+ return items;
}
bool TElabora_mask::elabora()
-{
- bool update_mask = FALSE;
+{
+ bool update_mask = FALSE;
- TLista_documenti in;
- TLista_documenti out;
- TDocumento& app_doc = ((TDocumento_mask *)_main)->doc();
- const long numdoc = field(F_NDOC_ELAB).active() ? get_long(F_NDOC_ELAB) : app_doc.get_long(DOC_NDOC);
- const bool update_header = get_bool(F_UPDATE_HEADER);
-
- TDocumento* newdoc = new TDocumento(get(F_PROVV_ELAB)[0], get_int(F_ANNO_ELAB), get(F_CODNUM_ELAB), numdoc);
- TDocumento& d = *newdoc;
+ TLista_documenti in;
+ TLista_documenti out;
+ TDocumento& app_doc = ((TDocumento_mask *)_main)->doc();
+ const long numdoc = field(F_NDOC_ELAB).active() ? get_long(F_NDOC_ELAB) : app_doc.get_long(DOC_NDOC);
+ const bool update_header = get_bool(F_UPDATE_HEADER);
+
+ TDocumento* newdoc = new TDocumento(get(F_PROVV_ELAB)[0], get_int(F_ANNO_ELAB), get(F_CODNUM_ELAB), numdoc);
+ TDocumento& d = *newdoc;
- if (numdoc <= 0)
- {
- TDocumento::copy_data(d.head(), app_doc.head());
- d.put(DOC_TIPODOC, get(F_TIPODOC_ELAB));
- d.put(DOC_STATO, get(F_STATODOC_ELAB));
-
- const TDate datadoc = d.get_date(DOC_DATADOC);
- const TDate datainsc = d.get_date(DOC_DATAINSC);
- const bool equal = !datainsc.ok() || datadoc == datainsc;
-
- d.put(DOC_DATADOC, get(F_DATADOC_ELAB));
- if (equal)
- d.zero(DOC_DATAINSC);
-
- const TTipo_documento & t = d.tipo();
-
- if (t.mov_mag())
- d.put(DOC_CAUSMAG, t.caus_mov());
- else
- d.zero(DOC_CAUSMAG);
- }
-
- if (update_header)
- {
- const TString16 tipo_doc(app_doc.get(DOC_TIPODOC));
- const TString16 caus_mag(app_doc.get(DOC_CAUSMAG));
- const long movmag = app_doc.get_long(DOC_MOVMAG);
- const TDate datadoc = app_doc.get_date(DOC_DATADOC);
- const TDate datainsc = app_doc.get_date(DOC_DATAINSC);
- const char stato = app_doc.stato();
-
- TDocumento::copy_data(app_doc.head(), d.head());
-
- app_doc.put(DOC_TIPODOC, tipo_doc);
- app_doc.put(DOC_CAUSMAG, caus_mag);
- app_doc.put(DOC_MOVMAG, movmag);
- app_doc.put(DOC_DATADOC, datadoc);
- app_doc.put(DOC_DATAINSC, datainsc);
- app_doc.put(DOC_STATO, stato);
- }
-
- const bool from_elab = !get_bool(F_TYPE);
- TElaborazione * e = curr_elab();
-
- if (e == NULL)
- return FALSE;
-
- if (e->tipo() == _consegna_ordini)
- {
- TParametri_elaborazione& p = e->params();
- p.set("ARTICOLO", get(F_CODART));
- p.set("UM", get(F_UMQTA));
- p.set("QUANTITA", get(F_QTA));
- }
- if (from_elab)
- {
- in.add(app_doc);
- out.add(d);
- if (e->elabora(in, out, TDate(TODAY), TRUE))
- {
- if (out[0] != d)
- out.rewrite();
- if (app_doc != in[0])
- {
- in.rewrite();
- app_doc = in[0];
- update_mask = TRUE;
- }
- }
- }
- else
- {
- out.add(app_doc);
+ if (numdoc <= 0)
+ {
+ TDocumento::copy_data(d.head(), app_doc.head());
+ d.put(DOC_TIPODOC, get(F_TIPODOC_ELAB));
+ d.put(DOC_STATO, get(F_STATODOC_ELAB));
+
+ const TDate datadoc = d.get_date(DOC_DATADOC);
+ const TDate datainsc = d.get_date(DOC_DATAINSC);
+ const bool equal = !datainsc.ok() || datadoc == datainsc;
+
+ d.put(DOC_DATADOC, get(F_DATADOC_ELAB));
+ if (equal)
+ d.zero(DOC_DATAINSC);
+
+ const TTipo_documento & t = d.tipo();
+
+ if (t.mov_mag())
+ d.put(DOC_CAUSMAG, t.caus_mov());
+ else
+ d.zero(DOC_CAUSMAG);
+ }
+
+ if (update_header)
+ {
+ const TString16 tipo_doc(app_doc.get(DOC_TIPODOC));
+ const TString16 caus_mag(app_doc.get(DOC_CAUSMAG));
+ const long movmag = app_doc.get_long(DOC_MOVMAG);
+ const TDate datadoc = app_doc.get_date(DOC_DATADOC);
+ const TDate datainsc = app_doc.get_date(DOC_DATAINSC);
+ const char stato = app_doc.stato();
+
+ TDocumento::copy_data(app_doc.head(), d.head());
+
+ app_doc.put(DOC_TIPODOC, tipo_doc);
+ app_doc.put(DOC_CAUSMAG, caus_mag);
+ app_doc.put(DOC_MOVMAG, movmag);
+ app_doc.put(DOC_DATADOC, datadoc);
+ app_doc.put(DOC_DATAINSC, datainsc);
+ app_doc.put(DOC_STATO, stato);
+ }
+
+ const bool from_elab = !get_bool(F_TYPE);
+ TElaborazione * e = curr_elab();
+
+ if (e == NULL)
+ return FALSE;
+
+ if (e->tipo() == _consegna_ordini)
+ {
+ TParametri_elaborazione& p = e->params();
+ p.set("ARTICOLO", get(F_CODART));
+ p.set("UM", get(F_UMQTA));
+ p.set("QUANTITA", get(F_QTA));
+ }
+ if (from_elab)
+ {
+ in.add(app_doc);
+ out.add(d);
+ if (e->elabora(in, out, TDate(TODAY), TRUE))
+ {
+ if (out[0] != d)
+ out.rewrite();
+ if (app_doc != in[0])
+ {
+ in.rewrite();
+ app_doc = in[0];
+ update_mask = TRUE;
+ }
+ }
+ }
+ else
+ {
+ out.add(app_doc);
_tree.build_doc_list(in);
char provv = get(F_PROVV_ELAB)[0];
int anno = get_int(F_ANNO_ELAB);
@@ -2389,391 +2402,391 @@ bool TElabora_mask::elabora()
in.add(d);
}
- if (e->elabora(in, out, TDate(TODAY), TRUE))
- {
- if (out[0] != app_doc)
- {
- out.rewrite();
- app_doc.read(out[0].head());
- update_mask = TRUE;
- }
+ if (e->elabora(in, out, TDate(TODAY), TRUE))
+ {
+ if (out[0] != app_doc)
+ {
+ out.rewrite();
+ app_doc.read(out[0].head());
+ update_mask = TRUE;
+ }
in.rewrite();
- }
- const TString8 num_in = e->codice_numerazione_iniziale();
- set(F_CODNUM_ELAB, num_in);
- set(F_NDOC_ELAB, "");
- set(F_NUMDOCRIF_ELAB, "");
- }
- if (e->tipo() == _consegna_ordini)
- {
- TParametri_elaborazione& p = e->params();
- if (p.get("ARTICOLO").not_empty())
- {
- real qta = get_real(F_QTA);
- if (qta > ZERO)
- {
- const real qta_evasa = p.get_real("QUANTITA");
- qta -= qta_evasa;
- set(F_QTA, qta);
- }
- }
- }
-
- delete newdoc;
+ }
+ const TString8 num_in = e->codice_numerazione_iniziale();
+ set(F_CODNUM_ELAB, num_in);
+ set(F_NDOC_ELAB, "");
+ set(F_NUMDOCRIF_ELAB, "");
+ }
+ if (e->tipo() == _consegna_ordini)
+ {
+ TParametri_elaborazione& p = e->params();
+ if (p.get("ARTICOLO").not_empty())
+ {
+ real qta = get_real(F_QTA);
+ if (qta > ZERO)
+ {
+ const real qta_evasa = p.get_real("QUANTITA");
+ qta -= qta_evasa;
+ set(F_QTA, qta);
+ }
+ }
+ }
+
+ delete newdoc;
- // Azzera l'anno in caso di ordini
- if (in.items() > 0 && in[0].is_ordine())
- {
- reset(F_ANNO_ELAB);
- update_mask = TRUE;
- }
+ // Azzera l'anno in caso di ordini
+ if (in.items() > 0 && in[0].is_ordine())
+ {
+ reset(F_ANNO_ELAB);
+ update_mask = TRUE;
+ }
- if (update_mask)
- update_ndoc_filter();
-
- return update_mask;
+ if (update_mask)
+ update_ndoc_filter();
+
+ return update_mask;
}
TElaborazione * TElabora_mask::curr_elab()
{
- const TString16 cod_elab(get(F_ELAB));
- return cod_elab.not_empty() ? &_elab[cod_elab] : NULL;
-}
+ const TString16 cod_elab(get(F_ELAB));
+ return cod_elab.not_empty() ? &_elab[cod_elab] : NULL;
+}
bool TElabora_mask::article_filter(const TRelation* rel)
-{
- bool yes = FALSE;
- TElabora_mask& m = *_myself;
- TLocalisamfile rdoc(LF_RIGHEDOC);
- rdoc.put(RDOC_CODNUM, rel->curr().get(DOC_CODNUM));
- rdoc.put(RDOC_ANNO, rel->curr().get(DOC_ANNO));
- rdoc.put(RDOC_PROVV, rel->curr().get(DOC_PROVV));
- rdoc.put(RDOC_NDOC, rel->curr().get(DOC_NDOC));
- rdoc.put(RDOC_NRIGA, 1);
- int next_riga = 1;
- for (int err = rdoc.read(); err == NOERR; err = rdoc.next())
- {
- const int nriga = rdoc.get_int(RDOC_NRIGA);
- if (nriga != next_riga)
- break;
- next_riga++;
- const bool evasa= rdoc.get_bool(RDOC_RIGAEVASA);
- const TString& codart = rdoc.get(RDOC_CODART);
- if (!evasa && codart == m._art_filter)
- {
- yes = TRUE;
- break;
- }
- }
- return yes;
+{
+ bool yes = FALSE;
+ TElabora_mask& m = *_myself;
+ TLocalisamfile rdoc(LF_RIGHEDOC);
+ rdoc.put(RDOC_CODNUM, rel->curr().get(DOC_CODNUM));
+ rdoc.put(RDOC_ANNO, rel->curr().get(DOC_ANNO));
+ rdoc.put(RDOC_PROVV, rel->curr().get(DOC_PROVV));
+ rdoc.put(RDOC_NDOC, rel->curr().get(DOC_NDOC));
+ rdoc.put(RDOC_NRIGA, 1);
+ int next_riga = 1;
+ for (int err = rdoc.read(); err == NOERR; err = rdoc.next())
+ {
+ const int nriga = rdoc.get_int(RDOC_NRIGA);
+ if (nriga != next_riga)
+ break;
+ next_riga++;
+ const bool evasa= rdoc.get_bool(RDOC_RIGAEVASA);
+ const TString& codart = rdoc.get(RDOC_CODART);
+ if (!evasa && codart == m._art_filter)
+ {
+ yes = TRUE;
+ break;
+ }
+ }
+ return yes;
}
void TElabora_mask::add_valuta_filter(TString& filter) const
-{
- TString16 valuta = get(F_CODVAL_ELAB);
- if (::is_firm_value(valuta))
- {
- filter << "((CODVAL==\"" << valuta << "\")";
- if (valuta.empty())
- valuta = TCurrency::get_firm_val();
- else
- valuta.cut(0);
- filter << "||(CODVAL==\"" << valuta << "\"))";
- }
- else
- filter << "(CODVAL==\"" << valuta << "\")";
+{
+ TString16 valuta = get(F_CODVAL_ELAB);
+ if (::is_firm_value(valuta))
+ {
+ filter << "((CODVAL==\"" << valuta << "\")";
+ if (valuta.empty())
+ valuta = TCurrency::get_firm_val();
+ else
+ valuta.cut(0);
+ filter << "||(CODVAL==\"" << valuta << "\"))";
+ }
+ else
+ filter << "(CODVAL==\"" << valuta << "\")";
}
void TElabora_mask::update_ndoc_filter(bool is_tipo_elaborazione)
{
- TString filter;
- add_valuta_filter(filter);
-
- TElaborazione * e = curr_elab();
- const bool elab_changed = e != _last_elab;
- _last_elab = e;
+ TString filter;
+ add_valuta_filter(filter);
+
+ TElaborazione * e = curr_elab();
+ const bool elab_changed = e != _last_elab;
+ _last_elab = e;
- const bool aggiungi_doc_att = get_bool(F_TYPE);
- enable(-1, aggiungi_doc_att);
- if (!aggiungi_doc_att && is_tipo_elaborazione )
- reset(-1);
+ const bool aggiungi_doc_att = get_bool(F_TYPE);
+ enable(-1, aggiungi_doc_att);
+ if (!aggiungi_doc_att && is_tipo_elaborazione )
+ reset(-1);
- const bool enable_group_doc = e != NULL && e->tipo() != _generazione_effetti && e->tipo() != _contabilizzazione;
- show(-GRP_DOC, enable_group_doc);
+ const bool enable_group_doc = e != NULL && e->tipo() != _generazione_effetti && e->tipo() != _contabilizzazione;
+ show(-GRP_DOC, enable_group_doc);
- if (e != NULL)
- {
- if (aggiungi_doc_att)
- {
+ if (e != NULL)
+ {
+ if (aggiungi_doc_att)
+ {
const bool agg_test = e->aggiorna_testata_se_vuoto() && _main->sfield(F_SHEET).items() == 0;
set(F_UPDATE_HEADER, agg_test ? "X" : "");
- const TString8 num_in = e->codice_numerazione_iniziale();
- if (elab_changed)
- {
- const TString16 tipo_in(e->tipo_iniziale(0));
- const char stato_in = e->stato_iniziale(0);
+ const TString8 num_in = e->codice_numerazione_iniziale();
+ if (elab_changed)
+ {
+ const TString16 tipo_in(e->tipo_iniziale(0));
+ const char stato_in = e->stato_iniziale(0);
- set(F_CODNUM_ELAB, num_in);
- field(F_CODNUM_ELAB).check();
- set(F_TIPODOC_ELAB , tipo_in);
- field(F_TIPODOC_ELAB).check();
- TString8 si; si << stato_in;
- set(F_STATODOC_ELAB, si);
- field(F_STATODOC_ELAB).check();
-
- // Azzero anno di elaaborazione quando ho a che fare con degli ordini
- const TTipo_documento& tipodocin = _main->doc().tipo(tipo_in);
- if (tipodocin.is_ordine())
- reset(F_ANNO_ELAB);
- }
+ set(F_CODNUM_ELAB, num_in);
+ field(F_CODNUM_ELAB).check();
+ set(F_TIPODOC_ELAB , tipo_in);
+ field(F_TIPODOC_ELAB).check();
+ TString8 si; si << stato_in;
+ set(F_STATODOC_ELAB, si);
+ field(F_STATODOC_ELAB).check();
+
+ // Azzero anno di elaaborazione quando ho a che fare con degli ordini
+ const TTipo_documento& tipodocin = _main->doc().tipo(tipo_in);
+ if (tipodocin.is_ordine())
+ reset(F_ANNO_ELAB);
+ }
- if (!field(F_TIPODOC_ELAB).empty())
- {
- const TString16 tipo(get(F_TIPODOC_ELAB));
- TString80 td; td.format("&&(TIPODOC==\"%s\")", (const char *)tipo);
- filter << td;
- const TString& stato = get(F_STATODOC_ELAB);
- if (stato.not_empty())
- {
- filter << "&&(STATO==\"" << stato << "\")";
- }
- else
- {
- bool almost_one = FALSE;
-
- for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
- {
- const TString16 tipo_in(e->tipo_iniziale(i));
- const char stato_in = e->stato_iniziale(i);
-
- if (tipo == tipo_in && stato_in > '0')
- {
- if (almost_one)
- filter << "||";
- else
- filter << "&&(";
- almost_one = TRUE;
-
- filter << "(STATO==\"" << stato_in << "\")";
- }
- }
- if (almost_one)
- filter << ')';
- }
- }
- else
- {
- bool almost_one = FALSE;
-
- for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
- {
- const TString16 tipo_in(e->tipo_iniziale(i));
- if (tipo_in.not_empty())
- {
- if (almost_one)
- filter << "||";
- else
- filter << "&&(";
- almost_one = TRUE;
- filter << "((TIPODOC==\"" << tipo_in << "\")";
-
- const char stato_in[2] = { e->stato_iniziale(i), '\0' };
- if (stato_in[0] > '0')
- filter << "&&(STATO==\"" << stato_in << "\")";
- filter << ')';
- }
- }
- if (almost_one)
- filter << ')';
- }
- }
- else
- {
- const TString4 tipo_fin(e->tipo_finale());
- const TString4 stato_fin(e->stato_finale());
+ if (!field(F_TIPODOC_ELAB).empty())
+ {
+ const TString16 tipo(get(F_TIPODOC_ELAB));
+ TString80 td; td.format("&&(TIPODOC==\"%s\")", (const char *)tipo);
+ filter << td;
+ const TString& stato = get(F_STATODOC_ELAB);
+ if (stato.not_empty())
+ {
+ filter << "&&(STATO==\"" << stato << "\")";
+ }
+ else
+ {
+ bool almost_one = FALSE;
+
+ for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
+ {
+ const TString16 tipo_in(e->tipo_iniziale(i));
+ const char stato_in = e->stato_iniziale(i);
+
+ if (tipo == tipo_in && stato_in > '0')
+ {
+ if (almost_one)
+ filter << "||";
+ else
+ filter << "&&(";
+ almost_one = TRUE;
+
+ filter << "(STATO==\"" << stato_in << "\")";
+ }
+ }
+ if (almost_one)
+ filter << ')';
+ }
+ }
+ else
+ {
+ bool almost_one = FALSE;
+
+ for (int i = 0; i < TElaborazione::_max_tipi_doc_elab; i++)
+ {
+ const TString16 tipo_in(e->tipo_iniziale(i));
+ if (tipo_in.not_empty())
+ {
+ if (almost_one)
+ filter << "||";
+ else
+ filter << "&&(";
+ almost_one = TRUE;
+ filter << "((TIPODOC==\"" << tipo_in << "\")";
+
+ const char stato_in[2] = { e->stato_iniziale(i), '\0' };
+ if (stato_in[0] > '0')
+ filter << "&&(STATO==\"" << stato_in << "\")";
+ filter << ')';
+ }
+ }
+ if (almost_one)
+ filter << ')';
+ }
+ }
+ else
+ {
+ const TString4 tipo_fin(e->tipo_finale());
+ const TString4 stato_fin(e->stato_finale());
set(F_UPDATE_HEADER, "");
- filter << "&&";
- if (stato_fin != "0")
- filter << '(';
- filter << "(TIPODOC==\"" << tipo_fin << "\")";
- if (stato_fin != "0")
- filter << "&&(STATO==\"" << stato_fin << "\"))";
+ filter << "&&";
+ if (stato_fin != "0")
+ filter << '(';
+ filter << "(TIPODOC==\"" << tipo_fin << "\")";
+ if (stato_fin != "0")
+ filter << "&&(STATO==\"" << stato_fin << "\"))";
- if (is_tipo_elaborazione)
- {
- const TString16 num_fin(e->codice_numerazione_finale());
- set(F_CODNUM_ELAB, num_fin);
- field(F_CODNUM_ELAB).check();
- set(F_TIPODOC_ELAB, tipo_fin);
- field(F_TIPODOC_ELAB).check();
- set(F_STATODOC_ELAB, stato_fin);
- field(F_STATODOC_ELAB).check();
- }
- }
- }
+ if (is_tipo_elaborazione)
+ {
+ const TString16 num_fin(e->codice_numerazione_finale());
+ set(F_CODNUM_ELAB, num_fin);
+ field(F_CODNUM_ELAB).check();
+ set(F_TIPODOC_ELAB, tipo_fin);
+ field(F_TIPODOC_ELAB).check();
+ set(F_STATODOC_ELAB, stato_fin);
+ field(F_STATODOC_ELAB).check();
+ }
+ }
+ }
- if (!field(F_CODNUM_ELAB).empty())
- {
- TString80 cn; cn.format("&&(CODNUM==\"%s\")", (const char*)get(F_CODNUM_ELAB));
- filter << cn;
- }
-
- TBrowse& brew = *efield(F_NDOC_ELAB).browse();
- brew.set_filter(filter);
-
- _art_filter = get(F_CODART);
+ if (!field(F_CODNUM_ELAB).empty())
+ {
+ TString80 cn; cn.format("&&(CODNUM==\"%s\")", (const char*)get(F_CODNUM_ELAB));
+ filter << cn;
+ }
+
+ TBrowse& brew = *efield(F_NDOC_ELAB).browse();
+ brew.set_filter(filter);
+
+ _art_filter = get(F_CODART);
- TCursor* cursor = brew.cursor();
- if (_art_filter.not_empty() && aggiungi_doc_att)
- cursor->set_filterfunction(article_filter);
- else
- cursor->set_filterfunction(NULL);
-
- TTree_field& tf = tfield(F_ROWS);
- if (!field(F_TIPODOC_ELAB).empty() && e != NULL)
- {
- tf.set_tree(&_tree);
- TToken_string header(256, '\n');
- header.add("Anno Num. N. Data Cli/For Ragione Sociale");
- header.add(" Codice Articolo Descrizione Riga ");
- if (aggiungi_doc_att && e->tipo() == _consegna_ordini)
- header << "Da Evadere Residuo";
- else
- header << " Quantità";
- tf.set_header(header);
-
- if (aggiungi_doc_att && _art_filter.not_empty())
- _tree.set_cursor(get(F_TIPOCF_ELAB)[0], get_long(F_CODCF_ELAB), get_int(F_ANNO_ELAB), filter, article_filter);
- else
- _tree.set_cursor(get(F_TIPOCF_ELAB)[0], get_long(F_CODCF_ELAB), get_int(F_ANNO_ELAB), filter);
-
- if (aggiungi_doc_att) // GF20059
- {
- TCursor& cur = *_tree.get_cursor();
- if (cur.items() == 1) // Propone l'unico documento possibile
- {
- cur = 0L;
- const TRectype& curr = cur.curr();
- set(F_ANNO_ELAB, curr.get(DOC_ANNO));
- set(F_NDOC_ELAB, curr.get(DOC_NDOC));
- set(F_CODNUM_ELAB, curr.get(DOC_CODNUM), 2); // Check but not hit
- set(F_DATADOC_ELAB, curr.get(DOC_DATADOC));
- }
- }
- }
- else
- tf.set_tree(NULL);
- tf.win().force_update();
+ TCursor* cursor = brew.cursor();
+ if (_art_filter.not_empty() && aggiungi_doc_att)
+ cursor->set_filterfunction(article_filter);
+ else
+ cursor->set_filterfunction(NULL);
+
+ TTree_field& tf = tfield(F_ROWS);
+ if (!field(F_TIPODOC_ELAB).empty() && e != NULL)
+ {
+ tf.set_tree(&_tree);
+ TToken_string header(256, '\n');
+ header.add("Anno Num. N. Data Cli/For Ragione Sociale");
+ header.add(" Codice Articolo Descrizione Riga ");
+ if (aggiungi_doc_att && e->tipo() == _consegna_ordini)
+ header << "Da Evadere Residuo";
+ else
+ header << " Quantità";
+ tf.set_header(header);
+
+ if (aggiungi_doc_att && _art_filter.not_empty())
+ _tree.set_cursor(get(F_TIPOCF_ELAB)[0], get_long(F_CODCF_ELAB), get_int(F_ANNO_ELAB), filter, article_filter);
+ else
+ _tree.set_cursor(get(F_TIPOCF_ELAB)[0], get_long(F_CODCF_ELAB), get_int(F_ANNO_ELAB), filter);
+
+ if (aggiungi_doc_att) // GF20059
+ {
+ TCursor& cur = *_tree.get_cursor();
+ if (cur.items() == 1) // Propone l'unico documento possibile
+ {
+ cur = 0L;
+ const TRectype& curr = cur.curr();
+ set(F_ANNO_ELAB, curr.get(DOC_ANNO));
+ set(F_NDOC_ELAB, curr.get(DOC_NDOC));
+ set(F_CODNUM_ELAB, curr.get(DOC_CODNUM), 2); // Check but not hit
+ set(F_DATADOC_ELAB, curr.get(DOC_DATADOC));
+ }
+ }
+ }
+ else
+ tf.set_tree(NULL);
+ tf.win().force_update();
}
void TElabora_mask::docrif_search()
{
- TRectype filtrec(LF_DOC);
- filtrec.put(DOC_TIPOCF, get(F_TIPOCF_ELAB));
- filtrec.put(DOC_CODCF, get(F_CODCF_ELAB));
- filtrec.put(DOC_PROVV, get(F_PROVV_ELAB));
- filtrec.put(DOC_ANNO, get(F_ANNO_ELAB));
-
- TRelation rel(LF_DOC);
- rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
- TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec);
- TString flt(256);
- if (!field(F_CODNUM_ELAB).empty())
- flt << "(CODNUM==\"" << get(F_CODNUM_ELAB) << "\")&&";
- if (!field(F_TIPODOC_ELAB).empty())
- flt << "(TIPODOC==\"" << get(F_TIPODOC_ELAB) << "\")&&";
- if (!field(F_STATODOC_ELAB).empty())
- flt << "(STATO==\"" << get(F_STATODOC_ELAB) << "\")&&";
- add_valuta_filter(flt); flt << "&&";
- TEdit_field& f = efield(F_NUMDOCRIF_ELAB);
- if (!f.empty())
- flt << "(NUMDOCRIF==\"" << f.get() << "\")&&";
- flt.rtrim(2); // Togli gli ultimi &&
-
- cur.setfilter(flt);
-
- TToken_string fields = "ANNO|CODNUM|TIPODOC|NUMDOCRIF|STATO|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|20->RAGSOC";
- TCursor_sheet sheet(&cur, fields,
- "Documento di riferimento",
- "Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Docum.Rif.1|Docum.Rif.2|Docum.Rif.3|Documento|Ragione Sociale@50",
- 0, 1);
- if (sheet.run() == K_ENTER)
- {
- const int nrifpos = fields.get_pos("NUMDOCRIF");
- const TString16 nrif = sheet.row(-1).get(nrifpos);
- f.set(nrif);
- const int ndocpos = fields.get_pos("NDOC");
- const TString16 ndoc = sheet.row(-1).get(ndocpos);
- set(F_NDOC_ELAB, ndoc);
- const int codnumpos = fields.get_pos("CODNUM");
- const TString16 codnum = sheet.row(-1).get(codnumpos);
- set(F_CODNUM_ELAB, codnum, TRUE);
- }
+ TRectype filtrec(LF_DOC);
+ filtrec.put(DOC_TIPOCF, get(F_TIPOCF_ELAB));
+ filtrec.put(DOC_CODCF, get(F_CODCF_ELAB));
+ filtrec.put(DOC_PROVV, get(F_PROVV_ELAB));
+ filtrec.put(DOC_ANNO, get(F_ANNO_ELAB));
+
+ TRelation rel(LF_DOC);
+ rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
+ TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec);
+ TString flt(256);
+ if (!field(F_CODNUM_ELAB).empty())
+ flt << "(CODNUM==\"" << get(F_CODNUM_ELAB) << "\")&&";
+ if (!field(F_TIPODOC_ELAB).empty())
+ flt << "(TIPODOC==\"" << get(F_TIPODOC_ELAB) << "\")&&";
+ if (!field(F_STATODOC_ELAB).empty())
+ flt << "(STATO==\"" << get(F_STATODOC_ELAB) << "\")&&";
+ add_valuta_filter(flt); flt << "&&";
+ TEdit_field& f = efield(F_NUMDOCRIF_ELAB);
+ if (!f.empty())
+ flt << "(NUMDOCRIF==\"" << f.get() << "\")&&";
+ flt.rtrim(2); // Togli gli ultimi &&
+
+ cur.setfilter(flt);
+
+ TToken_string fields = "ANNO|CODNUM|TIPODOC|NUMDOCRIF|STATO|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|20->RAGSOC";
+ TCursor_sheet sheet(&cur, fields,
+ "Documento di riferimento",
+ "Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Docum.Rif.1|Docum.Rif.2|Docum.Rif.3|Documento|Ragione Sociale@50",
+ 0, 1);
+ if (sheet.run() == K_ENTER)
+ {
+ const int nrifpos = fields.get_pos("NUMDOCRIF");
+ const TString16 nrif = sheet.row(-1).get(nrifpos);
+ f.set(nrif);
+ const int ndocpos = fields.get_pos("NDOC");
+ const TString16 ndoc = sheet.row(-1).get(ndocpos);
+ set(F_NDOC_ELAB, ndoc);
+ const int codnumpos = fields.get_pos("CODNUM");
+ const TString16 codnum = sheet.row(-1).get(codnumpos);
+ set(F_CODNUM_ELAB, codnum, TRUE);
+ }
}
TElabora_mask::TElabora_mask(TDocumento_mask& main_mask)
- : TAutomask("ve0100b"), _main(&main_mask), _last_elab(NULL), _check_fld(-883)
-{
- _myself = this;
-
- const TDate oggi(TODAY);
- set(F_ANNO_ELAB, oggi.year()); //anno della datadoc proposta (risolve bug 0000331)
- set(F_TIPOCF_ELAB, _main->get(F_TIPOCF));
- set(F_CODCF_ELAB, _main->get(F_CODCF));
- set(F_CODVAL_ELAB, _main->get(F_CODVAL));
+ : TAutomask("ve0100b"), _main(&main_mask), _last_elab(NULL), _check_fld(-883)
+{
+ _myself = this;
+
+ const TDate oggi(TODAY);
+ set(F_ANNO_ELAB, oggi.year()); //anno della datadoc proposta (risolve bug 0000331)
+ set(F_TIPOCF_ELAB, _main->get(F_TIPOCF));
+ set(F_CODCF_ELAB, _main->get(F_CODCF));
+ set(F_CODVAL_ELAB, _main->get(F_CODVAL));
}
bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
{
- if (key == K_SPACE)
- {
- TDocumento_mask& m = (TDocumento_mask&)f.mask();
- m.update_progs();
- if (m.check_fields()) // Check values
- {
- TElabora_mask* selection = new TElabora_mask(m); // No woman no stack
- bool update_mask = FALSE;
- const char stato_iniziale = m.doc().stato();
-
- while (selection->run() == K_ENTER)
- {
- m.mask2doc();
- update_mask |= selection->elabora();
-
- if (m.doc().stato() != stato_iniziale)
- break;
- if (update_mask)
- {
- m.doc2mask(FALSE);
- TSheet_field& ss = m.sfield(F_SHEET);
- for (int i = 0; i < ss.items(); i++)
- {
- m.ss_notify(ss,i,K_TAB);
- m.ss_notify(ss,i,K_SPACE);
- m.ss_notify(ss,i,K_ENTER);
- }
- }
+ if (key == K_SPACE)
+ {
+ TDocumento_mask& m = (TDocumento_mask&)f.mask();
+ m.update_progs();
+ if (m.check_fields()) // Check values
+ {
+ TElabora_mask* selection = new TElabora_mask(m); // No woman no stack
+ bool update_mask = FALSE;
+ const char stato_iniziale = m.doc().stato();
+
+ while (selection->run() == K_ENTER)
+ {
+ m.mask2doc();
+ update_mask |= selection->elabora();
+
+ if (m.doc().stato() != stato_iniziale)
+ break;
+ if (update_mask)
+ {
+ m.doc2mask(FALSE);
+ TSheet_field& ss = m.sfield(F_SHEET);
+ for (int i = 0; i < ss.items(); i++)
+ {
+ m.ss_notify(ss,i,K_TAB);
+ m.ss_notify(ss,i,K_SPACE);
+ m.ss_notify(ss,i,K_ENTER);
+ }
+ }
if (!m.get_bool(F_TYPE)) // non aggiunge al documento attuale
break;
- }
- if (update_mask)
- {
- m.doc2mask(FALSE);
- // Provoca decodifiche necessarie
- const int last = m.id2pos(BASE_PIEDE + 1);
- for (int p = 0; p < last; p++)
- {
- TMask_field& f = m.fld(p);
- f.check(STARTING_CHECK);
- }
+ }
+ if (update_mask)
+ {
+ m.doc2mask(FALSE);
+ // Provoca decodifiche necessarie
+ const int last = m.id2pos(BASE_PIEDE + 1);
+ for (int p = 0; p < last; p++)
+ {
+ TMask_field& f = m.fld(p);
+ f.check(STARTING_CHECK);
+ }
for (int i = m.fields() - 1; i >= 0; i--)
- m.fld(i).set_dirty(FALSE);
- }
- delete selection;
- }
- }
- return TRUE;
+ m.fld(i).set_dirty(FALSE);
+ }
+ delete selection;
+ }
+ }
+ return TRUE;
}
///////////////////////////////////////////////////////////
@@ -2782,9 +2795,9 @@ bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
bool TDocumento_mask::print_handler( TMask_field& f, KEY key )
{
- if (key == K_SPACE)
- main_app().print();
- return TRUE;
+ if (key == K_SPACE)
+ main_app().print();
+ return TRUE;
}
void TDocumento_mask::set_field_handler(short fieldid, CONTROL_HANDLER handler)
@@ -2794,18 +2807,18 @@ void TDocumento_mask::set_field_handler(short fieldid, CONTROL_HANDLER handler)
void TDocumento_mask::user_set_handler(int fieldid, int index)
{
- switch( index )
- {
- case 1:
- set_field_handler(fieldid, ora_hndl);
- break;
- case 2:
- set_field_handler(fieldid, totdoc_hndl);
- break;
- case 3:
- set_field_handler(fieldid, numdocrif_hndl);
- break;
- case 4:
+ switch( index )
+ {
+ case 1:
+ set_field_handler(fieldid, ora_hndl);
+ break;
+ case 2:
+ set_field_handler(fieldid, totdoc_hndl);
+ break;
+ case 3:
+ set_field_handler(fieldid, numdocrif_hndl);
+ break;
+ case 4:
{
_smartcard = new TSmart_card();
if (_smartcard->type() != no_smartcard)
@@ -2821,13 +2834,13 @@ void TDocumento_mask::user_set_handler(int fieldid, int index)
}
}
break;
- case 5:
- set_field_handler(fieldid, dummy_hndl);
- break;
- default:
- CHECK( FALSE, "Tentativo di installare un handler non definito" );
- break;
- }
+ case 5:
+ set_field_handler(fieldid, dummy_hndl);
+ break;
+ default:
+ CHECK( FALSE, "Tentativo di installare un handler non definito" );
+ break;
+ }
}
bool TDocumento_mask::call_handler( TMask_field& f, KEY key)
@@ -2867,170 +2880,170 @@ bool TDocumento_mask::universal_handler( TMask_field& f, KEY key)
bool TDocumento_mask::anno_handler( TMask_field& f, KEY key)
{
- if (key == K_TAB && f.to_check(key, TRUE))
+ if (key == K_TAB && f.to_check(key, TRUE))
app().update_navigation_bar();
- return true;
+ return true;
}
bool TDocumento_mask::num_handler( TMask_field& f, KEY key)
{
- if (key == K_TAB && f.to_check(key, TRUE))
- {
- // Ottengo la maschera
- TMask& m = f.mask();
-
- TTable & tabnum = ((TTable &) ((TEdit_field &)f).browse()->cursor()->file());
- if ( tabnum.good())
- {
- TCodice_numerazione cod_num(tabnum.curr());
- m.set( F_DESNUM, cod_num.descrizione());
- // Propone il primo tipo di documento come default
- if (m.field(F_TIPODOC).empty() || f.focusdirty())
- {
- m.set( F_TIPODOC, cod_num.tipo_doc(0));
- m.send_key( K_TAB, F_TIPODOC );
- }
- // Se per questa numerazione e' abilitata le numerazione provvisoria
- if (cod_num.num_provv())
- {
- // Setta di default la numerazione provvisoria
- m.set( F_PROVV, "P" );
- // Abilita il campo per la selezione della numerazione
- m.enable( F_PROVV );
- }
- else // Altrimenti ...
- {
- // Setta la numerazione a definitiva
- m.set( F_PROVV, "D" );
- // Disabilita il campo per la selezione della numerazione
- m.disable( F_PROVV );
- }
- }
- else
- {
- m.set( F_DESNUM, "" );
- m.set( F_TIPODOC, "" );
- }
+ if (key == K_TAB && f.to_check(key, TRUE))
+ {
+ // Ottengo la maschera
+ TMask& m = f.mask();
+
+ TTable & tabnum = ((TTable &) ((TEdit_field &)f).browse()->cursor()->file());
+ if ( tabnum.good())
+ {
+ TCodice_numerazione cod_num(tabnum.curr());
+ m.set( F_DESNUM, cod_num.descrizione());
+ // Propone il primo tipo di documento come default
+ if (m.field(F_TIPODOC).empty() || f.focusdirty())
+ {
+ m.set( F_TIPODOC, cod_num.tipo_doc(0));
+ m.send_key( K_TAB, F_TIPODOC );
+ }
+ // Se per questa numerazione e' abilitata le numerazione provvisoria
+ if (cod_num.num_provv())
+ {
+ // Setta di default la numerazione provvisoria
+ m.set( F_PROVV, "P" );
+ // Abilita il campo per la selezione della numerazione
+ m.enable( F_PROVV );
+ }
+ else // Altrimenti ...
+ {
+ // Setta la numerazione a definitiva
+ m.set( F_PROVV, "D" );
+ // Disabilita il campo per la selezione della numerazione
+ m.disable( F_PROVV );
+ }
+ }
+ else
+ {
+ m.set( F_DESNUM, "" );
+ m.set( F_TIPODOC, "" );
+ }
app().update_navigation_bar();
- }
- return TRUE;
+ }
+ return TRUE;
}
bool TDocumento_mask::tip_handler( TMask_field& f, KEY key )
{
- TDocumento_mask& m = (TDocumento_mask&)f.mask( );
- if ( key == K_TAB && m.is_running() && m.get(F_TIPODOC).not_empty())
- {
- TCodice_numerazione cod_num(m.get(F_CODNUM));
- const TString& tipo = f.get();
- int last = cod_num.ntipi_doc();
- for (int i = 0; i < last; i++ )
- {
- const TString16 curtipo(cod_num.tipo_doc(i));
- if (curtipo == tipo)
- return TRUE;
- }
- return f.error_box( "Tipo non valido per la numerazione selezionata!" );
- }
- return TRUE;
+ TDocumento_mask& m = (TDocumento_mask&)f.mask( );
+ if ( key == K_TAB && m.is_running() && m.get(F_TIPODOC).not_empty())
+ {
+ TCodice_numerazione cod_num(m.get(F_CODNUM));
+ const TString& tipo = f.get();
+ int last = cod_num.ntipi_doc();
+ for (int i = 0; i < last; i++ )
+ {
+ const TString16 curtipo(cod_num.tipo_doc(i));
+ if (curtipo == tipo)
+ return TRUE;
+ }
+ return f.error_box( "Tipo non valido per la numerazione selezionata!" );
+ }
+ return TRUE;
}
bool TDocumento_mask::codlist_handler( TMask_field& f, KEY key )
{
- if (key == K_TAB && f.focusdirty())
- {
- TLocalisamfile & list = ((TEdit_field &) f).browse()->cursor()->file();
- const TDate datadoc(f.mask().get(F_DATADOC));
- const TDate datascad(list.get_date("VALFIN"));
-
- if (datascad.ok() && datadoc > datascad)
- {
- const TString16 codsucc(list.get("CODLISSUCC"));
-
- if (codsucc.empty())
- return error_box("Listino scaduto il %s", datascad.string());
- else
- {
- f.set(codsucc);
- f.set_focusdirty();
- ((TEdit_field &)f).check();
- }
- }
- }
- return TRUE;
+ if (key == K_TAB && f.focusdirty())
+ {
+ TLocalisamfile & list = ((TEdit_field &) f).browse()->cursor()->file();
+ const TDate datadoc(f.mask().get(F_DATADOC));
+ const TDate datascad(list.get_date("VALFIN"));
+
+ if (datascad.ok() && datadoc > datascad)
+ {
+ const TString16 codsucc(list.get("CODLISSUCC"));
+
+ if (codsucc.empty())
+ return error_box("Listino scaduto il %s", datascad.string());
+ else
+ {
+ f.set(codsucc);
+ f.set_focusdirty();
+ ((TEdit_field &)f).check();
+ }
+ }
+ }
+ return TRUE;
}
bool TDocumento_mask::codcont_handler( TMask_field& f, KEY key )
{
- if (key == K_TAB && f.focusdirty())
- {
- TLocalisamfile & cont = ((TEdit_field &) f).browse()->cursor()->file();
- const TDate datadoc(f.mask().get(F_DATADOC));
- const TDate datascad(cont.get_date("VALFIN"));
-
- if (datascad.ok() && datadoc > datascad)
- return error_box("Contratto scaduto il %s", datascad.string());
- }
- return TRUE;
+ if (key == K_TAB && f.focusdirty())
+ {
+ TLocalisamfile & cont = ((TEdit_field &) f).browse()->cursor()->file();
+ const TDate datadoc(f.mask().get(F_DATADOC));
+ const TDate datascad(cont.get_date("VALFIN"));
+
+ if (datascad.ok() && datadoc > datascad)
+ return error_box("Contratto scaduto il %s", datascad.string());
+ }
+ return TRUE;
}
bool TDocumento_mask::codcamp_handler( TMask_field& f, KEY key )
{
- if (key == K_TAB && f.focusdirty())
- {
- TLocalisamfile & camp = ((TEdit_field &) f).browse()->cursor()->file();
- const TDate datadoc(f.mask().get(F_DATADOC));
- const TDate datascad(camp.get_date("VALFIN"));
-
- if (datascad.ok() && datadoc > datascad)
- return error_box("Offerta scaduta il %s", datascad.string());
- }
- return TRUE;
+ if (key == K_TAB && f.focusdirty())
+ {
+ TLocalisamfile & camp = ((TEdit_field &) f).browse()->cursor()->file();
+ const TDate datadoc(f.mask().get(F_DATADOC));
+ const TDate datascad(camp.get_date("VALFIN"));
+
+ if (datascad.ok() && datadoc > datascad)
+ return error_box("Offerta scaduta il %s", datascad.string());
+ }
+ return TRUE;
}
bool TDocumento_mask::datacambio_handler( TMask_field& f, KEY key )
{
- TMask& m = f.mask();
- if (key == K_TAB && m.field(F_CAMBIO).empty())
- {
- const TString& codval = m.get(F_CODVAL1);
- if (is_true_value(codval))
- {
- const TRectype& rec = cache().get("%VAL", codval);
- m.set(F_CAMBIO, rec.get("S4"));
- }
- }
- return TRUE;
+ TMask& m = f.mask();
+ if (key == K_TAB && m.field(F_CAMBIO).empty())
+ {
+ const TString& codval = m.get(F_CODVAL1);
+ if (is_true_value(codval))
+ {
+ const TRectype& rec = cache().get("%VAL", codval);
+ m.set(F_CAMBIO, rec.get("S4"));
+ }
+ }
+ return TRUE;
}
bool TDocumento_mask::codval_handler( TMask_field& f, KEY key )
{
- if (key == K_TAB && f.focusdirty() && !f.empty())
- {
- TMask& m = f.mask();
-
- // Cerco un cambio per la data specificata, se non lo trovo lo invento
- TDate datacam = m.get_date(F_DATACAMBIO);
- if (!datacam.ok())
- {
- datacam = m.get_date(F_DATADOC);
- m.set(F_DATACAMBIO, datacam);
- m.set(F_DATACAMBIO1, datacam);
- }
- TExchange exc(f.get());
- exchange_type et;
- real cambio = exc.get_change(et); // Determino il cambio standard ed il "Contro-Euro"
- TString16 key;
- key.format("%-3s%s", (const char*)f.get(), (const char*)datacam.string(ANSI));
- const real giornaliero(cache().get("CAM", key, "S4"));
- if (!giornaliero.is_zero())
- cambio = giornaliero; // Ho trovato un cambio per il giorno!
- m.set(F_CAMBIO, cambio);
- m.set(F_CONTROEURO, et == _exchange_contro ? "X" : "");
-
- m.sfield(F_SHEET).force_update(); // Aggiorna punti decimali degli importi
- }
- return TRUE;
+ if (key == K_TAB && f.focusdirty() && !f.empty())
+ {
+ TMask& m = f.mask();
+
+ // Cerco un cambio per la data specificata, se non lo trovo lo invento
+ TDate datacam = m.get_date(F_DATACAMBIO);
+ if (!datacam.ok())
+ {
+ datacam = m.get_date(F_DATADOC);
+ m.set(F_DATACAMBIO, datacam);
+ m.set(F_DATACAMBIO1, datacam);
+ }
+ TExchange exc(f.get());
+ exchange_type et;
+ real cambio = exc.get_change(et); // Determino il cambio standard ed il "Contro-Euro"
+ TString16 key;
+ key.format("%-3s%s", (const char*)f.get(), (const char*)datacam.string(ANSI));
+ const real giornaliero(cache().get("CAM", key, "S4"));
+ if (!giornaliero.is_zero())
+ cambio = giornaliero; // Ho trovato un cambio per il giorno!
+ m.set(F_CAMBIO, cambio);
+ m.set(F_CONTROEURO, et == _exchange_contro ? "X" : "");
+
+ m.sfield(F_SHEET).force_update(); // Aggiorna punti decimali degli importi
+ }
+ return TRUE;
}
diff --git a/ve/velib06a.cpp b/ve/velib06a.cpp
index f066a7aa9..d527e2ed4 100755
--- a/ve/velib06a.cpp
+++ b/ve/velib06a.cpp
@@ -22,7 +22,7 @@
#endif
#ifndef __SCONTI_H
-#include "sconti.h"
+#include "sconti.h"
#endif
#include "../cg/cg2103.h"
@@ -32,80 +32,81 @@
#endif
#ifndef __DBLIB_H
-#include "../db/dblib.h"
+#include "../db/dblib.h"
#endif
-#include "../mg/anamag.h"
-#include "../mg/codcorr.h"
-#include "../mg/deslin.h"
-#include "../mg/umart.h"
+#include "../mg/anamag.h"
+#include "../mg/codcorr.h"
+#include "../mg/deslin.h"
+#include "../mg/umart.h"
+#include "../ca/calib01.h"
#include "velib.h"
#define MAX_VIS_RATE 5
bool numdocrif_hndl( TMask_field& field, KEY key )
-{
- if (key == K_ENTER)
- {
- TDocumento_mask& m = (TDocumento_mask&)field.mask();
- TString16 campo = DOC_NUMDOCRIF;
- if (field.field() != NULL)
- campo = field.field()->name();
-
- TRectype filtrec(LF_DOC);
- filtrec.put(DOC_TIPOCF, m.get(F_TIPOCF));
- filtrec.put(DOC_CODCF, m.get(F_CODCF));
- filtrec.put(DOC_PROVV, m.get(F_PROVV));
- filtrec.put(DOC_ANNO, m.get(F_ANNO));
-
- TRelation rel(LF_DOC);
- TString sortkey = "TIPOCF|CODCF|PROVV|ANNO|CODNUM|"; sortkey << campo;
- TSorted_cursor cur(&rel, sortkey, "", 2, &filtrec, &filtrec);
- TString80 f; f.format("CODNUM==\"%s\"", (const char*)m.get(F_CODNUM));
-
- cur.setfilter(f);
-
- filtrec.put(DOC_CODNUM, m.get(F_CODNUM));
- filtrec.put(campo, field.get());
- cur.curr() = filtrec;
- cur.read(_isequal);
-
- if (cur.file().status() == NOERR)
- {
- const long numdoc = m.get_long(F_NDOC);
- if (numdoc != cur.curr().get_long(DOC_NDOC))
- return yesno_box("Il numero di riferimento %s è già stato utilizzato\nsi desidera registrare ugualmente?",
- (const char *)field.get());
- }
- }
- return TRUE;
+{
+ if (key == K_ENTER)
+ {
+ TDocumento_mask& m = (TDocumento_mask&)field.mask();
+ TString16 campo = DOC_NUMDOCRIF;
+ if (field.field() != NULL)
+ campo = field.field()->name();
+
+ TRectype filtrec(LF_DOC);
+ filtrec.put(DOC_TIPOCF, m.get(F_TIPOCF));
+ filtrec.put(DOC_CODCF, m.get(F_CODCF));
+ filtrec.put(DOC_PROVV, m.get(F_PROVV));
+ filtrec.put(DOC_ANNO, m.get(F_ANNO));
+
+ TRelation rel(LF_DOC);
+ TString sortkey = "TIPOCF|CODCF|PROVV|ANNO|CODNUM|"; sortkey << campo;
+ TSorted_cursor cur(&rel, sortkey, "", 2, &filtrec, &filtrec);
+ TString80 f; f.format("CODNUM==\"%s\"", (const char*)m.get(F_CODNUM));
+
+ cur.setfilter(f);
+
+ filtrec.put(DOC_CODNUM, m.get(F_CODNUM));
+ filtrec.put(campo, field.get());
+ cur.curr() = filtrec;
+ cur.read(_isequal);
+
+ if (cur.file().status() == NOERR)
+ {
+ const long numdoc = m.get_long(F_NDOC);
+ if (numdoc != cur.curr().get_long(DOC_NDOC))
+ return yesno_box("Il numero di riferimento %s è già stato utilizzato\nsi desidera registrare ugualmente?",
+ (const char *)field.get());
+ }
+ }
+ return true;
}
bool totdoc_hndl( TMask_field& field, KEY key )
-{
- if (key == K_ENTER)
- {
- TDocumento_mask & m = (TDocumento_mask &) field.mask();
- const real totdoc = m.doc().totale_doc();
- const real totdoc_check(field.get());
-
-
- if (m.doc().physical_rows() > 0 && totdoc != totdoc_check)
- {
- const TString16 tchk(totdoc_check.string());
-
- return yesno_box("Il totale documento digitato (%s) non corrisponde\nal totale documento (%s) calcolato,\n devo registrare ugualmente",
- (const char *) tchk, totdoc.string());
- }
- }
- return TRUE;
+{
+ if (key == K_ENTER)
+ {
+ TDocumento_mask & m = (TDocumento_mask &) field.mask();
+ const real totdoc = m.doc().totale_doc();
+ const real totdoc_check(field.get());
+
+
+ if (m.doc().physical_rows() > 0 && totdoc != totdoc_check)
+ {
+ const TString16 tchk(totdoc_check.string());
+
+ return yesno_box("Il totale documento digitato (%s) non corrisponde\nal totale documento (%s) calcolato,\n devo registrare ugualmente",
+ (const char *) tchk, totdoc.string());
+ }
+ }
+ return true;
}
bool smart_hndl( TMask_field& field, KEY key )
-{
- if (key == K_SPACE)
+{
+ if (key == K_SPACE)
{
TDocumento_mask & m = (TDocumento_mask &) field.mask();
TSmart_card * s = m.smartcard();
@@ -146,16 +147,16 @@ bool smart_hndl( TMask_field& field, KEY key )
if (m.insert_mode() && m.doc().codice_numerazione().save_and_new())
s->disconnect_card();
}
- }
+ }
- return TRUE;
+ return true;
}
bool ora_hndl( TMask_field& field, KEY key )
{
- if (field.to_check(key,true))
- {
+ if (field.to_check(key,true))
+ {
TString16 ora;
if (field.automagic() && field.get().empty())
@@ -164,17 +165,17 @@ bool ora_hndl( TMask_field& field, KEY key )
struct tm* t = localtime(<);
ora.format("%02d%02d", t->tm_hour, t->tm_min);
- field.set((ora));
+ field.set((ora));
}
else
- {
+ {
ora = field.get();
if (ora.not_empty())
{
if (!isdigit(ora[0]) ||
- !isdigit(ora[1]) ||
- !isdigit(ora[2]) ||
+ !isdigit(ora[1]) ||
+ !isdigit(ora[2]) ||
!isdigit(ora[3]) ||
atoi(ora.left(2)) > 23 ||
atoi(ora.mid(2)) > 59)
@@ -184,119 +185,119 @@ bool ora_hndl( TMask_field& field, KEY key )
if (field.required())
return error_box("Ora obbligatoria");
}
- }
+ }
- return true;
+ return true;
}
bool dummy_hndl(TMask_field& field, KEY key)
{
- warning_box( "Al campo %d è arrivato un KEY %d", field.dlg( ), key );
- return TRUE;
+ warning_box( "Al campo %d è arrivato un KEY %d", field.dlg( ), key );
+ return true;
}
// Handler per il calcolo delle date di pagamento
bool condpag_hndl( TMask_field& field, KEY key )
-{
- TDocumento_mask& m = (TDocumento_mask &) field.mask( );
-
- if ( field.to_check(key) || (key == K_TAB && !m.is_running()))
- {
- const TString& condpag = m.get(F_CODPAG);
- if (condpag.not_empty())
- {
- TDocumento& doc = m.doc();
- // Aggiorna dati necessari per determinare il pagamento
- doc.put(DOC_CODPAG, condpag);
- doc.put(DOC_DATADOC, m.get(F_DATADOC));
- doc.put(DOC_DATAINSC, m.get(F_DATAINSC));
- doc.put(DOC_TIPOCF, m.get(F_TIPOCF));
- doc.put(DOC_CODCF, m.get(F_CODCF));
- TPagamento& pag = doc.pagamento();
- pag.set_total(CENTO, real(10), real(10));
- pag.set_rate_auto();
-
- const int numrate = pag.n_rate( );
- for(int i = 0; i < MAX_VIS_RATE; i++)
- {
- if (i < numrate)
- {
- m.show(F_DATASCAD1+i);
- m.set(F_DATASCAD1+i, pag.data_rata(i));
- }
- else
- m.hide(F_DATASCAD1+i);
- }
- }
- }
- return TRUE;
+{
+ TDocumento_mask& m = (TDocumento_mask &) field.mask( );
+
+ if ( field.to_check(key) || (key == K_TAB && !m.is_running()))
+ {
+ const TString& condpag = m.get(F_CODPAG);
+ if (condpag.not_empty())
+ {
+ TDocumento& doc = m.doc();
+ // Aggiorna dati necessari per determinare il pagamento
+ doc.put(DOC_CODPAG, condpag);
+ doc.put(DOC_DATADOC, m.get(F_DATADOC));
+ doc.put(DOC_DATAINSC, m.get(F_DATAINSC));
+ doc.put(DOC_TIPOCF, m.get(F_TIPOCF));
+ doc.put(DOC_CODCF, m.get(F_CODCF));
+ TPagamento& pag = doc.pagamento();
+ pag.set_total(CENTO, real(10), real(10));
+ pag.set_rate_auto();
+
+ const int numrate = pag.n_rate( );
+ for(int i = 0; i < MAX_VIS_RATE; i++)
+ {
+ if (i < numrate)
+ {
+ m.show(F_DATASCAD1+i);
+ m.set(F_DATASCAD1+i, pag.data_rata(i));
+ }
+ else
+ m.hide(F_DATASCAD1+i);
+ }
+ }
+ }
+ return true;
}
bool note_hndl( TMask_field& f, KEY key )
-{
- TDocumento_mask& m = (TDocumento_mask &) f.mask();
+{
+ TDocumento_mask& m = (TDocumento_mask &) f.mask();
- if (key == K_TAB && (f.focusdirty() || !m.is_running()))
- {
- const TRectype& note = cache().get("%NOT", f.get());
- if (!note.empty())
- {
- if (m.is_running() || m.field(F_NOTECLI).empty()) // Preserva descrizione presente in caricamento
- {
- // gestione del campo con descrizione estesa
- TString stringone;
- for (int i = 0; i < 6; i++)
- {
- const char fieldname[3] = { 'S', i+'0', '\0' };
- stringone << note.get(fieldname);
- }
- stringone.replace(char(0xB6), '\n');
- m.set(F_NOTECLI, stringone);
- }
+ if (key == K_TAB && (f.focusdirty() || !m.is_running()))
+ {
+ const TRectype& note = cache().get("%NOT", f.get());
+ if (!note.empty())
+ {
+ if (m.is_running() || m.field(F_NOTECLI).empty()) // Preserva descrizione presente in caricamento
+ {
+ // gestione del campo con descrizione estesa
+ TString stringone;
+ for (int i = 0; i < 6; i++)
+ {
+ const char fieldname[3] = { 'S', i+'0', '\0' };
+ stringone << note.get(fieldname);
+ }
+ stringone.replace(char(0xB6), '\n');
+ m.set(F_NOTECLI, stringone);
+ }
- if (m.doc().modificabile() && m.field(DLG_SAVEREC).enabled())
- {
- const bool reg_disabled = note.get_bool("B0");
- if (reg_disabled)
- {
- message_box(FR("Registrazione disabilitata : %s"), (const char*)note.get("S0"));
- m.disable(DLG_SAVEREC);
- }
- }
- }
+ if (m.doc().modificabile() && m.field(DLG_SAVEREC).enabled())
+ {
+ const bool reg_disabled = note.get_bool("B0");
+ if (reg_disabled)
+ {
+ message_box(FR("Registrazione disabilitata : %s"), (const char*)note.get("S0"));
+ m.disable(DLG_SAVEREC);
+ }
+ }
+ }
- }
-
- return true;
+ }
+
+ return true;
}
// Handler per il calcolo delle date di pagamento
bool data_hndl( TMask_field& field, KEY key )
-{
- TDocumento_mask& m = (TDocumento_mask &) field.mask( );
- if (field.to_check(key))
- {
- if (m.id2pos(F_DATAINSC) >= 0)
- {
- TEdit_field & e = m.efield(F_DATAINSC);
- e.set_dirty();
- e.on_hit();
- }
+{
+ TDocumento_mask& m = (TDocumento_mask &) field.mask();
+ if (field.to_check(key))
+ {
+ if (m.id2pos(F_DATAINSC) >= 0)
+ {
+ TEdit_field & e = m.efield(F_DATAINSC);
+ e.set_dirty();
+ e.on_hit();
+ }
- if (m.id2pos(F_DATACAMBIO1) >= 0 && !m.get(F_CODVAL).empty())
- m.set(F_DATACAMBIO1, field.get(), TRUE);
- }
- if (key == K_ENTER || field.to_check(key))
- {
- const TDate datadoc(m.get(F_DATADOC));
- if (!datadoc.ok())
- return field.error_box("La data documento deve essere comunque indicata.");
-
- const TCodice_numerazione codnum(m.get(F_CODNUM));
- if (codnum.test_eser())
- {
+ if (m.id2pos(F_DATACAMBIO1) >= 0 && !m.get(F_CODVAL).empty())
+ m.set(F_DATACAMBIO1, field.get(), true);
+ }
+ if (key == K_ENTER || field.to_check(key))
+ {
+ const TDate datadoc(m.get(F_DATADOC));
+ if (!datadoc.ok())
+ return field.error_box("La data documento deve essere comunque indicata.");
+
+ const TCodice_numerazione codnum(m.get(F_CODNUM));
+ if (codnum.test_eser())
+ {
- TEsercizi_contabili esc;
+ TEsercizi_contabili esc;
if (esc.date2esc(datadoc) <= 0)
return field.error_box("La data documento non appartiene ad un esercizio valido.");
if (main_app().has_module(CGAUT))
@@ -305,124 +306,122 @@ bool data_hndl( TMask_field& field, KEY key )
TString16 codcaus = td.causale();
if (codcaus.empty())
{
- const TRectype& clifo = m.doc().clifor().vendite();
- codcaus = clifo.get("CODCAUS");
+ const TRectype& clifo = m.doc().clifor().vendite();
+ codcaus = clifo.get("CODCAUS");
}
if (codcaus.not_empty())
{
- const int year = datadoc.year();
- TCausale caus;
- if (!caus.read(codcaus, year))
- return error_box(TR("Causale assente!")); // L'errore viene segnalato nella read
+ const int year = datadoc.year();
+ TCausale caus;
+ if (!caus.read(codcaus, year))
+ return error_box(TR("Causale assente!")); // L'errore viene segnalato nella read
}
}
- }
+ }
-
-
- if (codnum.dont_test_datadoc())
- return TRUE; // Non devo fare altri test
+ if (codnum.dont_test_datadoc())
+ return true; // Non devo fare altri test
- TLocalisamfile doc(LF_DOC);
-
- doc.curr() = m.doc().head();
- bool same_key = FALSE;
-
- doc.read(_isgteq);
- if (doc.eof() || doc.prev() == NOERR)
- {
- TDate dataprev = doc.get_date(DOC_DATADOC);
+ TLocalisamfile doc(LF_DOC);
- same_key = doc.curr().same_key(m.doc().head(), 1, 1);
- if (same_key && datadoc < dataprev)
- return field.error_box("Data documento inferiore alla data del documento precedente");
- }
-
- doc.curr() = m.doc().head();
- doc.read(_isgreat);
- same_key = doc.curr().same_key(m.doc().head(), 1, 1);
- if (doc.good() && same_key && datadoc > doc.get_date(DOC_DATADOC))
- return field.error_box("Data documento superiore alla data del documento successivo");
- }
- return TRUE;
+ doc.curr() = m.doc().head();
+ bool same_key = false;
+
+ doc.read(_isgteq);
+ if (doc.eof() || doc.prev() == NOERR)
+ {
+ TDate dataprev = doc.get_date(DOC_DATADOC);
+
+ same_key = doc.curr().same_key(m.doc().head(), 1, 1);
+ if (same_key && datadoc < dataprev)
+ return field.error_box("Data documento inferiore alla data del documento precedente");
+ }
+
+ doc.curr() = m.doc().head();
+ doc.read(_isgreat);
+ same_key = doc.curr().same_key(m.doc().head(), 1, 1);
+ if (doc.good() && same_key && datadoc > doc.get_date(DOC_DATADOC))
+ return field.error_box("Data documento superiore alla data del documento successivo");
+ }
+ return true;
}
-
+
// handler delle righe
void row_set_handler( TMask& m, const int field, const int index )
{
- switch ( index )
- {
- case 1:
- m.set_handler( field, pricerange_handler);
- break;
- case 2:
- m.set_handler( field, dummy_hndl );
- break;
- default:
- yesnofatal_box( FALSE, "Funzione di handler sulla riga non definita( %d ).", index );
- }
+ switch ( index )
+ {
+ case 1:
+ m.set_handler( field, pricerange_handler);
+ break;
+ case 2:
+ m.set_handler( field, dummy_hndl );
+ break;
+ default:
+ yesnofatal_box( false, "Funzione di handler sulla riga non definita( %d ).", index );
+ }
}
-
-HIDDEN TString16 curr_um;
+
+HIDDEN TString16 curr_um;
HIDDEN real curr_fc(1.0);
bool iva_handler( TMask_field& f, KEY key )
-{
- TDocumento_mask & mask = (TDocumento_mask &) f.mask().get_sheet()->mask();
+{
+ TDocumento_mask & mask = (TDocumento_mask &) f.mask().get_sheet()->mask();
- if (key == 0 || (key == K_ENTER && f.get().empty()))
- {
- const TString16 codiva = mask.condv().clifo().vendite().get(CFV_ASSFIS);
- if (codiva.not_empty())
- f.set(codiva);
- f.check();
- }
+ if (key == 0 || (key == K_ENTER && f.get().empty()))
+ {
+ const TString16 codiva = mask.condv().clifo().vendite().get(CFV_ASSFIS);
+ if (codiva.not_empty())
+ f.set(codiva);
+ f.check();
+ }
- if (key == K_ENTER && /*f.focusdirty() &&*/ f.get().empty())
- {
- TMask & row_mask = f.mask();
- const int r = f.mask().get_sheet()->selected() + 1;
- TRiga_documento& riga = mask.doc()[r];
-
- const int pos_ai = row_mask.id2pos(FR_ADDIVA);
- bool addiva = FALSE;
-
- if (pos_ai >= 0)
- addiva = row_mask.fld(pos_ai).get() == "X"; // Controlla le righe Omaggio solo se e' settato l'addebito IVA
-
- const bool check = riga.is_merce() || riga.is_spese() || riga.is_prestazione() ||
- (riga.is_omaggio() && addiva);
-
- if (check)
- {
- const int pos_p = row_mask.id2pos(FR_PREZZO);
- const int pos_q = row_mask.id2pos(FR_QTA);
- const bool pe = pos_p >= 0 && row_mask.fld(pos_p).enabled();
- const bool qe = pos_q >= 0 && row_mask.fld(pos_q).enabled();
- const bool pf = pe && row_mask.fld(pos_p).get().not_empty();
- const bool qf = qe && row_mask.fld(pos_q).get().not_empty();
- const bool required = pf && !(qe && !qf);
- if (required)
- return f.error_box("Il codice IVA e' obbligatorio.");
- }
- }
- return TRUE;
-}
+ if (key == K_ENTER && /*f.focusdirty() &&*/ f.get().empty())
+ {
+ TMask & row_mask = f.mask();
+ const int r = f.mask().get_sheet()->selected() + 1;
+ TRiga_documento& riga = mask.doc()[r];
+
+ const int pos_ai = row_mask.id2pos(FR_ADDIVA);
+ bool addiva = false;
+
+ if (pos_ai >= 0)
+ addiva = row_mask.fld(pos_ai).get() == "X"; // Controlla le righe Omaggio solo se e' settato l'addebito IVA
+
+ const bool check = riga.is_merce() || riga.is_spese() || riga.is_prestazione() ||
+ (riga.is_omaggio() && addiva);
+
+ if (check)
+ {
+ const int pos_p = row_mask.id2pos(FR_PREZZO);
+ const int pos_q = row_mask.id2pos(FR_QTA);
+ const bool pe = pos_p >= 0 && row_mask.fld(pos_p).enabled();
+ const bool qe = pos_q >= 0 && row_mask.fld(pos_q).enabled();
+ const bool pf = pe && row_mask.fld(pos_p).get().not_empty();
+ const bool qf = qe && row_mask.fld(pos_q).get().not_empty();
+ const bool required = pf && !(qe && !qf);
+ if (required)
+ return f.error_box("Il codice IVA e' obbligatorio.");
+ }
+ }
+ return true;
+}
bool dcons_handler( TMask_field& f, KEY key )
-{
- if (key == K_F8)
- {
- TMask& row_mask = f.mask();
- TSheet_field& s = *row_mask.get_sheet();
+{
+ if (key == K_F8)
+ {
+ TMask& row_mask = f.mask();
+ TSheet_field& s = *row_mask.get_sheet();
TDocumento_mask & mask = (TDocumento_mask &) s.mask();
- int r = f.mask().get_sheet()->selected() + 1;
+ int r = f.mask().get_sheet()->selected() + 1;
if (r > 1)
{
TDocumento & doc = mask.doc();
- const TRiga_documento& prev = doc[r - 1];
+ const TRiga_documento& prev = doc[r - 1];
TDate first_date = prev.get_date(RDOC_DATACONS);
TDate second_date = row_mask.get_date(FR_DATACONS);
@@ -502,14 +501,14 @@ bool dcons_handler( TMask_field& f, KEY key )
}
}
}
- return TRUE;
+ return true;
}
bool tipo_riga_handler(TMask_field& f, KEY key)
{
- if (key == K_SPACE && f.focusdirty())
- {
- TMask & row_mask = f.mask();
+ if (key == K_SPACE && f.focusdirty())
+ {
+ TMask & row_mask = f.mask();
TVariable_sheet_field * sf = (TVariable_sheet_field *) row_mask.get_sheet();
if (sf != NULL)
@@ -529,7 +528,7 @@ bool tipo_riga_handler(TMask_field& f, KEY key)
{
row.add(tipo_riga, col);
docmask.doc()[curr_row + 1].set_tipo(tipo_riga);
- TMask * rm = docmask.riga_mask(curr_row);
+ TMask * rm = docmask.riga_mask(curr_row);
sf->post_insert(curr_row);
sf->check_row(curr_row);
sf->force_update(curr_row);
@@ -546,946 +545,941 @@ bool tipo_riga_handler(TMask_field& f, KEY key)
}
return true;
}
-
+
bool codmag_handler( TMask_field& f, KEY key )
{
-// if (f.to_check(key, TRUE))
- if (key == K_TAB && f.focusdirty())
- {
- TMask& row_mask = f.mask();
- TSheet_field& sf = *row_mask.get_sheet();
- TDocumento_mask& docmask = (TDocumento_mask&)sf.mask();
-
- if (sf.column_enabled(sf.cid2index(FR_CODDEP)))
- {
- const int pos = row_mask.id2pos(FR_CODDEP);
- const TString & val = f.get();
-
- if (pos >= 0 && val.not_empty())
- {
- const TRectype& mag = cache().get("MAG", val);
- const bool active = mag.get_bool("B0");
- row_mask.fld(pos).enable(active);
- if (!active)
- row_mask.fld(pos).reset();
- }
- }
+// if (f.to_check(key, true))
+ if (key == K_TAB && f.focusdirty())
+ {
+ TMask& row_mask = f.mask();
+ TSheet_field& sf = *row_mask.get_sheet();
+ TDocumento_mask& docmask = (TDocumento_mask&)sf.mask();
- if (f.get().empty() && docmask.doc().tipo().mov_mag())
- return f.error_box("Indicare il magazzino.");
-
- docmask.update_giacenza();
- }
- return TRUE;
-}
+ if (sf.column_enabled(sf.cid2index(FR_CODDEP)))
+ {
+ const int pos = row_mask.id2pos(FR_CODDEP);
+ const TString & val = f.get();
+
+ if (pos >= 0 && val.not_empty())
+ {
+ const TRectype& mag = cache().get("MAG", val);
+ const bool active = mag.get_bool("B0");
+ row_mask.fld(pos).enable(active);
+ if (!active)
+ row_mask.fld(pos).reset();
+ }
+ }
+
+ if (f.get().empty() && docmask.doc().tipo().mov_mag())
+ return f.error_box("Indicare il magazzino.");
+
+ docmask.update_giacenza();
+ }
+ return true;
+}
bool codmag_coll_handler( TMask_field& f, KEY key )
{
- if (key == K_TAB && f.focusdirty())
- {
- TMask& row_mask = f.mask();
- TSheet_field& sf = *row_mask.get_sheet();
-
- if (sf.column_enabled( ((TSheet_field &)f).cid2index(FR_CODDEPC)))
- {
- const int pos = row_mask.id2pos(FR_CODDEPC);
- const TString & val = f.get();
-
- if (pos >= 0 && val.not_empty())
- {
- const TRectype& mag = cache().get("MAG", val);
- const bool active = mag.get_bool("B0");
- row_mask.fld(pos).enable(active);
- if (!active)
- row_mask.fld(pos).reset();
- }
- }
- }
- return TRUE;
-}
+ if (key == K_TAB && f.focusdirty())
+ {
+ TMask& row_mask = f.mask();
+ TSheet_field& sf = *row_mask.get_sheet();
+
+ if (sf.column_enabled( ((TSheet_field &)f).cid2index(FR_CODDEPC)))
+ {
+ const int pos = row_mask.id2pos(FR_CODDEPC);
+ const TString & val = f.get();
+
+ if (pos >= 0 && val.not_empty())
+ {
+ const TRectype& mag = cache().get("MAG", val);
+ const bool active = mag.get_bool("B0");
+ row_mask.fld(pos).enable(active);
+ if (!active)
+ row_mask.fld(pos).reset();
+ }
+ }
+ }
+ return true;
+}
void upd_colli_peso_tara(TMask& m, const TRectype& a)
{
- // const real qta = m.get_real(FR_QTA) * curr_fc; // curr_fc puo' non essere inizializzata e vale -1
- // Usando il metodo apposito di TArticolo non si sbaglia micca mai.
- // Sarebbe bene sparare (come dice Luca) a curr_fc ovunque copaia
- TArticolo articolo(a);
- const real qta = articolo.convert_to_um(m.get_real(FR_QTA), NULL, m.get(FR_UMQTA));
+ // const real qta = m.get_real(FR_QTA) * curr_fc; // curr_fc puo' non essere inizializzata e vale -1
+ // Usando il metodo apposito di TArticolo non si sbaglia micca mai.
+ // Sarebbe bene sparare (come dice Luca) a curr_fc ovunque copaia
+ TArticolo articolo(a);
+ const real qta = articolo.convert_to_um(m.get_real(FR_QTA), NULL, m.get(FR_UMQTA));
- const real ppcollo = a.get_real(ANAMAG_PPCOLLO);
-
- real ncolli = ppcollo.is_zero() ? UNO : qta / ppcollo;
- ncolli.ceil(0);
-
- int pos = m.id2pos(FR_NCOLLI);
- if (pos >= 0)
- if (ppcollo != ZERO)
- m.fld(pos).set(ncolli.string());
- else
- m.fld(pos).reset();
-
- pos = m.id2pos(FR_TARA);
- if (pos >= 0)
- {
- const real tara = ncolli * a.get_real(ANAMAG_TARA);
- m.fld(pos).set(tara.string());
- }
- pos = m.id2pos(FR_PNETTO);
- if (pos >= 0)
- {
- const real peso = qta * a.get_real(ANAMAG_PESO);
- m.fld(pos).set(peso.string());
- }
+ const real ppcollo = a.get_real(ANAMAG_PPCOLLO);
+
+ real ncolli = ppcollo.is_zero() ? UNO : qta / ppcollo;
+ ncolli.ceil(0);
+
+ int pos = m.id2pos(FR_NCOLLI);
+ if (pos >= 0)
+ if (ppcollo != ZERO)
+ m.fld(pos).set(ncolli.string());
+ else
+ m.fld(pos).reset();
+
+ pos = m.id2pos(FR_TARA);
+ if (pos >= 0)
+ {
+ const real tara = ncolli * a.get_real(ANAMAG_TARA);
+ m.fld(pos).set(tara.string());
+ }
+ pos = m.id2pos(FR_PNETTO);
+ if (pos >= 0)
+ {
+ const real peso = qta * a.get_real(ANAMAG_PESO);
+ m.fld(pos).set(peso.string());
+ }
}
bool pricerange_handler(TMask_field& f, KEY key )
-{
- if (key == K_TAB && f.focusdirty())
- {
- TMask& row_mask = f.mask();
- TSheet_field& sh = *row_mask.get_sheet();
- TDocumento_mask& mask = (TDocumento_mask &)sh.mask();
-
- if (mask.doc().tipo().controllo_prezzi())
- {
- const int current_doc_row = sh.selected() + 1;
- TRiga_documento & riga = mask.doc()[current_doc_row];
- const real old_price = riga.get_real(RDOC_PREZZO);
- const real new_price = row_mask.get_real(FR_PREZZO);
-
- if (!old_price.is_zero())
- {
- const TTipo_riga_documento& tipo_riga = riga.tipo();
- const int incr = tipo_riga.incr_perc_prezzo();
- const int decr = tipo_riga.decr_perc_prezzo();
-
- if (incr == 0 && decr == 0)
- {
- if (old_price != new_price && !yesno_box("Il prezzo è variato, confermare"))
- return FALSE;
- }
- else
- {
- real inf = old_price * (UNO - (decr/CENTO));
- if (inf > new_price && !yesno_box("Il prezzo è diminuito di più del %d%%, confermare", decr))
- return FALSE;
- real sup = old_price * (UNO + (incr/CENTO));
- if (sup < new_price && !yesno_box("Il prezzo è aumentato di più del %d%%, confermare", incr))
- return FALSE;
- }
- }
- riga.put(RDOC_PREZZO, new_price);
- }
- }
-
- return TRUE;
-}
+{
+ if (key == K_TAB && f.focusdirty())
+ {
+ TMask& row_mask = f.mask();
+ TSheet_field& sh = *row_mask.get_sheet();
+ TDocumento_mask& mask = (TDocumento_mask &)sh.mask();
+
+ if (mask.doc().tipo().controllo_prezzi())
+ {
+ const int current_doc_row = sh.selected() + 1;
+ TRiga_documento & riga = mask.doc()[current_doc_row];
+ const real old_price = riga.get_real(RDOC_PREZZO);
+ const real new_price = row_mask.get_real(FR_PREZZO);
+
+ if (!old_price.is_zero())
+ {
+ const TTipo_riga_documento& tipo_riga = riga.tipo();
+ const int incr = tipo_riga.incr_perc_prezzo();
+ const int decr = tipo_riga.decr_perc_prezzo();
+
+ if (incr == 0 && decr == 0)
+ {
+ if (old_price != new_price && !yesno_box("Il prezzo è variato, confermare"))
+ return false;
+ }
+ else
+ {
+ real inf = old_price * (UNO - (decr/CENTO));
+ if (inf > new_price && !yesno_box("Il prezzo è diminuito di più del %d%%, confermare", decr))
+ return false;
+ real sup = old_price * (UNO + (incr/CENTO));
+ if (sup < new_price && !yesno_box("Il prezzo è aumentato di più del %d%%, confermare", incr))
+ return false;
+ }
+ }
+ riga.put(RDOC_PREZZO, new_price);
+ }
+ }
+
+ return true;
+}
bool codart_handler(TMask_field& f, KEY key )
{
- TMask& row_mask = f.mask();
- TSheet_field& sh = *row_mask.get_sheet();
- TDocumento_mask& mask = (TDocumento_mask &)sh.mask();
-
- const int current_doc_row = sh.selected() + 1;
-
- if (f.to_check(key, TRUE))
- {
- if (!f.empty())
- row_mask.enable(FR_LIV1);
- else
- {
- row_mask.reset(FR_LIV1);
- row_mask.disable(FR_LIV1);
- }
- row_mask.field(FR_LIV1).on_hit();
- }
-
- if (key == K_TAB && (f.focusdirty() || row_mask.get(FR_CHECKED).empty()))
- {
- TCond_vendita & condv = mask.condv();
-
- condv.set_testa(&mask);
- condv.set_riga(&row_mask);
+ TMask& row_mask = f.mask();
+ TSheet_field& sh = *row_mask.get_sheet();
+ TDocumento_mask& mask = (TDocumento_mask &)sh.mask();
+ const int current_doc_row = sh.selected() + 1;
- TString80 codart = f.get();
- TRectype anamag = cache().get(LF_ANAMAG, codart); // anamag puo' cambiare
- bool found = !anamag.empty();
-
- if (found)
- row_mask.set(FR_CODARTMAG, codart, TRUE);
- else
- {
- TLocalisamfile codalt(LF_CODCORR);
-
- codalt.setkey(2);
- codalt.put(CODCORR_CODARTALT, codart);
- if (codalt.read() == NOERR)
- {
- codart = codalt.get(CODCORR_CODART);
- anamag = cache().get(LF_ANAMAG, codart);
- found = !anamag.empty();
- if (found)
- row_mask.set(FR_CODARTMAG, codart, TRUE);
- }
- }
- row_mask.set(FR_CHECKED, "X");
- if (!found)
- row_mask.set(FR_CODARTMAG, "", TRUE);
- else
- {
- const TString8 lingua = mask.get(F_CODLIN);
- const TCodice_articolo codart(row_mask.get(FR_CODARTMAG));
- TString desc(anamag.get("DESCR"));
-
- if (mask.doc()[current_doc_row].is_omaggio())
- {
- static TString* dicitura_omaggio = NULL;
- if (dicitura_omaggio == NULL)
- {
- TConfig c(CONFIG_STUDIO, "ve");
- dicitura_omaggio = new TString(c.get("DESOMAGGI"));
- if (dicitura_omaggio->blank())
- *dicitura_omaggio = TR("(OMAGGIO)");
- }
- desc << ' ' << *dicitura_omaggio;
- }
- if (lingua.not_empty())
- {
- TLocalisamfile deslin(LF_DESLIN);
-
- deslin.setkey(2);
- deslin.put(DESLIN_CODART, codart);
- deslin.put(DESLIN_CODLIN, lingua);
- if (deslin.read() == NOERR)
- {
- static int __lingua_only = 3;
-
- if (__lingua_only > 2)
- {
- TConfig c(CONFIG_DITTA, "ve");
- __lingua_only = c.get_bool("LINGUA_ONLY");
- }
- if (__lingua_only)
- desc = deslin.get(DESLIN_DESCR);
- else
- desc << '\n' << deslin.get(DESLIN_DESCR);
- }
- }
+ if (f.to_check(key, true))
+ {
+ if (!f.empty())
+ row_mask.enable(FR_LIV1);
+ else
+ {
+ row_mask.reset(FR_LIV1);
+ row_mask.disable(FR_LIV1);
+ }
+ row_mask.field(FR_LIV1).on_hit();
+ }
+
+ if (key == K_TAB && (f.focusdirty() || row_mask.get(FR_CHECKED).empty()))
+ {
+ TCond_vendita & condv = mask.condv();
- const TString& descest = anamag.get("DESCRAGG");
- if (descest.not_empty())
- desc << "\n" << descest;
-
- row_mask.set(FR_DESCR, desc);
+ condv.set_testa(&mask);
+ condv.set_riga(&row_mask);
- TString80 key; key << codart << "|1";
- const TRectype& umart = cache().get(LF_UMART, key);
- if (!umart.empty())
- {
- curr_um = umart.get(UMART_UM);
- curr_fc = umart.get_real(UMART_FC);
- }
- else
- {
- curr_um.cut(0);
- curr_fc = 1.0;
- }
- row_mask.set(FR_UMQTA, curr_um);
- upd_colli_peso_tara(row_mask, anamag);
- }
+ TString80 codart = f.get();
+ TRectype anamag = cache().get(LF_ANAMAG, codart); // anamag puo' cambiare
+ bool found = !anamag.empty();
- condv.ricerca();
- mask.doc()[current_doc_row].put(RDOC_PREZZO, row_mask.get(FR_PREZZO));
-
- const int pos = row_mask.id2pos(FR_CODIVA);
+ if (found)
+ row_mask.set(FR_CODARTMAG, codart, true);
+ else
+ {
+ TLocalisamfile codalt(LF_CODCORR);
- if (pos >= 0)
- iva_handler(row_mask.fld(pos), 0);
+ codalt.setkey(2);
+ codalt.put(CODCORR_CODARTALT, codart);
+ if (codalt.read() == NOERR)
+ {
+ codart = codalt.get(CODCORR_CODART);
+ anamag = cache().get(LF_ANAMAG, codart);
+ found = !anamag.empty();
+ if (found)
+ row_mask.set(FR_CODARTMAG, codart, true);
+ }
+ }
+ row_mask.set(FR_CHECKED, "X");
+ if (!found)
+ row_mask.set(FR_CODARTMAG, "", true);
+ else
+ {
+ const TString8 lingua = mask.get(F_CODLIN);
+ const TCodice_articolo codart(row_mask.get(FR_CODARTMAG));
+ TString desc(anamag.get("DESCR"));
- if (found)
- {
- TString16 caus(row_mask.get(FR_CAUS));
-
- if (caus.empty())
- caus = mask.get(F_CAUSMAG);
-
- if (caus.not_empty())
- {
- const TCausale_magazzino c(caus);
-
- if (!c.movimenta_sospesi())
- {
- const TRectype & rec = cache().get(LF_ANAMAG, row_mask.get(FR_CODARTMAG));
-
- if (rec.get_bool("SOSPESO"))
- return error_box(TR("Articolo %s sospeso, quindi non movimentabile"), (const char *)codart);
- }
- }
- }
-
- }
- else
- if (key == K_F8 && !sh.sheet_mask().is_running())
- {
- static int explode_db = 3;
- static bool valcomp = false;
- static bool matbase = true;
- static TExplosion_grouping raggart = RAGGR_EXP_NONE;
- static bool elrorig = false;
- static int livello = 1;
- static int ordin = 0;
-
- if (explode_db > 2)
- {
- TConfig d(CONFIG_DITTA, "ve");
-
- explode_db = d.get_bool("EXPLODEDB", "ve");
- valcomp = d.get_bool("VALCOMP", "ve");
- matbase = d.get_bool("TIPOESPL", "ve");
- raggart = (TExplosion_grouping) d.get_int("RAGGART", "ve");
- livello = d.get_int("LIVESPL", "ve");
- elrorig = d.get_bool("ELRORIG", "ve");
- ordin = d.get_int("ORDDB", "ve");
- }
- if (explode_db && !sh.sheet_mask().is_running())
- {
- TDocumento & doc = mask.doc();
- TRiga_documento & curr_row = doc[current_doc_row];
-
- sh.update_row(current_doc_row - 1);
- curr_row.autosave(sh);
+ if (mask.doc()[current_doc_row].is_omaggio())
+ {
+ static TString* dicitura_omaggio = NULL;
+ if (dicitura_omaggio == NULL)
+ {
+ TConfig c(CONFIG_STUDIO, "ve");
+ dicitura_omaggio = new TString(c.get("DESOMAGGI"));
+ if (dicitura_omaggio->blank())
+ *dicitura_omaggio = TR("(OMAGGIO)");
+ }
+ desc << ' ' << *dicitura_omaggio;
+ }
+ if (lingua.not_empty())
+ {
+ TLocalisamfile deslin(LF_DESLIN);
- TDistinta_tree db;
- TArray components;
-
- db.set_root(curr_row);
-
- const int items = db.explode(components, matbase, raggart, livello, "A", ordin);
- if (items > 0)
- {
- TProgind pi(items, "Esplosione in corso...",FALSE, TRUE);
- int row = current_doc_row;
- const TString16 tiporiga(curr_row.tipo().codice());
-
- TString_array& str_arr = sh.rows_array();
-
- for (int i = components.first(); i < items; i = components.succ(i))
- {
- pi.addstatus(1L);
- TRiga_esplosione & r = (TRiga_esplosione &) components[i];
- TRiga_documento & new_row = doc.insert_row(row + 1, tiporiga);
- //sh.insert(row, FALSE);
- str_arr.insert(new TToken_string, row);
-
- TDocumento::copy_data(new_row, curr_row);
- new_row.put(RDOC_CODART, r.articolo());
- new_row.put(RDOC_CODARTMAG, r.articolo());
- new_row.put(RDOC_LIVELLO, r.giacenza());
- new_row.zero(RDOC_DESCR);
- new_row.zero(RDOC_DESCLUNGA);
- new_row.zero(RDOC_DESCEST);
- new_row.put(RDOC_CHECKED, "");
- new_row.put(RDOC_UMQTA, r.um());
- new_row.put(RDOC_QTA, r.val() /* * qta_fin */);
- new_row.autoload(sh);
- sh.check_row(row);
- new_row.autosave(sh); // Da sheet a rdoc
- if (!valcomp)
- {
- new_row.zero(RDOC_PREZZO);
- // new_row.autoload(sh); // Da rdoc a sheet
- sh.row(row).add("0", FR_PREZZO-FIRST_FIELD);
- row_mask.reset(FR_PREZZO);
- }
- row++;
- }
- if (elrorig)
- {
- doc.destroy_row(current_doc_row, TRUE);
- sh.destroy(current_doc_row - 1, FALSE);
- row--;
- }
- else
- if (valcomp)
- {
- curr_row.zero(RDOC_PREZZO);
- curr_row.autoload(sh);
- }
- sh.force_update();
- sh.select(row-1);
- }
- }
- }
-
-
- return TRUE;
-}
+ deslin.setkey(2);
+ deslin.put(DESLIN_CODART, codart);
+ deslin.put(DESLIN_CODLIN, lingua);
+ if (deslin.read() == NOERR)
+ {
+ static int __lingua_only = 3;
+
+ if (__lingua_only > 2)
+ {
+ TConfig c(CONFIG_DITTA, "ve");
+ __lingua_only = c.get_bool("LINGUA_ONLY");
+ }
+ if (__lingua_only)
+ desc = deslin.get(DESLIN_DESCR);
+ else
+ desc << '\n' << deslin.get(DESLIN_DESCR);
+ }
+ }
+
+ const TString& descest = anamag.get("DESCRAGG");
+ if (descest.not_empty())
+ desc << "\n" << descest;
+
+ row_mask.set(FR_DESCR, desc);
+
+ TString80 key; key << codart << "|1";
+ const TRectype& umart = cache().get(LF_UMART, key);
+ if (!umart.empty())
+ {
+ curr_um = umart.get(UMART_UM);
+ curr_fc = umart.get_real(UMART_FC);
+ }
+ else
+ {
+ curr_um.cut(0);
+ curr_fc = 1.0;
+ }
+ row_mask.set(FR_UMQTA, curr_um);
+ upd_colli_peso_tara(row_mask, anamag);
+ }
+
+ condv.ricerca();
+ mask.doc()[current_doc_row].put(RDOC_PREZZO, row_mask.get(FR_PREZZO));
+
+ const int pos = row_mask.id2pos(FR_CODIVA);
+
+ if (pos >= 0)
+ iva_handler(row_mask.fld(pos), 0);
+
+ if (found)
+ {
+ TString16 caus(row_mask.get(FR_CAUS));
+
+ if (caus.empty())
+ caus = mask.get(F_CAUSMAG);
+
+ if (caus.not_empty())
+ {
+ const TCausale_magazzino c(caus);
+
+ if (!c.movimenta_sospesi())
+ {
+ const TRectype & rec = cache().get(LF_ANAMAG, row_mask.get(FR_CODARTMAG));
+
+ if (rec.get_bool("SOSPESO"))
+ return error_box(TR("Articolo %s sospeso, quindi non movimentabile"), (const char *)codart);
+ }
+ }
+ }
+ }
+ else
+ if (key == K_F8 && !sh.sheet_mask().is_running())
+ {
+ static int explode_db = 3;
+ static bool valcomp = false;
+ static bool matbase = true;
+ static TExplosion_grouping raggart = RAGGR_EXP_NONE;
+ static bool elrorig = false;
+ static int livello = 1;
+ static int ordin = 0;
+
+ if (explode_db > 2)
+ {
+ TConfig d(CONFIG_DITTA, "ve");
+
+ explode_db = d.get_bool("EXPLODEDB", "ve");
+ valcomp = d.get_bool("VALCOMP", "ve");
+ matbase = d.get_bool("TIPOESPL", "ve");
+ raggart = (TExplosion_grouping) d.get_int("RAGGART", "ve");
+ livello = d.get_int("LIVESPL", "ve");
+ elrorig = d.get_bool("ELRORIG", "ve");
+ ordin = d.get_int("ORDDB", "ve");
+ }
+ if (explode_db && !sh.sheet_mask().is_running())
+ {
+ TDocumento & doc = mask.doc();
+ TRiga_documento & curr_row = doc[current_doc_row];
+
+ sh.update_row(current_doc_row - 1);
+ curr_row.autosave(sh);
+
+ TDistinta_tree db;
+ TArray components;
+
+ db.set_root(curr_row);
+
+ const int items = db.explode(components, matbase, raggart, livello, "A", ordin);
+ if (items > 0)
+ {
+ TProgind pi(items, "Esplosione in corso...",false, true);
+ int row = current_doc_row;
+ const TString16 tiporiga(curr_row.tipo().codice());
+
+ TString_array& str_arr = sh.rows_array();
+
+ for (int i = components.first(); i < items; i = components.succ(i))
+ {
+ pi.addstatus(1L);
+ TRiga_esplosione & r = (TRiga_esplosione &) components[i];
+ TRiga_documento & new_row = doc.insert_row(row + 1, tiporiga);
+ //sh.insert(row, false);
+ str_arr.insert(new TToken_string, row);
+
+ TDocumento::copy_data(new_row, curr_row);
+ new_row.put(RDOC_CODART, r.articolo());
+ new_row.put(RDOC_CODARTMAG, r.articolo());
+ new_row.put(RDOC_LIVELLO, r.giacenza());
+ new_row.zero(RDOC_DESCR);
+ new_row.zero(RDOC_DESCLUNGA);
+ new_row.zero(RDOC_DESCEST);
+ new_row.put(RDOC_CHECKED, "");
+ new_row.put(RDOC_UMQTA, r.um());
+ new_row.put(RDOC_QTA, r.val() /* * qta_fin */);
+ new_row.autoload(sh);
+ sh.check_row(row);
+ new_row.autosave(sh); // Da sheet a rdoc
+ if (!valcomp)
+ {
+ new_row.zero(RDOC_PREZZO);
+ // new_row.autoload(sh); // Da rdoc a shee
+ sh.row(row).add("0", FR_PREZZO-FIRST_FIELD);
+ row_mask.reset(FR_PREZZO);
+ }
+ row++;
+ }
+ if (elrorig)
+ {
+ doc.destroy_row(current_doc_row, true);
+ sh.destroy(current_doc_row - 1, false);
+ row--;
+ }
+ else
+ if (valcomp)
+ {
+ curr_row.zero(RDOC_PREZZO);
+ curr_row.autoload(sh);
+ }
+ sh.force_update();
+ sh.select(row-1);
+ }
+ }
+ }
+ return true;
+}
bool codartmag_handler( TMask_field& f, KEY key )
-{
- TMask & m = f.mask();
- TSheet_field& s = *m.get_sheet();
- TDocumento_mask& mask= (TDocumento_mask&)s.mask();
+{
+ TMask & m = f.mask();
+ TSheet_field& s = *m.get_sheet();
+ TDocumento_mask& mask= (TDocumento_mask&)s.mask();
- bool to_check = key == K_TAB && f.focusdirty();
- if (!to_check)
- to_check = !mask.is_running();
+ bool to_check = key == K_TAB && f.focusdirty();
+ if (!to_check)
+ to_check = !mask.is_running();
- if (to_check)
- {
- const TString& codart = f.get();
- const bool artmag = codart.not_empty();
-
- m.show(FR_UMQTA, artmag);
- m.show(FR_UMQTA2, !artmag);
+ if (to_check)
+ {
+ const TString& codart = f.get();
+ const bool artmag = codart.not_empty();
- mask.update_giacenza();
- }
- return TRUE;
+ m.show(FR_UMQTA, artmag);
+ m.show(FR_UMQTA2, !artmag);
+
+ mask.update_giacenza();
+ }
+ return true;
}
bool liv_handler( TMask_field& f, KEY key )
-{
- bool ok = TRUE;
- TDocumento_mask & mask=(TDocumento_mask &) f.mask().get_sheet()->mask();
-
- if (key == K_TAB && f.focusdirty() && !f.get().empty())
- {
- const int levnum=f.dlg()-FR_LIV1+1;
- // Se e' abilitato l'autoinserimento del livello di giacenza...
- if (mask.livelli().autoinsert(levnum))
- mask.livelli().autoinsert(levnum, f);
- }
-
- if (key == K_ENTER && !f.get().empty())
- {
- static int checkgiac = 3;
- if (checkgiac > 2)
- {
- TConfig c(CONFIG_DITTA);
- checkgiac = c.get_bool("LIVPERART", "ve");
- }
- if (mask.is_running() && checkgiac)
- {
- TLocalisamfile fl(LF_MAG);
- fl.setkey(2);
- TRectype & r = fl.curr();
- TMask& row_mask = f.mask();
- TEsercizi_contabili esc;
- const int annoes = esc.date2esc(mask.get_date(F_DATADOC));
-
- r.put(MAG_ANNOES, annoes);
- TString16 codmag(row_mask.get(FR_CODMAG));
-
- codmag.left_just(3);
- codmag << row_mask.get(FR_CODDEP);
- r.put(MAG_CODMAG, codmag);
- const TString80 codart(row_mask.get(FR_CODART));
-
- r.put(MAG_CODART, codart);
- TString liv;
-
- for (int l = 0 ; l <= f.dlg() - FR_LIV1; l++)
- mask.doc().livelli().pack_grpcode(liv,row_mask.get(FR_LIV1+l),l+1);
-
- r.put(MAG_LIVELLO, liv);
-
- TRectype new_rec(r);
- if (fl.read() != NOERR)
- {
- ok = yesno_box("Il codice di giacenza %s non e' legato all' articolo. Devo legarlo", (const char *)f.get());
- if (ok)
- {
- fl.setkey(1);
- r = new_rec;
- r.put("NRIGA", 999);
- int nriga = 1;
- if (fl.read(_isgteq) == NOERR)
- fl.prev();
- if (codart == fl.get("CODART"))
- nriga = fl.get_int("NRIGA")+1;
- new_rec.put("NRIGA", nriga);
- const int err = new_rec.write(fl);
- if (err != NOERR)
- ok = error_box("Non sono riuscito a legare il codice di giacenza. Errore %d", err);
- }
- }
- }
- }
-
- if (f.to_check(key, TRUE))
- {
- if (f.dlg() < FR_LIV4)
- {
- TMask& row_mask = f.mask();
- TMask_field & next = row_mask.field(f.dlg() + 1);
- if (f.get().not_empty())
- next.enable();
- else
- {
- next.reset();
- next.disable();
- }
- next.on_hit();
- }
- TDocumento_mask& mask=(TDocumento_mask&)f.mask().get_sheet()->mask();
- mask.update_giacenza();
- }
- return ok;
-}
+{
+ bool ok = true;
+ TDocumento_mask & mask=(TDocumento_mask &) f.mask().get_sheet()->mask();
+
+ if (key == K_TAB && f.focusdirty() && !f.get().empty())
+ {
+ const int levnum=f.dlg()-FR_LIV1+1;
+ // Se e' abilitato l'autoinserimento del livello di giacenza...
+ if (mask.livelli().autoinsert(levnum))
+ mask.livelli().autoinsert(levnum, f);
+ }
+
+ if (key == K_ENTER && !f.get().empty())
+ {
+ static int checkgiac = 3;
+ if (checkgiac > 2)
+ {
+ TConfig c(CONFIG_DITTA);
+ checkgiac = c.get_bool("LIVPERART", "ve");
+ }
+ if (mask.is_running() && checkgiac)
+ {
+ TLocalisamfile fl(LF_MAG);
+ fl.setkey(2);
+ TRectype & r = fl.curr();
+ TMask& row_mask = f.mask();
+ TEsercizi_contabili esc;
+ const int annoes = esc.date2esc(mask.get_date(F_DATADOC));
+
+ r.put(MAG_ANNOES, annoes);
+ TString16 codmag(row_mask.get(FR_CODMAG));
+
+ codmag.left_just(3);
+ codmag << row_mask.get(FR_CODDEP);
+ r.put(MAG_CODMAG, codmag);
+ const TString80 codart(row_mask.get(FR_CODART));
+
+ r.put(MAG_CODART, codart);
+ TString liv;
+
+ for (int l = 0 ; l <= f.dlg() - FR_LIV1; l++)
+ mask.doc().livelli().pack_grpcode(liv,row_mask.get(FR_LIV1+l),l+1);
+
+ r.put(MAG_LIVELLO, liv);
+
+ TRectype new_rec(r);
+ if (fl.read() != NOERR)
+ {
+ ok = yesno_box("Il codice di giacenza %s non e' legato all' articolo. Devo legarlo", (const char *)f.get());
+ if (ok)
+ {
+ fl.setkey(1);
+ r = new_rec;
+ r.put("NRIGA", 999);
+ int nriga = 1;
+ if (fl.read(_isgteq) == NOERR)
+ fl.prev();
+ if (codart == fl.get("CODART"))
+ nriga = fl.get_int("NRIGA")+1;
+ new_rec.put("NRIGA", nriga);
+ const int err = new_rec.write(fl);
+ if (err != NOERR)
+ ok = error_box("Non sono riuscito a legare il codice di giacenza. Errore %d", err);
+ }
+ }
+ }
+ }
+
+ if (f.to_check(key, true))
+ {
+ if (f.dlg() < FR_LIV4)
+ {
+ TMask& row_mask = f.mask();
+ TMask_field & next = row_mask.field(f.dlg() + 1);
+ if (f.get().not_empty())
+ next.enable();
+ else
+ {
+ next.reset();
+ next.disable();
+ }
+ next.on_hit();
+ }
+ TDocumento_mask& mask=(TDocumento_mask&)f.mask().get_sheet()->mask();
+ mask.update_giacenza();
+ }
+ return ok;
+}
void set_curr_um(const TString & um)
-{
- curr_um = um;
- curr_fc = -1.0;
+{
+ curr_um = um;
+ curr_fc = -1.0;
}
bool umart_handler( TMask_field& f, KEY key )
{
- TMask& row_mask = f.mask( );
- TSheet_field& sh = *row_mask.get_sheet();
- TDocumento_mask & mask = (TDocumento_mask &)sh.mask();
- // Se qualcuno cerca di modificare la maschera
- if ( key == K_TAB && f.focusdirty() && mask.is_running())
- {
- const int current_doc_row = sh.selected() + 1;
+ TMask& row_mask = f.mask( );
+ TSheet_field& sh = *row_mask.get_sheet();
+ TDocumento_mask & mask = (TDocumento_mask &)sh.mask();
+ // Se qualcuno cerca di modificare la maschera
+ if ( key == K_TAB && f.focusdirty() && mask.is_running())
+ {
+ const int current_doc_row = sh.selected() + 1;
- TCond_vendita & condv = mask.condv();
- condv.set_riga(&row_mask);
+ TCond_vendita & condv = mask.condv();
+ condv.set_riga(&row_mask);
- const TString& um = f.get();
- real fc(1.0);
-
- if (um.not_empty() && curr_um.not_empty() && um != curr_um)
- {
- TLocalisamfile umart(LF_UMART);
- umart.setkey(2);
- umart.put(UMART_CODART, row_mask.get(FR_CODARTMAG));
- umart.put(UMART_UM, um);
- if (umart.read() == NOERR)
- {
- real qta(row_mask.get_real(FR_QTA));
- fc = umart.get_real(UMART_FC);
- if (curr_fc < ZERO)
- {
- umart.put(UMART_CODART, row_mask.get(FR_CODARTMAG));
- umart.put(UMART_UM, curr_um);
- if (umart.read() == NOERR)
- curr_fc = umart.get_real(UMART_FC);
- else
- curr_fc = 1.0;
- }
- qta *= curr_fc;
- qta /= fc;
- qta.round(5);
- row_mask.set(FR_QTA, qta);
- qta = row_mask.get_real(FR_QTAEVASA);
- qta *= curr_fc;
- qta /= fc;
- qta.round(5);
- row_mask.set(FR_QTAEVASA, qta);
- }
-
- }
- curr_um = um;
- curr_fc = fc;
- condv.ricerca(TRUE);
- mask.doc()[current_doc_row].put(RDOC_PREZZO, row_mask.get(FR_PREZZO));
- }
- return TRUE;
+ const TString& um = f.get();
+ real fc(1.0);
+
+ if (um.not_empty() && curr_um.not_empty() && um != curr_um)
+ {
+ TLocalisamfile umart(LF_UMART);
+ umart.setkey(2);
+ umart.put(UMART_CODART, row_mask.get(FR_CODARTMAG));
+ umart.put(UMART_UM, um);
+ if (umart.read() == NOERR)
+ {
+ real qta(row_mask.get_real(FR_QTA));
+ fc = umart.get_real(UMART_FC);
+ if (curr_fc < ZERO)
+ {
+ umart.put(UMART_CODART, row_mask.get(FR_CODARTMAG));
+ umart.put(UMART_UM, curr_um);
+ if (umart.read() == NOERR)
+ curr_fc = umart.get_real(UMART_FC);
+ else
+ curr_fc = 1.0;
+ }
+ qta *= curr_fc;
+ qta /= fc;
+ qta.round(5);
+ row_mask.set(FR_QTA, qta);
+ qta = row_mask.get_real(FR_QTAEVASA);
+ qta *= curr_fc;
+ qta /= fc;
+ qta.round(5);
+ row_mask.set(FR_QTAEVASA, qta);
+ }
+ }
+ curr_um = um;
+ curr_fc = fc;
+ condv.ricerca(true);
+ mask.doc()[current_doc_row].put(RDOC_PREZZO, row_mask.get(FR_PREZZO));
+ }
+ return true;
}
bool um_handler( TMask_field& f, KEY key )
{
- // Se qualcuno cerca di modificare la maschera
- if ( key == K_TAB && f.focusdirty())
- {
- TMask& row_mask = f.mask( );
- TTable & ums = (TTable &) ((TEdit_field &) f).browse()->cursor()->file();
-
- const TString16 um(f.get());
- real fc(1.0);
-
- if (um.not_empty() && curr_um.not_empty() && um != curr_um)
- {
- ums.put("CODTAB", curr_um);
- if (ums.read() == NOERR)
- {
- real qta(row_mask.get_real(FR_QTA));
- const TString16 umsrif0(ums.get("S7"));
- const real fc0 = ums.get_real("R10");
- if (um == umsrif0)
- fc = fc0;
- else
- {
- ums.put("CODTAB", um);
- if (ums.read() == NOERR)
- {
- const real fc1 = ums.get_real("R10");
- const TString16 umsrif1(ums.get("S7"));
-
-
- if (fc1 > ZERO)
- {
- if (curr_um == umsrif1)
- fc = 1 / fc1;
- else
- if (umsrif0 == ums.get("S7"))
- fc = fc0 / ums.get_real("R10");
- }
- }
- }
- qta *= fc;
- qta.round(5);
- row_mask.set(FR_QTA, qta);
- qta = row_mask.get_real(FR_QTAEVASA);
- qta *= fc;
- qta.round(5);
- row_mask.set(FR_QTAEVASA, qta);
- }
-
- }
- curr_um = um;
- curr_fc = fc;
- }
- return TRUE;
+ // Se qualcuno cerca di modificare la maschera
+ if ( key == K_TAB && f.focusdirty())
+ {
+ TMask& row_mask = f.mask( );
+ TTable & ums = (TTable &) ((TEdit_field &) f).browse()->cursor()->file();
+
+ const TString16 um(f.get());
+ real fc(1.0);
+
+ if (um.not_empty() && curr_um.not_empty() && um != curr_um)
+ {
+ ums.put("CODTAB", curr_um);
+ if (ums.read() == NOERR)
+ {
+ real qta(row_mask.get_real(FR_QTA));
+ const TString16 umsrif0(ums.get("S7"));
+ const real fc0 = ums.get_real("R10");
+ if (um == umsrif0)
+ fc = fc0;
+ else
+ {
+ ums.put("CODTAB", um);
+ if (ums.read() == NOERR)
+ {
+ const real fc1 = ums.get_real("R10");
+ const TString16 umsrif1(ums.get("S7"));
+
+ if (fc1 > ZERO)
+ {
+ if (curr_um == umsrif1)
+ fc = 1 / fc1;
+ else
+ if (umsrif0 == ums.get("S7"))
+ fc = fc0 / ums.get_real("R10");
+ }
+ }
+ }
+ qta *= fc;
+ qta.round(5);
+ row_mask.set(FR_QTA, qta);
+ qta = row_mask.get_real(FR_QTAEVASA);
+ qta *= fc;
+ qta.round(5);
+ row_mask.set(FR_QTAEVASA, qta);
+ }
+ }
+ curr_um = um;
+ curr_fc = fc;
+ }
+ return true;
}
bool descr_handler( TMask_field& f, KEY key )
{
- if (key == K_TAB && f.focusdirty())
- {
- const TString s(f.get());
- if (s.find('\n') < 0)
- {
- TLocalisamfile & anamag = (TLocalisamfile &) ((TEdit_field &) f).browse()->cursor()->file();
-
- if (f.get() == anamag.get(ANAMAG_DESCR))
+ if (key == K_TAB && f.focusdirty())
+ {
+ const TString s(f.get());
+ if (s.find('\n') < 0)
+ {
+ TLocalisamfile & anamag = (TLocalisamfile &) ((TEdit_field &) f).browse()->cursor()->file();
+
+ if (f.get() == anamag.get(ANAMAG_DESCR))
f.mask().set(FR_CODART, anamag.get(ANAMAG_CODART), 3);
- }
- }
- return TRUE;
+ }
+ }
+ return true;
}
bool qtaart_handler( TMask_field& f, KEY key )
-{
- // Se qualcuno cerca di modificare la maschera
- if ( key == K_TAB && f.focusdirty())
- {
- TMask& row_mask = f.mask();
- TSheet_field& sh = *row_mask.get_sheet();
- TDocumento_mask& mask = (TDocumento_mask&) sh.mask();
- const int current_doc_row = sh.selected() + 1;
+{
+ // Se qualcuno cerca di modificare la maschera
+ if ( key == K_TAB && f.focusdirty())
+ {
+ TMask& row_mask = f.mask();
+ TSheet_field& sh = *row_mask.get_sheet();
+ TDocumento_mask& mask = (TDocumento_mask&) sh.mask();
+ const int current_doc_row = sh.selected() + 1;
- TCond_vendita & condv = mask.condv();
- condv.set_riga(&row_mask);
- condv.ricerca(FALSE, TRUE);
- mask.doc()[current_doc_row].put(RDOC_PREZZO, row_mask.get(FR_PREZZO));
- const TString& codart = row_mask.get(FR_CODARTMAG);
-
- if (codart.not_empty())
- {
- const TRectype& anamag = cache().get(LF_ANAMAG, codart);
- if (!anamag.empty())
- upd_colli_peso_tara(row_mask, anamag);
- }
+ TCond_vendita & condv = mask.condv();
+ condv.set_riga(&row_mask);
+ condv.ricerca(false, true);
+ mask.doc()[current_doc_row].put(RDOC_PREZZO, row_mask.get(FR_PREZZO));
+ const TString& codart = row_mask.get(FR_CODARTMAG);
- }
- else
- if (key == K_ENTER && f.dirty())
- {
- TDocumento_mask& mask=(TDocumento_mask&)f.mask().get_sheet()->mask();
- TDocumento & doc = mask.doc();
+ if (codart.not_empty())
+ {
+ const TRectype& anamag = cache().get(LF_ANAMAG, codart);
+ if (!anamag.empty())
+ upd_colli_peso_tara(row_mask, anamag);
+ }
- if ((doc.tipo().check_giac() || doc.tipo().check_disp()) &&
- main_app().has_module(MGAUT, CHK_DONGLE) && doc.tipo().mov_mag())
- {
- TSheet_field& sf = mask.sfield(F_SHEET);
- TToken_string& row = sf.row(sf.selected());
- const TString codart = row.get(sf.cid2index(FR_CODARTMAG));
-
- if (codart.not_empty())
- {
- TString16 codmag = row.get(sf.cid2index(FR_CODMAG));
- const TString16 coddep = row.get(sf.cid2index(FR_CODDEP));
- if (!coddep.blank())
- codmag << coddep;
-
- TString16 livello;
- for (int i = 0; i < 4; i++)
- {
- const char* liv = row.get(sf.cid2index(FR_LIV1+i));
- if (*liv > ' ')
- livello << liv;
- else
- break;
- }
+ }
+ else
+ if (key == K_ENTER && f.dirty())
+ {
+ TDocumento_mask& mask=(TDocumento_mask&)f.mask().get_sheet()->mask();
+ TDocumento & doc = mask.doc();
- real qta(row.get(sf.cid2index(FR_QTA)));
- const TString16 caus(mask.get(F_CAUSMAG));
- TCausale_magazzino c(caus);
- const long nmovmag = doc.get_long(DOC_MOVMAG);
-
- if (nmovmag != 0)
- {
- TLocalisamfile rmovmag(LF_RMOVMAG); rmovmag.setkey(2);
- rmovmag.put(RMOVMAG_CODART, codart);
- rmovmag.put(RMOVMAG_LIVGIAC, livello);
- rmovmag.put(RMOVMAG_CODMAG, codmag);
- rmovmag.put(RMOVMAG_NUMREG, nmovmag);
- if (rmovmag.read() == NOERR)
- qta -= rmovmag.get_real(RMOVMAG_QUANT);
- }
- if (doc.tipo().check_giac())
- {
- real giac(mask.get(F_CURGIAC));
- if (giac < -(c.sgn(s_giac) * qta))
- warning_box("Attenzione giacenza negativa");
- }
- else
- if (doc.tipo().check_disp())
- {
- real disp(mask.get(F_CURDISP));
- if (disp < -(c.sgn(s_giac) * qta))
- warning_box("Attenzione disponibilita' negativa");
- }
- }
- }
- }
+ if ((doc.tipo().check_giac() || doc.tipo().check_disp()) &&
+ main_app().has_module(MGAUT, CHK_DONGLE) && doc.tipo().mov_mag())
+ {
+ TSheet_field& sf = mask.sfield(F_SHEET);
+ TToken_string& row = sf.row(sf.selected());
+ const TString codart = row.get(sf.cid2index(FR_CODARTMAG));
+
+ if (codart.not_empty())
+ {
+ TString16 codmag = row.get(sf.cid2index(FR_CODMAG));
+ const TString16 coddep = row.get(sf.cid2index(FR_CODDEP));
+ if (!coddep.blank())
+ codmag << coddep;
+
+ TString16 livello;
+ for (int i = 0; i < 4; i++)
+ {
+ const char* liv = row.get(sf.cid2index(FR_LIV1+i));
+ if (*liv > ' ')
+ livello << liv;
+ else
+ break;
+ }
+
+ real qta(row.get(sf.cid2index(FR_QTA)));
+ const TString16 caus(mask.get(F_CAUSMAG));
+ TCausale_magazzino c(caus);
+ const long nmovmag = doc.get_long(DOC_MOVMAG);
+
+ if (nmovmag != 0)
+ {
+ TLocalisamfile rmovmag(LF_RMOVMAG); rmovmag.setkey(2);
+ rmovmag.put(RMOVMAG_CODART, codart);
+ rmovmag.put(RMOVMAG_LIVGIAC, livello);
+ rmovmag.put(RMOVMAG_CODMAG, codmag);
+ rmovmag.put(RMOVMAG_NUMREG, nmovmag);
+ if (rmovmag.read() == NOERR)
+ qta -= rmovmag.get_real(RMOVMAG_QUANT);
+ }
+ if (doc.tipo().check_giac())
+ {
+ real giac(mask.get(F_CURGIAC));
+ if (giac < -(c.sgn(s_giac) * qta))
+ warning_box("Attenzione giacenza negativa");
+ }
+ else
+ if (doc.tipo().check_disp())
+ {
+ real disp(mask.get(F_CURDISP));
+ if (disp < -(c.sgn(s_giac) * qta))
+ warning_box("Attenzione disponibilita' negativa");
+ }
+ }
+ }
+ }
+ return qta_handler(f, key);
+ }
- return qta_handler(f, key);
- }
-
bool qta_handler( TMask_field& f, KEY key )
-{
- // Se qualcuno cerca di modificare la maschera
- if ( key == K_TAB && f.focusdirty())
- {
- TMask& row_mask = f.mask( );
- const real qta_evasa = row_mask.get_real(FR_QTAEVASA);
- const real qta(f.get());
+{
+ // Se qualcuno cerca di modificare la maschera
+ if ( key == K_TAB && f.focusdirty())
+ {
+ TMask& row_mask = f.mask( );
+ const real qta_evasa = row_mask.get_real(FR_QTAEVASA);
+ const real qta(f.get());
- if (qta_evasa > 0 && qta_evasa >= qta)
- {
- row_mask.set(FR_RIGAEVASA, "X");
- row_mask.disable(FR_RIGAEVASA);
- }
- else
- row_mask.enable(FR_RIGAEVASA);
- }
-
- return TRUE;
+ if (qta_evasa > 0 && qta_evasa >= qta)
+ {
+ row_mask.set(FR_RIGAEVASA, "X");
+ row_mask.disable(FR_RIGAEVASA);
+ }
+ else
+ row_mask.enable(FR_RIGAEVASA);
+ }
+
+ return true;
}
-
+
bool qta_evasa_handler( TMask_field& f, KEY key )
-{
- TMask& row_mask = f.mask( );
- if (f.to_check(key) || (key == K_TAB && !row_mask.is_running()))
- {
- const real qta_evasa(f.get());
- const real qta = row_mask.get_real(FR_QTA);
+{
+ TMask& row_mask = f.mask( );
+ if (f.to_check(key) || (key == K_TAB && !row_mask.is_running()))
+ {
+ const real qta_evasa(f.get());
+ const real qta = row_mask.get_real(FR_QTA);
- bool enable_evasa = true;
- if (qta_evasa > 0 && qta_evasa >= qta)
- {
- row_mask.set(FR_RIGAEVASA, "X");
- enable_evasa = false;
- }
- row_mask.enable(FR_RIGAEVASA, enable_evasa);
- if (!row_mask.is_running())
- {
- TSheet_field* sheet = row_mask.get_sheet();
- const int riga = sheet->selected();
- sheet->enable_cell(riga, sheet->cid2index(FR_RIGAEVASA), enable_evasa);
- }
- }
- return TRUE;
+ bool enable_evasa = true;
+ if (qta_evasa > 0 && qta_evasa >= qta)
+ {
+ row_mask.set(FR_RIGAEVASA, "X");
+ enable_evasa = false;
+ }
+ row_mask.enable(FR_RIGAEVASA, enable_evasa);
+ if (!row_mask.is_running())
+ {
+ TSheet_field* sheet = row_mask.get_sheet();
+ const int riga = sheet->selected();
+ sheet->enable_cell(riga, sheet->cid2index(FR_RIGAEVASA), enable_evasa);
+ }
+ }
+ return true;
}
-
+
bool causmag_handler( TMask_field& f, KEY key )
-{
- if (f.to_check(key))
- {
- TMask& row_mask = f.mask( );
- TDocumento_mask & mask = (TDocumento_mask &) row_mask.get_sheet()->mask();
- TString16 causmag(f.get());
- if (causmag.empty())
- causmag = mask.get(F_CAUSMAG);
-
- TCausale_magazzino c(cache().get("%CAU", causmag));
- if (c.empty())
- {
- cache().discard("%CAU", causmag);
- }
- else
- {
- if (c.has_default_mag() && row_mask.get(FR_CODMAG).empty())
- {
- row_mask.set(FR_CODMAG, c.default_mag(), TRUE);
- row_mask.set(FR_CODDEPC, "", TRUE);
- }
- if (c.has_default_dep() && row_mask.get(FR_CODDEP).empty())
- row_mask.set(FR_CODDEP, c.default_dep(), TRUE);
-
- if (!c.caus_collegata().empty())
- {
- c = cache().get("%CAU", c.caus_collegata());
- if (c.has_default_mag() && row_mask.get(FR_CODMAGC).empty())
- {
- row_mask.set(FR_CODMAGC, c.default_mag(), TRUE);
- row_mask.set(FR_CODDEPC, "", TRUE);
- }
- if (c.has_default_dep() && row_mask.get(FR_CODDEPC).empty())
- row_mask.set(FR_CODDEPC, c.default_dep(), TRUE);
-
- static int copy_defmagc = -883;
- if (copy_defmagc < 0)
- {
- TFilename fname; mask.doc().tipo().profile_name(fname);
- TConfig c_tipo_documento(fname,"MAIN");
- copy_defmagc = c_tipo_documento.get_bool("DEFMAGXCOLL");
- }
- if (copy_defmagc!=0)
- {
- if (row_mask.get(FR_CODMAGC).empty())
- row_mask.set(FR_CODMAGC, mask.stdmag(), TRUE);
- if (row_mask.get(FR_CODDEPC).empty())
- row_mask.set(FR_CODDEPC, mask.stddep(), TRUE);
- }
- }
- if (!c.movimenta_sospesi())
- {
- const TRectype & rec = cache().get(LF_ANAMAG, row_mask.get(FR_CODARTMAG));
-
- if (rec.get_bool("SOSPESO"))
- return error_box("Articolo %s sospeso, quindi non movmentabile", (const char *)rec.get(ANAMAG_CODART));
- }
- }
- }
- return TRUE;
+{
+ if (f.to_check(key))
+ {
+ TMask& row_mask = f.mask( );
+ TDocumento_mask & mask = (TDocumento_mask &) row_mask.get_sheet()->mask();
+ TString16 causmag(f.get());
+ if (causmag.empty())
+ causmag = mask.get(F_CAUSMAG);
+
+ TCausale_magazzino c(cache().get("%CAU", causmag));
+ if (c.empty())
+ {
+ cache().discard("%CAU", causmag);
+ }
+ else
+ {
+ if (c.has_default_mag() && row_mask.get(FR_CODMAG).empty())
+ {
+ row_mask.set(FR_CODMAG, c.default_mag(), true);
+ row_mask.set(FR_CODDEPC, "", true);
+ }
+ if (c.has_default_dep() && row_mask.get(FR_CODDEP).empty())
+ row_mask.set(FR_CODDEP, c.default_dep(), true);
+
+ if (!c.caus_collegata().empty())
+ {
+ c = cache().get("%CAU", c.caus_collegata());
+ if (c.has_default_mag() && row_mask.get(FR_CODMAGC).empty())
+ {
+ row_mask.set(FR_CODMAGC, c.default_mag(), true);
+ row_mask.set(FR_CODDEPC, "", true);
+ }
+ if (c.has_default_dep() && row_mask.get(FR_CODDEPC).empty())
+ row_mask.set(FR_CODDEPC, c.default_dep(), true);
+
+ static int copy_defmagc = -883;
+ if (copy_defmagc < 0)
+ {
+ TFilename fname; mask.doc().tipo().profile_name(fname);
+ TConfig c_tipo_documento(fname,"MAIN");
+ copy_defmagc = c_tipo_documento.get_bool("DEFMAGXCOLL");
+ }
+ if (copy_defmagc!=0)
+ {
+ if (row_mask.get(FR_CODMAGC).empty())
+ row_mask.set(FR_CODMAGC, mask.stdmag(), true);
+ if (row_mask.get(FR_CODDEPC).empty())
+ row_mask.set(FR_CODDEPC, mask.stddep(), true);
+ }
+ }
+ if (!c.movimenta_sospesi())
+ {
+ const TRectype & rec = cache().get(LF_ANAMAG, row_mask.get(FR_CODARTMAG));
+
+ if (rec.get_bool("SOSPESO"))
+ return error_box("Articolo %s sospeso, quindi non movmentabile", (const char *)rec.get(ANAMAG_CODART));
+ }
+ }
+ }
+ return true;
}
-
+
bool sppr_handler( TMask_field& f, KEY key )
{
- TMask& row_mask = f.mask();
-
- if (key == K_TAB && (f.focusdirty() || row_mask.get(FR_DESCR).empty()))
- {
- const int pos = row_mask.id2pos(FR_PREZZO);
-
- if (pos >= 0)
- {
- TMask & mask = row_mask.get_sheet()->mask();
- TEdit_field & e = (TEdit_field &) f;
- TRelation * r = e.browse()->cursor()->relation();
- const TString16 cod = r->curr().get("COD");
- TSpesa_prest sp(NULL, cod == "SPP" ? 'S' : 'P');
- if (sp.read(row_mask.get(FR_CODART)) == NOERR)
- {
- const char tipo = sp.tipo();
- const bool qta_val_fl = tipo == 'Q';
- const bool perc_fl = tipo == 'P';
+ TMask& row_mask = f.mask();
+
+ if (key == K_TAB && (f.focusdirty() || row_mask.get(FR_DESCR).empty()))
+ {
+ const int pos = row_mask.id2pos(FR_PREZZO);
- short pos = row_mask.id2pos(FR_UMQTASP);
- if (pos >= 0)
- row_mask.fld(pos).enable(!perc_fl);
- pos = row_mask.id2pos(FR_PREZZO);
- if (pos >= 0)
- row_mask.fld(pos).enable(!perc_fl);
- pos = row_mask.id2pos(FR_SCONTO);
- if (pos >= 0)
- row_mask.fld(pos).enable(!perc_fl);
- pos = row_mask.id2pos(FR_QTA);
- if (pos >= 0)
- {
- row_mask.fld(pos).show(!perc_fl);
- row_mask.fld(pos).enable(qta_val_fl);
- }
- pos = row_mask.id2pos(FR_PERCSP);
- if (pos >= 0)
- {
- row_mask.fld(pos).show(perc_fl);
- row_mask.fld(pos).enable(perc_fl);
- }
-
- if (!perc_fl)
- {
- const real cambio = mask.get_real(F_CAMBIO);
- real prezzo = sp.prezzo();
- const TString& doc_valuta = mask.get(F_CODVAL);
- const bool controeuro = mask.get_bool(F_CONTROEURO);
-
- sppr_calc(sp, doc_valuta, cambio, prezzo, controeuro ? _exchange_contro : _exchange_base);
- row_mask.set(FR_PREZZO, prezzo);
-
- }
- const int posiva = row_mask.id2pos(FR_CODIVA);
- if (posiva >= 0)
- iva_handler(row_mask.fld(posiva), 0);
- }
- }
- }
- return TRUE;
+ if (pos >= 0)
+ {
+ TMask & mask = row_mask.get_sheet()->mask();
+ TEdit_field & e = (TEdit_field &) f;
+ TRelation * r = e.browse()->cursor()->relation();
+ const TString16 cod = r->curr().get("COD");
+ TSpesa_prest sp(NULL, cod == "SPP" ? 'S' : 'P');
+ if (sp.read(row_mask.get(FR_CODART)) == NOERR)
+ {
+ const char tipo = sp.tipo();
+ const bool qta_val_fl = tipo == 'Q';
+ const bool perc_fl = tipo == 'P';
+ short pos = row_mask.id2pos(FR_UMQTASP);
+
+ if (pos >= 0)
+ row_mask.fld(pos).enable(!perc_fl);
+ pos = row_mask.id2pos(FR_PREZZO);
+ if (pos >= 0)
+ row_mask.fld(pos).enable(!perc_fl);
+ pos = row_mask.id2pos(FR_SCONTO);
+ if (pos >= 0)
+ row_mask.fld(pos).enable(!perc_fl);
+ pos = row_mask.id2pos(FR_QTA);
+ if (pos >= 0)
+ {
+ row_mask.fld(pos).show(!perc_fl);
+ row_mask.fld(pos).enable(qta_val_fl);
+ }
+ pos = row_mask.id2pos(FR_PERCSP);
+ if (pos >= 0)
+ {
+ row_mask.fld(pos).show(perc_fl);
+ row_mask.fld(pos).enable(perc_fl);
+ }
+ if (!perc_fl)
+ {
+ const real cambio = mask.get_real(F_CAMBIO);
+ real prezzo = sp.prezzo();
+ const TString& doc_valuta = mask.get(F_CODVAL);
+ const bool controeuro = mask.get_bool(F_CONTROEURO);
+
+ sppr_calc(sp, doc_valuta, cambio, prezzo, controeuro ? _exchange_contro : _exchange_base);
+ row_mask.set(FR_PREZZO, prezzo);
+
+ }
+ const int posiva = row_mask.id2pos(FR_CODIVA);
+ if (posiva >= 0)
+ iva_handler(row_mask.fld(posiva), 0);
+ }
+ }
+ }
+ return true;
}
bool TDocumento_mask::numdocrif_search_handler(TMask_field& f, KEY key)
-{
- if (key == K_F9)
- {
- TMask& m = f.mask();
+{
+ if (key == K_F9)
+ {
+ TMask& m = f.mask();
+
+ TRectype filtrec(LF_DOC);
+
+ filtrec.put(DOC_TIPOCF, m.get(F_TIPOCF));
+ filtrec.put(DOC_CODCF, m.get(F_CODCF));
- TRectype filtrec(LF_DOC);
- filtrec.put(DOC_TIPOCF, m.get(F_TIPOCF));
- filtrec.put(DOC_CODCF, m.get(F_CODCF));
const long codcf = atol(m.get(F_CODCF));
+
if (codcf != 0)
filtrec.put(DOC_TIPOCF, m.get(F_TIPOCF));
- TRelation rel(LF_DOC);
- rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
- TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec);
- TString80 f; f.format("(CODNUM==\"%s\") && (PROVV==\"%s\") && (ANNO==\"%s\")",
+ TRelation rel(LF_DOC);
+ rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
+ TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec);
+ TString80 f; f.format("(CODNUM==\"%s\") && (PROVV==\"%s\") && (ANNO==\"%s\")",
(const char *)m.get(F_CODNUM), (const char *)m.get(F_PROVV), (const char *)m.get(F_ANNO));
-
- cur.setfilter(f);
- TCursor_sheet sheet(&cur, "CODCF|20->RAGSOC|ANNO|CODNUM|NUMDOCRIF|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|DATADOC|CODVAL|G1:TOTDOC",
- "Documento di riferimento",
- "Codice|Ragione Sociale@50|Anno|Numeraz|Docum.Rif.|Data@10|Docum.Rif. 1|Docum.Rif. 2|Docum.Rif. 3|Documento|Data\nDocumento@10|Valuta|Totale\nDocumento@18V",
- 0, 1);
- if (sheet.run() == K_ENTER)
- {
- const TString16 ndoc = sheet.row(-1).get(9);
- m.set(F_NDOC, ndoc);
- m.stop_run(K_AUTO_ENTER);
- }
- }
-
- return TRUE;
+
+ cur.setfilter(f);
+ TCursor_sheet sheet(&cur, "CODCF|20->RAGSOC|ANNO|CODNUM|NUMDOCRIF|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|DATADOC|CODVAL|G1:TOTDOC",
+ "Documento di riferimento",
+ "Codice|Ragione Sociale@50|Anno|Numeraz|Docum.Rif.|Data@10|Docum.Rif. 1|Docum.Rif. 2|Docum.Rif. 3|Documento|Data\nDocumento@10|Valuta|Totale\nDocumento@18V",
+ 0, 1);
+ if (sheet.run() == K_ENTER)
+ {
+ const TString16 ndoc = sheet.row(-1).get(9);
+ m.set(F_NDOC, ndoc);
+ m.stop_run(K_AUTO_ENTER);
+ }
+ }
+ return true;
}
bool TDocumento_mask::ragsoc_search_handler(TMask_field& f, KEY key)
-{
- if (key == K_F9)
- {
- TMask& m = f.mask();
+{
+ if (key == K_F9)
+ {
+ TMask& m = f.mask();
- TRectype filtrec(LF_DOC);
- filtrec.put(DOC_CODNUM, m.get(F_CODNUM));
- filtrec.put(DOC_PROVV, m.get(F_PROVV));
- filtrec.put(DOC_ANNO, m.get(F_ANNO));
-
- TRelation rel(LF_DOC);
+ TRectype filtrec(LF_DOC);
+
+ filtrec.put(DOC_CODNUM, m.get(F_CODNUM));
+ filtrec.put(DOC_PROVV, m.get(F_PROVV));
+ filtrec.put(DOC_ANNO, m.get(F_ANNO));
+
+ TRelation rel(LF_DOC);
rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
- TSorted_cursor cur(&rel, "TIPOCF|UPPER(20->RAGSOC)|PROVV|ANNO|CODNUM|PROVV|NDOC", "", 1, &filtrec, &filtrec);
- TString80 form; form.format("CODNUM==\"%s\"", (const char *)m.get(F_CODNUM));
-
- cur.setfilter(form, TRUE);
- TCursor_sheet sheet(&cur, "20->RAGSOC|CODCF|20->PAIV|ANNO|CODNUM|NDOC|DATADOC|CODVAL|G1:TOTDOC",
- "Ragione Sociale",
- "Ragione Sociale@50|Codice|Partita IVA|Anno|Numeraz|Documento|Data\nDocumento@10|Valuta|Totale\nDocumento@18V",
- 0, 1);
+ TSorted_cursor cur(&rel, "TIPOCF|UPPER(20->RAGSOC)|PROVV|ANNO|CODNUM|PROVV|NDOC", "", 1, &filtrec, &filtrec);
+ TString80 form; form.format("CODNUM==\"%s\"", (const char *)m.get(F_CODNUM));
+
+ cur.setfilter(form, true);
+
+ TCursor_sheet sheet(&cur, "20->RAGSOC|CODCF|20->PAIV|ANNO|CODNUM|NDOC|DATADOC|CODVAL|G1:TOTDOC",
+ "Ragione Sociale",
+ "Ragione Sociale@50|Codice|Partita IVA|Anno|Numeraz|Documento|Data\nDocumento@10|Valuta|Totale\nDocumento@18V",
+ 0, 1);
TString ragsoc(f.get());
rel.zero();
@@ -1494,45 +1488,91 @@ bool TDocumento_mask::ragsoc_search_handler(TMask_field& f, KEY key)
rel.curr(LF_CLIFO).put(CLI_RAGSOC, ragsoc);
sheet.cursor()->read();
- if (sheet.run() == K_ENTER)
- {
- const TString16 ndoc = sheet.row(-1).get(5);
- m.set(F_NDOC, ndoc);
- m.stop_run(K_AUTO_ENTER);
- }
- }
-
- return TRUE;
+ if (sheet.run() == K_ENTER)
+ {
+ const TString16 ndoc = sheet.row(-1).get(5);
+ m.set(F_NDOC, ndoc);
+ m.stop_run(K_AUTO_ENTER);
+ }
+ }
+ return true;
}
-
-
bool TDocumento_mask::datadocrif_handler(TMask_field& f, KEY key)
{
- if (key == K_ENTER && f.empty())
- {
- const TDocumento_mask& m = (const TDocumento_mask&)f.mask();
- if (m.get_bool(F_RAGGREFF))
- {
- const TDocumento& doc = m.doc();
- if (doc.is_nota_credito())
- return f.error_box("E' necessario specificare data e numero documento di riferimento\n"
- "quando si desidera generare effetti raggruppati");
- }
- }
- return TRUE;
+ if (key == K_ENTER && f.empty())
+ {
+ const TDocumento_mask& m = (const TDocumento_mask&)f.mask();
+ if (m.get_bool(F_RAGGREFF))
+ {
+ const TDocumento& doc = m.doc();
+ if (doc.is_nota_credito())
+ return f.error_box("E' necessario specificare data e numero documento di riferimento\n"
+ "quando si desidera generare effetti raggruppati");
+ }
+ }
+ return true;
}
bool link_handler( TMask_field& f, KEY key )
{
- if (key == K_SPACE)
- {
- const TSheet_field & sf = *f.mask().get_sheet();
- const TDocumento_mask & m = (const TDocumento_mask & )sf.mask();
- const TDocumento & d = m.doc();
- const int nrow = sf.selected() + 1;
- const TRiga_documento & r = d[nrow];
- r.edit(LF_DOC, "DAPROVV|DAANNO|DACODNUM|DANDOC");
- }
- return TRUE;
-}
\ No newline at end of file
+ if (key == K_SPACE)
+ {
+ const TSheet_field & sf = *f.mask().get_sheet();
+ const TDocumento_mask & m = (const TDocumento_mask & )sf.mask();
+ const TDocumento & d = m.doc();
+ const int nrow = sf.selected() + 1;
+ const TRiga_documento & r = d[nrow];
+ r.edit(LF_DOC, "DAPROVV|DAANNO|DACODNUM|DANDOC");
+ }
+ return true;
+}
+
+bool ca_mag_handler(TMask_field& f, bool cdc = true)
+{
+ TMask& row_mask = f.mask();
+ const TSheet_field & sf = *f.mask().get_sheet();
+ const TDocumento_mask & mask = (TDocumento_mask & )sf.mask();
+ short i, first_fld, last_fld;
+ const int lffile = cdc ? LF_CDC : LF_COMMESSE;
+ const TMultilevel_code_info & info = ca_multilevel_code_info(lffile);
+ TString80 cod;
+
+ last_fld = f.dlg();
+ first_fld = last_fld - info.levels() + 1;
+ for (i = first_fld; i <= last_fld; i++)
+ cod << row_mask.get(i);
+ if (cod.blank())
+ {
+ cod.cut(0);
+ last_fld = cdc ? mask.last_cdc_dlg() : mask.last_cms_dlg();
+ first_fld = last_fld - info.levels() + 1;
+
+ for (i = first_fld; i <= last_fld; i++)
+ cod << mask.get(i);
+ }
+
+ const TRectype & rec = cache().get(lffile, cod);
+ const TString16 codmag = rec.get("CODMAG");
+
+ if (codmag.not_empty())
+ {
+ row_mask.set(FR_CODMAG, codmag.left(3), true);
+ row_mask.set(FR_CODDEP, codmag.mid(3), true);
+ }
+ return true;
+}
+
+bool cms_mag_handler(TMask_field& f, KEY key)
+{
+ if ((key == K_TAB && f.focusdirty()) || key == K_ENTER)
+ ca_mag_handler(f, false);
+ return true;
+}
+
+bool cdc_mag_handler(TMask_field& f, KEY key)
+{
+ if ((key == K_TAB && f.focusdirty()) || key == K_ENTER)
+ ca_mag_handler(f);
+ return true;
+}
diff --git a/ve/vepriv.h b/ve/vepriv.h
index 46ac75d56..a0d36a8da 100755
--- a/ve/vepriv.h
+++ b/ve/vepriv.h
@@ -27,6 +27,9 @@ bool qta_evasa_handler(TMask_field& f, KEY key);
bool causmag_handler(TMask_field& f, KEY key);
bool pricerange_handler(TMask_field& f, KEY key );
bool link_handler( TMask_field& f, KEY key );
+bool cdc_mag_handler(TMask_field& f, KEY key);
+bool cms_mag_handler(TMask_field& f, KEY key);
+
bool numdocrif_hndl(TMask_field& field, KEY key);
bool smart_hndl(TMask_field& field, KEY key);