Patch level : 10.0 patch 710
Files correlati : lv0300a.msk lvlib lv3 Ricompilazione Demo : [ ] Commento : Aggiunto il programma di generazione inventario da terminale git-svn-id: svn://10.65.10.50/trunk@20360 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
0a7f913e2d
commit
8700b4dbd4
107
lv/lv0300a.h
107
lv/lv0300a.h
@ -32,62 +32,67 @@
|
||||
#define F_TIPODOC_ORC 218
|
||||
#define F_DESTIPODOC_ORC 219
|
||||
|
||||
#define F_BUONIRIT 220
|
||||
#define F_BUONIANT 221
|
||||
#define F_BUONIPREL 222
|
||||
#define F_DOCCONG 223
|
||||
#define F_DOCDOT 224
|
||||
#define F_CODNUM_INV 220
|
||||
#define F_DESNUM_INV 221
|
||||
#define F_TIPODOC_INV 222
|
||||
#define F_DESTIPODOC_INV 223
|
||||
|
||||
#define F_CAUSLAV 225
|
||||
#define F_CAUSLAVDESC 226
|
||||
#define F_CAULVRITDT 227
|
||||
#define F_CAULVRITDTDE 228
|
||||
#define F_CAUCARMAG 229
|
||||
#define F_CAUCARMAGDE 230
|
||||
#define F_CAUSCARMAG 231
|
||||
#define F_CAUSCARMAGDE 232
|
||||
#define F_BUONIRIT 224
|
||||
#define F_BUONIANT 225
|
||||
#define F_BUONIPREL 226
|
||||
#define F_DOCCONG 227
|
||||
#define F_DOCDOT 228
|
||||
|
||||
#define F_CODMAG 233
|
||||
#define F_DESMAG 234
|
||||
#define F_CODMAGN 235
|
||||
#define F_DESMAGN 236
|
||||
#define F_CODMAGC 237
|
||||
#define F_DESMAGC 238
|
||||
#define F_CODMAGP 239
|
||||
#define F_DESMAGP 240
|
||||
#define F_CODMAGCL 241
|
||||
#define F_DESMAGCL 242
|
||||
#define F_CAUSLAV 229
|
||||
#define F_CAUSLAVDESC 230
|
||||
#define F_CAULVRITDT 231
|
||||
#define F_CAULVRITDTDE 232
|
||||
#define F_CAUCARMAG 233
|
||||
#define F_CAUCARMAGDE 234
|
||||
#define F_CAUSCARMAG 235
|
||||
#define F_CAUSCARMAGDE 236
|
||||
|
||||
#define F_UNICONT 243
|
||||
#define F_QTAMODI 244
|
||||
#define F_AUTGIRI 245
|
||||
#define F_ORDGIRI 246
|
||||
#define F_DATAFISSA 247
|
||||
#define F_AGGCONG 248
|
||||
#define F_PERARR 249
|
||||
#define F_RIFOR 250
|
||||
#define F_ARTCANFIS 251
|
||||
#define F_GESTSACA 252
|
||||
#define F_ALMANAC 253
|
||||
#define F_USEINDSP 254
|
||||
#define F_DATABCON 255
|
||||
#define F_CONDOM 256
|
||||
#define F_CODARTFIX 257
|
||||
#define F_DESARTFIX 258
|
||||
#define F_CODARTCAFIX 259
|
||||
#define F_DESARTCAFIX 260
|
||||
#define F_TIPOPR 261
|
||||
#define F_UMPESO 262
|
||||
#define F_CODMAG 237
|
||||
#define F_DESMAG 238
|
||||
#define F_CODMAGN 239
|
||||
#define F_DESMAGN 240
|
||||
#define F_CODMAGC 241
|
||||
#define F_DESMAGC 242
|
||||
#define F_CODMAGP 243
|
||||
#define F_DESMAGP 244
|
||||
#define F_CODMAGCL 245
|
||||
#define F_DESMAGCL 246
|
||||
|
||||
#define F_PATH_CON 263
|
||||
#define F_SHEET_NAME 264
|
||||
#define F_PATH_MAN 265
|
||||
#define F_PATH_LAVA 266
|
||||
#define F_PATH_PUL 267
|
||||
#define F_FILE_PUL 268
|
||||
#define F_UNICONT 247
|
||||
#define F_QTAMODI 248
|
||||
#define F_AUTGIRI 249
|
||||
#define F_ORDGIRI 250
|
||||
#define F_DATAFISSA 251
|
||||
#define F_AGGCONG 252
|
||||
#define F_PERARR 253
|
||||
#define F_RIFOR 254
|
||||
#define F_ARTCANFIS 255
|
||||
#define F_GESTSACA 256
|
||||
#define F_ALMANAC 257
|
||||
#define F_USEINDSP 258
|
||||
#define F_DATABCON 259
|
||||
#define F_CONDOM 260
|
||||
#define F_CODARTFIX 261
|
||||
#define F_DESARTFIX 262
|
||||
#define F_CODARTCAFIX 263
|
||||
#define F_DESARTCAFIX 264
|
||||
#define F_TIPOPR 265
|
||||
#define F_UMPESO 266
|
||||
|
||||
#define F_CODARTCOFIX 269
|
||||
#define F_DESARTCOFIX 270
|
||||
#define F_PATH_CON 267
|
||||
#define F_SHEET_NAME 268
|
||||
#define F_PATH_MAN 269
|
||||
#define F_PATH_LAVA 270
|
||||
#define F_PATH_PUL 271
|
||||
#define F_FILE_PUL 272
|
||||
|
||||
#define F_CODARTCOFIX 273
|
||||
#define F_DESARTCOFIX 274
|
||||
|
||||
#define F_BACKUP 300
|
||||
|
||||
|
113
lv/lv0300a.uml
113
lv/lv0300a.uml
@ -121,12 +121,12 @@ END
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 1 4 "@bFatture"
|
||||
PROMPT 1 3 "@bFatture"
|
||||
END
|
||||
|
||||
STRING F_CODNUM_FAT 4
|
||||
BEGIN
|
||||
PROMPT 2 5 "Numerazione "
|
||||
PROMPT 2 4 "Numerazione "
|
||||
FIELD NUM_FAT
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
@ -142,7 +142,7 @@ END
|
||||
|
||||
STRING F_DESNUM_FAT 50
|
||||
BEGIN
|
||||
PROMPT 24 5 ""
|
||||
PROMPT 24 4 ""
|
||||
HELP "Descrizione Numerazione"
|
||||
USE %NUM KEY 2
|
||||
INPUT S0 F_DESNUM_FAT
|
||||
@ -153,7 +153,7 @@ END
|
||||
|
||||
STRING F_TIPODOC_FAT 4
|
||||
BEGIN
|
||||
PROMPT 2 6 "Tipo "
|
||||
PROMPT 2 5 "Tipo "
|
||||
FIELD TIPODOC_FAT
|
||||
HELP "Codice tipo documento"
|
||||
USE %TIP
|
||||
@ -168,7 +168,7 @@ END
|
||||
|
||||
STRING F_DESTIPODOC_FAT 50
|
||||
BEGIN
|
||||
PROMPT 24 6 ""
|
||||
PROMPT 24 5 ""
|
||||
HELP "Descrizione tipo documento"
|
||||
USE %TIP KEY 2
|
||||
INPUT S0 F_DESTIPODOC_FAT
|
||||
@ -179,13 +179,13 @@ END
|
||||
|
||||
BOOLEAN F_RIFTEST
|
||||
BEGIN
|
||||
PROMPT 2 7 "Scrivi riferimenti in testata documento"
|
||||
PROMPT 2 6 "Scrivi riferimenti in testata documento"
|
||||
FIELD RifTest
|
||||
END
|
||||
|
||||
STRING F_FELAB_DIF 8
|
||||
BEGIN
|
||||
PROMPT 2 8 "Tipo fatt. definitiva"
|
||||
PROMPT 2 7 "Tipo fatt. definitiva"
|
||||
FLAG "U"
|
||||
USE %ELD SELECT I0==2
|
||||
INPUT CODTAB F_FELAB_DIF
|
||||
@ -199,7 +199,7 @@ END
|
||||
|
||||
STRING F_FELAB_PRO 8
|
||||
BEGIN
|
||||
PROMPT 45 8 "Tipo fatt. di prova "
|
||||
PROMPT 45 7 "Tipo fatt. di prova "
|
||||
FLAG "U"
|
||||
USE %ELD SELECT I0==2
|
||||
INPUT CODTAB F_FELAB_PRO
|
||||
@ -213,12 +213,12 @@ END
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 1 10 "@bOrdini fornitori"
|
||||
PROMPT 1 8 "@bOrdini fornitori"
|
||||
END
|
||||
|
||||
STRING F_CODNUM_ORF 4
|
||||
BEGIN
|
||||
PROMPT 2 11 "Numerazione "
|
||||
PROMPT 2 9 "Numerazione "
|
||||
FIELD NUM_ORF
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
@ -234,7 +234,7 @@ END
|
||||
|
||||
STRING F_DESNUM_ORF 50
|
||||
BEGIN
|
||||
PROMPT 24 11 ""
|
||||
PROMPT 24 9 ""
|
||||
HELP "Descrizione Numerazione"
|
||||
USE %NUM KEY 2
|
||||
INPUT S0 F_DESNUM_ORF
|
||||
@ -245,7 +245,7 @@ END
|
||||
|
||||
STRING F_TIPODOC_ORF 4
|
||||
BEGIN
|
||||
PROMPT 2 12 "Tipo "
|
||||
PROMPT 2 10 "Tipo "
|
||||
FIELD TIPODOC_ORF
|
||||
HELP "Codice tipo documento"
|
||||
USE %TIP
|
||||
@ -260,7 +260,7 @@ END
|
||||
|
||||
STRING F_DESTIPODOC_ORF 50
|
||||
BEGIN
|
||||
PROMPT 24 12 ""
|
||||
PROMPT 24 10 ""
|
||||
HELP "Descrizione tipo documento"
|
||||
USE %TIP KEY 2
|
||||
INPUT S0 F_DESTIPODOC_ORF
|
||||
@ -271,12 +271,12 @@ END
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 1 14 "@bOrdini clienti"
|
||||
PROMPT 1 11 "@bOrdini clienti"
|
||||
END
|
||||
|
||||
STRING F_CODNUM_ORC 4
|
||||
BEGIN
|
||||
PROMPT 2 15 "Numerazione "
|
||||
PROMPT 2 12 "Numerazione "
|
||||
FIELD NUM_ORC
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
@ -292,7 +292,7 @@ END
|
||||
|
||||
STRING F_DESNUM_ORC 50
|
||||
BEGIN
|
||||
PROMPT 24 15 ""
|
||||
PROMPT 24 12 ""
|
||||
HELP "Descrizione Numerazione"
|
||||
USE %NUM KEY 2
|
||||
INPUT S0 F_DESNUM_ORC
|
||||
@ -303,7 +303,7 @@ END
|
||||
|
||||
STRING F_TIPODOC_ORC 4
|
||||
BEGIN
|
||||
PROMPT 2 16 "Tipo "
|
||||
PROMPT 2 13 "Tipo "
|
||||
FIELD TIPODOC_ORC
|
||||
HELP "Codice tipo documento"
|
||||
USE %TIP
|
||||
@ -318,7 +318,7 @@ END
|
||||
|
||||
STRING F_DESTIPODOC_ORC 50
|
||||
BEGIN
|
||||
PROMPT 24 16 ""
|
||||
PROMPT 24 13 ""
|
||||
HELP "Descrizione tipo documento"
|
||||
USE %TIP KEY 2
|
||||
INPUT S0 F_DESTIPODOC_ORC
|
||||
@ -329,12 +329,71 @@ END
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 1 18 "@bCausali di default"
|
||||
PROMPT 1 14 "@bInventari pacchi"
|
||||
END
|
||||
|
||||
STRING F_CODNUM_INV 4
|
||||
BEGIN
|
||||
PROMPT 2 15 "Numerazione "
|
||||
FIELD NUM_INV
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUM_INV
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODNUM_INV CODTAB
|
||||
OUTPUT F_DESNUM_INV S0
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "UPA"
|
||||
WARNING "Numerazione assente"
|
||||
END
|
||||
|
||||
STRING F_DESNUM_INV 50
|
||||
BEGIN
|
||||
PROMPT 24 15 ""
|
||||
HELP "Descrizione Numerazione"
|
||||
USE %NUM KEY 2
|
||||
INPUT S0 F_DESNUM_INV
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_CODNUM_INV
|
||||
END
|
||||
|
||||
STRING F_TIPODOC_INV 4
|
||||
BEGIN
|
||||
PROMPT 2 16 "Tipo "
|
||||
FIELD TIPODOC_INV
|
||||
HELP "Codice tipo documento"
|
||||
USE %TIP
|
||||
INPUT CODTAB F_TIPODOC_INV
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC_INV CODTAB
|
||||
OUTPUT F_DESTIPODOC_INV S0
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "UP"
|
||||
END
|
||||
|
||||
STRING F_DESTIPODOC_INV 50
|
||||
BEGIN
|
||||
PROMPT 24 16 ""
|
||||
HELP "Descrizione tipo documento"
|
||||
USE %TIP KEY 2
|
||||
INPUT S0 F_DESTIPODOC_INV
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC_ORC
|
||||
END
|
||||
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 1 17 "@bCausali di default"
|
||||
END
|
||||
|
||||
STRING F_CAUSLAV 3
|
||||
BEGIN
|
||||
PROMPT 2 19 "Cau. Rit/Con "
|
||||
PROMPT 2 18 "Cau. Rit/Con "
|
||||
USE &CAU
|
||||
INPUT CODTAB F_CAUSLAV
|
||||
DISPLAY "Codice" CODTAB
|
||||
@ -347,7 +406,7 @@ END
|
||||
|
||||
STRING F_CAUSLAVDESC 48
|
||||
BEGIN
|
||||
PROMPT 26 19 ""
|
||||
PROMPT 26 18 ""
|
||||
USE &CAU KEY 2
|
||||
INPUT S0 F_CAUSLAVDESC
|
||||
DISPLAY "Descrizione@50" S0
|
||||
@ -358,7 +417,7 @@ END
|
||||
|
||||
STRING F_CAULVRITDT 3
|
||||
BEGIN
|
||||
PROMPT 2 20 "Cau. Rit. dt. tmp"
|
||||
PROMPT 2 19 "Cau. Rit. dt. tmp"
|
||||
USE &CAU
|
||||
INPUT CODTAB F_CAULVRITDT
|
||||
DISPLAY "Codice" CODTAB
|
||||
@ -371,7 +430,7 @@ END
|
||||
|
||||
STRING F_CAULVRITDTDE 48
|
||||
BEGIN
|
||||
PROMPT 26 20 ""
|
||||
PROMPT 26 19 ""
|
||||
USE &CAU KEY 2
|
||||
INPUT S0 F_CAUSLAVDESC
|
||||
DISPLAY "Descrizione@50" S0
|
||||
@ -382,7 +441,7 @@ END
|
||||
|
||||
STRING F_CAUCARMAG 5
|
||||
BEGIN
|
||||
PROMPT 2 21 "Cau. Car. Mag. "
|
||||
PROMPT 2 20 "Cau. Car. Mag. "
|
||||
USE %CAU KEY 1
|
||||
INPUT CODTAB F_CAUCARMAG
|
||||
DISPLAY "Codice" CODTAB
|
||||
@ -395,7 +454,7 @@ END
|
||||
|
||||
STRING F_CAUCARMAGDE 50 46
|
||||
BEGIN
|
||||
PROMPT 28 21 ""
|
||||
PROMPT 28 20 ""
|
||||
USE %CAU KEY 2
|
||||
INPUT S0 F_CAUCARMAGDE
|
||||
DISPLAY "Descrizione@50" S0
|
||||
@ -406,7 +465,7 @@ END
|
||||
|
||||
STRING F_CAUSCARMAG 5
|
||||
BEGIN
|
||||
PROMPT 2 22 "Cau. Scar. Mag. "
|
||||
PROMPT 2 21 "Cau. Scar. Mag. "
|
||||
USE %CAU KEY 1
|
||||
INPUT CODTAB F_CAUSCARMAG
|
||||
DISPLAY "Codice" CODTAB
|
||||
@ -419,7 +478,7 @@ END
|
||||
|
||||
STRING F_CAUSCARMAGDE 50 46
|
||||
BEGIN
|
||||
PROMPT 28 22 ""
|
||||
PROMPT 28 21 ""
|
||||
USE %CAU KEY 2
|
||||
INPUT S0 F_CAUSCARMAGDE
|
||||
DISPLAY "Descrizione@50" S0
|
||||
|
@ -13,6 +13,7 @@ int main(int argc, char** argv)
|
||||
case 3: lv3400(argc, argv); break; // gestione manuale buoni di prelievo lv3400
|
||||
case 4: lv3500(argc, argv); break; // sitauzione a mag. di un art. lv3500
|
||||
case 5: lv3600(argc, argv); break; // invio dati a contapezzi Montanari lv3600
|
||||
case 6: lv3700(argc, argv); break; // inventario da terminale lv3700
|
||||
default: lv3100(argc, argv); break; // gestione manuale bolle lv3100
|
||||
}
|
||||
return 0;
|
||||
|
1
lv/lv3.h
1
lv/lv3.h
@ -7,5 +7,6 @@ int lv3300(int argc, char* argv[]);
|
||||
int lv3400(int argc, char* argv[]);
|
||||
int lv3500(int argc, char* argv[]);
|
||||
int lv3600(int argc, char* argv[]);
|
||||
int lv3700(int argc, char* argv[]);
|
||||
|
||||
#endif // __LV3_H
|
||||
|
837
lv/lv3700.cpp
Executable file
837
lv/lv3700.cpp
Executable file
@ -0,0 +1,837 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
|
||||
#include "lvlib.h"
|
||||
|
||||
#include "lv3700a.h"
|
||||
|
||||
///////////////////////////////////
|
||||
//// 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){}
|
||||
};
|
||||
|
||||
//CODART: metodo che restituisce il codice articolo della riga documento
|
||||
const TString& TDoc_inventario_row::codart() const
|
||||
{
|
||||
return _rinv.get(RDOC_CODART);
|
||||
}
|
||||
|
||||
//DESART: metodo che restiruisce la descrizione dell'articolo
|
||||
const TString& TDoc_inventario_row::desart() const
|
||||
{
|
||||
TString& str = get_tmp_string();
|
||||
str = _rinv.get(RDOC_DESCR);
|
||||
|
||||
if (_rinv.get_bool(RDOC_DESCLUNGA))
|
||||
str << _rinv.get(RDOC_DESCEST);
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
//QTA: metodo che restiruisce la quantità salvata sulla riga
|
||||
const real TDoc_inventario_row::qta() const
|
||||
{
|
||||
return _rinv.get_real(RDOC_QTA);
|
||||
}
|
||||
|
||||
//UM: metodo che restiruisce l'unità di misura utilizzata sulla riga documento
|
||||
const TString& TDoc_inventario_row::um() const
|
||||
{
|
||||
return _rinv.get(RDOC_UMQTA);
|
||||
}
|
||||
|
||||
//NUM_PACCHI: metodo che resituisce il numero dei pacchi presenti per quell'articolo
|
||||
const int TDoc_inventario_row::num_pacchi() const
|
||||
{
|
||||
return _rinv.get_int(RDOC_NCOLLI);
|
||||
}
|
||||
|
||||
//COD_PACCHI: metodo che restiuisce l'elenco dei pacchi salvati su quella riga
|
||||
const TToken_string& TDoc_inventario_row::cod_pacchi() const
|
||||
{
|
||||
TToken_string& tmp = get_tmp_string();
|
||||
tmp = _rinv.get("CODPACCHI");
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
//MAGAZZINO: metodo che restituisce il codice del magazzino/deposito
|
||||
const TString& TDoc_inventario_row::magazzino() const
|
||||
{
|
||||
return _rinv.get(RDOC_CODMAG);
|
||||
}
|
||||
|
||||
//MAGAZZINOC: metodo che restituisce il codice del magazzino/deposito collegato
|
||||
const TString& TDoc_inventario_row::magazzinoc() const
|
||||
{
|
||||
return _rinv.get(RDOC_CODMAGC);
|
||||
}
|
||||
|
||||
//SET_CODART: metodo che setta il codice articolo
|
||||
void TDoc_inventario_row::set_codart(const char* codart)
|
||||
{
|
||||
_rinv.put(RDOC_CODART, codart);
|
||||
_rinv.put(RDOC_CODARTMAG, codart);
|
||||
}
|
||||
|
||||
//SET_DESART: metodo che setta la descrizione
|
||||
void TDoc_inventario_row::set_desart(const TString& desart)
|
||||
{
|
||||
if (desart.len() > 50)
|
||||
{
|
||||
_rinv.put(RDOC_DESCR, desart.left(50));
|
||||
_rinv.put(RDOC_DESCLUNGA, true);
|
||||
_rinv.put(RDOC_DESCEST, desart.mid(50));
|
||||
}
|
||||
else
|
||||
_rinv.put(RDOC_DESCR, desart);
|
||||
}
|
||||
|
||||
//SET_QTA_RITIRATA: metodo che setta la quantità ritirata sulla riga
|
||||
void TDoc_inventario_row::set_qta(const real qta)
|
||||
{
|
||||
_rinv.put(RDOC_QTA, qta);
|
||||
}
|
||||
|
||||
//SET_UM: metodo che setta l'unità di misura
|
||||
void TDoc_inventario_row::set_um(const char* um)
|
||||
{
|
||||
_rinv.put(RDOC_UMQTA, um);
|
||||
}
|
||||
|
||||
//SET_NUM_PACCHI: metodo che setta il numero dei pacchi
|
||||
void TDoc_inventario_row::set_num_pacchi(const int numpacchi)
|
||||
{
|
||||
_rinv.put(RDOC_NCOLLI, numpacchi);
|
||||
}
|
||||
|
||||
//SET_COD_PACCHI: metodo che setta l'elenco dei pacchi salvati su quella riga
|
||||
void TDoc_inventario_row::set_cod_pacchi(const char* codpacchi)
|
||||
{
|
||||
_rinv.put("CODPACCHI", codpacchi);
|
||||
}
|
||||
|
||||
//SET_MAGAZZINO: metodo che setta il codice del magazzino/deposito
|
||||
void TDoc_inventario_row::set_magazzino(const char* mag)
|
||||
{
|
||||
_rinv.put(RDOC_CODMAG, mag);
|
||||
}
|
||||
|
||||
//SET_MAGAZZINOC: metodo che setta il codice del magazzino/deposito collegato
|
||||
void TDoc_inventario_row::set_magazzinoc(const char* magc)
|
||||
{
|
||||
_rinv.put(RDOC_CODMAGC, magc);
|
||||
}
|
||||
|
||||
///////////////////////////////
|
||||
//// 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);
|
||||
|
||||
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){};
|
||||
};
|
||||
|
||||
//CHIAVE: metodo che restituisce la chiave del documento
|
||||
const TToken_string& TDoc_inventario::chiave() const
|
||||
{
|
||||
TToken_string& k = get_tmp_string();
|
||||
k.add(get(DOC_PROVV));
|
||||
k.add(get(DOC_ANNO));
|
||||
k.add(get(DOC_CODNUM));
|
||||
k.add(get(DOC_NDOC));
|
||||
return k;
|
||||
}
|
||||
|
||||
//DATADOC: metodo che restiruisce la data documento
|
||||
const TDate TDoc_inventario::datadoc() const
|
||||
{
|
||||
return get_date(DOC_DATADOC);
|
||||
}
|
||||
|
||||
//FIND_OR_CREATE_ROW: metodo che cerca una riga con un certo codart e se non esiste la crea
|
||||
TDoc_inventario_row TDoc_inventario::find_or_create_row(const char* codart)
|
||||
{
|
||||
//scorro tutte le righe documento; se ne trovo una con quel codart
|
||||
//allora la restituisco
|
||||
for(int i = 1; i <= rows(); i++)
|
||||
{
|
||||
TRiga_documento& row = (*(TDocumento*)this)[i];
|
||||
const TString& cod = row.get(RDOC_CODART);
|
||||
|
||||
if(cod == codart)
|
||||
{
|
||||
TDoc_inventario_row rinv(row);
|
||||
return rinv;
|
||||
}
|
||||
}
|
||||
|
||||
//se sono arrivato qui non ho trovato neanche una riga con quel codart;
|
||||
//in queto caso ne aggiungo una
|
||||
TRiga_documento& row = (*(TDocumento*)this).new_row("21");
|
||||
TDoc_inventario_row rinv(row);
|
||||
return rinv;
|
||||
}
|
||||
|
||||
///////////////////////////////
|
||||
//// TPACCHI_CONTATI ////
|
||||
///////////////////////////////
|
||||
|
||||
//Classe TPacchi_contati
|
||||
class TPacchi_contati: public TObject
|
||||
{
|
||||
real _qta;
|
||||
TString4 _um;
|
||||
int _npacchi;
|
||||
TToken_string _codpacchi;
|
||||
|
||||
public:
|
||||
const real qta() const;
|
||||
const TString& um() const;
|
||||
const int npacchi() const;
|
||||
const TToken_string& codpacchi() const;
|
||||
|
||||
void set_qta(const real& qta);
|
||||
void set_um(const char* um);
|
||||
void set_npacchi(const int npacchi = 1);
|
||||
void set_codpacchi(const TToken_string& codpacchi);
|
||||
|
||||
void add_qta(const real& qta);
|
||||
void add_pacchi(const int pacchi = 1);
|
||||
void add_codpacco(const TString& codpacco);
|
||||
void sub_codpacco(const TString& codpacco);
|
||||
|
||||
TPacchi_contati(const real& qta = ZERO, const char* um = "", const int npacchi = 0, const char* codpacco = "");
|
||||
};
|
||||
|
||||
//QTA: metodo che restituisce la quantita
|
||||
const real TPacchi_contati::qta() const
|
||||
{
|
||||
return _qta;
|
||||
}
|
||||
|
||||
//UM: metodo che restituisce l'unità di misura
|
||||
const TString& TPacchi_contati::um() const
|
||||
{
|
||||
return _um;
|
||||
}
|
||||
|
||||
//NPACCHI: metodo che restituisce il numero dei pacchi pistolati
|
||||
const int TPacchi_contati::npacchi() const
|
||||
{
|
||||
return _npacchi;
|
||||
}
|
||||
|
||||
//CODPACCHI: metodo che restituisce i codici dei pacchi pistolati
|
||||
const TToken_string& TPacchi_contati::codpacchi() const
|
||||
{
|
||||
return _codpacchi;
|
||||
}
|
||||
|
||||
//SET_QTA: metodo che setta la quantità
|
||||
void TPacchi_contati::set_qta(const real& qta)
|
||||
{
|
||||
_qta = qta;
|
||||
}
|
||||
|
||||
//SET_UM: metodo che setta l'unità di misura
|
||||
void TPacchi_contati::set_um(const char* um)
|
||||
{
|
||||
_um = um;
|
||||
}
|
||||
|
||||
//SET_NPACCHI: metodo che setta il numero di pacchi
|
||||
void TPacchi_contati::set_npacchi(const int npacchi)
|
||||
{
|
||||
_npacchi = npacchi;
|
||||
}
|
||||
|
||||
//SET_CODPACCHI: metodo che setta i codici dei pacchi
|
||||
void TPacchi_contati::set_codpacchi(const TToken_string& codpacchi)
|
||||
{
|
||||
TToken_string tmp(codpacchi, '-');
|
||||
_codpacchi = tmp;
|
||||
}
|
||||
|
||||
//ADD_QTA_CON: metodo che aggiunge un quantitativo di roba alla quantità consegnata
|
||||
void TPacchi_contati::add_qta(const real& qta)
|
||||
{
|
||||
_qta += qta;
|
||||
}
|
||||
|
||||
//ADD_PACCHI: metodo che aggiunge un certo numero di pacchi a quelli consegnati (default = 1)
|
||||
void TPacchi_contati::add_pacchi(const int pacchi)
|
||||
{
|
||||
_npacchi += pacchi;
|
||||
}
|
||||
|
||||
//ADD_CODPACCO: metodo che aggiunge un codice di un pacco alla TToken_string che li contiene
|
||||
void TPacchi_contati::add_codpacco(const TString& codpacco)
|
||||
{
|
||||
_codpacchi.add(codpacco);
|
||||
}
|
||||
|
||||
//SUB_CODPACCO: metodo che toglie un codice di un pacco alla TToken_string che li contiene
|
||||
void TPacchi_contati::sub_codpacco(const TString& codpacco)
|
||||
{
|
||||
int pos = _codpacchi.get_pos(codpacco);
|
||||
_codpacchi.destroy(pos);
|
||||
}
|
||||
|
||||
//metodo costruttore
|
||||
TPacchi_contati::TPacchi_contati(const real& qta, const char* um, const int npacchi, const char* codpacco)
|
||||
{
|
||||
set_qta(qta);
|
||||
set_um(um);
|
||||
set_npacchi(npacchi);
|
||||
|
||||
TToken_string tmp(codpacco, '-');
|
||||
set_codpacchi(tmp);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//// TRIGHE_INV_ARRAY ////
|
||||
////////////////////////////////
|
||||
|
||||
//Classe TRighe_inv_array
|
||||
class TRighe_inv_array: public TAssoc_array
|
||||
{
|
||||
public:
|
||||
TPacchi_contati* quantita(TString& codart, bool create);
|
||||
};
|
||||
|
||||
//QUANTITA: metodo che cerca nel TAssoc_array le quantità della riga interessata in base ai parametri passati
|
||||
//e lo crea in automatico se il parametro create vale "true"
|
||||
TPacchi_contati* TRighe_inv_array::quantita(TString& codart, bool create)
|
||||
{
|
||||
TPacchi_contati* pc = (TPacchi_contati*)objptr(codart);
|
||||
|
||||
if(pc == NULL && create)
|
||||
{
|
||||
pc = new TPacchi_contati();
|
||||
add(codart, pc);
|
||||
}
|
||||
return pc;
|
||||
}
|
||||
|
||||
///////////////////////////////////
|
||||
//// TINVENTARIO_TER_MSK ////
|
||||
///////////////////////////////////
|
||||
|
||||
|
||||
//Classe TInventario_ter_msk
|
||||
class TInventario_ter_msk: public TAutomask
|
||||
{
|
||||
TRighe_inv_array _ria;
|
||||
bool _nuovo;
|
||||
int _autoselect;
|
||||
|
||||
protected:
|
||||
bool precarica_righe();
|
||||
void registra();
|
||||
void aggiorna_campi(const char* codart, const TPacchi_contati& pc, const real& qtapacco);
|
||||
void inventario_da_terminale();
|
||||
|
||||
virtual void on_idle();
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TInventario_ter_msk();
|
||||
};
|
||||
|
||||
//PRECARICA_RIGHE: metodo che carica in un TAssoc_array le righe fisiche del documento
|
||||
bool TInventario_ter_msk::precarica_righe()
|
||||
{
|
||||
//instanzio il documento inventario
|
||||
TDoc_key kinv(get_int(F_ANNO), ini_get_string(CONFIG_DITTA, "lv", "NUM_INV", NULL), get_long(F_NINV));
|
||||
TDoc_inventario inv(kinv);
|
||||
|
||||
if (inv.empty())
|
||||
{
|
||||
warning_box(TR("L'inventario cercato è inesistente"));
|
||||
return false;
|
||||
}
|
||||
|
||||
//controllo lo stato del documento
|
||||
const TString4 stato = cache().get("%TIP", ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_INV", NULL), "S2").mid(2,1);
|
||||
if (inv.get(DOC_STATO) == stato)
|
||||
{
|
||||
TString str;
|
||||
str << "L'inventario " << get_long(F_NINV) << " è già stato stampato e non può essere aggiornato";
|
||||
warning_box(str);
|
||||
|
||||
reset(F_CHIAVE);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
TDate oggi(TODAY);
|
||||
|
||||
//metto ogni riga del documento nel TAssoc_array che contiene gli oggetti TPacchi_contati
|
||||
//e che ha per chiave il codice articolo
|
||||
FOR_EACH_PHYSICAL_RDOC(inv, i, row)
|
||||
{
|
||||
TDoc_inventario_row rinv(*row);
|
||||
|
||||
TString80 codart = rinv.codart();
|
||||
|
||||
if (codart.blank())
|
||||
continue;
|
||||
|
||||
TPacchi_contati* pc = _ria.quantita(codart, true);
|
||||
pc->set_qta(rinv.qta());
|
||||
pc->set_um(rinv.um());
|
||||
pc->set_npacchi(rinv.num_pacchi());
|
||||
pc->set_codpacchi(rinv.cod_pacchi());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//REGISTRA: metodo che salva il buono di prelievo così com'è
|
||||
void TInventario_ter_msk::registra()
|
||||
{
|
||||
//se sto salvando un documento nuovo, allora lo genero,
|
||||
//altrimenti aggiorno quello esiete già
|
||||
TDoc_key kinv(get_date(F_DATAINV).year(), get(F_CODNUM), get_long(F_NINV));
|
||||
if (_nuovo)
|
||||
kinv.set_ndoc(0);
|
||||
|
||||
//instanzio il documento e salvo i dati di interesse sulle testate
|
||||
//se necessario
|
||||
TDoc_inventario inv(kinv);
|
||||
if(_nuovo)
|
||||
{
|
||||
inv.put(DOC_TIPODOC, get(F_TPDOC));
|
||||
inv.put(DOC_DATADOC, get_date(F_DATAINV));
|
||||
|
||||
//aggiorno il numero documento con quello sicuramente corretto
|
||||
TToken_string tmp = inv.chiave();
|
||||
TDoc_key chiave(tmp);
|
||||
set(F_NINV, chiave.ndoc());
|
||||
_nuovo = false;
|
||||
}
|
||||
|
||||
//per ogni oggetto dell'array cerco o creo una riga merce del documento
|
||||
FOR_EACH_ASSOC_OBJECT(_ria, obj, key, itm)
|
||||
{
|
||||
const TPacchi_contati& pc = *(TPacchi_contati*)itm;
|
||||
const TString80 codart(key);
|
||||
const TString& desart = cache().get(LF_ANAMAG, codart, "DESCR");
|
||||
|
||||
TString8 magazzino;
|
||||
magazzino << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGP");
|
||||
|
||||
TDoc_inventario_row& rinv = inv.find_or_create_row(codart);
|
||||
|
||||
rinv.set_codart(codart);
|
||||
rinv.set_desart(desart);
|
||||
rinv.set_qta(pc.qta());
|
||||
rinv.set_um(pc.um());
|
||||
rinv.set_num_pacchi(pc.npacchi());
|
||||
rinv.set_cod_pacchi(pc.codpacchi());
|
||||
rinv.set_magazzino(magazzino); //DA CONTROLLARE
|
||||
rinv.set_magazzinoc(magazzino); //DA CONTROLLARE
|
||||
}
|
||||
}
|
||||
|
||||
//AGGIORNA_CAMPI: metodo che aggiorna i campi della maschera
|
||||
void TInventario_ter_msk::aggiorna_campi(const char* codart, const TPacchi_contati& pc, const real& qtapacco)
|
||||
{
|
||||
set(F_CODART, codart);
|
||||
set(F_PACCHI, pc.npacchi());
|
||||
set(F_QTACON, pc.qta());
|
||||
set(F_QTAPACCO, qtapacco);
|
||||
}
|
||||
|
||||
//INVENTARIO_DA_TERMINALE: metodo che somma alla riga corretta un pacco (quello pistolato) e lo assegna a un cliente,
|
||||
//sottraendolo dal magazzino del pulito
|
||||
void TInventario_ter_msk::inventario_da_terminale()
|
||||
{
|
||||
//leggo il codice del pacco pistolato
|
||||
const TString80 codpacco = get(F_BARCODE);
|
||||
|
||||
if (codpacco.full())
|
||||
{
|
||||
//se posso instanzio la riga pacco
|
||||
TRiga_pacco rp(codpacco);
|
||||
|
||||
if (rp.empty())
|
||||
{
|
||||
warning_box(TR("Il pacco non esiste a magazzino"));
|
||||
warning_box(TR("Non è stato possibile sommare il pacco a nessuna riga del buono"));
|
||||
}
|
||||
else
|
||||
{
|
||||
//leggo i dati di interesse dal pacco
|
||||
TString80 codart = rp.articolo();
|
||||
const real qtapacco = rp.quantita();
|
||||
|
||||
//se è la prima volta, creo il nuovo TPacchi_contati,
|
||||
//altrimenti aggiorno quello che già esiste
|
||||
if(!_ria.is_key(codart))
|
||||
{
|
||||
TPacchi_contati& pc = *(_ria.quantita(codart, true));
|
||||
|
||||
pc.set_qta(qtapacco);
|
||||
|
||||
//recupero l'unità di misura principale di quest'articolo
|
||||
TToken_string key;
|
||||
key.add(codart);
|
||||
key.add(1);
|
||||
const TString4 um = cache().get(LF_UMART, key, UMART_UM);
|
||||
pc.set_um(um);
|
||||
pc.set_npacchi();
|
||||
|
||||
key.cut(0);
|
||||
key.add(codpacco);
|
||||
pc.set_codpacchi(key);
|
||||
|
||||
aggiorna_campi(codart, pc, qtapacco);
|
||||
}
|
||||
else
|
||||
{
|
||||
TPacchi_contati& pc = *(TPacchi_contati*)_ria.objptr(codart);
|
||||
|
||||
TToken_string codpacchi(pc.codpacchi());
|
||||
int pos = codpacchi.get_pos(codpacco);
|
||||
|
||||
if(pos >= 0)
|
||||
{
|
||||
if(yesno_box(TR("Il pacco risulta già nell'inventario; si desidera annullarlo?")))
|
||||
{
|
||||
pc.add_qta(-qtapacco);
|
||||
pc.add_pacchi(-1);
|
||||
pc.sub_codpacco(codpacco);
|
||||
}
|
||||
else
|
||||
return;
|
||||
}
|
||||
|
||||
pc.add_qta(qtapacco);
|
||||
pc.add_pacchi();
|
||||
pc.add_codpacco(codpacco);
|
||||
|
||||
aggiorna_campi(codart, pc, qtapacco);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//ON_FIELD_EVENT: metodo che gestisce gli eventi sui campi della maschera
|
||||
bool TInventario_ter_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
|
||||
{
|
||||
//a seconda del bottone premuto esegui un metodo diverso
|
||||
switch (f.dlg())
|
||||
{
|
||||
case DLG_NEWREC:
|
||||
//se viene premuto nuovo, cerco il prossimo numero di inventario
|
||||
//e mostro/nascondo i campi corretti
|
||||
if (e == fe_button)
|
||||
{
|
||||
_nuovo = true;
|
||||
|
||||
int ninv = 0;
|
||||
|
||||
TString query;
|
||||
query << "USE DOC\n"
|
||||
<< "FROM PROVV=\"D\" ANNO=" << get_int(F_ANNO) << " CODNUM=\"" << get(F_CODNUM) << "\"\n"
|
||||
<< "TO PROVV=\"D\" ANNO=" << get_int(F_ANNO) << " CODNUM=\"" << get(F_CODNUM) << "\"";
|
||||
TISAM_recordset inventari(query);
|
||||
if (inventari.move_last())
|
||||
ninv = inventari.get(DOC_NDOC).as_int();
|
||||
ninv++;
|
||||
|
||||
set(F_NINV, ninv); disable(F_NINV);
|
||||
|
||||
show(F_BARCODE);
|
||||
show(F_CODART);
|
||||
show(F_PACCHI);
|
||||
show(F_QTAPACCO);
|
||||
show(F_QTACON);
|
||||
|
||||
hide(F_CHIAVE);
|
||||
hide(F_ANNO);
|
||||
hide(F_DATAINV);
|
||||
|
||||
enable(DLG_SAVEREC);
|
||||
enable(DLG_DELREC);
|
||||
enable(DLG_CANCEL);
|
||||
|
||||
field(F_BARCODE).set_focus();
|
||||
_autoselect = 1;
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case DLG_SAVEREC:
|
||||
//se viene premuto salva, registro l'inventario
|
||||
if (e == fe_button)
|
||||
{
|
||||
registra();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case DLG_DELREC:
|
||||
//se viene premutop cancella, elimino l'inventario corrente, poi mostro/nascondo i campi corretti
|
||||
if (e == fe_button && yesno_box(TR("Si vuole veramente cancellare l'inventario corrente?")))
|
||||
{
|
||||
//se non è nuovo, lo rimuovo anche dagli archivi
|
||||
if (!_nuovo)
|
||||
{
|
||||
TLocalisamfile doc(LF_DOC);
|
||||
TDoc_key kinv(get_int(F_ANNO), get(F_CODNUM), get_long(F_NINV));
|
||||
|
||||
TDoc_inventario inv(kinv);
|
||||
inv.destroy_rows();
|
||||
inv.remove(doc);
|
||||
}
|
||||
_ria.destroy();
|
||||
|
||||
reset(F_BARCODE); hide(F_BARCODE);
|
||||
reset(F_CODART); hide(F_CODART);
|
||||
reset(F_PACCHI); hide(F_PACCHI);
|
||||
reset(F_QTAPACCO); hide(F_QTAPACCO);
|
||||
reset(F_QTACON); hide(F_QTACON);
|
||||
|
||||
enable(F_NINV); reset(F_NINV);
|
||||
show(F_CHIAVE); reset(F_CHIAVE);
|
||||
show(F_ANNO);
|
||||
show(F_DATAINV); reset(F_DATAINV);
|
||||
|
||||
disable(DLG_SAVEREC);
|
||||
disable(DLG_DELREC);
|
||||
disable(DLG_CANCEL);
|
||||
}
|
||||
break;
|
||||
case DLG_CANCEL:
|
||||
//se viene premuto annulla, lascio perdere quello che stavo facendo
|
||||
//e torno alla situazione iniziale
|
||||
if (e == fe_button)
|
||||
{
|
||||
reset(F_BARCODE); hide(F_BARCODE);
|
||||
reset(F_CODART); hide(F_CODART);
|
||||
reset(F_PACCHI); hide(F_PACCHI);
|
||||
reset(F_QTAPACCO); hide(F_QTAPACCO);
|
||||
reset(F_QTACON); hide(F_QTACON);
|
||||
|
||||
enable(F_NINV); reset(F_NINV);
|
||||
show(F_CHIAVE); reset(F_CHIAVE);
|
||||
show(F_ANNO);
|
||||
show(F_DATAINV); reset(F_DATAINV);
|
||||
|
||||
disable(DLG_SAVEREC);
|
||||
disable(DLG_DELREC);
|
||||
disable(DLG_CANCEL);
|
||||
|
||||
_ria.destroy();
|
||||
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case F_CHIAVE:
|
||||
{
|
||||
//se viene riempito il campo chiave, cerca di caricare un documento
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TString kinv = f.get();
|
||||
if (kinv.full())
|
||||
{
|
||||
set(F_ANNO, atol(kinv.left(4)));
|
||||
set(F_NINV, atol(kinv.mid(4)));
|
||||
field(F_NINV).check();
|
||||
|
||||
if(!precarica_righe())
|
||||
return false;
|
||||
|
||||
hide(F_ANNO);
|
||||
hide(F_DATAINV);
|
||||
|
||||
show(F_BARCODE);
|
||||
show(F_CODART);
|
||||
show(F_PACCHI);
|
||||
show(F_QTAPACCO);
|
||||
show(F_QTACON);
|
||||
|
||||
enable(DLG_SAVEREC);
|
||||
enable(DLG_DELREC);
|
||||
enable(DLG_CANCEL);
|
||||
|
||||
disable(F_NINV);
|
||||
|
||||
_autoselect = 1;
|
||||
field(F_BARCODE).set_focus();
|
||||
f.hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_NINV:
|
||||
{
|
||||
//se viene riempito il campo NINV, cerca di caricare un documento
|
||||
if (e == fe_modify && f.get_long() != 0 && get(F_CHIAVE).empty())
|
||||
{
|
||||
field(F_NINV).check();
|
||||
_nuovo = false;
|
||||
|
||||
if(!precarica_righe())
|
||||
return false;
|
||||
|
||||
hide(F_ANNO);
|
||||
hide(F_DATAINV);
|
||||
|
||||
show(F_BARCODE);
|
||||
show(F_CODART);
|
||||
show(F_PACCHI);
|
||||
show(F_QTAPACCO);
|
||||
show(F_QTACON);
|
||||
|
||||
enable(DLG_SAVEREC);
|
||||
enable(DLG_DELREC);
|
||||
enable(DLG_CANCEL);
|
||||
|
||||
f.disable();
|
||||
|
||||
_autoselect = 1;
|
||||
field(F_BARCODE).set_focus();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_BARCODE:
|
||||
{
|
||||
//se viene riempito il campo barcode, lanco la procedura dell'inventario
|
||||
if (e == fe_modify && f.get().full())
|
||||
{
|
||||
_autoselect = 1;
|
||||
inventario_da_terminale();
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void TInventario_ter_msk:: on_idle()
|
||||
{
|
||||
TMask::on_idle();
|
||||
if (_autoselect >= 0 && get(F_BARCODE).full())
|
||||
{
|
||||
reset(F_BARCODE);
|
||||
field(F_BARCODE).set_focus();
|
||||
_autoselect = -1;
|
||||
}
|
||||
}
|
||||
|
||||
TInventario_ter_msk::TInventario_ter_msk():TAutomask("lv3700a")
|
||||
{
|
||||
//precarico i campi fissi
|
||||
set(F_CODNUM, ini_get_string(CONFIG_DITTA, "lv", "NUM_INV", NULL));
|
||||
set(F_TPDOC, ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_INV", NULL));
|
||||
|
||||
const TRectype& tpdoc = cache().get("%NUM", ini_get_string(CONFIG_DITTA, "lv", "NUM_INV", NULL));
|
||||
set(F_DESCR, tpdoc.get("S0"));
|
||||
|
||||
TDate data(TODAY);
|
||||
TEsercizi_contabili es;
|
||||
int annoes = es.date2esc(data);
|
||||
set(F_ANNO, annoes);
|
||||
|
||||
hide(F_CODCF);
|
||||
hide(F_RAGSOC);
|
||||
hide(F_BARCODE);
|
||||
hide(F_CODART);
|
||||
hide(F_PACCHI);
|
||||
hide(F_QTAPACCO);
|
||||
hide(F_QTACON);
|
||||
|
||||
disable(DLG_SAVEREC);
|
||||
disable(DLG_DELREC);
|
||||
disable(DLG_CANCEL);
|
||||
}
|
||||
|
||||
///////////////////////////////////
|
||||
//// TINVENTARIO_TER_APP ////
|
||||
///////////////////////////////////
|
||||
|
||||
//classe TInventario_ter_app
|
||||
class TInventario_ter_app : public TSkeleton_application
|
||||
{
|
||||
TInventario_ter_msk* _msk;
|
||||
protected:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
|
||||
public:
|
||||
bool transfer();
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
//CREATE: metodo costruttore
|
||||
bool TInventario_ter_app::create()
|
||||
{
|
||||
_msk = new TInventario_ter_msk();
|
||||
open_files(LF_DOC, LF_RIGHEDOC);
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
//DESTROY: metodo distruttore
|
||||
bool TInventario_ter_app::destroy()
|
||||
{
|
||||
delete _msk;
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
//TRANSFER: metodo che scorre i campi nome e, se sono pieni, richiama il metodo
|
||||
//ELABORA_FILE(), che effettivamente fa l'elaborazione
|
||||
bool TInventario_ter_app::transfer()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void TInventario_ter_app::main_loop()
|
||||
{
|
||||
while (_msk->run() == K_ENTER)
|
||||
transfer();
|
||||
}
|
||||
|
||||
int lv3700(int argc, char *argv[])
|
||||
{
|
||||
TInventario_ter_app a;
|
||||
a.run (argc, argv, "Evasione Buoni di Prelievo");
|
||||
return TRUE;
|
||||
}
|
16
lv/lv3700a.h
Executable file
16
lv/lv3700a.h
Executable file
@ -0,0 +1,16 @@
|
||||
//Campi Maschera lv3700a
|
||||
#define F_CODNUM 401
|
||||
#define F_TPDOC 402
|
||||
#define F_DESCR 403
|
||||
#define F_CHIAVE 404
|
||||
#define F_NINV 405
|
||||
#define F_ANNO 406
|
||||
#define F_DATAINV 407
|
||||
#define F_CODCF 408
|
||||
#define F_RAGSOC 409
|
||||
#define F_BARCODE 410
|
||||
#define F_CODART 411
|
||||
#define F_PACCHI 412
|
||||
#define F_QTAPACCO 413
|
||||
#define F_QTACON 414
|
||||
#define F_BLANK 415
|
143
lv/lv3700a.uml
Executable file
143
lv/lv3700a.uml
Executable file
@ -0,0 +1,143 @@
|
||||
#include "lv3700a.h"
|
||||
|
||||
TOOLBAR "Topbar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_NEWREC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Nuovo"
|
||||
PICTURE TOOL_NEWREC
|
||||
END
|
||||
|
||||
BUTTON DLG_SAVEREC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Salva"
|
||||
PICTURE TOOL_SAVEREC
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Canc"
|
||||
PICTURE TOOL_DELREC
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Ann"
|
||||
PICTURE TOOL_CANCEL
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 2 2
|
||||
BEGIN
|
||||
PROMPT 3 1 "Fine"
|
||||
MESSAGE EXIT,K_QUIT
|
||||
PICTURE TOOL_QUIT
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Inventario" 0 2 0 0
|
||||
|
||||
STRING F_CODNUM 4
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_TPDOC 4
|
||||
BEGIN
|
||||
PROMPT 5 0 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_DESCR 50 15
|
||||
BEGIN
|
||||
PROMPT 10 0 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_CHIAVE 50 10
|
||||
BEGIN
|
||||
PROMPT 1 1 "Barcode Invent"
|
||||
END
|
||||
|
||||
NUMBER F_NINV 6
|
||||
BEGIN
|
||||
PROMPT 1 2 "Numero Doc. "
|
||||
USE LF_DOC
|
||||
JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
INPUT PROVV "D"
|
||||
INPUT ANNO F_ANNO SELECT
|
||||
INPUT CODNUM F_CODNUM SELECT
|
||||
INPUT NDOC F_NINV
|
||||
DISPLAY "Ndoc@4" NDOC
|
||||
DISPLAY "Data\ndocumento@10" DATADOC
|
||||
DISPLAY "Cod\nCli@4" CODCF
|
||||
DISPLAY "Ragione Sociale@10" LF_CLIFO->RAGSOC
|
||||
OUTPUT F_NINV NDOC
|
||||
OUTPUT F_DATAINV DATADOC
|
||||
OUTPUT F_CODCF CODCF
|
||||
OUTPUT F_RAGSOC LF_CLIFO->RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "G"
|
||||
END
|
||||
|
||||
DATE F_DATAINV
|
||||
BEGIN
|
||||
PROMPT 1 3 "Data Inv. "
|
||||
FLAGS "DA"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 1 4 "Anno Esercizio "
|
||||
END
|
||||
|
||||
NUMBER F_CODCF 6
|
||||
BEGIN
|
||||
PROMPT 1 0 "Cliente "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 20
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_BARCODE 50 12
|
||||
BEGIN
|
||||
PROMPT 1 4 "Barcode "
|
||||
END
|
||||
|
||||
STRING F_CODART 6
|
||||
BEGIN
|
||||
PROMPT 1 5 "Cod. Articolo "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_PACCHI 6
|
||||
BEGIN
|
||||
PROMPT 1 6 "Pacchi "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_QTAPACCO 6
|
||||
BEGIN
|
||||
PROMPT 1 7 "Quantità pacco"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_QTACON 6
|
||||
BEGIN
|
||||
PROMPT 1 8 "Quantità Cont."
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_BLANK 1
|
||||
BEGIN
|
||||
PROMPT 100 100 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
24
lv/lvlib.cpp
24
lv/lvlib.cpp
@ -925,6 +925,30 @@ const long TDoc_key::ndoc()
|
||||
return get_int(3);
|
||||
}
|
||||
|
||||
//SET_PROVV: metodo che setta il campo provv
|
||||
void TDoc_key::set_provv(const char provv)
|
||||
{
|
||||
add(provv, 0);
|
||||
}
|
||||
|
||||
//SET_ANNO: metodo che setta il campo anno
|
||||
void TDoc_key::set_anno(const int anno)
|
||||
{
|
||||
add(anno, 1);
|
||||
}
|
||||
|
||||
//SET_CODNUM: metodo che setta il campo codnum
|
||||
void TDoc_key::set_codnum(const char* codnum)
|
||||
{
|
||||
add(codnum, 2);
|
||||
}
|
||||
|
||||
//SET_NDOC: metodo che setta il campo ndoc
|
||||
void TDoc_key::set_ndoc(const long ndoc)
|
||||
{
|
||||
add(ndoc, 3);
|
||||
}
|
||||
|
||||
//metodi costruttori
|
||||
TDoc_key::TDoc_key(const int anno, const TString& codnum, const long ndoc, const char provv)
|
||||
{
|
||||
|
@ -204,6 +204,11 @@ public:
|
||||
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');
|
||||
|
Loading…
x
Reference in New Issue
Block a user