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:
parent
4bf81091fd
commit
ce957aef04
20
sv/sv0.cpp
Executable file
20
sv/sv0.cpp
Executable 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
9
sv/sv0.h
Executable 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
23
sv/sv0.url
Executable 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
17
sv/sv0400.cpp
Executable 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
16
sv/sv0400a.h
Executable 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
130
sv/sv0400a.uml
Executable 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
144
sv/svlib01.cpp
Executable 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
45
sv/svlib01.h
Executable 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
|
Loading…
x
Reference in New Issue
Block a user