campo-sirio/lv/lvlib.h

458 lines
16 KiB
C
Raw Normal View History

#ifndef __LVLIB_H
#define __LVLIB_H
#ifndef __RECSET_H
#include <recset.h>
#endif
#ifndef __REPORT_H
#include <report.h>
#endif
#ifndef __MGLIB_H
#include "../mg/mglib.h"
#endif
Patch level : 10.0 patch 492 Files correlati : lv2 lv3 lv3200a.msk lvmenu Ricompilazione Demo : [ ] Commento : 1. Il programma di Evasione buoni di prelievo Non deve visualizzare le righe che hanno la quantità da consegnare = a 0 Che siano causali di solo ritiro o quantità che non fanno consegna risolviamo comunque tutte le casistiche Per definizione sono già evase, non avendo una quantità da consegnare ma solo da ritirare. Quando creiamo il buono di consegna dal buono di prelievo mettere anche queste righe. (cosa che il programma già fa se metto io a mano il flag di evaso) 2. Quando entro in evasione del buono di prelievo e premo annulla mi deve chiedere se salvare le modifiche (come fa il pulsante salva) e darmi la possibilità di scegliere un altro buono di prelievo Adesso invece mi constringe a uscire e rientrare da menu per passare da un buono all’altro Il default per la ricerca dei buoni di prelievo del campo stato deve essere impostato a 1 3. Se entro nel dettaglio di una riga del’evasione del buono di prelievo (cliccando 2 volte sul campo consegnato) il pulsante annulla non fa niente 4. Sull’evasione del buono di prelievo , sui campi riferimenti ritiro e consegna non ci scrive niente 5. La data di prevista consegna sull’evasione dei buoni di prelievo non serve quindi la toglierei dalla visualizzazione guadagnamo lo spazio per scrivere accanto alla data del documento , subito dopo i dati dell’esercizio, la descrizione “Data Bolla” 6. La data del buono di consegna , quando lo generiamo dal buono di prelievo, deve essere quella della data del punto 5 , che essendo modificabile permette di fare bolle di consegna anche con un’altra data. Ora le crea con la data del giorno 7. nel programma di evasione buoni di prelievo , quando metto la quantità , mi calcola i pacchi . ma se metto una quantità che non fa pacco non me la consedera. Esempio Quantità per confezione 40 quantità consegnata 45 i pacchi sono 2 non 1 Quantità per confezione 40 quantità consegnata 5 i pacchi sono 1 non 0 9. Quando creo il buono di consegna da buono di prelievo mi deve chiedere se voglio stampare il buono di consegna (come il punto 8) git-svn-id: svn://10.65.10.50/trunk@19547 c028cbd2-c16b-5b4b-a496-9718f37d4682
2009-10-29 16:53:39 +00:00
#ifndef __PACCHI_H
#include "../ve/pacchi.h"
#endif
#ifndef __VELIB_H
#include "../ve/velib.h"
#endif
#ifndef __VELIB07_H
#include "../ve/velib07.h"
#endif
#define RDOC_QTAREALE "CIN01"
#define RDOC_TOTREALE "CIN02"
#define RDOC_PROVV1REALE "CIN03"
#define RDOC_PROVV2REALE "CIN04"
#define RDOC_QTARITREALE "CIN05"
void lv_set_creation_info(TRectype& rec);
void lv_set_update_info(TRectype& rec);
long lv_find_contract(const long codcf, const long indsped, const TDate& data);
bool lv_is_holiday(const TDate& data);
bool lv_is_02_active();
const TFilename & lv_backup_path();
class TLaundry_contract : public TRectype
{
protected:
TRectype& modify_row(const char* codart); //restituisce una riga modificabile
public:
virtual bool ok() const;
bool read(const long codcf, const long codcont);
bool read(const long codcf, const long indsped, const TDate& data);
bool can_be_deleted() const;
//metodi per la gestione delle righe
const TRectype& row(const char* codart) const;
const int rows() const ;
const TRectype& row(int i) const;
int add_row(const char* codart);
int update_row(const char* codart, const char* fieldname, const bool bol);
int update_row(const char* codart, const char* fieldname, const char* str);
int update_row(const char* codart, const char* fieldname, const long nmr);
int update_row(const char* codart, const char* fieldname, const real nmr);
int update_row(const char* codart, const char* fieldname, const TDate& data);
TLaundry_contract();
TLaundry_contract(const TRectype & rec);
TLaundry_contract(const long codcf, const long codcont);
TLaundry_contract(const long codcf, const long indsped, const TDate& data);
};
class TRecmag_lavanderie : public TVariable_rectype
{
real _consmese;
long _update_time;
protected:
virtual const TString & get_str(const char* fieldname) const ;
virtual void put_str(const char* fieldname, const char* val) { return TRectype::put_str(fieldname, val);}
void update();
public:
virtual int read(TBaseisamfile& f, word op = _isequal, word lockop = _nolock);
virtual int readat(TBaseisamfile& f, TRecnotype nrec, word lockop = _nolock);
virtual int name2index(const char* fieldname) const;
virtual TFieldtypes type(const char* fieldname) const;
virtual int length(const char* fieldname) const;
virtual int ndec(const char* fieldname) const;
virtual bool exist(const char* fieldname) const;
virtual TObject* dup() const;
TRecmag_lavanderie();
TRecmag_lavanderie(const TRecmag_lavanderie & rec) : TVariable_rectype(rec), _update_time(0L) {}
TRecmag_lavanderie(const TRectype & rec) : TVariable_rectype(rec), _update_time(0L) {}
virtual ~TRecmag_lavanderie() {}
};
class TArticolo_lavanderie : public TArticolo_giacenza_data
{
int _anno_lav;
char _tipocf;
long _codcf;
int _indsped;
protected:
// la get_str supporta anche la sintassi:
// #LF->fieldname
// #LF_par1->fieldname
// #LF_par1_par2->fieldname
// #LF_par1_par2_par3->fieldname
// dove:
// LF = numero logico del sottofile collegato (LF_UMART, LF_DESLIN, LF_CODCORR
// par1, par2, par3 = varie parti della chiave dell'indice del file collegato
// il numero di queste parti ed il loro valore dipende dal file collegato
// se parX comincia per # rappresenta il numero progressivo nell'indice
// fieldname = nome del campo nel file collegato
virtual const TString & get_str(const char* fieldname) const ;
virtual void set_body_key(TRectype & rowrec);
void set_anno_lav (int anno = 0);
void set_anno_lav (const char * anno) { set_anno_mag(atoi(anno)); }
virtual TRectype * new_body_record(int logicnum = 0);
public:
virtual TObject* dup() const { return new TArticolo_lavanderie(codice(), _tipocf, _codcf, _indsped); }
int find_clifomag(TRecord_array& rclifomag, const char * livello = NULL, int from = 0) const ;
int find_clifomag(int annoes, const char * livello = NULL, int from = 0) const ;
int find_clifomag(const char * annoes, const char * livello = NULL, int from = 0) const { return find_clifomag(atoi(annoes), livello, from); }
TRecord_array & clifomag(int annoes) const;
TRecord_array & clifomag(const char * annoes) const { return clifomag(atoi(annoes));}
void set_tipocf(char tipocf);
void set_codcf(long codcf);
void set_indsped(int indsped);
const TRecmag_lavanderie & find_rec(int annoes) const;
const TRecmag_lavanderie & find_rec(const char * annoes) const { return find_rec(atoi(annoes)); }
TArticolo_lavanderie(const char* codice = NULL, const char tipocf = ' ', const long codcf = 0L, const int indsped = 0);
TArticolo_lavanderie(const TRectype& rec, const char tipocf = ' ', const long codcf = 0L, const int indsped = 0);
virtual ~TArticolo_lavanderie() {}
};
TArticolo_lavanderie& cached_article_laundry(const char * codart, const char tipocf, const long codcf, const int indsped);
class TLavanderie_calendar : public TObject
{
int _year;
TBit_array _days;
public:
int read(int year = 0);
int write() const;
int rewrite() const { return write(); }
int remove() const;
void set_holiday(const TDate& date, bool holiday = true);
void reset_holiday(const TDate& date) { set_holiday(date, false);}
bool is_holiday(const TDate& date) const;
TLavanderie_calendar(int year);
virtual ~TLavanderie_calendar() {}
};
class TCausale_lavanderie : public TRectype
{
protected:
//metodi che restituiscono le indicazioni sulle causali di magazzino associate
const TString& caurit() const {return get("S1");}
const TString& caucon() const {return get("S2");}
public:
//metodi che restituiscono i dati di interesse sulla causale di lavanderia
const TString& codice() const {return get("CODTAB");}
const TString& descr() const {return get("S0");}
const TString& caucol() const {return get("S4");}
const bool is_ritiro() const {return get_bool("B0");}
const bool is_consegna() const {return get_bool("B1");}
const bool is_reso() const {return get_bool("B2");}
const bool is_rotto() const {return get_bool("B3");}
const bool movcong() const {return !get_bool("B4");}
//metodi che restituiscono le causali di magazzino associate
const TCausale_magazzino& causale_ritiro() const {return cached_causale_magazzino(caurit());}
const TCausale_magazzino& causale_consegna() const {return cached_causale_magazzino(caucon());}
//costruttore
TCausale_lavanderie(const char * codice);
TCausale_lavanderie(const TRectype &r);
virtual ~TCausale_lavanderie() {}
};
TCausale_lavanderie & cached_causale_lavanderie(const char * codcaus);
////////////////////////
//// TDOC_KEY ////
////////////////////////
//classe TDoc_key
class TDoc_key: public TToken_string
{
public:
const char provv();
const int anno();
const char* codnum();
const long ndoc();
void set_provv(const char = 'D');
void set_anno(const int anno);
void set_codnum(const char* codnum);
void set_ndoc(const long ndoc);
TDoc_key& operator= (const char* key){set(key);}
TDoc_key(const int anno, const TString& codnum, const long ndoc, const char provv = 'D');
TDoc_key(const char* key):TToken_string(key){}
TDoc_key(const TToken_string& key):TToken_string(key){}
TDoc_key(const TDoc_key& key):TToken_string(key){}
};
/////////////////////////
//// TRDOC_KEY ////
/////////////////////////
//classe TRdoc_key
class TRdoc_key: public TToken_string
{
public:
const char provv();
const int anno();
const char* codnum();
const long ndoc();
const int nriga();
TRdoc_key& operator= (const char* key){set(key);}
TRdoc_key(const int anno, const TString& codnum, const long ndoc, const int nriga, const char provv = 'D');
TRdoc_key(const char* key):TToken_string(key){}
TRdoc_key(const TToken_string& key):TToken_string(key){}
TRdoc_key(const TRdoc_key& key):TToken_string(key){}
};
/////////////////////////////////////////////////////
//// TBUONO_PRELIEVO & TBUONO_PRELIEVO_ROW ////
/////////////////////////////////////////////////////
//classe TBuono_prelievo
class TBuono_prelievo: public TDocumento
{
public:
const TToken_string& chiave() const;
const TDate datadoc() const;
const long codcont() const;
void set_dataprco(const TDate& data);
void set_itinerario(const int coditi);
void set_contratto(const int codcont);
TBuono_prelievo& operator= (const TBuono_prelievo bpre){bpre;}
TBuono_prelievo(TDoc_key& key): TDocumento(key.provv(), key.anno(), key.codnum(), key.ndoc()){};
TBuono_prelievo(TBuono_prelievo& bpre): TDocumento(bpre){};
};
//classe TBuono_prelievo_row
class TBuono_prelievo_row: public TObject
{
TRiga_documento& _rdoc;
public:
const bool evaso() const;
const TString& codart() const;
const TString& desart() const;
const TString& causale() const;
const real qta_ritirata() const;
const real qta_dacons() const;
const real qta_consegnata() const;
const int num_pacchi() const;
const real prezzo() const;
const long cong_pre() const;
const long cong_att() const;
const TToken_string& rifbcon() const;
const TToken_string& rifbrit() const;
const TDate& dataeva() const;
void set_evaso(const bool evaso);
void set_codart(const char* codart);
void set_desart(const TString& desart);
void set_causale(const char* causale);
void set_qta_ritirata(const real qta);
void set_qta_dacons(const real qta);
void set_qta_consegnata(const real qta);
void set_num_pacchi(const int numpacchi);
void set_codiva(const char* codiva);
void set_um(const char* um);
void set_prezzo(const real prezzo);
void set_mag(const char* mag);
void set_magc(const char* magc);
void set_cong_pre(const real qtacong);
void set_cong_att(const real qtacong);
void set_rifbcon(const TToken_string& keybcon);
void set_rifbrit(const TToken_string& keybrit);
void set_dataeva(const TDate& data);
void add_qta_consegnata(const real qta);
void add_pacchi(const int nmr = 1);
TBuono_prelievo_row(TRiga_documento& rdoc):_rdoc(rdoc){}
};
Patch level : 10.0 patch 492 Files correlati : lv2 lv3 lv3200a.msk lvmenu Ricompilazione Demo : [ ] Commento : 1. Il programma di Evasione buoni di prelievo Non deve visualizzare le righe che hanno la quantità da consegnare = a 0 Che siano causali di solo ritiro o quantità che non fanno consegna risolviamo comunque tutte le casistiche Per definizione sono già evase, non avendo una quantità da consegnare ma solo da ritirare. Quando creiamo il buono di consegna dal buono di prelievo mettere anche queste righe. (cosa che il programma già fa se metto io a mano il flag di evaso) 2. Quando entro in evasione del buono di prelievo e premo annulla mi deve chiedere se salvare le modifiche (come fa il pulsante salva) e darmi la possibilità di scegliere un altro buono di prelievo Adesso invece mi constringe a uscire e rientrare da menu per passare da un buono all’altro Il default per la ricerca dei buoni di prelievo del campo stato deve essere impostato a 1 3. Se entro nel dettaglio di una riga del’evasione del buono di prelievo (cliccando 2 volte sul campo consegnato) il pulsante annulla non fa niente 4. Sull’evasione del buono di prelievo , sui campi riferimenti ritiro e consegna non ci scrive niente 5. La data di prevista consegna sull’evasione dei buoni di prelievo non serve quindi la toglierei dalla visualizzazione guadagnamo lo spazio per scrivere accanto alla data del documento , subito dopo i dati dell’esercizio, la descrizione “Data Bolla” 6. La data del buono di consegna , quando lo generiamo dal buono di prelievo, deve essere quella della data del punto 5 , che essendo modificabile permette di fare bolle di consegna anche con un’altra data. Ora le crea con la data del giorno 7. nel programma di evasione buoni di prelievo , quando metto la quantità , mi calcola i pacchi . ma se metto una quantità che non fa pacco non me la consedera. Esempio Quantità per confezione 40 quantità consegnata 45 i pacchi sono 2 non 1 Quantità per confezione 40 quantità consegnata 5 i pacchi sono 1 non 0 9. Quando creo il buono di consegna da buono di prelievo mi deve chiedere se voglio stampare il buono di consegna (come il punto 8) git-svn-id: svn://10.65.10.50/trunk@19547 c028cbd2-c16b-5b4b-a496-9718f37d4682
2009-10-29 16:53:39 +00:00
///////////////////////////
//// TRIGA_PACCO ////
///////////////////////////
//classe TRiga_pacco
class TRiga_pacco: public TRectype
{
public:
TRiga_pacco & operator =(const TRiga_pacco& rpacco);
bool read(const TString& codpacco, const long codriga = 1);
const TString& codpacco() const;
const TToken_string& key() const;
const TString& articolo() const;
const real quantita() const;
const TString& um() const;
const TDate data() const;
const long cliente() const;
const TDate databo() const;
const bool annullato() const;
const TToken_string& rigabolla() const;
const long movmag() const;
void set_key(const char* codpacco, const int codriga = 1);
void set_articolo(const char* codart);
void set_quantita(const real qta);
void set_um(const char* um);
void set_data(const TDate& data);
void set_cliente(const long codcf);
void set_databo(const TDate& data);
void set_annullato(const bool ann);
void set_rigabolla(const int anno, const char* codnum, const long ndoc, const long idriga);
void set_movmag(const long movmag);
bool is_annullato();
bool is_associato();
TRiga_pacco(const TRectype& rec);
TRiga_pacco(const TRiga_pacco& rpacco);
TRiga_pacco(const char* codpacco, const long codriga = 1);
TRiga_pacco();
};
////////////////////////////////////
//// CLASSE TGIAC_PER_CLI ////
////////////////////////////////////
//Definizione della classe Giacenza per Cliente
class TGiac_per_cli : public TObject
{
private:
TAssoc_array _odierna; //TAssoc_array che conterr<72> le dotazioni odierne
TAssoc_array _temporanea; //TAssoc_array che conterr<72> le dotazioni temporanee
long _clifo; //variabile che conterr<72> il cliente selezionato
long _cont; //variabile che conterr<72> il contratto selezionato
int _year; //variabile che conterr<72> l'anno documento
long _indsped; //variabile che conterr<72> l'indirizzo di spedizione
protected:
real& giacart_od(const TString& codart); //restituisce un puntatore al valore della dot. od. salvato
real& giacart_tmp(const TString& codart); //restituisce un puntatore al valore valore della dot. temp. salvato
long giac_in_mag(const TString& codart, bool odierna) const; //restituisce il valore salvato nel magazzino
public:
bool preset(const TDocumento& doc); //precarico le variabili globali della classe
bool reset(const TDocumento& doc); //svuota i TAssoc_array e carica cli e cont
bool load_row(TRiga_documento& rdoc, const bool aggiorna = false, const bool reading = false); //popola i TAssoc_array
real giac_att(TRiga_documento& rdoc, bool odierna); //restituisce le quantit<69> attuali di dotazione
TGiac_per_cli(); //costruttore
};
class TLV_recordset : public TDocument_recordset
{
public:
virtual TCursor* cursor() const;
TLV_recordset(const char* use) : TDocument_recordset(use) {}
virtual ~TLV_recordset() {}
};
class TLV_report : public TDocument_report
{
protected:
virtual bool get_usr_val(const TString& name, TVariant& var) const;
public:
virtual bool set_recordset(TRecordset* rs) { return TReport::set_recordset(rs); }
virtual bool set_recordset(const TString& sql);
TLV_report() {}
virtual ~TLV_report() {}
};
///////////////////////////////////
//// TDOC_INVENTARIO_ROW ////
///////////////////////////////////
//Classe TDoc_inventario_row
class TDoc_inventario_row: public TObject
{
TRiga_documento& _rinv;
public:
const TString& codart() const;
const TString& desart() const;
const real qta() const;
const TString& um() const;
const int num_pacchi() const;
const TToken_string& cod_pacchi() const;
const TString& magazzino() const;
const TString& magazzinoc() const;
void set_codart(const char* codart);
void set_desart(const TString& desart);
void set_qta(const real qta);
void set_um(const char* um);
void set_num_pacchi(const int numpacchi);
void set_cod_pacchi(const char* codpacchi);
void set_magazzino(const char* mag);
void set_magazzinoc(const char* magc);
TDoc_inventario_row(TRiga_documento& rinv):_rinv(rinv){}
};
///////////////////////////////
//// TDOC_INVENTARIO ////
///////////////////////////////
//Classe TDoc_inventario
class TDoc_inventario: public TDocumento
{
public:
const TToken_string& chiave() const;
const TDate datadoc() const;
TDoc_inventario_row find_or_create_row(const char* codart);
void set_difinv(const bool difinv = true);
TDoc_inventario& operator= (const TDoc_inventario dinv){dinv;}
TDoc_inventario(TDoc_key& key): TDocumento(key.provv(), key.anno(), key.codnum(), key.ndoc()){};
TDoc_inventario(TDoc_inventario& dinv): TDocumento(dinv){};
};
#endif