This commit was generated by cvs2svn to compensate for changes in r5035,

which included commits to RCS files with non-trunk default branches.

git-svn-id: svn://10.65.10.50/trunk@5036 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1997-08-05 09:24:21 +00:00
parent 4bf81091fd
commit ce957aef04
8 changed files with 404 additions and 0 deletions

20
sv/sv0.cpp Executable file
View File

@ -0,0 +1,20 @@
#include <xvt.h>
#include <checks.h>
#include "sv0.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 3:
st0400(argc, argv);
break;
default:
error_box("Invalid argument %s", argv[1]);
break;
}
exit(0);
return 0;
}

9
sv/sv0.h Executable file
View File

@ -0,0 +1,9 @@
#ifndef __ST0_H
#define __ST0_H
int st0100(int argc, char* argv[]);
int st0200(int argc, char* argv[]);
int st0300(int argc, char* argv[]);
int st0400(int argc, char* argv[]);
#endif

23
sv/sv0.url Executable file
View File

@ -0,0 +1,23 @@
#include <default.url>
MENU TASK_MENUBAR
SUBMENU MENU_FILE "~File"
SUBMENU M_FONT "~Opzioni" DISABLED
MENU M_FONT
ITEM M_FONT_SELECT "~Font"
ITEM MENU_ITEM(2) "~Colori"
ITEM MENU_ITEM(3) "~Editor"
MENUBAR MENU_BAR(1)
MENU MENU_BAR(1)
SUBMENU MENU_FILE "~File"
MENUBAR MENU_BAR(2)
MENU MENU_BAR(2)
SUBMENU MENU_FILE "~File"
MENUBAR MENU_BAR(3)
MENU MENU_BAR(3)
SUBMENU MENU_FILE "~File"

17
sv/sv0400.cpp Executable file
View File

@ -0,0 +1,17 @@
#include <confapp.h>
#include "sv0400a.h"
class TParametri_st : public TConfig_application
{
public:
TParametri_st() : TConfig_application(CONFIG_DITTA) { }
virtual ~TParametri_st() { }
};
int st0400(int argc, char* argv[])
{
TParametri_st app;
app.run(argc, argv, "Parametri statistiche");
return 0;
}

16
sv/sv0400a.h Executable file
View File

@ -0,0 +1,16 @@
#ifndef __ST0400A_H
#define __ST0400A_H
#define F_NO_CODICE 101
#define F_NO_MAGAZZINO 102
#define F_NO_RAGGRUPPA 103
#define F_MERCE 111
#define F_PRESTAZIONI 112
#define F_OMAGGI 113
#define F_RAGGRUPPA_OMAGGI 114
#define F_AGENTE 121
#define F_CLIENTE 122
#define F_GIACENZA 123
#define F_MAGAZZINO 124
#endif

130
sv/sv0400a.uml Executable file
View File

@ -0,0 +1,130 @@
#include "sv0400a.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Parametri Ditta Statistiche" -1 -1 76 17
GROUPBOX DLG_NULL 76 5
BEGIN
PROMPT 1 1 "@bGestione articoli con codice inesistente"
END
BOOLEAN F_NO_CODICE
BEGIN
PROMPT 2 2 "Includi articoli senza codice"
FIELD ArtNoCode
END
BOOLEAN F_NO_MAGAZZINO
BEGIN
PROMPT 2 3 "Includi articoli non presenti in anagrafica"
FIELD ArtNoAnag
END
BOOLEAN F_NO_RAGGRUPPA
BEGIN
PROMPT 2 4 "Raggruppa articoli senza codice e non presenti in anagrafica"
FIELD ArtNoAnagGrp
END
GROUPBOX DLG_NULL 76 5
BEGIN
PROMPT 1 6 "@bGestione tipi riga"
END
BOOLEAN F_MERCE
BEGIN
PROMPT 2 7 "Includi righe Merce"
FIELD StatMerce
END
BOOLEAN F_PRESTAZIONI
BEGIN
PROMPT 2 8 "Includi righe Prestazioni"
FIELD StatPrestazioni
END
BOOLEAN F_OMAGGI
BEGIN
PROMPT 2 9 "Includi righe Omaggi"
FIELD StatOmaggi
MESSAGE FALSE CLEAR,F_RAGGRUPPA_OMAGGI
MESSAGE TRUE ENABLE,F_RAGGRUPPA_OMAGGI
END
BOOLEAN F_RAGGRUPPA_OMAGGI
BEGIN
PROMPT 40 9 "Raggruppa Omaggi con Merce"
FIELD OmaggioIsMerce
END
GROUPBOX DLG_NULL 76 7
BEGIN
PROMPT 1 11 "@bRaggruppamento statistiche"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 12 "Tipo documento"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 13 "Anno solare"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 14 "Data documento"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 15 "Articolo"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 16 "Unita' di misura"
END
BOOLEAN F_AGENTE
BEGIN
PROMPT 40 12 "Agente"
FIELD AgentGrp
END
BOOLEAN F_CLIENTE
BEGIN
PROMPT 40 13 "Cliente"
FIELD ClientGrp
END
BOOLEAN F_GIACENZA
BEGIN
PROMPT 40 14 "Giacenza"
FIELD GiacGrp
END
BOOLEAN F_MAGAZZINO
BEGIN
PROMPT 40 15 "Magazzino"
FIELD MagazGrp
END
ENDPAGE
ENDMASK

