Riportata la versione 98.01.01CD

git-svn-id: svn://10.65.10.50/trunk@6020 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1998-01-23 09:57:34 +00:00
parent ae8005a3a9
commit 98c6c85507
28 changed files with 881 additions and 197 deletions

View File

@ -385,6 +385,7 @@ class TMenuitem : public TObject
bool _enabled : 1; bool _enabled : 1;
bool _firm : 1; bool _firm : 1;
bool _password : 1; bool _password : 1;
bool _reloadmenu : 1;
protected: protected:
bool perform_submenu() const; bool perform_submenu() const;
@ -491,7 +492,7 @@ public:
TMenuitem::TMenuitem(TSubmenu* sm) TMenuitem::TMenuitem(TSubmenu* sm)
: _submenu(sm), : _submenu(sm),
_enabled(TRUE), _firm(FALSE), _password(FALSE), _enabled(TRUE), _firm(FALSE), _password(FALSE), _reloadmenu(FALSE),
_color(NORMAL_COLOR) _color(NORMAL_COLOR)
{ } { }
@ -514,6 +515,7 @@ void TMenuitem::create(const char* t)
case 'D': _enabled = FALSE; break; case 'D': _enabled = FALSE; break;
case 'F': _firm = TRUE; break; case 'F': _firm = TRUE; break;
case 'P': _password = TRUE; break; case 'P': _password = TRUE; break;
case 'R': _reloadmenu = TRUE; break;
default : break; default : break;
} }
} }
@ -529,8 +531,8 @@ void TMenuitem::create(const char* t)
if (_action.empty()) if (_action.empty())
_enabled = FALSE; _enabled = FALSE;
if (_enabled && is_program()) // if (_enabled && is_program())
_enabled = menu().has_module(_action); // _enabled = menu().has_module(_action);
} }
bool TMenuitem::enabled() const bool TMenuitem::enabled() const

File diff suppressed because it is too large Load Diff

View File

@ -67,6 +67,9 @@ protected:
static bool rsoc_handler(TMask_field& f, KEY k); static bool rsoc_handler(TMask_field& f, KEY k);
public: public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const
{return FALSE;}
virtual TRelation* get_relation() const {return (TRelation*)_rel;} virtual TRelation* get_relation() const {return (TRelation*)_rel;}
TClifo_application(){} TClifo_application(){}
}; };

View File

@ -26,6 +26,9 @@ protected:
virtual bool user_destroy(); virtual bool user_destroy();
public: public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const
{return FALSE;}
static CGTab_application& app() { return (CGTab_application&)main_app(); } static CGTab_application& app() { return (CGTab_application&)main_app(); }

View File

@ -50,8 +50,10 @@ class TPrintclifo_app : public TPrintapp
long _codice; long _codice;
char _tipocf,_tipoaper; char _tipocf,_tipoaper;
bool _gia_iniziati_fornitori; bool _gia_iniziati_fornitori;
public: public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const
{return FALSE;}
virtual bool preprocess_page(int file, int counter); virtual bool preprocess_page(int file, int counter);
virtual bool preprocess_print(int file, int counter); virtual bool preprocess_print(int file, int counter);

View File

@ -16,6 +16,9 @@ protected:
virtual void init_query_mode (TMask&); virtual void init_query_mode (TMask&);
virtual int rewrite(const TMask& m); virtual int rewrite(const TMask& m);
public: public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const
{return FALSE;}
TBnp_table_app() {} TBnp_table_app() {}
virtual ~TBnp_table_app() {} virtual ~TBnp_table_app() {}
}; };

View File

@ -78,7 +78,7 @@ public:
const char* description(int cod) const; const char* description(int cod) const;
// @cmember Controlla che la ditta attiva sia una ditta (e non es. dati comuni) // @cmember Controlla che la ditta attiva sia una ditta (e non es. dati comuni)
bool is_firm() const bool is_firm() const
{ return _prefix.len() == 6 && _prefix[5] == 'a';} { return _prefix.len() == 6 && (toupper(_prefix[5]) == 'A');}
// @cmember Controlla che siano attivi i dati comuni (e non una ditta) // @cmember Controlla che siano attivi i dati comuni (e non una ditta)
bool is_com() const bool is_com() const
{ return !is_firm();} { return !is_firm();}

