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

View File

@ -26,6 +26,9 @@ protected:
virtual bool user_destroy();
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(); }

View File

@ -50,8 +50,10 @@ class TPrintclifo_app : public TPrintapp
long _codice;
char _tipocf,_tipoaper;
bool _gia_iniziati_fornitori;
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_print(int file, int counter);

View File

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

View File

@ -78,7 +78,7 @@ public:
const char* description(int cod) const;
// @cmember Controlla che la ditta attiva sia una ditta (e non es. dati comuni)
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)
bool is_com() const
{ return !is_firm();}

View File

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

View File

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

View File

@ -26,6 +26,9 @@ class TConf_magazz : public TConfig_application
static bool check_fields(TMask_field& f, KEY k);
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 postprocess_config (TMask& mask, TConfig& config);

View File

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

View File

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

View File

@ -23,6 +23,9 @@ protected:
static bool seqalt_handler(TMask_field& f, KEY k);
static bool codalt_handler(TMask_field& f, KEY k);
public:
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization() const
{return FALSE;}
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;
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;
break;
default:
@ -465,7 +466,11 @@ void TGestione_provv_app::load_provvigioni(TMask* m)
_msk->set(F_MANNO,"");
_msk->set(F_MCODNUM,"");
_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;
bool repeat;
@ -473,6 +478,7 @@ void TGestione_provv_app::load_provvigioni(TMask* m)
fill_sheet_doc(); // Inizializza lo sheet dei documenti
_dirty = FALSE;
int err = NOERR;
do
{
k = _msk->run();
@ -488,10 +494,13 @@ void TGestione_provv_app::load_provvigioni(TMask* m)
}
if (to_write)
if (check_totals()) // Controlla i totali delle provvigioni per tutti i documenti
_prag->write();
err = _prag->write();
else
repeat = TRUE;
} 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)

View File

@ -23,6 +23,10 @@ class TStampa_agenti : public TApplication
protected:
virtual bool create();
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()
@ -34,7 +38,7 @@ bool TStampa_agenti::create()
TRectype darec(LF_AGENTI),arec(LF_AGENTI);
_mask = new TMask("pr1100");
while (_mask->run() == K_ENTER) {
_form = new TForm("pr1100a", "");
_form = new TForm("pr1100a", "");
TSorted_cursor& cur = (TSorted_cursor& )*_form->cursor();
TString sortexp;

View File

@ -47,7 +47,7 @@ public:
const TRata& operator = (const TRata & r) { set(r);return *this;}
TRata(const TRectype& rec);
TRata(const TRata & r) { set(r);}
TRata() { _generata = ' ';}
TRata() { _generata = ' '; _saldata = FALSE; }
virtual ~TRata() {}
};
@ -75,10 +75,13 @@ public:
const real cambio() const { return _cambio;}
const real impnet() const { return _impnetdoc;}
const int items() { return _rows.items();}
const bool exist(const int i);
TRata& row(int i, bool create = FALSE);
TRata& operator[](int i){ return row(i,FALSE); }
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
void sort_rate() {_rows.sort();}
// 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 rewrite() { return rate2rows(1); }
int remove() { return rate2rows(2); }
void unlock();
// Restituisce un elenco di documenti che hanno rate per le provvigioni di questo agente
int documenti(TString_array& kl) { return _rate.get_keys(kl); }
// 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);
_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)
{
//_rows = new TRecord_array(LF_PROVV,PROV_NRIGA);
_provv_rel = new TRelation(LF_PROVV);
_provv_cur = new TCursor(_provv_rel, "", 2);
_provv_cur = new TCursor(_provv_rel);
read(agente);
}
TProvvigioni_agente::~TProvvigioni_agente()
{
// delete _rows;
unlock();
delete _provv_rel;
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 err = NOERR;
unlock();
destroy(); // Cancella eventuali residui
TLocalisamfile age(LF_AGENTI);
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)
return err;
@ -54,6 +67,7 @@ int TProvvigioni_agente::read(const char* agente, const int anno, const char* co
TRectype rec_to(rec_from);
_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();
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
// 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;
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;
int nrow = 1; // Numero riga per agente e per documento
const int items = documenti(kl); // Prende l'elenco dei documenti
@ -123,6 +133,13 @@ int TProvvigioni_agente::rate2rows(int action)
TDate datacam(rd.datacam());
real cambio = rd.cambio();
// 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
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_CODNUM,codnum);
record->put(PROV_NDOC,ndoc);
record->put(PROV_NROW,nrow++);
//record->put(PROV_NROW,nrow++);
record->put(PROV_NRIGA,j+1);
record->put(PROV_NRATA,rt.rata());
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_PROVVMAT,rt.provvmat());
rows->add_row(record);
}
} // Ciclo per rata
switch (action)
{
case 0: // write
@ -170,8 +187,10 @@ int TProvvigioni_agente::rate2rows(int action)
default: // remove
break;
}
}
delete rows;
unlock();
delete rows;
} // Ciclo per documento
}
return err;
}
@ -230,9 +249,14 @@ TRate_doc::TRate_doc(const TRectype& rec)
set(rec); // bleah!
}
const bool TRate_doc::exist(const int i)
{
return _rows.objptr(i) != NULL;
}
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);
return (TRata&) _rows[i];
}

