Nuove derivazioni degli oggetti per la gestione del codice a livelli
Nuovo encode dei segni delle casuali Coretto Tline_movmag per le Causali sulle righe git-svn-id: svn://10.65.10.50/trunk@4825 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6a17722244
commit
b763a9678d
395
mg/mglib.h
395
mg/mglib.h
@ -7,140 +7,60 @@
|
|||||||
#ifndef __RELATION_H
|
#ifndef __RELATION_H
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __RECARRAY_H
|
#ifndef __RECARRAY_H
|
||||||
#include <recarray.h>
|
#include <recarray.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __VARREC_H
|
#ifndef __VARREC_H
|
||||||
#include <varrec.h>
|
#include <varrec.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __MSKSHEET_H
|
#ifndef __MSKSHEET_H
|
||||||
#include <msksheet.h>
|
#include <msksheet.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __FORM_H
|
#ifndef __FORM_H
|
||||||
#include "form.h"
|
#include "form.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __ANAMAG_H
|
#ifndef __ANAMAG_H
|
||||||
#include "anamag.h"
|
#include "anamag.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __UMART_H
|
#ifndef __UMART_H
|
||||||
#include "umart.h"
|
#include "umart.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __CODCORR_H
|
#ifndef __CODCORR_H
|
||||||
#include "codcorr.h"
|
#include "codcorr.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __DESLIN_H
|
#ifndef __DESLIN_H
|
||||||
#include "deslin.h"
|
#include "deslin.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __MAG_H
|
#ifndef __MAG_H
|
||||||
#include "mag.h"
|
#include "mag.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __STOMAG_H
|
#ifndef __STOMAG_H
|
||||||
#include "stomag.h"
|
#include "stomag.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __RMOVMAG_H
|
||||||
|
#include "rmovmag.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __MULTIREC_H
|
||||||
#include <multirec.h>
|
#include <multirec.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "..\cg\cglib.h"
|
#ifndef __CGLIB01_H
|
||||||
|
#include "..\cg\cglib01.h"
|
||||||
/*class TMultiple_rectype ;
|
#endif
|
||||||
//**************************************
|
|
||||||
// classe per il controllo dei record composti da una testata e N file di righe
|
|
||||||
// è implementato come un TRectype che contiene anche un TRecord_array
|
|
||||||
//
|
|
||||||
class TMultiple_rectype : public TAuto_variable_rectype
|
|
||||||
{
|
|
||||||
enum { maxfiles = 20};
|
|
||||||
// @ cmember Array di TRecord array per le righe
|
|
||||||
TArray _files; //
|
|
||||||
// @ cmember flag indicatore di record nuovo
|
|
||||||
bool _nuovo;
|
|
||||||
// @ cmember numero di file righe
|
|
||||||
short _nfiles;
|
|
||||||
// @ cmember file delle righe
|
|
||||||
int _logicnums[maxfiles];
|
|
||||||
// @ cmember Array di nomi di campo "numeratore" delle righe
|
|
||||||
TString_array _numfields;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
const TArray & files() const { return _files;}
|
|
||||||
// @ cmember funzione per costruire la chiave delle righe
|
|
||||||
virtual void set_body_key(TRectype & rowrec) pure;
|
|
||||||
// @ cmember renumber la chiave del corpo
|
|
||||||
virtual long renum(long numdoc = -1) { return -1; }
|
|
||||||
virtual TRectype & get_body_record(int logicnum = 0) { return *(new TRectype(logicnum ? logicnum : _logicnums[0])); }
|
|
||||||
virtual void load_rows_file(int logicnum);
|
|
||||||
// @cmember Ritorna l'indice di <p _files> del numero logico passato
|
|
||||||
int log2ind(int logicnum) const;
|
|
||||||
virtual int find(int logicnum, const char * fieldname, const char * s, int from = 0, bool reverse = FALSE) const ;
|
|
||||||
virtual int write_rewrite(TBaseisamfile& f, bool re = FALSE) const;
|
|
||||||
void remove_body(int logicnum);
|
|
||||||
|
|
||||||
public:
|
|
||||||
//***********************
|
|
||||||
// struttura
|
|
||||||
// @ cmember restituisce il record di testata
|
|
||||||
const TAuto_variable_rectype& head() const { return *this; } // Ritorna la testata del documento
|
|
||||||
// @ cmember restituisce il record di testata
|
|
||||||
TAuto_variable_rectype& head() { return *this; } // Ritorna la testata del documento
|
|
||||||
|
|
||||||
|
|
||||||
// @ cmember restituisce il record array del corpo
|
|
||||||
TRecord_array & body(int logicnum = 0) const;
|
|
||||||
// @ cmember restituisce il numero di record nel corpo
|
|
||||||
int rows(int logicnum = 0) const { return body(logicnum).rows(); }
|
|
||||||
|
|
||||||
// @ cmember restituisce il record n-esimo del del corpo
|
|
||||||
virtual const TRecord_array & operator[](int logicnum) const { return (const TRecord_array &)((TMultiple_rectype *)this)->body(logicnum); }
|
|
||||||
// @ cmember restituisce il record n-esimo del del corpo
|
|
||||||
virtual TRecord_array & operator[](int logicnum) { return (TRecord_array &)body(logicnum); }
|
|
||||||
|
|
||||||
bool destroy_row(int n, bool pack = FALSE, int logicnum = 0) { return body(logicnum).destroy_row(n, pack); }
|
|
||||||
void destroy_rows(int logicnum = 0) { body(logicnum).destroy_rows(); }
|
|
||||||
|
|
||||||
//***********************
|
|
||||||
// record e I/O
|
|
||||||
virtual void dirty_fields() {}
|
|
||||||
virtual void set_fields(TAuto_variable_rectype & rec) {}
|
|
||||||
virtual void reset_fields(TAuto_variable_rectype & rec) { rec.remove_field(); }
|
|
||||||
|
|
||||||
virtual void renum_key(const char * kfield,const char * val);
|
|
||||||
virtual TRectype & operator =(const TRectype & r);
|
|
||||||
virtual TRectype & operator =(const char * r);
|
|
||||||
virtual void zero(char c = '\0');
|
|
||||||
|
|
||||||
virtual int read(TRectype & rec, word op = _isequal, word lockop = _nolock);
|
|
||||||
virtual int read(word op = _isequal, word lockop = _nolock) { return read(*this, op, lockop); }
|
|
||||||
int read(TBaseisamfile & f, word op = _isequal, word lockop = _nolock) { return read(f.curr(), op, lockop); }
|
|
||||||
|
|
||||||
virtual int write(TBaseisamfile& f) const
|
|
||||||
{ return write_rewrite(f);}
|
|
||||||
virtual int rewrite(TBaseisamfile& f) const
|
|
||||||
{ return write_rewrite(f,TRUE);}
|
|
||||||
virtual int remove(TBaseisamfile& f) const;
|
|
||||||
|
|
||||||
int write() const { TBaseisamfile f(num()); return write(f);}
|
|
||||||
int rewrite() const { TBaseisamfile f(num()); return rewrite(f);}
|
|
||||||
int remove() const { TBaseisamfile f(num()); return remove(f);}
|
|
||||||
|
|
||||||
|
|
||||||
void add_file(int logicnum, const char * numfield);
|
|
||||||
//**************************
|
|
||||||
// @ cmember costruttore dal numero del file
|
|
||||||
TMultiple_rectype(int hfn);
|
|
||||||
// @ cmember costruttore dal file
|
|
||||||
TMultiple_rectype(const TBaseisamfile* file);
|
|
||||||
// @ cmember costruttore dal record
|
|
||||||
TMultiple_rectype(const TRectype & rec);
|
|
||||||
// @ cmember costruttore di copia
|
|
||||||
TMultiple_rectype(const TMultiple_rectype& r);
|
|
||||||
virtual ~TMultiple_rectype() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
riga_nongenerata=' ',
|
riga_nongenerata=' ',
|
||||||
riga_automatica='A',
|
riga_automatica='A',
|
||||||
@ -210,7 +130,7 @@ public:
|
|||||||
virtual void zero(char c = '\0');
|
virtual void zero(char c = '\0');
|
||||||
|
|
||||||
int find_mag(const char * annoes, const char * codmag = NULL, const char * livello = NULL, int from = 0) const ;
|
int find_mag(const char * annoes, const char * codmag = NULL, const char * livello = NULL, int from = 0) const ;
|
||||||
int find_storico(const char * annoesrif, const char * annoes = NULL, int from = 0) const;
|
int find_storico(const char * annoesrif, const char * annoes = NULL, const char * codmag = NULL, int from = 0) const;
|
||||||
TRecord_array & mag(const char * annoes) const;
|
TRecord_array & mag(const char * annoes) const;
|
||||||
TRecord_array & storico(const char * annoesrif) const;
|
TRecord_array & storico(const char * annoesrif) const;
|
||||||
|
|
||||||
@ -237,137 +157,19 @@ public:
|
|||||||
virtual ~TArticolo_giacenza() {}
|
virtual ~TArticolo_giacenza() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class THead_lines_record ;
|
|
||||||
//**************************************
|
|
||||||
// classe per il controllo dei record composti da una testata e N righe
|
|
||||||
// è implementato come un TRectype che contiene anche un TRecord_array
|
|
||||||
//
|
|
||||||
class THead_lines_record : public TAuto_variable_rectype {
|
|
||||||
|
|
||||||
// @ cmember Array di TRectype per le righe
|
|
||||||
TRecord_array * _rows; //
|
|
||||||
// @ cmember flag indicatore di record nuovo
|
|
||||||
bool _nuovo;
|
|
||||||
// @ cmember file principale
|
|
||||||
int _file;
|
|
||||||
// @ cmember file delle righe
|
|
||||||
int _rfile;
|
|
||||||
// @ cmember nome del campo "numeratore" delle righe
|
|
||||||
TString _numfield;
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
|
||||||
// @ cmember restituisce la riga del corpo
|
|
||||||
virtual TRectype & row(int index) const;
|
|
||||||
virtual void put_str(const char* fieldname, const char* val);
|
|
||||||
// @ cmember funzione per estrarre dal record della testata la chiave delle righe
|
|
||||||
virtual void copy_linekey(const TRectype & headrecord, TRectype & linesrecord)=0;
|
|
||||||
// @ cmember renumer la chiave del corpo
|
|
||||||
virtual long renum(long numdoc=-1)=0;
|
|
||||||
|
|
||||||
int write_rewrite(TBaseisamfile& f ,bool re = FALSE) const ;
|
|
||||||
public:
|
|
||||||
//***********************
|
|
||||||
// struttura
|
|
||||||
// @ cmember restituisce il record di testata
|
|
||||||
const TAuto_variable_rectype& head() const { return *this; } // Ritorna la testata del documento
|
|
||||||
// @ cmember restituisce il record di testata
|
|
||||||
TAuto_variable_rectype& head() { return *this; } // Ritorna la testata del documento
|
|
||||||
|
|
||||||
// @ cmember restituisce il numero di record nel corpo
|
|
||||||
int rows() const { return _rows->rows(); }
|
|
||||||
// @ cmember restituisce il record array del corpo
|
|
||||||
TRecord_array * rows_record() { return _rows; }
|
|
||||||
|
|
||||||
// @ cmember restituisce il record n-esimo del del corpo
|
|
||||||
virtual const TRectype& operator[](int index) const
|
|
||||||
{ return (const TRectype&)((THead_lines_record *)this)->row(index); }
|
|
||||||
// @ cmember restituisce il record n-esimo del del corpo
|
|
||||||
virtual TRectype& operator[](int index)
|
|
||||||
{ return (TRectype&)row(index); }
|
|
||||||
|
|
||||||
TRectype & insert_row(int row, const char *tipo = NULL);
|
|
||||||
TRectype & new_row(const char *tipo = NULL);
|
|
||||||
bool destroy_row(int n, bool pack = FALSE) { return _rows->destroy_row(n, pack); }
|
|
||||||
void destroy_rows() { _rows->destroy_rows(); }
|
|
||||||
|
|
||||||
//***********************
|
|
||||||
// record e I/O
|
|
||||||
virtual void dirty_fields();
|
|
||||||
|
|
||||||
virtual const char *get_next_key() =0 ;
|
|
||||||
virtual void renum_key(const char * kfield,const char * val);
|
|
||||||
virtual TRectype & operator =(const TRectype & r);
|
|
||||||
virtual TRectype & operator =(const char * r);
|
|
||||||
virtual void zero(const char * fieldname);
|
|
||||||
virtual void zero(char c = '\0');
|
|
||||||
|
|
||||||
void reset_fields(TAuto_variable_rectype & rec) { rec.remove_field(); }
|
|
||||||
virtual void set_fields(TAuto_variable_rectype & rec);
|
|
||||||
|
|
||||||
virtual int readat(TBaseisamfile& f, TRecnotype nrec, word lockop= _nolock);
|
|
||||||
virtual int read(TBaseisamfile& f, word op = _isequal, word lockop = _nolock);
|
|
||||||
|
|
||||||
virtual int write(TBaseisamfile& f) const ;
|
|
||||||
virtual int rewrite(TBaseisamfile& f) const ;
|
|
||||||
virtual int remove(TBaseisamfile& f) const ;
|
|
||||||
|
|
||||||
//**************************
|
|
||||||
// @ cmember costruttore dal numero del file
|
|
||||||
THead_lines_record(int hfn, int rfn,const char *numfield);
|
|
||||||
// @ cmember costruttore dal file
|
|
||||||
THead_lines_record(const TBaseisamfile* head_file,int rfn,const char *numfield);
|
|
||||||
// @ cmember costruttore dal record
|
|
||||||
THead_lines_record(const TRectype & r,int rfn,const char *numfield);
|
|
||||||
// @ cmember costruttore di copia
|
|
||||||
THead_lines_record(const THead_lines_record& r);
|
|
||||||
virtual ~THead_lines_record();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// **************************************
|
|
||||||
// **************************************
|
|
||||||
// **************************************
|
|
||||||
// fine classi da portare in libreria:
|
|
||||||
|
|
||||||
// *******************************
|
// *******************************
|
||||||
// LIBRERIA DI utility del magazzino
|
// LIBRERIA DI utility del magazzino
|
||||||
// *******************************
|
// *******************************
|
||||||
//#include "..\ve\velib03.h"
|
//#define MANY_MAG_LEV 10
|
||||||
|
//#define MAX_GIAC_LEVEL 4
|
||||||
|
|
||||||
#define MANY_MAG_LEV 10
|
#define MANY_MAG_LEV 10
|
||||||
#define MAX_GIAC_LEVEL 4
|
#define MAX_GIAC_LEVEL 4
|
||||||
class TMag_livelli {
|
|
||||||
bool _enabled[MANY_MAG_LEV];
|
|
||||||
int _code_lenght[MANY_MAG_LEV];
|
|
||||||
TString _name[MANY_MAG_LEV];
|
|
||||||
TString _picture[MANY_MAG_LEV];
|
|
||||||
int _last_level;
|
|
||||||
|
|
||||||
public:
|
|
||||||
int last_level() const {return _last_level;}; // Ritorna il numero di livelli abilitati
|
|
||||||
const bool enabled(int levnum=1); // Ritorna se il livello è abilitato
|
|
||||||
const TString & name(int levnum); // Ritorna il nome (descrizione) di quel livello
|
|
||||||
const TString & picture(int levnum);// Ritorna la stringa di picture per i codici gruppo di quel livello
|
|
||||||
const int code_lenght(int levnum); // Ritorna la lunghezza dei codici gruppo di quel livello
|
|
||||||
const int packed_lenght(int levnum); // Ritorna la lunghezza del codice compatto fino a quel livello
|
|
||||||
|
|
||||||
void pack_grpcode(TString & pc, const TString &codlev, const int levnum); // Inserisce il codice del gruppo del livello levnum in pc
|
|
||||||
TString unpack_grpcode(const TString & pc, const int levnum); // Estrae il codice del gruppo del livello levnum da pc
|
|
||||||
TString build_tabcode(const TString & pc, const int levnum);
|
|
||||||
|
|
||||||
TMag_livelli(const char *tabname); // costruttore
|
|
||||||
~TMag_livelli() {}; // distruttore
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// *******************************
|
|
||||||
// *******************************
|
|
||||||
// riconoscimento di metacaratteri
|
|
||||||
class TR_automa;
|
class TR_automa;
|
||||||
class TMetachar {
|
|
||||||
|
class TMetachar : public TObject
|
||||||
|
{
|
||||||
TR_automa * _au;
|
TR_automa * _au;
|
||||||
TString _language;
|
TString _language;
|
||||||
char _metach_mand[10];
|
char _metach_mand[10];
|
||||||
@ -387,12 +189,78 @@ public:
|
|||||||
const char *opz_chars() {return _metach_opz;};
|
const char *opz_chars() {return _metach_opz;};
|
||||||
TMetachar(const char * str);
|
TMetachar(const char * str);
|
||||||
TMetachar();
|
TMetachar();
|
||||||
~TMetachar();
|
virtual ~TMetachar();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TCodice_livelli : public TObject
|
||||||
|
{
|
||||||
|
bool _enabled[MANY_MAG_LEV];
|
||||||
|
int _code_lenght[MANY_MAG_LEV];
|
||||||
|
TString _name[MANY_MAG_LEV];
|
||||||
|
TString _picture[MANY_MAG_LEV];
|
||||||
|
int _last_level;
|
||||||
|
TDecoder *_gruppi;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void add_metachar(int lev);
|
||||||
|
TArray _metachars;
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Ritorna il numero di livelli abilitati
|
||||||
|
int last_level() const {return _last_level;};
|
||||||
|
// Ritorna se il livello è abilitato
|
||||||
|
const bool enabled(int levnum=1) const ;
|
||||||
|
// Ritorna il nome (descrizione) di quel livello
|
||||||
|
const TString & name(int levnum) const ;
|
||||||
|
// Ritorna la stringa di picture per i codici gruppo di quel livello
|
||||||
|
const TString & picture(int levnum) const;
|
||||||
|
// Ritorna la lunghezza dei codici gruppo di quel livello
|
||||||
|
const int code_lenght(int levnum) const ;
|
||||||
|
// Ritorna la lunghezza del codice compatto fino a quel livello
|
||||||
|
const int packed_lenght(int levnum) const ;
|
||||||
|
// Restituisce la descrizione del gruppo
|
||||||
|
const TString & group_descr(const char * grpcode, int levnum) const;
|
||||||
|
|
||||||
|
void pack_grpcode(TString & pc, const TString &codlev, const int levnum); // Inserisce il codice del gruppo del livello levnum in pc
|
||||||
|
TString unpack_grpcode(const TString & pc, const int levnum) const ; // Estrae il codice del gruppo del livello levnum da pc
|
||||||
|
TString build_tabcode(const TString & pc, const int levnum) const ;
|
||||||
|
|
||||||
|
|
||||||
|
// Restituisce il formato previsto per il codice (default==ultimo livello)
|
||||||
|
const char * code_format(int levnum=-1) const ;
|
||||||
|
// Restituisce se <p codepart> e' riconosciuto come codice articolo (default==ultimo livello)
|
||||||
|
bool fit_to_format(const char *codepart, int levnum=-1) const ;
|
||||||
|
|
||||||
|
/* bool has_mandchars(const char * pattern);
|
||||||
|
bool has_opzchars(const char * pattern);
|
||||||
|
const char * opz_chars();
|
||||||
|
const char * mand_chars();*/
|
||||||
|
|
||||||
|
TCodice_livelli(const char *tabcod,const char *tabgrp); // costruttore
|
||||||
|
virtual ~TCodice_livelli() {}; // distruttore
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class TCodart_livelli : public TCodice_livelli
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TCodart_livelli(); // costruttore
|
||||||
|
virtual ~TCodart_livelli() ; // distruttore
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class TCodgiac_livelli : public TCodice_livelli
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TCodgiac_livelli(); // costruttore
|
||||||
|
virtual ~TCodgiac_livelli() {}; // distruttore
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// *********************
|
// *********************
|
||||||
// classe che incapsula le causali di magazzino (record della tabella CAU)
|
// classe che incapsula le causali di magazzino (record della tabella CAU)
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
s_giac,
|
s_giac,
|
||||||
s_acq,s_ent,
|
s_acq,s_ent,
|
||||||
s_ven,s_usc,
|
s_ven,s_usc,
|
||||||
@ -404,42 +272,32 @@ typedef enum {
|
|||||||
s_label
|
s_label
|
||||||
} TTipo_saldomag;
|
} TTipo_saldomag;
|
||||||
|
|
||||||
class TCausale_magazzino : public TRectype {
|
class TCausale_magazzino : public TRectype
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
const char * get_codice() {return get("CODTAB");}
|
const TString & codice() const {return get("CODTAB");}
|
||||||
const char * get_descr() {return get("S0");}
|
const TString & descr() const {return get("S0");}
|
||||||
const char get_tipoprz() {return get_char("S6");}
|
char tipoprz() const {return get_char("S6");}
|
||||||
const char get_tipomov() {return get_char("S7");}
|
char tipomov() const {return get_char("S7");}
|
||||||
const char * get_raggfisc() {return get("S8");}
|
const TString & raggfisc() {return get("S8");}
|
||||||
const char * get_collegata() {return get("S9");}
|
const TString & caus_collegata() {return get("S9");}
|
||||||
int sgn(TTipo_saldomag fieldname) ;
|
int sgn(TTipo_saldomag fieldname) ;
|
||||||
|
bool update_qta() {return get_bool("B0");}
|
||||||
|
bool update_val() {return get_bool("B1");}
|
||||||
|
bool update_ultcos() {return TRUE; /*get_bool("B2");*/}
|
||||||
|
bool is_fiscale();
|
||||||
TCausale_magazzino(const char * codice);
|
TCausale_magazzino(const char * codice);
|
||||||
~TCausale_magazzino();
|
virtual ~TCausale_magazzino() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class TLine_movmag ; // convenience...
|
class TLine_movmag ; // convenience...
|
||||||
|
|
||||||
// dati della linea di movimento di magazzino
|
|
||||||
class TLine_movmag : public TObject {
|
|
||||||
public:
|
|
||||||
TString16 um;
|
|
||||||
real quant;
|
|
||||||
real prezzo;
|
|
||||||
int operator==(TLine_movmag &);
|
|
||||||
|
|
||||||
virtual TObject* dup() const {return new TLine_movmag(*this);};
|
|
||||||
|
|
||||||
TLine_movmag() {};
|
|
||||||
TLine_movmag(const TLine_movmag &);
|
|
||||||
virtual ~TLine_movmag() {};
|
|
||||||
};
|
|
||||||
|
|
||||||
// classe per la definizione dei movimenti di magazzino
|
// classe per la definizione dei movimenti di magazzino
|
||||||
// ( un movimento (testata+righe) == un oggetto TMov_mag )
|
// ( un movimento (testata+righe) == un oggetto TMov_mag )
|
||||||
class TMov_mag : public TMultiple_rectype {
|
class TMov_mag : public TMultiple_rectype
|
||||||
|
{
|
||||||
|
|
||||||
//
|
//
|
||||||
TString16 _codcaus;
|
|
||||||
TString16 _annoes;
|
TString16 _annoes;
|
||||||
//
|
//
|
||||||
TString16 _nextcod;
|
TString16 _nextcod;
|
||||||
@ -448,6 +306,7 @@ class TMov_mag : public TMultiple_rectype {
|
|||||||
TAssoc_array lines_to_add;
|
TAssoc_array lines_to_add;
|
||||||
TAssoc_array lines_to_subtract;
|
TAssoc_array lines_to_subtract;
|
||||||
|
|
||||||
|
static TRecord_cache cache_causali;
|
||||||
protected:
|
protected:
|
||||||
virtual void set_body_key(TRectype & rowrec);
|
virtual void set_body_key(TRectype & rowrec);
|
||||||
virtual bool renum(); // rinumerazione ;
|
virtual bool renum(); // rinumerazione ;
|
||||||
@ -456,31 +315,40 @@ protected:
|
|||||||
// @member: compone le parti chiave + dati a partire dalla riga dello sheet
|
// @member: compone le parti chiave + dati a partire dalla riga dello sheet
|
||||||
void line2key_data(int numriga, TToken_string &key,TLine_movmag &rest) const;
|
void line2key_data(int numriga, TToken_string &key,TLine_movmag &rest) const;
|
||||||
// @member: compone la chiave a partire dalla riga dello sheet
|
// @member: compone la chiave a partire dalla riga dello sheet
|
||||||
TToken_string line2key(int numriga) const;
|
TToken_string & line2key(int numriga) const;
|
||||||
// @member: compone la dati a partire dalla riga dello sheet
|
// @member: compone la dati a partire dalla riga dello sheet
|
||||||
TLine_movmag line2data(int numriga) const;
|
TLine_movmag & line2data(int numriga) const;
|
||||||
// @member: estrae dalla Tokenstring della chiave i valori corrispondenti ai campi del file
|
// @member: estrae dalla Tokenstring della chiave i valori corrispondenti ai campi del file
|
||||||
static TString key2field(TToken_string &key,const char * f);
|
static TString key2field(TToken_string &key,const char * f);
|
||||||
// @member: memorizza la linea come "da togliere"
|
// @member: memorizza la linea come "da togliere"
|
||||||
int delete_line(TToken_string &key,TLine_movmag &rest);
|
int line_deleted(TToken_string &key,TLine_movmag &rest);
|
||||||
// @member: memorizza la linea come "da aggiungere"
|
// @member: memorizza la linea come "da aggiungere"
|
||||||
int insert_line(TToken_string &key,TLine_movmag &rest);
|
int line_inserted(TToken_string &key,TLine_movmag &rest);
|
||||||
// @member: effettua l'aggiornamento dei saldi relativi alle giacenze interessate al movimento
|
// @member: effettua l'aggiornamento dei saldi relativi alle giacenze interessate al movimento
|
||||||
int update_balances() ;
|
int update_balances() ;
|
||||||
// @member: effettua l'aggiornamento dei saldi di una giacenza
|
// @member: effettua l'aggiornamento dei saldi di una giacenza
|
||||||
int update_balances(TRectype & magrec, const TLine_movmag &l,TString16 codcaus,int sign) ;
|
int update_balances(TRectype & magrec, const TLine_movmag &l,int sign) ;
|
||||||
// @member: effettua l'aggiornamento di un saldo di una giacenza
|
// @member: effettua l'aggiornamento di un saldo di una giacenza
|
||||||
void update_balance(TRectype & magrec, const char * fieldname, real diff) const;
|
void update_balance(TRectype & magrec, const char * fieldname, real diff) const;
|
||||||
|
|
||||||
static void giac_putkey(TLocalisamfile & mag,TString16 annoes,TToken_string curr_key);
|
static void giac_putkey(TLocalisamfile & mag,TString16 annoes,TToken_string curr_key);
|
||||||
static bool lock_anamag(const char *codart);
|
static bool lock_anamag(const char *codart);
|
||||||
static bool unlock_anamag(const char *codart) ;
|
static bool unlock_anamag(const char *codart) ;
|
||||||
|
virtual const char * codmag_rauto(int r) const { return NULL;}
|
||||||
|
virtual const char * prezzo_rauto(int r) const { return NULL;}
|
||||||
|
|
||||||
|
// @member: restituisce il codice del magazzino della riga automatica accoppiata a <par r>
|
||||||
|
virtual const char * codmag_rauto(int r)
|
||||||
|
{return NULL;}
|
||||||
|
// @member: restituisce il prezzo della riga automatica accoppiata a <par r>
|
||||||
|
virtual const char * prezzo_rauto(int r)
|
||||||
|
{return NULL;}
|
||||||
public:
|
public:
|
||||||
// IO ad alto livello
|
// IO ad alto livello
|
||||||
const char *get_next_key() ;
|
const char *get_next_key() ;
|
||||||
virtual int read(TBaseisamfile& f, word op = _isequal, word lockop = _nolock);
|
virtual int read(TBaseisamfile& f, word op = _isequal, word lockop = _nolock);
|
||||||
virtual int remove(TBaseisamfile& f) const ;
|
virtual int remove(TBaseisamfile& f) const ;
|
||||||
|
void add_automatiche();
|
||||||
virtual int write(TBaseisamfile& f) const ;
|
virtual int write(TBaseisamfile& f) const ;
|
||||||
virtual int rewrite(TBaseisamfile& f) const ;
|
virtual int rewrite(TBaseisamfile& f) const ;
|
||||||
int force_update_bal();
|
int force_update_bal();
|
||||||
@ -504,11 +372,15 @@ class TForm_stampemg : public TForm
|
|||||||
bool _permag;
|
bool _permag;
|
||||||
int _fromlivgiac,_tolivgiac,_fromlivart,_tolivart;
|
int _fromlivgiac,_tolivgiac,_fromlivart,_tolivart;
|
||||||
bool _sottocatmer;
|
bool _sottocatmer;
|
||||||
TMag_livelli * _giaclev,*_artlev;
|
//sostituire con le funzioni di TLivelli_... :
|
||||||
TDecoder *_giacgrp,*_artgrp;
|
//TDecoder *_giacgrp,*_artgrp;
|
||||||
bool setdettaglio(bool show, int fromlivart,int livart,int fromlivgiac,int livgiac,bool dettgiac);
|
bool setdettaglio(bool show, int fromlivart,int livart,int fromlivgiac,int livgiac,bool dettgiac);
|
||||||
void add_giaclev(TString &levname);
|
void add_giaclev(TString &levname);
|
||||||
|
|
||||||
|
public:
|
||||||
|
TCodart_livelli * _artlev;
|
||||||
|
TCodgiac_livelli * _giaclev;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void gruppogiac(TForm_item &cf, TToken_string &s);
|
void gruppogiac(TForm_item &cf, TToken_string &s);
|
||||||
void gruppoart(TForm_item &cf, TToken_string &s);
|
void gruppoart(TForm_item &cf, TToken_string &s);
|
||||||
@ -517,10 +389,9 @@ public:
|
|||||||
bool setdett_perart(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep);
|
bool setdett_perart(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep);
|
||||||
bool setdett_permag(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep,bool showdett);
|
bool setdett_permag(int fromlivart,int livart,int fromlivgiac,int livgiac,bool showmag, bool showdep,bool showdett);
|
||||||
TForm_stampemg(const char *name,const char *code) ;
|
TForm_stampemg(const char *name,const char *code) ;
|
||||||
~TForm_stampemg();
|
virtual ~TForm_stampemg();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#include "..\ve\sconti.h"
|
#include "..\ve\sconti.h"
|
||||||
|
|
||||||
class TCondizione_vendita : public TObject
|
class TCondizione_vendita : public TObject
|
||||||
@ -567,7 +438,7 @@ public:
|
|||||||
bool ricerca(const char * cod,const real & qta=0) ;
|
bool ricerca(const char * cod,const real & qta=0) ;
|
||||||
|
|
||||||
TCondizione_vendita(TConfig * _ditta = NULL, TLocalisamfile * anamag = NULL, TLocalisamfile * umart = NULL);
|
TCondizione_vendita(TConfig * _ditta = NULL, TLocalisamfile * anamag = NULL, TLocalisamfile * umart = NULL);
|
||||||
~TCondizione_vendita() {}
|
virtual ~TCondizione_vendita() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user