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
This commit is contained in:
luca83 2009-10-29 16:53:39 +00:00
parent b8d7995171
commit 53cc21039d
7 changed files with 417 additions and 281 deletions

View File

@ -10,243 +10,10 @@
#include "lvrcondv.h"
#include "lvrconsplan.h"
#include "../mg/clifogiac.h"
#include "../ve/pacchi.h"
#include "lv2900a.h"
///////////////////////////
//// 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();
};
//READ: cerca una riga pacco in base alla chiave primaria
bool TRiga_pacco::read(const TString& codpacco, const long codriga)
{
if (codpacco.full()) // Campo obbligatorio!
{
TString80 key; key.format("%s|%ld", codpacco, codriga);
*((TRectype*)this) = cache().get(LF_PACCHI, key);
}
else
zero();
return ok();
}
//CODPACCO: metodo che restituisce il codice univoco del pacco
const TString& TRiga_pacco::codpacco() const
{
return get(PACCHI_CODPACCO);
}
//KEY: metodo che restiuisce la chiave univoca del record analizzato (per le lavanderie CODRIGA sempre 1)
const TToken_string& TRiga_pacco::key() const
{
TToken_string& k = get_tmp_string();
k.add(get(PACCHI_CODPACCO));
k.add(get(PACCHI_CODRIGA));
return k;
}
//ARTICOLO: metodo che restituisce il codice articolo specificato in questa riga
const TString& TRiga_pacco::articolo() const
{
return get(PACCHI_CODART);
}
//QUANTITA: metodo che restituisce il numero dei pezzi nella confezione
const real TRiga_pacco::quantita() const
{
return get_real(PACCHI_QTA);
}
//UM: metodo che restituisce l'unità di misura
const TString& TRiga_pacco::um() const
{
return get(PACCHI_UM);
}
//DATA: metodo che restituisce la data in cui il pacco è creato
const TDate TRiga_pacco::data() const
{
return get_date(PACCHI_DATA);
}
//CLIENTE; metodo che restituisce il codice del cliente a cui è stato assegnato il pacco
const long TRiga_pacco::cliente() const
{
return get_long(PACCHI_CODCF);
}
//DATA: metodo che restituisce la data in cui il pacco è stato assegnato a qualcuno
const TDate TRiga_pacco::databo() const
{
return get_date(PACCHI_DATABO);
}
//ANNULLATO: metodo che ritorna true se il pacco è stato annullato
const bool TRiga_pacco::annullato() const
{
return get_bool(PACCHI_ANNULLATO);
}
//RIGABOLLA: metodo che restituisce una TToken_string contenete alla riga del documento che ha consegnato il pacco
const TToken_string& TRiga_pacco::rigabolla() const
{
TToken_string& bolla = get_tmp_string();
bolla.add(get_char(PACCHI_PROVV));
bolla.add(get_int(PACCHI_ANNO));
bolla.add(get(PACCHI_CODNUM));
bolla.add(get_int(PACCHI_NDOC));
bolla.add(get_int(PACCHI_IDRIGA));
return bolla;
}
//MOVMAG: metodo che restituisce i riferimenti al movimento di magazzino generato dal pacco
const long TRiga_pacco::movmag() const
{
return get_long(PACCHI_MGNUMREG);
}
//SET_KEY: metodo che setta la chiave (da usare su un TRiga_pacco vuota)
void TRiga_pacco::set_key(const char* codpacco, const int codriga)
{
put(PACCHI_CODPACCO, codpacco);
put(PACCHI_CODRIGA, codriga);
}
//SET_ARTICOLO: metodo che setta il codice articolo sul record corrente
void TRiga_pacco::set_articolo(const char* codart)
{
put(PACCHI_CODART, codart);
}
//SET_QUANTITA: metodo che setta la quantita sul record corrente
void TRiga_pacco::set_quantita(const real qta)
{
put(PACCHI_QTA, qta);
}
//SET_UM: metodo che setta l'unità di misura
void TRiga_pacco::set_um(const char* um)
{
put(PACCHI_UM, um);
}
//SET_DATA: metodo che setta la data di creazione del record corrente
void TRiga_pacco::set_data(const TDate& data)
{
put(PACCHI_DATA, data);
}
//SET_CLIENTE: metodo che setta il codice cliente sul record corrente
void TRiga_pacco::set_cliente(const long codcf)
{
put(PACCHI_CODCF, codcf);
}
//SET_DATA: metodo che setta la data di evasione sul record corrente
void TRiga_pacco::set_databo(const TDate& data)
{
put(PACCHI_DATABO, data);
}
//SET_ANNULLATO: metodo che setta il flag di annullato
void TRiga_pacco::set_annullato(const bool ann)
{
put(PACCHI_ANNULLATO, ann);
}
//SET_RIGABOLLA: metodo che setta i riferimenti alla riga di bolla che evade il pacco sul record corrente
void TRiga_pacco::set_rigabolla(const int anno, const char* codnum, const long ndoc, const long idriga)
{
put(PACCHI_PROVV, 'D');
put(PACCHI_ANNO, anno);
put(PACCHI_CODNUM, codnum);
put(PACCHI_NDOC, ndoc);
put(PACCHI_IDRIGA, idriga);
}
//SET_MOVMAG: metodo che setta il movimento di magazzino generato dal pacco
void TRiga_pacco::set_movmag(const long movmag)
{
put(PACCHI_MGNUMREG, movmag);
}
//IS_ANNULATO: metodo che restituisce "true" se il campo annullato sul record attuale è 'S'
bool TRiga_pacco::is_annullato()
{
return get_bool(PACCHI_ANNULLATO);
}
//IS_ASSOCIATO: metodo che restitusce "true" se il campo cliente è valorizzato
bool TRiga_pacco::is_associato()
{
return get_int(PACCHI_CODCF) && 1;
}
//Metodi costruttori
TRiga_pacco::TRiga_pacco(const TRectype& rec)
: TRectype(rec)
{
}
TRiga_pacco::TRiga_pacco(const TRiga_pacco& rpacco)
: TRectype(rpacco)
{
}
TRiga_pacco::TRiga_pacco(const char* codpacco, const long codriga)
: TRectype(LF_PACCHI)
{
read(codpacco, codriga);
}
TRiga_pacco::TRiga_pacco()
: TRectype(LF_PACCHI)
{
zero();
}
////////////////////////////
//// TBUONI_CACHE ////
////////////////////////////
@ -913,7 +680,7 @@ bool TConta_pulito_msk::genera_movmag(TAssoc_array& movimenti)
}
movmag.write(movi);
}
/*MANCA IL CARICO DEL MAGAZZINO*/
return true;
}