View File

@ -1594,6 +1594,9 @@ protected:
virtual bool create ( );
virtual bool destroy( );
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_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
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;}
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
public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const {return FALSE;}
TCondizioni_vendita() {}
virtual ~TCondizioni_vendita() {}
};

View File

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

View File

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

View File

@ -28,8 +28,8 @@
class TStampa_condizioni_vendita: public TPrint_application {
TRelation *_rel; // relazione principale
TString16 _condven; // stringa che indica il tipo di archivio
TRelation *_rel; // relazione principale
TString16 _condven; // stringa che indica il tipo di archivio
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 _listval; // booleano di abilitazione della stampa dei listini in valuta
@ -46,6 +46,11 @@ protected:
virtual void preprocess_header(void);
virtual void preprocess_footer(void);
//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();}

View File

@ -41,6 +41,10 @@ protected:
virtual void set_page(int, int);
virtual void preprocess_header(void);
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();
public:
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization() const
{return FALSE;}
TRicalcola_application() { }
virtual ~TRicalcola_application() { }
};

View File

@ -4,9 +4,9 @@ Picture = <ve00.bmp>
Module = 0
Flags = "F"
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_04 = "Provvigioni Agenti", <prprassi.men>
Item_04 = "Provvigioni agenti", <prprassi.men>
Item_05 = "Ordini", <orprassi.men>
Item_06 = "Statistiche di vendita", <svprassi.men>
Item_07 = "Servizi", [ACQVEN_021]

View File

@ -994,7 +994,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
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();
}
if (tipo().statistiche() && _has_stat_ven)
@ -1042,6 +1042,18 @@ int TDocumento::remove(TBaseisamfile& f) const
if (_docs_to_agg.items() == 0)
_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);
}
@ -1055,7 +1067,10 @@ TProvvigioni_agente& TDocumento::calc_provvigioni(const bool generata)
const long ndoc = numero();
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 tot_provv = provvigione();
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
// la provvigione rimanente va suddivisa in rate a seconda del codice pagamento
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_datascad(i == 0 ? datadoc : pag1.data_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();
}
// 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);
delete pag2;
return *_provv_agente;

View File

@ -29,7 +29,7 @@ Item_04 = "Scarico e ripristino documenti", "ve5 -0", ""
[PRASSIVE_052]
Caption = "Configurazione"
Picture = <ve01.bmp>
Picture = <ba04.bmp>
Module = 0
Flags = ""
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_07 = "Elaborazioni differite", "ba3 -1 %ELD", ""
Item_08 = "Stati documento", "ba3 -1 %STD", ""
Item_09 = "Collegamenti immediati", "disabled", ""