View File

@ -26,6 +26,9 @@ class TMask_tabmag : public TMask
public: public:
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization() const
{return FALSE;}
TMask_tabmag(const char * ,const TString16 &); TMask_tabmag(const char * ,const TString16 &);
virtual ~TMask_tabmag(); virtual ~TMask_tabmag();
}; };

View File

@ -23,6 +23,9 @@ protected:
static bool hnd_livinizio(TMask_field &, KEY); // handler static bool hnd_livinizio(TMask_field &, KEY); // handler
static bool hnd_livfine(TMask_field &, KEY); // handler static bool hnd_livfine(TMask_field &, KEY); // handler
public: public:
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization() const
{return FALSE;}
const TCodice_livelli & liv_cod() const TCodice_livelli & liv_cod()
{return *_cod_liv;} {return *_cod_liv;}

View File

@ -26,6 +26,9 @@ class TConf_magazz : public TConfig_application
static bool check_fields(TMask_field& f, KEY k); static bool check_fields(TMask_field& f, KEY k);
public: public:
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization() const
{return FALSE;}
virtual bool preprocess_config (TMask& mask, TConfig& config); virtual bool preprocess_config (TMask& mask, TConfig& config);
virtual bool postprocess_config (TMask& mask, TConfig& config); virtual bool postprocess_config (TMask& mask, TConfig& config);

View File

@ -1,3 +1,3 @@
124 124
0 0
$provv|0|0|250|36|Archivio provvigioni||| $provv|0|0|246|0|Archivio provvigioni|||

View File

@ -1,11 +1,10 @@
124 124
26 25
CODAGE|1|5|0|Codice agente CODAGE|1|5|0|Codice agente
ANNO|2|4|0|Anno del documento ANNO|2|4|0|Anno del documento
CODNUM|1|4|0|Codice numerazione del documento CODNUM|1|4|0|Codice numerazione del documento
NDOC|3|7|0|Numero documento NDOC|3|7|0|Numero documento
NRIGA|2|4|0|Numero riga di riferimento per documento NRIGA|2|4|0|Numero riga di riferimento per documento
NROW|2|4|0|Numero riga di riferito per agente
NRATA|2|4|0|Numero rata NRATA|2|4|0|Numero rata
GENERATA|1|1|0|Flag di generazione (< >Immessa, generata dal <D>ocumento) GENERATA|1|1|0|Flag di generazione (< >Immessa, generata dal <D>ocumento)
DATADOC|5|8|0|Data del documento DATADOC|5|8|0|Data del documento
@ -26,7 +25,6 @@ PROVVPAG|4|18|2|Provvigione pagata
PAGMAT|4|18|2|Pagamento maturato PAGMAT|4|18|2|Pagamento maturato
PROVVMAT|4|18|2|Provvigione maturata PROVVMAT|4|18|2|Provvigione maturata
TIPOPAGPR|2|1|0|Tipo pagamento della provvigione (?) TIPOPAGPR|2|1|0|Tipo pagamento della provvigione (?)
3 2
CODAGE+NROW| CODAGE+ANNO+CODNUM+NDOC+NRIGA|
CODAGE+ANNO+CODNUM+NDOC+NRIGA|
CODAGE+DATADOC|X CODAGE+DATADOC|X

View File

@ -23,6 +23,9 @@ protected:
static bool seqalt_handler(TMask_field& f, KEY k); static bool seqalt_handler(TMask_field& f, KEY k);
static bool codalt_handler(TMask_field& f, KEY k); static bool codalt_handler(TMask_field& f, KEY k);
public: public:
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization() const
{return FALSE;}
TGestione_agenti_app() {}; TGestione_agenti_app() {};
~TGestione_agenti_app() {}; ~TGestione_agenti_app() {};
}; };