144
sv/svlib01.cpp Executable file
View File

@ -0,0 +1,144 @@
#include "svlib01.h"
#include "doc.h"
#include "rdoc.h"
///////////////////////////////////////////////////////////
// TStats_data
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
// TStats_agg
///////////////////////////////////////////////////////////
int TStats_agg::date2class(const TDate& datadoc) const
{
int classe;
if (_frequenza > fs_settimanale)
{
classe = datadoc.month();
if (_frequenza == fs_bimestrale)
classe = (classe-1) / 2 + 1;
else if (_frequenza == fs_trimestrale)
classe = (classe-1) / 3 + 1;
else if (_frequenza == fs_quindicinale)
{
classe = (classe-1) * 2 + 1;
if (datadoc.day() > 15) classe++;
}
}
else
{
const TDate primo(1, 1, datadoc.year());
classe = int(datadoc - primo);
if (_frequenza == fs_settimanale)
classe /= 7;
classe++;
}
return classe;
}
TStats_agg::TStats_data& TStats_agg::find(const TRiga_documento& rdoc)
{
const TDocumento& doc = rdoc.doc();
const TDate datadoc = doc.get(DOC_DATADOC);
TToken_string key(24);
key = doc.get(DOC_TIPODOC);
key.add(datadoc.year());
key.add(date2class(datadoc));
key.add(rdoc.get(RDOC_UMQTA));
char tipo = rdoc.tipo().tipo();
if (tipo == 'O' && _omaggio_is_merce)
tipo = 'M';
key.add(tipo);
TString80 codart = rdoc.get(RDOC_CODARTMAG);
if (codart.empty()) codart = rdoc.get(RDOC_CODART);
key.add(codart);
if (_agente)
key.add(doc.get(DOC_CODAG));
if (_cliente)
key.add(doc.get(DOC_CODCF));
if (_giacenza)
key.add(doc.get(DOC_CODCF));
if (_magazzino)
key.add(doc.get(RDOC_CODMAG));
TStats_data* ptr = (TStats_data*)_data.objptr(key);
if (ptr == NULL)
{
ptr = new TStats_data;
_data.add(key, ptr);
}
return *ptr;
}
bool TStats_agg::can_add(const TRiga_documento& rdoc) const
{
bool ok;
const char tipo = rdoc.tipo().tipo();
switch(tipo)
{
case 'M': ok = _merce; break;
case 'O': ok = _omaggi; break;
case 'P': ok = _prestazioni; break;
default : ok = FALSE; break;
}
return ok;
}
bool TStats_agg::sub(const TRiga_documento& rdoc)
{
bool ok = can_add(rdoc);
if (ok)
{
TStats_data& data = find(rdoc);
data._quantita -= rdoc.quantita();
data._valore -= rdoc.imponibile();
}
return ok;
}
bool TStats_agg::add(const TRiga_documento& rdoc)
{
bool ok = can_add(rdoc);
if (ok)
{
TStats_data& data = find(rdoc);
data._quantita += rdoc.quantita();
data._valore += rdoc.imponibile();
}
return ok;
}
bool TStats_agg::update()
{
return TRUE;
}
TStats_agg::TStats_agg()
{
TConfig ini(CONFIG_DITTA, "sv");
switch(ini.get_char("DataFreq"))
{
case 'B': _frequenza = fs_bimestrale; break;
case 'M': _frequenza = fs_mensile; break;
case 'Q': _frequenza = fs_quindicinale; break;
case 'S': _frequenza = fs_settimanale; break;
case 'T': _frequenza = fs_trimestrale; break;
default : _frequenza = fs_giornaliera; break;
}
_merce = ini.get_bool("StatMerce");
_prestazioni = ini.get_bool("StatPrestazioni");
_omaggi = ini.get_bool("StatOmaggi");
_omaggio_is_merce = ini.get_bool("OmaggioIsMerce");
}

45
sv/svlib01.h Executable file
View File

@ -0,0 +1,45 @@
#ifndef __SVLIB01_H
#define __SVLIB01_H
#ifndef __ASSOC_H
#include "assoc.h"
#endif
#ifndef __VELIB_H
#include "..\ve\velib.h"
#endif
class TStats_agg : public TObject
{
enum TFrequenza_statistiche { fs_giornaliera, fs_settimanale, fs_quindicinale,
fs_mensile, fs_bimestrale, fs_trimestrale };
class TStats_data : public TObject
{
public:
real _quantita, _valore;
};
TAssoc_array _data;
TFrequenza_statistiche _frequenza;
bool _merce, _prestazioni, _omaggi, _omaggio_is_merce;
bool _agente, _cliente, _articolo, _giacenza, _magazzino;
protected:
// Converte una data nella classe temporale definita dalla frequenza delle statisitiche
int date2class(const TDate& datadoc) const;
TStats_agg::TStats_data& find(const TRiga_documento& rdoc);
bool can_add(const TRiga_documento& rdoc) const;
public:
bool sub(const TRiga_documento& rdoc);
bool add(const TRiga_documento& rdoc);
bool update();
TStats_agg();
virtual ~TStats_agg() { }
};
#endif