campo-sirio/sv/svlib01.h
augusto 6a6d689c46 - funzione date2long e period2long per la conversione di date e periodi
- gestione della categoria di vendita
- classe SVRiep_record (campi virtuali e altro)
- classe RWrecord_cache e TStat_cache (cache di lettura/scrittura)


git-svn-id: svn://10.65.10.50/trunk@5234 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-09-19 10:17:17 +00:00

145 lines
4.1 KiB
C++
Executable File

#ifndef __SVLIB01_H
#define __SVLIB01_H
#ifndef __ASSOC_H
#include "assoc.h"
#endif
#ifndef __VELIB_H
#include "..\ve\velib.h"
#endif
#ifndef __TABUTIL_H
#include <tabutil.h>
#endif
#include "..\mg\mglib.h"
enum TFrequenza_statistiche { fs_nulla, fs_giornaliera,
fs_settimanale, fs_quindicinale,
fs_mensile, fs_bimestrale,
fs_trimestrale, fs_quadrimestrale,
fs_semestrale, fs_annuale };
// Converte una carattere in una frequenza delle statisitiche
TFrequenza_statistiche char2frequency(char c);
//Converte una frequenza delle statisitiche in un carattere
char frequency2char(TFrequenza_statistiche f);
//Arrotondamento di una data alla frequenza specificata
const TDate& floor(TDate& data, TFrequenza_statistiche freq);
const TDate& ceil(TDate& data, TFrequenza_statistiche freq);
//Ritorna il rapporto tra le frequenze: 0 se impossibile stabilirlo
int divide(TFrequenza_statistiche f1, TFrequenza_statistiche f2);
//Ritorna l'ultimo periodo di un anno (primo = 1)
int last_period(int anno, TFrequenza_statistiche freq);
//Ritorna la parte "periodo" di una data (l'anno si ottiene da year())
int date2period(const TDate& data, TFrequenza_statistiche freq);
//Converte una data in un long in base alla frequenza passata
long date2long(const TDate d, TFrequenza_statistiche f);
//Converte una coppia anno+periodo in un long in base alla frequenza passata
long period2long(const int anno, const int periodo, TFrequenza_statistiche f);
class TStats_agg : public TObject
{
class TStats_data : public TObject
{
public:
real _quantita, _valore;
};
long _ditta;
TAssoc_array _data;
TFrequenza_statistiche _frequenza;
bool _merce, _prestazioni, _omaggi, _omaggio_is_merce;
bool _art_nocode, _art_noanag, _art_noanag_grp;
bool _agente, _cliente, _zona, _articolo, _giacenza, _magazzino,_catvend;
protected:
void test_firm() const;
void put_key(TRectype& stat, TToken_string& key) const;
TStats_agg::TStats_data& find(const TRiga_documento& rdoc);
bool can_add(const TRiga_documento& rdoc) const;
public:
void init();
void reset();
bool sub(const TRiga_documento& rdoc);
bool add(const TRiga_documento& rdoc);
bool update();
TFrequenza_statistiche frequency() const
{ return _frequenza; }
int date2period(const TDate& datadoc) const
{ return ::date2period(datadoc, _frequenza); }
bool grp_agente() const { test_firm(); return _agente; }
bool grp_cliente() const { test_firm(); return _cliente; }
bool grp_zona() const { test_firm(); return _zona; }
bool grp_articolo() const { test_firm(); return _articolo; }
bool grp_giacenza() const { test_firm(); return _giacenza; }
bool grp_magazzino() const { test_firm(); return _magazzino; }
bool grp_catven() const { test_firm(); return _catvend; }
bool omaggio_is_merce() const { test_firm(); return _omaggio_is_merce; }
TStats_agg();
virtual ~TStats_agg() { }
};
class TSVriep_record : public TVariable_rectype
{
TCodart_livelli _liv_art;
TCodgiac_livelli _liv_giac;
TRecord_cache _anamag,_clifor,_agenti,_magazz,_tipodoc,_catven,_zone,_ums;
public:
const TString& get_part(const char *lev_code) const;
const TString& get_descrpart(const char *lev_code);
virtual const TString & get_str(const char* fieldname) const;
virtual void put_str(const char* fieldname, const char* val);
TSVriep_record();
virtual ~TSVriep_record();
};
class TRWrecord_cache : public TRecord_cache
{
TAssoc_array _flags;
protected:
THash_object * get_some_obj();
virtual const TString & getkey2discard();
public:
virtual void discard(const TString & k);
virtual void put(const TRectype &r);
virtual const TRectype& get(const char* chiave);
void clear();
void flush();
TRWrecord_cache(int num, int key = 1, bool lock=FALSE);
TRWrecord_cache(const char* table, int key = 1, bool lock=FALSE);
virtual ~TRWrecord_cache() ;
};
class TStat_cache : public TRWrecord_cache
{
protected:
virtual const TString & getkey2discard();
public:
TStat_cache (bool lock=FALSE);
virtual ~TStat_cache()
{}
};
#endif