View File

@ -263,7 +263,8 @@ bool TGestione_provv_app::rate_sheet_notify(TSheet_field& ds, int r, KEY key)
} }
break; break;
case K_DEL: // Notifica della cancellazione di una riga case K_DEL: // Notifica della cancellazione di una riga
rd.remove_rata(r); // Effettua anche il pack degli elementi rd.remove_rata(r);
rd.pack_rate(); // Effettua anche il pack degli elementi (corrispondenza 1 a 1 tra sheet ed array)
app()._dirty = TRUE; app()._dirty = TRUE;
break; break;
default: default:
@ -465,7 +466,11 @@ void TGestione_provv_app::load_provvigioni(TMask* m)
_msk->set(F_MANNO,""); _msk->set(F_MANNO,"");
_msk->set(F_MCODNUM,""); _msk->set(F_MCODNUM,"");
_msk->set(F_MNDOC,""); _msk->set(F_MNDOC,"");
_prag->read(agente); if (_prag->read(agente) == _islocked)
{
message_box("Dati agente %s in uso da un altro utente.", (const char*) agente);
return;
}
KEY k; KEY k;
bool repeat; bool repeat;
@ -473,6 +478,7 @@ void TGestione_provv_app::load_provvigioni(TMask* m)
fill_sheet_doc(); // Inizializza lo sheet dei documenti fill_sheet_doc(); // Inizializza lo sheet dei documenti
_dirty = FALSE; _dirty = FALSE;
int err = NOERR;
do do
{ {
k = _msk->run(); k = _msk->run();
@ -488,10 +494,13 @@ void TGestione_provv_app::load_provvigioni(TMask* m)
} }
if (to_write) if (to_write)
if (check_totals()) // Controlla i totali delle provvigioni per tutti i documenti if (check_totals()) // Controlla i totali delle provvigioni per tutti i documenti
_prag->write(); err = _prag->write();
else else
repeat = TRUE; repeat = TRUE;
} while (repeat); } while (repeat);
if (err != NOERR)
message_box("Errore %d tentando di scrivere i dati provvigionali dell'agente.",err, (const char*) agente);
_prag->unlock();
} }
bool TGestione_provv_app::menu(MENU_TAG) bool TGestione_provv_app::menu(MENU_TAG)

View File