View File

@ -1,6 +1,7 @@
#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <execp.h>
#include <reputils.h>
#include <reprint.h>
#include <utility.h>
@ -60,6 +61,10 @@ class TEvasione_msk: public TAutomask
TDocumento _buonori;
TPosizione_array _posizioni;
int _ndoc;
TString4 _tpev;
TAssoc_array _pacchi;
protected:
void setta_campi_data();
void setta_campi_cliente();
@ -247,6 +252,7 @@ void TEvasione_msk::carica_righe()
set(F_CODCF, doc.get_long(DOC_CODCF)); setta_campi_cliente(); field(F_CODCF).set_dirty();
_buonori = doc;
_pacchi.destroy();
if(doc.rows() > 0)
{
@ -283,31 +289,38 @@ void TEvasione_msk::carica_righe()
TRiga_documento& row = doc[i];
TBuono_prelievo_row rdoc(row);
TToken_string& riga = sheet.row(-1);
riga.add(rdoc.evaso() ? "X" : "", _posizioni.posizione("evaso"));
riga.add(rdoc.codart(), _posizioni.posizione("codart"));
riga.add(rdoc.desart(), _posizioni.posizione("artdescr"));
riga.add(rdoc.causale(), _posizioni.posizione("causale"));
riga.add(rdoc.qta_ritirata(), _posizioni.posizione("ritirato"));
riga.add(rdoc.qta_dacons(), _posizioni.posizione("dacons"));
riga.add(rdoc.qta_consegnata(), _posizioni.posizione("consegnato"));
const TRectype& anamag = cache().get(LF_ANAMAG, rdoc.codart());
//recupero i dati di interesse dall'anagrafica di magazzino
const long ppconf = anamag.get_long(ANAMAG_PPCONF);
if (ppconf > 0)
riga.add(rdoc.num_pacchi(), _posizioni.posizione("pacchi"));
else
if (rdoc.qta_dacons() > 0)
{
riga.add(0, _posizioni.posizione("pacchi"));
sheet.disable_cell(i, _posizioni.posizione("pacchi"));
}
TToken_string& riga = sheet.row(-1);
riga.add(rdoc.evaso() ? "X" : "", _posizioni.posizione("evaso"));
riga.add(rdoc.codart(), _posizioni.posizione("codart"));
riga.add(rdoc.desart(), _posizioni.posizione("artdescr"));
riga.add(rdoc.causale(), _posizioni.posizione("causale"));
riga.add(rdoc.qta_ritirata(), _posizioni.posizione("ritirato"));
riga.add(rdoc.qta_dacons(), _posizioni.posizione("dacons"));
riga.add(rdoc.qta_consegnata(), _posizioni.posizione("consegnato"));
riga.add(rdoc.cong_pre(), _posizioni.posizione("congpre"));
riga.add(rdoc.cong_att(), _posizioni.posizione("congatt"));
riga.add(rdoc.rifbcon(), _posizioni.posizione("rifbcon"));
riga.add(rdoc.rifbrit(), _posizioni.posizione("rifbrit"));
const TRectype& anamag = cache().get(LF_ANAMAG, rdoc.codart());
//recupero i dati di interesse dall'anagrafica di magazzino
const long ppconf = anamag.get_long(ANAMAG_PPCONF);
if (ppconf > 0)
riga.add(rdoc.num_pacchi(), _posizioni.posizione("pacchi"));
else
{
riga.add(0, _posizioni.posizione("pacchi"));
sheet.disable_cell(i, _posizioni.posizione("pacchi"));
}
riga.add(rdoc.cong_pre(), _posizioni.posizione("congpre"));
riga.add(rdoc.cong_att(), _posizioni.posizione("congatt"));
riga.add(rdoc.rifbcon(), _posizioni.posizione("rifbcon"));
riga.add(rdoc.rifbrit(), _posizioni.posizione("rifbrit"));
}
else
rdoc.set_evaso(true);
}
doc.rewrite();
sheet.sort(sort_by_codart);
sheet.force_update();
}
@ -342,6 +355,7 @@ void TEvasione_msk::genera_documento()
char stato = cache().get("%TIP", tipodoc, "S2").left(1)[0];
const TDate databpre = bpre.datadoc();
const TDate databolla = get_date(F_DATABOLLA);
const TDate datagen(TODAY);
TDate dadata = databpre;
TDate adata = datagen;
@ -372,7 +386,7 @@ void TEvasione_msk::genera_documento()
TDocumento doc('D', kdoc.anno(), codnum, ++_ndoc);
doc.put(DOC_TIPODOC, tipodoc);
doc.put(DOC_STATO, stato);
doc.put(DOC_DATADOC, datagen);
doc.put(DOC_DATADOC, databolla);
doc.put(DOC_TIPOCF, 'C');
doc.put(DOC_CODCF, codcf);
doc.put(DOC_CODCONT, codcont);
@ -474,14 +488,32 @@ void TEvasione_msk::genera_documento()
}
//salva la bolla solo se ha almeno una riga
int err = 1;
if (doc.rows() > 0)
{
doc.write();
err = doc.write();
const TString4 stato = cache().get("%TIP", ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_PRE", NULL, 0), "S2").mid(1,1);
bpre.put(DOC_STATO, stato);
bpre.write();
set(F_STATO, stato);
}
if (err == NOERR)
{
if (yesno_box(TR("Il documento è stato generato; si desiderla stamparlo?")))
{
//stampa automatica
TString80 str;
str << "ve1 -2 " << codnum << ' ' << datagen.year() << " D " << _ndoc << " S";
TExternal_app stampa(str);
stampa.run();
}
}
else
warning_box(TR("Non è stato possibile generare nessun documento"));
reset(F_NDOC);
send_key(K_ENTER, F_NDOC);
}
//EVADI_TUTTO: metodo che forza a "evaso" tutte le righe e lancia la generazione del buono di consegna associato
@ -530,8 +562,17 @@ void TEvasione_msk::salva()
TDoc_key kdoc(get_int(F_ANNO), get(F_CODNUM), get_long(F_NDOC));
TBuono_prelievo doc(kdoc);
//nel caso avessi spezzato le righe, riscirvendole da capo mi vengono ordinate per codice
doc.destroy_rows();
//nel caso avessi spezzato le righe, risrcivendole da capo mi vengono ordinate per codice
//ATTENZIONE: devo eliminare le sole righe che sono sullo sheet, cioè quelle che hanno
//quantità da consegnare maggiore di zero
for (int i = doc.rows(); i > 0; i--)
{
TRiga_documento& row = doc[i];
TBuono_prelievo_row rdoc(row);
if (rdoc.qta_dacons() > 0)
doc.destroy_row(i, true);
}
TSheet_field& sheet = sfield(F_RIGHE);
//riordino lo sheet
@ -661,6 +702,10 @@ void TEvasione_msk::sistema_pacchi()
int qta_consegnata = msk.get_int(S_CONSEGNATO);
int pacchi = qta_consegnata / ppconf;
if (qta_consegnata % ppconf > 0)
pacchi += 1;
msk.set(S_PACCHI, pacchi);
}
}
@ -669,6 +714,68 @@ void TEvasione_msk::sistema_pacchi()
//sottraendolo dal magazzino del pulito
void TEvasione_msk::evadi_da_barcode()
{
TString80 codpacco = get(F_BARCODE);
if (codpacco.full())
{
TSheet_field& sheet = sfield(F_RIGHE);
TDoc_key kdoc(get_int(F_ANNO), get(F_CODNUM), get_int(F_NDOC));
TRiga_pacco rp(codpacco);
TString80 codart = rp.articolo();
int qtapacco = rp.quantita().integer();
bool trovato = false;
//cerco la prima riga non evasa di quell'articolo
FOR_EACH_SHEET_ROW(sheet, r, riga)
{
if (riga->get(_posizioni.posizione("codart")) == codart && riga->get(_posizioni.posizione("evaso")) != "X")
{
int pacchi = riga->get_int(_posizioni.posizione("pacchi")); pacchi += 1;
int qtacon = riga->get_int(_posizioni.posizione("consegnato")); qtacon += qtapacco;
riga->add(pacchi, _posizioni.posizione("pacchi"));
riga->add(qtacon, _posizioni.posizione("consegnato"));
trovato = true;
if (_pacchi.is_key(codpacco))
_pacchi.remove(codpacco);
else
_pacchi.add(codpacco, kdoc);
}
}
if (!trovato)
{
if(yesno_box(TR("Si desidera provare a sommare il pacco a una riga già evasa?")))
{
FOR_EACH_SHEET_ROW(sheet, r, riga)
{
if (riga->get(_posizioni.posizione("codart")) == codart)
{
int pacchi = riga->get_int(_posizioni.posizione("pacchi")); pacchi += 1;
int qtacon = riga->get_int(_posizioni.posizione("consegnato")); qtacon += qtapacco;
riga->add(pacchi, _posizioni.posizione("pacchi"));
riga->add(qtacon, _posizioni.posizione("consegnato"));
trovato = true;
if (_pacchi.is_key(codpacco))
_pacchi.remove(codpacco);
else
_pacchi.add(codpacco, kdoc);
}
}
}
}
if (!trovato)
warning_box(TR("Non è stato possibile sommare il pacco a nessuna riga del buono"));
}
}
//ON_FIELD_EVENT: metodo che gestisce gli eventi sui campi della maschera
@ -719,7 +826,7 @@ bool TEvasione_msk::on_field_event(TOperable_field& f, TField_event e, long joll
break;
case DLG_CANCEL:
{
if (e == fe_button)
if (e == fe_button && jolly == 0)
{
annulla_operazioni();
return false;
@ -802,6 +909,13 @@ TEvasione_msk::TEvasione_msk():TAutomask("lv3200a")
int annoes = es.date2esc(data);
set(F_ANNO, annoes);
_tpev = main_app().argv(2);
if (_tpev == "B")
show(F_BARCODE);
else
hide(F_BARCODE);
hide(F_RIGHE);
disable(DLG_SELECT);
disable(DLG_PREVIEW);

View File

@ -9,13 +9,15 @@
#define F_DATADOC 207
#define F_GIORNO 208
#define F_SETTIMANA 209
#define F_DATAPRCO 210
#define F_CODCF 211
#define F_RICALT 212
#define F_CODCONT 213
#define F_CODITI 214
#define F_RAGSOC 215
#define F_RIGHE 216
#define F_DATABOLLA 210
#define F_DATAPRCO 211
#define F_CODCF 212
#define F_RICALT 213
#define F_CODCONT 214
#define F_CODITI 215
#define F_RAGSOC 216
#define F_BARCODE 217
#define F_RIGHE 218
#define S_EVASO 101
#define S_CODART 102

View File

@ -64,7 +64,7 @@ END
NUMBER F_NDOC 6
BEGIN
PROMPT 54 2 "Num."
USE LF_DOC SELECT ((#F_STATO=="")||(STATO==#F_STATO))
USE LF_DOC SELECT (STATO==1)
JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF
INPUT PROVV "D"
INPUT ANNO F_ANNO SELECT
@ -92,12 +92,7 @@ END
STRING F_STATO 3
BEGIN
PROMPT 68 2 "Stato"
USE %STD
INPUT CODTAB F_STATO
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO CODTAB
FLAG "U"
FLAGS "D"
END
NUMBER F_ANNO 4
@ -123,10 +118,16 @@ BEGIN
FLAGS "D"
END
DATE F_DATABOLLA
BEGIN
PROMPT 54 3 "Data Bolla "
FLAGS "A"
END
DATE F_DATAPRCO
BEGIN
PROMPT 54 3 "Data Prv.Con."
FLAGS "D"
FLAGS "H"
END
NUMBER F_CODCF 6
@ -191,9 +192,15 @@ BEGIN
ADD RUN cg0 -1
END
SPREADSHEET F_RIGHE 0 17
STRING F_BARCODE 50
BEGIN
PROMPT 1 7 "Righe"
PROMPT 2 7 "Barcode "
CHECKTYPE NORMAL
END
SPREADSHEET F_RIGHE 0 16
BEGIN
PROMPT 1 8 "Righe"
ITEM "Evaso"
ITEM "Cod.\nArt."
ITEM "Descrizione"

View File

@ -994,13 +994,17 @@ void TBuono_prelievo_row::set_cong_att(const long qtacong)
//SET_RIFBCON: metodo che setta i riferimenti al buono di consegna associato
void TBuono_prelievo_row::set_rifbcon(const TToken_string& keybcon)
{
_rdoc.put("RIFBCON", keybcon);
TString str = keybcon;
str.replace('|', ' ');
_rdoc.put("RIFBCON", str);
}
//SET_RIFBRIT: metodo che setta i riferimenti al buono di ritiro associato
void TBuono_prelievo_row::set_rifbrit(const TToken_string& keybrit)
{
_rdoc.put("RIFBRIT", keybrit);
TString str = keybrit;
str.replace('|', ' ');
_rdoc.put("RIFBRIT", str);
}
//ADD_QTA_CONSEGNATA: metodo che somma una quantita alla quantità presente in una riga documento
@ -1014,3 +1018,196 @@ void TBuono_prelievo_row::add_pacchi(const int nmr)
{
_rdoc.add(RDOC_NCOLLI, nmr);
}
///////////////////////////
//// TRIGA_PACCO ////
///////////////////////////
//READ: cerca una riga pacco in base alla chiave primaria
bool TRiga_pacco::read(const TString& codpacco, const long codriga)
{
if (codpacco.full()) // Campo obbligatorio!
{
TString80 key; key.format("%s|%ld", codpacco, codriga);
*((TRectype*)this) = cache().get(LF_PACCHI, key);
}
else
zero();
return ok();
}
//CODPACCO: metodo che restituisce il codice univoco del pacco
const TString& TRiga_pacco::codpacco() const
{
return get(PACCHI_CODPACCO);
}
//KEY: metodo che restiuisce la chiave univoca del record analizzato (per le lavanderie CODRIGA sempre 1)
const TToken_string& TRiga_pacco::key() const
{
TToken_string& k = get_tmp_string();
k.add(get(PACCHI_CODPACCO));
k.add(get(PACCHI_CODRIGA));
return k;
}
//ARTICOLO: metodo che restituisce il codice articolo specificato in questa riga
const TString& TRiga_pacco::articolo() const
{
return get(PACCHI_CODART);
}
//QUANTITA: metodo che restituisce il numero dei pezzi nella confezione
const real TRiga_pacco::quantita() const
{
return get_real(PACCHI_QTA);
}
//UM: metodo che restituisce l'unità di misura
const TString& TRiga_pacco::um() const
{
return get(PACCHI_UM);
}
//DATA: metodo che restituisce la data in cui il pacco è creato
const TDate TRiga_pacco::data() const
{
return get_date(PACCHI_DATA);
}
//CLIENTE; metodo che restituisce il codice del cliente a cui è stato assegnato il pacco
const long TRiga_pacco::cliente() const
{
return get_long(PACCHI_CODCF);
}
//DATA: metodo che restituisce la data in cui il pacco è stato assegnato a qualcuno
const TDate TRiga_pacco::databo() const
{
return get_date(PACCHI_DATABO);
}
//ANNULLATO: metodo che ritorna true se il pacco è stato annullato
const bool TRiga_pacco::annullato() const
{
return get_bool(PACCHI_ANNULLATO);
}
//RIGABOLLA: metodo che restituisce una TToken_string contenete alla riga del documento che ha consegnato il pacco
const TToken_string& TRiga_pacco::rigabolla() const
{
TToken_string& bolla = get_tmp_string();
bolla.add(get_char(PACCHI_PROVV));
bolla.add(get_int(PACCHI_ANNO));
bolla.add(get(PACCHI_CODNUM));
bolla.add(get_int(PACCHI_NDOC));
bolla.add(get_int(PACCHI_IDRIGA));
return bolla;
}
//MOVMAG: metodo che restituisce i riferimenti al movimento di magazzino generato dal pacco
const long TRiga_pacco::movmag() const
{
return get_long(PACCHI_MGNUMREG);
}
//SET_KEY: metodo che setta la chiave (da usare su un TRiga_pacco vuota)
void TRiga_pacco::set_key(const char* codpacco, const int codriga)
{
put(PACCHI_CODPACCO, codpacco);
put(PACCHI_CODRIGA, codriga);
}
//SET_ARTICOLO: metodo che setta il codice articolo sul record corrente
void TRiga_pacco::set_articolo(const char* codart)
{
put(PACCHI_CODART, codart);
}
//SET_QUANTITA: metodo che setta la quantita sul record corrente
void TRiga_pacco::set_quantita(const real qta)
{
put(PACCHI_QTA, qta);
}
//SET_UM: metodo che setta l'unità di misura
void TRiga_pacco::set_um(const char* um)
{
put(PACCHI_UM, um);
}
//SET_DATA: metodo che setta la data di creazione del record corrente
void TRiga_pacco::set_data(const TDate& data)
{
put(PACCHI_DATA, data);
}
//SET_CLIENTE: metodo che setta il codice cliente sul record corrente
void TRiga_pacco::set_cliente(const long codcf)
{
put(PACCHI_CODCF, codcf);
}
//SET_DATA: metodo che setta la data di evasione sul record corrente
void TRiga_pacco::set_databo(const TDate& data)
{
put(PACCHI_DATABO, data);
}
//SET_ANNULLATO: metodo che setta il flag di annullato
void TRiga_pacco::set_annullato(const bool ann)
{
put(PACCHI_ANNULLATO, ann);
}
//SET_RIGABOLLA: metodo che setta i riferimenti alla riga di bolla che evade il pacco sul record corrente
void TRiga_pacco::set_rigabolla(const int anno, const char* codnum, const long ndoc, const long idriga)
{
put(PACCHI_PROVV, 'D');
put(PACCHI_ANNO, anno);
put(PACCHI_CODNUM, codnum);
put(PACCHI_NDOC, ndoc);
put(PACCHI_IDRIGA, idriga);
}
//SET_MOVMAG: metodo che setta il movimento di magazzino generato dal pacco
void TRiga_pacco::set_movmag(const long movmag)
{
put(PACCHI_MGNUMREG, movmag);
}
//IS_ANNULATO: metodo che restituisce "true" se il campo annullato sul record attuale è 'S'
bool TRiga_pacco::is_annullato()
{
return get_bool(PACCHI_ANNULLATO);
}
//IS_ASSOCIATO: metodo che restitusce "true" se il campo cliente è valorizzato
bool TRiga_pacco::is_associato()
{
return get_int(PACCHI_CODCF) && 1;
}
//Metodi costruttori
TRiga_pacco::TRiga_pacco(const TRectype& rec)
: TRectype(rec)
{
}
TRiga_pacco::TRiga_pacco(const TRiga_pacco& rpacco)
: TRectype(rpacco)
{
}
TRiga_pacco::TRiga_pacco(const char* codpacco, const long codriga)
: TRectype(LF_PACCHI)
{
read(codpacco, codriga);
}
TRiga_pacco::TRiga_pacco()
: TRectype(LF_PACCHI)
{
zero();
}

View File

@ -9,6 +9,10 @@
#include "../mg/mglib.h"
#endif
#ifndef __PACCHI_H
#include "../ve/pacchi.h"
#endif
#ifndef __VELIB_H
#include "../ve/velib.h"
#endif
@ -246,4 +250,49 @@ public:
TBuono_prelievo_row(TRiga_documento& rdoc):_rdoc(rdoc){}
};
///////////////////////////
//// 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();
};
#endif

View File

@ -109,7 +109,7 @@ Item_08 = "Fatture", "ve0 -1 -filtI1=2 -defNUM_FAT,TIPODOC_FAT,lv", "F"
Item_09 = "Ordini Fornitori", "ve0 -1 -filtI1=3 -defNUM_ORF,TIPODOC_ORF,lv", "F"
Item_10 = "Ordini Clienti", "ve0 -1 -filtI1=3 -defNUM_ORC,TIPODOC_ORC,lv", "F"
Item_11 = "Fatturazione", "lv2 -4", "F"
Item_12 = "Evasione Buoni di Prelievo", "lv3 -1", "F"
Item_12 = "Evasione Buoni di Prelievo manuale", "lv3 -1 M", "F"
Item_13 = "Stampe", [LVMENU_050]
[LVMENU_050]