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 allaltro 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 delevasione del buono di prelievo (cliccando 2 volte sul campo consegnato) il pulsante annulla non fa niente 4. Sullevasione del buono di prelievo , sui campi riferimenti ritiro e consegna non ci scrive niente 5. La data di prevista consegna sullevasione 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 dellesercizio, 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 unaltra 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:
parent
b8d7995171
commit
53cc21039d
235
lv/lv2900.cpp
235
lv/lv2900.cpp
@ -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;
|
||||
}
|
||||
|
||||
|
168
lv/lv3200.cpp
168
lv/lv3200.cpp
@ -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);
|
||||
|
16
lv/lv3200a.h
16
lv/lv3200a.h
@ -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
|
||||
|
@ -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"
|
||||
|
201
lv/lvlib.cpp
201
lv/lvlib.cpp
@ -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();
|
||||
}
|
49
lv/lvlib.h
49
lv/lvlib.h
@ -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
|
||||
|
@ -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]
|
||||
|
Loading…
x
Reference in New Issue
Block a user