@ -23,6 +23,10 @@ class TStampa_agenti : public TApplication
protected: protected:
virtual bool create(); virtual bool create();
virtual bool destroy(); virtual bool destroy();
public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const
{return FALSE;}
}; };
bool TStampa_agenti::create() bool TStampa_agenti::create()
@ -34,7 +38,7 @@ bool TStampa_agenti::create()
TRectype darec(LF_AGENTI),arec(LF_AGENTI); TRectype darec(LF_AGENTI),arec(LF_AGENTI);
_mask = new TMask("pr1100"); _mask = new TMask("pr1100");
while (_mask->run() == K_ENTER) { while (_mask->run() == K_ENTER) {
_form = new TForm("pr1100a", ""); _form = new TForm("pr1100a", "");
TSorted_cursor& cur = (TSorted_cursor& )*_form->cursor(); TSorted_cursor& cur = (TSorted_cursor& )*_form->cursor();
TString sortexp; TString sortexp;

View File

@ -47,7 +47,7 @@ public:
const TRata& operator = (const TRata & r) { set(r);return *this;} const TRata& operator = (const TRata & r) { set(r);return *this;}
TRata(const TRectype& rec); TRata(const TRectype& rec);
TRata(const TRata & r) { set(r);} TRata(const TRata & r) { set(r);}
TRata() { _generata = ' ';} TRata() { _generata = ' '; _saldata = FALSE; }
virtual ~TRata() {} virtual ~TRata() {}
}; };
@ -75,10 +75,13 @@ public:
const real cambio() const { return _cambio;} const real cambio() const { return _cambio;}
const real impnet() const { return _impnetdoc;} const real impnet() const { return _impnetdoc;}
const int items() { return _rows.items();} const int items() { return _rows.items();}
const bool exist(const int i);
TRata& row(int i, bool create = FALSE); TRata& row(int i, bool create = FALSE);
TRata& operator[](int i){ return row(i,FALSE); } TRata& operator[](int i){ return row(i,FALSE); }
void add_rata(TRata* r) {_rows.add(r);} void add_rata(TRata* r) {_rows.add(r);}
void remove_rata(int i = -1) {_rows.destroy(i,TRUE);} void remove_rata(int i = -1) {_rows.destroy(i);}
// Pakka le rate
void pack_rate() {_rows.pack();}
// Ordina le rate // Ordina le rate
void sort_rate() {_rows.sort();} void sort_rate() {_rows.sort();}
// Controlla che la somma delle provvigioni delle singole rate sia <= della provvigione del documento // Controlla che la somma delle provvigioni delle singole rate sia <= della provvigione del documento
@ -116,6 +119,7 @@ public:
int write() { return rate2rows(0); } int write() { return rate2rows(0); }
int rewrite() { return rate2rows(1); } int rewrite() { return rate2rows(1); }
int remove() { return rate2rows(2); } int remove() { return rate2rows(2); }
void unlock();
// Restituisce un elenco di documenti che hanno rate per le provvigioni di questo agente // Restituisce un elenco di documenti che hanno rate per le provvigioni di questo agente
int documenti(TString_array& kl) { return _rate.get_keys(kl); } int documenti(TString_array& kl) { return _rate.get_keys(kl); }
// Per accedere tramite singole rate... // Per accedere tramite singole rate...

View File

