diff --git a/ve/velib01.cpp b/ve/velib01.cpp index c1e3fddd5..1ce30d6be 100755 --- a/ve/velib01.cpp +++ b/ve/velib01.cpp @@ -106,10 +106,10 @@ TDocumento::TDocumento() { } -TDocumento::TDocumento(const char* codnum, int anno, char provv, long numdoc) +TDocumento::TDocumento(char provv, int anno, const char* codnum, long numdoc) : _head(LF_DOC), _rows(LF_RIGHEDOC, "NRIGA") { - read(codnum, anno, provv, numdoc); + read(provv, anno, codnum, numdoc); } int TDocumento::read(const TRectype& rec) @@ -118,22 +118,24 @@ int TDocumento::read(const TRectype& rec) TLocalisamfile doc(LF_DOC); int err = _head.read(doc); + + TRectype* key = new TRectype(LF_RIGHEDOC); + key->put("CODNUM", doc.get("CODNUM")); + key->put("ANNO", doc.get("ANNO")); + key->put("PROVV", doc.get("PROVV")); + key->put("NUMDOC", doc.get("NUMDOC")); + if (err == NOERR) - { - TRectype* key = new TRectype(LF_RIGHEDOC); - key->put("CODNUM", doc.get("CODNUM")); - key->put("ANNO", doc.get("ANNO")); - key->put("PROVV", doc.get("PROVV")); - key->put("NUMDOC", doc.get("NUMDOC")); err = _rows.read(key); - } else - _head = rec; - + { + _head = rec; + _rows.set_key(key); + } return err; } -int TDocumento::read(const char* codnum, int anno, char provv, long numdoc) +int TDocumento::read(char provv, int anno, const char* codnum, long numdoc) { CHECK(codnum && *codnum && anno > 0 && (provv == 'D' || provv == 'P') && numdoc > 0, "Codice documento non valido"); @@ -182,6 +184,25 @@ const TTipo_documento& TDocumento::tipo() const return *o; } +/////////////////////////////////////////////////////////// +// Lista di documenti +/////////////////////////////////////////////////////////// + +int TLista_documenti::leggi(char tipo, long clifo, + const TDate& dd, const TDate& ad) +{ + _documenti.destroy(); + + TString filter(256); + filter << '(' << CLI_TIPOCF << '=' << tipo << ")&&(" + << CLI_CODCF << '=' << clifo << ")"; + if (dd.ok() && dd > botime) + filter << "&&(ANSI(DATADOC)>=" << dd.string(ANSI) << ')'; + if (ad.ok() && ad < eotime) + filter << "&&(ANSI(DATADOC)<=" << ad.string(ANSI) << ')'; + + return 0; +} /////////////////////////////////////////////////////////// // Cliente/Fornitore per vendite diff --git a/ve/velib01.h b/ve/velib01.h index 0c89a6969..de7c27923 100755 --- a/ve/velib01.h +++ b/ve/velib01.h @@ -29,10 +29,11 @@ public: pagamento, banca_appoggio, listino, agente, spedizione, porto, causale_trasporto, vettori }; - const TString & tipodoc() const { return _rec.get("CODTAB");} const TString & profile_name() const { return _rec.get("S4");} const TString & mask_name() const { return _rec.get("S4");} + const TString& codice() const { return _rec.get("CODTAB");} + bool uguale(TCondizione_uguaglianza u) const { return _rec.get("S2")[(int)u]; } TTipo_documento(const char* tipodoc = NULL); @@ -58,8 +59,9 @@ public: bool destroy_row(int n) { return _rows.destroy_row(n); } void destroy_rows() { _rows.destroy_rows(); } - int read(const char * codnum, int anno, char provv, long numdoc); - int read(const TRectype & rec); + int read(char provv, int anno, const char* codnum, long numdoc); + int read(const TRectype& rec); + int write(bool re = FALSE) const; int rewrite() const { return write(TRUE); } int remove() const; @@ -73,10 +75,25 @@ public: long numero() const { return _head.get_long("NDOC"); } TDocumento (); - TDocumento(const char * codnum, int anno, char provv, long numdoc); + TDocumento(char provv, int anno, const char* codnum, long numdoc); virtual ~TDocumento() { } }; +class TLista_documenti : public TObject +{ + TArray _documenti; + +public: + int leggi(char tipo, long clifo, const TDate& dd, const TDate& ad); + + const TDocumento& operator[] (int n) const { return (const TDocumento&)_documenti[n]; } + TDocumento& operator[] (int n) { return (TDocumento&)_documenti[n]; } + int items() const { return _documenti.items(); } + + TLista_documenti() { } + virtual ~TLista_documenti() { } +}; + class TLista_clifo : public TObject { class TClifo : public TObject