@ -9,32 +9,45 @@ TProvvigioni_agente::TProvvigioni_agente() : TRectype(LF_AGENTI)
{ {
// _rows = new TRecord_array(LF_PROVV,PROV_NRIGA); // _rows = new TRecord_array(LF_PROVV,PROV_NRIGA);
_provv_rel = new TRelation(LF_PROVV); _provv_rel = new TRelation(LF_PROVV);
_provv_cur = new TCursor(_provv_rel, "", 2); _provv_cur = new TCursor(_provv_rel);
} }
TProvvigioni_agente::TProvvigioni_agente(const char* agente) : TRectype(LF_AGENTI) TProvvigioni_agente::TProvvigioni_agente(const char* agente) : TRectype(LF_AGENTI)
{ {
//_rows = new TRecord_array(LF_PROVV,PROV_NRIGA); //_rows = new TRecord_array(LF_PROVV,PROV_NRIGA);
_provv_rel = new TRelation(LF_PROVV); _provv_rel = new TRelation(LF_PROVV);
_provv_cur = new TCursor(_provv_rel, "", 2); _provv_cur = new TCursor(_provv_rel);
read(agente); read(agente);
} }
TProvvigioni_agente::~TProvvigioni_agente() TProvvigioni_agente::~TProvvigioni_agente()
{ {
// delete _rows; // delete _rows;
unlock();
delete _provv_rel; delete _provv_rel;
delete _provv_cur; delete _provv_cur;
} }
void TProvvigioni_agente::unlock()
{
if (_agente.not_empty())
{
TLocalisamfile age(LF_AGENTI);
TRectype::put(AGE_CODAGE,_agente);
TRectype::read(age, _isequal, _unlock); // Sblocca eventuali caricamenti precedenti
}
}
int TProvvigioni_agente::read(const char* agente, const int anno, const char* codnum, const long ndoc) int TProvvigioni_agente::read(const char* agente, const int anno, const char* codnum, const long ndoc)
{ {
int err = NOERR; int err = NOERR;
unlock();
destroy(); // Cancella eventuali residui destroy(); // Cancella eventuali residui
TLocalisamfile age(LF_AGENTI); TLocalisamfile age(LF_AGENTI);
TRectype::put(AGE_CODAGE,agente); TRectype::put(AGE_CODAGE,agente);
err = TRectype::read(age); // Carica i dati dell'agente err = TRectype::read(age, _isequal, _testandlock); // Carica i dati dell'agente
if (err != NOERR) if (err != NOERR)
return err; return err;
@ -54,6 +67,7 @@ int TProvvigioni_agente::read(const char* agente, const int anno, const char* co
TRectype rec_to(rec_from); TRectype rec_to(rec_from);
_provv_cur->setregion(rec_from, rec_to); // Cursore da leggere contenente le provvigioni _provv_cur->setregion(rec_from, rec_to); // Cursore da leggere contenente le provvigioni
// Sara' bello, un giorno, poter bloccare tutti i record del cursore contemporaneamente...
const long items = _provv_cur->items(); const long items = _provv_cur->items();
TRectype& r = _provv_cur->file().curr(); TRectype& r = _provv_cur->file().curr();
@ -95,15 +109,11 @@ int TProvvigioni_agente::rate2rows(int action)
{ {
// Scorre gli elementi di _rate (TDoc_rate) uno ad uno // Scorre gli elementi di _rate (TDoc_rate) uno ad uno
// per settare le righe provvigionali // per settare le righe provvigionali
// Scrive tramite chiave 1: utilizzando un solo record array (CODAGE+NROW) // Scrive tramite chiave 1: utilizzando un solo record array (CODAGE+ANNO+CODNUM+NDOC+NRIGA)
int err = NOERR; int err = NOERR;
if (_agente.not_empty()) if (_agente.not_empty())
{ {
TRecord_array * rows = new TRecord_array(LF_PROVV,PROV_NROW);
TRectype* k = new TRectype(LF_PROVV);
k->put(PROV_CODAGE, _agente);
rows->set_key(k);
TString_array kl; TString_array kl;
int nrow = 1; // Numero riga per agente e per documento int nrow = 1; // Numero riga per agente e per documento
const int items = documenti(kl); // Prende l'elenco dei documenti const int items = documenti(kl); // Prende l'elenco dei documenti
@ -123,6 +133,13 @@ int TProvvigioni_agente::rate2rows(int action)
TDate datacam(rd.datacam()); TDate datacam(rd.datacam());
real cambio = rd.cambio(); real cambio = rd.cambio();
// Chiave del TRecord_array // Chiave del TRecord_array
TRecord_array * rows = new TRecord_array(LF_PROVV,PROV_NRIGA);
TRectype* k = new TRectype(LF_PROVV);
k->put(PROV_CODAGE, _agente);
k->put(PROV_ANNO, anno);
k->put(PROV_CODNUM, codnum);
k->put(PROV_NDOC, ndoc);
rows->set_key(k);
const int ritems = rd.items(); // Ciclo per rate di questo documento const int ritems = rd.items(); // Ciclo per rate di questo documento
for (int j = 0; j < ritems; j++) for (int j = 0; j < ritems; j++)
{ {
@ -132,7 +149,7 @@ int TProvvigioni_agente::rate2rows(int action)
record->put(PROV_ANNO,anno); record->put(PROV_ANNO,anno);
record->put(PROV_CODNUM,codnum); record->put(PROV_CODNUM,codnum);
record->put(PROV_NDOC,ndoc); record->put(PROV_NDOC,ndoc);
record->put(PROV_NROW,nrow++); //record->put(PROV_NROW,nrow++);
record->put(PROV_NRIGA,j+1); record->put(PROV_NRIGA,j+1);
record->put(PROV_NRATA,rt.rata()); record->put(PROV_NRATA,rt.rata());
record->put(PROV_GENERATA,rt.generata()); record->put(PROV_GENERATA,rt.generata());
@ -155,7 +172,7 @@ int TProvvigioni_agente::rate2rows(int action)
record->put(PROV_PAGMAT,rt.pagmat()); record->put(PROV_PAGMAT,rt.pagmat());
record->put(PROV_PROVVMAT,rt.provvmat()); record->put(PROV_PROVVMAT,rt.provvmat());
rows->add_row(record); rows->add_row(record);
} } // Ciclo per rata
switch (action) switch (action)
{ {
case 0: // write case 0: // write
@ -170,8 +187,10 @@ int TProvvigioni_agente::rate2rows(int action)
default: // remove default: // remove
break; break;
} }
} unlock();
delete rows;
delete rows;
} // Ciclo per documento
} }
return err; return err;
} }
@ -230,9 +249,14 @@ TRate_doc::TRate_doc(const TRectype& rec)
set(rec); // bleah! set(rec); // bleah!
} }
const bool TRate_doc::exist(const int i)
{
return _rows.objptr(i) != NULL;
}
TRata& TRate_doc::row(int i, bool create) TRata& TRate_doc::row(int i, bool create)
{ {
if (create && _rows.objptr(i) == NULL) // Parametro di creazione if (create && !exist(i) ) // Parametro di creazione
_rows.add(new TRata(),i); _rows.add(new TRata(),i);
return (TRata&) _rows[i]; return (TRata&) _rows[i];
} }

View File

@ -1594,6 +1594,9 @@ protected:
virtual bool create ( ); virtual bool create ( );
virtual bool destroy( ); virtual bool destroy( );
public: public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const
{return FALSE;}
void set_files(const bool b = TRUE) {_use_files = b;} void set_files(const bool b = TRUE) {_use_files = b;}
void set_tablefile(const TString& t) {_tablefile = t;} void set_tablefile(const TString& t) {_tablefile = t;}
}; };

View File

@ -72,6 +72,8 @@ class TTabelle_sconti: public TRelation_application {
// static bool handle_cpg(TMask_field &, KEY); // handler delle condizioni di pagamento // static bool handle_cpg(TMask_field &, KEY); // handler delle condizioni di pagamento
public: public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const {return FALSE;}
TTabelle_sconti() {_sca = _scoum = _catven = FALSE;} TTabelle_sconti() {_sca = _scoum = _catven = FALSE;}
virtual ~TTabelle_sconti() {} virtual ~TTabelle_sconti() {}
}; };

View File

@ -52,6 +52,8 @@ class TCondizioni_vendita: public TRelation_application {
virtual bool remove(); // metodo usato per cancellare il record sul file virtual bool remove(); // metodo usato per cancellare il record sul file
public: public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const {return FALSE;}
TCondizioni_vendita() {} TCondizioni_vendita() {}
virtual ~TCondizioni_vendita() {} virtual ~TCondizioni_vendita() {}
}; };

View File

@ -1034,7 +1034,8 @@ class TAnagrafica_magazzino : public TRelation_application {
TMask_anamag *_msk; // maschera principale TMask_anamag *_msk; // maschera principale
TRelation *_rel; // relazione principale di un solo file (anagrafiche di magazzino) TRelation *_rel; // relazione principale di un solo file (anagrafiche di magazzino)
protected:
virtual bool user_create(); virtual bool user_create();
virtual bool user_destroy(); virtual bool user_destroy();
virtual TMask *get_mask(int) { return _msk; } virtual TMask *get_mask(int) { return _msk; }
@ -1048,6 +1049,8 @@ class TAnagrafica_magazzino : public TRelation_application {
virtual int rewrite(const TMask& m); virtual int rewrite(const TMask& m);
public: public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const {return FALSE;}
TAnagrafica_magazzino() {} TAnagrafica_magazzino() {}
virtual ~TAnagrafica_magazzino() {} virtual ~TAnagrafica_magazzino() {}
}; };

View File

@ -98,6 +98,9 @@ protected:
virtual bool destroy(void); virtual bool destroy(void);
virtual bool menu(MENU_TAG m); virtual bool menu(MENU_TAG m);
public: public:
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization() const
{return FALSE;}
TStampa_sconti() {}; TStampa_sconti() {};
virtual ~TStampa_sconti() {} virtual ~TStampa_sconti() {}
}; };

View File

@ -28,8 +28,8 @@
class TStampa_condizioni_vendita: public TPrint_application { class TStampa_condizioni_vendita: public TPrint_application {
TRelation *_rel; // relazione principale TRelation *_rel; // relazione principale
TString16 _condven; // stringa che indica il tipo di archivio TString16 _condven; // stringa che indica il tipo di archivio
bool _codlis_catven; // booleano di abilitazione della categoria di vendita nella chiave dei listini bool _codlis_catven; // booleano di abilitazione della categoria di vendita nella chiave dei listini
bool _codcon_codcf; // booleano di abilitazione del codice cliente/fornitore nella chiave dei contratti bool _codcon_codcf; // booleano di abilitazione del codice cliente/fornitore nella chiave dei contratti
bool _listval; // booleano di abilitazione della stampa dei listini in valuta bool _listval; // booleano di abilitazione della stampa dei listini in valuta
@ -46,6 +46,11 @@ protected:
virtual void preprocess_header(void); virtual void preprocess_header(void);
virtual void preprocess_footer(void); virtual void preprocess_footer(void);
//virtual void process_link(int, const char *); //virtual void process_link(int, const char *);
public:
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization() const
{return FALSE;}
}; };
inline TStampa_condizioni_vendita& app() {return (TStampa_condizioni_vendita&) main_app();} inline TStampa_condizioni_vendita& app() {return (TStampa_condizioni_vendita&) main_app();}

View File

@ -41,6 +41,10 @@ protected:
virtual void set_page(int, int); virtual void set_page(int, int);
virtual void preprocess_header(void); virtual void preprocess_header(void);
virtual void process_link(int, const char *); virtual void process_link(int, const char *);
public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const
{return FALSE;}
}; };

View File

@ -1062,6 +1062,9 @@ protected:
virtual bool create(); virtual bool create();
public: public:
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization() const
{return FALSE;}
TRicalcola_application() { } TRicalcola_application() { }
virtual ~TRicalcola_application() { } virtual ~TRicalcola_application() { }
}; };

View File

@ -4,9 +4,9 @@ Picture = <ve00.bmp>
Module = 0 Module = 0
Flags = "F" Flags = "F"
Item_01 = "Archivi e tabelle di base", [ACQVEN_001] Item_01 = "Archivi e tabelle di base", [ACQVEN_001]
Item_02 = "Documenti", <veprassi.men> Item_02 = "Documenti di vendita", <veprassi.men>
Item_03 = "Effetti", <efprassi.men> Item_03 = "Effetti", <efprassi.men>
Item_04 = "Provvigioni Agenti", <prprassi.men> Item_04 = "Provvigioni agenti", <prprassi.men>
Item_05 = "Ordini", <orprassi.men> Item_05 = "Ordini", <orprassi.men>
Item_06 = "Statistiche di vendita", <svprassi.men> Item_06 = "Statistiche di vendita", <svprassi.men>
Item_07 = "Servizi", [ACQVEN_021] Item_07 = "Servizi", [ACQVEN_021]

View File

@ -994,7 +994,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
err = occ.rewrite(o); err = occ.rewrite(o);
} }
} }
if (_has_provv && tipo().provvigioni() && tipo().stato_provvigioni() >= stato()) if (_has_provv && tipo().provvigioni() && tipo().stato_provvigioni() <= stato())
myself.write_provvigioni(); myself.write_provvigioni();
} }
if (tipo().statistiche() && _has_stat_ven) if (tipo().statistiche() && _has_stat_ven)
@ -1042,6 +1042,18 @@ int TDocumento::remove(TBaseisamfile& f) const
if (_docs_to_agg.items() == 0) if (_docs_to_agg.items() == 0)
_st_agg.update(); _st_agg.update();
} }
if (_has_provv && tipo().provvigioni())
{
TString agente(get(DOC_CODAG));
const int anno = TDocumento::anno();
TString codnum(numerazione());
const long ndoc = numero();
// Legge le provvigioni per questo documento
_provv_agente->read(agente, anno,codnum,ndoc);
// Le rimuove
_provv_agente->remove();
}
return TMultiple_rectype::remove(f); return TMultiple_rectype::remove(f);
} }
@ -1055,7 +1067,10 @@ TProvvigioni_agente& TDocumento::calc_provvigioni(const bool generata)
const long ndoc = numero(); const long ndoc = numero();
TDate datadoc(data()); TDate datadoc(data());
_provv_agente->read(agente, anno,codnum,ndoc); // Legge le provvigioni per questo documento while (_provv_agente->read(agente, anno,codnum,ndoc) == _islocked) // Legge le provvigioni per questo documento
if (!yesno_box("Dati agente %s in uso da un altro utente. Riprovo?", (const char*) agente))
return *_provv_agente;
const real perc = _provv_agente->perc_fatt(); const real perc = _provv_agente->perc_fatt();
const real tot_provv = provvigione(); const real tot_provv = provvigione();
real provv_fat = (tot_provv / 100.0) * perc; // Provvigione sul fatturato (rata 0) real provv_fat = (tot_provv / 100.0) * perc; // Provvigione sul fatturato (rata 0)
@ -1105,9 +1120,9 @@ TProvvigioni_agente& TDocumento::calc_provvigioni(const bool generata)
// data scadenza viene settata uguale alla data documento // data scadenza viene settata uguale alla data documento
// la provvigione rimanente va suddivisa in rate a seconda del codice pagamento // la provvigione rimanente va suddivisa in rate a seconda del codice pagamento
const int nrate = pag1.n_rate(); const int nrate = pag1.n_rate();
for (int i = 0; i < nrate+1; i++) for (int i = 0; i <= nrate; i++)
{ {
TRata& rt = rd.row(i, isnew); TRata& rt = rd.row(i, TRUE); // Se non esiste la rata ne forza la creazione
rt.set_rata(i); rt.set_rata(i);
rt.set_datascad(i == 0 ? datadoc : pag1.data_rata(i-1)); rt.set_datascad(i == 0 ? datadoc : pag1.data_rata(i-1));
rt.set_tipopag(i == 0 ? 1 : pag1.tipo_rata(i-1)); rt.set_tipopag(i == 0 ? 1 : pag1.tipo_rata(i-1));
@ -1117,7 +1132,8 @@ TProvvigioni_agente& TDocumento::calc_provvigioni(const bool generata)
rt.set_generata(); rt.set_generata();
} }
// Rimuove eventuali righe in eccesso // Rimuove eventuali righe in eccesso
for (i = nrate; i < _provv_agente->items(); i++) const int rd_items = rd.items(); // Rate precedenti
for (i = nrate+1; i < rd_items; i++)
rd.remove_rata(i); rd.remove_rata(i);
delete pag2; delete pag2;
return *_provv_agente; return *_provv_agente;

View File

@ -29,7 +29,7 @@ Item_04 = "Scarico e ripristino documenti", "ve5 -0", ""
[PRASSIVE_052] [PRASSIVE_052]
Caption = "Configurazione" Caption = "Configurazione"
Picture = <ve01.bmp> Picture = <ba04.bmp>
Module = 0 Module = 0
Flags = "" Flags = ""
Item_01 = "Personalizzazione documenti", [PRASSIVE_003] Item_01 = "Personalizzazione documenti", [PRASSIVE_003]
@ -62,5 +62,4 @@ Item_05 = "Formule righe documento", "ba3 -1 %FRR", ""
Item_06 = "Formule ricalcolo magazzino", "ba3 -1 %FRM", "" Item_06 = "Formule ricalcolo magazzino", "ba3 -1 %FRM", ""
Item_07 = "Elaborazioni differite", "ba3 -1 %ELD", "" Item_07 = "Elaborazioni differite", "ba3 -1 %ELD", ""
Item_08 = "Stati documento", "ba3 -1 %STD", "" Item_08 = "Stati documento", "ba3 -1 %STD", ""
Item_09 = "Collegamenti immediati", "disabled", ""